@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.
- package/README.md +34 -0
- package/dist/.nodetool-build-stamp +1 -0
- package/dist/base-node.d.ts +285 -14
- package/dist/base-node.d.ts.map +1 -1
- package/dist/base-node.js +359 -49
- package/dist/base-node.js.map +1 -1
- package/dist/class-name-to-title.d.ts +26 -0
- package/dist/class-name-to-title.d.ts.map +1 -0
- package/dist/class-name-to-title.js +59 -0
- package/dist/class-name-to-title.js.map +1 -0
- package/dist/code-analysis.d.ts +234 -0
- package/dist/code-analysis.d.ts.map +1 -0
- package/dist/code-analysis.js +919 -0
- package/dist/code-analysis.js.map +1 -0
- package/dist/code-body.d.ts +61 -0
- package/dist/code-body.d.ts.map +1 -0
- package/dist/code-body.js +288 -0
- package/dist/code-body.js.map +1 -0
- package/dist/code-node-validation.d.ts +67 -0
- package/dist/code-node-validation.d.ts.map +1 -0
- package/dist/code-node-validation.js +540 -0
- package/dist/code-node-validation.js.map +1 -0
- package/dist/content-card.d.ts +30 -0
- package/dist/content-card.d.ts.map +1 -0
- package/dist/content-card.js +68 -0
- package/dist/content-card.js.map +1 -0
- package/dist/correlation-validation.d.ts +19 -0
- package/dist/correlation-validation.d.ts.map +1 -0
- package/dist/correlation-validation.js +101 -0
- package/dist/correlation-validation.js.map +1 -0
- package/dist/cost-estimate.d.ts +244 -0
- package/dist/cost-estimate.d.ts.map +1 -0
- package/dist/cost-estimate.js +637 -0
- package/dist/cost-estimate.js.map +1 -0
- package/dist/decorators.d.ts.map +1 -1
- package/dist/decorators.js +4 -1
- package/dist/decorators.js.map +1 -1
- package/dist/docs/nodes.d.ts.map +1 -1
- package/dist/docs/nodes.js +3 -2
- package/dist/docs/nodes.js.map +1 -1
- package/dist/docs/overview.d.ts.map +1 -1
- package/dist/docs/overview.js +4 -3
- package/dist/docs/overview.js.map +1 -1
- package/dist/docs/workflows.d.ts.map +1 -1
- package/dist/docs/workflows.js +10 -9
- package/dist/docs/workflows.js.map +1 -1
- package/dist/field-classification.d.ts +31 -0
- package/dist/field-classification.d.ts.map +1 -0
- package/dist/field-classification.js +58 -0
- package/dist/field-classification.js.map +1 -0
- package/dist/graph-validation.d.ts +239 -0
- package/dist/graph-validation.d.ts.map +1 -0
- package/dist/graph-validation.js +1174 -0
- package/dist/graph-validation.js.map +1 -0
- package/dist/index.d.ts +27 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -1
- package/dist/index.js.map +1 -1
- package/dist/js-script-link.d.ts +53 -0
- package/dist/js-script-link.d.ts.map +1 -0
- package/dist/js-script-link.js +58 -0
- package/dist/js-script-link.js.map +1 -0
- package/dist/js-script-materialize.d.ts +52 -0
- package/dist/js-script-materialize.d.ts.map +1 -0
- package/dist/js-script-materialize.js +24 -0
- package/dist/js-script-materialize.js.map +1 -0
- package/dist/manifest-node-values.d.ts +106 -0
- package/dist/manifest-node-values.d.ts.map +1 -0
- package/dist/manifest-node-values.js +195 -0
- package/dist/manifest-node-values.js.map +1 -0
- package/dist/metadata.d.ts +75 -3
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.js +132 -49
- package/dist/metadata.js.map +1 -1
- package/dist/node-metadata.d.ts.map +1 -1
- package/dist/node-metadata.js +61 -56
- package/dist/node-metadata.js.map +1 -1
- package/dist/node-type-inventory.d.ts +51 -0
- package/dist/node-type-inventory.d.ts.map +1 -0
- package/dist/node-type-inventory.js +121 -0
- package/dist/node-type-inventory.js.map +1 -0
- package/dist/nodes/test-nodes.d.ts +77 -30
- package/dist/nodes/test-nodes.d.ts.map +1 -1
- package/dist/nodes/test-nodes.js +2 -34
- package/dist/nodes/test-nodes.js.map +1 -1
- package/dist/pack-loader.d.ts +202 -0
- package/dist/pack-loader.d.ts.map +1 -0
- package/dist/pack-loader.js +529 -0
- package/dist/pack-loader.js.map +1 -0
- package/dist/port-types.d.ts +15 -0
- package/dist/port-types.d.ts.map +1 -0
- package/dist/port-types.js +72 -0
- package/dist/port-types.js.map +1 -0
- package/dist/pricing-bundle.d.ts +83 -0
- package/dist/pricing-bundle.d.ts.map +1 -0
- package/dist/pricing-bundle.js +82 -0
- package/dist/pricing-bundle.js.map +1 -0
- package/dist/pricing-params.d.ts +59 -0
- package/dist/pricing-params.d.ts.map +1 -0
- package/dist/pricing-params.js +282 -0
- package/dist/pricing-params.js.map +1 -0
- package/dist/python-package-scan.d.ts +8 -0
- package/dist/python-package-scan.d.ts.map +1 -1
- package/dist/python-package-scan.js +21 -8
- package/dist/python-package-scan.js.map +1 -1
- package/dist/registry.d.ts +105 -2
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +403 -30
- package/dist/registry.js.map +1 -1
- package/dist/sandbox-bridge-packs.d.ts +39 -0
- package/dist/sandbox-bridge-packs.d.ts.map +1 -0
- package/dist/sandbox-bridge-packs.js +249 -0
- package/dist/sandbox-bridge-packs.js.map +1 -0
- package/dist/sandbox-catalog-host.d.ts +31 -0
- package/dist/sandbox-catalog-host.d.ts.map +1 -0
- package/dist/sandbox-catalog-host.js +78 -0
- package/dist/sandbox-catalog-host.js.map +1 -0
- package/dist/sandbox-module-catalog.d.ts +14 -0
- package/dist/sandbox-module-catalog.d.ts.map +1 -0
- package/dist/sandbox-module-catalog.js +402 -0
- package/dist/sandbox-module-catalog.js.map +1 -0
- package/dist/sandbox-npm-artifacts.d.ts +56 -0
- package/dist/sandbox-npm-artifacts.d.ts.map +1 -0
- package/dist/sandbox-npm-artifacts.js +17 -0
- package/dist/sandbox-npm-artifacts.js.map +1 -0
- package/dist/sandbox-pack-discovery.d.ts +93 -0
- package/dist/sandbox-pack-discovery.d.ts.map +1 -0
- package/dist/sandbox-pack-discovery.js +807 -0
- package/dist/sandbox-pack-discovery.js.map +1 -0
- package/dist/search.d.ts +29 -1
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +136 -9
- package/dist/search.js.map +1 -1
- package/dist/type-compat.d.ts +36 -0
- package/dist/type-compat.d.ts.map +1 -0
- package/dist/type-compat.js +98 -0
- package/dist/type-compat.js.map +1 -0
- package/dist/type-predicates.d.ts +25 -0
- package/dist/type-predicates.d.ts.map +1 -0
- package/dist/type-predicates.js +31 -0
- package/dist/type-predicates.js.map +1 -0
- package/dist/validation.d.ts +18 -0
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +70 -11
- package/dist/validation.js.map +1 -1
- package/dist/workflow-document-tools.d.ts +35 -0
- package/dist/workflow-document-tools.d.ts.map +1 -0
- package/dist/workflow-document-tools.js +402 -0
- package/dist/workflow-document-tools.js.map +1 -0
- package/dist/workflow-interface.d.ts +62 -0
- package/dist/workflow-interface.d.ts.map +1 -0
- package/dist/workflow-interface.js +351 -0
- package/dist/workflow-interface.js.map +1 -0
- package/package.json +67 -10
- package/dist/package-registry-client.d.ts +0 -12
- package/dist/package-registry-client.d.ts.map +0 -1
- package/dist/package-registry-client.js +0 -40
- package/dist/package-registry-client.js.map +0 -1
package/dist/registry.js
CHANGED
|
@@ -1,15 +1,34 @@
|
|
|
1
|
+
import { supportsPlatform } from "@nodetool-ai/protocol";
|
|
2
|
+
import { mergeDerivedSlots } from "@nodetool-ai/kernel";
|
|
3
|
+
import { hasStreamingOutput } from "./base-node.js";
|
|
1
4
|
import { loadPythonPackageMetadata } from "./metadata.js";
|
|
2
5
|
import { getNodeMetadata } from "./node-metadata.js";
|
|
6
|
+
import { NodeSearchIndex } from "./search.js";
|
|
3
7
|
export class NodeRegistry {
|
|
4
8
|
_classes = new Map();
|
|
5
9
|
_loadedMetadataByType = new Map();
|
|
6
10
|
_registeredMetadataByType = new Map();
|
|
11
|
+
_loadedMetadataSourceByType = new Map();
|
|
12
|
+
_registeredMetadataSourceByType = new Map();
|
|
13
|
+
_loadedPackageIdByType = new Map();
|
|
14
|
+
_registeredPackageIdByType = new Map();
|
|
15
|
+
_activePackageId;
|
|
7
16
|
_strictMetadata;
|
|
17
|
+
_revision = 0;
|
|
18
|
+
// Memoized derived views of the metadata maps above. Both are O(n) to build,
|
|
19
|
+
// and `listMetadata`/`searchMetadata` are called many times per graph build
|
|
20
|
+
// (the planner searches the same registry 5–10× per attempt). They are
|
|
21
|
+
// rebuilt lazily and invalidated by every mutation (`register`, `unregister`,
|
|
22
|
+
// `clear`, `loadMetadata`, `loadPythonMetadata`).
|
|
23
|
+
_mergedMetadataCache = null;
|
|
24
|
+
_searchIndexCache = null;
|
|
8
25
|
constructor(options = {}) {
|
|
26
|
+
// Stryker disable next-line LogicalOperator,BooleanLiteral: _strictMetadata only gated the (unreachable) strict-throw branch, so its value has no observable effect — the default is inert (equivalent).
|
|
9
27
|
this._strictMetadata = options.strictMetadata ?? false;
|
|
10
28
|
if (options.metadataByType) {
|
|
11
29
|
for (const [nodeType, metadata] of options.metadataByType.entries()) {
|
|
12
30
|
this._loadedMetadataByType.set(nodeType, metadata);
|
|
31
|
+
this._loadedMetadataSourceByType.set(nodeType, "loaded-metadata");
|
|
13
32
|
}
|
|
14
33
|
}
|
|
15
34
|
}
|
|
@@ -17,17 +36,81 @@ export class NodeRegistry {
|
|
|
17
36
|
if (!nodeClass.nodeType) {
|
|
18
37
|
throw new Error(`Cannot register node class without nodeType: ${nodeClass.name}`);
|
|
19
38
|
}
|
|
39
|
+
// Last write wins (needed for hot reload), but warn so accidental node
|
|
40
|
+
// type collisions between packages don't go unnoticed.
|
|
41
|
+
const existing = this._classes.get(nodeClass.nodeType);
|
|
42
|
+
if (existing && existing !== nodeClass) {
|
|
43
|
+
console.warn(
|
|
44
|
+
// Stryker disable next-line StringLiteral: operator diagnostic text only.
|
|
45
|
+
`[NodeRegistry] Replacing existing registration for node type: ${nodeClass.nodeType}`);
|
|
46
|
+
}
|
|
20
47
|
// TS class definitions are the source of truth for TS nodes.
|
|
21
48
|
// Python metadata is NOT merged — it is only used for Python-only
|
|
22
49
|
// node packs (huggingface, mlx, etc.) that have no TS class.
|
|
23
50
|
const metadata = options.metadata ?? getNodeMetadata(nodeClass);
|
|
51
|
+
// Stryker disable ConditionalExpression,BlockStatement,StringLiteral: getNodeMetadata always returns a populated object for a valid class, so `metadata` is always truthy and the strict-mode else branch is unreachable dead defensive code.
|
|
24
52
|
if (metadata) {
|
|
25
53
|
this._registeredMetadataByType.set(nodeClass.nodeType, metadata);
|
|
54
|
+
this._registeredMetadataSourceByType.set(nodeClass.nodeType, options.source ?? "typescript");
|
|
55
|
+
const packageId = options.packageId ?? this._activePackageId;
|
|
56
|
+
if (packageId?.trim()) {
|
|
57
|
+
this._registeredPackageIdByType.set(nodeClass.nodeType, packageId.trim());
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
this._registeredPackageIdByType.delete(nodeClass.nodeType);
|
|
61
|
+
}
|
|
26
62
|
}
|
|
27
63
|
else if (this._strictMetadata) {
|
|
28
64
|
throw new Error(`Missing resolved metadata for node type: ${nodeClass.nodeType}`);
|
|
29
65
|
}
|
|
66
|
+
// Stryker restore ConditionalExpression,BlockStatement,StringLiteral
|
|
30
67
|
this._classes.set(nodeClass.nodeType, nodeClass);
|
|
68
|
+
this.invalidateMetadataCaches();
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Drop the memoized metadata array and search index. Called by every
|
|
72
|
+
* mutation so the next read rebuilds from the current maps.
|
|
73
|
+
*/
|
|
74
|
+
invalidateMetadataCaches() {
|
|
75
|
+
this._mergedMetadataCache = null;
|
|
76
|
+
this._searchIndexCache = null;
|
|
77
|
+
this._revision++;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Attribute synchronous registrar calls to an explicit package identity.
|
|
81
|
+
* Package registration functions are synchronous by contract.
|
|
82
|
+
*/
|
|
83
|
+
registerPackage(packageId, registrar) {
|
|
84
|
+
const previous = this._activePackageId;
|
|
85
|
+
this._activePackageId = packageId.trim() || undefined;
|
|
86
|
+
try {
|
|
87
|
+
registrar(this);
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
this._activePackageId = previous;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/** Monotonic metadata revision used to invalidate derived contract caches. */
|
|
94
|
+
get revision() {
|
|
95
|
+
return this._revision;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Merged metadata for every node (loaded Python metadata first, registered TS
|
|
99
|
+
* metadata last so a TS class wins on a node_type collision). Built once and
|
|
100
|
+
* memoized; callers that mutate the result must copy it first.
|
|
101
|
+
*/
|
|
102
|
+
mergedMetadata() {
|
|
103
|
+
if (this._mergedMetadataCache === null) {
|
|
104
|
+
const merged = new Map();
|
|
105
|
+
for (const [nodeType, metadata] of this._loadedMetadataByType.entries()) {
|
|
106
|
+
merged.set(nodeType, metadata);
|
|
107
|
+
}
|
|
108
|
+
for (const [nodeType, metadata] of this._registeredMetadataByType.entries()) {
|
|
109
|
+
merged.set(nodeType, metadata);
|
|
110
|
+
}
|
|
111
|
+
this._mergedMetadataCache = [...merged.values()];
|
|
112
|
+
}
|
|
113
|
+
return this._mergedMetadataCache;
|
|
31
114
|
}
|
|
32
115
|
/**
|
|
33
116
|
* Validate a node descriptor against its registered class's @prop schema.
|
|
@@ -43,7 +126,9 @@ export class NodeRegistry {
|
|
|
43
126
|
const properties = descriptor.properties ?? {};
|
|
44
127
|
return NodeClass.validateProperties(properties, {
|
|
45
128
|
connectedHandles,
|
|
46
|
-
nodeId: descriptor.id
|
|
129
|
+
nodeId: descriptor.id,
|
|
130
|
+
dynamicSlots: descriptor.dynamic_inputs,
|
|
131
|
+
dynamicValues: descriptor.dynamic_properties
|
|
47
132
|
});
|
|
48
133
|
}
|
|
49
134
|
/**
|
|
@@ -54,16 +139,90 @@ export class NodeRegistry {
|
|
|
54
139
|
createNodeValidator() {
|
|
55
140
|
return (descriptor, connectedHandles) => this.validateNode(descriptor, connectedHandles);
|
|
56
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Return a new NodeRegistry containing only the node classes that declare
|
|
144
|
+
* support for `target`. Loaded (Python) metadata is copied across when the
|
|
145
|
+
* matching class is included.
|
|
146
|
+
*
|
|
147
|
+
* Used at bundle / deployment time to construct a registry tailored to the
|
|
148
|
+
* active platform — the workflow runner then naturally fails on any graph
|
|
149
|
+
* referencing an unsupported node type.
|
|
150
|
+
*/
|
|
151
|
+
forPlatform(target) {
|
|
152
|
+
// Stryker disable next-line ObjectLiteral: _strictMetadata only gated the unreachable strict-throw, so propagating it (vs {}) has no observable effect (equivalent).
|
|
153
|
+
const filtered = new NodeRegistry({
|
|
154
|
+
strictMetadata: this._strictMetadata
|
|
155
|
+
});
|
|
156
|
+
for (const [nodeType, nodeClass] of this._classes) {
|
|
157
|
+
if (!supportsPlatform(nodeClass.platforms, target))
|
|
158
|
+
continue;
|
|
159
|
+
const metadata = this._registeredMetadataByType.get(nodeType);
|
|
160
|
+
const source = this._registeredMetadataSourceByType.get(nodeType) ?? "typescript";
|
|
161
|
+
const packageId = this._registeredPackageIdByType.get(nodeType);
|
|
162
|
+
const registration = { source };
|
|
163
|
+
if (metadata) {
|
|
164
|
+
registration.metadata = metadata;
|
|
165
|
+
}
|
|
166
|
+
if (packageId) {
|
|
167
|
+
registration.packageId = packageId;
|
|
168
|
+
}
|
|
169
|
+
filtered.register(nodeClass, registration);
|
|
170
|
+
const loaded = this._loadedMetadataByType.get(nodeType);
|
|
171
|
+
// Stryker disable next-line ConditionalExpression: every kept node is re-registered with derived metadata above (which getMetadata returns first), so copying the loaded entry is unobservable (equivalent).
|
|
172
|
+
if (loaded) {
|
|
173
|
+
filtered._loadedMetadataByType.set(nodeType, loaded);
|
|
174
|
+
filtered._loadedMetadataSourceByType.set(nodeType, this._loadedMetadataSourceByType.get(nodeType) ?? "loaded-metadata");
|
|
175
|
+
const loadedPackageId = this._loadedPackageIdByType.get(nodeType);
|
|
176
|
+
if (loadedPackageId) {
|
|
177
|
+
filtered._loadedPackageIdByType.set(nodeType, loadedPackageId);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return filtered;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Validator that rejects nodes not supporting `target`. Compose with
|
|
185
|
+
* {@link createNodeValidator} when enforcing platform constraints in a
|
|
186
|
+
* registry that contains nodes for multiple platforms.
|
|
187
|
+
*/
|
|
188
|
+
createPlatformValidator(target) {
|
|
189
|
+
return (descriptor) => {
|
|
190
|
+
const nodeClass = this._classes.get(descriptor.type);
|
|
191
|
+
const platforms = nodeClass?.platforms ??
|
|
192
|
+
this.resolveMetadata(descriptor.type)?.platforms;
|
|
193
|
+
if (supportsPlatform(platforms, target))
|
|
194
|
+
return [];
|
|
195
|
+
const supported = platforms && platforms.length > 0 ? platforms.join(", ") : "node";
|
|
196
|
+
return [
|
|
197
|
+
{
|
|
198
|
+
nodeId: descriptor.id,
|
|
199
|
+
nodeType: descriptor.type,
|
|
200
|
+
property: "*",
|
|
201
|
+
code: "unsupported_platform",
|
|
202
|
+
message: `Node ${descriptor.type} is not supported on platform '${target}' (supports: ${supported})`
|
|
203
|
+
}
|
|
204
|
+
];
|
|
205
|
+
};
|
|
206
|
+
}
|
|
57
207
|
resolve(descriptor) {
|
|
58
208
|
const NodeClass = this._classes.get(descriptor.type);
|
|
59
209
|
if (!NodeClass) {
|
|
60
210
|
throw new Error(`Unknown node type: ${descriptor.type}`);
|
|
61
211
|
}
|
|
62
|
-
const
|
|
212
|
+
const properties = descriptor.properties ?? {};
|
|
213
|
+
// Slot declarations must be visible to `assign()` before it stores the
|
|
214
|
+
// dynamic values, so they can be coerced against their declared type.
|
|
215
|
+
const instance = new NodeClass(descriptor.dynamic_inputs
|
|
216
|
+
? { _dynamic_inputs: descriptor.dynamic_inputs, ...properties }
|
|
217
|
+
: properties);
|
|
63
218
|
instance.__node_id = descriptor.id;
|
|
64
219
|
instance.__node_name = descriptor.name ?? descriptor.type;
|
|
220
|
+
// Stryker disable next-line ConditionalExpression: forcing this true assigns _dynamic_outputs = undefined, which reads back identically to leaving it unset (equivalent).
|
|
65
221
|
if (descriptor.dynamic_outputs) {
|
|
66
|
-
instance
|
|
222
|
+
Reflect.set(instance, "_dynamic_outputs", descriptor.dynamic_outputs);
|
|
223
|
+
}
|
|
224
|
+
if (descriptor.dynamic_inputs) {
|
|
225
|
+
Reflect.set(instance, "_dynamic_inputs", descriptor.dynamic_inputs);
|
|
67
226
|
}
|
|
68
227
|
return instance.toExecutor();
|
|
69
228
|
}
|
|
@@ -80,6 +239,37 @@ export class NodeRegistry {
|
|
|
80
239
|
return (this._registeredMetadataByType.get(nodeType) ??
|
|
81
240
|
this._loadedMetadataByType.get(nodeType));
|
|
82
241
|
}
|
|
242
|
+
getMetadataSource(nodeType) {
|
|
243
|
+
return (this._registeredMetadataSourceByType.get(nodeType) ??
|
|
244
|
+
this._loadedMetadataSourceByType.get(nodeType));
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Exact package identity recorded by the loader or registrar for this node.
|
|
248
|
+
* Undefined means package provenance is not authoritative.
|
|
249
|
+
*/
|
|
250
|
+
getNodePackageId(nodeType) {
|
|
251
|
+
if (this._registeredMetadataByType.has(nodeType)) {
|
|
252
|
+
return this._registeredPackageIdByType.get(nodeType);
|
|
253
|
+
}
|
|
254
|
+
return this._loadedPackageIdByType.get(nodeType);
|
|
255
|
+
}
|
|
256
|
+
/** Exact package identities represented by the current registry. */
|
|
257
|
+
listNodePackageIds() {
|
|
258
|
+
const ids = new Set();
|
|
259
|
+
for (const nodeType of this._registeredMetadataByType.keys()) {
|
|
260
|
+
const id = this._registeredPackageIdByType.get(nodeType);
|
|
261
|
+
if (id)
|
|
262
|
+
ids.add(id);
|
|
263
|
+
}
|
|
264
|
+
for (const nodeType of this._loadedMetadataByType.keys()) {
|
|
265
|
+
if (this._registeredMetadataByType.has(nodeType))
|
|
266
|
+
continue;
|
|
267
|
+
const id = this._loadedPackageIdByType.get(nodeType);
|
|
268
|
+
if (id)
|
|
269
|
+
ids.add(id);
|
|
270
|
+
}
|
|
271
|
+
return [...ids].sort();
|
|
272
|
+
}
|
|
83
273
|
resolveMetadata(nodeType) {
|
|
84
274
|
const exact = this.getMetadata(nodeType);
|
|
85
275
|
if (exact)
|
|
@@ -90,33 +280,86 @@ export class NodeRegistry {
|
|
|
90
280
|
return undefined;
|
|
91
281
|
}
|
|
92
282
|
listMetadata() {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
283
|
+
// Fresh copy each call: some callers (http-api, tRPC nodes router) sort the
|
|
284
|
+
// result in place, which must not reorder the shared cache.
|
|
285
|
+
return [...this.mergedMetadata()];
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Rank registered nodes against `terms` using a memoized search index.
|
|
289
|
+
*
|
|
290
|
+
* Equivalent to `rankNodeMetadata(this.listMetadata(), terms, options)` but
|
|
291
|
+
* reuses a precomputed index across calls — the planner's inner loop. The
|
|
292
|
+
* index is invalidated whenever the registry changes.
|
|
293
|
+
*/
|
|
294
|
+
searchMetadata(terms, options = {}) {
|
|
295
|
+
if (this._searchIndexCache === null) {
|
|
296
|
+
this._searchIndexCache = new NodeSearchIndex(this.mergedMetadata());
|
|
99
297
|
}
|
|
100
|
-
return
|
|
298
|
+
return this._searchIndexCache.rank(terms, options);
|
|
101
299
|
}
|
|
102
300
|
listRegisteredNodeTypesWithoutMetadata() {
|
|
301
|
+
// Stryker disable next-line ArrowFunction,ConditionalExpression: register() always stores derived metadata, so getMetadata is never undefined for a registered type — this filter always yields [] regardless of the predicate (equivalent).
|
|
103
302
|
return this.list().filter((nodeType) => this.getMetadata(nodeType) === undefined);
|
|
104
303
|
}
|
|
105
304
|
/** Add or replace metadata for a node type (e.g. from Python bridge). */
|
|
106
|
-
loadMetadata(nodeType, metadata) {
|
|
305
|
+
loadMetadata(nodeType, metadata, options = {}) {
|
|
107
306
|
this._loadedMetadataByType.set(nodeType, metadata);
|
|
307
|
+
this._loadedMetadataSourceByType.set(nodeType, options.source ?? "loaded-metadata");
|
|
308
|
+
if (options.packageId?.trim()) {
|
|
309
|
+
this._loadedPackageIdByType.set(nodeType, options.packageId.trim());
|
|
310
|
+
}
|
|
311
|
+
else {
|
|
312
|
+
this._loadedPackageIdByType.delete(nodeType);
|
|
313
|
+
}
|
|
314
|
+
this.invalidateMetadataCaches();
|
|
108
315
|
}
|
|
109
316
|
loadPythonMetadata(options = {}) {
|
|
110
317
|
const loaded = loadPythonPackageMetadata(options);
|
|
318
|
+
const packageIdByType = new Map();
|
|
319
|
+
for (const pkg of loaded.packages) {
|
|
320
|
+
for (const node of pkg.nodes ?? []) {
|
|
321
|
+
if (node?.node_type)
|
|
322
|
+
packageIdByType.set(node.node_type, pkg.name);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
111
325
|
for (const [nodeType, metadata] of loaded.nodesByType.entries()) {
|
|
112
326
|
this._loadedMetadataByType.set(nodeType, metadata);
|
|
327
|
+
this._loadedMetadataSourceByType.set(nodeType, "python-package");
|
|
328
|
+
const packageId = packageIdByType.get(nodeType);
|
|
329
|
+
if (packageId) {
|
|
330
|
+
this._loadedPackageIdByType.set(nodeType, packageId);
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
333
|
+
this._loadedPackageIdByType.delete(nodeType);
|
|
334
|
+
}
|
|
113
335
|
}
|
|
336
|
+
this.invalidateMetadataCaches();
|
|
114
337
|
return loaded;
|
|
115
338
|
}
|
|
339
|
+
/**
|
|
340
|
+
* Remove a node type from the registry.
|
|
341
|
+
* Returns true if the node type was present and removed.
|
|
342
|
+
*/
|
|
343
|
+
unregister(nodeType) {
|
|
344
|
+
const hadClass = this._classes.delete(nodeType);
|
|
345
|
+
this._loadedMetadataByType.delete(nodeType);
|
|
346
|
+
this._registeredMetadataByType.delete(nodeType);
|
|
347
|
+
this._loadedMetadataSourceByType.delete(nodeType);
|
|
348
|
+
this._registeredMetadataSourceByType.delete(nodeType);
|
|
349
|
+
this._loadedPackageIdByType.delete(nodeType);
|
|
350
|
+
this._registeredPackageIdByType.delete(nodeType);
|
|
351
|
+
this.invalidateMetadataCaches();
|
|
352
|
+
return hadClass;
|
|
353
|
+
}
|
|
116
354
|
clear() {
|
|
117
355
|
this._classes.clear();
|
|
118
356
|
this._loadedMetadataByType.clear();
|
|
119
357
|
this._registeredMetadataByType.clear();
|
|
358
|
+
this._loadedMetadataSourceByType.clear();
|
|
359
|
+
this._registeredMetadataSourceByType.clear();
|
|
360
|
+
this._loadedPackageIdByType.clear();
|
|
361
|
+
this._registeredPackageIdByType.clear();
|
|
362
|
+
this.invalidateMetadataCaches();
|
|
120
363
|
}
|
|
121
364
|
static global = new NodeRegistry();
|
|
122
365
|
}
|
|
@@ -124,6 +367,7 @@ export function register(nodeClass) {
|
|
|
124
367
|
NodeRegistry.global.register(nodeClass);
|
|
125
368
|
}
|
|
126
369
|
function typeMetadataToString(typeMeta) {
|
|
370
|
+
// Stryker disable next-line MethodExpression: .filter(Boolean) only drops empty renderings, which valid type metadata never produces (equivalent).
|
|
127
371
|
const args = (typeMeta.type_args ?? [])
|
|
128
372
|
.map(typeMetadataToString)
|
|
129
373
|
.filter(Boolean);
|
|
@@ -131,10 +375,102 @@ function typeMetadataToString(typeMeta) {
|
|
|
131
375
|
? `${typeMeta.type}[${args.join(", ")}]`
|
|
132
376
|
: typeMeta.type;
|
|
133
377
|
}
|
|
378
|
+
/**
|
|
379
|
+
* Stamp streaming/control flags from the registry onto graph descriptors.
|
|
380
|
+
* Graphs arriving from a client carry only `type` and `properties`, and the
|
|
381
|
+
* kernel actor trusts `node.is_streaming_input` to pick run() over a one-shot
|
|
382
|
+
* process() — without this every streaming node "completes" instantly with
|
|
383
|
+
* empty outputs. The full-fat equivalent (which also resolves property/output
|
|
384
|
+
* types and drops unknown node types) is `Graph.loadFromDict` with
|
|
385
|
+
* `createGraphNodeTypeResolver`; this is the lightweight synchronous version
|
|
386
|
+
* for runners that only need correct execution semantics.
|
|
387
|
+
*
|
|
388
|
+
* Flags are resolved from the node's registered TS class when present, else
|
|
389
|
+
* from its loaded metadata (Python nodes have no TS class — they live only as
|
|
390
|
+
* metadata loaded from the worker's `package_metadata`, so `getClass` returns
|
|
391
|
+
* undefined and we must consult `resolveMetadata` or a streaming Python node
|
|
392
|
+
* read from a saved graph silently runs one-shot). This mirrors
|
|
393
|
+
* `Graph.loadFromDict`, which already reads the Python flag from metadata.
|
|
394
|
+
* `is_streaming_output` is derived from a TS class via `hasStreamingOutput`
|
|
395
|
+
* (purely structural: a `genProcess` override or iteration/forward/chunk
|
|
396
|
+
* correlation — ForEach, Collection, RepeatCount), and from the metadata's
|
|
397
|
+
* already-resolved boolean otherwise. Node types the registry doesn't know at
|
|
398
|
+
* all keep their own flags, defaulted to false (resolveExecutor reports
|
|
399
|
+
* unknown types loudly).
|
|
400
|
+
*/
|
|
401
|
+
export function hydrateGraphNodeFlags(graph, registry) {
|
|
402
|
+
const nodes = graph.nodes.map((node) => {
|
|
403
|
+
const cls = registry.getClass(node.type);
|
|
404
|
+
// Fall back to loaded metadata only for class-less (Python) nodes.
|
|
405
|
+
const meta = cls ? undefined : registry.resolveMetadata(node.type);
|
|
406
|
+
const derivedSlots = cls?.resolveDynamicSlots?.(node);
|
|
407
|
+
const dynamicInputs = mergeDerivedSlots(derivedSlots?.dynamic_inputs, node.dynamic_inputs);
|
|
408
|
+
const dynamicOutputs = mergeDerivedSlots(derivedSlots?.dynamic_outputs, node.dynamic_outputs);
|
|
409
|
+
return {
|
|
410
|
+
...node,
|
|
411
|
+
...(dynamicInputs && { dynamic_inputs: dynamicInputs }),
|
|
412
|
+
...(dynamicOutputs && { dynamic_outputs: dynamicOutputs }),
|
|
413
|
+
// `??`, not `||`: a registered class always carries explicit booleans
|
|
414
|
+
// (BaseNode defaults them to false), so the registry corrects a stale
|
|
415
|
+
// saved `true` when a node type migrates away from streaming/control.
|
|
416
|
+
// OR let the saved value win forever. Saved flags apply only when the
|
|
417
|
+
// registry has no opinion (unknown type, or metadata omitting the flag).
|
|
418
|
+
// A class may also decide streaming input per instance, from the node's
|
|
419
|
+
// own properties (`resolveStreamingInput` — the Code node, where the body
|
|
420
|
+
// decides). It is consulted ahead of the static and re-read on every
|
|
421
|
+
// hydration, so it cannot go stale.
|
|
422
|
+
is_streaming_input: (cls
|
|
423
|
+
? (cls.resolveStreamingInput?.(node) ?? cls.isStreamingInput)
|
|
424
|
+
: meta?.is_streaming_input) ??
|
|
425
|
+
node.is_streaming_input ??
|
|
426
|
+
false,
|
|
427
|
+
is_streaming_output: (cls ? hasStreamingOutput(cls) : meta?.is_streaming_output) ??
|
|
428
|
+
node.is_streaming_output ??
|
|
429
|
+
false,
|
|
430
|
+
is_controlled: (cls ? cls.isControlled : meta?.is_controlled) ??
|
|
431
|
+
node.is_controlled ??
|
|
432
|
+
false,
|
|
433
|
+
is_join_node: (cls ? cls.isJoinNode : meta?.is_join_node) ??
|
|
434
|
+
node.is_join_node ??
|
|
435
|
+
false,
|
|
436
|
+
is_trigger: (cls ? cls.isTrigger : meta?.is_trigger) ?? node.is_trigger ?? false,
|
|
437
|
+
// No `?? node.retry_safe` here, unlike every flag around it: whether
|
|
438
|
+
// re-running a node duplicates a payment or a publish is a property of
|
|
439
|
+
// its implementation, not of a saved file. A graph asserting
|
|
440
|
+
// `retry_safe: true` for a node nobody classified would hand the
|
|
441
|
+
// supervisor a retry on a side-effecting node — the asymmetric failure
|
|
442
|
+
// docs/workflow-supervisor-design.md §5.3 exists to prevent.
|
|
443
|
+
retry_safe: (cls ? cls.retrySafe : meta?.retry_safe) ?? false,
|
|
444
|
+
always_emit_output_updates: (cls
|
|
445
|
+
? cls.alwaysEmitOutputUpdates
|
|
446
|
+
: meta?.always_emit_output_updates) ??
|
|
447
|
+
node.always_emit_output_updates ??
|
|
448
|
+
false,
|
|
449
|
+
input_mode: (cls ? cls.inputMode : meta?.input_mode) ?? node.input_mode,
|
|
450
|
+
output_correlation: (cls ? cls.outputCorrelation : meta?.output_correlation) ??
|
|
451
|
+
node.output_correlation
|
|
452
|
+
};
|
|
453
|
+
});
|
|
454
|
+
return { nodes, edges: [...graph.edges] };
|
|
455
|
+
}
|
|
134
456
|
function deriveNamespace(nodeType) {
|
|
135
457
|
const lastDot = nodeType.lastIndexOf(".");
|
|
458
|
+
// Stryker disable next-line EqualityOperator: at lastDot === 0 both arms yield "" (slice(0,0) === the else ""), so > 0 vs >= 0 are indistinguishable (equivalent).
|
|
136
459
|
return lastDot > 0 ? nodeType.slice(0, lastDot) : "";
|
|
137
460
|
}
|
|
461
|
+
/**
|
|
462
|
+
* The declared input types of one node type, as a `propertyTypes`-shaped map
|
|
463
|
+
* (`{[property]: "list[image]" | "str" | …}`). This is the kernel's authority
|
|
464
|
+
* on list-ness — correlation analysis and multi-edge fan-in read it — so
|
|
465
|
+
* hydration paths that do not go through `Graph.loadFromDict` stamp it from
|
|
466
|
+
* here rather than re-deriving the rendering.
|
|
467
|
+
*/
|
|
468
|
+
export function propertyTypesForMetadata(metadata) {
|
|
469
|
+
return Object.fromEntries((metadata.properties ?? []).map((prop) => [
|
|
470
|
+
prop.name,
|
|
471
|
+
typeMetadataToString(prop.type)
|
|
472
|
+
]));
|
|
473
|
+
}
|
|
138
474
|
export function createGraphNodeTypeResolver(registry, options = {}) {
|
|
139
475
|
return {
|
|
140
476
|
resolveNodeType: async (nodeType) => {
|
|
@@ -148,37 +484,74 @@ export function createGraphNodeTypeResolver(registry, options = {}) {
|
|
|
148
484
|
}
|
|
149
485
|
if (!metadata)
|
|
150
486
|
return null;
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
487
|
+
// Per-instance streaming-input resolution, when the class declares it.
|
|
488
|
+
// Metadata carries one boolean per type and cannot answer for a node
|
|
489
|
+
// whose mode lives in its own properties, so the closure travels to the
|
|
490
|
+
// merge site instead. Absent for every class without the hook, which
|
|
491
|
+
// keeps `Graph.loadFromDict` on exactly today's path.
|
|
492
|
+
const cls = registry.getClass(nodeType);
|
|
493
|
+
const resolveStreamingInput = cls?.resolveStreamingInput;
|
|
494
|
+
const resolveDynamicSlots = cls?.resolveDynamicSlots;
|
|
495
|
+
const propertyTypes = propertyTypesForMetadata(metadata);
|
|
496
|
+
const propertyMeta = Object.fromEntries(
|
|
497
|
+
// Stryker disable next-line ArrayDeclaration: a bogus seed element lacks description/min/max, so the .filter below drops it — the result is unchanged (equivalent).
|
|
498
|
+
(metadata.properties ?? [])
|
|
156
499
|
.filter((p) => p.description || p.min != null || p.max != null)
|
|
157
|
-
.map((p) =>
|
|
158
|
-
|
|
159
|
-
{
|
|
160
|
-
|
|
161
|
-
...(p.min != null ? { min: p.min } : {}),
|
|
162
|
-
...(p.max != null ? { max: p.max } : {})
|
|
500
|
+
.map((p) => {
|
|
501
|
+
const meta = {};
|
|
502
|
+
if (p.description) {
|
|
503
|
+
meta.description = p.description;
|
|
163
504
|
}
|
|
164
|
-
|
|
505
|
+
if (p.min != null) {
|
|
506
|
+
meta.min = p.min;
|
|
507
|
+
}
|
|
508
|
+
if (p.max != null) {
|
|
509
|
+
meta.max = p.max;
|
|
510
|
+
}
|
|
511
|
+
return [p.name, meta];
|
|
512
|
+
}));
|
|
165
513
|
const outputs = Object.fromEntries((metadata.outputs ?? []).map((output) => [
|
|
166
514
|
output.name,
|
|
167
515
|
typeMetadataToString(output.type)
|
|
168
516
|
]));
|
|
169
|
-
const NodeClass = registry.getClass(nodeType);
|
|
170
|
-
const syncMode = NodeClass?.syncMode;
|
|
171
517
|
return {
|
|
172
518
|
nodeType: metadata.node_type,
|
|
173
519
|
propertyTypes,
|
|
174
520
|
outputs,
|
|
175
|
-
|
|
521
|
+
supportsDynamicInputs: metadata.supports_dynamic_inputs ?? false,
|
|
522
|
+
...(resolveStreamingInput && {
|
|
523
|
+
resolveInstanceFlags: (node) => ({ is_streaming_input: resolveStreamingInput(node) })
|
|
524
|
+
}),
|
|
525
|
+
...(resolveDynamicSlots && {
|
|
526
|
+
resolveInstanceSlots: resolveDynamicSlots
|
|
527
|
+
}),
|
|
176
528
|
descriptorDefaults: {
|
|
177
529
|
name: metadata.title,
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
530
|
+
// Explicit booleans, never omitted: Graph.loadFromDict resolves each
|
|
531
|
+
// flag as `descriptorDefaults.flag ?? saved ?? false`, so an omitted
|
|
532
|
+
// false here would let a stale saved `true` survive a node type's
|
|
533
|
+
// migration away from streaming/control. Metadata is built from the
|
|
534
|
+
// class statics (BaseNode defaults false), so absent means false.
|
|
535
|
+
is_streaming_input: metadata.is_streaming_input ?? false,
|
|
536
|
+
is_streaming_output: metadata.is_streaming_output ?? false,
|
|
537
|
+
is_controlled: metadata.is_controlled ?? false,
|
|
538
|
+
is_join_node: metadata.is_join_node ?? false,
|
|
539
|
+
// Same reason as the flags above, and the one that was missing:
|
|
540
|
+
// `actor.ts` gates the trigger entry point on this, and saved
|
|
541
|
+
// workflow JSON never carries it. Omitted here, every
|
|
542
|
+
// resolver-hydrated graph read `is_trigger: false`, so a delivered
|
|
543
|
+
// webhook/manual/file-watch event was accepted and silently
|
|
544
|
+
// dropped — the node fell through to `genProcess()` and emitted
|
|
545
|
+
// nothing.
|
|
546
|
+
is_trigger: metadata.is_trigger ?? false,
|
|
547
|
+
retry_safe: metadata.retry_safe ?? false,
|
|
548
|
+
...(metadata.input_mode && { input_mode: metadata.input_mode }),
|
|
549
|
+
...(metadata.output_correlation && {
|
|
550
|
+
output_correlation: metadata.output_correlation
|
|
551
|
+
}),
|
|
552
|
+
...(metadata.always_emit_output_updates && {
|
|
553
|
+
always_emit_output_updates: true
|
|
554
|
+
}),
|
|
182
555
|
...(Object.keys(propertyMeta).length > 0 && { propertyMeta })
|
|
183
556
|
}
|
|
184
557
|
};
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
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
|
+
/** A pack this repo ships as a sandbox module. */
|
|
11
|
+
export interface BridgePack {
|
|
12
|
+
/** The import specifier guest code uses. */
|
|
13
|
+
readonly specifier: string;
|
|
14
|
+
/** The npm package to install, which for a single-module pack is the same string. */
|
|
15
|
+
readonly packName: string;
|
|
16
|
+
/** The npm library behind the module. */
|
|
17
|
+
readonly library: string;
|
|
18
|
+
/**
|
|
19
|
+
* Where the library runs.
|
|
20
|
+
*
|
|
21
|
+
* `guest` — compiled into the QuickJS guest by the sandbox compiler.
|
|
22
|
+
* `host` — a NodeTool-implemented host function set behind a generated
|
|
23
|
+
* facade, because the library needs what the guest lacks, or carries a limit
|
|
24
|
+
* the guest could not enforce.
|
|
25
|
+
*/
|
|
26
|
+
readonly runs: "guest" | "host";
|
|
27
|
+
/** Authored guest code rather than a compiled npm dependency. */
|
|
28
|
+
readonly source?: "authored";
|
|
29
|
+
}
|
|
30
|
+
export declare const BRIDGE_PACKS: readonly BridgePack[];
|
|
31
|
+
/** The bridge pack a specifier names, or undefined for anything else. */
|
|
32
|
+
export declare function bridgePackFor(specifier: string): BridgePack | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* What to do about a specifier no installed pack offers, when NodeTool ships one
|
|
35
|
+
* under that name. Anything else gets no hint — a guess at a package name is
|
|
36
|
+
* worse than silence.
|
|
37
|
+
*/
|
|
38
|
+
export declare function installHintFor(specifier: string): string | undefined;
|
|
39
|
+
//# sourceMappingURL=sandbox-bridge-packs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox-bridge-packs.d.ts","sourceRoot":"","sources":["../src/sandbox-bridge-packs.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,kDAAkD;AAClD,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,qFAAqF;IACrF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;CAC9B;AAED,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAgO7C,CAAC;AAIF,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEvE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGpE"}
|