@nodetool-ai/execution 0.8.2 → 0.8.4-a24.1

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.
Files changed (72) hide show
  1. package/dist/.nodetool-build-stamp +1 -1
  2. package/dist/app-debug/runtime.d.ts.map +1 -1
  3. package/dist/app-debug/runtime.js +5 -1
  4. package/dist/app-debug/runtime.js.map +1 -1
  5. package/dist/app-debug/simulate.d.ts.map +1 -1
  6. package/dist/app-debug/simulate.js +10 -1
  7. package/dist/app-debug/simulate.js.map +1 -1
  8. package/dist/debug/types.d.ts +3 -1
  9. package/dist/debug/types.d.ts.map +1 -1
  10. package/dist/debug/verdict.d.ts +26 -1
  11. package/dist/debug/verdict.d.ts.map +1 -1
  12. package/dist/debug/verdict.js +36 -0
  13. package/dist/debug/verdict.js.map +1 -1
  14. package/dist/executor-resolver.d.ts +0 -7
  15. package/dist/executor-resolver.d.ts.map +1 -1
  16. package/dist/executor-resolver.js +12 -0
  17. package/dist/executor-resolver.js.map +1 -1
  18. package/dist/index.d.ts +2 -0
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +1 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/js-script-debug/report.d.ts.map +1 -1
  23. package/dist/js-script-debug/report.js +9 -24
  24. package/dist/js-script-debug/report.js.map +1 -1
  25. package/dist/js-script-debug/type-check.d.ts +2 -3
  26. package/dist/js-script-debug/type-check.d.ts.map +1 -1
  27. package/dist/js-script-debug/type-check.js +36 -14
  28. package/dist/js-script-debug/type-check.js.map +1 -1
  29. package/dist/missing-packs.d.ts +15 -0
  30. package/dist/missing-packs.d.ts.map +1 -0
  31. package/dist/missing-packs.js +70 -0
  32. package/dist/missing-packs.js.map +1 -0
  33. package/dist/partial-run.d.ts +62 -0
  34. package/dist/partial-run.d.ts.map +1 -0
  35. package/dist/partial-run.js +309 -0
  36. package/dist/partial-run.js.map +1 -0
  37. package/dist/run-trace-store.d.ts +2 -2
  38. package/dist/run-trace-store.d.ts.map +1 -1
  39. package/dist/run-trace-store.js +30 -2
  40. package/dist/run-trace-store.js.map +1 -1
  41. package/dist/service/active-runs.d.ts +21 -0
  42. package/dist/service/active-runs.d.ts.map +1 -0
  43. package/dist/service/active-runs.js +42 -0
  44. package/dist/service/active-runs.js.map +1 -0
  45. package/dist/service/app-operation.d.ts +2 -1
  46. package/dist/service/app-operation.d.ts.map +1 -1
  47. package/dist/service/app-operation.js +3 -1
  48. package/dist/service/app-operation.js.map +1 -1
  49. package/dist/service/index.d.ts +2 -1
  50. package/dist/service/index.d.ts.map +1 -1
  51. package/dist/service/index.js +1 -0
  52. package/dist/service/index.js.map +1 -1
  53. package/dist/service/workflow-run.d.ts +46 -4
  54. package/dist/service/workflow-run.d.ts.map +1 -1
  55. package/dist/service/workflow-run.js +194 -32
  56. package/dist/service/workflow-run.js.map +1 -1
  57. package/dist/session.d.ts.map +1 -1
  58. package/dist/session.js +13 -0
  59. package/dist/session.js.map +1 -1
  60. package/dist/sketch-debug/report.d.ts.map +1 -1
  61. package/dist/sketch-debug/report.js +16 -25
  62. package/dist/sketch-debug/report.js.map +1 -1
  63. package/dist/timeline-debug/frame-geometry.d.ts +3 -1
  64. package/dist/timeline-debug/frame-geometry.d.ts.map +1 -1
  65. package/dist/timeline-debug/frame-geometry.js +8 -1
  66. package/dist/timeline-debug/frame-geometry.js.map +1 -1
  67. package/dist/timeline-debug/report.d.ts.map +1 -1
  68. package/dist/timeline-debug/report.js +16 -25
  69. package/dist/timeline-debug/report.js.map +1 -1
  70. package/dist/types.d.ts +4 -0
  71. package/dist/types.d.ts.map +1 -1
  72. package/package.json +28 -13
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@
2
2
  * @nodetool-ai/execution – Public API
