@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,249 @@
1
+ /**
2
+ * The library packs NodeTool ships, by specifier.
3
+ *
4
+ * Presence is never assumed. A workflow can declare `@nodetool-ai/sandbox-yaml`
5
+ * on a machine where nobody installed it, and the catalog answers "not
6
+ * installed" — true, and useless. This table is what turns that answer into the
7
+ * next step: install this package. It is a list of names, not a resolution
8
+ * path — nothing here loads, resolves, or vouches for a pack.
9
+ */
10
+ export const BRIDGE_PACKS = [
11
+ {
12
+ specifier: "@nodetool-ai/sandbox-aws",
13
+ packName: "@nodetool-ai/sandbox-aws",
14
+ library: "NodeTool's SigV4 signer",
15
+ runs: "host"
16
+ },
17
+ {
18
+ specifier: "@nodetool-ai/sandbox-chrono",
19
+ packName: "@nodetool-ai/sandbox-chrono",
20
+ library: "chrono-node",
21
+ runs: "host"
22
+ },
23
+ {
24
+ specifier: "@nodetool-ai/sandbox-color",
25
+ packName: "@nodetool-ai/sandbox-color",
26
+ library: "culori",
27
+ runs: "guest"
28
+ },
29
+ {
30
+ specifier: "@nodetool-ai/sandbox-csv",
31
+ packName: "@nodetool-ai/sandbox-csv",
32
+ library: "papaparse",
33
+ runs: "host"
34
+ },
35
+ {
36
+ specifier: "@nodetool-ai/sandbox-dates",
37
+ packName: "@nodetool-ai/sandbox-dates",
38
+ library: "date-fns",
39
+ runs: "guest"
40
+ },
41
+ {
42
+ specifier: "@nodetool-ai/sandbox-decimal",
43
+ packName: "@nodetool-ai/sandbox-decimal",
44
+ library: "decimal.js",
45
+ runs: "guest"
46
+ },
47
+ {
48
+ specifier: "@nodetool-ai/sandbox-diff",
49
+ packName: "@nodetool-ai/sandbox-diff",
50
+ library: "diff",
51
+ runs: "host"
52
+ },
53
+ {
54
+ specifier: "@nodetool-ai/sandbox-docx",
55
+ packName: "@nodetool-ai/sandbox-docx",
56
+ library: "docx",
57
+ runs: "host"
58
+ },
59
+ {
60
+ specifier: "@nodetool-ai/sandbox-epub",
61
+ packName: "@nodetool-ai/sandbox-epub",
62
+ library: "epub2",
63
+ runs: "host"
64
+ },
65
+ {
66
+ specifier: "@nodetool-ai/sandbox-exif",
67
+ packName: "@nodetool-ai/sandbox-exif",
68
+ library: "exifr",
69
+ runs: "host"
70
+ },
71
+ {
72
+ specifier: "@nodetool-ai/sandbox-expr",
73
+ packName: "@nodetool-ai/sandbox-expr",
74
+ library: "expr-eval",
75
+ runs: "host"
76
+ },
77
+ {
78
+ specifier: "@nodetool-ai/sandbox-fabric",
79
+ packName: "@nodetool-ai/sandbox-fabric",
80
+ library: "fabric",
81
+ runs: "host"
82
+ },
83
+ {
84
+ specifier: "@nodetool-ai/sandbox-gif",
85
+ packName: "@nodetool-ai/sandbox-gif",
86
+ library: "gifenc",
87
+ runs: "guest"
88
+ },
89
+ {
90
+ specifier: "@nodetool-ai/sandbox-game",
91
+ packName: "@nodetool-ai/sandbox-game",
92
+ library: "NodeTool's game builder",
93
+ runs: "guest",
94
+ source: "authored"
95
+ },
96
+ {
97
+ specifier: "@nodetool-ai/sandbox-html",
98
+ packName: "@nodetool-ai/sandbox-html",
99
+ library: "cheerio + turndown",
100
+ runs: "host"
101
+ },
102
+ {
103
+ specifier: "@nodetool-ai/sandbox-ics",
104
+ packName: "@nodetool-ai/sandbox-ics",
105
+ library: "ics",
106
+ runs: "host"
107
+ },
108
+ {
109
+ specifier: "@nodetool-ai/sandbox-jmespath",
110
+ packName: "@nodetool-ai/sandbox-jmespath",
111
+ library: "jmespath",
112
+ runs: "guest"
113
+ },
114
+ {
115
+ specifier: "@nodetool-ai/sandbox-mammoth",
116
+ packName: "@nodetool-ai/sandbox-mammoth",
117
+ library: "mammoth",
118
+ runs: "host"
119
+ },
120
+ {
121
+ specifier: "@nodetool-ai/sandbox-markdown",
122
+ packName: "@nodetool-ai/sandbox-markdown",
123
+ library: "marked",
124
+ runs: "guest"
125
+ },
126
+ {
127
+ specifier: "@nodetool-ai/sandbox-notion",
128
+ packName: "@nodetool-ai/sandbox-notion",
129
+ library: "NodeTool's Notion helper",
130
+ runs: "host"
131
+ },
132
+ {
133
+ specifier: "@nodetool-ai/sandbox-ocr",
134
+ packName: "@nodetool-ai/sandbox-ocr",
135
+ library: "tesseract.js",
136
+ runs: "host"
137
+ },
138
+ {
139
+ specifier: "@nodetool-ai/sandbox-pdf",
140
+ packName: "@nodetool-ai/sandbox-pdf",
141
+ library: "pdf-parse",
142
+ runs: "host"
143
+ },
144
+ {
145
+ specifier: "@nodetool-ai/sandbox-pdflib",
146
+ packName: "@nodetool-ai/sandbox-pdflib",
147
+ library: "pdf-lib",
148
+ runs: "host"
149
+ },
150
+ {
151
+ specifier: "@nodetool-ai/sandbox-pptx",
152
+ packName: "@nodetool-ai/sandbox-pptx",
153
+ library: "office-text-extractor",
154
+ runs: "host"
155
+ },
156
+ {
157
+ specifier: "@nodetool-ai/sandbox-pptxgen",
158
+ packName: "@nodetool-ai/sandbox-pptxgen",
159
+ library: "pptxgenjs",
160
+ runs: "host"
161
+ },
162
+ {
163
+ specifier: "@nodetool-ai/sandbox-qr",
164
+ packName: "@nodetool-ai/sandbox-qr",
165
+ library: "uqr",
166
+ runs: "guest"
167
+ },
168
+ {
169
+ specifier: "@nodetool-ai/sandbox-rrule",
170
+ packName: "@nodetool-ai/sandbox-rrule",
171
+ library: "rrule",
172
+ runs: "guest"
173
+ },
174
+ {
175
+ specifier: "@nodetool-ai/sandbox-stats",
176
+ packName: "@nodetool-ai/sandbox-stats",
177
+ library: "simple-statistics",
178
+ runs: "guest"
179
+ },
180
+ {
181
+ specifier: "@nodetool-ai/sandbox-subtitle",
182
+ packName: "@nodetool-ai/sandbox-subtitle",
183
+ library: "subtitle",
184
+ runs: "host"
185
+ },
186
+ {
187
+ specifier: "@nodetool-ai/sandbox-supabase",
188
+ packName: "@nodetool-ai/sandbox-supabase",
189
+ library: "NodeTool's PostgREST helper",
190
+ runs: "host"
191
+ },
192
+ {
193
+ specifier: "@nodetool-ai/sandbox-tfjs",
194
+ packName: "@nodetool-ai/sandbox-tfjs",
195
+ library: "@tensorflow/tfjs",
196
+ runs: "host"
197
+ },
198
+ {
199
+ specifier: "@nodetool-ai/sandbox-tokens",
200
+ packName: "@nodetool-ai/sandbox-tokens",
201
+ library: "js-tiktoken",
202
+ runs: "host"
203
+ },
204
+ {
205
+ specifier: "@nodetool-ai/sandbox-twilio",
206
+ packName: "@nodetool-ai/sandbox-twilio",
207
+ library: "NodeTool's Twilio helper",
208
+ runs: "host"
209
+ },
210
+ {
211
+ specifier: "@nodetool-ai/sandbox-xlsx",
212
+ packName: "@nodetool-ai/sandbox-xlsx",
213
+ library: "exceljs",
214
+ runs: "host"
215
+ },
216
+ {
217
+ specifier: "@nodetool-ai/sandbox-xml",
218
+ packName: "@nodetool-ai/sandbox-xml",
219
+ library: "fast-xml-parser",
220
+ runs: "host"
221
+ },
222
+ {
223
+ specifier: "@nodetool-ai/sandbox-yaml",
224
+ packName: "@nodetool-ai/sandbox-yaml",
225
+ library: "js-yaml",
226
+ runs: "guest"
227
+ },
228
+ {
229
+ specifier: "@nodetool-ai/sandbox-zip",
230
+ packName: "@nodetool-ai/sandbox-zip",
231
+ library: "fflate",
232
+ runs: "host"
233
+ }
234
+ ];
235
+ const BY_SPECIFIER = new Map(BRIDGE_PACKS.map((pack) => [pack.specifier, pack]));
236
+ /** The bridge pack a specifier names, or undefined for anything else. */
237
+ export function bridgePackFor(specifier) {
238
+ return BY_SPECIFIER.get(specifier);
239
+ }
240
+ /**
241
+ * What to do about a specifier no installed pack offers, when NodeTool ships one
242
+ * under that name. Anything else gets no hint — a guess at a package name is
243
+ * worse than silence.
244
+ */
245
+ export function installHintFor(specifier) {
246
+ const pack = bridgePackFor(specifier);
247
+ return pack === undefined ? undefined : `Install ${pack.packName} to use it.`;
248
+ }
249
+ //# sourceMappingURL=sandbox-bridge-packs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-bridge-packs.js","sourceRoot":"","sources":["../src/sandbox-bridge-packs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * The concrete {@link SandboxModuleCatalog} host: scan the pack search paths,
3
+ * discover every sandbox package without executing any of its code, and build
4
+ * one catalog from the result.
5
+ *
6
+ * A host calls this once where packs are discovered and injects the catalog
7
+ * into execution and validation. Discovery failures never throw here — a pack
8
+ * that violates the static contract, and a package name found under two roots,
9
+ * both become catalog diagnostics. Shadowing is deliberately *not* resolved by
10
+ * scan order: two roots claiming one package name is an error the operator has
11
+ * to fix, not a silent nearest-wins pick. The one exception is the root of
12
+ * packs shipped with NodeTool, which every host carries and nobody chose: an
13
+ * installed pack of the same name simply wins.
14
+ */
15
+ import type { SandboxModuleStatus } from "@nodetool-ai/protocol";
16
+ import type { SandboxModuleCatalog } from "@nodetool-ai/runtime";
17
+ import { type SandboxPackDiscovery, type SandboxPackDiscoveryOptions } from "./sandbox-pack-discovery.js";
18
+ /** What a host keeps after building the catalog. */
19
+ export interface SandboxCatalogHost {
20
+ readonly catalog: SandboxModuleCatalog;
21
+ /** The packs that made it into the catalog. */
22
+ readonly discoveries: readonly SandboxPackDiscovery[];
23
+ /** Discovery-level failures, already folded into `catalog.diagnostics()`. */
24
+ readonly failures: readonly SandboxModuleStatus[];
25
+ }
26
+ /**
27
+ * Discover sandbox packs across `searchPaths` (default: the same roots the node
28
+ * pack loader walks) and build the catalog over them.
29
+ */
30
+ export declare function discoverSandboxCatalog(searchPaths?: readonly string[], options?: SandboxPackDiscoveryOptions): SandboxCatalogHost;
31
+ //# sourceMappingURL=sandbox-catalog-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-catalog-host.d.ts","sourceRoot":"","sources":["../src/sandbox-catalog-host.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAQjE,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EACjC,MAAM,6BAA6B,CAAC;AAErC,oDAAoD;AACpD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,+CAA+C;IAC/C,QAAQ,CAAC,WAAW,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACtD,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACnD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,GAAE,SAAS,MAAM,EAA6B,EACzD,OAAO,GAAE,2BAAgC,GACxC,kBAAkB,CAwDpB"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * The concrete {@link SandboxModuleCatalog} host: scan the pack search paths,
3
+ * discover every sandbox package without executing any of its code, and build
4
+ * one catalog from the result.
5
+ *
6
+ * A host calls this once where packs are discovered and injects the catalog
7
+ * into execution and validation. Discovery failures never throw here — a pack
8
+ * that violates the static contract, and a package name found under two roots,
9
+ * both become catalog diagnostics. Shadowing is deliberately *not* resolved by
10
+ * scan order: two roots claiming one package name is an error the operator has
11
+ * to fix, not a silent nearest-wins pick. The one exception is the root of
12
+ * packs shipped with NodeTool, which every host carries and nobody chose: an
13
+ * installed pack of the same name simply wins.
14
+ */
15
+ import { defaultPackSearchPaths, listPackageDirs, shippedPackSearchPaths } from "./pack-loader.js";
16
+ import { createSandboxModuleCatalog } from "./sandbox-module-catalog.js";
17
+ import { discoverSandboxPack } from "./sandbox-pack-discovery.js";
18
+ /**
19
+ * Discover sandbox packs across `searchPaths` (default: the same roots the node
20
+ * pack loader walks) and build the catalog over them.
21
+ */
22
+ export function discoverSandboxCatalog(searchPaths = defaultPackSearchPaths(), options = {}) {
23
+ const failures = [];
24
+ const byName = new Map();
25
+ const duplicated = new Set();
26
+ const shippedRoots = new Set(shippedPackSearchPaths());
27
+ for (const nodeModules of searchPaths) {
28
+ const shipped = shippedRoots.has(nodeModules);
29
+ for (const packageDir of listPackageDirs(nodeModules)) {
30
+ let discovery;
31
+ try {
32
+ discovery = discoverSandboxPack(packageDir, options);
33
+ }
34
+ catch (error) {
35
+ failures.push({
36
+ packName: packageDir,
37
+ status: "error",
38
+ code: "discovery-failed",
39
+ message: error instanceof Error ? error.message : String(error)
40
+ });
41
+ continue;
42
+ }
43
+ if (discovery === undefined)
44
+ continue;
45
+ const existing = byName.get(discovery.name);
46
+ if (existing === undefined) {
47
+ byName.set(discovery.name, { discovery, shipped });
48
+ continue;
49
+ }
50
+ if (existing.discovery.dir === discovery.dir)
51
+ continue;
52
+ // A pack that ships with the app is the fallback copy, not a rival claim:
53
+ // when the same name is also installed, the installed one wins and no
54
+ // diagnostic is raised. Only two claims of equal standing are an error.
55
+ if (existing.shipped !== shipped) {
56
+ if (existing.shipped)
57
+ byName.set(discovery.name, { discovery, shipped });
58
+ continue;
59
+ }
60
+ duplicated.add(discovery.name);
61
+ failures.push({
62
+ packName: discovery.name,
63
+ status: "error",
64
+ code: "duplicate-pack",
65
+ message: `Sandbox package ${discovery.name} was found in ${existing.discovery.dir} and ${discovery.dir}. Remove one before its modules can resolve.`
66
+ });
67
+ }
68
+ }
69
+ for (const name of duplicated)
70
+ byName.delete(name);
71
+ const discoveries = [...byName.values()].map((entry) => entry.discovery);
72
+ return {
73
+ catalog: createSandboxModuleCatalog(discoveries, failures),
74
+ discoveries,
75
+ failures
76
+ };
77
+ }
78
+ //# sourceMappingURL=sandbox-catalog-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-catalog-host.js","sourceRoot":"","sources":["../src/sandbox-catalog-host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type SandboxModuleStatus } from "@nodetool-ai/protocol";
2
+ import type { SandboxModuleCatalog } from "@nodetool-ai/runtime";
3
+ import type { SandboxPackDiscovery } from "./sandbox-pack-discovery.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 declare function createSandboxModuleCatalog(discoveries: readonly SandboxPackDiscovery[], hostStatuses?: readonly SandboxModuleStatus[], options?: {
12
+ isTrusted?: (packName: string) => boolean;
13
+ }): SandboxModuleCatalog;
14
+ //# sourceMappingURL=sandbox-module-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-module-catalog.d.ts","sourceRoot":"","sources":["../src/sandbox-module-catalog.ts"],"names":[],"mappings":"AAEA,OAAO,EASL,KAAK,mBAAmB,EAKzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAIjE,OAAO,KAAK,EAGV,oBAAoB,EACrB,MAAM,6BAA6B,CAAC;AAErC;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,SAAS,oBAAoB,EAAE,EAC5C,YAAY,GAAE,SAAS,mBAAmB,EAAO,EACjD,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;CAAO,GAC1D,oBAAoB,CAoJtB"}