@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,60 @@
|
|
|
1
|
+
// Pure manifest validation (shared by registry + conformance harness).
|
|
2
|
+
import { HOOK_NAMES, MODULE_API, SUPPORTED_MODULE_APIS, } from "./types.js";
|
|
3
|
+
/** Validate a parsed manifest enough to trust it in the registry. Returns the typed manifest or a
|
|
4
|
+
* reason string. We check the contract version, a name, and that every declared hook is known. */
|
|
5
|
+
export function validateManifest(raw) {
|
|
6
|
+
if (!raw || typeof raw !== "object")
|
|
7
|
+
return "manifest is not an object";
|
|
8
|
+
const m = raw;
|
|
9
|
+
if (!SUPPORTED_MODULE_APIS.has(String(m.api)))
|
|
10
|
+
return `unsupported api ${String(m.api)} (core speaks ${MODULE_API}, accepts ${[...SUPPORTED_MODULE_APIS].join(", ")})`;
|
|
11
|
+
if (typeof m.name !== "string" || !m.name)
|
|
12
|
+
return "manifest missing name";
|
|
13
|
+
if (typeof m.version !== "string" || !m.version)
|
|
14
|
+
return "manifest missing version";
|
|
15
|
+
if (!Array.isArray(m.hooks) || m.hooks.length === 0)
|
|
16
|
+
return "manifest declares no hooks";
|
|
17
|
+
const known = new Set(HOOK_NAMES);
|
|
18
|
+
const bad = m.hooks.filter((h) => !known.has(h));
|
|
19
|
+
if (bad.length)
|
|
20
|
+
return `manifest declares unknown hooks: ${bad.join(", ")}`;
|
|
21
|
+
if (m.finish_artifacts !== undefined) {
|
|
22
|
+
const fa = m.finish_artifacts;
|
|
23
|
+
if (!fa || typeof fa !== "object")
|
|
24
|
+
return "finish_artifacts is not an object";
|
|
25
|
+
const ok = fa.output_key;
|
|
26
|
+
if (!ok || typeof ok !== "object")
|
|
27
|
+
return "finish_artifacts.output_key missing";
|
|
28
|
+
if (ok.kind === "shot_named") {
|
|
29
|
+
if (typeof ok.filename !== "string" || !ok.filename)
|
|
30
|
+
return "finish_artifacts.output_key.filename missing";
|
|
31
|
+
}
|
|
32
|
+
else if (ok.kind === "append_suffix") {
|
|
33
|
+
if (typeof ok.suffix !== "string" || !ok.suffix)
|
|
34
|
+
return "finish_artifacts.output_key.suffix missing";
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
return `finish_artifacts.output_key.kind ${JSON.stringify(ok.kind)} unknown (shot_named | append_suffix)`;
|
|
38
|
+
}
|
|
39
|
+
if (fa.applied !== undefined) {
|
|
40
|
+
if (!Array.isArray(fa.applied))
|
|
41
|
+
return "finish_artifacts.applied is not an array";
|
|
42
|
+
for (const r of fa.applied) {
|
|
43
|
+
const rule = r;
|
|
44
|
+
if (!rule || typeof rule !== "object" || typeof rule.tag !== "string" || !rule.tag)
|
|
45
|
+
return "finish_artifacts.applied rule missing tag";
|
|
46
|
+
if (rule.when !== undefined) {
|
|
47
|
+
const w = rule.when;
|
|
48
|
+
if (!w || typeof w !== "object" || typeof w.knob !== "string" || !w.knob || w.equals === undefined)
|
|
49
|
+
return "finish_artifacts.applied rule has a malformed when clause";
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (m.keyframe_label !== undefined) {
|
|
55
|
+
if (typeof m.keyframe_label !== "string" || !m.keyframe_label.trim())
|
|
56
|
+
return "keyframe_label must be a non-empty string";
|
|
57
|
+
}
|
|
58
|
+
return m;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=manifest-validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest-validate.js","sourceRoot":"","sources":["../../src/modules/manifest-validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { type ConfigSchema, type HookCatalogEntry, type HookName, type InvokeContext, type InvokeRequest, type InvokeResponse, type PollRequest, type PollResponse, type CancelRequest, type CancelResponse, type ModulesResponse, type RegisteredModule, type RenderConfigProjection } from "./types.js";
|
|
2
|
+
import type { FetcherLike } from "../platform/types.js";
|
|
3
|
+
/** The env key naming the WfP dispatch-namespace binding. Excluded from the `MODULE_*` service scan
|
|
4
|
+
* (it is a DispatchNamespace, NOT a module Fetcher): the `isFetcher` guard already rejects it by shape
|
|
5
|
+
* (a namespace has `.get()`, not `.fetch()`), but the exclusion is made EXPLICIT so a future
|
|
6
|
+
* workers-types change can never accidentally enroll the namespace as a module (docs/module-dispatch
|
|
7
|
+
* section 6.3). */
|
|
8
|
+
export declare const DISPATCH_BINDING = "MODULE_DISPATCH";
|
|
9
|
+
/** The reserved prefix marking a `RegisteredModule.binding` ref as a WfP dispatch script rather than a
|
|
10
|
+
* service binding: `dispatch:<script-name>`. It cannot collide with a real `MODULE_*` env key, so the
|
|
11
|
+
* one `binding` string carries the module's transport through job state and resolveFetcher parses it. */
|
|
12
|
+
export declare const DISPATCH_REF_PREFIX = "dispatch:";
|
|
13
|
+
/** Build a dispatch binding ref from a namespace script name. */
|
|
14
|
+
export declare function dispatchRef(scriptName: string): string;
|
|
15
|
+
/** Resolve a module `binding` ref to a Fetcher, transport-aware. A `dispatch:<script>` ref resolves
|
|
16
|
+
* through the namespace binding (`MODULE_DISPATCH.get(script)`, which THROWS if the script is absent --
|
|
17
|
+
* guarded so a missing script becomes an honest null / ok:false degrade, never a core crash); any other
|
|
18
|
+
* ref is a service-binding env key. Returns null when the transport is unavailable (no namespace bound,
|
|
19
|
+
* script absent, or binding unbound), which every caller already treats as "module not reachable". This
|
|
20
|
+
* is the SINGLE resolution primitive: everything after "got a Fetcher" (the invoke/poll/cancel envelope)
|
|
21
|
+
* is identical for both transports (docs/module-dispatch.md 3.2). */
|
|
22
|
+
export declare function resolveFetcher(env: Record<string, unknown>, binding: string): FetcherLike | null;
|
|
23
|
+
/** The env keys that name module SERVICE bindings. Convention: `MODULE_<NAME>` service bindings;
|
|
24
|
+
* the dispatch-namespace binding is explicitly skipped (it is not a module, it is the transport to N). */
|
|
25
|
+
export declare function moduleBindingNames(env: Record<string, unknown>): string[];
|
|
26
|
+
/** Clamp + coerce a user's config values against a module's declared schema. Unknown keys are
|
|
27
|
+
* dropped; missing keys fall back to the field default; numbers are clamped to [min, max]; an
|
|
28
|
+
* out-of-set enum falls back to its default. The result is exactly what the core sends a module as
|
|
29
|
+
* `config`, so a module never has to defend against junk. (Mirrors the backend's forgiving
|
|
30
|
+
* config parsing: clamp, do not throw.) */
|
|
31
|
+
export declare function validateConfig(schema: ConfigSchema | undefined, user: Record<string, unknown> | undefined): Record<string, unknown>;
|
|
32
|
+
/** Index modules by the hook they serve, preserving `ui.order` (then name) within each hook so a
|
|
33
|
+
* chain hook folds in a stable, declared order. */
|
|
34
|
+
export declare function indexByHook(modules: RegisteredModule[]): Partial<Record<HookName, string[]>>;
|
|
35
|
+
/** The static hook catalog (every hook + its blurb + cardinality), independent of what is
|
|
36
|
+
* installed, so the frontend renders the pipeline panel as a projection of the contract. */
|
|
37
|
+
export declare function hookCatalog(): HookCatalogEntry[];
|
|
38
|
+
/** The GET /api/modules payload the frontend renders itself from. Modules are exposed as the PUBLIC
|
|
39
|
+
* view (no `binding`); the hook index keeps using names, so dispatch (which needs the binding) stays
|
|
40
|
+
* core-side off the registered modules, never the wire payload. */
|
|
41
|
+
/** Build the GET /api/modules projection. `render` (core-owned render config, e.g. quality tiers) is
|
|
42
|
+
* passed in by the route rather than imported here: it lives in render-module-config, which imports
|
|
43
|
+
* the registry, so taking it as a param keeps this module free of that back-edge. */
|
|
44
|
+
export declare function modulesResponse(modules: RegisteredModule[], render: RenderConfigProjection, host?: {
|
|
45
|
+
dispatch: boolean;
|
|
46
|
+
readonly?: boolean;
|
|
47
|
+
render?: {
|
|
48
|
+
available: boolean;
|
|
49
|
+
};
|
|
50
|
+
assistant?: {
|
|
51
|
+
model: string;
|
|
52
|
+
note: string;
|
|
53
|
+
};
|
|
54
|
+
}): ModulesResponse;
|
|
55
|
+
export declare function readManifest(binding: string, fetcher: FetcherLike): Promise<RegisteredModule | null>;
|
|
56
|
+
/** Test-only: drop the per-isolate discovery cache so a suite starts clean. */
|
|
57
|
+
export declare function _resetModuleDiscoveryCache(): void;
|
|
58
|
+
/** Discover the modules installed via Workers-for-Platforms dynamic dispatch: read the
|
|
59
|
+
* `installed_modules` D1 table (enabled rows), reconstruct each `RegisteredModule` from its stored,
|
|
60
|
+
* conformance-checked manifest, and tag it with its `dispatch` descriptor (the namespace analogue of
|
|
61
|
+
* `binding`). Gated on `env.MODULE_DISPATCH` (the namespace binding) being present: a deploy WITHOUT
|
|
62
|
+
* WfP short-circuits here and never touches D1, so non-WfP / self-host deploys pay ZERO overhead and
|
|
63
|
+
* behave exactly as before. ONE deliberate exception (#625): the public demo studio binds no
|
|
64
|
+
* namespace on purpose (its zero-spend proof is money bindings being ABSENT) but seeds
|
|
65
|
+
* `installed_modules` with captured real manifests so `/api/modules` projects the authentic catalog.
|
|
66
|
+
* Demo mode therefore reads the table too -- display-only by construction: AUTH_MODE=demo denies
|
|
67
|
+
* every mutation at the gate, and the seeded dispatch refs name scripts no namespace serves, so
|
|
68
|
+
* nothing discovered this way is invocable. Best-effort + total, like the service-binding scan: a
|
|
69
|
+
* D1 error or a drifted manifest row is logged and dropped, never crashes discovery.
|
|
70
|
+
* (docs/module-dispatch.md 3.1/3.4) */
|
|
71
|
+
export declare function discoverDispatchModules(env: Record<string, unknown>): Promise<RegisteredModule[]>;
|
|
72
|
+
/** Merge the service-binding registry with the dispatch registry into one list the pipeline +
|
|
73
|
+
* /api/modules consume. On a NAME collision (a module mid-migration that is both service-bound AND
|
|
74
|
+
* installed as a namespace upload -- allowed transiently, section 6.3), the service binding WINS (it
|
|
75
|
+
* is the deliberate, in-tree, deploy-tested one) and the dispatch duplicate is dropped with a warning.
|
|
76
|
+
* Deterministic + order-preserving: service entries first, then any dispatch-only entries. */
|
|
77
|
+
export declare function mergeRegistries(service: RegisteredModule[], dispatch: RegisteredModule[]): RegisteredModule[];
|
|
78
|
+
/** Discover every installed module: the `MODULE_*` service-binding scan (read each binding's manifest
|
|
79
|
+
* in parallel) MERGED with the WfP dispatch modules from D1 (discoverDispatchModules, a no-op unless
|
|
80
|
+
* MODULE_DISPATCH is bound). Both kinds land in ONE registry, agnostic to how each later resolves to a
|
|
81
|
+
* Fetcher. With `opts.cacheTtlMs > 0` the result is cached per-isolate for that many ms (the
|
|
82
|
+
* /api/modules route uses this); without it discovery runs fresh (the pipeline paths). `opts.nowMs` is
|
|
83
|
+
* injectable for tests. */
|
|
84
|
+
export declare function discoverModules(env: Record<string, unknown>, opts?: {
|
|
85
|
+
cacheTtlMs?: number;
|
|
86
|
+
nowMs?: number;
|
|
87
|
+
}): Promise<RegisteredModule[]>;
|
|
88
|
+
/** Look up the module binding that should answer a `pick_one` hook for a given choice (by module
|
|
89
|
+
* name), or the first registered for that hook when no choice is given. Returns null if none. */
|
|
90
|
+
export declare function resolvePickOne(modules: RegisteredModule[], hook: HookName, choice?: string): RegisteredModule | null;
|
|
91
|
+
/** The modules serving a hook, in the same `ui.order` then name order `indexByHook` uses, so a
|
|
92
|
+
* chain folds in the declared order and a pick_one default is the first. */
|
|
93
|
+
export declare function servingForHook(modules: RegisteredModule[], hook: HookName): RegisteredModule[];
|
|
94
|
+
/** Motion modules the cloud selectors may offer: declared (or defaulted) locality "cloud". */
|
|
95
|
+
export declare function cloudMotionModules(modules: RegisteredModule[]): RegisteredModule[];
|
|
96
|
+
/** Motion modules that render on hardware the operator controls (byo or local): the "gpu" lane of
|
|
97
|
+
* hybrid renders and the gpu bucket of progress counters. */
|
|
98
|
+
export declare function gpuDoorMotionModules(modules: RegisteredModule[]): RegisteredModule[];
|
|
99
|
+
/** The default gpu door when a render does not name one: the order-first byo module (the studio's
|
|
100
|
+
* canonical own-GPU render path), else the order-first local module (a local door is normally an
|
|
101
|
+
* explicit pick, so it only becomes the default when it is the ONLY gpu door). Undefined when no
|
|
102
|
+
* gpu door is installed -- callers fail honestly instead of submitting to a hardcoded name. */
|
|
103
|
+
export declare function defaultGpuDoorModule(modules: RegisteredModule[]): RegisteredModule | undefined;
|
|
104
|
+
/** Preflight for a FULL (non-keyframesOnly) render: the caller MUST name an explicit, serving
|
|
105
|
+
* motion.backend module. Relying on the registry's serving[0] default is the #500 trap -- it can
|
|
106
|
+
* silently land on a bound-but-non-operational module (e.g. an unseeded local door), so the film
|
|
107
|
+
* burns its keyframes then dies at assemble with "no clips rendered to assemble". Returns a
|
|
108
|
+
* novice-readable 400 message that names the problem AND lists the installed choices, or null when
|
|
109
|
+
* the choice resolves. keyframesOnly renders never call this (they have no motion leg). Pure +
|
|
110
|
+
* reusable so hStartFilm / scatter can adopt it once their callers always send a backend. */
|
|
111
|
+
export declare function motionBackendPreflightError(modules: RegisteredModule[], explicitChoice: string | undefined): string | null;
|
|
112
|
+
/** Strict schema check for a CALLER-SUPPLIED module config at the submit boundary (#577). The
|
|
113
|
+
* invoke-path clamp (validateConfig) is deliberately forgiving -- clamp, never throw -- which is
|
|
114
|
+
* right mid-pipeline but hides a caller's mistake at the API door: the bad value silently degrades
|
|
115
|
+
* to the field default, or (when the schema itself over-promised, the #577 trigger) sails through
|
|
116
|
+
* and fails at the provider only AFTER the keyframe phase has spent GPU time. Returns one
|
|
117
|
+
* violation string per bad key, each naming what IS allowed, or [] when the config is clean.
|
|
118
|
+
* Absent keys are fine (defaults apply); only what the caller actually sent is judged. */
|
|
119
|
+
export declare function configPreflightViolations(schema: ConfigSchema | undefined, user: Record<string, unknown> | undefined): string[];
|
|
120
|
+
/** Preflight the caller's raw motion config against the CHOSEN motion.backend's declared schema,
|
|
121
|
+
* BEFORE any keyframe dispatch (#577: film-c9c44dcc burned ~17min of final-tier keyframes before
|
|
122
|
+
* the motion phase rejected its resolution). Runs only when the backend name resolves -- an
|
|
123
|
+
* unresolved name is motionBackendPreflightError's problem, not this check's. Returns a
|
|
124
|
+
* novice-readable 400 message naming the module and every violation, or null when clean. */
|
|
125
|
+
export declare function motionConfigPreflightError(modules: RegisteredModule[], backendName: string | undefined, userConfig: Record<string, unknown> | undefined): string | null;
|
|
126
|
+
/** POST one module's `/invoke` and return its typed `InvokeResponse`. A module failure is DATA, never
|
|
127
|
+
* an exception: a non-200, a malformed body, or an unreachable binding all become `{ ok: false }`,
|
|
128
|
+
* so the core degrades instead of crashing (the contract's whole point). */
|
|
129
|
+
export declare function invokeModule<I = unknown, O = unknown>(fetcher: FetcherLike, request: InvokeRequest<I>): Promise<InvokeResponse<O>>;
|
|
130
|
+
/** POST a module's `/poll` to check an async job. A failure is DATA, like invoke. */
|
|
131
|
+
export declare function pollModule<O = unknown>(fetcher: FetcherLike, request: PollRequest): Promise<PollResponse<O>>;
|
|
132
|
+
/** POST a module's `/cancel` to STOP an in-flight async job, identified by the same poll token `/invoke`
|
|
133
|
+
* returned. A failure is DATA, like invoke/poll: a non-200, a malformed body, or an unreachable binding
|
|
134
|
+
* all become `{ ok: false }`, so the caller degrade-logs the orphan instead of crashing. Only call this
|
|
135
|
+
* on a module whose manifest advertises `cancelable` -- a module without /cancel would 404 here, which
|
|
136
|
+
* this surfaces honestly as `ok: false` (the caller then logs the orphan, never hides it). */
|
|
137
|
+
export declare function cancelModule(fetcher: FetcherLike, request: CancelRequest): Promise<CancelResponse>;
|
|
138
|
+
/** Invoke a module and resolve to a terminal result: a synchronous module returns its output; an
|
|
139
|
+
* async module returns `pending` and we poll its `/poll` until done (or the cap). NOTE: the polling
|
|
140
|
+
* runs in the caller's request, so this fits synchronous + SHORT async hooks. A long-running hook
|
|
141
|
+
* (cloud i2v that takes minutes) should be driven OUT of a request -- an orchestrator (Durable
|
|
142
|
+
* Object / cron) calling invokeModule + pollModule across requests -- so no Worker holds a long
|
|
143
|
+
* request open. */
|
|
144
|
+
export declare function awaitInvoke<I = unknown, O = unknown>(fetcher: FetcherLike, request: InvokeRequest<I>, opts?: {
|
|
145
|
+
pollMs?: number;
|
|
146
|
+
pollMax?: number;
|
|
147
|
+
}): Promise<{
|
|
148
|
+
ok: true;
|
|
149
|
+
output: O;
|
|
150
|
+
} | {
|
|
151
|
+
ok: false;
|
|
152
|
+
error: string;
|
|
153
|
+
}>;
|
|
154
|
+
/** Dispatch a `pick_one` hook: resolve the single serving module (honoring an optional `choice`),
|
|
155
|
+
* clamp the user's config against that module's schema, and invoke it. Returns `{ ok: false }` when
|
|
156
|
+
* no module serves the hook or its binding is missing -- the caller decides whether that is fatal. */
|
|
157
|
+
export declare function dispatchPickOne<I = unknown, O = unknown>(env: Record<string, unknown>, modules: RegisteredModule[], hook: HookName, input: I, context: InvokeContext, opts?: {
|
|
158
|
+
config?: Record<string, unknown>;
|
|
159
|
+
choice?: string;
|
|
160
|
+
}): Promise<{
|
|
161
|
+
ok: true;
|
|
162
|
+
output: O;
|
|
163
|
+
} | {
|
|
164
|
+
ok: false;
|
|
165
|
+
error: string;
|
|
166
|
+
}>;
|
|
167
|
+
/** The result of folding a `chain` hook over its serving modules. `output` is the last module's
|
|
168
|
+
* output (null if none ran), `applied` names the modules that succeeded in order, and `errors`
|
|
169
|
+
* records the ones that were skipped (a chain degrades past a failed module, it does not abort). */
|
|
170
|
+
export interface ChainResult<O> {
|
|
171
|
+
output: O | null;
|
|
172
|
+
applied: string[];
|
|
173
|
+
errors: string[];
|
|
174
|
+
degraded: string[];
|
|
175
|
+
}
|
|
176
|
+
/** Dispatch a `chain` hook: fold every serving module in `ui.order`, each consuming the previous
|
|
177
|
+
* module's output as its next input (mapped by `nextInput`, since a hook's output and input shapes
|
|
178
|
+
* differ), clamping each module's config against its own schema. A failed module is skipped
|
|
179
|
+
* (recorded in `errors`), not fatal -- the chain continues from the last good output. */
|
|
180
|
+
export declare function dispatchChain<I = unknown, O = unknown>(env: Record<string, unknown>, modules: RegisteredModule[], hook: HookName, seed: I, context: InvokeContext, opts: {
|
|
181
|
+
nextInput: (prevOutput: O, seed: I) => I | Promise<I>;
|
|
182
|
+
configFor?: (moduleName: string) => Record<string, unknown> | undefined;
|
|
183
|
+
}): Promise<ChainResult<O>>;
|
|
184
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/modules/registry.ts"],"names":[],"mappings":"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"}
|