3
3
  */
4
4
  export { ExecutionSession } from "./session.js";
5
+ export { findMissingPacks } from "./missing-packs.js";
5
6
  export { DurableGenerationLifecycle, createDurableGenerationLifecycle, createFalGenerationLifecycleHooks } from "./generation-lifecycle.js";
6
7
  export { DurableGenerationRecoveryWorker } from "./generation-recovery-worker.js";
7
8
  export { decodeFalOutputs, deterministicFalStorageKey } from "./fal-output-decoder.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAChC,iCAAiC,EAClC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EACL,gBAAgB,EAChB,0BAA0B,EAE3B,MAAM,yBAAyB,CAAC;AAYjC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,4BAA4B,EAC5B,0BAA0B,EAC1B,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAUxB,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,2BAA2B,EAC3B,8BAA8B,EAC9B,2BAA2B,EAC3B,sBAAsB,EACvB,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAgBzB,+EAA+E;AAC/E,oEAAoE;AACpE,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,gBAAgB,EAChB,cAAc,EACf,MAAM,oBAAoB,CAAC;AAiB5B,+EAA+E;AAC/E,sEAAsE;AACtE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAQxE,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAEzF,OAAO,EACL,uBAAuB,EAAE,mBAAmB,EAAE,wBAAwB,EACtE,oBAAoB,EAAE,sBAAsB,EAAE,wBAAwB,EACtE,qBAAqB,EAAE,eAAe,EACvC,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC7H,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EACL,0BAA0B,EAC1B,gCAAgC,EAChC,iCAAiC,EAClC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EACL,gBAAgB,EAChB,0BAA0B,EAE3B,MAAM,yBAAyB,CAAC;AAYjC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,4BAA4B,EAC5B,0BAA0B,EAC1B,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAUxB,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,2BAA2B,EAC3B,8BAA8B,EAC9B,2BAA2B,EAC3B,sBAAsB,EACvB,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAgBzB,+EAA+E;AAC/E,oEAAoE;AACpE,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,gBAAgB,EAChB,cAAc,EACf,MAAM,oBAAoB,CAAC;AAiB5B,+EAA+E;AAC/E,sEAAsE;AACtE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAQxE,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAEzF,OAAO,EACL,uBAAuB,EAAE,mBAAmB,EAAE,wBAAwB,EACtE,oBAAoB,EAAE,sBAAsB,EAAE,wBAAwB,EACtE,qBAAqB,EAAE,eAAe,EACvC,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC7H,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/js-script-debug/report.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAEV,mBAAmB,EACnB,mBAAmB,EAEnB,yBAAyB,EAE1B,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,eAAe,CAAC;AAwFvB,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,0DAA0D;IAC1D,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,YAAY,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC3C,kDAAkD;IAClD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wEAAwE;IACxE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,mBAAmB,CAAC,CA2B9B"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/js-script-debug/report.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAEV,mBAAmB,EACnB,mBAAmB,EAEnB,yBAAyB,EAE1B,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,eAAe,CAAC;AA2DvB,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,0DAA0D;IAC1D,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,YAAY,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC3C,kDAAkD;IAClD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wEAAwE;IACxE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,mBAAmB,CAAC,CA2B9B"}
@@ -6,6 +6,7 @@
6
6
  * decides what the run means.
7
7
  */
8
8
  import { JS_SCRIPT_DEFAULT_TIMEOUT_SECONDS } from "@nodetool-ai/protocol/api-schemas/js-scripts.js";
9
+ import { buildDocumentVerdict } from "../debug/verdict.js";
9
10
  import { validateJsScriptDoc } from "./validate.js";
