@nodetool-ai/node-sdk 0.7.0-rc.23 → 0.8.2

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 (158) hide show
  1. package/README.md +34 -0
  2. package/dist/.nodetool-build-stamp +1 -0
  3. package/dist/base-node.d.ts +285 -14
  4. package/dist/base-node.d.ts.map +1 -1
  5. package/dist/base-node.js +359 -49
  6. package/dist/base-node.js.map +1 -1
  7. package/dist/class-name-to-title.d.ts +26 -0
  8. package/dist/class-name-to-title.d.ts.map +1 -0
  9. package/dist/class-name-to-title.js +59 -0
  10. package/dist/class-name-to-title.js.map +1 -0
  11. package/dist/code-analysis.d.ts +234 -0
  12. package/dist/code-analysis.d.ts.map +1 -0
  13. package/dist/code-analysis.js +919 -0
  14. package/dist/code-analysis.js.map +1 -0
  15. package/dist/code-body.d.ts +61 -0
  16. package/dist/code-body.d.ts.map +1 -0
  17. package/dist/code-body.js +288 -0
  18. package/dist/code-body.js.map +1 -0
  19. package/dist/code-node-validation.d.ts +67 -0
  20. package/dist/code-node-validation.d.ts.map +1 -0
  21. package/dist/code-node-validation.js +540 -0
  22. package/dist/code-node-validation.js.map +1 -0
  23. package/dist/content-card.d.ts +30 -0
  24. package/dist/content-card.d.ts.map +1 -0
  25. package/dist/content-card.js +68 -0
  26. package/dist/content-card.js.map +1 -0
  27. package/dist/correlation-validation.d.ts +19 -0
  28. package/dist/correlation-validation.d.ts.map +1 -0
  29. package/dist/correlation-validation.js +101 -0
  30. package/dist/correlation-validation.js.map +1 -0
  31. package/dist/cost-estimate.d.ts +244 -0
  32. package/dist/cost-estimate.d.ts.map +1 -0
  33. package/dist/cost-estimate.js +637 -0
  34. package/dist/cost-estimate.js.map +1 -0
  35. package/dist/decorators.d.ts.map +1 -1
  36. package/dist/decorators.js +4 -1
  37. package/dist/decorators.js.map +1 -1
  38. package/dist/docs/nodes.d.ts.map +1 -1
  39. package/dist/docs/nodes.js +3 -2
  40. package/dist/docs/nodes.js.map +1 -1
  41. package/dist/docs/overview.d.ts.map +1 -1
  42. package/dist/docs/overview.js +4 -3
  43. package/dist/docs/overview.js.map +1 -1
  44. package/dist/docs/workflows.d.ts.map +1 -1
  45. package/dist/docs/workflows.js +10 -9
  46. package/dist/docs/workflows.js.map +1 -1
  47. package/dist/field-classification.d.ts +31 -0
  48. package/dist/field-classification.d.ts.map +1 -0
  49. package/dist/field-classification.js +58 -0
  50. package/dist/field-classification.js.map +1 -0
  51. package/dist/graph-validation.d.ts +239 -0
  52. package/dist/graph-validation.d.ts.map +1 -0
  53. package/dist/graph-validation.js +1174 -0
  54. package/dist/graph-validation.js.map +1 -0
  55. package/dist/index.d.ts +27 -2
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +29 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/js-script-link.d.ts +53 -0
  60. package/dist/js-script-link.d.ts.map +1 -0
  61. package/dist/js-script-link.js +58 -0
  62. package/dist/js-script-link.js.map +1 -0
  63. package/dist/js-script-materialize.d.ts +52 -0
  64. package/dist/js-script-materialize.d.ts.map +1 -0
  65. package/dist/js-script-materialize.js +24 -0
  66. package/dist/js-script-materialize.js.map +1 -0
  67. package/dist/manifest-node-values.d.ts +106 -0
  68. package/dist/manifest-node-values.d.ts.map +1 -0
  69. package/dist/manifest-node-values.js +195 -0
  70. package/dist/manifest-node-values.js.map +1 -0
  71. package/dist/metadata.d.ts +75 -3
  72. package/dist/metadata.d.ts.map +1 -1
  73. package/dist/metadata.js +132 -49
  74. package/dist/metadata.js.map +1 -1
  75. package/dist/node-metadata.d.ts.map +1 -1
  76. package/dist/node-metadata.js +61 -56
  77. package/dist/node-metadata.js.map +1 -1
  78. package/dist/node-type-inventory.d.ts +51 -0
  79. package/dist/node-type-inventory.d.ts.map +1 -0
  80. package/dist/node-type-inventory.js +121 -0
  81. package/dist/node-type-inventory.js.map +1 -0
  82. package/dist/nodes/test-nodes.d.ts +77 -30
  83. package/dist/nodes/test-nodes.d.ts.map +1 -1
  84. package/dist/nodes/test-nodes.js +2 -34
  85. package/dist/nodes/test-nodes.js.map +1 -1
  86. package/dist/pack-loader.d.ts +202 -0
  87. package/dist/pack-loader.d.ts.map +1 -0
  88. package/dist/pack-loader.js +529 -0
  89. package/dist/pack-loader.js.map +1 -0
  90. package/dist/port-types.d.ts +15 -0
  91. package/dist/port-types.d.ts.map +1 -0
  92. package/dist/port-types.js +72 -0
  93. package/dist/port-types.js.map +1 -0
  94. package/dist/pricing-bundle.d.ts +83 -0
  95. package/dist/pricing-bundle.d.ts.map +1 -0
  96. package/dist/pricing-bundle.js +82 -0
  97. package/dist/pricing-bundle.js.map +1 -0
  98. package/dist/pricing-params.d.ts +59 -0
  99. package/dist/pricing-params.d.ts.map +1 -0
  100. package/dist/pricing-params.js +282 -0
  101. package/dist/pricing-params.js.map +1 -0
  102. package/dist/python-package-scan.d.ts +8 -0
  103. package/dist/python-package-scan.d.ts.map +1 -1
  104. package/dist/python-package-scan.js +21 -8
  105. package/dist/python-package-scan.js.map +1 -1
  106. package/dist/registry.d.ts +105 -2
  107. package/dist/registry.d.ts.map +1 -1
  108. package/dist/registry.js +403 -30
  109. package/dist/registry.js.map +1 -1
  110. package/dist/sandbox-bridge-packs.d.ts +39 -0
  111. package/dist/sandbox-bridge-packs.d.ts.map +1 -0
  112. package/dist/sandbox-bridge-packs.js +249 -0
  113. package/dist/sandbox-bridge-packs.js.map +1 -0
  114. package/dist/sandbox-catalog-host.d.ts +31 -0
  115. package/dist/sandbox-catalog-host.d.ts.map +1 -0
  116. package/dist/sandbox-catalog-host.js +78 -0
  117. package/dist/sandbox-catalog-host.js.map +1 -0
  118. package/dist/sandbox-module-catalog.d.ts +14 -0
  119. package/dist/sandbox-module-catalog.d.ts.map +1 -0
  120. package/dist/sandbox-module-catalog.js +402 -0
  121. package/dist/sandbox-module-catalog.js.map +1 -0
  122. package/dist/sandbox-npm-artifacts.d.ts +56 -0
  123. package/dist/sandbox-npm-artifacts.d.ts.map +1 -0
  124. package/dist/sandbox-npm-artifacts.js +17 -0
  125. package/dist/sandbox-npm-artifacts.js.map +1 -0
  126. package/dist/sandbox-pack-discovery.d.ts +93 -0
  127. package/dist/sandbox-pack-discovery.d.ts.map +1 -0
  128. package/dist/sandbox-pack-discovery.js +807 -0
  129. package/dist/sandbox-pack-discovery.js.map +1 -0
  130. package/dist/search.d.ts +29 -1
  131. package/dist/search.d.ts.map +1 -1
  132. package/dist/search.js +136 -9
  133. package/dist/search.js.map +1 -1
  134. package/dist/type-compat.d.ts +36 -0
  135. package/dist/type-compat.d.ts.map +1 -0
  136. package/dist/type-compat.js +98 -0
  137. package/dist/type-compat.js.map +1 -0
  138. package/dist/type-predicates.d.ts +25 -0
  139. package/dist/type-predicates.d.ts.map +1 -0
  140. package/dist/type-predicates.js +31 -0
  141. package/dist/type-predicates.js.map +1 -0
  142. package/dist/validation.d.ts +18 -0
  143. package/dist/validation.d.ts.map +1 -1
  144. package/dist/validation.js +70 -11
  145. package/dist/validation.js.map +1 -1
  146. package/dist/workflow-document-tools.d.ts +35 -0
  147. package/dist/workflow-document-tools.d.ts.map +1 -0
  148. package/dist/workflow-document-tools.js +402 -0
  149. package/dist/workflow-document-tools.js.map +1 -0
  150. package/dist/workflow-interface.d.ts +62 -0
  151. package/dist/workflow-interface.d.ts.map +1 -0
  152. package/dist/workflow-interface.js +351 -0
  153. package/dist/workflow-interface.js.map +1 -0
  154. package/package.json +67 -10
  155. package/dist/package-registry-client.d.ts +0 -12
  156. package/dist/package-registry-client.d.ts.map +0 -1
  157. package/dist/package-registry-client.js +0 -40
  158. package/dist/package-registry-client.js.map +0 -1
