@actalk/inkos-core 1.5.0 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/agent-session.d.ts +4 -0
- package/dist/agent/agent-session.d.ts.map +1 -1
- package/dist/agent/agent-session.js +78 -5
- package/dist/agent/agent-session.js.map +1 -1
- package/dist/agent/agent-system-prompt.d.ts +2 -0
- package/dist/agent/agent-system-prompt.d.ts.map +1 -1
- package/dist/agent/agent-system-prompt.js +181 -16
- package/dist/agent/agent-system-prompt.js.map +1 -1
- package/dist/agent/agent-tools.d.ts +97 -1
- package/dist/agent/agent-tools.d.ts.map +1 -1
- package/dist/agent/agent-tools.js +434 -3
- package/dist/agent/agent-tools.js.map +1 -1
- package/dist/agent/film-authoring-tools.d.ts +89 -0
- package/dist/agent/film-authoring-tools.d.ts.map +1 -0
- package/dist/agent/film-authoring-tools.js +336 -0
- package/dist/agent/film-authoring-tools.js.map +1 -0
- package/dist/agent/index.d.ts +2 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +2 -1
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/llm-stub.d.ts +19 -0
- package/dist/agent/llm-stub.d.ts.map +1 -0
- package/dist/agent/llm-stub.js +134 -0
- package/dist/agent/llm-stub.js.map +1 -0
- package/dist/agents/composer.d.ts.map +1 -1
- package/dist/agents/composer.js +24 -12
- package/dist/agents/composer.js.map +1 -1
- package/dist/agents/researcher.d.ts +38 -0
- package/dist/agents/researcher.d.ts.map +1 -0
- package/dist/agents/researcher.js +164 -0
- package/dist/agents/researcher.js.map +1 -0
- package/dist/agents/script-storyboard.d.ts +51 -0
- package/dist/agents/script-storyboard.d.ts.map +1 -0
- package/dist/agents/script-storyboard.js +368 -0
- package/dist/agents/script-storyboard.js.map +1 -0
- package/dist/index.d.ts +23 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -2
- package/dist/index.js.map +1 -1
- package/dist/interaction/action-envelope.d.ts +669 -1
- package/dist/interaction/action-envelope.d.ts.map +1 -1
- package/dist/interaction/action-envelope.js +87 -0
- package/dist/interaction/action-envelope.js.map +1 -1
- package/dist/interaction/edit-controller.d.ts.map +1 -1
- package/dist/interaction/edit-controller.js +91 -1
- package/dist/interaction/edit-controller.js.map +1 -1
- package/dist/interaction/intents.d.ts +2 -2
- package/dist/interaction/project-control.d.ts +1 -1
- package/dist/interaction/session-transcript-schema.d.ts +22 -22
- package/dist/interaction/session.d.ts +14 -14
- package/dist/interaction/session.d.ts.map +1 -1
- package/dist/interaction/session.js +1 -1
- package/dist/interaction/session.js.map +1 -1
- package/dist/interactive-film/authoring-generate.d.ts +4 -0
- package/dist/interactive-film/authoring-generate.d.ts.map +1 -0
- package/dist/interactive-film/authoring-generate.js +16 -0
- package/dist/interactive-film/authoring-generate.js.map +1 -0
- package/dist/interactive-film/authoring-store.d.ts +35 -0
- package/dist/interactive-film/authoring-store.d.ts.map +1 -0
- package/dist/interactive-film/authoring-store.js +114 -0
- package/dist/interactive-film/authoring-store.js.map +1 -0
- package/dist/interactive-film/authoring-tools.d.ts +9 -0
- package/dist/interactive-film/authoring-tools.d.ts.map +1 -0
- package/dist/interactive-film/authoring-tools.js +19 -0
- package/dist/interactive-film/authoring-tools.js.map +1 -0
- package/dist/interactive-film/delta.d.ts +591 -0
- package/dist/interactive-film/delta.d.ts.map +1 -0
- package/dist/interactive-film/delta.js +54 -0
- package/dist/interactive-film/delta.js.map +1 -0
- package/dist/interactive-film/emotion.d.ts +20 -0
- package/dist/interactive-film/emotion.d.ts.map +1 -0
- package/dist/interactive-film/emotion.js +57 -0
- package/dist/interactive-film/emotion.js.map +1 -0
- package/dist/interactive-film/evaluator.d.ts +7 -0
- package/dist/interactive-film/evaluator.d.ts.map +1 -0
- package/dist/interactive-film/evaluator.js +40 -0
- package/dist/interactive-film/evaluator.js.map +1 -0
- package/dist/interactive-film/export-html.d.ts +6 -0
- package/dist/interactive-film/export-html.d.ts.map +1 -0
- package/dist/interactive-film/export-html.js +84 -0
- package/dist/interactive-film/export-html.js.map +1 -0
- package/dist/interactive-film/export-ink.d.ts +3 -0
- package/dist/interactive-film/export-ink.d.ts.map +1 -0
- package/dist/interactive-film/export-ink.js +51 -0
- package/dist/interactive-film/export-ink.js.map +1 -0
- package/dist/interactive-film/film-context.d.ts +4 -0
- package/dist/interactive-film/film-context.d.ts.map +1 -0
- package/dist/interactive-film/film-context.js +30 -0
- package/dist/interactive-film/film-context.js.map +1 -0
- package/dist/interactive-film/generate.d.ts +13 -0
- package/dist/interactive-film/generate.d.ts.map +1 -0
- package/dist/interactive-film/generate.js +32 -0
- package/dist/interactive-film/generate.js.map +1 -0
- package/dist/interactive-film/graph-schema.d.ts +819 -0
- package/dist/interactive-film/graph-schema.d.ts.map +1 -0
- package/dist/interactive-film/graph-schema.js +84 -0
- package/dist/interactive-film/graph-schema.js.map +1 -0
- package/dist/interactive-film/graph-store.d.ts +5 -0
- package/dist/interactive-film/graph-store.d.ts.map +1 -0
- package/dist/interactive-film/graph-store.js +24 -0
- package/dist/interactive-film/graph-store.js.map +1 -0
- package/dist/interactive-film/memory-link.d.ts +9 -0
- package/dist/interactive-film/memory-link.d.ts.map +1 -0
- package/dist/interactive-film/memory-link.js +15 -0
- package/dist/interactive-film/memory-link.js.map +1 -0
- package/dist/interactive-film/node-image.d.ts +29 -0
- package/dist/interactive-film/node-image.d.ts.map +1 -0
- package/dist/interactive-film/node-image.js +52 -0
- package/dist/interactive-film/node-image.js.map +1 -0
- package/dist/interactive-film/paths.d.ts +14 -0
- package/dist/interactive-film/paths.d.ts.map +1 -0
- package/dist/interactive-film/paths.js +60 -0
- package/dist/interactive-film/paths.js.map +1 -0
- package/dist/interactive-film/validation.d.ts +14 -0
- package/dist/interactive-film/validation.d.ts.map +1 -0
- package/dist/interactive-film/validation.js +292 -0
- package/dist/interactive-film/validation.js.map +1 -0
- package/dist/llm/provider.d.ts.map +1 -1
- package/dist/llm/provider.js +53 -16
- package/dist/llm/provider.js.map +1 -1
- package/dist/models/book.d.ts +13 -0
- package/dist/models/book.d.ts.map +1 -1
- package/dist/models/book.js +3 -0
- package/dist/models/book.js.map +1 -1
- package/dist/models/input-governance.d.ts +14 -5
- package/dist/models/input-governance.d.ts.map +1 -1
- package/dist/models/input-governance.js +3 -0
- package/dist/models/input-governance.js.map +1 -1
- package/dist/models/project.d.ts +63 -10
- package/dist/models/project.d.ts.map +1 -1
- package/dist/models/project.js +11 -0
- package/dist/models/project.js.map +1 -1
- package/dist/pipeline/runner.js +1 -1
- package/dist/pipeline/runner.js.map +1 -1
- package/dist/pipeline/script-storyboard-runner.d.ts +127 -0
- package/dist/pipeline/script-storyboard-runner.d.ts.map +1 -0
- package/dist/pipeline/script-storyboard-runner.js +446 -0
- package/dist/pipeline/script-storyboard-runner.js.map +1 -0
- package/dist/play/play-agents.d.ts.map +1 -1
- package/dist/play/play-agents.js +5 -2
- package/dist/play/play-agents.js.map +1 -1
- package/dist/play/play-store.d.ts +2 -2
- package/dist/skills/builtin-prompts.d.ts +10 -0
- package/dist/skills/builtin-prompts.d.ts.map +1 -0
- package/dist/skills/builtin-prompts.js +152 -0
- package/dist/skills/builtin-prompts.js.map +1 -0
- package/dist/skills/builtin.d.ts +3 -0
- package/dist/skills/builtin.d.ts.map +1 -0
- package/dist/skills/builtin.js +252 -0
- package/dist/skills/builtin.js.map +1 -0
- package/dist/skills/context-planner.d.ts +17 -0
- package/dist/skills/context-planner.d.ts.map +1 -0
- package/dist/skills/context-planner.js +48 -0
- package/dist/skills/context-planner.js.map +1 -0
- package/dist/skills/external-loader.d.ts +20 -0
- package/dist/skills/external-loader.d.ts.map +1 -0
- package/dist/skills/external-loader.js +126 -0
- package/dist/skills/external-loader.js.map +1 -0
- package/dist/skills/index.d.ts +8 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +8 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/prompt-pack.d.ts +33 -0
- package/dist/skills/prompt-pack.d.ts.map +1 -0
- package/dist/skills/prompt-pack.js +82 -0
- package/dist/skills/prompt-pack.js.map +1 -0
- package/dist/skills/registry.d.ts +6 -0
- package/dist/skills/registry.d.ts.map +1 -0
- package/dist/skills/registry.js +101 -0
- package/dist/skills/registry.js.map +1 -0
- package/dist/skills/types.d.ts +146 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +32 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/state/manager.d.ts +8 -2
- package/dist/state/manager.d.ts.map +1 -1
- package/dist/state/manager.js +58 -5
- package/dist/state/manager.js.map +1 -1
- package/dist/utils/context-assembly.d.ts +3 -0
- package/dist/utils/context-assembly.d.ts.map +1 -1
- package/dist/utils/context-assembly.js +3 -0
- package/dist/utils/context-assembly.js.map +1 -1
- package/dist/utils/web-search.d.ts +6 -1
- package/dist/utils/web-search.d.ts.map +1 -1
- package/dist/utils/web-search.js +8 -4
- package/dist/utils/web-search.js.map +1 -1
- package/package.json +14 -3
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import type { AgentContext } from "../agents/base.js";
|
|
2
|
+
import { type ScriptTargetFormat } from "../agents/script-storyboard.js";
|
|
3
|
+
export interface ScriptCreationRunOptions {
|
|
4
|
+
readonly projectRoot: string;
|
|
5
|
+
readonly runtime: AgentContext;
|
|
6
|
+
readonly title: string;
|
|
7
|
+
readonly instruction: string;
|
|
8
|
+
readonly sourceKind?: string;
|
|
9
|
+
readonly targetFormat?: ScriptTargetFormat;
|
|
10
|
+
readonly sourceText?: string;
|
|
11
|
+
readonly sourcePath?: string;
|
|
12
|
+
readonly requirements?: string;
|
|
13
|
+
readonly episodeCount?: number;
|
|
14
|
+
readonly episodeDuration?: string;
|
|
15
|
+
readonly projectId?: string;
|
|
16
|
+
readonly outDir?: string;
|
|
17
|
+
readonly onProgress?: (message: string) => void;
|
|
18
|
+
}
|
|
19
|
+
export interface StoryboardCreationRunOptions {
|
|
20
|
+
readonly projectRoot: string;
|
|
21
|
+
readonly runtime: AgentContext;
|
|
22
|
+
readonly title: string;
|
|
23
|
+
readonly instruction: string;
|
|
24
|
+
readonly sourceKind?: string;
|
|
25
|
+
readonly sourceText?: string;
|
|
26
|
+
readonly sourcePath?: string;
|
|
27
|
+
readonly requirements?: string;
|
|
28
|
+
readonly visualStyle?: string;
|
|
29
|
+
readonly aspectRatio?: string;
|
|
30
|
+
readonly granularity?: string;
|
|
31
|
+
readonly maxShots?: number;
|
|
32
|
+
readonly projectId?: string;
|
|
33
|
+
readonly outDir?: string;
|
|
34
|
+
readonly onProgress?: (message: string) => void;
|
|
35
|
+
}
|
|
36
|
+
export interface InteractiveFilmCreationRunOptions {
|
|
37
|
+
readonly projectRoot: string;
|
|
38
|
+
readonly runtime: AgentContext;
|
|
39
|
+
readonly title: string;
|
|
40
|
+
readonly instruction: string;
|
|
41
|
+
readonly sourceKind?: string;
|
|
42
|
+
readonly sourceText?: string;
|
|
43
|
+
readonly sourcePath?: string;
|
|
44
|
+
readonly requirements?: string;
|
|
45
|
+
readonly targetAudience?: string;
|
|
46
|
+
readonly episodeCount?: number;
|
|
47
|
+
readonly episodeDuration?: string;
|
|
48
|
+
readonly budget?: string;
|
|
49
|
+
readonly referenceMode?: string;
|
|
50
|
+
readonly projectId?: string;
|
|
51
|
+
readonly outDir?: string;
|
|
52
|
+
readonly onProgress?: (message: string) => void;
|
|
53
|
+
}
|
|
54
|
+
export interface ScriptCreationRunResult {
|
|
55
|
+
readonly projectId: string;
|
|
56
|
+
readonly baseDir: string;
|
|
57
|
+
readonly specPath: string;
|
|
58
|
+
readonly scriptPath: string;
|
|
59
|
+
}
|
|
60
|
+
export interface InteractiveFilmCreationRunResult {
|
|
61
|
+
readonly projectId: string;
|
|
62
|
+
readonly baseDir: string;
|
|
63
|
+
readonly storyGraphPath: string;
|
|
64
|
+
readonly specPath: string;
|
|
65
|
+
readonly storyTreePath: string;
|
|
66
|
+
readonly flagsPath: string;
|
|
67
|
+
readonly scriptPath: string;
|
|
68
|
+
readonly storyboardPath: string;
|
|
69
|
+
readonly imagePromptsPath: string;
|
|
70
|
+
readonly assetsManifestPath: string;
|
|
71
|
+
readonly assetsDir: string;
|
|
72
|
+
}
|
|
73
|
+
export interface StoryboardCreationRunResult {
|
|
74
|
+
readonly projectId: string;
|
|
75
|
+
readonly baseDir: string;
|
|
76
|
+
readonly specPath: string;
|
|
77
|
+
readonly storyboardPath: string;
|
|
78
|
+
readonly imagePromptsPath: string;
|
|
79
|
+
readonly assetsManifestPath: string;
|
|
80
|
+
readonly assetsDir: string;
|
|
81
|
+
}
|
|
82
|
+
export interface StoryboardImageAssetVariant {
|
|
83
|
+
readonly id: string;
|
|
84
|
+
readonly path: string;
|
|
85
|
+
readonly status: "pending" | "generated" | "selected" | "failed";
|
|
86
|
+
readonly model?: string;
|
|
87
|
+
readonly provider?: string;
|
|
88
|
+
readonly createdAt?: string;
|
|
89
|
+
readonly error?: string;
|
|
90
|
+
}
|
|
91
|
+
export interface StoryboardImageAsset {
|
|
92
|
+
readonly shotId: string;
|
|
93
|
+
readonly prompt: string;
|
|
94
|
+
readonly sourceRefs: readonly string[];
|
|
95
|
+
readonly variants: readonly StoryboardImageAssetVariant[];
|
|
96
|
+
readonly selectedPath?: string;
|
|
97
|
+
readonly status: "prompt_ready" | "generated" | "selected" | "failed";
|
|
98
|
+
}
|
|
99
|
+
export interface StoryboardAssetsManifest {
|
|
100
|
+
readonly version: 1;
|
|
101
|
+
readonly kind: "storyboard_assets";
|
|
102
|
+
readonly title: string;
|
|
103
|
+
readonly projectId: string;
|
|
104
|
+
readonly baseDir: string;
|
|
105
|
+
readonly storyboardPath: string;
|
|
106
|
+
readonly imagePromptsPath: string;
|
|
107
|
+
readonly assetsDir: string;
|
|
108
|
+
readonly sourceDir: string;
|
|
109
|
+
readonly generatedDir: string;
|
|
110
|
+
readonly selectedDir: string;
|
|
111
|
+
readonly createdAt: string;
|
|
112
|
+
readonly assets: readonly StoryboardImageAsset[];
|
|
113
|
+
}
|
|
114
|
+
export declare function runScriptCreation(options: ScriptCreationRunOptions): Promise<ScriptCreationRunResult>;
|
|
115
|
+
export declare function runInteractiveFilmCreation(options: InteractiveFilmCreationRunOptions): Promise<InteractiveFilmCreationRunResult>;
|
|
116
|
+
export declare function runStoryboardCreation(options: StoryboardCreationRunOptions): Promise<StoryboardCreationRunResult>;
|
|
117
|
+
export declare function createStoryboardAssetsManifest(args: {
|
|
118
|
+
readonly title: string;
|
|
119
|
+
readonly projectId: string;
|
|
120
|
+
readonly baseDir: string;
|
|
121
|
+
readonly storyboardPath: string;
|
|
122
|
+
readonly imagePromptsPath: string;
|
|
123
|
+
readonly imagePrompts: string;
|
|
124
|
+
readonly createdAt: string;
|
|
125
|
+
}): StoryboardAssetsManifest;
|
|
126
|
+
export declare function projectFileExists(projectRoot: string, relativePath: string): Promise<boolean>;
|
|
127
|
+
//# sourceMappingURL=script-storyboard-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-storyboard-runner.d.ts","sourceRoot":"","sources":["../../src/pipeline/script-storyboard-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
import { access, mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { basename, dirname, join } from "node:path";
|
|
3
|
+
import { generateStoryGraph } from "../interactive-film/generate.js";
|
|
4
|
+
import { saveStoryGraph } from "../interactive-film/graph-store.js";
|
|
5
|
+
import { InteractiveFilmCreationAgent, ScriptCreationAgent, StoryboardCreationAgent, extractStoryboardImagePrompts, extractMarkdownSection, normalizeScriptEpisodeEndLabels, renderInteractiveFilmSpec, renderScriptSpec, renderStoryboardSpec, } from "../agents/script-storyboard.js";
|
|
6
|
+
import { safeChildPath } from "../utils/path-safety.js";
|
|
7
|
+
export async function runScriptCreation(options) {
|
|
8
|
+
const projectId = safeSegment(options.projectId ?? slugify(options.title));
|
|
9
|
+
const baseDir = resolveProjectBaseDir(options.outDir ?? "dramas", projectId);
|
|
10
|
+
const sourceText = await resolveSourceText(options.projectRoot, options.sourceText, options.sourcePath);
|
|
11
|
+
const input = {
|
|
12
|
+
title: options.title,
|
|
13
|
+
sourceKind: options.sourceKind,
|
|
14
|
+
targetFormat: options.targetFormat,
|
|
15
|
+
sourceText,
|
|
16
|
+
requirements: mergeRequirements(options.instruction, options.requirements),
|
|
17
|
+
episodeCount: options.episodeCount,
|
|
18
|
+
episodeDuration: options.episodeDuration,
|
|
19
|
+
};
|
|
20
|
+
options.onProgress?.("Writing script creation spec...");
|
|
21
|
+
const spec = renderScriptSpec(input);
|
|
22
|
+
await writeProjectText(options.projectRoot, join(baseDir, "script-spec.md"), spec);
|
|
23
|
+
options.onProgress?.("Writing script draft...");
|
|
24
|
+
const agent = new ScriptCreationAgent(options.runtime);
|
|
25
|
+
const script = normalizeScriptEpisodeEndLabels(await agent.writeScript(input));
|
|
26
|
+
await writeProjectText(options.projectRoot, join(baseDir, "script.md"), script);
|
|
27
|
+
await writeProjectText(options.projectRoot, join(baseDir, "status.json"), JSON.stringify({
|
|
28
|
+
status: "completed",
|
|
29
|
+
kind: "script",
|
|
30
|
+
title: options.title,
|
|
31
|
+
completedAt: new Date().toISOString(),
|
|
32
|
+
}, null, 2));
|
|
33
|
+
return {
|
|
34
|
+
projectId,
|
|
35
|
+
baseDir,
|
|
36
|
+
specPath: join(baseDir, "script-spec.md"),
|
|
37
|
+
scriptPath: join(baseDir, "script.md"),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export async function runInteractiveFilmCreation(options) {
|
|
41
|
+
const projectId = safeSegment(options.projectId ?? slugify(options.title));
|
|
42
|
+
const baseDir = resolveProjectBaseDir(options.outDir ?? "interactive-films", projectId);
|
|
43
|
+
const sourceText = await resolveSourceText(options.projectRoot, options.sourceText, options.sourcePath);
|
|
44
|
+
const input = {
|
|
45
|
+
title: options.title,
|
|
46
|
+
sourceKind: options.sourceKind,
|
|
47
|
+
sourceText,
|
|
48
|
+
requirements: mergeRequirements(options.instruction, options.requirements),
|
|
49
|
+
targetAudience: options.targetAudience,
|
|
50
|
+
episodeCount: options.episodeCount,
|
|
51
|
+
episodeDuration: options.episodeDuration,
|
|
52
|
+
budget: options.budget,
|
|
53
|
+
referenceMode: options.referenceMode,
|
|
54
|
+
};
|
|
55
|
+
options.onProgress?.("Writing interactive-film creation spec...");
|
|
56
|
+
const spec = renderInteractiveFilmSpec(input);
|
|
57
|
+
await writeProjectText(options.projectRoot, join(baseDir, "interactive-spec.md"), spec);
|
|
58
|
+
options.onProgress?.("Writing story tree, flags, script, storyboard, and image prompts...");
|
|
59
|
+
const agent = new InteractiveFilmCreationAgent(options.runtime);
|
|
60
|
+
const packageMarkdown = await agent.writeInteractiveFilm(input);
|
|
61
|
+
const storyTree = requiredSection(packageMarkdown, [
|
|
62
|
+
"剧情树",
|
|
63
|
+
"Story Tree",
|
|
64
|
+
"Branching Story Tree",
|
|
65
|
+
], packageMarkdown);
|
|
66
|
+
const flags = requiredSection(packageMarkdown, [
|
|
67
|
+
"旗标与变量系统说明",
|
|
68
|
+
"变量与旗标表",
|
|
69
|
+
"变量和旗标表",
|
|
70
|
+
"变量表",
|
|
71
|
+
"旗标表",
|
|
72
|
+
"Variables and Flags",
|
|
73
|
+
"Flag Table",
|
|
74
|
+
], packageMarkdown);
|
|
75
|
+
const script = requiredSection(packageMarkdown, [
|
|
76
|
+
"互动剧本",
|
|
77
|
+
"Interactive Script",
|
|
78
|
+
"Script",
|
|
79
|
+
], packageMarkdown);
|
|
80
|
+
const storyboard = requiredSection(packageMarkdown, [
|
|
81
|
+
"分镜与图像提示词",
|
|
82
|
+
"分镜表",
|
|
83
|
+
"Storyboard and Image Prompts",
|
|
84
|
+
"Storyboard",
|
|
85
|
+
], packageMarkdown);
|
|
86
|
+
const imagePrompts = extractStoryboardImagePrompts(storyboard);
|
|
87
|
+
const storyGraphPath = join("interactive-films", projectId, "story-graph.json");
|
|
88
|
+
await writeProjectText(options.projectRoot, join(baseDir, "story-tree.md"), storyTree);
|
|
89
|
+
await writeProjectText(options.projectRoot, join(baseDir, "flags.md"), flags);
|
|
90
|
+
await writeProjectText(options.projectRoot, join(baseDir, "script.md"), normalizeScriptEpisodeEndLabels(script));
|
|
91
|
+
await writeProjectText(options.projectRoot, join(baseDir, "storyboard.md"), storyboard);
|
|
92
|
+
await writeProjectText(options.projectRoot, join(baseDir, "image-prompts.md"), imagePrompts);
|
|
93
|
+
await ensureProjectDir(options.projectRoot, join(baseDir, "assets", "source"));
|
|
94
|
+
await ensureProjectDir(options.projectRoot, join(baseDir, "assets", "generated"));
|
|
95
|
+
await ensureProjectDir(options.projectRoot, join(baseDir, "assets", "selected"));
|
|
96
|
+
await writeProjectText(options.projectRoot, join(baseDir, "assets.json"), JSON.stringify(createStoryboardAssetsManifest({
|
|
97
|
+
title: options.title,
|
|
98
|
+
projectId,
|
|
99
|
+
baseDir,
|
|
100
|
+
storyboardPath: join(baseDir, "storyboard.md"),
|
|
101
|
+
imagePromptsPath: join(baseDir, "image-prompts.md"),
|
|
102
|
+
imagePrompts,
|
|
103
|
+
createdAt: new Date().toISOString(),
|
|
104
|
+
}), null, 2));
|
|
105
|
+
options.onProgress?.("Writing interactive-film story graph...");
|
|
106
|
+
const graph = await createInteractiveFilmStoryGraph(options.runtime, {
|
|
107
|
+
projectId,
|
|
108
|
+
title: options.title,
|
|
109
|
+
input,
|
|
110
|
+
storyTree,
|
|
111
|
+
flags,
|
|
112
|
+
script,
|
|
113
|
+
imagePrompts,
|
|
114
|
+
onProgress: options.onProgress,
|
|
115
|
+
});
|
|
116
|
+
await saveStoryGraph(options.projectRoot, projectId, graph);
|
|
117
|
+
await writeProjectText(options.projectRoot, join(baseDir, "status.json"), JSON.stringify({
|
|
118
|
+
status: "completed",
|
|
119
|
+
kind: "interactive_film",
|
|
120
|
+
title: options.title,
|
|
121
|
+
completedAt: new Date().toISOString(),
|
|
122
|
+
}, null, 2));
|
|
123
|
+
return {
|
|
124
|
+
projectId,
|
|
125
|
+
baseDir,
|
|
126
|
+
storyGraphPath,
|
|
127
|
+
specPath: join(baseDir, "interactive-spec.md"),
|
|
128
|
+
storyTreePath: join(baseDir, "story-tree.md"),
|
|
129
|
+
flagsPath: join(baseDir, "flags.md"),
|
|
130
|
+
scriptPath: join(baseDir, "script.md"),
|
|
131
|
+
storyboardPath: join(baseDir, "storyboard.md"),
|
|
132
|
+
imagePromptsPath: join(baseDir, "image-prompts.md"),
|
|
133
|
+
assetsManifestPath: join(baseDir, "assets.json"),
|
|
134
|
+
assetsDir: join(baseDir, "assets"),
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
export async function runStoryboardCreation(options) {
|
|
138
|
+
const projectId = safeSegment(options.projectId ?? slugify(options.title));
|
|
139
|
+
const baseDir = resolveProjectBaseDir(options.outDir ?? "storyboards", projectId);
|
|
140
|
+
const sourceText = await resolveSourceText(options.projectRoot, options.sourceText, options.sourcePath);
|
|
141
|
+
const input = {
|
|
142
|
+
title: options.title,
|
|
143
|
+
sourceKind: options.sourceKind,
|
|
144
|
+
sourceText,
|
|
145
|
+
requirements: mergeRequirements(options.instruction, options.requirements),
|
|
146
|
+
visualStyle: options.visualStyle,
|
|
147
|
+
aspectRatio: options.aspectRatio,
|
|
148
|
+
granularity: options.granularity,
|
|
149
|
+
maxShots: options.maxShots,
|
|
150
|
+
};
|
|
151
|
+
options.onProgress?.("Writing storyboard creation spec...");
|
|
152
|
+
const spec = renderStoryboardSpec(input);
|
|
153
|
+
await writeProjectText(options.projectRoot, join(baseDir, "storyboard-spec.md"), spec);
|
|
154
|
+
options.onProgress?.("Writing storyboard and image prompts...");
|
|
155
|
+
const agent = new StoryboardCreationAgent(options.runtime);
|
|
156
|
+
const storyboard = await agent.writeStoryboard(input);
|
|
157
|
+
await writeProjectText(options.projectRoot, join(baseDir, "storyboard.md"), storyboard);
|
|
158
|
+
const imagePrompts = extractStoryboardImagePrompts(storyboard);
|
|
159
|
+
await writeProjectText(options.projectRoot, join(baseDir, "image-prompts.md"), imagePrompts);
|
|
160
|
+
await ensureProjectDir(options.projectRoot, join(baseDir, "assets", "source"));
|
|
161
|
+
await ensureProjectDir(options.projectRoot, join(baseDir, "assets", "generated"));
|
|
162
|
+
await ensureProjectDir(options.projectRoot, join(baseDir, "assets", "selected"));
|
|
163
|
+
await writeProjectText(options.projectRoot, join(baseDir, "assets.json"), JSON.stringify(createStoryboardAssetsManifest({
|
|
164
|
+
title: options.title,
|
|
165
|
+
projectId,
|
|
166
|
+
baseDir,
|
|
167
|
+
storyboardPath: join(baseDir, "storyboard.md"),
|
|
168
|
+
imagePromptsPath: join(baseDir, "image-prompts.md"),
|
|
169
|
+
imagePrompts,
|
|
170
|
+
createdAt: new Date().toISOString(),
|
|
171
|
+
}), null, 2));
|
|
172
|
+
await writeProjectText(options.projectRoot, join(baseDir, "status.json"), JSON.stringify({
|
|
173
|
+
status: "completed",
|
|
174
|
+
kind: "storyboard",
|
|
175
|
+
title: options.title,
|
|
176
|
+
completedAt: new Date().toISOString(),
|
|
177
|
+
}, null, 2));
|
|
178
|
+
return {
|
|
179
|
+
projectId,
|
|
180
|
+
baseDir,
|
|
181
|
+
specPath: join(baseDir, "storyboard-spec.md"),
|
|
182
|
+
storyboardPath: join(baseDir, "storyboard.md"),
|
|
183
|
+
imagePromptsPath: join(baseDir, "image-prompts.md"),
|
|
184
|
+
assetsManifestPath: join(baseDir, "assets.json"),
|
|
185
|
+
assetsDir: join(baseDir, "assets"),
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
async function createInteractiveFilmStoryGraph(runtime, args) {
|
|
189
|
+
try {
|
|
190
|
+
return await generateStoryGraph(runtime.client, runtime.model, {
|
|
191
|
+
projectId: args.projectId,
|
|
192
|
+
title: args.title,
|
|
193
|
+
premise: buildInteractiveFilmGraphPremise(args.input, args.storyTree, args.flags, args.script, args.imagePrompts),
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
args.onProgress?.(`Story graph JSON generation failed; writing a minimal playable graph. ${formatError(error)}`);
|
|
198
|
+
return buildFallbackStoryGraph(args.projectId, args.title, args.input, args.imagePrompts);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
function buildInteractiveFilmGraphPremise(input, storyTree, flags, script, imagePrompts) {
|
|
202
|
+
return [
|
|
203
|
+
`创作需求:${input.requirements}`,
|
|
204
|
+
input.targetAudience ? `目标受众:${input.targetAudience}` : "",
|
|
205
|
+
input.episodeCount ? `段落/集数:${input.episodeCount}` : "",
|
|
206
|
+
input.episodeDuration ? `单段时长:${input.episodeDuration}` : "",
|
|
207
|
+
input.budget ? `预算:${input.budget}` : "",
|
|
208
|
+
input.referenceMode ? `参考模式:${input.referenceMode}` : "",
|
|
209
|
+
`剧情树:\n${storyTree}`,
|
|
210
|
+
`变量旗标:\n${flags}`,
|
|
211
|
+
`互动剧本:\n${script}`,
|
|
212
|
+
`图像提示词:\n${imagePrompts}`,
|
|
213
|
+
].filter(Boolean).join("\n\n");
|
|
214
|
+
}
|
|
215
|
+
function buildFallbackStoryGraph(projectId, title, input, imagePrompts) {
|
|
216
|
+
const prompts = parseStoryboardPromptLines(imagePrompts);
|
|
217
|
+
const actCount = Math.max(2, Math.min(8, (input.episodeCount ?? prompts.length) || 3));
|
|
218
|
+
const nodes = [
|
|
219
|
+
{
|
|
220
|
+
id: "start",
|
|
221
|
+
title: "开场",
|
|
222
|
+
type: "start",
|
|
223
|
+
sceneDesc: input.requirements || title,
|
|
224
|
+
dialogue: [],
|
|
225
|
+
choices: [{ id: "start-act-1", text: "进入第一幕", targetNodeId: "act-1", effects: [] }],
|
|
226
|
+
imageSlot: { prompt: prompts[0] ?? input.requirements ?? title },
|
|
227
|
+
act: "start",
|
|
228
|
+
position: { x: 0, y: 0 },
|
|
229
|
+
},
|
|
230
|
+
];
|
|
231
|
+
for (let index = 1; index <= actCount; index += 1) {
|
|
232
|
+
const isLast = index === actCount;
|
|
233
|
+
nodes.push({
|
|
234
|
+
id: `act-${index}`,
|
|
235
|
+
title: `第 ${index} 幕`,
|
|
236
|
+
type: isLast ? "branch" : "normal",
|
|
237
|
+
sceneDesc: `互动影游《${title}》第 ${index} 幕。`,
|
|
238
|
+
dialogue: [],
|
|
239
|
+
choices: isLast
|
|
240
|
+
? [
|
|
241
|
+
{ id: "to-ending-a", text: "完成主线目标", targetNodeId: "ending-a", effects: [{ var: "story_progress", op: "add", value: 1 }] },
|
|
242
|
+
{ id: "to-ending-b", text: "进入另一条余波", targetNodeId: "ending-b", effects: [{ var: "story_progress", op: "add", value: 1 }] },
|
|
243
|
+
]
|
|
244
|
+
: [{ id: `act-${index}-next`, text: "继续推进", targetNodeId: `act-${index + 1}`, effects: [{ var: "story_progress", op: "add", value: 1 }] }],
|
|
245
|
+
imageSlot: { prompt: prompts[index - 1] ?? prompts[0] ?? input.requirements ?? title },
|
|
246
|
+
act: `act-${index}`,
|
|
247
|
+
position: { x: index * 260, y: index % 2 === 0 ? 120 : 0 },
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
nodes.push({
|
|
251
|
+
id: "ending-a",
|
|
252
|
+
title: "结局一",
|
|
253
|
+
type: "ending",
|
|
254
|
+
sceneDesc: "主线目标被完成,故事进入收束。",
|
|
255
|
+
dialogue: [],
|
|
256
|
+
choices: [],
|
|
257
|
+
act: "ending",
|
|
258
|
+
position: { x: (actCount + 1) * 260, y: -80 },
|
|
259
|
+
}, {
|
|
260
|
+
id: "ending-b",
|
|
261
|
+
title: "结局二",
|
|
262
|
+
type: "ending",
|
|
263
|
+
sceneDesc: "玩家选择保留另一条余波,故事进入分岔收束。",
|
|
264
|
+
dialogue: [],
|
|
265
|
+
choices: [],
|
|
266
|
+
act: "ending",
|
|
267
|
+
position: { x: (actCount + 1) * 260, y: 120 },
|
|
268
|
+
});
|
|
269
|
+
return {
|
|
270
|
+
schemaVersion: 1,
|
|
271
|
+
projectId,
|
|
272
|
+
title,
|
|
273
|
+
worldAnchor: {
|
|
274
|
+
storyCore: input.requirements || title,
|
|
275
|
+
theme: "",
|
|
276
|
+
genre: "interactive-film",
|
|
277
|
+
worldRules: input.referenceMode ?? "",
|
|
278
|
+
durationMinutes: 0,
|
|
279
|
+
},
|
|
280
|
+
characters: [],
|
|
281
|
+
variables: [{ name: "story_progress", type: "counter", default: 0, desc: "剧情推进进度" }],
|
|
282
|
+
nodes,
|
|
283
|
+
endings: [
|
|
284
|
+
{ id: "ending-a", nodeId: "ending-a", title: "结局一", type: "neutral", description: "主线目标被完成。" },
|
|
285
|
+
{ id: "ending-b", nodeId: "ending-b", title: "结局二", type: "secret", description: "玩家选择保留另一条余波。" },
|
|
286
|
+
],
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
function formatError(error) {
|
|
290
|
+
return error instanceof Error ? error.message : String(error);
|
|
291
|
+
}
|
|
292
|
+
export function createStoryboardAssetsManifest(args) {
|
|
293
|
+
const assetsDir = join(args.baseDir, "assets");
|
|
294
|
+
const prompts = parseStoryboardPromptLines(args.imagePrompts);
|
|
295
|
+
return {
|
|
296
|
+
version: 1,
|
|
297
|
+
kind: "storyboard_assets",
|
|
298
|
+
title: args.title,
|
|
299
|
+
projectId: args.projectId,
|
|
300
|
+
baseDir: args.baseDir,
|
|
301
|
+
storyboardPath: args.storyboardPath,
|
|
302
|
+
imagePromptsPath: args.imagePromptsPath,
|
|
303
|
+
assetsDir,
|
|
304
|
+
sourceDir: join(assetsDir, "source"),
|
|
305
|
+
generatedDir: join(assetsDir, "generated"),
|
|
306
|
+
selectedDir: join(assetsDir, "selected"),
|
|
307
|
+
createdAt: args.createdAt,
|
|
308
|
+
assets: prompts.map((prompt, index) => {
|
|
309
|
+
const shotId = `shot-${String(index + 1).padStart(3, "0")}`;
|
|
310
|
+
return {
|
|
311
|
+
shotId,
|
|
312
|
+
prompt,
|
|
313
|
+
sourceRefs: [],
|
|
314
|
+
variants: [],
|
|
315
|
+
status: "prompt_ready",
|
|
316
|
+
};
|
|
317
|
+
}),
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
async function resolveSourceText(projectRoot, sourceText, sourcePath) {
|
|
321
|
+
const direct = sourceText?.trim();
|
|
322
|
+
if (direct)
|
|
323
|
+
return direct;
|
|
324
|
+
const path = sourcePath?.trim();
|
|
325
|
+
if (!path)
|
|
326
|
+
return undefined;
|
|
327
|
+
return readFile(safeChildPath(projectRoot, path), "utf-8");
|
|
328
|
+
}
|
|
329
|
+
async function writeProjectText(projectRoot, relativePath, content) {
|
|
330
|
+
const fullPath = safeChildPath(projectRoot, relativePath);
|
|
331
|
+
await mkdir(dirname(fullPath), { recursive: true });
|
|
332
|
+
await writeFile(fullPath, content.endsWith("\n") ? content : `${content}\n`, "utf-8");
|
|
333
|
+
}
|
|
334
|
+
async function ensureProjectDir(projectRoot, relativePath) {
|
|
335
|
+
await mkdir(safeChildPath(projectRoot, relativePath), { recursive: true });
|
|
336
|
+
}
|
|
337
|
+
function mergeRequirements(instruction, requirements) {
|
|
338
|
+
return [
|
|
339
|
+
instruction.trim(),
|
|
340
|
+
requirements?.trim() ? `\n补充要求:\n${requirements.trim()}` : "",
|
|
341
|
+
].filter(Boolean).join("\n");
|
|
342
|
+
}
|
|
343
|
+
function normalizeOutputDir(value) {
|
|
344
|
+
const text = value.trim().replace(/^\/+|\/+$/g, "");
|
|
345
|
+
if (!text || text.includes("..") || text.includes("\0")) {
|
|
346
|
+
throw new Error(`Invalid output directory: ${JSON.stringify(value)}`);
|
|
347
|
+
}
|
|
348
|
+
return text;
|
|
349
|
+
}
|
|
350
|
+
function resolveProjectBaseDir(outDir, projectId) {
|
|
351
|
+
const outputDir = normalizeOutputDir(outDir);
|
|
352
|
+
return basename(outputDir) === projectId ? outputDir : join(outputDir, projectId);
|
|
353
|
+
}
|
|
354
|
+
function safeSegment(value) {
|
|
355
|
+
const text = value.trim();
|
|
356
|
+
if (!text || text === "." || text === ".." || text.includes("/") || text.includes("\\") || text.includes("\0")) {
|
|
357
|
+
throw new Error(`Invalid project id: ${JSON.stringify(value)}`);
|
|
358
|
+
}
|
|
359
|
+
return text.slice(0, 80);
|
|
360
|
+
}
|
|
361
|
+
function slugify(value) {
|
|
362
|
+
const text = value
|
|
363
|
+
.trim()
|
|
364
|
+
.toLowerCase()
|
|
365
|
+
.replace(/[^\p{L}\p{N}]+/gu, "-")
|
|
366
|
+
.replace(/^-+|-+$/g, "");
|
|
367
|
+
return text || `script-${Date.now()}`;
|
|
368
|
+
}
|
|
369
|
+
function parseStoryboardPromptLines(markdown) {
|
|
370
|
+
const lines = markdown.split(/\r?\n/);
|
|
371
|
+
const prompts = [];
|
|
372
|
+
let promptColumnIndex = -1;
|
|
373
|
+
for (const rawLine of lines) {
|
|
374
|
+
const line = rawLine.trim();
|
|
375
|
+
if (!line) {
|
|
376
|
+
promptColumnIndex = -1;
|
|
377
|
+
continue;
|
|
378
|
+
}
|
|
379
|
+
const tableCells = parseMarkdownTableRow(line);
|
|
380
|
+
if (tableCells) {
|
|
381
|
+
if (isMarkdownTableSeparator(tableCells))
|
|
382
|
+
continue;
|
|
383
|
+
const headerIndex = tableCells.findIndex(isPromptColumnHeader);
|
|
384
|
+
if (headerIndex >= 0) {
|
|
385
|
+
promptColumnIndex = headerIndex;
|
|
386
|
+
continue;
|
|
387
|
+
}
|
|
388
|
+
if (promptColumnIndex >= 0) {
|
|
389
|
+
const prompt = cleanPromptText(tableCells[promptColumnIndex] ?? "");
|
|
390
|
+
if (prompt)
|
|
391
|
+
prompts.push(prompt);
|
|
392
|
+
}
|
|
393
|
+
continue;
|
|
394
|
+
}
|
|
395
|
+
promptColumnIndex = -1;
|
|
396
|
+
const promptMatch = /(?:^|[|>\-\d.)、\s])(?:\*\*)?\s*(?:Prompt(?:\s+for\s+[^:*:]+)?|提示词(?:\s*[^:*:]+)?|图像提示词|分镜图提示词)\s*(?:\*\*)?\s*[::]\s*(.+?)\s*$/iu.exec(line);
|
|
397
|
+
if (promptMatch) {
|
|
398
|
+
const prompt = cleanPromptText(promptMatch[1]);
|
|
399
|
+
if (prompt)
|
|
400
|
+
prompts.push(prompt);
|
|
401
|
+
continue;
|
|
402
|
+
}
|
|
403
|
+
const numberedPrompt = /^(?:[-*]\s*)?(?:\d+|[0-9]+)[.)、::\s-]+(.+)$/u.exec(line);
|
|
404
|
+
if (numberedPrompt) {
|
|
405
|
+
const prompt = numberedPrompt[1]
|
|
406
|
+
.replace(/\s+/g, " ")
|
|
407
|
+
.trim();
|
|
408
|
+
if (prompt)
|
|
409
|
+
prompts.push(prompt);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
return prompts;
|
|
413
|
+
}
|
|
414
|
+
function parseMarkdownTableRow(line) {
|
|
415
|
+
if (!line.startsWith("|") || !line.endsWith("|"))
|
|
416
|
+
return undefined;
|
|
417
|
+
const cells = line.slice(1, -1).split("|").map((cell) => cell.trim());
|
|
418
|
+
return cells.length >= 2 ? cells : undefined;
|
|
419
|
+
}
|
|
420
|
+
function isMarkdownTableSeparator(cells) {
|
|
421
|
+
return cells.every((cell) => /^:?-{3,}:?$/u.test(cell));
|
|
422
|
+
}
|
|
423
|
+
function isPromptColumnHeader(cell) {
|
|
424
|
+
return /^(?:prompt|image\s*prompt|shot\s*prompt|提示词|图像提示词|分镜图提示词)$/iu.test(cell.replace(/[`*_]+/gu, "").trim());
|
|
425
|
+
}
|
|
426
|
+
function cleanPromptText(text) {
|
|
427
|
+
return text
|
|
428
|
+
.replace(/\s*\|\s*$/u, "")
|
|
429
|
+
.replace(/\*\*$/u, "")
|
|
430
|
+
.replace(/^(?:Prompt(?:\s+for\s+[^:*:]+)?|提示词(?:\s*[^:*:]+)?|图像提示词|分镜图提示词)\s*[::]\s*/iu, "")
|
|
431
|
+
.replace(/\s+/g, " ")
|
|
432
|
+
.trim();
|
|
433
|
+
}
|
|
434
|
+
function requiredSection(raw, headings, fallback) {
|
|
435
|
+
return extractMarkdownSection(raw, headings)?.trim() || fallback.trim();
|
|
436
|
+
}
|
|
437
|
+
export async function projectFileExists(projectRoot, relativePath) {
|
|
438
|
+
try {
|
|
439
|
+
await access(safeChildPath(projectRoot, relativePath));
|
|
440
|
+
return true;
|
|
441
|
+
}
|
|
442
|
+
catch {
|
|
443
|
+
return false;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
//# sourceMappingURL=script-storyboard-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-storyboard-runner.js","sourceRoot":"","sources":["../../src/pipeline/script-storyboard-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"play-agents.d.ts","sourceRoot":"","sources":["../../src/play/play-agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"play-agents.d.ts","sourceRoot":"","sources":["../../src/play/play-agents.ts"],"names":[],"mappings":"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"}
|
package/dist/play/play-agents.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { BaseAgent } from "../agents/base.js";
|
|
3
3
|
import { PlayActionIntentSchema, PlayMutationSchema, } from "../models/play.js";
|
|
4
|
+
import { appendPromptPackGuidance } from "../skills/prompt-pack.js";
|
|
4
5
|
const PlaySceneRenderSchema = z.object({
|
|
5
6
|
sceneText: z.string().min(1),
|
|
6
7
|
suggestedActions: z.array(z.string().min(1)).min(0).max(4).default([]),
|
|
@@ -73,8 +74,9 @@ export class PlayWorldMutatorAgent extends BaseAgent {
|
|
|
73
74
|
// mutation degrades to a blocked, no-op turn (with a reason), not a crash.
|
|
74
75
|
let raw = {};
|
|
75
76
|
try {
|
|
77
|
+
const systemPrompt = await appendPromptPackGuidance(buildWorldMutatorSystemPrompt(input.language ?? "zh"), { promptId: "play.mutator", projectRoot: this.ctx.projectRoot });
|
|
76
78
|
const response = await chatWithRetry(() => this.chat([
|
|
77
|
-
{ role: "system", content:
|
|
79
|
+
{ role: "system", content: systemPrompt },
|
|
78
80
|
{ role: "user", content: buildWorldMutatorUserPrompt(input, input.language ?? "zh") },
|
|
79
81
|
], { temperature: 0.25, maxTokens: 4096 }));
|
|
80
82
|
raw = parseJson(response.content);
|
|
@@ -128,8 +130,9 @@ export class PlaySceneRendererAgent extends BaseAgent {
|
|
|
128
130
|
}
|
|
129
131
|
async render(input) {
|
|
130
132
|
const language = input.language ?? "zh";
|
|
133
|
+
const systemPrompt = await appendPromptPackGuidance(buildSceneRendererSystemPrompt(input.mode ?? "open", language), { promptId: "play.renderer", projectRoot: this.ctx.projectRoot });
|
|
131
134
|
const messages = [
|
|
132
|
-
{ role: "system", content:
|
|
135
|
+
{ role: "system", content: systemPrompt },
|
|
133
136
|
{ role: "user", content: buildSceneRendererUserPrompt(input, language) },
|
|
134
137
|
];
|
|
135
138
|
// The renderer must NEVER throw — a hiccup here used to break the turn AND leave
|