10
11
  import { isFiniteNumber, isString } from "../predicates.js";
11
12
  /**
@@ -39,30 +40,14 @@ const describe = (issue) => issue.path
39
40
  ? `[${issue.code}] ${issue.path}: ${issue.message}`
40
41
  : `[${issue.code}] ${issue.message}`;
41
42
  function buildVerdict(validation, interactions, finalValidation) {
42
- const failedSteps = interactions.filter((step) => !step.ok);
43
- const issues = [
44
- ...validation.errors.map(describe),
45
- ...failedSteps.map((step) => `Interaction \`${step.tool}\` failed${step.error ? `: ${step.error}` : ""}`),
46
- ...(finalValidation?.errors ?? []).map((issue) => `After edits — ${describe(issue)}`)
47
- ];
48
- const warnings = [
49
- ...validation.warnings.map(describe),
50
- ...(finalValidation?.warnings ?? []).map((issue) => `After edits — ${describe(issue)}`)
51
- ];
52
- const ok = issues.length === 0;
53
- const headline = ok
54
- ? `Script is sound — ${interactions.length} interaction(s) ran clean` +
55
- (warnings.length > 0 ? `, ${warnings.length} warning(s)` : "") +
56
- "."
57
- : `Script has ${issues.length} problem(s)` +
58
- (failedSteps.length > 0
59
- ? `, ${failedSteps.length} failed interaction(s)`
60
- : "") +
61
- (warnings.length > 0 ? `, ${warnings.length} warning(s)` : "") +
62
- ` — ${issues[0]}`;
63
- return warnings.length > 0
64
- ? { ok, headline, issues, warnings }
65
- : { ok, headline, issues };
43
+ return buildDocumentVerdict({
44
+ subject: "Script",
45
+ soundLabel: "Script is sound",
46
+ describe,
47
+ validation,
48
+ finalValidation,
49
+ interactions
50
+ });
66
51
  }
67
52
  export async function buildJsScriptDebugReport(input) {
68
53
  const options = input.options ?? {};
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/js-script-debug/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/js-script-debug/report.ts"],"names":[],"mappings":"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"}
@@ -8,9 +8,8 @@ export type PackDtsSources = ReadonlyMap<string, string>;
8
8
  * script's own file, each naming the message TypeScript gives — which names
9
9
  * the offending property (`caret` on an object-literal type mismatch) the
10
10
  * way every other check in this module names the identifier it complains
11
- * about. Never throws: a `typescript` failure to load or a filesystem error
12
- * is swallowed and reported as nothing found, since this check is additive
13
- * on top of the AST-level one in `validateCodeNodeBody`.
11
+ * about. A compiler load failure returns a warning, since this check is
12
+ * additive on top of the AST-level one in `validateCodeNodeBody`.
14
13
  */
15
14
  export declare function typeCheckAgainstPackDts(code: string, packDtsSources: PackDtsSources): Promise<JsScriptDebugIssue[]>;
16
15
  //# sourceMappingURL=type-check.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type-check.d.ts","sourceRoot":"","sources":["../../src/js-script-debug/type-check.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,oIAAoI;AACpI,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAuCzD;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA2E/B"}
