合并最新主分支并保留策划退役清理
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Successful in 4m30s
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Successful in 4m44s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m37s
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Successful in 5m6s
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Successful in 5m9s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m26s
Project CI / Native shell tests (pull_request) Successful in 19m40s
Project CI / Frontend tests (pull_request) Successful in 21m8s
Project CI / Repository checks (pull_request) Successful in 21m29s
Project CI / Backend tests (pull_request) Successful in 27m41s
Project CI / AI game creator shell web tests (pull_request) Successful in 19m50s

合并 origin/master 的最新功能与测试变更

保留已删除的策划 Agent V1/V2 运行时和旧 GDD 入口

仅解决资源预览类型冲突,不恢复退役策划调用
This commit is contained in:
2026-09-17 14:10:46 +00:00
261 changed files with 20593 additions and 1694 deletions
@@ -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;
@@ -380,7 +374,8 @@ export type EditorIconSpritesheetGenerationInput = {
referenceId: string;
referenceImageSrcs?: string[];
iconDescriptions: string[];
sliceMode?: 'connected-components' | 'grid';
/** 必填且没有默认值:必须显式声明连通域或网格切分。 */
sliceMode: 'connected-components' | 'grid';
gridX?: number;
gridY?: number;
model?: string;
@@ -543,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;
@@ -610,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;
@@ -1300,6 +1285,16 @@ export async function generateEditorIconSpritesheet(
input.iconDescriptions,
);
const model = input.model?.trim() || EDITOR_IMAGE_MODEL_NANOBANANA2;
// 切分模式没有默认值:声明必须自洽,网格尺寸只能与 grid 同时提交。
if (input.sliceMode === 'grid') {
if (input.gridX === undefined || input.gridY === undefined) {
throw new Error('sliceMode=grid 必须同时提供 gridX 与 gridY');
}
} else if (input.gridX !== undefined || input.gridY !== undefined) {
throw new Error(
'sliceMode=connected-components 不接受 gridX/gridY:网格尺寸只能与 grid 同时提交',
);
}
assertStableEditorMediaReferences(input.referenceImageSrcs, '图标素材参考图');
assertEditorReferenceLimit(
input.referenceImageSrcs,
@@ -1317,9 +1312,13 @@ export async function generateEditorIconSpritesheet(
? { referenceImageSrcs: input.referenceImageSrcs }
: {}),
iconDescriptions,
...(input.sliceMode ? { sliceMode: input.sliceMode } : {}),
...(input.gridX !== undefined ? { gridX: input.gridX } : {}),
...(input.gridY !== undefined ? { gridY: input.gridY } : {}),
sliceMode: input.sliceMode,
...(input.sliceMode === 'grid' && input.gridX !== undefined
? { gridX: input.gridX }
: {}),
...(input.sliceMode === 'grid' && input.gridY !== undefined
? { gridY: input.gridY }
: {}),
model,
...(input.screenColor ? { screenColor: input.screenColor } : {}),
...(input.segModel ? { segModel: input.segModel } : {}),