@skyphusion-labs/vivijure-core 0.9.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/LICENSE +661 -0
- package/README.md +87 -0
- package/dist/audio-routing.d.ts +2 -0
- package/dist/audio-routing.d.ts.map +1 -0
- package/dist/audio-routing.js +4 -0
- package/dist/audio-routing.js.map +1 -0
- package/dist/audio-stage.d.ts +4 -0
- package/dist/audio-stage.d.ts.map +1 -0
- package/dist/audio-stage.js +25 -0
- package/dist/audio-stage.js.map +1 -0
- package/dist/beat-analyze.d.ts +22 -0
- package/dist/beat-analyze.d.ts.map +1 -0
- package/dist/beat-analyze.js +111 -0
- package/dist/beat-analyze.js.map +1 -0
- package/dist/beat-sync-types.d.ts +33 -0
- package/dist/beat-sync-types.d.ts.map +1 -0
- package/dist/beat-sync-types.js +4 -0
- package/dist/beat-sync-types.js.map +1 -0
- package/dist/bundle-assembler.d.ts +54 -0
- package/dist/bundle-assembler.d.ts.map +1 -0
- package/dist/bundle-assembler.js +376 -0
- package/dist/bundle-assembler.js.map +1 -0
- package/dist/bundle-durations.d.ts +5 -0
- package/dist/bundle-durations.d.ts.map +1 -0
- package/dist/bundle-durations.js +68 -0
- package/dist/bundle-durations.js.map +1 -0
- package/dist/bundle-storyboard.d.ts +11 -0
- package/dist/bundle-storyboard.d.ts.map +1 -0
- package/dist/bundle-storyboard.js +82 -0
- package/dist/bundle-storyboard.js.map +1 -0
- package/dist/captions.d.ts +25 -0
- package/dist/captions.d.ts.map +1 -0
- package/dist/captions.js +56 -0
- package/dist/captions.js.map +1 -0
- package/dist/cast-db.d.ts +61 -0
- package/dist/cast-db.d.ts.map +1 -0
- package/dist/cast-db.js +324 -0
- package/dist/cast-db.js.map +1 -0
- package/dist/cast-lora-train.d.ts +18 -0
- package/dist/cast-lora-train.d.ts.map +1 -0
- package/dist/cast-lora-train.js +215 -0
- package/dist/cast-lora-train.js.map +1 -0
- package/dist/cast-loras.d.ts +21 -0
- package/dist/cast-loras.d.ts.map +1 -0
- package/dist/cast-loras.js +69 -0
- package/dist/cast-loras.js.map +1 -0
- package/dist/clip-content-validate.d.ts +43 -0
- package/dist/clip-content-validate.d.ts.map +1 -0
- package/dist/clip-content-validate.js +115 -0
- package/dist/clip-content-validate.js.map +1 -0
- package/dist/clip-job-model.d.ts +42 -0
- package/dist/clip-job-model.d.ts.map +1 -0
- package/dist/clip-job-model.js +8 -0
- package/dist/clip-job-model.js.map +1 -0
- package/dist/clip-validate.d.ts +33 -0
- package/dist/clip-validate.d.ts.map +1 -0
- package/dist/clip-validate.js +247 -0
- package/dist/clip-validate.js.map +1 -0
- package/dist/d1-retry.d.ts +20 -0
- package/dist/d1-retry.d.ts.map +1 -0
- package/dist/d1-retry.js +67 -0
- package/dist/d1-retry.js.map +1 -0
- package/dist/db-env.d.ts +6 -0
- package/dist/db-env.d.ts.map +1 -0
- package/dist/db-env.js +2 -0
- package/dist/db-env.js.map +1 -0
- package/dist/dialogue-lines.d.ts +23 -0
- package/dist/dialogue-lines.d.ts.map +1 -0
- package/dist/dialogue-lines.js +84 -0
- package/dist/dialogue-lines.js.map +1 -0
- package/dist/film-advance-lease.d.ts +9 -0
- package/dist/film-advance-lease.d.ts.map +1 -0
- package/dist/film-advance-lease.js +19 -0
- package/dist/film-advance-lease.js.map +1 -0
- package/dist/film-model.d.ts +415 -0
- package/dist/film-model.d.ts.map +1 -0
- package/dist/film-model.js +541 -0
- package/dist/film-model.js.map +1 -0
- package/dist/film-orchestrator.d.ts +216 -0
- package/dist/film-orchestrator.d.ts.map +1 -0
- package/dist/film-orchestrator.js +2204 -0
- package/dist/film-orchestrator.js.map +1 -0
- package/dist/film-render-bridge.d.ts +26 -0
- package/dist/film-render-bridge.d.ts.map +1 -0
- package/dist/film-render-bridge.js +176 -0
- package/dist/film-render-bridge.js.map +1 -0
- package/dist/finish-hash.d.ts +10 -0
- package/dist/finish-hash.d.ts.map +1 -0
- package/dist/finish-hash.js +60 -0
- package/dist/finish-hash.js.map +1 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/key-safety.d.ts +5 -0
- package/dist/key-safety.d.ts.map +1 -0
- package/dist/key-safety.js +23 -0
- package/dist/key-safety.js.map +1 -0
- package/dist/lora-bundle.d.ts +19 -0
- package/dist/lora-bundle.d.ts.map +1 -0
- package/dist/lora-bundle.js +75 -0
- package/dist/lora-bundle.js.map +1 -0
- package/dist/lora-keys.d.ts +2 -0
- package/dist/lora-keys.d.ts.map +1 -0
- package/dist/lora-keys.js +4 -0
- package/dist/lora-keys.js.map +1 -0
- package/dist/modules/conformance.d.ts +58 -0
- package/dist/modules/conformance.d.ts.map +1 -0
- package/dist/modules/conformance.js +369 -0
- package/dist/modules/conformance.js.map +1 -0
- package/dist/modules/manifest-validate.d.ts +5 -0
- package/dist/modules/manifest-validate.d.ts.map +1 -0
- package/dist/modules/manifest-validate.js +60 -0
- package/dist/modules/manifest-validate.js.map +1 -0
- package/dist/modules/registry.d.ts +184 -0
- package/dist/modules/registry.d.ts.map +1 -0
- package/dist/modules/registry.js +653 -0
- package/dist/modules/registry.js.map +1 -0
- package/dist/modules/render-pipeline.d.ts +38 -0
- package/dist/modules/render-pipeline.d.ts.map +1 -0
- package/dist/modules/render-pipeline.js +40 -0
- package/dist/modules/render-pipeline.js.map +1 -0
- package/dist/modules/types.d.ts +544 -0
- package/dist/modules/types.d.ts.map +1 -0
- package/dist/modules/types.js +57 -0
- package/dist/modules/types.js.map +1 -0
- package/dist/operator-config.d.ts +20 -0
- package/dist/operator-config.d.ts.map +1 -0
- package/dist/operator-config.js +85 -0
- package/dist/operator-config.js.map +1 -0
- package/dist/output-extract.d.ts +8 -0
- package/dist/output-extract.d.ts.map +1 -0
- package/dist/output-extract.js +129 -0
- package/dist/output-extract.js.map +1 -0
- package/dist/planner-prompt.d.ts +12 -0
- package/dist/planner-prompt.d.ts.map +1 -0
- package/dist/planner-prompt.js +337 -0
- package/dist/planner-prompt.js.map +1 -0
- package/dist/planner-yaml.d.ts +15 -0
- package/dist/planner-yaml.d.ts.map +1 -0
- package/dist/planner-yaml.js +157 -0
- package/dist/planner-yaml.js.map +1 -0
- package/dist/platform/fetcher.d.ts +3 -0
- package/dist/platform/fetcher.d.ts.map +1 -0
- package/dist/platform/fetcher.js +7 -0
- package/dist/platform/fetcher.js.map +1 -0
- package/dist/platform/index.d.ts +6 -0
- package/dist/platform/index.d.ts.map +1 -0
- package/dist/platform/index.js +5 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/platform/object-store-r2.d.ts +26 -0
- package/dist/platform/object-store-r2.d.ts.map +1 -0
- package/dist/platform/object-store-r2.js +74 -0
- package/dist/platform/object-store-r2.js.map +1 -0
- package/dist/platform/orchestrator-context.d.ts +20 -0
- package/dist/platform/orchestrator-context.d.ts.map +1 -0
- package/dist/platform/orchestrator-context.js +28 -0
- package/dist/platform/orchestrator-context.js.map +1 -0
- package/dist/platform/r2-types.d.ts +41 -0
- package/dist/platform/r2-types.d.ts.map +1 -0
- package/dist/platform/r2-types.js +3 -0
- package/dist/platform/r2-types.js.map +1 -0
- package/dist/platform/types.d.ts +90 -0
- package/dist/platform/types.d.ts.map +1 -0
- package/dist/platform/types.js +23 -0
- package/dist/platform/types.js.map +1 -0
- package/dist/preflight.d.ts +57 -0
- package/dist/preflight.d.ts.map +1 -0
- package/dist/preflight.js +243 -0
- package/dist/preflight.js.map +1 -0
- package/dist/presign.d.ts +5 -0
- package/dist/presign.d.ts.map +1 -0
- package/dist/presign.js +24 -0
- package/dist/presign.js.map +1 -0
- package/dist/public-id.d.ts +8 -0
- package/dist/public-id.d.ts.map +1 -0
- package/dist/public-id.js +25 -0
- package/dist/public-id.js.map +1 -0
- package/dist/render-adopt.d.ts +3 -0
- package/dist/render-adopt.d.ts.map +1 -0
- package/dist/render-adopt.js +92 -0
- package/dist/render-adopt.js.map +1 -0
- package/dist/render-log.d.ts +25 -0
- package/dist/render-log.d.ts.map +1 -0
- package/dist/render-log.js +139 -0
- package/dist/render-log.js.map +1 -0
- package/dist/render-module-config.d.ts +28 -0
- package/dist/render-module-config.d.ts.map +1 -0
- package/dist/render-module-config.js +124 -0
- package/dist/render-module-config.js.map +1 -0
- package/dist/render-mux.d.ts +18 -0
- package/dist/render-mux.d.ts.map +1 -0
- package/dist/render-mux.js +69 -0
- package/dist/render-mux.js.map +1 -0
- package/dist/render-orchestrator.d.ts +71 -0
- package/dist/render-orchestrator.d.ts.map +1 -0
- package/dist/render-orchestrator.js +376 -0
- package/dist/render-orchestrator.js.map +1 -0
- package/dist/render-sweep.d.ts +5 -0
- package/dist/render-sweep.d.ts.map +1 -0
- package/dist/render-sweep.js +62 -0
- package/dist/render-sweep.js.map +1 -0
- package/dist/renders-db.d.ts +129 -0
- package/dist/renders-db.d.ts.map +1 -0
- package/dist/renders-db.js +752 -0
- package/dist/renders-db.js.map +1 -0
- package/dist/runpod-submit.d.ts +151 -0
- package/dist/runpod-submit.d.ts.map +1 -0
- package/dist/runpod-submit.js +469 -0
- package/dist/runpod-submit.js.map +1 -0
- package/dist/runpod-types.d.ts +2 -0
- package/dist/runpod-types.d.ts.map +1 -0
- package/dist/runpod-types.js +4 -0
- package/dist/runpod-types.js.map +1 -0
- package/dist/scatter-notify.d.ts +4 -0
- package/dist/scatter-notify.d.ts.map +1 -0
- package/dist/scatter-notify.js +43 -0
- package/dist/scatter-notify.js.map +1 -0
- package/dist/scatter-orchestrator-types.d.ts +56 -0
- package/dist/scatter-orchestrator-types.d.ts.map +1 -0
- package/dist/scatter-orchestrator-types.js +3 -0
- package/dist/scatter-orchestrator-types.js.map +1 -0
- package/dist/scatter-orchestrator.d.ts +70 -0
- package/dist/scatter-orchestrator.d.ts.map +1 -0
- package/dist/scatter-orchestrator.js +614 -0
- package/dist/scatter-orchestrator.js.map +1 -0
- package/dist/scatter.d.ts +35 -0
- package/dist/scatter.d.ts.map +1 -0
- package/dist/scatter.js +171 -0
- package/dist/scatter.js.map +1 -0
- package/dist/secret-store.d.ts +5 -0
- package/dist/secret-store.d.ts.map +1 -0
- package/dist/secret-store.js +19 -0
- package/dist/secret-store.js.map +1 -0
- package/dist/shot-durations-parse.d.ts +3 -0
- package/dist/shot-durations-parse.d.ts.map +1 -0
- package/dist/shot-durations-parse.js +43 -0
- package/dist/shot-durations-parse.js.map +1 -0
- package/dist/srt.d.ts +11 -0
- package/dist/srt.d.ts.map +1 -0
- package/dist/srt.js +54 -0
- package/dist/srt.js.map +1 -0
- package/dist/storyboard-ids.d.ts +2 -0
- package/dist/storyboard-ids.d.ts.map +1 -0
- package/dist/storyboard-ids.js +12 -0
- package/dist/storyboard-ids.js.map +1 -0
- package/dist/storyboard-projects-db.d.ts +31 -0
- package/dist/storyboard-projects-db.d.ts.map +1 -0
- package/dist/storyboard-projects-db.js +153 -0
- package/dist/storyboard-projects-db.js.map +1 -0
- package/dist/storyboard-validate.d.ts +72 -0
- package/dist/storyboard-validate.d.ts.map +1 -0
- package/dist/storyboard-validate.js +595 -0
- package/dist/storyboard-validate.js.map +1 -0
- package/dist/structured-events.d.ts +6 -0
- package/dist/structured-events.d.ts.map +1 -0
- package/dist/structured-events.js +15 -0
- package/dist/structured-events.js.map +1 -0
- package/dist/tar.d.ts +9 -0
- package/dist/tar.d.ts.map +1 -0
- package/dist/tar.js +151 -0
- package/dist/tar.js.map +1 -0
- package/dist/voices.d.ts +12 -0
- package/dist/voices.d.ts.map +1 -0
- package/dist/voices.js +37 -0
- package/dist/voices.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
// Storyboard YAML emitter (v0.28.0).
|
|
2
|
+
//
|
|
3
|
+
// Pure, no runtime dep. Emits the storyboard.yaml the vivijure-serverless
|
|
4
|
+
// worker reads, from a StoryboardValidated produced by validateStoryboard.
|
|
5
|
+
// All string values are double-quoted unconditionally to avoid edge cases
|
|
6
|
+
// (colons inside scene prompts, quote characters, backslashes, newlines,
|
|
7
|
+
// leading whitespace). The schema is small and fixed, so a general-purpose
|
|
8
|
+
// YAML library is not needed; PyYAML on the GPU worker parses the output.
|
|
9
|
+
//
|
|
10
|
+
// Output ordering matches storyboard.example.yaml so a human can diff
|
|
11
|
+
// emitted vs hand-authored files without reordering noise.
|
|
12
|
+
export { parseShotDurations } from "./shot-durations-parse.js";
|
|
13
|
+
function escapeForDoubleQuoted(s) {
|
|
14
|
+
return s
|
|
15
|
+
.replace(/\\/g, "\\\\")
|
|
16
|
+
.replace(/"/g, '\\"')
|
|
17
|
+
.replace(/\n/g, "\\n")
|
|
18
|
+
.replace(/\r/g, "\\r")
|
|
19
|
+
.replace(/\t/g, "\\t");
|
|
20
|
+
}
|
|
21
|
+
function quote(s) {
|
|
22
|
+
return `"${escapeForDoubleQuoted(s)}"`;
|
|
23
|
+
}
|
|
24
|
+
// Flow-style sequence for slot lists. SlotId values are single letters
|
|
25
|
+
// A-D, so no escaping or quoting is required.
|
|
26
|
+
function emitSlotList(slots) {
|
|
27
|
+
return `[${slots.join(", ")}]`;
|
|
28
|
+
}
|
|
29
|
+
function emitScene(scene) {
|
|
30
|
+
const lines = [];
|
|
31
|
+
// First key carries the `- ` block-sequence marker; subsequent keys are
|
|
32
|
+
// indented to align under it.
|
|
33
|
+
lines.push(` - prompt: ${quote(scene.prompt)}`);
|
|
34
|
+
const inner = " ";
|
|
35
|
+
if (scene.id !== undefined)
|
|
36
|
+
lines.push(`${inner}id: ${quote(scene.id)}`);
|
|
37
|
+
if (scene.character_slots !== undefined) {
|
|
38
|
+
lines.push(`${inner}character_slots: ${emitSlotList(scene.character_slots)}`);
|
|
39
|
+
}
|
|
40
|
+
if (scene.act !== undefined)
|
|
41
|
+
lines.push(`${inner}act: ${quote(scene.act)}`);
|
|
42
|
+
if (scene.start !== undefined)
|
|
43
|
+
lines.push(`${inner}start: ${scene.start}`);
|
|
44
|
+
if (scene.end !== undefined)
|
|
45
|
+
lines.push(`${inner}end: ${scene.end}`);
|
|
46
|
+
if (scene.target_seconds !== undefined) {
|
|
47
|
+
lines.push(`${inner}target_seconds: ${scene.target_seconds}`);
|
|
48
|
+
}
|
|
49
|
+
if (scene.start_image !== undefined) {
|
|
50
|
+
lines.push(`${inner}start_image: ${quote(scene.start_image)}`);
|
|
51
|
+
}
|
|
52
|
+
// Per-shot dialogue (issue #307). validateStoryboard preserves scene.dialogue { slot, text };
|
|
53
|
+
// dropping it here is what made dialogue-bearing bundles serialize a SILENT storyboard.yaml.
|
|
54
|
+
// Nested mapping so the line round-trips faithfully (slot is a single-letter SlotId, no quoting
|
|
55
|
+
// needed; text is quoted like every other free string). Absent dialogue emits nothing.
|
|
56
|
+
if (scene.dialogue !== undefined) {
|
|
57
|
+
lines.push(`${inner}dialogue:`);
|
|
58
|
+
lines.push(`${inner} slot: ${scene.dialogue.slot}`);
|
|
59
|
+
lines.push(`${inner} text: ${quote(scene.dialogue.text)}`);
|
|
60
|
+
}
|
|
61
|
+
return lines;
|
|
62
|
+
}
|
|
63
|
+
/** Extract { shot_id, prompt, seconds } from an emitted storyboard.yaml. */
|
|
64
|
+
export function parseStoryboardScenes(yaml, defaultSeconds = 4) {
|
|
65
|
+
const out = [];
|
|
66
|
+
let inScenes = false;
|
|
67
|
+
let idx = 0;
|
|
68
|
+
let curId = null;
|
|
69
|
+
let curPrompt = null;
|
|
70
|
+
let curTarget = null;
|
|
71
|
+
let curDlgSlot = null;
|
|
72
|
+
let curDlgText = null;
|
|
73
|
+
const flush = () => {
|
|
74
|
+
if (idx === 0 || !curPrompt)
|
|
75
|
+
return;
|
|
76
|
+
const shot = curId || `shot_${String(idx).padStart(2, "0")}`;
|
|
77
|
+
const scene = {
|
|
78
|
+
shot_id: shot,
|
|
79
|
+
prompt: curPrompt,
|
|
80
|
+
seconds: curTarget !== null && curTarget > 0 ? curTarget : defaultSeconds,
|
|
81
|
+
};
|
|
82
|
+
if (curDlgSlot && curDlgText)
|
|
83
|
+
scene.dialogue = { slot: curDlgSlot, text: curDlgText };
|
|
84
|
+
out.push(scene);
|
|
85
|
+
};
|
|
86
|
+
for (const line of yaml.split(/\r?\n/)) {
|
|
87
|
+
if (!inScenes) {
|
|
88
|
+
if (/^scenes:\s*$/.test(line))
|
|
89
|
+
inScenes = true;
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
const promptM = line.match(/^ {2}- prompt: "((?:[^"\\]|\\.)*)"\s*$/);
|
|
93
|
+
if (promptM) {
|
|
94
|
+
flush();
|
|
95
|
+
idx++;
|
|
96
|
+
curId = null;
|
|
97
|
+
curTarget = null;
|
|
98
|
+
curDlgSlot = null;
|
|
99
|
+
curDlgText = null;
|
|
100
|
+
curPrompt = promptM[1].replace(/\\(.)/g, "$1");
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
const idM = line.match(/^ {4}id:\s*"((?:[^"\\]|\\.)*)"\s*$/);
|
|
104
|
+
if (idM) {
|
|
105
|
+
curId = idM[1].replace(/\\(.)/g, "$1");
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
const tsM = line.match(/^ {4}target_seconds:\s*([0-9]+(?:\.[0-9]+)?)\s*$/);
|
|
109
|
+
if (tsM) {
|
|
110
|
+
curTarget = parseFloat(tsM[1]);
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
// Per-shot dialogue block (#313 round-trip of emitScene): ` dialogue:` then ` slot: X` +
|
|
114
|
+
// ` text: "..."` at 6-space indent. slot is an unquoted SlotId; text is double-quoted/escaped.
|
|
115
|
+
const dlgSlotM = line.match(/^ {6}slot:\s*([A-Za-z0-9_]+)\s*$/);
|
|
116
|
+
if (dlgSlotM) {
|
|
117
|
+
curDlgSlot = dlgSlotM[1];
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const dlgTextM = line.match(/^ {6}text:\s*"((?:[^"\\]|\\.)*)"\s*$/);
|
|
121
|
+
if (dlgTextM) {
|
|
122
|
+
curDlgText = dlgTextM[1].replace(/\\(.)/g, "$1");
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
flush();
|
|
126
|
+
return out;
|
|
127
|
+
}
|
|
128
|
+
export function serializeStoryboardYaml(value) {
|
|
129
|
+
const lines = [];
|
|
130
|
+
lines.push(`title: ${quote(value.title)}`);
|
|
131
|
+
lines.push(`full_prompt: ${quote(value.full_prompt)}`);
|
|
132
|
+
if (value.duration_seconds !== undefined) {
|
|
133
|
+
lines.push(`duration_seconds: ${value.duration_seconds}`);
|
|
134
|
+
}
|
|
135
|
+
if (value.clip_seconds !== undefined) {
|
|
136
|
+
lines.push(`clip_seconds: ${value.clip_seconds}`);
|
|
137
|
+
}
|
|
138
|
+
lines.push(`style_prefix: ${quote(value.style_prefix)}`);
|
|
139
|
+
// style_category / style_preset are always emitted (validator forces
|
|
140
|
+
// them to a string, defaulting to the literal "None" the renderer keys
|
|
141
|
+
// its disable path on).
|
|
142
|
+
lines.push(`style_category: ${quote(value.style_category)}`);
|
|
143
|
+
lines.push(`style_preset: ${quote(value.style_preset)}`);
|
|
144
|
+
lines.push(`use_characters: ${emitSlotList(value.use_characters)}`);
|
|
145
|
+
lines.push(`cast_rules: ${quote(value.cast_rules)}`);
|
|
146
|
+
if (value.refs_dir !== undefined) {
|
|
147
|
+
lines.push(`refs_dir: ${quote(value.refs_dir)}`);
|
|
148
|
+
}
|
|
149
|
+
lines.push("scenes:");
|
|
150
|
+
for (const scene of value.scenes) {
|
|
151
|
+
for (const sceneLine of emitScene(scene)) {
|
|
152
|
+
lines.push(sceneLine);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return lines.join("\n") + "\n";
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=planner-yaml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planner-yaml.js","sourceRoot":"","sources":["../src/planner-yaml.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../../src/platform/fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAKxD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../../src/platform/fetcher.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,SAAS,CAAC,CAAU;IAClC,IAAI,CAAC,IAAI,OAAQ,CAAyB,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAChE,OAAO,CAAgB,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { PLATFORM_ICD_VERSION, platformAsEnv, type Database, type FetcherLike, type ModuleTransport, type ObjectHead, type ObjectPresigner, type ObjectStore, type Platform, type PreparedStatement, type RateLimiter, type RateLimitResult, type Scheduler, type SecretStore, } from "./types.js";
|
|
2
|
+
export type { R2Bucket, R2GetOptions, R2ListResult, R2ListedObject, R2ObjectBody, } from "./r2-types.js";
|
|
3
|
+
export { ObjectStoreR2Bucket, wrapR2Bucket } from "./object-store-r2.js";
|
|
4
|
+
export { asFetcher } from "./fetcher.js";
|
|
5
|
+
export { orchestratorContextFromPlatform, noopExecutionContext, type OrchestratorEnv, type Env, type ExecutionContext, } from "./orchestrator-context.js";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/platform/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,YAAY,GACb,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EACL,+BAA+B,EAC/B,oBAAoB,EACpB,KAAK,eAAe,EACpB,KAAK,GAAG,EACR,KAAK,gBAAgB,GACtB,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { PLATFORM_ICD_VERSION, platformAsEnv, } from "./types.js";
|
|
2
|
+
export { ObjectStoreR2Bucket, wrapR2Bucket } from "./object-store-r2.js";
|
|
3
|
+
export { asFetcher } from "./fetcher.js";
|
|
4
|
+
export { orchestratorContextFromPlatform, noopExecutionContext, } from "./orchestrator-context.js";
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/platform/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,aAAa,GAad,MAAM,YAAY,CAAC;AAUpB,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EACL,+BAA+B,EAC/B,oBAAoB,GAIrB,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ObjectStore } from "./types.js";
|
|
2
|
+
import type { R2Bucket, R2GetOptions, R2ListResult, R2ObjectBody } from "./r2-types.js";
|
|
3
|
+
type StoreWithRange = ObjectStore & {
|
|
4
|
+
getRange?(key: string, offset: number, length: number): Promise<Uint8Array | null>;
|
|
5
|
+
};
|
|
6
|
+
export declare class ObjectStoreR2Bucket implements R2Bucket {
|
|
7
|
+
private readonly store;
|
|
8
|
+
constructor(store: StoreWithRange);
|
|
9
|
+
get(key: string, opts?: R2GetOptions): Promise<R2ObjectBody | null>;
|
|
10
|
+
put(key: string, value: string | Uint8Array | ArrayBuffer | R2ObjectBody, opts?: {
|
|
11
|
+
httpMetadata?: {
|
|
12
|
+
contentType?: string;
|
|
13
|
+
};
|
|
14
|
+
customMetadata?: Record<string, string>;
|
|
15
|
+
}): Promise<void>;
|
|
16
|
+
head(key: string): Promise<import("./types.js").ObjectHead | null>;
|
|
17
|
+
delete(key: string): Promise<void>;
|
|
18
|
+
list(opts: {
|
|
19
|
+
prefix: string;
|
|
20
|
+
cursor?: string;
|
|
21
|
+
limit?: number;
|
|
22
|
+
}): Promise<R2ListResult>;
|
|
23
|
+
}
|
|
24
|
+
export declare function wrapR2Bucket(store: ObjectStore): R2Bucket;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=object-store-r2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-store-r2.d.ts","sourceRoot":"","sources":["../../src/platform/object-store-r2.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAiBxF,KAAK,cAAc,GAAG,WAAW,GAAG;IAClC,QAAQ,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;CACpF,CAAC;AAEF,qBAAa,mBAAoB,YAAW,QAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAlC,YAA6B,KAAK,EAAE,cAAc,EAAI;IAEhD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CASxE;IAEK,GAAG,CACP,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,YAAY,EACvD,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE;YAAE,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAC1F,OAAO,CAAC,IAAI,CAAC,CASf;IAEK,IAAI,CAAC,GAAG,EAAE,MAAM,mDAErB;IAEK,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvC;IAEK,IAAI,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAmB3F;CACF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,QAAQ,CAEzD"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// R2-shaped bucket API over platform ObjectStore (Workers R2 compatibility layer).
|
|
2
|
+
function toBody(bytes) {
|
|
3
|
+
return {
|
|
4
|
+
body: bytes,
|
|
5
|
+
async text() {
|
|
6
|
+
return new TextDecoder().decode(bytes);
|
|
7
|
+
},
|
|
8
|
+
async json() {
|
|
9
|
+
return JSON.parse(new TextDecoder().decode(bytes));
|
|
10
|
+
},
|
|
11
|
+
async arrayBuffer() {
|
|
12
|
+
return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export class ObjectStoreR2Bucket {
|
|
17
|
+
store;
|
|
18
|
+
constructor(store) {
|
|
19
|
+
this.store = store;
|
|
20
|
+
}
|
|
21
|
+
async get(key, opts) {
|
|
22
|
+
if (opts?.range && this.store.getRange) {
|
|
23
|
+
const slice = await this.store.getRange(key, opts.range.offset, opts.range.length);
|
|
24
|
+
if (!slice)
|
|
25
|
+
return null;
|
|
26
|
+
return toBody(slice);
|
|
27
|
+
}
|
|
28
|
+
const buf = await this.store.get(key);
|
|
29
|
+
if (!buf)
|
|
30
|
+
return null;
|
|
31
|
+
return toBody(new Uint8Array(buf));
|
|
32
|
+
}
|
|
33
|
+
async put(key, value, opts) {
|
|
34
|
+
let payload;
|
|
35
|
+
if (typeof value === "object" && value !== null && "body" in value) {
|
|
36
|
+
payload = value.body;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
payload = value;
|
|
40
|
+
}
|
|
41
|
+
// customMetadata is R2-only hygiene; ObjectStore adapters may ignore it.
|
|
42
|
+
await this.store.put(key, payload, opts ? { httpMetadata: opts.httpMetadata } : undefined);
|
|
43
|
+
}
|
|
44
|
+
async head(key) {
|
|
45
|
+
return this.store.head(key);
|
|
46
|
+
}
|
|
47
|
+
async delete(key) {
|
|
48
|
+
await this.store.delete(key);
|
|
49
|
+
}
|
|
50
|
+
async list(opts) {
|
|
51
|
+
if (!this.store.list) {
|
|
52
|
+
return { objects: [], truncated: false };
|
|
53
|
+
}
|
|
54
|
+
const keys = (await this.store.list(opts.prefix)).keys;
|
|
55
|
+
const start = opts.cursor ? Number(opts.cursor) || 0 : 0;
|
|
56
|
+
const limit = opts.limit ?? 1000;
|
|
57
|
+
const slice = keys.slice(start, start + limit);
|
|
58
|
+
const objects = [];
|
|
59
|
+
for (const key of slice) {
|
|
60
|
+
const h = await this.store.head(key);
|
|
61
|
+
objects.push({ key, uploaded: h?.uploaded ?? new Date(0) });
|
|
62
|
+
}
|
|
63
|
+
const truncated = start + limit < keys.length;
|
|
64
|
+
return {
|
|
65
|
+
objects,
|
|
66
|
+
truncated,
|
|
67
|
+
cursor: truncated ? String(start + limit) : undefined,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export function wrapR2Bucket(store) {
|
|
72
|
+
return new ObjectStoreR2Bucket(store);
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=object-store-r2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-store-r2.js","sourceRoot":"","sources":["../../src/platform/object-store-r2.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Database, ObjectPresigner, Platform } from "./types.js";
|
|
2
|
+
import type { R2Bucket } from "./r2-types.js";
|
|
3
|
+
/** Minimal ExecutionContext shim (poll bookkeeping uses waitUntil best-effort). */
|
|
4
|
+
export interface ExecutionContext {
|
|
5
|
+
waitUntil(promise: Promise<unknown>): void;
|
|
6
|
+
}
|
|
7
|
+
export declare const noopExecutionContext: ExecutionContext;
|
|
8
|
+
export interface OrchestratorEnv {
|
|
9
|
+
DB: Database;
|
|
10
|
+
R2_RENDERS: R2Bucket;
|
|
11
|
+
R2: R2Bucket;
|
|
12
|
+
PRESIGNER: ObjectPresigner;
|
|
13
|
+
/** Plain config vars (FILM_CLIP_DURATION_FLOOR, VPC bindings, etc.). */
|
|
14
|
+
[key: string]: unknown;
|
|
15
|
+
}
|
|
16
|
+
/** Alias for upstream `import type { Env } from "./env"` at port sites. */
|
|
17
|
+
export type Env = OrchestratorEnv;
|
|
18
|
+
/** Build orchestrator env from Platform (no host VPC injection). */
|
|
19
|
+
export declare function orchestratorContextFromPlatform(platform: Platform): OrchestratorEnv;
|
|
20
|
+
//# sourceMappingURL=orchestrator-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator-context.d.ts","sourceRoot":"","sources":["../../src/platform/orchestrator-context.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,mFAAmF;AACnF,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CAC5C;AAED,eAAO,MAAM,oBAAoB,EAAE,gBAIlC,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,QAAQ,CAAC;IACb,UAAU,EAAE,QAAQ,CAAC;IACrB,EAAE,EAAE,QAAQ,CAAC;IACb,SAAS,EAAE,eAAe,CAAC;IAC3B,wEAAwE;IACxE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,2EAA2E;AAC3E,MAAM,MAAM,GAAG,GAAG,eAAe,CAAC;AAElC,oEAAoE;AACpE,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAenF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Orchestrator context: Platform -> env-shaped bag for ported vivijure orchestration.
|
|
2
|
+
// Hosts may inject VPC fetchers and other bindings after this builder runs.
|
|
3
|
+
import { platformAsEnv } from "./types.js";
|
|
4
|
+
import { wrapR2Bucket } from "./object-store-r2.js";
|
|
5
|
+
export const noopExecutionContext = {
|
|
6
|
+
waitUntil(promise) {
|
|
7
|
+
void promise.catch((e) => console.warn("waitUntil failed:", e));
|
|
8
|
+
},
|
|
9
|
+
};
|
|
10
|
+
/** Build orchestrator env from Platform (no host VPC injection). */
|
|
11
|
+
export function orchestratorContextFromPlatform(platform) {
|
|
12
|
+
const env = platformAsEnv(platform);
|
|
13
|
+
env.DB = platform.db;
|
|
14
|
+
env.R2_RENDERS = wrapR2Bucket(platform.renders);
|
|
15
|
+
env.R2 = wrapR2Bucket(platform.chatBucket);
|
|
16
|
+
env.PRESIGNER = platform.presigner;
|
|
17
|
+
for (const [key, value] of Object.entries(platform.vars)) {
|
|
18
|
+
if (value !== undefined)
|
|
19
|
+
env[key] = value;
|
|
20
|
+
}
|
|
21
|
+
if (platform.hostBindings) {
|
|
22
|
+
for (const [key, fetcher] of Object.entries(platform.hostBindings)) {
|
|
23
|
+
env[key] = fetcher;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return env;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=orchestrator-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator-context.js","sourceRoot":"","sources":["../../src/platform/orchestrator-context.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,4EAA4E;AAG5E,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAOpD,MAAM,CAAC,MAAM,oBAAoB,GAAqB;IACpD,SAAS,CAAC,OAAO;QACf,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;CACF,CAAC;AAcF,oEAAoE;AACpE,MAAM,UAAU,+BAA+B,CAAC,QAAkB;IAChE,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAoB,CAAC;IACvD,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;IACrB,GAAG,CAAC,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChD,GAAG,CAAC,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC3C,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;IACnC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzD,IAAI,KAAK,KAAK,SAAS;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC5C,CAAC;IACD,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACnE,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { ObjectHead } from "./types.js";
|
|
2
|
+
export interface R2ObjectBody {
|
|
3
|
+
text(): Promise<string>;
|
|
4
|
+
json<T = unknown>(): Promise<T>;
|
|
5
|
+
arrayBuffer(): Promise<ArrayBuffer>;
|
|
6
|
+
body: Uint8Array;
|
|
7
|
+
}
|
|
8
|
+
export interface R2ListedObject {
|
|
9
|
+
key: string;
|
|
10
|
+
uploaded: Date;
|
|
11
|
+
}
|
|
12
|
+
export interface R2ListResult {
|
|
13
|
+
objects: R2ListedObject[];
|
|
14
|
+
truncated: boolean;
|
|
15
|
+
cursor?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface R2GetOptions {
|
|
18
|
+
range?: {
|
|
19
|
+
offset: number;
|
|
20
|
+
length: number;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export interface R2Bucket {
|
|
24
|
+
get(key: string, opts?: R2GetOptions): Promise<R2ObjectBody | null>;
|
|
25
|
+
put(key: string, value: string | Uint8Array | ArrayBuffer | R2ObjectBody, opts?: {
|
|
26
|
+
httpMetadata?: {
|
|
27
|
+
contentType?: string;
|
|
28
|
+
};
|
|
29
|
+
customMetadata?: Record<string, string>;
|
|
30
|
+
}): Promise<void>;
|
|
31
|
+
head(key: string): Promise<(ObjectHead & {
|
|
32
|
+
etag?: string;
|
|
33
|
+
}) | null>;
|
|
34
|
+
list(opts: {
|
|
35
|
+
prefix: string;
|
|
36
|
+
cursor?: string;
|
|
37
|
+
limit?: number;
|
|
38
|
+
}): Promise<R2ListResult>;
|
|
39
|
+
delete(key: string): Promise<void>;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=r2-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"r2-types.d.ts","sourceRoot":"","sources":["../../src/platform/r2-types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,IAAI,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAChC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IACpC,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACpE,GAAG,CACD,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,YAAY,EACvD,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE;YAAE,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAC1F,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,UAAU,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACpE,IAAI,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACvF,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"r2-types.js","sourceRoot":"","sources":["../../src/platform/r2-types.ts"],"names":[],"mappings":"AAAA,uEAAuE"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/** Frozen host-adapter contract version (Phase 3). */
|
|
2
|
+
export declare const PLATFORM_ICD_VERSION = 1;
|
|
3
|
+
/** D1-shaped prepared statement (subset used by vivijure DB helpers). */
|
|
4
|
+
export interface PreparedStatement {
|
|
5
|
+
bind(...values: unknown[]): PreparedStatement;
|
|
6
|
+
first<T = unknown>(column?: string): Promise<T | null>;
|
|
7
|
+
run(): Promise<{
|
|
8
|
+
success: boolean;
|
|
9
|
+
meta?: {
|
|
10
|
+
changes?: number;
|
|
11
|
+
last_row_id?: number;
|
|
12
|
+
};
|
|
13
|
+
}>;
|
|
14
|
+
all<T = unknown>(): Promise<{
|
|
15
|
+
results: T[];
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
18
|
+
/** D1-shaped database handle. */
|
|
19
|
+
export interface Database {
|
|
20
|
+
prepare(query: string): PreparedStatement;
|
|
21
|
+
batch?(statements: PreparedStatement[]): Promise<unknown[]>;
|
|
22
|
+
}
|
|
23
|
+
/** R2-shaped object metadata. */
|
|
24
|
+
export interface ObjectHead {
|
|
25
|
+
size: number;
|
|
26
|
+
etag?: string;
|
|
27
|
+
uploaded?: Date;
|
|
28
|
+
httpMetadata?: {
|
|
29
|
+
contentType?: string;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/** R2-shaped object store (renders bucket + optional chat bucket alias). */
|
|
33
|
+
export interface ObjectStore {
|
|
34
|
+
get(key: string): Promise<ArrayBuffer | null>;
|
|
35
|
+
put(key: string, value: ArrayBuffer | Uint8Array | string, opts?: {
|
|
36
|
+
httpMetadata?: {
|
|
37
|
+
contentType?: string;
|
|
38
|
+
};
|
|
39
|
+
}): Promise<void>;
|
|
40
|
+
head(key: string): Promise<ObjectHead | null>;
|
|
41
|
+
delete(key: string): Promise<void>;
|
|
42
|
+
list?(prefix: string): Promise<{
|
|
43
|
+
keys: string[];
|
|
44
|
+
}>;
|
|
45
|
+
}
|
|
46
|
+
/** Presigned URL minting for CPU containers and modules (r2-presign.ts parity). */
|
|
47
|
+
export interface ObjectPresigner {
|
|
48
|
+
presignGet(key: string, expiresSec?: number): Promise<string>;
|
|
49
|
+
presignPut(key: string, contentType: string, expiresSec?: number): Promise<string>;
|
|
50
|
+
}
|
|
51
|
+
export interface SecretStore {
|
|
52
|
+
get(name: string): Promise<string | undefined>;
|
|
53
|
+
}
|
|
54
|
+
/** Service-binding-shaped module transport (registry.resolveFetcher parity). */
|
|
55
|
+
export interface FetcherLike {
|
|
56
|
+
fetch(input: Request | string, init?: RequestInit): Promise<Response>;
|
|
57
|
+
}
|
|
58
|
+
export interface ModuleTransport {
|
|
59
|
+
resolve(binding: string): FetcherLike | null;
|
|
60
|
+
listBindings(): string[];
|
|
61
|
+
}
|
|
62
|
+
export interface RateLimitResult {
|
|
63
|
+
success: boolean;
|
|
64
|
+
}
|
|
65
|
+
export interface RateLimiter {
|
|
66
|
+
limit(key: string): Promise<RateLimitResult>;
|
|
67
|
+
}
|
|
68
|
+
export interface Scheduler {
|
|
69
|
+
start(): void;
|
|
70
|
+
stop(): void;
|
|
71
|
+
}
|
|
72
|
+
/** Aggregated platform surface passed into ported vivijure handlers. */
|
|
73
|
+
export interface Platform {
|
|
74
|
+
db: Database;
|
|
75
|
+
renders: ObjectStore;
|
|
76
|
+
/** Chat-side bucket; may alias renders store locally. */
|
|
77
|
+
chatBucket: ObjectStore;
|
|
78
|
+
presigner: ObjectPresigner;
|
|
79
|
+
secrets: SecretStore;
|
|
80
|
+
modules: ModuleTransport;
|
|
81
|
+
rateLimiter?: RateLimiter;
|
|
82
|
+
scheduler?: Scheduler;
|
|
83
|
+
/** Plain config vars (AUTH_MODE, spend knobs, etc.). */
|
|
84
|
+
vars: Record<string, string | undefined>;
|
|
85
|
+
/** Optional host-only service bindings (e.g. Node HTTP VPC shims). Merged into orchestrator context. */
|
|
86
|
+
hostBindings?: Record<string, FetcherLike>;
|
|
87
|
+
}
|
|
88
|
+
/** Build a Record<string, unknown> env bag for code not yet ported off env-rec pattern. */
|
|
89
|
+
export declare function platformAsEnv(platform: Platform): Record<string, unknown>;
|
|
90
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/platform/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Platform abstractions for vivijure-local.
|
|
2
|
+
//
|
|
3
|
+
// Designed for extraction into vivijure-core@2.x (Option A). Cloudflare Env becomes
|
|
4
|
+
// CloudflarePlatform; this repo implements NodePlatform. Keep this file free of Node-only imports
|
|
5
|
+
// so it can lift into the shared package unchanged.
|
|
6
|
+
//
|
|
7
|
+
// ICD: docs/PLATFORM.md -- bump PLATFORM_ICD_VERSION on breaking changes.
|
|
8
|
+
/** Frozen host-adapter contract version (Phase 3). */
|
|
9
|
+
export const PLATFORM_ICD_VERSION = 1;
|
|
10
|
+
/** Build a Record<string, unknown> env bag for code not yet ported off env-rec pattern. */
|
|
11
|
+
export function platformAsEnv(platform) {
|
|
12
|
+
const env = { ...platform.vars };
|
|
13
|
+
env.DB = platform.db;
|
|
14
|
+
env.R2_RENDERS = platform.renders;
|
|
15
|
+
env.R2 = platform.chatBucket;
|
|
16
|
+
for (const binding of platform.modules.listBindings()) {
|
|
17
|
+
const fetcher = platform.modules.resolve(binding);
|
|
18
|
+
if (fetcher)
|
|
19
|
+
env[binding] = fetcher;
|
|
20
|
+
}
|
|
21
|
+
return env;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/platform/types.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,EAAE;AACF,oFAAoF;AACpF,kGAAkG;AAClG,oDAAoD;AACpD,EAAE;AACF,0EAA0E;AAE1E,sDAAsD;AACtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAuFtC,2FAA2F;AAC3F,MAAM,UAAU,aAAa,CAAC,QAAkB;IAC9C,MAAM,GAAG,GAA4B,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC1D,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;IACrB,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC;IAClC,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC;IAC7B,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,OAAO;YAAE,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACtC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export type PreflightLevel = "error" | "warning" | "info";
|
|
2
|
+
export interface PreflightIssue {
|
|
3
|
+
level: PreflightLevel;
|
|
4
|
+
scope: string;
|
|
5
|
+
message: string;
|
|
6
|
+
}
|
|
7
|
+
interface SceneLike {
|
|
8
|
+
id?: string;
|
|
9
|
+
prompt?: string;
|
|
10
|
+
character_slots?: string[];
|
|
11
|
+
target_seconds?: number;
|
|
12
|
+
act?: string;
|
|
13
|
+
}
|
|
14
|
+
interface StoryboardLike {
|
|
15
|
+
title?: string;
|
|
16
|
+
use_characters?: string[];
|
|
17
|
+
clip_seconds?: number;
|
|
18
|
+
scenes?: SceneLike[];
|
|
19
|
+
}
|
|
20
|
+
interface CastMemberLike {
|
|
21
|
+
id: number;
|
|
22
|
+
name: string;
|
|
23
|
+
portrait_key?: string | null;
|
|
24
|
+
ref_keys?: Array<{
|
|
25
|
+
key: string;
|
|
26
|
+
}>;
|
|
27
|
+
}
|
|
28
|
+
export declare function checkStoryboardShape(storyboard: StoryboardLike): PreflightIssue[];
|
|
29
|
+
export declare function checkCastBindingsReady(bindings: Record<string, number> | null | undefined, catalog: CastMemberLike[], keyframeLabel?: string): PreflightIssue[];
|
|
30
|
+
interface CastIdRow {
|
|
31
|
+
id: number;
|
|
32
|
+
public_id?: string | null;
|
|
33
|
+
}
|
|
34
|
+
export interface ResolvedCastBindings {
|
|
35
|
+
resolved: Record<string, number>;
|
|
36
|
+
unresolved: PreflightIssue[];
|
|
37
|
+
}
|
|
38
|
+
export declare function resolveCastBindings(bindings: Record<string, unknown> | null | undefined, catalog: CastIdRow[]): ResolvedCastBindings;
|
|
39
|
+
interface DurationGridLike {
|
|
40
|
+
fps?: number;
|
|
41
|
+
tiers?: Record<string, {
|
|
42
|
+
max_frames?: number;
|
|
43
|
+
}>;
|
|
44
|
+
}
|
|
45
|
+
export declare function checkDurationGrid(storyboard: StoryboardLike, grid: DurationGridLike | null | undefined, quality: string | null | undefined, backendName?: string, floorFraction?: number): PreflightIssue[];
|
|
46
|
+
export interface PreflightResult {
|
|
47
|
+
ok: boolean;
|
|
48
|
+
counts: {
|
|
49
|
+
error: number;
|
|
50
|
+
warning: number;
|
|
51
|
+
info: number;
|
|
52
|
+
};
|
|
53
|
+
issues: PreflightIssue[];
|
|
54
|
+
}
|
|
55
|
+
export declare function summarize(issues: PreflightIssue[]): PreflightResult;
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=preflight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,SAAS;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnC;AAMD,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,cAAc,GAAG,cAAc,EAAE,CAmEjF;AAOD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,EACnD,OAAO,EAAE,cAAc,EAAE,EAGzB,aAAa,SAAS,GACrB,cAAc,EAAE,CAuClB;AAgBD,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IAEnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACpD,OAAO,EAAE,SAAS,EAAE,GACnB,oBAAoB,CAsDtB;AASD,UAAU,gBAAgB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,cAAc,EAC1B,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,EACzC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAClC,WAAW,SAAgC,EAM3C,aAAa,CAAC,EAAE,MAAM,GACrB,cAAc,EAAE,CAwClB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,eAAe,CAQnE"}
|