1
+ {"version":3,"file":"type-check.d.ts","sourceRoot":"","sources":["../../src/js-script-debug/type-check.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,oIAAoI;AACpI,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AA0DzD;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAqF/B"}
@@ -17,6 +17,8 @@
17
17
  import { mkdtemp, rm, writeFile } from "node:fs/promises";
18
18
  import { tmpdir } from "node:os";
19
19
  import { join } from "node:path";
20
+ import { importOptionalModule } from "@nodetool-ai/config";
21
+ import { SANDBOX_CAPABILITY_PACK, sandboxCapabilityModuleName } from "@nodetool-ai/protocol";
20
22
  /**
21
23
  * Names the QuickJS sandbox and the Code/script node put in scope, loosely
22
24
  * typed so the checker never reports one as undefined — mirrors
@@ -53,6 +55,23 @@ declare function fromHex(text: string): Uint8Array;
53
55
  declare function assetToSandbox(value: unknown): Promise<unknown>;
54
56
  declare function sandboxToAsset(value: unknown): Promise<unknown>;
55
57
  `;
58
+ /**
59
+ * "Cannot find module" (a named import, then a side-effect import). Only packs
60
+ * that ship a `.d.ts` are on the paths here, so every other import — a pack
61
+ * with no types, a host-mounted `@nodetool-ai/sandbox-nodetool/*` facade —
62
+ * fails to resolve in this program while resolving fine in the sandbox.
63
+ * Whether a specifier exists is the catalog check's job
64
+ * (`code_package_unavailable`); this check only holds a typed pack to its
65
+ * own declarations, and an unresolved import is `any` to it.
66
+ */
67
+ const UNRESOLVED_MODULE_CODES = new Set([2307, 2882]);
68
+ let capabilityModules;
69
+ function availableCapabilityModules() {
70
+ capabilityModules ??= importOptionalModule("@nodetool-ai/agents")
71
+ .then((platform) => platform.DECLARED_CAPABILITY_MODULES)
72
+ .catch(() => []);
73
+ return capabilityModules;
74
+ }
56
75
  /**
57
76
  * Type-check `code` (a script or Code-node body) as an ES module against the
58
77
  * `.d.ts` files in `packDtsSources`, keyed by the specifier a script imports
@@ -60,36 +79,35 @@ declare function sandboxToAsset(value: unknown): Promise<unknown>;
60
79
  * script's own file, each naming the message TypeScript gives — which names
61
80
  * the offending property (`caret` on an object-literal type mismatch) the
62
81
  * way every other check in this module names the identifier it complains
63
- * about. Never throws: a `typescript` failure to load or a filesystem error
64
- * is swallowed and reported as nothing found, since this check is additive
65
- * on top of the AST-level one in `validateCodeNodeBody`.
82
+ * about. A compiler load failure returns a warning, since this check is
83
+ * additive on top of the AST-level one in `validateCodeNodeBody`.
66
84
  */
67
85
  export async function typeCheckAgainstPackDts(code, packDtsSources) {
68
86
  if (code.trim() === "" || packDtsSources.size === 0)
69
87
  return [];
70
88
  let ts;
71
89
  try {
72
- ts = (await import("typescript")).default ?? (await import("typescript"));
90
+ const compiler = await importOptionalModule("typescript");
91
+ ts = compiler.default ?? compiler;
73
92
  }
74
93
  catch (error) {
75
- // `typescript` failing to load means this install cannot type-check at
76
- // all — a warning, not an error, since that is not the script's fault and
77
- // must not fail `validate` outright (the AST-level checks above already
78
- // ran and still stand). `typescript` is only a runtime dependency of this
79
- // package (`packages/execution/package.json`), and this dynamic import is
80
- // the only place it is ever loaded — a validate call with no pack
81
- // `.d.ts` sources, and every other caller of this package, never touches
82
- // the module at all.
94
+ // The optional compiler cannot prevent the AST checks from running.
95
+ const missing = error instanceof Error &&
96
+ "code" in error &&
97
+ (error.code === "ERR_MODULE_NOT_FOUND" || error.code === "MODULE_NOT_FOUND");
83
98
  return [
84
99
  {
85
100
  severity: "warning",
86
101
  code: "type_check_unavailable",
87
- message: `Could not load the TypeScript compiler, so the script's imports were not type-checked against any installed pack's .d.ts: ${error instanceof Error ? error.message : String(error)}`
102
+ message: missing
103
+ ? "Type checking was skipped because typescript is not installed. Install the optional TypeScript compiler with \"npm install typescript@npm:@typescript/typescript6@6.0.2\"."
104
+ : `Could not load the TypeScript compiler, so the script's imports were not type-checked against any installed pack's .d.ts: ${error instanceof Error ? error.message : String(error)}`
88
105
  }
89
106
  ];
90
107
  }
91
108
  const dir = await mkdtemp(join(tmpdir(), "nodetool-jsscript-types-"));
92
109
  try {
110
+ const availableModules = await availableCapabilityModules();
93
111
  const globalsPath = join(dir, "sandbox-globals.d.ts");
94
112
  const scriptPath = join(dir, "script.ts");
95
113
  await writeFile(globalsPath, SANDBOX_GLOBALS_DTS, "utf8");
@@ -118,7 +136,11 @@ export async function typeCheckAgainstPackDts(code, packDtsSources) {
118
136
  }
119
137
  const diagnostics = ts
120
138
  .getPreEmitDiagnostics(program)
121
- .filter((diagnostic) => diagnostic.file?.fileName === scriptPath);
139
+ .filter((diagnostic) => diagnostic.file?.fileName === scriptPath &&
140
+ (!UNRESOLVED_MODULE_CODES.has(diagnostic.code) || (() => {
141
+ const specifier = diagnostic.file.text.slice(diagnostic.start, (diagnostic.start ?? 0) + (diagnostic.length ?? 0)).replace(/^["']|["']$/g, "");
142
+ return (specifier === SANDBOX_CAPABILITY_PACK || specifier.startsWith(`${SANDBOX_CAPABILITY_PACK}/`)) && !availableModules.includes(sandboxCapabilityModuleName(specifier) ?? "");
143
+ })()));
122
144
  return diagnostics.map((diagnostic) => {
123
145
  const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, " ");
124
146
  if (diagnostic.file !== undefined && diagnostic.start !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"type-check.js","sourceRoot":"","sources":["../../src/js-script-debug/type-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-check.js","sourceRoot":"","sources":["../../src/js-script-debug/type-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { type NodeCatalogIndex } from "@nodetool-ai/node-catalog";
2
+ import type { NodeRegistry } from "@nodetool-ai/node-sdk";
3
+ import type { MissingPackDetails } from "@nodetool-ai/protocol";
4
+ export interface MissingPackLookupOptions {
5
+ readonly loadWorkflow?: (id: string) => Promise<{
6
+ graph: unknown;
7
+ } | null>;
8
+ readonly catalog?: NodeCatalogIndex;
9
+ readonly installedPackIds?: ReadonlySet<string>;
10
+ }
11
+ type PackRegistry = Pick<NodeRegistry, "availability" | "catalogEntry"> & Partial<Pick<NodeRegistry, "list" | "getNodePackageId">>;
12
+ /** Collect absent packs before running nested graphs or referenced workflows. */
13
+ export declare function findMissingPacks(graph: unknown, registry: PackRegistry, options?: MissingPackLookupOptions): Promise<MissingPackDetails | null>;
14
+ export {};
15
+ //# sourceMappingURL=missing-packs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"missing-packs.d.ts","sourceRoot":"","sources":["../src/missing-packs.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC5G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAGhE,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC3E,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACjD;AAED,KAAK,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,cAAc,GAAG,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC;AAEnI,iFAAiF;AACjF,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAqDpC"}
@@ -0,0 +1,70 @@
1
+ import { createMissingPackError, readCatalogIndex } from "@nodetool-ai/node-catalog";
2
+ import { isRecord } from "./predicates.js";
3
+ /** Collect absent packs before running nested graphs or referenced workflows. */
4
+ export async function findMissingPacks(graph, registry, options = {}) {
5
+ const catalog = options.catalog ?? readCatalogIndex();
6
+ const byId = new Map(catalog.packs.map((pack) => [pack.id, pack]));
7
+ const pending = [graph];
8
+ const seenGraphs = new Set();
9
+ const seenWorkflows = new Set();
10
+ const requiredPacks = new Set();
11
+ const nodeTypes = new Set();
12
+ for (let cursor = 0; cursor < pending.length; cursor++) {
13
+ const current = pending[cursor];
14
+ if (!isRecord(current) || seenGraphs.has(current) || !Array.isArray(current.nodes)) {
15
+ continue;
16
+ }
17
+ seenGraphs.add(current);
18
+ for (const node of current.nodes) {
19
+ if (!isRecord(node) || typeof node.type !== "string") {
20
+ continue;
21
+ }
22
+ const owner = registry.catalogEntry(node.type)?.pack;
23
+ if (owner && registry.availability(node.type) === "catalog") {
24
+ requiredPacks.add(owner);
25
+ nodeTypes.add(node.type);
26
+ }
27
+ const properties = isRecord(node.properties) ? node.properties : isRecord(node.data) ? node.data : {};
28
+ if (node.type === "nodetool.workflows.subgraph.Subgraph") {
29
+ pending.push(properties.graph);
30
+ }
31
+ else if (node.type === "nodetool.workflows.workflow_node.Workflow") {
32
+ const inline = isRecord(properties.workflow_json) ? properties.workflow_json.graph : undefined;
33
+ if (isRecord(inline) && Array.isArray(inline.nodes)) {
34
+ pending.push(inline);
35
+ }
36
+ else if (typeof properties.workflow_id === "string" && properties.workflow_id && options.loadWorkflow && !seenWorkflows.has(properties.workflow_id)) {
37
+ seenWorkflows.add(properties.workflow_id);
38
+ const workflow = await options.loadWorkflow(properties.workflow_id);
39
+ if (workflow) {
40
+ pending.push(workflow.graph);
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
46
+ if (requiredPacks.size === 0) {
47
+ return null;
48
+ }
49
+ const installed = options.installedPackIds ?? new Set((registry.list?.() ?? []).flatMap((type) => {
50
+ const owner = registry.getNodePackageId?.(type) ?? registry.catalogEntry(type)?.pack ?? catalog.owners[type];
51
+ return owner ? [owner] : [];
52
+ }));
53
+ const queue = [...requiredPacks];
54
+ for (let cursor = 0; cursor < queue.length; cursor++) {
55
+ const pack = byId.get(queue[cursor] ?? "");
56
+ if (!pack) {
57
+ throw new Error(`Unknown node catalog pack: ${queue[cursor]}`);
58
+ }
59
+ for (const id of pack.requires) {
60
+ if (!requiredPacks.has(id) && !installed.has(id)) {
61
+ requiredPacks.add(id);
62
+ queue.push(id);
63
+ }
64
+ }
65
+ }
66
+ // The catalog factory supplies the active host's install-mode guidance.
67
+ const details = createMissingPackError([...requiredPacks], [...nodeTypes], undefined, catalog).details;
68
+ return { ...details, packs: details.packs.filter((pack) => requiredPacks.has(pack.id)) };
69
+ }
70
+ //# sourceMappingURL=missing-packs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"missing-packs.js","sourceRoot":"","sources":["../src/missing-packs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAyB,MAAM,2BAA2B,CAAC;AAG5G,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAU3C,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAc,EACd,QAAsB,EACtB,OAAO,GAA6B,EAAE;IAEtC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,gBAAgB,EAAE,CAAC;IACtD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,OAAO,GAAc,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;QACvD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QACjG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YACnE,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;YACrD,IAAI,KAAK,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC5D,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACzB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;YACD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACtG,IAAI,IAAI,CAAC,IAAI,KAAK,sCAAsC,EAAE,CAAC;gBACzD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,2CAA2C,EAAE,CAAC;gBACrE,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC/F,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvB,CAAC;qBAAM,IAAI,OAAO,UAAU,CAAC,WAAW,KAAK,QAAQ,IAAI,UAAU,CAAC,WAAW,IAAI,OAAO,CAAC,YAAY,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBACtJ,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;oBAC1C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;oBACpE,IAAI,QAAQ,EAAE,CAAC;wBAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,IAAI,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC/F,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7G,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC,CAAC;IACJ,MAAM,KAAK,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;IACjC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;QAC9E,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACjD,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IACD,wEAAwE;IACxE,MAAM,OAAO,GAAG,sBAAsB,CAAC,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC;IACvG,OAAO,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC3F,CAAC"}
@@ -0,0 +1,62 @@
1
+ import type { GraphData, NodeDescriptor } from "@nodetool-ai/protocol";
2
+ import type { NodeMetadata } from "@nodetool-ai/node-sdk";
3
+ /** A previous generation of one node, as the run reuses it. */
4
+ export interface PreviousGeneration {
5
+ /** Output values keyed by output handle. */
6
+ outputs: Record<string, unknown>;
7
+ jobId: string | null;
8
+ assetIds: string[];
9
+ }
10
+ export interface PartialRunDeps {
11
+ getMetadata: (nodeType: string) => NodeMetadata | undefined;
12
+ /**
13
+ * The node's previous generation, or null when it has none. Omit to run
14
+ * every upstream node again.
15
+ */
16
+ loadPreviousGeneration?: (node: NodeDescriptor, metadata: NodeMetadata) => Promise<PreviousGeneration | null>;
17
+ }
18
+ /** One upstream node whose saved output replaced its run. */
19
+ export interface ReusedNode {
20
+ node_id: string;
21
+ job_id: string | null;
22
+ asset_ids: string[];
23
+ }
24
+ export type PartialRunPlan = {
25
+ kind: "graph";
26
+ graph: GraphData;
27
+ /** Every node the narrowed graph runs. */
28
+ ran: string[];
29
+ reused: ReusedNode[];
30
+ } | {
31
+ kind: "unknown_nodes";
32
+ ids: string[];
33
+ };
34
+ /** The ids in `nodeIds` that name no node of `graph`. */
35
+ export declare function unknownNodeIds(graph: GraphData, nodeIds: readonly string[]): string[];
36
+ /**
37
+ * A named output must match exactly. An unnamed edge may use the sole output.
38
+ */
39
+ export declare function generationOutputFor(outputs: Record<string, unknown>, handle: string | null | undefined): unknown;
40
+ export declare function planPartialRun(graph: GraphData, nodeIds: readonly string[], deps: PartialRunDeps): Promise<PartialRunPlan>;
41
+ /** The asset fields a generation is rebuilt from. */
42
+ export interface GenerationAssetRow {
43
+ id: string;
44
+ job_id: string | null;
45
+ content_type: string;
46
+ size: number | null;
47
+ metadata: Record<string, unknown> | null;
48
+ }
49
+ /**
50
+ * Rebuild a node's previous generation from the assets its auto-save wrote
51
+ * (`autoSaveAssets` in the websocket package), newest first. One generation is
52
+ * every asset one `generation_complete` produced: the same job and the same
53
+ * `generation_index`. Returns null when nothing usable is saved, so the node
54
+ * runs again:
55
+ *
56
+ * - `pinnedId` (the editor's `selected_generation`) names an asset not in
57
+ * `rows`;
58
+ * - a text generation was saved with a truncated inline copy;
59
+ * - a structured generation was too large to keep inline.
60
+ */
61
+ export declare function previousGenerationFromAssets(rows: readonly GenerationAssetRow[], metadata: NodeMetadata, pinnedId?: string): PreviousGeneration | null;
62
+ //# sourceMappingURL=partial-run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partial-run.d.ts","sourceRoot":"","sources":["../src/partial-run.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAQ,SAAS,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,uBAAuB,CAAC;AAExE,+DAA+D;AAC/D,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,CAAC;IAC5D;;;OAGG;IACH,sBAAsB,CAAC,EAAE,CACvB,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,YAAY,KACnB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;CACzC;AAED,6DAA6D;AAC7D,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,0CAA0C;IAC1C,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB,GACD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,GAAG,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE7C,yDAAyD;AACzD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,MAAM,EAAE,CAGV;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAChC,OAAO,CAIT;AAwCD,wBAAsB,cAAc,CAClC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,cAAc,CAAC,CAqKzB;AAMD,qDAAqD;AACrD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC1C;AAsBD;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,SAAS,kBAAkB,EAAE,EACnC,QAAQ,EAAE,YAAY,EACtB,QAAQ,CAAC,EAAE,MAAM,GAChB,kBAAkB,GAAG,IAAI,CA2D3B"}