@lingjingai/scriptctl 0.1.0 → 0.2.0
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/README.md +71 -0
- package/dist/cli.js +305 -396
- package/dist/cli.js.map +1 -1
- package/dist/domain/asset-registry.d.ts +141 -0
- package/dist/domain/asset-registry.js +318 -0
- package/dist/domain/asset-registry.js.map +1 -0
- package/dist/domain/collision-detector.d.ts +83 -0
- package/dist/domain/collision-detector.js +248 -0
- package/dist/domain/collision-detector.js.map +1 -0
- package/dist/domain/direct-core.d.ts +13 -1
- package/dist/domain/direct-core.js +14 -4
- package/dist/domain/direct-core.js.map +1 -1
- package/dist/domain/script-core.d.ts +11 -0
- package/dist/domain/script-core.js +34 -19
- package/dist/domain/script-core.js.map +1 -1
- package/dist/help-text.js +283 -0
- package/dist/help-text.js.map +1 -1
- package/dist/infra/converters.js +21 -7
- package/dist/infra/converters.js.map +1 -1
- package/dist/infra/default-writing-prompt.d.ts +31 -0
- package/dist/infra/default-writing-prompt.js +50 -0
- package/dist/infra/default-writing-prompt.js.map +1 -0
- package/dist/infra/default-writing-prompt.md +115 -0
- package/dist/infra/gemini-writer.d.ts +107 -0
- package/dist/infra/gemini-writer.js +207 -0
- package/dist/infra/gemini-writer.js.map +1 -0
- package/dist/infra/providers.d.ts +36 -0
- package/dist/infra/providers.js +186 -2
- package/dist/infra/providers.js.map +1 -1
- package/dist/usecases/episode.d.ts +47 -0
- package/dist/usecases/episode.js +1188 -0
- package/dist/usecases/episode.js.map +1 -0
- package/dist/usecases/script.d.ts +6 -2
- package/dist/usecases/script.js +4 -4
- package/dist/usecases/script.js.map +1 -1
- package/package.json +4 -4
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-episode asset registry for incremental drafting.
|
|
3
|
+
*
|
|
4
|
+
* The registry is the single source of truth (locally) for which actors / locations /
|
|
5
|
+
* props / speakers exist across already-drafted episodes. It lets the episode
|
|
6
|
+
* subcommand:
|
|
7
|
+
*
|
|
8
|
+
* 1. Inject an "existing assets" list into the Gemini prompt (prevention).
|
|
9
|
+
* 2. Detect collisions when a freshly-parsed fragment declares an asset that already
|
|
10
|
+
* exists (correction).
|
|
11
|
+
* 3. Assign stable ids (`act_001`, `loc_001`, ...) that survive across draft / publish.
|
|
12
|
+
* 4. Roll back an episode's introduced entries when its draft is regenerated.
|
|
13
|
+
*
|
|
14
|
+
* The registry file lives at `<workspace>/episodes/asset-registry.json` by default
|
|
15
|
+
* (co-located with the rest of scriptctl episode's own writes).
|
|
16
|
+
*
|
|
17
|
+
* Whether an episode has been "committed" (i.e. its draft passed all gates) is
|
|
18
|
+
* tracked by the `.done-NN` marker file the episode orchestrator writes —
|
|
19
|
+
* not by any state inside the registry. The registry stores only durable cross-
|
|
20
|
+
* episode facts (id, first/last seen, appearance count); orchestration state
|
|
21
|
+
* (commit / rollback) is the orchestrator's concern.
|
|
22
|
+
*/
|
|
23
|
+
export type AssetType = "actor" | "location" | "prop" | "speaker";
|
|
24
|
+
export interface AssetState {
|
|
25
|
+
id: string;
|
|
26
|
+
name: string;
|
|
27
|
+
description?: string | null;
|
|
28
|
+
}
|
|
29
|
+
interface BaseAssetEntry {
|
|
30
|
+
id: string;
|
|
31
|
+
name: string;
|
|
32
|
+
description: string | null;
|
|
33
|
+
firstSeenEpisode: number;
|
|
34
|
+
firstSeenScene: string;
|
|
35
|
+
firstSeenAction: string;
|
|
36
|
+
lastSeenEpisode: number;
|
|
37
|
+
appearanceCount: number;
|
|
38
|
+
states: AssetState[];
|
|
39
|
+
introducedByEpisode: number;
|
|
40
|
+
}
|
|
41
|
+
export interface ActorEntry extends BaseAssetEntry {
|
|
42
|
+
}
|
|
43
|
+
export interface LocationEntry extends BaseAssetEntry {
|
|
44
|
+
}
|
|
45
|
+
export interface PropEntry extends BaseAssetEntry {
|
|
46
|
+
}
|
|
47
|
+
export interface SpeakerEntry extends BaseAssetEntry {
|
|
48
|
+
sourceKind: string;
|
|
49
|
+
}
|
|
50
|
+
export interface AssetRegistry {
|
|
51
|
+
version: 1;
|
|
52
|
+
actors: ActorEntry[];
|
|
53
|
+
locations: LocationEntry[];
|
|
54
|
+
props: PropEntry[];
|
|
55
|
+
speakers: SpeakerEntry[];
|
|
56
|
+
}
|
|
57
|
+
export interface FragmentAssetDeclaration {
|
|
58
|
+
name: string;
|
|
59
|
+
description: string | null;
|
|
60
|
+
}
|
|
61
|
+
export interface FragmentSpeakerDeclaration extends FragmentAssetDeclaration {
|
|
62
|
+
sourceKind: string;
|
|
63
|
+
}
|
|
64
|
+
export interface ApplyFragmentResult {
|
|
65
|
+
newIds: {
|
|
66
|
+
actor: string[];
|
|
67
|
+
location: string[];
|
|
68
|
+
prop: string[];
|
|
69
|
+
speaker: string[];
|
|
70
|
+
};
|
|
71
|
+
reusedIds: {
|
|
72
|
+
actor: string[];
|
|
73
|
+
location: string[];
|
|
74
|
+
prop: string[];
|
|
75
|
+
speaker: string[];
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
export declare function defaultRegistryPath(workspace: string): string;
|
|
79
|
+
export declare function emptyRegistry(): AssetRegistry;
|
|
80
|
+
export declare function loadRegistry(registryPath: string): AssetRegistry;
|
|
81
|
+
export declare function saveRegistry(registryPath: string, reg: AssetRegistry): void;
|
|
82
|
+
export declare function lookupActor(reg: AssetRegistry, name: string): ActorEntry | null;
|
|
83
|
+
export declare function lookupLocation(reg: AssetRegistry, name: string): LocationEntry | null;
|
|
84
|
+
export declare function lookupProp(reg: AssetRegistry, name: string): PropEntry | null;
|
|
85
|
+
export declare function lookupSpeaker(reg: AssetRegistry, name: string, sourceKind?: string): SpeakerEntry | null;
|
|
86
|
+
interface ActionLike {
|
|
87
|
+
type?: string;
|
|
88
|
+
content?: unknown;
|
|
89
|
+
speaker?: unknown;
|
|
90
|
+
speaker_kind?: unknown;
|
|
91
|
+
[k: string]: unknown;
|
|
92
|
+
}
|
|
93
|
+
interface SceneLike {
|
|
94
|
+
scene_num?: number;
|
|
95
|
+
location_name?: string;
|
|
96
|
+
actor_names?: string[];
|
|
97
|
+
prop_names?: string[];
|
|
98
|
+
actions?: ActionLike[];
|
|
99
|
+
[k: string]: unknown;
|
|
100
|
+
}
|
|
101
|
+
export interface FragmentLike {
|
|
102
|
+
episode?: number;
|
|
103
|
+
scenes?: SceneLike[];
|
|
104
|
+
actors?: FragmentAssetDeclaration[];
|
|
105
|
+
locations?: FragmentAssetDeclaration[];
|
|
106
|
+
props?: FragmentAssetDeclaration[];
|
|
107
|
+
speakers?: FragmentSpeakerDeclaration[];
|
|
108
|
+
[k: string]: unknown;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Mutate `reg` to incorporate the fragment's asset declarations and scene appearances.
|
|
112
|
+
*
|
|
113
|
+
* New assets are added with `introducedByEpisode: episode`. Already-registered
|
|
114
|
+
* assets get `lastSeenEpisode` / `appearanceCount` bumped, and a missing description
|
|
115
|
+
* is back-filled when the fragment provides one.
|
|
116
|
+
*
|
|
117
|
+
* If the orchestrator later decides this episode's draft is bad (lint critical /
|
|
118
|
+
* validation blocking), it should call `rollbackEpisode(reg, episode)` to undo
|
|
119
|
+
* the introductions. Episodes whose `.done-NN` marker exists must not be rolled
|
|
120
|
+
* back — the orchestrator gates that check itself.
|
|
121
|
+
*/
|
|
122
|
+
export declare function applyFragment(reg: AssetRegistry, fragment: FragmentLike, episode: number): ApplyFragmentResult;
|
|
123
|
+
/**
|
|
124
|
+
* Remove all entries introduced by `episode`. The orchestrator calls this when an
|
|
125
|
+
* episode's draft is regenerated (`--regen`) or fails a gate (lint critical /
|
|
126
|
+
* validation blocking) before its `.done-NN` marker is written.
|
|
127
|
+
*
|
|
128
|
+
* This function is unconditional — committed-marker guarding lives in the
|
|
129
|
+
* orchestrator, not here, because "committed" is a filesystem fact (marker file
|
|
130
|
+
* presence), not part of the registry's data model.
|
|
131
|
+
*/
|
|
132
|
+
export declare function rollbackEpisode(reg: AssetRegistry, episode: number): void;
|
|
133
|
+
/**
|
|
134
|
+
* Render the registry as a markdown summary suitable for injecting into Gemini's
|
|
135
|
+
* prompt. The agent is told "if a character matches, reuse the name; do NOT re-declare
|
|
136
|
+
* in `## 人物`".
|
|
137
|
+
*
|
|
138
|
+
* Returns an empty string when the registry has no entries.
|
|
139
|
+
*/
|
|
140
|
+
export declare function summarizeForPrompt(reg: AssetRegistry): string;
|
|
141
|
+
export {};
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-episode asset registry for incremental drafting.
|
|
3
|
+
*
|
|
4
|
+
* The registry is the single source of truth (locally) for which actors / locations /
|
|
5
|
+
* props / speakers exist across already-drafted episodes. It lets the episode
|
|
6
|
+
* subcommand:
|
|
7
|
+
*
|
|
8
|
+
* 1. Inject an "existing assets" list into the Gemini prompt (prevention).
|
|
9
|
+
* 2. Detect collisions when a freshly-parsed fragment declares an asset that already
|
|
10
|
+
* exists (correction).
|
|
11
|
+
* 3. Assign stable ids (`act_001`, `loc_001`, ...) that survive across draft / publish.
|
|
12
|
+
* 4. Roll back an episode's introduced entries when its draft is regenerated.
|
|
13
|
+
*
|
|
14
|
+
* The registry file lives at `<workspace>/episodes/asset-registry.json` by default
|
|
15
|
+
* (co-located with the rest of scriptctl episode's own writes).
|
|
16
|
+
*
|
|
17
|
+
* Whether an episode has been "committed" (i.e. its draft passed all gates) is
|
|
18
|
+
* tracked by the `.done-NN` marker file the episode orchestrator writes —
|
|
19
|
+
* not by any state inside the registry. The registry stores only durable cross-
|
|
20
|
+
* episode facts (id, first/last seen, appearance count); orchestration state
|
|
21
|
+
* (commit / rollback) is the orchestrator's concern.
|
|
22
|
+
*/
|
|
23
|
+
import * as fs from "node:fs";
|
|
24
|
+
import * as path from "node:path";
|
|
25
|
+
import { exists, fmtId, readJson, writeJson } from "../common.js";
|
|
26
|
+
const REGISTRY_VERSION = 1;
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// Path helpers
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
export function defaultRegistryPath(workspace) {
|
|
31
|
+
return path.join(workspace, "episodes", "asset-registry.json");
|
|
32
|
+
}
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
// Factory / I/O
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
36
|
+
export function emptyRegistry() {
|
|
37
|
+
return { version: REGISTRY_VERSION, actors: [], locations: [], props: [], speakers: [] };
|
|
38
|
+
}
|
|
39
|
+
export function loadRegistry(registryPath) {
|
|
40
|
+
if (!exists(registryPath))
|
|
41
|
+
return emptyRegistry();
|
|
42
|
+
const raw = readJson(registryPath);
|
|
43
|
+
return {
|
|
44
|
+
version: REGISTRY_VERSION,
|
|
45
|
+
actors: Array.isArray(raw.actors) ? raw.actors : [],
|
|
46
|
+
locations: Array.isArray(raw.locations) ? raw.locations : [],
|
|
47
|
+
props: Array.isArray(raw.props) ? raw.props : [],
|
|
48
|
+
speakers: Array.isArray(raw.speakers) ? raw.speakers : [],
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export function saveRegistry(registryPath, reg) {
|
|
52
|
+
fs.mkdirSync(path.dirname(registryPath), { recursive: true });
|
|
53
|
+
writeJson(registryPath, reg);
|
|
54
|
+
}
|
|
55
|
+
// ---------------------------------------------------------------------------
|
|
56
|
+
// Lookups
|
|
57
|
+
// ---------------------------------------------------------------------------
|
|
58
|
+
function lookupIn(list, name) {
|
|
59
|
+
const target = name.trim();
|
|
60
|
+
if (!target)
|
|
61
|
+
return null;
|
|
62
|
+
for (const entry of list) {
|
|
63
|
+
if (entry.name === target)
|
|
64
|
+
return entry;
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
export function lookupActor(reg, name) {
|
|
69
|
+
return lookupIn(reg.actors, name);
|
|
70
|
+
}
|
|
71
|
+
export function lookupLocation(reg, name) {
|
|
72
|
+
return lookupIn(reg.locations, name);
|
|
73
|
+
}
|
|
74
|
+
export function lookupProp(reg, name) {
|
|
75
|
+
return lookupIn(reg.props, name);
|
|
76
|
+
}
|
|
77
|
+
export function lookupSpeaker(reg, name, sourceKind) {
|
|
78
|
+
const target = name.trim();
|
|
79
|
+
if (!target)
|
|
80
|
+
return null;
|
|
81
|
+
for (const entry of reg.speakers) {
|
|
82
|
+
if (entry.name !== target)
|
|
83
|
+
continue;
|
|
84
|
+
if (sourceKind && entry.sourceKind !== sourceKind)
|
|
85
|
+
continue;
|
|
86
|
+
return entry;
|
|
87
|
+
}
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
// ---------------------------------------------------------------------------
|
|
91
|
+
// Mutations (in-place)
|
|
92
|
+
// ---------------------------------------------------------------------------
|
|
93
|
+
function nextIdForList(list, prefix) {
|
|
94
|
+
let max = 0;
|
|
95
|
+
const pattern = new RegExp(`^${prefix}_(\\d+)$`);
|
|
96
|
+
for (const entry of list) {
|
|
97
|
+
const m = pattern.exec(entry.id);
|
|
98
|
+
if (m) {
|
|
99
|
+
const n = parseInt(m[1], 10);
|
|
100
|
+
if (Number.isFinite(n) && n > max)
|
|
101
|
+
max = n;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return fmtId(prefix, max + 1);
|
|
105
|
+
}
|
|
106
|
+
function registerOrTouch(list, prefix, decl, episode, firstSeen, extra = {}) {
|
|
107
|
+
const name = decl.name.trim();
|
|
108
|
+
const existing = lookupIn(list, name);
|
|
109
|
+
if (existing) {
|
|
110
|
+
if (episode < existing.firstSeenEpisode) {
|
|
111
|
+
existing.firstSeenEpisode = episode;
|
|
112
|
+
existing.firstSeenScene = firstSeen.scene;
|
|
113
|
+
existing.firstSeenAction = firstSeen.action;
|
|
114
|
+
}
|
|
115
|
+
if (episode > existing.lastSeenEpisode)
|
|
116
|
+
existing.lastSeenEpisode = episode;
|
|
117
|
+
existing.appearanceCount += 1;
|
|
118
|
+
if (decl.description && !existing.description)
|
|
119
|
+
existing.description = decl.description;
|
|
120
|
+
return { entry: existing, isNew: false };
|
|
121
|
+
}
|
|
122
|
+
const id = nextIdForList(list, prefix);
|
|
123
|
+
const created = {
|
|
124
|
+
id,
|
|
125
|
+
name,
|
|
126
|
+
description: decl.description ?? null,
|
|
127
|
+
firstSeenEpisode: episode,
|
|
128
|
+
firstSeenScene: firstSeen.scene,
|
|
129
|
+
firstSeenAction: firstSeen.action,
|
|
130
|
+
lastSeenEpisode: episode,
|
|
131
|
+
appearanceCount: 1,
|
|
132
|
+
states: [],
|
|
133
|
+
introducedByEpisode: episode,
|
|
134
|
+
...extra,
|
|
135
|
+
};
|
|
136
|
+
list.push(created);
|
|
137
|
+
return { entry: created, isNew: true };
|
|
138
|
+
}
|
|
139
|
+
// ---------------------------------------------------------------------------
|
|
140
|
+
// First-seen extraction from a parsed fragment
|
|
141
|
+
// ---------------------------------------------------------------------------
|
|
142
|
+
function findFirstSeen(fragment, episode, predicate) {
|
|
143
|
+
const scenes = fragment.scenes ?? [];
|
|
144
|
+
for (let i = 0; i < scenes.length; i++) {
|
|
145
|
+
const scene = scenes[i];
|
|
146
|
+
const sceneNum = typeof scene.scene_num === "number" ? scene.scene_num : i + 1;
|
|
147
|
+
const sceneId = `ep_${String(episode).padStart(3, "0")}/scn_${String(sceneNum).padStart(3, "0")}`;
|
|
148
|
+
const actions = scene.actions ?? [];
|
|
149
|
+
for (const action of actions) {
|
|
150
|
+
if (predicate(action, i)) {
|
|
151
|
+
return { scene: sceneId, action: String(action.content ?? "").trim() };
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return { scene: "", action: "" };
|
|
156
|
+
}
|
|
157
|
+
function findFirstSceneOfActor(fragment, episode, actorName) {
|
|
158
|
+
const scenes = fragment.scenes ?? [];
|
|
159
|
+
for (let i = 0; i < scenes.length; i++) {
|
|
160
|
+
const scene = scenes[i];
|
|
161
|
+
const sceneNum = typeof scene.scene_num === "number" ? scene.scene_num : i + 1;
|
|
162
|
+
const actorNames = scene.actor_names ?? [];
|
|
163
|
+
if (actorNames.includes(actorName)) {
|
|
164
|
+
const sceneId = `ep_${String(episode).padStart(3, "0")}/scn_${String(sceneNum).padStart(3, "0")}`;
|
|
165
|
+
const firstAction = (scene.actions ?? []).find((a) => {
|
|
166
|
+
const content = String(a.content ?? "");
|
|
167
|
+
return content.includes(actorName);
|
|
168
|
+
});
|
|
169
|
+
return { scene: sceneId, action: String(firstAction?.content ?? "").trim() };
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return { scene: "", action: "" };
|
|
173
|
+
}
|
|
174
|
+
function findFirstSceneOfLocation(fragment, episode, locationName) {
|
|
175
|
+
const scenes = fragment.scenes ?? [];
|
|
176
|
+
for (let i = 0; i < scenes.length; i++) {
|
|
177
|
+
const scene = scenes[i];
|
|
178
|
+
const sceneNum = typeof scene.scene_num === "number" ? scene.scene_num : i + 1;
|
|
179
|
+
if (scene.location_name === locationName) {
|
|
180
|
+
const sceneId = `ep_${String(episode).padStart(3, "0")}/scn_${String(sceneNum).padStart(3, "0")}`;
|
|
181
|
+
const firstAction = (scene.actions ?? [])[0];
|
|
182
|
+
return { scene: sceneId, action: String(firstAction?.content ?? "").trim() };
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return { scene: "", action: "" };
|
|
186
|
+
}
|
|
187
|
+
function findFirstSceneOfProp(fragment, episode, propName) {
|
|
188
|
+
const scenes = fragment.scenes ?? [];
|
|
189
|
+
for (let i = 0; i < scenes.length; i++) {
|
|
190
|
+
const scene = scenes[i];
|
|
191
|
+
const sceneNum = typeof scene.scene_num === "number" ? scene.scene_num : i + 1;
|
|
192
|
+
const propNames = scene.prop_names ?? [];
|
|
193
|
+
if (propNames.includes(propName)) {
|
|
194
|
+
const sceneId = `ep_${String(episode).padStart(3, "0")}/scn_${String(sceneNum).padStart(3, "0")}`;
|
|
195
|
+
const firstAction = (scene.actions ?? []).find((a) => String(a.content ?? "").includes(propName));
|
|
196
|
+
return { scene: sceneId, action: String(firstAction?.content ?? "").trim() };
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return { scene: "", action: "" };
|
|
200
|
+
}
|
|
201
|
+
// ---------------------------------------------------------------------------
|
|
202
|
+
// Apply a parsed fragment to the registry
|
|
203
|
+
// ---------------------------------------------------------------------------
|
|
204
|
+
/**
|
|
205
|
+
* Mutate `reg` to incorporate the fragment's asset declarations and scene appearances.
|
|
206
|
+
*
|
|
207
|
+
* New assets are added with `introducedByEpisode: episode`. Already-registered
|
|
208
|
+
* assets get `lastSeenEpisode` / `appearanceCount` bumped, and a missing description
|
|
209
|
+
* is back-filled when the fragment provides one.
|
|
210
|
+
*
|
|
211
|
+
* If the orchestrator later decides this episode's draft is bad (lint critical /
|
|
212
|
+
* validation blocking), it should call `rollbackEpisode(reg, episode)` to undo
|
|
213
|
+
* the introductions. Episodes whose `.done-NN` marker exists must not be rolled
|
|
214
|
+
* back — the orchestrator gates that check itself.
|
|
215
|
+
*/
|
|
216
|
+
export function applyFragment(reg, fragment, episode) {
|
|
217
|
+
const result = {
|
|
218
|
+
newIds: { actor: [], location: [], prop: [], speaker: [] },
|
|
219
|
+
reusedIds: { actor: [], location: [], prop: [], speaker: [] },
|
|
220
|
+
};
|
|
221
|
+
for (const decl of fragment.actors ?? []) {
|
|
222
|
+
const fs = findFirstSceneOfActor(fragment, episode, decl.name);
|
|
223
|
+
const { entry, isNew } = registerOrTouch(reg.actors, "act", decl, episode, fs);
|
|
224
|
+
(isNew ? result.newIds.actor : result.reusedIds.actor).push(entry.id);
|
|
225
|
+
}
|
|
226
|
+
for (const decl of fragment.locations ?? []) {
|
|
227
|
+
const fs = findFirstSceneOfLocation(fragment, episode, decl.name);
|
|
228
|
+
const { entry, isNew } = registerOrTouch(reg.locations, "loc", decl, episode, fs);
|
|
229
|
+
(isNew ? result.newIds.location : result.reusedIds.location).push(entry.id);
|
|
230
|
+
}
|
|
231
|
+
for (const decl of fragment.props ?? []) {
|
|
232
|
+
const fs = findFirstSceneOfProp(fragment, episode, decl.name);
|
|
233
|
+
const { entry, isNew } = registerOrTouch(reg.props, "prop", decl, episode, fs);
|
|
234
|
+
(isNew ? result.newIds.prop : result.reusedIds.prop).push(entry.id);
|
|
235
|
+
}
|
|
236
|
+
for (const decl of fragment.speakers ?? []) {
|
|
237
|
+
// For speakers, first-seen by content scan (action speaker field)
|
|
238
|
+
const fs = findFirstSeen(fragment, episode, (a) => {
|
|
239
|
+
const sp = typeof a.speaker === "string" ? a.speaker : "";
|
|
240
|
+
return sp === decl.name;
|
|
241
|
+
});
|
|
242
|
+
const { entry, isNew } = registerOrTouch(reg.speakers, "spk", decl, episode, fs, { sourceKind: decl.sourceKind });
|
|
243
|
+
(isNew ? result.newIds.speaker : result.reusedIds.speaker).push(entry.id);
|
|
244
|
+
}
|
|
245
|
+
return result;
|
|
246
|
+
}
|
|
247
|
+
// ---------------------------------------------------------------------------
|
|
248
|
+
// Rollback
|
|
249
|
+
// ---------------------------------------------------------------------------
|
|
250
|
+
/**
|
|
251
|
+
* Remove all entries introduced by `episode`. The orchestrator calls this when an
|
|
252
|
+
* episode's draft is regenerated (`--regen`) or fails a gate (lint critical /
|
|
253
|
+
* validation blocking) before its `.done-NN` marker is written.
|
|
254
|
+
*
|
|
255
|
+
* This function is unconditional — committed-marker guarding lives in the
|
|
256
|
+
* orchestrator, not here, because "committed" is a filesystem fact (marker file
|
|
257
|
+
* presence), not part of the registry's data model.
|
|
258
|
+
*/
|
|
259
|
+
export function rollbackEpisode(reg, episode) {
|
|
260
|
+
const filter = (list) => list.filter((e) => e.introducedByEpisode !== episode);
|
|
261
|
+
reg.actors = filter(reg.actors);
|
|
262
|
+
reg.locations = filter(reg.locations);
|
|
263
|
+
reg.props = filter(reg.props);
|
|
264
|
+
reg.speakers = filter(reg.speakers);
|
|
265
|
+
}
|
|
266
|
+
// ---------------------------------------------------------------------------
|
|
267
|
+
// Prompt injection summary (Strategy 1: prevention)
|
|
268
|
+
// ---------------------------------------------------------------------------
|
|
269
|
+
/**
|
|
270
|
+
* Render the registry as a markdown summary suitable for injecting into Gemini's
|
|
271
|
+
* prompt. The agent is told "if a character matches, reuse the name; do NOT re-declare
|
|
272
|
+
* in `## 人物`".
|
|
273
|
+
*
|
|
274
|
+
* Returns an empty string when the registry has no entries.
|
|
275
|
+
*/
|
|
276
|
+
export function summarizeForPrompt(reg) {
|
|
277
|
+
if (reg.actors.length === 0 &&
|
|
278
|
+
reg.locations.length === 0 &&
|
|
279
|
+
reg.props.length === 0 &&
|
|
280
|
+
reg.speakers.length === 0) {
|
|
281
|
+
return "";
|
|
282
|
+
}
|
|
283
|
+
const lines = ["# 已存在资产清单(复用时直接在 ref 处用名字,不要在 `## 人物`/`## 场景`/`## 道具`/`## 发声源` 段重复登记)", ""];
|
|
284
|
+
if (reg.actors.length) {
|
|
285
|
+
lines.push("## 人物");
|
|
286
|
+
for (const e of reg.actors) {
|
|
287
|
+
const desc = e.description ? `:${e.description}` : "";
|
|
288
|
+
lines.push(`- ${e.name}${desc}(首次出现 ep${e.firstSeenEpisode})`);
|
|
289
|
+
}
|
|
290
|
+
lines.push("");
|
|
291
|
+
}
|
|
292
|
+
if (reg.locations.length) {
|
|
293
|
+
lines.push("## 场景");
|
|
294
|
+
for (const e of reg.locations) {
|
|
295
|
+
const desc = e.description ? `:${e.description}` : "";
|
|
296
|
+
lines.push(`- ${e.name}${desc}`);
|
|
297
|
+
}
|
|
298
|
+
lines.push("");
|
|
299
|
+
}
|
|
300
|
+
if (reg.props.length) {
|
|
301
|
+
lines.push("## 道具");
|
|
302
|
+
for (const e of reg.props) {
|
|
303
|
+
const desc = e.description ? `:${e.description}` : "";
|
|
304
|
+
lines.push(`- ${e.name}${desc}`);
|
|
305
|
+
}
|
|
306
|
+
lines.push("");
|
|
307
|
+
}
|
|
308
|
+
if (reg.speakers.length) {
|
|
309
|
+
lines.push("## 发声源");
|
|
310
|
+
for (const e of reg.speakers) {
|
|
311
|
+
const desc = e.description ? `:${e.description}` : "";
|
|
312
|
+
lines.push(`- ${e.name}(${e.sourceKind})${desc}`);
|
|
313
|
+
}
|
|
314
|
+
lines.push("");
|
|
315
|
+
}
|
|
316
|
+
return lines.join("\n").trimEnd();
|
|
317
|
+
}
|
|
318
|
+
//# sourceMappingURL=asset-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-registry.js","sourceRoot":"","sources":["../../src/domain/asset-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Asset collision detector for cross-episode incremental drafting.
|
|
3
|
+
*
|
|
4
|
+
* When a freshly-parsed fragment declares a new asset (in `## 人物`/`## 场景`/`## 道具`/
|
|
5
|
+
* `## 发声源`) whose name already exists in the registry, the detector raises a
|
|
6
|
+
* structured report. The orchestrator (episode subcommand) is expected to surface this
|
|
7
|
+
* to the agent, which decides among three resolutions:
|
|
8
|
+
* - accept_identity: same entity, drop the duplicate declaration (refs use existing id)
|
|
9
|
+
* - distinguish_rename: different entity, rename the new one to disambiguate
|
|
10
|
+
* - promote_to_state: same entity, different state — add a state to existing asset
|
|
11
|
+
*
|
|
12
|
+
* Only exact-name collisions are detected. The kind reflects whether the agent
|
|
13
|
+
* should treat it as blocking or a warning, based on description similarity:
|
|
14
|
+
* - hard: exact name match (description similar enough that it's almost certainly
|
|
15
|
+
* the same entity). Blocks commit; expects agent resolution.
|
|
16
|
+
* - soft: exact name match but descriptions clearly diverge — could be intentional
|
|
17
|
+
* reuse of a generic label (e.g. two unrelated "路人甲"). Warn but don't block.
|
|
18
|
+
*
|
|
19
|
+
* The detector is a pure function: it reads the fragment and the registry,
|
|
20
|
+
* never mutates either.
|
|
21
|
+
*/
|
|
22
|
+
import type { AssetRegistry, AssetType, FragmentLike } from "./asset-registry.js";
|
|
23
|
+
export type CollisionKind = "hard" | "soft";
|
|
24
|
+
export type CollisionResolution = "accept_identity" | "distinguish_rename" | "promote_to_state";
|
|
25
|
+
export interface CollisionReport {
|
|
26
|
+
kind: CollisionKind;
|
|
27
|
+
assetType: AssetType;
|
|
28
|
+
fragmentDeclaration: {
|
|
29
|
+
name: string;
|
|
30
|
+
description: string | null;
|
|
31
|
+
firstSeenScene?: string;
|
|
32
|
+
firstSeenAction?: string;
|
|
33
|
+
};
|
|
34
|
+
registryEntry: {
|
|
35
|
+
id: string;
|
|
36
|
+
name: string;
|
|
37
|
+
description: string | null;
|
|
38
|
+
firstSeenEpisode: number;
|
|
39
|
+
firstSeenScene: string;
|
|
40
|
+
firstSeenAction: string;
|
|
41
|
+
lastSeenEpisode: number;
|
|
42
|
+
appearanceCount: number;
|
|
43
|
+
states: Array<{
|
|
44
|
+
id: string;
|
|
45
|
+
name: string;
|
|
46
|
+
}>;
|
|
47
|
+
sourceKind?: string;
|
|
48
|
+
};
|
|
49
|
+
descriptionSimilarity: number;
|
|
50
|
+
resolutions: CollisionResolution[];
|
|
51
|
+
}
|
|
52
|
+
export interface DetectCollisionsOptions {
|
|
53
|
+
/**
|
|
54
|
+
* Description Jaccard similarity (0..1) below which a `soft` collision is raised
|
|
55
|
+
* for matching names. Default 0.4 — chosen to flag clearly divergent descriptions
|
|
56
|
+
* while tolerating natural variance (e.g. "穿灰色西装" vs "灰西装中年男").
|
|
57
|
+
*/
|
|
58
|
+
softSimilarityThreshold?: number;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Detect collisions between a freshly-parsed fragment and the existing registry.
|
|
62
|
+
*
|
|
63
|
+
* Returns a (possibly empty) list of reports. Caller (episode subcommand) treats:
|
|
64
|
+
* - `kind: "hard"` as blocking — agent must resolve before commit
|
|
65
|
+
* - `kind: "soft"` as warning — agent should consider but may proceed
|
|
66
|
+
* - `kind: "hint"` as info — surfaced for awareness only
|
|
67
|
+
*
|
|
68
|
+
* The episode number is taken from `fragment.episode` if available, otherwise
|
|
69
|
+
* passed via `opts.episode` (caller responsibility).
|
|
70
|
+
*/
|
|
71
|
+
export declare function detectCollisions(fragment: FragmentLike, registry: AssetRegistry, opts?: DetectCollisionsOptions & {
|
|
72
|
+
episode?: number;
|
|
73
|
+
}): CollisionReport[];
|
|
74
|
+
/**
|
|
75
|
+
* Whether any report has `kind: "hard"` — convenience for episode.ts commit gating.
|
|
76
|
+
*/
|
|
77
|
+
export declare function hasHardCollision(reports: CollisionReport[]): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Render a list of CollisionReports as a human-readable markdown summary suitable
|
|
80
|
+
* for stderr output. The machine-readable JSON is expected to be written to
|
|
81
|
+
* `workspace/episodes/ep<n>.collision.json` by the orchestrator.
|
|
82
|
+
*/
|
|
83
|
+
export declare function summarizeReports(reports: CollisionReport[]): string;
|