@@ -0,0 +1,402 @@
1
+ import { createHash } from "node:crypto";
2
+ import { sandboxDeliveryRefusal, sandboxGraphFileModuleId, parseSandboxGraphFileModuleId, sanitizeSandboxDescription, SandboxDeliveryMediaType } from "@nodetool-ai/protocol";
3
+ import { isPackTrusted, resolvePackTrust } from "./pack-loader.js";
4
+ /**
5
+ * Build the runtime catalog from validated, non-executing pack discoveries.
6
+ *
7
+ * `hostStatuses` carries diagnostics the host produced before discovery could
8
+ * run — an unreadable pack, a package name claimed by two roots — so
9
+ * `diagnostics()` reports one set covering everything the host looked at.
10
+ */
11
+ export function createSandboxModuleCatalog(discoveries, hostStatuses = [], options = {}) {
12
+ // Trust is the operator's pack-loader allowlist, resolved once per catalog so
13
+ // one build cannot disagree with itself about a pack.
14
+ const isTrusted = options.isTrusted ?? trustFromConfig();
15
+ const discoveredBySpecifier = new Map();
16
+ const unavailableSpecifiers = new Set();
17
+ const statuses = [...hostStatuses];
18
+ const packNames = new Set();
19
+ for (const discovery of discoveries) {
20
+ if (packNames.has(discovery.name)) {
21
+ throw new Error(`duplicate sandbox pack discovery: ${discovery.name}`);
22
+ }
23
+ packNames.add(discovery.name);
24
+ statuses.push(...discovery.statuses);
25
+ for (const module of discovery.modules) {
26
+ if (module.source === undefined && module.bytes === undefined) {
27
+ unavailableSpecifiers.add(module.specifier);
28
+ continue;
29
+ }
30
+ if (discoveredBySpecifier.has(module.specifier)) {
31
+ throw new Error(`duplicate sandbox module specifier: ${module.specifier}`);
32
+ }
33
+ discoveredBySpecifier.set(module.specifier, { discovery, module });
34
+ }
35
+ }
36
+ const packs = new Map();
37
+ for (const discovery of discoveries) {
38
+ packs.set(discovery.name, packDelivery(discovery));
39
+ }
40
+ const summaries = [...discoveredBySpecifier.values()]
41
+ .map(({ discovery, module }) => {
42
+ // The one-line tier: the skill's own description, flattened and capped.
43
+ // The body never travels with a summary — that is the tool's job.
44
+ const description = discovery.skill === undefined
45
+ ? ""
46
+ : sanitizeSandboxDescription(discovery.skill.description);
47
+ const summary = {
48
+ specifier: module.specifier,
49
+ packName: discovery.name,
50
+ kind: module.kind,
51
+ contentDigest: module.digest
52
+ };
53
+ if (discovery.version !== undefined) {
54
+ summary.packVersion = discovery.version;
55
+ }
56
+ if (description !== "") {
57
+ summary.description = description;
58
+ }
59
+ return summary;
60
+ })
61
+ .sort((left, right) => left.specifier.localeCompare(right.specifier));
62
+ const skillsByPack = new Map();
63
+ for (const discovery of discoveries) {
64
+ if (discovery.skill === undefined)
65
+ continue;
66
+ const disclosure = {
67
+ ...discovery.skill,
68
+ packName: discovery.name,
69
+ trusted: isTrusted(discovery.name)
70
+ };
71
+ if (discovery.version !== undefined) {
72
+ disclosure.packVersion = discovery.version;
73
+ }
74
+ skillsByPack.set(discovery.name, disclosure);
75
+ }
76
+ return {
77
+ summaries: () => summaries,
78
+ diagnostics: () => statuses,
79
+ packSkill: (packName) => skillsByPack.get(packName),
80
+ // Asynchronous by contract; the v1 entitlement decision is synchronous.
81
+ authorizeDelivery: (moduleId) => Promise.resolve(authorizeDelivery(moduleId, discoveredBySpecifier, unavailableSpecifiers, packs)),
82
+ resolveForExecution: (declarations) => {
83
+ const modules = [];
84
+ const resolutionStatuses = [];
85
+ const resolvedSpecifiers = new Set();
86
+ for (const declaration of declarations) {
87
+ if (resolvedSpecifiers.has(declaration.specifier))
88
+ continue;
89
+ resolvedSpecifiers.add(declaration.specifier);
90
+ const found = discoveredBySpecifier.get(declaration.specifier);
91
+ if (found === undefined) {
92
+ resolutionStatuses.push({
93
+ packName: packNameForSpecifier(declaration.specifier),
94
+ specifier: declaration.specifier,
95
+ status: "error",
96
+ code: unavailableSpecifiers.has(declaration.specifier)
97
+ ? "module-unavailable"
98
+ : "module-not-found",
99
+ message: unavailableSpecifiers.has(declaration.specifier)
100
+ ? `Sandbox module ${declaration.specifier} is not available for execution.`
101
+ : `Sandbox module ${declaration.specifier} is not installed.`
102
+ });
103
+ continue;
104
+ }
105
+ const { discovery, module } = found;
106
+ if (declaration.resolvedPackVersion !== undefined &&
107
+ declaration.resolvedPackVersion !== discovery.version) {
108
+ resolutionStatuses.push({
109
+ packName: discovery.name,
110
+ specifier: module.specifier,
111
+ status: "warning",
112
+ code: "version-mismatch",
113
+ message: `Sandbox module ${module.specifier} was saved with pack version ${declaration.resolvedPackVersion}, but ${discovery.version ?? "an unversioned pack"} is installed.`
114
+ });
115
+ }
116
+ if (declaration.contentDigest !== undefined &&
117
+ declaration.contentDigest !== module.digest) {
118
+ resolutionStatuses.push({
119
+ packName: discovery.name,
120
+ specifier: module.specifier,
121
+ status: "warning",
122
+ code: "content-digest-mismatch",
123
+ message: `Sandbox module ${module.specifier} has changed since the workflow was saved.`
124
+ });
125
+ }
126
+ modules.push(toResolvedModule(discovery, module));
127
+ }
128
+ return { modules, statuses: resolutionStatuses };
129
+ }
130
+ };
131
+ }
132
+ function trustFromConfig() {
133
+ const trust = resolvePackTrust();
134
+ return (packName) => isPackTrusted(packName, trust);
135
+ }
136
+ /**
137
+ * Index one pack's graph for delivery.
138
+ *
139
+ * Every file gets the graph digest of the public module that reaches it. A file
140
+ * shared by two entry modules belongs to both graphs and therefore has two
141
+ * candidate digests; the lexicographically first specifier wins, so the answer
142
+ * is stable across processes. The digest identifies the module graph a file was
143
+ * delivered as part of — it is never a hash of that one file.
144
+ */
145
+ function packDelivery(discovery) {
146
+ const filesById = new Map(discovery.graph.map((file) => [file.id, file]));
147
+ const digestByFileId = new Map();
148
+ const entries = [...discovery.modules]
149
+ // A compiled npm entry has no authored file, and a host module has no file
150
+ // at all — neither contributes a graph file to walk.
151
+ .filter((module) => module.npm === undefined && module.kind !== "host")
152
+ .sort((left, right) => left.specifier.localeCompare(right.specifier));
153
+ for (const module of entries) {
154
+ const pending = [module.id];
155
+ const seen = new Set();
156
+ for (let index = 0; index < pending.length; index += 1) {
157
+ const id = pending[index];
158
+ if (id === undefined || seen.has(id))
159
+ continue;
160
+ seen.add(id);
161
+ if (!digestByFileId.has(id))
162
+ digestByFileId.set(id, module.digest);
163
+ const file = filesById.get(id);
164
+ if (file !== undefined)
165
+ pending.push(...file.dependencies);
166
+ }
167
+ }
168
+ return { discovery, filesById, digestByFileId };
169
+ }
170
+ /**
171
+ * Resolve one opaque module id to browser-safe content.
172
+ *
173
+ * Public entry specifiers and internal graph-file ids are both deliverable: the
174
+ * browser loader needs the whole graph, not just the entry. v1 entitlement
175
+ * policy is that any request reaching the catalog is authorized — the seam
176
+ * exists so a later private-pack rule is a policy change, not new plumbing.
177
+ */
178
+ function authorizeDelivery(moduleId, discoveredBySpecifier, unavailableSpecifiers, packs) {
179
+ const entry = discoveredBySpecifier.get(moduleId);
180
+ if (entry !== undefined) {
181
+ const { discovery, module } = entry;
182
+ if (module.npm !== undefined) {
183
+ return sandboxDeliveryRefusal("unavailable", `Sandbox module ${moduleId} is not available for delivery.`);
184
+ }
185
+ if (module.kind === "host") {
186
+ // The facade is the only artifact a host module has; the client verifies
187
+ // and caches it like any other JavaScript, and `hostId` lets it rebuild
188
+ // the resolved module without a second request.
189
+ if (module.source === undefined || module.hostId === undefined) {
190
+ return sandboxDeliveryRefusal("unavailable", `Sandbox module ${moduleId} has no host facade.`);
191
+ }
192
+ const hostDelivery = {
193
+ authorized: true,
194
+ moduleId,
195
+ fileId: module.id,
196
+ internal: false,
197
+ packName: discovery.name,
198
+ contentDigest: module.digest,
199
+ contentSha256: sha256(Buffer.from(module.source, "utf8")),
200
+ dependencies: [],
201
+ kind: "host",
202
+ mediaType: SandboxDeliveryMediaType.JS,
203
+ hostId: module.hostId,
204
+ source: module.source
205
+ };
206
+ if (discovery.version !== undefined) {
207
+ hostDelivery.packVersion = discovery.version;
208
+ }
209
+ return hostDelivery;
210
+ }
211
+ const content = {
212
+ moduleId,
213
+ fileId: module.id,
214
+ // A public entry is the pack's advertised surface, never an internal file.
215
+ internal: false,
216
+ digest: module.digest,
217
+ kind: module.kind,
218
+ dependencies: module.dependencies
219
+ };
220
+ if (module.source !== undefined) {
221
+ content.source = module.source;
222
+ }
223
+ if (module.bytes !== undefined) {
224
+ content.bytes = module.bytes;
225
+ }
226
+ // Only a public entry carries the call contract the facade is built from.
227
+ if (module.wasm !== undefined) {
228
+ content.wasm = module.wasm;
229
+ }
230
+ return deliveryFor(discovery, content);
231
+ }
232
+ if (unavailableSpecifiers.has(moduleId)) {
233
+ return sandboxDeliveryRefusal("unavailable", `Sandbox module ${moduleId} is not available for delivery.`);
234
+ }
235
+ const parsed = parseSandboxGraphFileModuleId(moduleId);
236
+ const pack = parsed === undefined ? undefined : packs.get(parsed.packName);
237
+ const file = parsed === undefined || pack === undefined
238
+ ? undefined
239
+ : pack.filesById.get(parsed.fileId);
240
+ const digest = parsed === undefined || pack === undefined
241
+ ? undefined
242
+ : pack.digestByFileId.get(parsed.fileId);
243
+ if (parsed === undefined ||
244
+ pack === undefined ||
245
+ file === undefined ||
246
+ digest === undefined) {
247
+ return sandboxDeliveryRefusal("not-found", `Sandbox module ${moduleId} is not installed.`);
248
+ }
249
+ const content = {
250
+ moduleId,
251
+ fileId: parsed.fileId,
252
+ internal: file.internal,
253
+ digest,
254
+ kind: file.kind,
255
+ dependencies: file.dependencies
256
+ };
257
+ if (file.source !== undefined) {
258
+ content.source = file.source;
259
+ }
260
+ if (file.bytes !== undefined) {
261
+ content.bytes = file.bytes;
262
+ }
263
+ return deliveryFor(pack.discovery, content);
264
+ }
265
+ function deliveryFor(discovery, content) {
266
+ const common = {
267
+ authorized: true,
268
+ moduleId: content.moduleId,
269
+ fileId: content.fileId,
270
+ internal: content.internal,
271
+ packName: discovery.name,
272
+ contentDigest: content.digest,
273
+ dependencies: content.dependencies.map((dependency) => sandboxGraphFileModuleId(discovery.name, dependency))
274
+ };
275
+ if (discovery.version !== undefined) {
276
+ common.packVersion = discovery.version;
277
+ }
278
+ if (content.kind === "js") {
279
+ if (content.source === undefined) {
280
+ return sandboxDeliveryRefusal("unavailable", `Sandbox module ${content.moduleId} has no JavaScript source.`);
281
+ }
282
+ return {
283
+ ...common,
284
+ kind: "js",
285
+ mediaType: SandboxDeliveryMediaType.JS,
286
+ contentSha256: sha256(Buffer.from(content.source, "utf8")),
287
+ source: content.source
288
+ };
289
+ }
290
+ if (content.bytes === undefined) {
291
+ return sandboxDeliveryRefusal("unavailable", `Sandbox module ${content.moduleId} has no WASM bytes.`);
292
+ }
293
+ const wasmDelivery = {
294
+ ...common,
295
+ kind: "wasm",
296
+ mediaType: SandboxDeliveryMediaType.WASM,
297
+ contentSha256: sha256(content.bytes),
298
+ bytes: new Uint8Array(content.bytes)
299
+ };
300
+ if (content.wasm !== undefined) {
301
+ wasmDelivery.wasm = content.wasm;
302
+ }
303
+ return wasmDelivery;
304
+ }
305
+ /** Hash of exactly the bytes a client receives, so the client can check them. */
306
+ function sha256(bytes) {
307
+ return createHash("sha256").update(bytes).digest("hex");
308
+ }
309
+ function toResolvedModule(discovery, module) {
310
+ const graph = module.kind === "host" ? [] : moduleGraph(discovery.graph, module.id);
311
+ const common = {
312
+ specifier: module.specifier,
313
+ packName: discovery.name,
314
+ contentDigest: module.digest,
315
+ moduleId: module.id,
316
+ graph
317
+ };
318
+ if (discovery.version !== undefined) {
319
+ common.packVersion = discovery.version;
320
+ }
321
+ if (module.kind === "host") {
322
+ if (module.hostId === undefined) {
323
+ throw new Error(`sandbox module ${module.specifier} has no host module id`);
324
+ }
325
+ return { ...common, kind: "host", hostId: module.hostId };
326
+ }
327
+ if (module.kind === "js") {
328
+ if (module.source === undefined) {
329
+ throw new Error(`sandbox module ${module.specifier} has no JavaScript source`);
330
+ }
331
+ return { ...common, kind: "js", source: module.source };
332
+ }
333
+ if (module.bytes === undefined) {
334
+ throw new Error(`sandbox module ${module.specifier} has no WASM bytes`);
335
+ }
336
+ if (module.wasm === undefined) {
337
+ throw new Error(`sandbox module ${module.specifier} has no WASM call contract`);
338
+ }
339
+ return {
340
+ ...common,
341
+ kind: "wasm",
342
+ bytes: new Uint8Array(module.bytes),
343
+ wasm: module.wasm
344
+ };
345
+ }
346
+ function moduleGraph(graph, rootId) {
347
+ const filesById = new Map(graph.map((file) => [file.id, file]));
348
+ const pending = [rootId];
349
+ const reachable = new Set();
350
+ for (let index = 0; index < pending.length; index += 1) {
351
+ const id = pending[index];
352
+ if (id === undefined || reachable.has(id))
353
+ continue;
354
+ const file = filesById.get(id);
355
+ if (file === undefined) {
356
+ throw new Error(`sandbox graph is missing ${id}`);
357
+ }
358
+ reachable.add(id);
359
+ pending.push(...file.dependencies);
360
+ }
361
+ return [...reachable]
362
+ .map((id) => {
363
+ const file = filesById.get(id);
364
+ if (file === undefined) {
365
+ throw new Error(`sandbox graph is missing ${id}`);
366
+ }
367
+ return toGraphFile(file);
368
+ })
369
+ .sort((left, right) => left.id.localeCompare(right.id));
370
+ }
371
+ function toGraphFile(file) {
372
+ if (file.kind === "js") {
373
+ if (file.source === undefined) {
374
+ throw new Error(`sandbox graph file ${file.id} has no JavaScript source`);
375
+ }
376
+ return {
377
+ id: file.id,
378
+ kind: "js",
379
+ source: file.source,
380
+ dependencies: [...file.dependencies],
381
+ internal: file.internal
382
+ };
383
+ }
384
+ if (file.bytes === undefined) {
385
+ throw new Error(`sandbox graph file ${file.id} has no WASM bytes`);
386
+ }
387
+ return {
388
+ id: file.id,
389
+ kind: "wasm",
390
+ bytes: new Uint8Array(file.bytes),
391
+ dependencies: [...file.dependencies],
392
+ internal: file.internal
393
+ };
394
+ }
395
+ function packNameForSpecifier(specifier) {
396
+ if (specifier.startsWith("@")) {
397
+ const [scope, name] = specifier.split("/");
398
+ return name === undefined ? specifier : `${scope}/${name}`;
399
+ }
400
+ return specifier.split("/")[0] ?? specifier;
401
+ }
402
+ //# sourceMappingURL=sandbox-module-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-module-catalog.js","sourceRoot":"","sources":["../src/sandbox-module-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * The contract between the npm compiler and sandbox pack discovery.
3
+ *
4
+ * Discovery is synchronous and engine-free — it never runs esbuild and never
5
+ * starts QuickJS. A host that *can* do those things compiles ahead of time and
6
+ * injects the results here, so an npm-backed module joins the source graph the
7
+ * same way an authored file does. Nothing in this file imports a compiler.
8
+ */
9
+ /** A compiled npm module, ready to join a pack's source graph. */
10
+ export interface SandboxCompiledNpmArtifact {
11
+ /** The bundled ESM source, exactly as the guest will evaluate it. */
12
+ readonly source: string;
13
+ /** Contract version of the compiler that produced it. */
14
+ readonly compilerVersion: string;
15
+ /** Digest of the normalized build options and the esbuild version. */
16
+ readonly optionsDigest: string;
17
+ /** Digest of every input file's content that went into the bundle. */
18
+ readonly inputsDigest: string;
19
+ }
20
+ /**
21
+ * What a compiler concluded about one npm module declaration.
22
+ *
23
+ * A `skipped` outcome is a named reason — an import of a Node builtin, a bundle
24
+ * over the size cap, a forbidden global, a probe that threw — and it reaches the
25
+ * catalog as a skip, never as a discovery error.
26
+ */
27
+ export type SandboxNpmCompileOutcome = {
28
+ readonly status: "compiled";
29
+ readonly artifact: SandboxCompiledNpmArtifact;
30
+ /** Feature-detected forbidden globals: a heads-up, not a promise. */
31
+ readonly warnings?: readonly string[];
32
+ } | {
33
+ readonly status: "skipped";
34
+ readonly code: string;
35
+ readonly message: string;
36
+ };
37
+ /** What discovery knows about the npm module it is asking about. */
38
+ export interface SandboxNpmCompileRequest {
39
+ readonly packName: string;
40
+ readonly packDir: string;
41
+ readonly specifier: string;
42
+ readonly npmName: string;
43
+ }
44
+ /**
45
+ * Injected compiled-artifact lookup.
46
+ *
47
+ * `undefined` means "nothing compiled this yet" — discovery reports
48
+ * `pending-compile` and the module stays unavailable until a host with the
49
+ * compiler runs.
50
+ */
51
+ export type SandboxCompiledNpmLookup = (request: SandboxNpmCompileRequest) => SandboxNpmCompileOutcome | undefined;
52
+ /** The module id a compiled npm entry occupies in a pack's source graph. */
53
+ export declare function npmModuleId(npmName: string): string;
54
+ /** Whether a graph id belongs to an npm-compiled module. */
55
+ export declare function isNpmModuleId(id: string): boolean;
56
+ //# sourceMappingURL=sandbox-npm-artifacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-npm-artifacts.d.ts","sourceRoot":"","sources":["../src/sandbox-npm-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,kEAAkE;AAClE,MAAM,WAAW,0BAA0B;IACzC,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,sEAAsE;IACtE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,sEAAsE;IACtE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,MAAM,MAAM,wBAAwB,GAChC;IACE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,0BAA0B,CAAC;IAC9C,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEN,oEAAoE;AACpE,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACrC,OAAO,EAAE,wBAAwB,KAC9B,wBAAwB,GAAG,SAAS,CAAC;AAE1C,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEjD"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The contract between the npm compiler and sandbox pack discovery.
3
+ *
4
+ * Discovery is synchronous and engine-free — it never runs esbuild and never
5
+ * starts QuickJS. A host that *can* do those things compiles ahead of time and
6
+ * injects the results here, so an npm-backed module joins the source graph the
7
+ * same way an authored file does. Nothing in this file imports a compiler.
8
+ */
9
+ /** The module id a compiled npm entry occupies in a pack's source graph. */
10
+ export function npmModuleId(npmName) {
11
+ return `npm:${npmName}`;
12
+ }
13
+ /** Whether a graph id belongs to an npm-compiled module. */
14
+ export function isNpmModuleId(id) {
15
+ return id.startsWith("npm:");
16
+ }
17
+ //# sourceMappingURL=sandbox-npm-artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-npm-artifacts.js","sourceRoot":"","sources":["../src/sandbox-npm-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAqDH,4EAA4E;AAC5E,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,OAAO,OAAO,EAAE,CAAC;AAC1B,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,aAAa,CAAC,EAAU;IACtC,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,93 @@
1
+ import { type SandboxModuleManifest, type SandboxPackManifest, type SandboxPackSkill, type SandboxModuleStatus, type SandboxWasmContract } from "@nodetool-ai/protocol";
2
+ import { type SandboxCompiledNpmArtifact, type SandboxCompiledNpmLookup } from "./sandbox-npm-artifacts.js";
3
+ export { normalizeSandboxSpecifier } from "@nodetool-ai/protocol";
4
+ export { npmModuleId, isNpmModuleId, type SandboxCompiledNpmArtifact, type SandboxCompiledNpmLookup, type SandboxNpmCompileOutcome, type SandboxNpmCompileRequest } from "./sandbox-npm-artifacts.js";
5
+ /** Static resource limits enforced while discovering sandbox package artifacts. */
6
+ export declare const SANDBOX_PACKAGE_LIMITS: {
7
+ readonly authoredJsBytes: number;
8
+ readonly npmBundledJsBytes: number;
9
+ readonly wasmBytes: number;
10
+ readonly packBytes: number;
11
+ readonly skillBytes: number;
12
+ };
13
+ /** The id a host module carries in a pack's module table. Never a file path. */
14
+ export declare function hostModuleId(hostId: string): string;
15
+ /** One validated file in a discovered sandbox package's module graph. */
16
+ export interface SandboxDiscoveredFile {
17
+ readonly id: string;
18
+ readonly kind: "js" | "wasm";
19
+ readonly source?: string;
20
+ readonly bytes?: Uint8Array;
21
+ readonly dependencies: readonly string[];
22
+ readonly internal: boolean;
23
+ }
24
+ /** A public sandbox entry module discovered without executing pack code. */
25
+ export interface SandboxDiscoveredModule {
26
+ readonly specifier: string;
27
+ readonly kind: "js" | "wasm" | "host";
28
+ readonly id: string;
29
+ /** Digest of this public module and every transitive source it imports. */
30
+ readonly digest: string;
31
+ readonly file?: string;
32
+ readonly npm?: string;
33
+ readonly source?: string;
34
+ readonly bytes?: Uint8Array;
35
+ /** WASM modules only: the validated scalar call contract the host enforces. */
36
+ readonly wasm?: SandboxWasmContract;
37
+ /** Host modules only: the registry id whose implementation serves the calls. */
38
+ readonly hostId?: string;
39
+ readonly dependencies: readonly string[];
40
+ }
41
+ /** Validated sandbox artifacts and diagnostics read from one package directory. */
42
+ export interface SandboxPackDiscovery {
43
+ readonly name: string;
44
+ readonly version?: string;
45
+ readonly dir: string;
46
+ readonly modules: readonly SandboxDiscoveredModule[];
47
+ /** Complete source graph, including transitive and internal files. */
48
+ readonly graph: readonly SandboxDiscoveredFile[];
49
+ readonly internal: readonly string[];
50
+ readonly digest: string;
51
+ readonly statuses: readonly SandboxModuleStatus[];
52
+ /**
53
+ * The pack's parsed SKILL.md, absent when it is missing or does not parse.
54
+ * A skill is documentation: a frontmatter typo is a warning, never a reason
55
+ * to withhold modules that are otherwise valid.
56
+ */
57
+ readonly skill?: SandboxPackSkill;
58
+ }
59
+ /** Raised when a sandbox package's static artifacts violate the discovery contract. */
60
+ export declare class SandboxPackDiscoveryError extends Error {
61
+ constructor(message: string, options?: {
62
+ cause?: unknown;
63
+ });
64
+ }
65
+ /** Host-supplied input discovery cannot produce on its own. */
66
+ export interface SandboxPackDiscoveryOptions {
67
+ /**
68
+ * Compiled npm artifacts, keyed by pack and dependency name.
69
+ *
70
+ * Discovery stays synchronous and engine-free: it never runs esbuild and
71
+ * never starts QuickJS. A host that already compiled injects the results
72
+ * here; without them an npm entry is reported as `pending-compile`.
73
+ */
74
+ readonly compiled?: SandboxCompiledNpmLookup;
75
+ }
76
+ /** Discover a single installed pack without importing or executing pack code. */
77
+ export declare function discoverSandboxPack(packDir: string, options?: SandboxPackDiscoveryOptions): SandboxPackDiscovery | undefined;
78
+ /** Discover sandbox modules from package directories without ambiguous pack ownership. */
79
+ export declare function discoverSandboxPacks(packageDirs: readonly string[], options?: SandboxPackDiscoveryOptions): SandboxPackDiscovery[];
80
+ /** Compute the canonical digest for a complete sandbox package graph. */
81
+ export declare function computeSandboxModuleGraphDigest(modules: readonly SandboxDiscoveredModule[], files: ReadonlyMap<string, {
82
+ bytes: Uint8Array;
83
+ kind?: "js" | "wasm";
84
+ }>, internal: ReadonlySet<string>, metadata?: {
85
+ manifest?: SandboxPackManifest;
86
+ packageName?: string;
87
+ packageVersion?: string;
88
+ /** Compiler identity per compiled npm module id, keyed by graph id. */
89
+ npmArtifacts?: ReadonlyMap<string, SandboxCompiledNpmArtifact>;
90
+ }): string;
91
+ /** Parse one untrusted sandbox-module declaration at the package boundary. */
92
+ export declare function sandboxModuleManifest(value: unknown): SandboxModuleManifest;
93
+ //# sourceMappingURL=sandbox-pack-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-pack-discovery.d.ts","sourceRoot":"","sources":["../src/sandbox-pack-discovery.ts"],"names":[],"mappings":"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"}