diff --git a/apps/ai-game-creator-shell/scripts/agc-global-version.test.mjs b/apps/ai-game-creator-shell/scripts/agc-global-version.test.mjs index abb218558..2d14f5963 100644 --- a/apps/ai-game-creator-shell/scripts/agc-global-version.test.mjs +++ b/apps/ai-game-creator-shell/scripts/agc-global-version.test.mjs @@ -185,12 +185,7 @@ test('nextVersion 只在 patch 位递增', () => { test('ossutil 参数默认使用 v1 签名,并可按需带 region 与 v4', () => { const base = { - args: [ - 'cp', - '--force', - '/tmp/a.json', - 'oss://agc-dev/agc/global-version.json', - ], + args: ['cp', '--force', '/tmp/a.json', 'oss://agc-dev/agc/global-version.json'], endpoint: 'oss-rg-china-mainland.aliyuncs.com', accessKeyId: 'id', accessKeySecret: 'secret', diff --git a/apps/ai-game-creator-shell/scripts/start-dev-stack.mjs b/apps/ai-game-creator-shell/scripts/start-dev-stack.mjs index 20cf4a1ea..68fc0909a 100644 --- a/apps/ai-game-creator-shell/scripts/start-dev-stack.mjs +++ b/apps/ai-game-creator-shell/scripts/start-dev-stack.mjs @@ -1192,7 +1192,7 @@ async function main() { function isDirectModuleExecution() { return Boolean( process.argv[1] && - resolve(process.argv[1]) === fileURLToPath(import.meta.url), + resolve(process.argv[1]) === fileURLToPath(import.meta.url), ); } diff --git a/apps/ai-game-creator-shell/src/features/app-shell/ActiveProjectRunsPanel.tsx b/apps/ai-game-creator-shell/src/features/app-shell/ActiveProjectRunsPanel.tsx index 1df87f2bb..e4af6c8be 100644 --- a/apps/ai-game-creator-shell/src/features/app-shell/ActiveProjectRunsPanel.tsx +++ b/apps/ai-game-creator-shell/src/features/app-shell/ActiveProjectRunsPanel.tsx @@ -166,10 +166,10 @@ export function ActiveProjectRunsPanel({ const elapsed = formatActiveTurnElapsed(turn.startedAt, now); const isCurrent = Boolean( currentProjectPath && - projectPathsMatchForInvalidation( - turn.projectPath, - currentProjectPath, - ), + projectPathsMatchForInvalidation( + turn.projectPath, + currentProjectPath, + ), ); return (
  • @@ -215,10 +215,10 @@ export function ActiveProjectRunsPanel({ const elapsed = formatActiveTurnElapsed(turn.startedAt, now); const isCurrent = Boolean( currentProjectPath && - projectPathsMatchForInvalidation( - turn.projectPath, - currentProjectPath, - ), + projectPathsMatchForInvalidation( + turn.projectPath, + currentProjectPath, + ), ); return (
  • diff --git a/apps/ai-game-creator-shell/src/features/project-workspace/generated/DirectThreadRequestKind.ts b/apps/ai-game-creator-shell/src/features/project-workspace/generated/DirectThreadRequestKind.ts index 13ee401f3..71de741e2 100644 --- a/apps/ai-game-creator-shell/src/features/project-workspace/generated/DirectThreadRequestKind.ts +++ b/apps/ai-game-creator-shell/src/features/project-workspace/generated/DirectThreadRequestKind.ts @@ -4,6 +4,4 @@ * 审批 / 提问请求与解决:本轮只透传,不并入聊天状态。 */ export type DirectThreadRequestKind = - | 'approval.requested' - | 'ask.requested' - | 'request.resolved'; + 'approval.requested' | 'ask.requested' | 'request.resolved'; diff --git a/apps/ai-game-creator-shell/src/features/resource-canvas/resourceCanvasFocusModel.ts b/apps/ai-game-creator-shell/src/features/resource-canvas/resourceCanvasFocusModel.ts index a61125c41..b08cf7620 100644 --- a/apps/ai-game-creator-shell/src/features/resource-canvas/resourceCanvasFocusModel.ts +++ b/apps/ai-game-creator-shell/src/features/resource-canvas/resourceCanvasFocusModel.ts @@ -48,9 +48,9 @@ export function isResourceCanvasPanTarget( if (!isResourceCanvasInteractionTarget(target)) return true; return Boolean( target.closest('.game-resource-card') && - !target.closest( - 'button:not(.game-resource-card-select), [role="button"], input, textarea, select, a, audio, video', - ), + !target.closest( + 'button:not(.game-resource-card-select), [role="button"], input, textarea, select, a, audio, video', + ), ); } diff --git a/apps/ai-game-creator-shell/src/features/resource-canvas/resourceCanvasGenerationPlaceholderModel.ts b/apps/ai-game-creator-shell/src/features/resource-canvas/resourceCanvasGenerationPlaceholderModel.ts index 0f54be206..604ab94d5 100644 --- a/apps/ai-game-creator-shell/src/features/resource-canvas/resourceCanvasGenerationPlaceholderModel.ts +++ b/apps/ai-game-creator-shell/src/features/resource-canvas/resourceCanvasGenerationPlaceholderModel.ts @@ -40,9 +40,7 @@ export type ResourceCanvasGenerationPlaceholderPanel = * - `failed`:这次生成失败;占位留在画布上,点它可以用同一份输入与引用重试。 */ export type ResourceCanvasGenerationPlaceholderStatus = - | 'draft' - | 'submitted' - | 'failed'; + 'draft' | 'submitted' | 'failed'; /** * 工具点击后先在当前栏目创建的临时占位卡。 diff --git a/apps/ai-game-creator-shell/src/features/runtime-config/RuntimeConfigDialog.tsx b/apps/ai-game-creator-shell/src/features/runtime-config/RuntimeConfigDialog.tsx index 37ebb7361..de412fabb 100644 --- a/apps/ai-game-creator-shell/src/features/runtime-config/RuntimeConfigDialog.tsx +++ b/apps/ai-game-creator-shell/src/features/runtime-config/RuntimeConfigDialog.tsx @@ -78,12 +78,7 @@ const defaultRuntimeConfigDraft: GameCreatorAppConfig = { }; type RuntimeSettingsSection = - | 'general' - | 'workspace' - | 'agents' - | 'extensions' - | 'advanced' - | 'about'; + 'general' | 'workspace' | 'agents' | 'extensions' | 'advanced' | 'about'; type RuntimeConfigToast = { tone: 'success' | 'error'; diff --git a/apps/ai-game-creator-shell/src/view/project-development/ResourceModelViewer.tsx b/apps/ai-game-creator-shell/src/view/project-development/ResourceModelViewer.tsx index 4b06525cc..8b6e4ddca 100644 --- a/apps/ai-game-creator-shell/src/view/project-development/ResourceModelViewer.tsx +++ b/apps/ai-game-creator-shell/src/view/project-development/ResourceModelViewer.tsx @@ -61,9 +61,8 @@ export function ResourceModelViewer({ void (async () => { try { const THREE = await import('three'); - const { OrbitControls } = await import( - 'three/examples/jsm/controls/OrbitControls.js' - ); + const { OrbitControls } = + await import('three/examples/jsm/controls/OrbitControls.js'); if (disposed) { return; } diff --git a/apps/ai-game-creator-shell/src/view/project-development/resourceBatchTagTargetModel.ts b/apps/ai-game-creator-shell/src/view/project-development/resourceBatchTagTargetModel.ts index d7829366a..ff3eed6ed 100644 --- a/apps/ai-game-creator-shell/src/view/project-development/resourceBatchTagTargetModel.ts +++ b/apps/ai-game-creator-shell/src/view/project-development/resourceBatchTagTargetModel.ts @@ -22,8 +22,7 @@ export type ResourceBatchTagTarget = { }; export type ResourceBatchTagTargetResolution = - | { ok: true; assetIds: string[] } - | { ok: false; reason: string }; + { ok: true; assetIds: string[] } | { ok: false; reason: string }; export function resolveResourceBatchTagTargets( resources: readonly { diff --git a/apps/ai-game-creator-shell/src/view/project-development/resourceCanvasLayoutModel.ts b/apps/ai-game-creator-shell/src/view/project-development/resourceCanvasLayoutModel.ts index 97ba9a92b..9e49c99c5 100644 --- a/apps/ai-game-creator-shell/src/view/project-development/resourceCanvasLayoutModel.ts +++ b/apps/ai-game-creator-shell/src/view/project-development/resourceCanvasLayoutModel.ts @@ -127,10 +127,10 @@ function validResourceCanvasCardSize( ): size is ResourceCanvasCardSize { return Boolean( size && - Number.isFinite(size.width) && - Number.isFinite(size.height) && - size.width > 0 && - size.height > 0, + Number.isFinite(size.width) && + Number.isFinite(size.height) && + size.width > 0 && + size.height > 0, ); } diff --git a/apps/ai-game-creator-shell/src/view/project-development/resourceModelScene.ts b/apps/ai-game-creator-shell/src/view/project-development/resourceModelScene.ts index 6d74551b8..d81cfdd6a 100644 --- a/apps/ai-game-creator-shell/src/view/project-development/resourceModelScene.ts +++ b/apps/ai-game-creator-shell/src/view/project-development/resourceModelScene.ts @@ -32,14 +32,12 @@ export async function loadResourceModelObject( source: ResourceModelSource, ): Promise { if (isResourceModelFbx(source)) { - const { FBXLoader } = await import( - 'three/examples/jsm/loaders/FBXLoader.js' - ); + const { FBXLoader } = + await import('three/examples/jsm/loaders/FBXLoader.js'); return new FBXLoader().loadAsync(source.sourceUrl); } - const { GLTFLoader } = await import( - 'three/examples/jsm/loaders/GLTFLoader.js' - ); + const { GLTFLoader } = + await import('three/examples/jsm/loaders/GLTFLoader.js'); const gltf = await new GLTFLoader().loadAsync(source.sourceUrl); if (!gltf.scene) { throw new Error('模型内容为空'); @@ -106,8 +104,7 @@ export function disposeResourceModelObject(object: ThreeTypes.Object3D) { entry as unknown as Record, )) { const texture = value as - | { isTexture?: boolean; dispose?: () => void } - | undefined; + { isTexture?: boolean; dispose?: () => void } | undefined; if (texture?.isTexture && typeof texture.dispose === 'function') { texture.dispose(); } diff --git a/apps/ai-game-creator-shell/src/view/project-development/useProjectResourceCanvasLayout.ts b/apps/ai-game-creator-shell/src/view/project-development/useProjectResourceCanvasLayout.ts index e028ca312..dea363f88 100644 --- a/apps/ai-game-creator-shell/src/view/project-development/useProjectResourceCanvasLayout.ts +++ b/apps/ai-game-creator-shell/src/view/project-development/useProjectResourceCanvasLayout.ts @@ -439,9 +439,7 @@ function reconcileLayout( * 做,磁盘上仍是旧栏目取值的坐标不会因为 `section` 字面量不同而漏出整理范围。 */ organizeSections: - | readonly ProjectResourceCanvasCategory[] - | null - | undefined = undefined, + readonly ProjectResourceCanvasCategory[] | null | undefined = undefined, ) { // `undefined` = 不是整理;`null` = 整理全部栏目;否则按集合判定。 const organizedSections = diff --git a/apps/ai-game-creator-shell/tests/appSurface/harness.ts b/apps/ai-game-creator-shell/tests/appSurface/harness.ts index a7464bfd7..3b38bd2fe 100644 --- a/apps/ai-game-creator-shell/tests/appSurface/harness.ts +++ b/apps/ai-game-creator-shell/tests/appSurface/harness.ts @@ -605,11 +605,9 @@ function createProjectSupervisorRuntimeHarness({ }) => void) | null = null; let designAgentUpdateHandler: - | ((event: { payload: Record }) => void) - | null = null; + ((event: { payload: Record }) => void) | null = null; let directThreadNotifyHandler: - | ((event: { payload: { subscriptionId: string } }) => void) - | null = null; + ((event: { payload: { subscriptionId: string } }) => void) | null = null; let directThreadSubscriptionId: string | null = null; let directThreadSubscriptionSequence = 0; // 未消费的运行态事件队列:`subscribe` 的 bootstrap 与 `consume` 都从这里取, diff --git a/apps/ai-game-creator-shell/tests/appUpdate.test.ts b/apps/ai-game-creator-shell/tests/appUpdate.test.ts index bd89c3a3a..026dcdc52 100644 --- a/apps/ai-game-creator-shell/tests/appUpdate.test.ts +++ b/apps/ai-game-creator-shell/tests/appUpdate.test.ts @@ -43,9 +43,8 @@ describe('AGC 客户端更新', () => { it('开发态开关关闭时不请求清单', async () => { vi.stubEnv('VITE_AGC_ENABLE_APP_UPDATE_CHECK', '0'); vi.resetModules(); - const { checkForAppUpdate, resetAppUpdateCheckForTests } = await import( - '../src/services/appUpdate' - ); + const { checkForAppUpdate, resetAppUpdateCheckForTests } = + await import('../src/services/appUpdate'); await expect(checkForAppUpdate()).resolves.toBeNull(); expect(checkMock).not.toHaveBeenCalled(); @@ -56,9 +55,8 @@ describe('AGC 客户端更新', () => { vi.stubEnv('VITE_AGC_ENABLE_APP_UPDATE_CHECK', '1'); vi.resetModules(); checkMock.mockResolvedValue(fakeUpdate() as never); - const { checkForAppUpdate, resetAppUpdateCheckForTests } = await import( - '../src/services/appUpdate' - ); + const { checkForAppUpdate, resetAppUpdateCheckForTests } = + await import('../src/services/appUpdate'); await expect(checkForAppUpdate()).resolves.toEqual({ version: '99.0.0', @@ -74,9 +72,8 @@ describe('AGC 客户端更新', () => { vi.stubEnv('VITE_AGC_ENABLE_APP_UPDATE_CHECK', '1'); vi.resetModules(); checkMock.mockRejectedValue(new Error('updater: manifest 404')); - const { checkForAppUpdate, resetAppUpdateCheckForTests } = await import( - '../src/services/appUpdate' - ); + const { checkForAppUpdate, resetAppUpdateCheckForTests } = + await import('../src/services/appUpdate'); await expect(checkForAppUpdate()).resolves.toBeNull(); resetAppUpdateCheckForTests(); @@ -110,9 +107,8 @@ describe('AGC 客户端更新', () => { it('没有待安装更新时安装请求失败关闭', async () => { vi.stubEnv('VITE_AGC_ENABLE_APP_UPDATE_CHECK', '1'); vi.resetModules(); - const { installAppUpdate, resetAppUpdateCheckForTests } = await import( - '../src/services/appUpdate' - ); + const { installAppUpdate, resetAppUpdateCheckForTests } = + await import('../src/services/appUpdate'); await expect(installAppUpdate()).rejects.toThrow('没有可安装的更新'); resetAppUpdateCheckForTests(); diff --git a/apps/ai-game-creator-shell/tests/resourceVersionReplacement.test.tsx b/apps/ai-game-creator-shell/tests/resourceVersionReplacement.test.tsx index e8f2b5e4b..639ff14bd 100644 --- a/apps/ai-game-creator-shell/tests/resourceVersionReplacement.test.tsx +++ b/apps/ai-game-creator-shell/tests/resourceVersionReplacement.test.tsx @@ -297,8 +297,7 @@ function renderReplacementWorkbench(options: RenderOptions = {}) { } if (command === 'update_local_project_resource_classification') { const input = args?.input as - | { assetId?: string; category?: string; tags?: string[] } - | undefined; + { assetId?: string; category?: string; tags?: string[] } | undefined; return { asset: { id: input?.assetId, diff --git a/apps/ai-game-creator-shell/tests/workspaceWindowSync.test.tsx b/apps/ai-game-creator-shell/tests/workspaceWindowSync.test.tsx index a8bd7b8cf..fef868db1 100644 --- a/apps/ai-game-creator-shell/tests/workspaceWindowSync.test.tsx +++ b/apps/ai-game-creator-shell/tests/workspaceWindowSync.test.tsx @@ -21,8 +21,7 @@ import { const homeProjectOverride = vi.hoisted(() => ({ openProject: null as - | null - | ((path: string, mode: 'open' | 'create') => Promise), + null | ((path: string, mode: 'open' | 'create') => Promise), })); vi.mock('../src/features/app-shell/useHomeProjectCreation', async () => { diff --git a/src/components/image-editor/ImageCanvasWorldView.tsx b/src/components/image-editor/ImageCanvasWorldView.tsx index a9e1e9622..70b8d4cde 100644 --- a/src/components/image-editor/ImageCanvasWorldView.tsx +++ b/src/components/image-editor/ImageCanvasWorldView.tsx @@ -1313,7 +1313,7 @@ export function ImageCanvasWorldView({ {canvasGenerationDialogs.map((dialog) => { const hasGeneratedLayer = Boolean( dialog.generatedLayerId && - layers.some((layer) => layer.id === dialog.generatedLayerId), + layers.some((layer) => layer.id === dialog.generatedLayerId), ); return dialog.placeholder && !hasGeneratedLayer ? (() => { diff --git a/src/services/apiClient.ts b/src/services/apiClient.ts index f594ca662..c393815a6 100644 --- a/src/services/apiClient.ts +++ b/src/services/apiClient.ts @@ -887,7 +887,7 @@ export async function fetchWithApiAuth( requestHeaders[REQUEST_ID_HEADER] = requestId; let hasAuthHeader = Boolean( requestHeaders.Authorization?.trim() || - requestHeaders.authorization?.trim(), + requestHeaders.authorization?.trim(), ); if ( @@ -903,7 +903,7 @@ export async function fetchWithApiAuth( requestHeaders[REQUEST_ID_HEADER] = requestId; hasAuthHeader = Boolean( requestHeaders.Authorization?.trim() || - requestHeaders.authorization?.trim(), + requestHeaders.authorization?.trim(), ); } catch (error) { if (requestSignal?.aborted) { diff --git a/src/services/image-editor/editorProjectClient.test.ts b/src/services/image-editor/editorProjectClient.test.ts index 79e965d9f..2e5188b53 100644 --- a/src/services/image-editor/editorProjectClient.test.ts +++ b/src/services/image-editor/editorProjectClient.test.ts @@ -211,8 +211,7 @@ describe('editorProjectClient', () => { { deadlineAt: expect.any(Number) }, ); const requestOptions = requestJsonMock.mock.calls[0]?.[3] as - | { deadlineAt?: number } - | undefined; + { deadlineAt?: number } | undefined; expect(requestOptions?.deadlineAt).toBeGreaterThanOrEqual( startedAt + 60_000, ); diff --git a/src/services/image-editor/editorProjectClient.ts b/src/services/image-editor/editorProjectClient.ts index 55003d328..4c5fae2bf 100644 --- a/src/services/image-editor/editorProjectClient.ts +++ b/src/services/image-editor/editorProjectClient.ts @@ -219,9 +219,7 @@ export type EditorAssetGenerationInputs = { }; export type EditorProjectResourceSourceType = - | 'uploaded' - | 'generated' - | 'mock_generated'; + 'uploaded' | 'generated' | 'mock_generated'; export type EditorProjectResourceSnapshot = { resourceId: string; @@ -330,11 +328,7 @@ export type EditorImageGenerationInput = { prompt: string; size?: string; kind?: - | 'spec' - | 'character' - | 'quick-edit' - | 'ui-design' - | 'publication-material'; + 'spec' | 'character' | 'quick-edit' | 'ui-design' | 'publication-material'; model?: string; screenColor?: string; segModel?: string; @@ -544,12 +538,7 @@ export type EditorIconSpritesheetSliceResult = { export type EditorCharacterAnimationResolution = '480p' | '720p'; export type EditorCharacterAnimationRatio = - | 'same' - | '1:1' - | '4:3' - | '16:9' - | '9:16' - | '3:4'; + 'same' | '1:1' | '4:3' | '16:9' | '9:16' | '3:4'; export type EditorCharacterAnimationFrameCount = 32 | 40 | 48; @@ -611,12 +600,7 @@ export type EditorVideoModel = export type EditorVideoResolution = '480p' | '720p' | '1080p'; export type EditorVideoSoundMode = 'on' | 'off'; export type EditorVideoAspectRatio = - | '16:9' - | '9:16' - | '1:1' - | '4:3' - | '3:4' - | '21:9'; + '16:9' | '9:16' | '1:1' | '4:3' | '3:4' | '21:9'; export type EditorVideoGenerationInput = { prompt: string;