@field/cascade 0.8.0 → 0.11.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/AGENTS.md +36 -3
- package/CHANGELOG.md +401 -0
- package/DESIGN.md +14 -0
- package/README.md +41 -26
- package/dist/assets/CodeEditor-4O7FQ__R.js +623 -0
- package/dist/assets/CodePanel-BU-autmq.js +2 -0
- package/dist/assets/{CustomNodeDialog-BQbEhIwL.js → CustomNodeDialog-BRpDfOV5.js} +1 -1
- package/dist/assets/OpenGraphDialog-BwbRlC0X.js +1 -0
- package/dist/assets/ProjectSettings-DLOXLxcA.js +2 -0
- package/dist/assets/SettingsDialog-Bz8JxISH.js +1 -0
- package/dist/assets/{VersionHistoryDialog-D6VBzSQ0.js → VersionHistoryDialog-D5Z0nJ5-.js} +2 -2
- package/dist/assets/{core-BInLG4gw.js → core-Yqi0Ni61.js} +8 -8
- package/dist/assets/{cssMode-DfR2qmYG.js → cssMode-CxUzc4vp.js} +1 -1
- package/dist/assets/definitions-GreEMXLV.js +1 -0
- package/dist/assets/{editor.api-Ck8_vgQV.js → editor.api-BNFb25CX.js} +1 -1
- package/dist/assets/{freemarker2-fVn10Wn3.js → freemarker2-0ZDnWxeM.js} +1 -1
- package/dist/assets/geo-u0n_jOsD.js +1 -0
- package/dist/assets/{handlebars-BCSchLT2.js → handlebars-Cy18MoaD.js} +1 -1
- package/dist/assets/{html-CVpSv_k9.js → html-B-2Dx7nq.js} +1 -1
- package/dist/assets/{htmlMode-Da4ESTv0.js → htmlMode-DUAc9B_d.js} +1 -1
- package/dist/assets/{image-BLn--oSF.js → image-cAa-Nu9O.js} +3 -3
- package/dist/assets/index-5ZtDAuy2.js +220 -0
- package/dist/assets/index-7vae6YFC.css +1 -0
- package/dist/assets/index-client-DqYmKstU.js +1 -0
- package/dist/assets/{javascript-BpX0Gvcf.js → javascript-DeQsDqP5.js} +1 -1
- package/dist/assets/{jsonMode-CsLqaou7.js → jsonMode-BiFwJVSk.js} +1 -1
- package/dist/assets/legacy-CTEeXeqF.js +2 -0
- package/dist/assets/{liquid-efUz51Wf.js → liquid-BLoHH68a.js} +1 -1
- package/dist/assets/{lspLanguageFeatures-DCi5-K0n.js → lspLanguageFeatures-CNFgm1Kv.js} +1 -1
- package/dist/assets/math-DioIQOPJ.js +1 -0
- package/dist/assets/{mdx-DP_sjGVy.js → mdx-CFXQVNfs.js} +1 -1
- package/dist/assets/pop-DC_TQG9t.js +1 -0
- package/dist/assets/{python-aAuP3LUi.js → python-Cf7S7p2E.js} +1 -1
- package/dist/assets/{razor-7M6sMmC5.js → razor-CMHBcG-g.js} +1 -1
- package/dist/assets/studioScenes-8sq9FfFg.js +1 -0
- package/dist/assets/{tsMode-Bf4CnoYK.js → tsMode-BEih0GDj.js} +1 -1
- package/dist/assets/{typescript-ddhYBGyT.js → typescript-COEKYD_a.js} +1 -1
- package/dist/assets/{workers-X5la8DDT.js → workers-BNhAhMNn.js} +1 -1
- package/dist/assets/{xml-BzbXa3Ps.js → xml-CPiMpnPl.js} +1 -1
- package/dist/assets/{yaml-CXs-VzxL.js → yaml-Bgp1ITLR.js} +1 -1
- package/dist/cli/Graph-ZJJTRQTM.js +2975 -0
- package/dist/cli/chunk-2KXB47FP.js +115 -0
- package/dist/cli/chunk-35D343DC.js +1447 -0
- package/dist/cli/chunk-36P5K3SD.js +631 -0
- package/dist/cli/chunk-3JTJHF7V.js +267 -0
- package/dist/cli/chunk-4UDFYF5G.js +132 -0
- package/dist/cli/chunk-53NMBJAO.js +35 -0
- package/dist/cli/chunk-A4OAMOZH.js +310 -0
- package/dist/cli/chunk-BIJO5OFS.js +71 -0
- package/dist/cli/chunk-BP7UKF36.js +376 -0
- package/dist/cli/chunk-CKS2FQWR.js +89 -0
- package/dist/cli/chunk-CO22XHNG.js +593 -0
- package/dist/cli/chunk-D6BUOHUG.js +634 -0
- package/dist/cli/chunk-DEQSEFFH.js +153 -0
- package/dist/cli/chunk-DUIUFVU2.js +241 -0
- package/dist/cli/chunk-EUIAC3U3.js +3006 -0
- package/dist/cli/chunk-FCDXJ6EK.js +2208 -0
- package/dist/cli/chunk-GFS6W3C5.js +308 -0
- package/dist/cli/chunk-HFHWYL55.js +139 -0
- package/dist/cli/chunk-HSNOBIVT.js +263 -0
- package/dist/cli/chunk-ICH7N5PN.js +26 -0
- package/dist/cli/chunk-J7VK7MNF.js +418 -0
- package/dist/cli/chunk-KH4MUBKF.js +1551 -0
- package/dist/cli/chunk-MIIEFUGG.js +623 -0
- package/dist/cli/chunk-OWWBYLHC.js +136 -0
- package/dist/cli/chunk-POMMNKZZ.js +672 -0
- package/dist/cli/chunk-QBBKRNGY.js +90 -0
- package/dist/cli/chunk-QQPA2ZHH.js +273 -0
- package/dist/cli/chunk-RLCAJBVR.js +224 -0
- package/dist/cli/chunk-RQZ4SX5R.js +1125 -0
- package/dist/cli/chunk-RUU3YWXU.js +99 -0
- package/dist/cli/chunk-RXDIMXN5.js +98 -0
- package/dist/cli/chunk-SGJAET2L.js +197 -0
- package/dist/cli/chunk-VVGSLVSF.js +151 -0
- package/dist/cli/chunk-WD62JIP6.js +118 -0
- package/dist/cli/chunk-WIH4TEIS.js +104 -0
- package/dist/cli/chunk-WKURDVYP.js +1119 -0
- package/dist/cli/chunk-WPUDGEFY.js +20 -0
- package/dist/cli/chunk-XWDSKG7N.js +1301 -0
- package/dist/cli/chunk-YAT5Y25U.js +121 -0
- package/dist/cli/chunk-ZL4JTG5Y.js +37 -0
- package/dist/cli/cliCommands-UQSFGEHF.js +3464 -0
- package/dist/cli/commands-Q23M26QM.js +1292 -0
- package/dist/cli/definitions-HF2FTHYU.js +32 -0
- package/dist/cli/doctorCommand-B7BPQMN6.js +76 -0
- package/dist/cli/edit-JHCPTQFT.js +28 -0
- package/dist/cli/editorCommands-UIF5YLUZ.js +33 -0
- package/dist/cli/encode-HAUZTYPT.js +17 -0
- package/dist/cli/frames-LSAUBZ7P.js +16 -0
- package/dist/cli/geo-4RNK3QVN.js +43 -0
- package/dist/cli/graphCommands-6BMAKGQE.js +184 -0
- package/dist/cli/graphFile-VPSQ6OF7.js +286 -0
- package/dist/cli/headlessCanvas-5XLDZT7M.js +15 -0
- package/dist/cli/helpCommand-3VRE3KVO.js +155 -0
- package/dist/cli/index.js +106 -14207
- package/dist/cli/math-ZRMLKU2D.js +16 -0
- package/dist/cli/mcp-ZLEEMYGF.js +164 -0
- package/dist/cli/parity-KINARCP2.js +328 -0
- package/dist/cli/pop-USDFXB7H.js +39 -0
- package/dist/cli/project-K3QIPGBB.js +12 -0
- package/dist/cli/projectDefinition-DMTZN2NE.js +27 -0
- package/dist/cli/projectRuntime-Z5PJOH47.js +48 -0
- package/dist/cli/registerStandardNodes-S2VLMF6J.js +3081 -0
- package/dist/cli/render-YURAPPUI.js +436 -0
- package/dist/cli/runCommand-PI764LEG.js +198 -0
- package/dist/cli/runner-RA6UKEPD.js +37 -0
- package/dist/cli/runtime/image.ts +277 -0
- package/dist/cli/runtime/stage.ts +74 -11
- package/dist/cli/stageRunner-KUNIMQKJ.js +10 -0
- package/dist/cli/verbs-RCE3K4VQ.js +19 -0
- package/dist/cli/webBuild-GT4PZT5D.js +37 -0
- package/dist/contracts/bundle.d.ts +75 -0
- package/dist/contracts/bundle.js +112 -0
- package/dist/contracts/definition.d.ts +67 -4
- package/dist/contracts/document.d.ts +29 -0
- package/dist/contracts/documentFormat.d.ts +18 -0
- package/dist/contracts/documentFormat.js +195 -0
- package/dist/contracts/editor.d.ts +189 -0
- package/dist/contracts/editor.js +2 -0
- package/dist/contracts/index.d.ts +3 -0
- package/dist/contracts/index.js +3 -0
- package/dist/contracts/validate.js +59 -3
- package/dist/contracts/values.d.ts +3 -3
- package/dist/contracts/values.js +1 -0
- package/dist/image.d.ts +141 -0
- package/dist/image.js +127 -0
- package/dist/index.html +4 -4
- package/dist/player/app.js +17 -5
- package/dist/player/editor.js +1919 -0
- package/dist/player/editorEngine.js +477 -0
- package/dist/runtime/builtins/core/bundle.d.ts +70 -0
- package/dist/runtime/builtins/core/bundle.js +81 -0
- package/dist/runtime/builtins/core/index.d.ts +3 -2
- package/dist/runtime/builtins/core/index.js +6 -2
- package/dist/runtime/builtins/core/routing.d.ts +27 -0
- package/dist/runtime/builtins/core/routing.js +28 -0
- package/dist/runtime/builtins/headless.d.ts +19 -0
- package/dist/runtime/builtins/headless.js +25 -0
- package/dist/runtime/builtins/image/contactSheet.d.ts +226 -0
- package/dist/runtime/builtins/image/contactSheet.js +199 -0
- package/dist/runtime/builtins/image/index.d.ts +9 -0
- package/dist/runtime/builtins/image/index.js +9 -0
- package/dist/runtime/edit/document.d.ts +94 -0
- package/dist/runtime/edit/document.js +194 -0
- package/dist/runtime/edit/graphEditor.d.ts +223 -0
- package/dist/runtime/edit/graphEditor.js +893 -0
- package/dist/runtime/edit/index.d.ts +12 -0
- package/dist/runtime/edit/index.js +6 -0
- package/dist/runtime/edit/layout.d.ts +50 -0
- package/dist/runtime/edit/layout.js +126 -0
- package/dist/runtime/edit/operations.d.ts +65 -0
- package/dist/runtime/edit/operations.js +57 -0
- package/dist/runtime/edit/parameters.d.ts +75 -0
- package/dist/runtime/edit/parameters.js +284 -0
- package/dist/runtime/edit/read.d.ts +35 -0
- package/dist/runtime/edit/read.js +65 -0
- package/dist/runtime/editor/index.d.ts +104 -0
- package/dist/runtime/editor/index.js +439 -0
- package/dist/runtime/expressions/bundlePaths.d.ts +37 -0
- package/dist/runtime/expressions/bundlePaths.js +55 -0
- package/dist/runtime/expressions/index.d.ts +2 -0
- package/dist/runtime/expressions/index.js +1 -0
- package/dist/runtime/index.d.ts +2 -0
- package/dist/runtime/index.js +2 -0
- package/dist/runtime/params/animator.d.ts +5 -0
- package/dist/runtime/params/animator.js +16 -0
- package/dist/runtime/runtime.js +238 -12
- package/dist/runtime/seed.d.ts +29 -0
- package/dist/runtime/seed.js +52 -0
- package/dist/runtime/types.d.ts +12 -0
- package/dist/stage.js +43 -9
- package/dist/studio/panel.d.ts +2 -0
- package/doc/CLI_REFERENCE.md +171 -0
- package/doc/EDITOR_EXPORT.md +235 -0
- package/doc/HEADLESS_GPU.md +27 -0
- package/doc/MCP.md +69 -0
- package/doc/NODE_REFERENCE.md +208 -0
- package/doc/PROJECT_AUTHORING.md +258 -1
- package/package.json +29 -8
- package/dist/assets/CodeEditor-BEk-kIBd.js +0 -623
- package/dist/assets/CodePanel-CeSdjXkg.js +0 -2
- package/dist/assets/ExportDialog-CjTbbTZJ.js +0 -358
- package/dist/assets/ExportDialog-DOq0flMV.css +0 -1
- package/dist/assets/OpenGraphDialog-DCwH9itM.js +0 -1
- package/dist/assets/ProjectSettings-Dg7M5xt9.js +0 -2
- package/dist/assets/SettingsDialog-e7GgsjB9.js +0 -1
- package/dist/assets/definitions-DZpOjWKR.js +0 -1
- package/dist/assets/geo-D2VPjAdt.js +0 -1
- package/dist/assets/index-CMiBdEuT.js +0 -212
- package/dist/assets/index-DMIuml9a.css +0 -1
- package/dist/assets/index-client-BI2H82FJ.js +0 -1
- package/dist/assets/legacy-ZA7textG.js +0 -2
- package/dist/assets/math-B6hpxPJO.js +0 -1
- package/dist/assets/pop-CYUIjT6x.js +0 -1
- package/dist/assets/projectSettingsApi-C1WvIwfP.js +0 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {
|
|
2
|
+
registerDefinitionNodes
|
|
3
|
+
} from "./chunk-SGJAET2L.js";
|
|
4
|
+
import "./chunk-FCDXJ6EK.js";
|
|
5
|
+
import "./chunk-RUU3YWXU.js";
|
|
6
|
+
import {
|
|
7
|
+
mathNodeRegistrations
|
|
8
|
+
} from "./chunk-QQPA2ZHH.js";
|
|
9
|
+
import "./chunk-GFS6W3C5.js";
|
|
10
|
+
import "./chunk-HFHWYL55.js";
|
|
11
|
+
import "./chunk-CO22XHNG.js";
|
|
12
|
+
import "./chunk-BIJO5OFS.js";
|
|
13
|
+
|
|
14
|
+
// src/nodes/math/index.ts
|
|
15
|
+
registerDefinitionNodes(mathNodeRegistrations, {});
|
|
16
|
+
//# sourceMappingURL=math-ZRMLKU2D.js.map
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import {
|
|
2
|
+
captureEnvelope
|
|
3
|
+
} from "./chunk-CKS2FQWR.js";
|
|
4
|
+
import {
|
|
5
|
+
mcpTools
|
|
6
|
+
} from "./chunk-POMMNKZZ.js";
|
|
7
|
+
|
|
8
|
+
// src/cli/mcp.ts
|
|
9
|
+
import { spawn } from "node:child_process";
|
|
10
|
+
import { statSync } from "node:fs";
|
|
11
|
+
import path from "node:path";
|
|
12
|
+
import readline from "node:readline";
|
|
13
|
+
var PROTOCOL_VERSION = "2025-06-18";
|
|
14
|
+
var PROJECT_PARAMETER = {
|
|
15
|
+
type: "string",
|
|
16
|
+
description: "Project directory for this call (absolute, or relative to the server's). Default: the directory the server was started in. Graph and output paths stay inside it."
|
|
17
|
+
};
|
|
18
|
+
var withProject = (schema) => ({
|
|
19
|
+
...schema,
|
|
20
|
+
properties: { ...schema.properties ?? {}, project: PROJECT_PARAMETER }
|
|
21
|
+
});
|
|
22
|
+
var TOOLS = mcpTools().map(({ verb, tool }) => ({
|
|
23
|
+
name: tool.name,
|
|
24
|
+
description: tool.description,
|
|
25
|
+
inputSchema: withProject(tool.inputSchema),
|
|
26
|
+
verb: verb.name,
|
|
27
|
+
run: toolRunner(tool.call)
|
|
28
|
+
}));
|
|
29
|
+
function contextForCall(args, server) {
|
|
30
|
+
const { project, ...rest } = args;
|
|
31
|
+
if (project === void 0 || project === null || project === "") return { args: rest, context: server };
|
|
32
|
+
if (typeof project !== "string") throw new Error("project must be a path to a project directory");
|
|
33
|
+
const root = path.resolve(server.root, project);
|
|
34
|
+
let directory = false;
|
|
35
|
+
try {
|
|
36
|
+
directory = statSync(root).isDirectory();
|
|
37
|
+
} catch {
|
|
38
|
+
}
|
|
39
|
+
if (!directory) throw new Error(`project ${project} is not a directory (resolved to ${root})`);
|
|
40
|
+
return { args: rest, context: server.forProject ? server.forProject(root) : createMcpContext(root) };
|
|
41
|
+
}
|
|
42
|
+
function toolRunner(call) {
|
|
43
|
+
switch (call.kind) {
|
|
44
|
+
case "edit":
|
|
45
|
+
return async (args, server) => {
|
|
46
|
+
const { applyEdits } = await import("./graphCommands-6BMAKGQE.js");
|
|
47
|
+
return captureEnvelope(() => applyEdits(server.resolve(args.graph), call.operations(args), { json: true, dryRun: args.dryRun === true }));
|
|
48
|
+
};
|
|
49
|
+
case "graph":
|
|
50
|
+
return async (args, server) => {
|
|
51
|
+
const { runGraphCommand } = await import("./graphCommands-6BMAKGQE.js");
|
|
52
|
+
return captureEnvelope(() => runGraphCommand(call.argv(args, (file) => server.resolve(file)), { json: true }));
|
|
53
|
+
};
|
|
54
|
+
case "cli":
|
|
55
|
+
return (args, server) => server.cli(call.argv(args, (file) => server.resolve(file)), call.timeoutMs?.(args));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async function runMcpServer(args, version) {
|
|
59
|
+
const root = path.resolve(args.find((arg) => !arg.startsWith("-")) ?? ".");
|
|
60
|
+
console.log = console.error;
|
|
61
|
+
console.info = console.error;
|
|
62
|
+
const context = createMcpContext(root);
|
|
63
|
+
let queue = Promise.resolve();
|
|
64
|
+
const send = (message) => process.stdout.write(`${JSON.stringify(message)}
|
|
65
|
+
`);
|
|
66
|
+
const lines = readline.createInterface({ input: process.stdin });
|
|
67
|
+
lines.on("line", (line) => {
|
|
68
|
+
if (!line.trim()) return;
|
|
69
|
+
let message;
|
|
70
|
+
try {
|
|
71
|
+
message = JSON.parse(line);
|
|
72
|
+
} catch {
|
|
73
|
+
send({ jsonrpc: "2.0", id: null, error: { code: -32700, message: "Parse error" } });
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
queue = queue.then(() => handle(message, context, version)).then((response) => {
|
|
77
|
+
if (response !== void 0 && message.id !== void 0) send({ jsonrpc: "2.0", id: message.id, ...response });
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
await new Promise((resolve) => lines.on("close", resolve));
|
|
81
|
+
await queue;
|
|
82
|
+
}
|
|
83
|
+
function createMcpContext(root) {
|
|
84
|
+
return {
|
|
85
|
+
root,
|
|
86
|
+
resolve(file) {
|
|
87
|
+
const resolved = path.resolve(root, file);
|
|
88
|
+
const relative = path.relative(root, resolved);
|
|
89
|
+
if (relative.startsWith("..") || path.isAbsolute(relative)) throw new Error(`${file} is outside the project directory ${root}`);
|
|
90
|
+
return resolved;
|
|
91
|
+
},
|
|
92
|
+
cli: (cliArgs, timeoutMs) => runCliChild(root, cliArgs, timeoutMs ?? 10 * 6e4)
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
async function handle(message, context, version) {
|
|
96
|
+
switch (message.method) {
|
|
97
|
+
case "initialize":
|
|
98
|
+
return {
|
|
99
|
+
result: {
|
|
100
|
+
protocolVersion: typeof message.params?.protocolVersion === "string" ? message.params.protocolVersion : PROTOCOL_VERSION,
|
|
101
|
+
capabilities: { tools: {} },
|
|
102
|
+
serverInfo: { name: "cascade", version },
|
|
103
|
+
instructions: "Cascade graph tools. Graph paths are relative to the project directory; pass `project` on any call to work in another project directory. Read a graph with graph_read before editing it; every result is { ok, data, warnings }."
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
case "ping":
|
|
107
|
+
return { result: {} };
|
|
108
|
+
case "tools/list":
|
|
109
|
+
return { result: { tools: TOOLS.map(({ name, description, inputSchema }) => ({ name, description, inputSchema })) } };
|
|
110
|
+
case "tools/call": {
|
|
111
|
+
const tool = TOOLS.find((candidate) => candidate.name === message.params?.name);
|
|
112
|
+
if (!tool) return { error: { code: -32602, message: `Unknown tool: ${message.params?.name}` } };
|
|
113
|
+
let envelope;
|
|
114
|
+
try {
|
|
115
|
+
const call = contextForCall(message.params?.arguments ?? {}, context);
|
|
116
|
+
envelope = await tool.run(call.args, call.context);
|
|
117
|
+
} catch (error) {
|
|
118
|
+
envelope = { ok: false, error: { message: error instanceof Error ? error.message : String(error) }, warnings: [] };
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
result: {
|
|
122
|
+
content: [{ type: "text", text: JSON.stringify(envelope) }],
|
|
123
|
+
structuredContent: envelope,
|
|
124
|
+
isError: !envelope.ok
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
default:
|
|
129
|
+
if (message.method?.startsWith("notifications/")) return void 0;
|
|
130
|
+
return { error: { code: -32601, message: `Method not found: ${message.method}` } };
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function runCliChild(root, args, timeoutMs) {
|
|
134
|
+
return new Promise((resolve) => {
|
|
135
|
+
const child = spawn(process.execPath, [...process.execArgv, process.argv[1], ...args, "--json"], { cwd: root, stdio: ["ignore", "pipe", "pipe"] });
|
|
136
|
+
let stdout = "";
|
|
137
|
+
let stderr = "";
|
|
138
|
+
child.stdout.on("data", (chunk) => {
|
|
139
|
+
stdout += chunk;
|
|
140
|
+
});
|
|
141
|
+
child.stderr.on("data", (chunk) => {
|
|
142
|
+
stderr += chunk;
|
|
143
|
+
});
|
|
144
|
+
const timer = setTimeout(() => child.kill("SIGTERM"), timeoutMs);
|
|
145
|
+
child.on("close", (code, signal) => {
|
|
146
|
+
clearTimeout(timer);
|
|
147
|
+
const last = stdout.trim().split("\n").pop() ?? "";
|
|
148
|
+
try {
|
|
149
|
+
resolve(JSON.parse(last));
|
|
150
|
+
} catch {
|
|
151
|
+
const reason = signal ? `stopped by ${signal}${signal === "SIGTERM" ? ` after ${timeoutMs} ms` : ""}` : `exited with code ${code}`;
|
|
152
|
+
resolve({ ok: false, error: { message: `cascade ${args[0]} ${reason}: ${(stderr || stdout).trim().slice(-2e3)}` }, warnings: [] });
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
export {
|
|
158
|
+
TOOLS,
|
|
159
|
+
contextForCall,
|
|
160
|
+
createMcpContext,
|
|
161
|
+
handle,
|
|
162
|
+
runMcpServer
|
|
163
|
+
};
|
|
164
|
+
//# sourceMappingURL=mcp-ZLEEMYGF.js.map
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
import {
|
|
2
|
+
installProjectStages
|
|
3
|
+
} from "./chunk-QBBKRNGY.js";
|
|
4
|
+
import {
|
|
5
|
+
setEmbeddedCompiler,
|
|
6
|
+
setProjectModuleCompiler
|
|
7
|
+
} from "./chunk-2KXB47FP.js";
|
|
8
|
+
import {
|
|
9
|
+
compileEmbedded,
|
|
10
|
+
compileProjectModule
|
|
11
|
+
} from "./chunk-MIIEFUGG.js";
|
|
12
|
+
import "./chunk-WPUDGEFY.js";
|
|
13
|
+
import "./chunk-VVGSLVSF.js";
|
|
14
|
+
import "./chunk-WD62JIP6.js";
|
|
15
|
+
import {
|
|
16
|
+
cookProjectGraph,
|
|
17
|
+
createProjectHost,
|
|
18
|
+
installProjectIo
|
|
19
|
+
} from "./chunk-EUIAC3U3.js";
|
|
20
|
+
import "./chunk-36P5K3SD.js";
|
|
21
|
+
import "./chunk-D6BUOHUG.js";
|
|
22
|
+
import "./chunk-RXDIMXN5.js";
|
|
23
|
+
import "./chunk-QQPA2ZHH.js";
|
|
24
|
+
import "./chunk-KH4MUBKF.js";
|
|
25
|
+
import "./chunk-35D343DC.js";
|
|
26
|
+
import "./chunk-DEQSEFFH.js";
|
|
27
|
+
import "./chunk-HSNOBIVT.js";
|
|
28
|
+
import {
|
|
29
|
+
imagePath
|
|
30
|
+
} from "./chunk-ICH7N5PN.js";
|
|
31
|
+
import {
|
|
32
|
+
graphSeed
|
|
33
|
+
} from "./chunk-GFS6W3C5.js";
|
|
34
|
+
import "./chunk-HFHWYL55.js";
|
|
35
|
+
import "./chunk-CO22XHNG.js";
|
|
36
|
+
import {
|
|
37
|
+
ProjectRoot
|
|
38
|
+
} from "./chunk-RQZ4SX5R.js";
|
|
39
|
+
import "./chunk-A4OAMOZH.js";
|
|
40
|
+
import "./chunk-J7VK7MNF.js";
|
|
41
|
+
import "./chunk-XWDSKG7N.js";
|
|
42
|
+
import "./chunk-BIJO5OFS.js";
|
|
43
|
+
import {
|
|
44
|
+
installHeadlessCanvas
|
|
45
|
+
} from "./chunk-WIH4TEIS.js";
|
|
46
|
+
|
|
47
|
+
// src/cli/parity.ts
|
|
48
|
+
import { createHash } from "node:crypto";
|
|
49
|
+
import fs from "node:fs/promises";
|
|
50
|
+
import path from "node:path";
|
|
51
|
+
import sharp from "sharp";
|
|
52
|
+
function sha(bytes) {
|
|
53
|
+
return createHash("sha256").update(bytes).digest("hex").slice(0, 16);
|
|
54
|
+
}
|
|
55
|
+
function canonical(value) {
|
|
56
|
+
return JSON.stringify(value, (_key, item) => {
|
|
57
|
+
if (ArrayBuffer.isView(item) && !(item instanceof DataView)) return Array.from(item);
|
|
58
|
+
if (item && typeof item === "object" && !Array.isArray(item)) {
|
|
59
|
+
return Object.fromEntries(Object.keys(item).sort().map((key) => [key, item[key]]));
|
|
60
|
+
}
|
|
61
|
+
if (typeof item === "function") return void 0;
|
|
62
|
+
return item;
|
|
63
|
+
}) ?? "undefined";
|
|
64
|
+
}
|
|
65
|
+
function planarImage(value) {
|
|
66
|
+
const candidate = value;
|
|
67
|
+
if (!candidate || typeof candidate !== "object") return null;
|
|
68
|
+
if (typeof candidate.width !== "number" || typeof candidate.height !== "number") return null;
|
|
69
|
+
if (!Array.isArray(candidate.channels) || !candidate.channels.every((channel) => channel instanceof Float32Array)) return null;
|
|
70
|
+
return candidate;
|
|
71
|
+
}
|
|
72
|
+
function rgba8FromPlanar(image) {
|
|
73
|
+
const count = image.width * image.height;
|
|
74
|
+
const out = new Uint8Array(count * 4);
|
|
75
|
+
for (let index = 0; index < count; index++) {
|
|
76
|
+
for (let channel = 0; channel < 4; channel++) {
|
|
77
|
+
const source = image.channels[channel] ?? (channel === 3 ? null : image.channels[0]);
|
|
78
|
+
const value = source ? source[index] : 1;
|
|
79
|
+
out[index * 4 + channel] = Math.max(0, Math.min(255, Math.round(value * 255)));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return out;
|
|
83
|
+
}
|
|
84
|
+
async function decodeFile(full) {
|
|
85
|
+
const { data, info } = await sharp(full).ensureAlpha().raw({ depth: "uchar" }).toBuffer({ resolveWithObject: true });
|
|
86
|
+
return { width: info.width, height: info.height, pixels: new Uint8Array(data.buffer, data.byteOffset, data.byteLength) };
|
|
87
|
+
}
|
|
88
|
+
var IMAGE_FILE = /\.(png|jpe?g|webp|tiff?)$/i;
|
|
89
|
+
async function snapshotValue(project, value) {
|
|
90
|
+
if (value === void 0 || value === null) return { kind: "missing" };
|
|
91
|
+
const planar = planarImage(value);
|
|
92
|
+
if (planar) {
|
|
93
|
+
const pixels = rgba8FromPlanar(planar);
|
|
94
|
+
return { kind: "image", digest: sha(pixels), width: planar.width, height: planar.height, pixels };
|
|
95
|
+
}
|
|
96
|
+
const file = imagePath(value);
|
|
97
|
+
if (file && IMAGE_FILE.test(file)) {
|
|
98
|
+
try {
|
|
99
|
+
const decoded = await decodeFile(project.resolveMedia(file.replace(/^\.?\//, "")));
|
|
100
|
+
return { kind: "image", digest: sha(decoded.pixels), ...decoded };
|
|
101
|
+
} catch {
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const json = canonical(value);
|
|
105
|
+
return { kind: "value", digest: sha(json), json };
|
|
106
|
+
}
|
|
107
|
+
async function snapshotOutputs(project, outputs) {
|
|
108
|
+
const snapshots = /* @__PURE__ */ new Map();
|
|
109
|
+
for (const [node, ports] of outputs) {
|
|
110
|
+
for (const [port, value] of ports) {
|
|
111
|
+
if (value === void 0) continue;
|
|
112
|
+
snapshots.set(`${node}.${port}`, await snapshotValue(project, value));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return snapshots;
|
|
116
|
+
}
|
|
117
|
+
function numbers(json) {
|
|
118
|
+
try {
|
|
119
|
+
const value = JSON.parse(json);
|
|
120
|
+
if (typeof value === "number") return [value];
|
|
121
|
+
if (Array.isArray(value) && value.every((item) => typeof item === "number")) return value;
|
|
122
|
+
} catch {
|
|
123
|
+
}
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
function compareSnapshots(a, b, tolerance) {
|
|
127
|
+
if (!a || !b || a.kind === "missing" || b.kind === "missing") {
|
|
128
|
+
if ((!a || a.kind === "missing") && (!b || b.kind === "missing")) return { verdict: "same" };
|
|
129
|
+
return { verdict: "missing", detail: !a || a.kind === "missing" ? "absent in the first cook" : "absent in this cook" };
|
|
130
|
+
}
|
|
131
|
+
if (a.digest === b.digest) return { verdict: "same" };
|
|
132
|
+
if (a.kind === "image" && b.kind === "image") {
|
|
133
|
+
if (a.width !== b.width || a.height !== b.height) {
|
|
134
|
+
return { verdict: "different", detail: `size ${a.width}\xD7${a.height} vs ${b.width}\xD7${b.height}` };
|
|
135
|
+
}
|
|
136
|
+
let differing = 0;
|
|
137
|
+
let maxDelta = 0;
|
|
138
|
+
for (let pixel = 0; pixel < a.pixels.length; pixel += 4) {
|
|
139
|
+
let worst = 0;
|
|
140
|
+
for (let channel = 0; channel < 4; channel++) {
|
|
141
|
+
const delta = Math.abs(a.pixels[pixel + channel] - b.pixels[pixel + channel]);
|
|
142
|
+
if (delta > worst) worst = delta;
|
|
143
|
+
}
|
|
144
|
+
if (worst > 0) differing++;
|
|
145
|
+
if (worst > maxDelta) maxDelta = worst;
|
|
146
|
+
}
|
|
147
|
+
const share = 100 * differing / (a.width * a.height);
|
|
148
|
+
const detail = `${differing} px (${share < 0.01 ? share.toExponential(1) : share.toFixed(2)} %), max \u0394 ${maxDelta}`;
|
|
149
|
+
return { verdict: maxDelta <= tolerance ? "within tolerance" : "different", detail, differingPixels: differing, maxDelta };
|
|
150
|
+
}
|
|
151
|
+
if (a.kind === "value" && b.kind === "value") {
|
|
152
|
+
const left = numbers(a.json);
|
|
153
|
+
const right = numbers(b.json);
|
|
154
|
+
if (left && right && left.length === right.length) {
|
|
155
|
+
const maxDelta = Math.max(...left.map((value, index) => Math.abs(value - right[index])));
|
|
156
|
+
const detail = left.length === 1 ? `${left[0]} vs ${right[0]}` : `max \u0394 ${maxDelta}`;
|
|
157
|
+
return { verdict: "different", detail, maxDelta };
|
|
158
|
+
}
|
|
159
|
+
const shorten = (text) => text.length > 60 ? `${text.slice(0, 57)}...` : text;
|
|
160
|
+
return { verdict: "different", detail: `${shorten(a.json)} vs ${shorten(b.json)}` };
|
|
161
|
+
}
|
|
162
|
+
return { verdict: "different", detail: `${a.kind} vs ${b.kind}` };
|
|
163
|
+
}
|
|
164
|
+
async function cookHeadless(file, document, node, project) {
|
|
165
|
+
const { outputs } = await cookProjectGraph(file, structuredClone(document), node);
|
|
166
|
+
return snapshotOutputs(project, outputs);
|
|
167
|
+
}
|
|
168
|
+
async function cookStudio(file, document, node, project) {
|
|
169
|
+
const [{ Graph }, { registerStandardNodes }, { studioCapabilities }, { cookUntilSettled }] = await Promise.all([
|
|
170
|
+
import("./Graph-ZJJTRQTM.js"),
|
|
171
|
+
import("./registerStandardNodes-S2VLMF6J.js"),
|
|
172
|
+
import("./projectDefinition-DMTZN2NE.js"),
|
|
173
|
+
import("./frames-LSAUBZ7P.js")
|
|
174
|
+
]);
|
|
175
|
+
await Promise.all([
|
|
176
|
+
import("./definitions-HF2FTHYU.js"),
|
|
177
|
+
import("./math-ZRMLKU2D.js"),
|
|
178
|
+
import("./pop-USDFXB7H.js"),
|
|
179
|
+
import("./geo-4RNK3QVN.js")
|
|
180
|
+
]);
|
|
181
|
+
registerStandardNodes();
|
|
182
|
+
const host = createProjectHost(file, []);
|
|
183
|
+
Object.assign(studioCapabilities, host.capabilities);
|
|
184
|
+
const graph = Graph.fromJSON(structuredClone(document));
|
|
185
|
+
graph.restoreConnections();
|
|
186
|
+
const entry = node ? graph.getNode(node) : void 0;
|
|
187
|
+
if (node && !entry) throw new Error(`no node "${node}" in the Studio graph`);
|
|
188
|
+
try {
|
|
189
|
+
await cookUntilSettled(graph, entry ?? void 0);
|
|
190
|
+
const failed = graph.nodes.filter((item) => item.error !== null);
|
|
191
|
+
if (failed.length) {
|
|
192
|
+
throw new Error(failed.map((item) => `${item.id}: ${item.error?.message ?? "cook error"}`).join("; "));
|
|
193
|
+
}
|
|
194
|
+
const outputs = /* @__PURE__ */ new Map();
|
|
195
|
+
for (const item of graph.nodes) {
|
|
196
|
+
outputs.set(item.id, new Map(item.outputs.map((port) => [port.name, port.value])));
|
|
197
|
+
}
|
|
198
|
+
return await snapshotOutputs(project, outputs);
|
|
199
|
+
} finally {
|
|
200
|
+
graph.scheduler?.dispose?.();
|
|
201
|
+
await host.capabilities.gpu?.dispose?.();
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
async function parity(options) {
|
|
205
|
+
const file = path.resolve(options.file);
|
|
206
|
+
const document = JSON.parse(await fs.readFile(file, "utf8"));
|
|
207
|
+
if (options.seed !== void 0) document.seed = options.seed;
|
|
208
|
+
const project = new ProjectRoot(path.dirname(file));
|
|
209
|
+
const previousCache = process.env.CASCADE_STAGE_CACHE;
|
|
210
|
+
process.env.CASCADE_STAGE_CACHE = "off";
|
|
211
|
+
setProjectModuleCompiler(async (folder) => (await compileProjectModule(project, folder)).code);
|
|
212
|
+
setEmbeddedCompiler(async (code) => (await compileEmbedded(project, code)).code);
|
|
213
|
+
const disposers = [installProjectStages(project, { worker: false }), installProjectIo(project)];
|
|
214
|
+
try {
|
|
215
|
+
const canvas = await installHeadlessCanvas();
|
|
216
|
+
disposers.push(() => canvas.dispose());
|
|
217
|
+
} catch {
|
|
218
|
+
}
|
|
219
|
+
const failures = {};
|
|
220
|
+
const attempt = async (name, cook) => {
|
|
221
|
+
try {
|
|
222
|
+
return await cook();
|
|
223
|
+
} catch (error) {
|
|
224
|
+
failures[name] = error instanceof Error ? error.message : String(error);
|
|
225
|
+
return null;
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
try {
|
|
229
|
+
const first = await attempt("headless", () => cookHeadless(file, document, options.node, project));
|
|
230
|
+
const second = await attempt("headless again", () => cookHeadless(file, document, options.node, project));
|
|
231
|
+
const studio = options.studio ? await attempt("studio", () => cookStudio(file, document, options.node, project)) : null;
|
|
232
|
+
const keys = [.../* @__PURE__ */ new Set([...first?.keys() ?? [], ...second?.keys() ?? []])].sort();
|
|
233
|
+
const ports = keys.map((key) => {
|
|
234
|
+
const dot = key.indexOf(".");
|
|
235
|
+
const a = first?.get(key);
|
|
236
|
+
return {
|
|
237
|
+
node: key.slice(0, dot),
|
|
238
|
+
port: key.slice(dot + 1),
|
|
239
|
+
kind: (a ?? second?.get(key))?.kind ?? "missing",
|
|
240
|
+
repeat: compareSnapshots(a, second?.get(key), options.tolerance),
|
|
241
|
+
...studio ? { studio: compareSnapshots(a, studio.get(key), options.tolerance) } : {}
|
|
242
|
+
};
|
|
243
|
+
});
|
|
244
|
+
const agrees = (comparison) => !comparison || comparison.verdict === "same" || comparison.verdict === "within tolerance";
|
|
245
|
+
const ok = Object.keys(failures).length === 0 && ports.every((port) => agrees(port.repeat) && agrees(port.studio));
|
|
246
|
+
return { graph: file, seed: graphSeed(document), tolerance: options.tolerance, ok, ports, failures };
|
|
247
|
+
} finally {
|
|
248
|
+
for (const dispose of disposers.reverse()) {
|
|
249
|
+
try {
|
|
250
|
+
dispose();
|
|
251
|
+
} catch {
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
setProjectModuleCompiler(null);
|
|
255
|
+
setEmbeddedCompiler(null);
|
|
256
|
+
if (previousCache === void 0) delete process.env.CASCADE_STAGE_CACHE;
|
|
257
|
+
else process.env.CASCADE_STAGE_CACHE = previousCache;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
function formatParityReport(report) {
|
|
261
|
+
const lines = [`parity ${report.graph} seed ${report.seed} tolerance ${report.tolerance}`];
|
|
262
|
+
for (const [cook, message] of Object.entries(report.failures)) lines.push(` ${cook} cook failed: ${message}`);
|
|
263
|
+
const cell = (comparison) => !comparison ? "-" : comparison.detail ? `${comparison.verdict}: ${comparison.detail}` : comparison.verdict;
|
|
264
|
+
const rows = report.ports.map((port) => [`${port.node}.${port.port}`, port.kind, cell(port.repeat), cell(port.studio)]);
|
|
265
|
+
const header = ["output", "kind", "headless twice", "headless vs studio"];
|
|
266
|
+
const widths = header.map((title, column) => Math.max(title.length, ...rows.map((row) => row[column].length)));
|
|
267
|
+
const format = (row) => ` ${row.map((text, column) => text.padEnd(widths[column])).join(" ")}`.trimEnd();
|
|
268
|
+
lines.push(format(header));
|
|
269
|
+
for (const row of rows) lines.push(format(row));
|
|
270
|
+
const differing = report.ports.filter((port) => !["same", "within tolerance"].includes(port.repeat.verdict) || port.studio && !["same", "within tolerance"].includes(port.studio.verdict));
|
|
271
|
+
lines.push(report.ok ? "all outputs agree" : `${differing.length} of ${report.ports.length} outputs differ`);
|
|
272
|
+
return lines.join("\n");
|
|
273
|
+
}
|
|
274
|
+
function parseParityArgs(args) {
|
|
275
|
+
let file;
|
|
276
|
+
let node;
|
|
277
|
+
let seed;
|
|
278
|
+
let tolerance = 0;
|
|
279
|
+
let json = false;
|
|
280
|
+
let studio = true;
|
|
281
|
+
for (let index = 0; index < args.length; index++) {
|
|
282
|
+
const argument = args[index];
|
|
283
|
+
const value = () => {
|
|
284
|
+
const next = args[++index];
|
|
285
|
+
if (next === void 0 || next.startsWith("--")) throw new Error(`${argument} needs a value`);
|
|
286
|
+
return next;
|
|
287
|
+
};
|
|
288
|
+
if (argument === "--node") node = value();
|
|
289
|
+
else if (argument === "--seed") {
|
|
290
|
+
seed = Number(value());
|
|
291
|
+
if (!Number.isInteger(seed) || seed < 0 || seed > 4294967295) throw new Error("--seed must be an integer from 0 to 4294967295");
|
|
292
|
+
} else if (argument === "--tolerance") {
|
|
293
|
+
tolerance = Number(value());
|
|
294
|
+
if (!Number.isFinite(tolerance) || tolerance < 0 || tolerance > 255) throw new Error("--tolerance must be 0 to 255");
|
|
295
|
+
} else if (argument === "--json") json = true;
|
|
296
|
+
else if (argument === "--no-studio") studio = false;
|
|
297
|
+
else if (argument.startsWith("-")) throw new Error(`unknown option: ${argument}`);
|
|
298
|
+
else if (!file) file = argument;
|
|
299
|
+
else throw new Error(`unexpected argument: ${argument}`);
|
|
300
|
+
}
|
|
301
|
+
if (!file) throw new Error("usage: cascade parity <graph-file> [--node <id>] [--seed N] [--tolerance N] [--no-studio] [--json]");
|
|
302
|
+
return { file, ...node ? { node } : {}, ...seed === void 0 ? {} : { seed }, tolerance, json, studio };
|
|
303
|
+
}
|
|
304
|
+
async function runParityCommand(args) {
|
|
305
|
+
const options = parseParityArgs(args);
|
|
306
|
+
const log = console.log;
|
|
307
|
+
if (options.json) console.log = console.error;
|
|
308
|
+
try {
|
|
309
|
+
const report = await parity(options);
|
|
310
|
+
if (options.json) {
|
|
311
|
+
process.stdout.write(JSON.stringify(report) + "\n");
|
|
312
|
+
return 0;
|
|
313
|
+
}
|
|
314
|
+
log(formatParityReport(report));
|
|
315
|
+
return report.ok ? 0 : 1;
|
|
316
|
+
} finally {
|
|
317
|
+
console.log = log;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
export {
|
|
321
|
+
compareSnapshots,
|
|
322
|
+
formatParityReport,
|
|
323
|
+
parity,
|
|
324
|
+
parseParityArgs,
|
|
325
|
+
runParityCommand,
|
|
326
|
+
snapshotValue
|
|
327
|
+
};
|
|
328
|
+
//# sourceMappingURL=parity-KINARCP2.js.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import {
|
|
2
|
+
registerDefinitionNodes
|
|
3
|
+
} from "./chunk-SGJAET2L.js";
|
|
4
|
+
import "./chunk-FCDXJ6EK.js";
|
|
5
|
+
import "./chunk-RUU3YWXU.js";
|
|
6
|
+
import {
|
|
7
|
+
popNodeDefinitions,
|
|
8
|
+
popNodeRegistrations
|
|
9
|
+
} from "./chunk-KH4MUBKF.js";
|
|
10
|
+
import "./chunk-HSNOBIVT.js";
|
|
11
|
+
import "./chunk-GFS6W3C5.js";
|
|
12
|
+
import "./chunk-HFHWYL55.js";
|
|
13
|
+
import "./chunk-CO22XHNG.js";
|
|
14
|
+
import "./chunk-J7VK7MNF.js";
|
|
15
|
+
import "./chunk-BIJO5OFS.js";
|
|
16
|
+
|
|
17
|
+
// src/nodes/pop/library.ts
|
|
18
|
+
var popLibrary = {
|
|
19
|
+
id: "pop",
|
|
20
|
+
label: "Particles",
|
|
21
|
+
icon: "Sparkles",
|
|
22
|
+
categories: [{
|
|
23
|
+
id: "pop",
|
|
24
|
+
label: "Particles",
|
|
25
|
+
nodes: popNodeDefinitions.map(([moduleId, definition]) => ({
|
|
26
|
+
name: definition.label ?? moduleId.split(".").pop(),
|
|
27
|
+
icon: definition.icon ?? "Sparkles",
|
|
28
|
+
description: definition.description ?? "",
|
|
29
|
+
type: moduleId
|
|
30
|
+
}))
|
|
31
|
+
}]
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
// src/nodes/pop/index.ts
|
|
35
|
+
registerDefinitionNodes(popNodeRegistrations, {});
|
|
36
|
+
export {
|
|
37
|
+
popLibrary
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=pop-USDFXB7H.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
PathSafetyError,
|
|
3
|
+
ProjectRoot
|
|
4
|
+
} from "./chunk-RQZ4SX5R.js";
|
|
5
|
+
import "./chunk-A4OAMOZH.js";
|
|
6
|
+
import "./chunk-J7VK7MNF.js";
|
|
7
|
+
import "./chunk-BIJO5OFS.js";
|
|
8
|
+
export {
|
|
9
|
+
PathSafetyError,
|
|
10
|
+
ProjectRoot
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=project-K3QIPGBB.js.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import {
|
|
2
|
+
adaptModule,
|
|
3
|
+
declaresDefinitionV1,
|
|
4
|
+
definitionAdapterError,
|
|
5
|
+
missingStudioCapabilities,
|
|
6
|
+
moduleNodeFunction,
|
|
7
|
+
studioCapabilities
|
|
8
|
+
} from "./chunk-RLCAJBVR.js";
|
|
9
|
+
import "./chunk-53NMBJAO.js";
|
|
10
|
+
import "./chunk-SGJAET2L.js";
|
|
11
|
+
import "./chunk-FCDXJ6EK.js";
|
|
12
|
+
import "./chunk-RUU3YWXU.js";
|
|
13
|
+
import "./chunk-GFS6W3C5.js";
|
|
14
|
+
import "./chunk-HFHWYL55.js";
|
|
15
|
+
import "./chunk-CO22XHNG.js";
|
|
16
|
+
import "./chunk-A4OAMOZH.js";
|
|
17
|
+
import "./chunk-J7VK7MNF.js";
|
|
18
|
+
import "./chunk-BIJO5OFS.js";
|
|
19
|
+
export {
|
|
20
|
+
adaptModule,
|
|
21
|
+
declaresDefinitionV1,
|
|
22
|
+
definitionAdapterError,
|
|
23
|
+
missingStudioCapabilities,
|
|
24
|
+
moduleNodeFunction,
|
|
25
|
+
studioCapabilities
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=projectDefinition-DMTZN2NE.js.map
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import {
|
|
2
|
+
builtinModuleIds,
|
|
3
|
+
checkProjectGraph,
|
|
4
|
+
classifyPreflight,
|
|
5
|
+
cookProjectGraph,
|
|
6
|
+
createProjectHost,
|
|
7
|
+
diagnoseGraph,
|
|
8
|
+
inspectProjectGraph,
|
|
9
|
+
moduleDefinitions,
|
|
10
|
+
moduleId,
|
|
11
|
+
projectModuleFile,
|
|
12
|
+
renderDeterministicProjectFrames,
|
|
13
|
+
runDeterministicProjectGraph,
|
|
14
|
+
validateProjectGraph
|
|
15
|
+
} from "./chunk-EUIAC3U3.js";
|
|
16
|
+
import "./chunk-36P5K3SD.js";
|
|
17
|
+
import "./chunk-D6BUOHUG.js";
|
|
18
|
+
import "./chunk-RXDIMXN5.js";
|
|
19
|
+
import "./chunk-QQPA2ZHH.js";
|
|
20
|
+
import "./chunk-KH4MUBKF.js";
|
|
21
|
+
import "./chunk-35D343DC.js";
|
|
22
|
+
import "./chunk-DEQSEFFH.js";
|
|
23
|
+
import "./chunk-HSNOBIVT.js";
|
|
24
|
+
import "./chunk-ICH7N5PN.js";
|
|
25
|
+
import "./chunk-GFS6W3C5.js";
|
|
26
|
+
import "./chunk-HFHWYL55.js";
|
|
27
|
+
import "./chunk-CO22XHNG.js";
|
|
28
|
+
import "./chunk-RQZ4SX5R.js";
|
|
29
|
+
import "./chunk-A4OAMOZH.js";
|
|
30
|
+
import "./chunk-J7VK7MNF.js";
|
|
31
|
+
import "./chunk-XWDSKG7N.js";
|
|
32
|
+
import "./chunk-BIJO5OFS.js";
|
|
33
|
+
export {
|
|
34
|
+
builtinModuleIds,
|
|
35
|
+
checkProjectGraph,
|
|
36
|
+
classifyPreflight,
|
|
37
|
+
cookProjectGraph,
|
|
38
|
+
createProjectHost,
|
|
39
|
+
diagnoseGraph,
|
|
40
|
+
inspectProjectGraph,
|
|
41
|
+
moduleDefinitions,
|
|
42
|
+
moduleId,
|
|
43
|
+
projectModuleFile,
|
|
44
|
+
renderDeterministicProjectFrames,
|
|
45
|
+
runDeterministicProjectGraph,
|
|
46
|
+
validateProjectGraph
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=projectRuntime-Z5PJOH47.js.map
|