@lingjingai/scriptctl 0.53.7 → 0.53.9
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/changes/0.53.8.md +14 -0
- package/changes/0.53.9.md +13 -0
- package/dist/domain/ingest/video-source-evolution.d.ts +21 -0
- package/dist/domain/ingest/video-source-evolution.js +43 -0
- package/dist/domain/ingest/video-source-evolution.js.map +1 -0
- package/dist/infra/ingest/video-source-snapshot.d.ts +4 -0
- package/dist/infra/ingest/video-source-snapshot.js +24 -0
- package/dist/infra/ingest/video-source-snapshot.js.map +1 -0
- package/dist/infra/ingest/video-transcode.js +1 -0
- package/dist/infra/ingest/video-transcode.js.map +1 -1
- package/dist/llm/tasks/ingest/episode-assets.d.ts +20 -0
- package/dist/llm/tasks/ingest/episode-assets.js +130 -10
- package/dist/llm/tasks/ingest/episode-assets.js.map +1 -1
- package/dist/llm/tasks/ingest/name-fix.js +4 -4
- package/dist/llm/tasks/ingest/name-fix.js.map +1 -1
- package/dist/usecases/ingest/command.js +3 -1
- package/dist/usecases/ingest/command.js.map +1 -1
- package/dist/usecases/ingest/serial-govern.js +68 -28
- package/dist/usecases/ingest/serial-govern.js.map +1 -1
- package/dist/usecases/ingest/video-pipeline.d.ts +1 -0
- package/dist/usecases/ingest/video-pipeline.js +68 -31
- package/dist/usecases/ingest/video-pipeline.js.map +1 -1
- package/dist/usecases/script/working-copy.js +5 -0
- package/dist/usecases/script/working-copy.js.map +1 -1
- package/package.json +1 -1
- package/skills/scriptctl/SKILL.md +1 -1
- package/skills/scriptctl/references/ingest-workflow.md +28 -6
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# 0.53.8
|
|
2
|
+
|
|
3
|
+
## Added
|
|
4
|
+
- `scriptctl ingest` accepts continuous tail episodes added to an existing video directory workspace, reusing completed episode checkpoints and cross-episode context; video JSON results include `processed` and `reused` episode counts.
|
|
5
|
+
|
|
6
|
+
## Changed
|
|
7
|
+
- None.
|
|
8
|
+
|
|
9
|
+
## Fixed
|
|
10
|
+
- `scriptctl ingest` serial no longer drops a window's characters/looks when the model returns double-encoded or quote-broken JSON arrays; it re-parses (with repair), retries, or re-runs a corrupt checkpoint instead of shipping empty descriptions that collapse into the actor name or the default look text.
|
|
11
|
+
- `scriptctl ingest` video pre-upload transcoding writes an explicit MP4 container for atomic temporary outputs instead of falling back to uploading the full original video.
|
|
12
|
+
|
|
13
|
+
## Breaking
|
|
14
|
+
- Video ingest now requires numbered directory sources to form a continuous `1..N` sequence and records per-episode content identity in a new manifest format. Existing video workspaces must use a fresh `-w`; they are not upgraded with `--force`.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface VideoSourceEpisodeIdentity {
|
|
2
|
+
episode: number;
|
|
3
|
+
path: string;
|
|
4
|
+
ext: string;
|
|
5
|
+
mime: string;
|
|
6
|
+
sha256: string;
|
|
7
|
+
}
|
|
8
|
+
export type VideoSourceEvolution = {
|
|
9
|
+
kind: "unchanged";
|
|
10
|
+
appended: [];
|
|
11
|
+
} | {
|
|
12
|
+
kind: "append";
|
|
13
|
+
appended: VideoSourceEpisodeIdentity[];
|
|
14
|
+
} | {
|
|
15
|
+
kind: "incompatible";
|
|
16
|
+
reason: string;
|
|
17
|
+
};
|
|
18
|
+
export declare function classifyVideoSourceEvolution(previous: VideoSourceEpisodeIdentity[], current: VideoSourceEpisodeIdentity[]): VideoSourceEvolution;
|
|
19
|
+
export declare function validateContinuousEpisodeSequence(episodes: ReadonlyArray<{
|
|
20
|
+
episode: number;
|
|
21
|
+
}>): string | null;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
function identityMismatch(previous, current) {
|
|
2
|
+
if (previous.episode !== current.episode) {
|
|
3
|
+
return `episode ${previous.episode} was replaced by episode ${current.episode}`;
|
|
4
|
+
}
|
|
5
|
+
if (previous.path !== current.path) {
|
|
6
|
+
return `episode ${previous.episode} moved from ${previous.path} to ${current.path}`;
|
|
7
|
+
}
|
|
8
|
+
if (previous.ext !== current.ext || previous.mime !== current.mime) {
|
|
9
|
+
return `episode ${previous.episode} changed media type`;
|
|
10
|
+
}
|
|
11
|
+
if (previous.sha256 !== current.sha256) {
|
|
12
|
+
return `episode ${previous.episode} content changed`;
|
|
13
|
+
}
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
export function classifyVideoSourceEvolution(previous, current) {
|
|
17
|
+
if (current.length < previous.length) {
|
|
18
|
+
return {
|
|
19
|
+
kind: "incompatible",
|
|
20
|
+
reason: `source removed ${previous.length - current.length} previously accepted episode(s)`,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
for (let index = 0; index < previous.length; index += 1) {
|
|
24
|
+
const mismatch = identityMismatch(previous[index], current[index]);
|
|
25
|
+
if (mismatch)
|
|
26
|
+
return { kind: "incompatible", reason: mismatch };
|
|
27
|
+
}
|
|
28
|
+
const appended = current.slice(previous.length);
|
|
29
|
+
return appended.length === 0
|
|
30
|
+
? { kind: "unchanged", appended: [] }
|
|
31
|
+
: { kind: "append", appended };
|
|
32
|
+
}
|
|
33
|
+
export function validateContinuousEpisodeSequence(episodes) {
|
|
34
|
+
for (let index = 0; index < episodes.length; index += 1) {
|
|
35
|
+
const expected = index + 1;
|
|
36
|
+
const actual = episodes[index].episode;
|
|
37
|
+
if (actual !== expected) {
|
|
38
|
+
return `expected episode ${expected}, found episode ${actual}`;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=video-source-evolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video-source-evolution.js","sourceRoot":"","sources":["../../../src/domain/ingest/video-source-evolution.ts"],"names":[],"mappings":"AAaA,SAAS,gBAAgB,CACvB,QAAoC,EACpC,OAAmC;IAEnC,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;QACzC,OAAO,WAAW,QAAQ,CAAC,OAAO,4BAA4B,OAAO,CAAC,OAAO,EAAE,CAAC;IAClF,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,WAAW,QAAQ,CAAC,OAAO,eAAe,QAAQ,CAAC,IAAI,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;IACtF,CAAC;IACD,IAAI,QAAQ,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;QACnE,OAAO,WAAW,QAAQ,CAAC,OAAO,qBAAqB,CAAC;IAC1D,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO,WAAW,QAAQ,CAAC,OAAO,kBAAkB,CAAC;IACvD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,QAAsC,EACtC,OAAqC;IAErC,IAAI,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrC,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,kBAAkB,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,iCAAiC;SAC5F,CAAC;IACJ,CAAC;IAED,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAE,EAAE,OAAO,CAAC,KAAK,CAAE,CAAC,CAAC;QACrE,IAAI,QAAQ;YAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAClE,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC1B,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,QAA4C;IAE5C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAE,CAAC,OAAO,CAAC;QACxC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,OAAO,oBAAoB,QAAQ,mBAAmB,MAAM,EAAE,CAAC;QACjE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { VideoSourceEpisodeIdentity } from "../../domain/ingest/video-source-evolution.js";
|
|
2
|
+
import type { VideoEpisode } from "./video-discovery.js";
|
|
3
|
+
export declare function snapshotVideoSource(episodes: VideoEpisode[]): VideoSourceEpisodeIdentity[];
|
|
4
|
+
export declare function videoSourceFingerprint(episodes: VideoSourceEpisodeIdentity[]): string;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as path from "node:path";
|
|
2
|
+
import { sha256File, sha256Text } from "../../common.js";
|
|
3
|
+
export function snapshotVideoSource(episodes) {
|
|
4
|
+
return episodes.map((episode) => {
|
|
5
|
+
const absolutePath = path.resolve(episode.path);
|
|
6
|
+
return {
|
|
7
|
+
episode: episode.episode,
|
|
8
|
+
path: absolutePath,
|
|
9
|
+
ext: episode.ext,
|
|
10
|
+
mime: episode.mime,
|
|
11
|
+
sha256: sha256File(absolutePath),
|
|
12
|
+
};
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
export function videoSourceFingerprint(episodes) {
|
|
16
|
+
return sha256Text(JSON.stringify(episodes.map((episode) => ({
|
|
17
|
+
episode: episode.episode,
|
|
18
|
+
path: episode.path,
|
|
19
|
+
ext: episode.ext,
|
|
20
|
+
mime: episode.mime,
|
|
21
|
+
sha256: episode.sha256,
|
|
22
|
+
}))));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=video-source-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video-source-snapshot.js","sourceRoot":"","sources":["../../../src/infra/ingest/video-source-snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIzD,MAAM,UAAU,mBAAmB,CAAC,QAAwB;IAC1D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,YAAY;YAClB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC;SACjC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,QAAsC;IAC3E,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC1D,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC,CAAC,CAAC,CAAC;AACR,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video-transcode.js","sourceRoot":"","sources":["../../../src/infra/ingest/video-transcode.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"video-transcode.js","sourceRoot":"","sources":["../../../src/infra/ingest/video-transcode.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,+EAA+E;AAC/E,gFAAgF;AAChF,iFAAiF;AACjF,kFAAkF;AAClF,kFAAkF;AAClF,0EAA0E;AAE1E,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,iFAAiF;AACjF,yDAAyD;AACzD,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1C,4EAA4E;AAC5E,+EAA+E;AAC/E,mDAAmD;AACnD,MAAM,YAAY,GAChB,mEAAmE,CAAC;AAStE,SAAS,UAAU,CAAC,GAAW,EAAE,GAAW;IAC1C,OAAO;QACL,IAAI,EAAE,WAAW,EAAE,OAAO;QAC1B,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS;QAC3E,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK;QAC5B,WAAW,EAAE,YAAY;QACzB,IAAI,EAAE,KAAK;QACX,GAAG;KACJ,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,GAAW,EAAE,MAAoB;IAC/D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7F,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,GAAS,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9C,IAAI,IAAI,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;;gBACrB,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kFAAkF;AAClF,gFAAgF;AAChF,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAW,EACX,GAAW,EACX,IAAY,EACZ,MAAoB;IAEpB,4EAA4E;IAC5E,6EAA6E;IAC7E,8EAA8E;IAC9E,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3D,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC5D,CAAC;IACD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,CAAC;QAAC,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,yCAAyC,CAAC,CAAC;IACzF,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,gBAAgB,EAAE,CAAC;QACzC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;IAC9G,CAAC;IACD,4EAA4E;IAC5E,iFAAiF;IACjF,iFAAiF;IACjF,+EAA+E;IAC/E,gFAAgF;IAChF,2BAA2B;IAC3B,MAAM,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC;IAC1B,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,oDAAoD;QACrF,MAAM,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACrG,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,iBAAiB;QAC1C,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC5D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,6EAA6E;QAC7E,2BAA2B;QAC3B,IAAI,CAAC;YAAC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAAC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAChG,IAAI,MAAM,EAAE,OAAO;YAAE,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/E,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,yCAAyC,MAAM,GAAG,EAAE,CAAC;IAC1G,CAAC;AACH,CAAC"}
|
|
@@ -6,4 +6,24 @@ export declare function runEpisodeAssets(executor: LlmTaskExecutor, contextMd: s
|
|
|
6
6
|
delta: Delta;
|
|
7
7
|
raw: string;
|
|
8
8
|
}>;
|
|
9
|
+
/** Thrown when a serial delta field is not a usable array (incl. failed re-parse). */
|
|
10
|
+
export declare class SerialDeltaShapeError extends Error {
|
|
11
|
+
readonly code: "serial_delta_shape";
|
|
12
|
+
constructor(message: string);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Best-effort repair when the model double-encodes an array as a JSON string and
|
|
16
|
+
* uses bare `"` as Chinese quotation marks inside values
|
|
17
|
+
* (e.g. `市中心"金鳞"商业地皮`, `皇冠"世纪之星"`). Strict JSON.parse fails; we
|
|
18
|
+
* walk the text as JSON-ish strings and escape interior `"` that cannot close a
|
|
19
|
+
* value (next non-ws is not `,` `}` `]` `:` or EOF). Only applied after a strict
|
|
20
|
+
* parse fails — callers must not use this on already-valid JSON.
|
|
21
|
+
*/
|
|
22
|
+
export declare function repairDoubleEncodedJson(raw: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Coerce a tool field to an array. Accepts real arrays, null/undefined/"" → [],
|
|
25
|
+
* and JSON-encoded array strings (double-encoding, with quote-repair). Anything
|
|
26
|
+
* else throws — never silently collapses to [].
|
|
27
|
+
*/
|
|
28
|
+
export declare function coerceJsonArray(v: unknown, field: string): unknown[];
|
|
9
29
|
export declare function toDelta(input: unknown): Delta;
|
|
@@ -60,10 +60,108 @@ export async function runEpisodeAssets(executor, contextMd, bodyMd, signal) {
|
|
|
60
60
|
// straight, defensive projection: entity `aliases` become immediate merges into
|
|
61
61
|
// the canonical name (so translations/past-life/alt names fold in), and look
|
|
62
62
|
// name+aliases become the `names[]` list (names[0]=canonical) applyDelta expects.
|
|
63
|
+
//
|
|
64
|
+
// Models (and some tool bridges) still occasionally emit array fields as JSON
|
|
65
|
+
// *strings* (double-encoded), sometimes with unescaped quotes inside. Historically
|
|
66
|
+
// `arr()` treated any non-array as `[]` and serial silently dropped every entity /
|
|
67
|
+
// look for that window. We now re-parse stringified arrays and **throw** on shape
|
|
68
|
+
// failure so the window can retry instead of shipping an empty registry.
|
|
63
69
|
const KIND = new Set(["actor", "location", "prop"]);
|
|
64
70
|
const isObj = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
65
|
-
const arr = (v) => (Array.isArray(v) ? v : []);
|
|
66
71
|
const str = (v) => (typeof v === "string" ? v.trim() : "");
|
|
72
|
+
/** Thrown when a serial delta field is not a usable array (incl. failed re-parse). */
|
|
73
|
+
export class SerialDeltaShapeError extends Error {
|
|
74
|
+
code = "serial_delta_shape";
|
|
75
|
+
constructor(message) {
|
|
76
|
+
super(message);
|
|
77
|
+
this.name = "SerialDeltaShapeError";
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Best-effort repair when the model double-encodes an array as a JSON string and
|
|
82
|
+
* uses bare `"` as Chinese quotation marks inside values
|
|
83
|
+
* (e.g. `市中心"金鳞"商业地皮`, `皇冠"世纪之星"`). Strict JSON.parse fails; we
|
|
84
|
+
* walk the text as JSON-ish strings and escape interior `"` that cannot close a
|
|
85
|
+
* value (next non-ws is not `,` `}` `]` `:` or EOF). Only applied after a strict
|
|
86
|
+
* parse fails — callers must not use this on already-valid JSON.
|
|
87
|
+
*/
|
|
88
|
+
export function repairDoubleEncodedJson(raw) {
|
|
89
|
+
let out = "";
|
|
90
|
+
let inString = false;
|
|
91
|
+
for (let i = 0; i < raw.length; i++) {
|
|
92
|
+
const c = raw[i];
|
|
93
|
+
if (!inString) {
|
|
94
|
+
out += c;
|
|
95
|
+
if (c === '"')
|
|
96
|
+
inString = true;
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
if (c === "\\" && i + 1 < raw.length) {
|
|
100
|
+
out += c + raw[i + 1];
|
|
101
|
+
i++;
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (c === '"') {
|
|
105
|
+
let j = i + 1;
|
|
106
|
+
while (j < raw.length && /\s/.test(raw[j]))
|
|
107
|
+
j++;
|
|
108
|
+
const next = j < raw.length ? raw[j] : "";
|
|
109
|
+
// Structural close of a JSON string (key or value).
|
|
110
|
+
if (next === "" || next === "," || next === "}" || next === "]" || next === ":") {
|
|
111
|
+
out += c;
|
|
112
|
+
inString = false;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
// Interior bare quote (Chinese quotation marks etc.) → escape.
|
|
116
|
+
out += '\\"';
|
|
117
|
+
}
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
out += c;
|
|
121
|
+
}
|
|
122
|
+
return out;
|
|
123
|
+
}
|
|
124
|
+
function parseJsonArrayString(t, field) {
|
|
125
|
+
const tryParse = (s) => JSON.parse(s);
|
|
126
|
+
let parsed;
|
|
127
|
+
try {
|
|
128
|
+
parsed = tryParse(t);
|
|
129
|
+
}
|
|
130
|
+
catch (first) {
|
|
131
|
+
const repaired = repairDoubleEncodedJson(t);
|
|
132
|
+
if (repaired === t) {
|
|
133
|
+
throw new SerialDeltaShapeError(`${field}: expected JSON array string, parse failed: ${first instanceof Error ? first.message : String(first)}`);
|
|
134
|
+
}
|
|
135
|
+
try {
|
|
136
|
+
parsed = tryParse(repaired);
|
|
137
|
+
}
|
|
138
|
+
catch (second) {
|
|
139
|
+
throw new SerialDeltaShapeError(`${field}: expected JSON array string, parse failed after quote-repair: ${second instanceof Error ? second.message : String(second)}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (!Array.isArray(parsed)) {
|
|
143
|
+
throw new SerialDeltaShapeError(`${field}: expected JSON array string, got ${typeof parsed}`);
|
|
144
|
+
}
|
|
145
|
+
return parsed;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Coerce a tool field to an array. Accepts real arrays, null/undefined/"" → [],
|
|
149
|
+
* and JSON-encoded array strings (double-encoding, with quote-repair). Anything
|
|
150
|
+
* else throws — never silently collapses to [].
|
|
151
|
+
*/
|
|
152
|
+
export function coerceJsonArray(v, field) {
|
|
153
|
+
if (v == null)
|
|
154
|
+
return [];
|
|
155
|
+
if (Array.isArray(v))
|
|
156
|
+
return v;
|
|
157
|
+
if (typeof v === "string") {
|
|
158
|
+
const t = v.trim();
|
|
159
|
+
if (!t)
|
|
160
|
+
return [];
|
|
161
|
+
return parseJsonArrayString(t, field);
|
|
162
|
+
}
|
|
163
|
+
throw new SerialDeltaShapeError(`${field}: expected array, got ${typeof v}`);
|
|
164
|
+
}
|
|
67
165
|
// Deterministic backstop for the one thing the model still slips on: a canonical
|
|
68
166
|
// name carrying an inline paren annotation — `大骨头(Big Bones / Marcus Vale)`,
|
|
69
167
|
// `银蕾丝(SilverLace)`. The schema asks for name/aliases split, but a few leak
|
|
@@ -86,11 +184,33 @@ function splitParen(raw) {
|
|
|
86
184
|
return { name, aliases };
|
|
87
185
|
}
|
|
88
186
|
const cleanName = (raw) => splitParen(str(raw)).name;
|
|
187
|
+
function asDeltaObject(input) {
|
|
188
|
+
if (isObj(input))
|
|
189
|
+
return input;
|
|
190
|
+
if (typeof input === "string") {
|
|
191
|
+
const t = input.trim();
|
|
192
|
+
if (!t)
|
|
193
|
+
return null;
|
|
194
|
+
let parsed;
|
|
195
|
+
try {
|
|
196
|
+
parsed = JSON.parse(t);
|
|
197
|
+
}
|
|
198
|
+
catch (e) {
|
|
199
|
+
throw new SerialDeltaShapeError(`delta: top-level JSON string failed to parse: ${e instanceof Error ? e.message : String(e)}`);
|
|
200
|
+
}
|
|
201
|
+
if (!isObj(parsed)) {
|
|
202
|
+
throw new SerialDeltaShapeError(`delta: top-level JSON string must be an object, got ${typeof parsed}`);
|
|
203
|
+
}
|
|
204
|
+
return parsed;
|
|
205
|
+
}
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
89
208
|
export function toDelta(input) {
|
|
90
209
|
const d = emptyDelta();
|
|
91
|
-
|
|
210
|
+
const obj = asDeltaObject(input);
|
|
211
|
+
if (!obj)
|
|
92
212
|
return d;
|
|
93
|
-
for (const e of
|
|
213
|
+
for (const e of coerceJsonArray(obj.newEntities, "newEntities")) {
|
|
94
214
|
if (!isObj(e))
|
|
95
215
|
continue;
|
|
96
216
|
const kind = str(e.kind);
|
|
@@ -101,7 +221,7 @@ export function toDelta(input) {
|
|
|
101
221
|
// (`旧药箱(带三角划痕)`) — split it, else the polluted form registers as an
|
|
102
222
|
// alias and its extra length promotes it to canonical (fuller-name rule).
|
|
103
223
|
const aliasNames = [...parenAliases];
|
|
104
|
-
for (const a of
|
|
224
|
+
for (const a of coerceJsonArray(e.aliases, "newEntities.aliases")) {
|
|
105
225
|
const { name: base, aliases: inner } = splitParen(str(a));
|
|
106
226
|
if (base)
|
|
107
227
|
aliasNames.push(base);
|
|
@@ -110,7 +230,7 @@ export function toDelta(input) {
|
|
|
110
230
|
const aliases = [...new Set(aliasNames.filter((a) => a && a !== name))];
|
|
111
231
|
d.newEntities.push({ name, kind: kind, description: str(e.description), aliases });
|
|
112
232
|
}
|
|
113
|
-
for (const m of
|
|
233
|
+
for (const m of coerceJsonArray(obj.merges, "merges")) {
|
|
114
234
|
if (!isObj(m))
|
|
115
235
|
continue;
|
|
116
236
|
const from = cleanName(m.from);
|
|
@@ -118,17 +238,17 @@ export function toDelta(input) {
|
|
|
118
238
|
if (from && into && from !== into)
|
|
119
239
|
d.merges.push({ from, into });
|
|
120
240
|
}
|
|
121
|
-
for (const l of
|
|
241
|
+
for (const l of coerceJsonArray(obj.looks, "looks")) {
|
|
122
242
|
if (!isObj(l))
|
|
123
243
|
continue;
|
|
124
244
|
const entity = cleanName(l.entity);
|
|
125
245
|
const name = cleanName(l.name);
|
|
126
246
|
if (!entity || !name)
|
|
127
247
|
continue;
|
|
128
|
-
const names = [name, ...
|
|
248
|
+
const names = [name, ...coerceJsonArray(l.aliases, "looks.aliases").map(cleanName).filter(Boolean)];
|
|
129
249
|
d.looks.push({ entity, names, description: str(l.description) });
|
|
130
250
|
}
|
|
131
|
-
for (const c of
|
|
251
|
+
for (const c of coerceJsonArray(obj.lookChanges, "lookChanges")) {
|
|
132
252
|
if (!isObj(c))
|
|
133
253
|
continue;
|
|
134
254
|
const scene = str(c.scene);
|
|
@@ -137,8 +257,8 @@ export function toDelta(input) {
|
|
|
137
257
|
if (scene && entity && look)
|
|
138
258
|
d.lookChanges.push({ scene, entity, look });
|
|
139
259
|
}
|
|
140
|
-
d.subEvents =
|
|
141
|
-
d.summary = str(
|
|
260
|
+
d.subEvents = coerceJsonArray(obj.subEvents, "subEvents").map(str).filter(Boolean);
|
|
261
|
+
d.summary = str(obj.summary);
|
|
142
262
|
return d;
|
|
143
263
|
}
|
|
144
264
|
//# sourceMappingURL=episode-assets.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"episode-assets.js","sourceRoot":"","sources":["../../../../src/llm/tasks/ingest/episode-assets.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,kFAAkF;AAClF,kFAAkF;AAClF,8EAA8E;AAC9E,6EAA6E;AAC7E,mFAAmF;AACnF,8EAA8E;AAC9E,2EAA2E;AAC3E,kFAAkF;AAElF,OAAO,EAAE,UAAU,EAAc,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGpD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,+EAA+E;IAC/E,kFAAkF;IAClF,4EAA4E;IAC5E,2CAA2C;IAC3C,EAAE;IACF,4CAA4C;IAC5C,+IAA+I;IAC/I,iQAAiQ;IACjQ,0IAA0I;IAC1I,+BAA+B;IAC/B,gTAAgT;IAChT,2VAA2V;IAC3V,8DAA8D;IAC9D,qSAAqS;IACrS,wMAAwM;IACxM,oMAAoM;IACpM,wGAAwG;IACxG,mLAAmL;IACnL,6GAA6G;IAC7G,kLAAkL;IAClL,oJAAoJ;IACpJ,8JAA8J;IAC9J,kIAAkI;IAClI,yDAAyD;IACzD,iEAAiE;IACjE,sCAAsC;IACtC,kCAAkC;CACnC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,UAAU,sBAAsB,CAAC,SAAiB,EAAE,MAAc;IACtE,OAAO;QACL,4BAA4B;QAC5B,SAAS,CAAC,IAAI,EAAE,IAAI,cAAc;QAClC,EAAE;QACF,iCAAiC;QACjC,MAAM,CAAC,IAAI,EAAE;KACd,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAyB,EAAE,SAAiB,EAAE,MAAc,EAAE,MAAoB;IACvH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,uBAAuB,EAAE;QACpE,MAAM,EAAE,qBAAqB;QAC7B,IAAI,EAAE,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC;QAC/C,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,WAAW,EAAE,mBAAmB,EAAE;QAClG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AACjF,CAAC;AAED,iFAAiF;AACjF,gFAAgF;AAChF,6EAA6E;AAC7E,kFAAkF;AAClF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AACpD,MAAM,KAAK,GAAG,CAAC,CAAU,EAAgC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACrH,MAAM,GAAG,GAAG,CAAC,CAAU,
|
|
1
|
+
{"version":3,"file":"episode-assets.js","sourceRoot":"","sources":["../../../../src/llm/tasks/ingest/episode-assets.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
// Output is a Delta with only newEntities + merges (no looks/scenes). Tool mode.
|
|
6
6
|
import { emptyDelta } from "../../../domain/ingest/serial-context.js";
|
|
7
7
|
import { NAME_FIX_SCHEMA } from "../schemas.js";
|
|
8
|
+
import { coerceJsonArray } from "./episode-assets.js";
|
|
8
9
|
export const NAME_FIX_SYSTEM = [
|
|
9
10
|
"你是剧本实体归一修复器。【已知设定】是已建立的实体登记(register)。下面【待归一名字】是正文里出现、但还没能对应到 register 里任何实体的名字。",
|
|
10
11
|
"对**每一个**待归一名字,判断它是不是 register 里某个已登记实体的另一种叫法:",
|
|
@@ -34,14 +35,13 @@ export async function runNameFix(executor, contextMd, names, signal) {
|
|
|
34
35
|
return { delta: nameFixToDelta(response.input), raw: JSON.stringify(response.input) };
|
|
35
36
|
}
|
|
36
37
|
const isObj = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
37
|
-
const arr = (v) => (Array.isArray(v) ? v : []);
|
|
38
38
|
const str = (v) => (typeof v === "string" ? v.trim() : "");
|
|
39
39
|
const KIND = new Set(["actor", "location", "prop"]);
|
|
40
40
|
export function nameFixToDelta(input) {
|
|
41
41
|
const d = emptyDelta();
|
|
42
42
|
if (!isObj(input))
|
|
43
43
|
return d;
|
|
44
|
-
for (const m of
|
|
44
|
+
for (const m of coerceJsonArray(input.merges, "merges")) {
|
|
45
45
|
if (!isObj(m))
|
|
46
46
|
continue;
|
|
47
47
|
const from = str(m.from);
|
|
@@ -49,14 +49,14 @@ export function nameFixToDelta(input) {
|
|
|
49
49
|
if (from && into && from !== into)
|
|
50
50
|
d.merges.push({ from, into });
|
|
51
51
|
}
|
|
52
|
-
for (const e of
|
|
52
|
+
for (const e of coerceJsonArray(input.newEntities, "newEntities")) {
|
|
53
53
|
if (!isObj(e))
|
|
54
54
|
continue;
|
|
55
55
|
const kind = str(e.kind);
|
|
56
56
|
const name = str(e.name);
|
|
57
57
|
if (!KIND.has(kind) || !name)
|
|
58
58
|
continue;
|
|
59
|
-
const aliases = [...new Set(
|
|
59
|
+
const aliases = [...new Set(coerceJsonArray(e.aliases, "newEntities.aliases").map(str).filter((a) => a && a !== name))];
|
|
60
60
|
d.newEntities.push({ name, kind: kind, description: str(e.description), aliases });
|
|
61
61
|
}
|
|
62
62
|
return d;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"name-fix.js","sourceRoot":"","sources":["../../../../src/llm/tasks/ingest/name-fix.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,mFAAmF;AACnF,iFAAiF;AACjF,gFAAgF;AAChF,iFAAiF;AAEjF,OAAO,EAAE,UAAU,EAAc,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"name-fix.js","sourceRoot":"","sources":["../../../../src/llm/tasks/ingest/name-fix.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,7 +39,7 @@ export async function commandIngest(opts, composition = PRODUCTION_LLM_COMPOSITI
|
|
|
39
39
|
});
|
|
40
40
|
const result = [
|
|
41
41
|
`workspace: ${report.workspacePath}`,
|
|
42
|
-
`${report.episodes} episodes → ${report.scriptPath}`,
|
|
42
|
+
`${report.episodes} episodes (${report.processed} processed / ${report.reused} reused) → ${report.scriptPath}`,
|
|
43
43
|
`assets: ${report.assets.actors} actors / ${report.assets.locations} locations / ${report.assets.props} props`,
|
|
44
44
|
];
|
|
45
45
|
return [{
|
|
@@ -48,6 +48,8 @@ export async function commandIngest(opts, composition = PRODUCTION_LLM_COMPOSITI
|
|
|
48
48
|
workspace: report.workspacePath,
|
|
49
49
|
script_path: report.scriptPath,
|
|
50
50
|
episodes: report.episodes,
|
|
51
|
+
processed: report.processed,
|
|
52
|
+
reused: report.reused,
|
|
51
53
|
assets: report.assets,
|
|
52
54
|
},
|
|
53
55
|
}, EXIT_OK];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/usecases/ingest/command.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,iFAAiF;AACjF,kFAAkF;AAElF,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAsB,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAuB,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,MAAM,KAAK,GAAG,CAAC,CAAU,EAAU,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF,MAAM,KAAK,GAAG,CAAC,CAAU,EAAE,QAAgB,EAAU,EAAE;IACrD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAU,EAAE,cAA8B,0BAA0B;IACtG,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,QAAQ,CAAC,0CAA0C,EAAE;YACvD,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,kBAAkB;YAC7B,IAAI,EAAE,2FAA2F;YACjG,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,0BAA0B,CAAC,EAAE;SACjD,CAAC,CAAC;IACX,CAAC;IACD,wEAAwE;IACxE,6EAA6E;IAC7E,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC;IACjF,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC;IAE3F,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YAClC,UAAU;YACV,aAAa;YACb,QAAQ;YACR,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1B,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC9B,CAAC,CAAC;QACH,MAAM,MAAM,GAAG;YACb,cAAc,MAAM,CAAC,aAAa,EAAE;YACpC,GAAG,MAAM,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/usecases/ingest/command.ts"],"names":[],"mappings":"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"}
|