@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.d.ts
CHANGED
|
@@ -1,14 +1,22 @@
|
|
|
1
|
-
import type { NodeDescriptor } from "@nodetool-ai/protocol";
|
|
1
|
+
import type { GraphData, HydratedGraphData, NodeDescriptor, Platform } from "@nodetool-ai/protocol";
|
|
2
2
|
import type { NodeExecutor, ResolvedNodeType } from "@nodetool-ai/kernel";
|
|
3
3
|
import type { NodeClass } from "./base-node.js";
|
|
4
4
|
import type { NodeMetadata, PythonMetadataLoadOptions, PythonMetadataLoadResult } from "./metadata.js";
|
|
5
5
|
import type { NodePropertyValidationIssue } from "./validation.js";
|
|
6
|
+
import type { ScoredNode, ScoreOptions } from "./search.js";
|
|
6
7
|
export interface NodeRegistryOptions {
|
|
7
8
|
metadataByType?: Map<string, NodeMetadata>;
|
|
8
9
|
strictMetadata?: boolean;
|
|
9
10
|
}
|
|
11
|
+
export type NodeMetadataSource = "typescript" | "python-package" | "python-bridge" | "loaded-metadata";
|
|
10
12
|
export interface RegisterNodeOptions {
|
|
11
13
|
metadata?: NodeMetadata;
|
|
14
|
+
source?: NodeMetadataSource;
|
|
15
|
+
packageId?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface LoadMetadataOptions {
|
|
18
|
+
source?: NodeMetadataSource;
|
|
19
|
+
packageId?: string;
|
|
12
20
|
}
|
|
13
21
|
export interface RegistryGraphResolverOptions {
|
|
14
22
|
loadNamespace?: (namespace: string, registry: NodeRegistry) => Promise<void> | void;
|
|
@@ -17,9 +25,35 @@ export declare class NodeRegistry {
|
|
|
17
25
|
private _classes;
|
|
18
26
|
private _loadedMetadataByType;
|
|
19
27
|
private _registeredMetadataByType;
|
|
28
|
+
private _loadedMetadataSourceByType;
|
|
29
|
+
private _registeredMetadataSourceByType;
|
|
30
|
+
private _loadedPackageIdByType;
|
|
31
|
+
private _registeredPackageIdByType;
|
|
32
|
+
private _activePackageId;
|
|
20
33
|
private _strictMetadata;
|
|
34
|
+
private _revision;
|
|
35
|
+
private _mergedMetadataCache;
|
|
36
|
+
private _searchIndexCache;
|
|
21
37
|
constructor(options?: NodeRegistryOptions);
|
|
22
38
|
register(nodeClass: NodeClass, options?: RegisterNodeOptions): void;
|
|
39
|
+
/**
|
|
40
|
+
* Drop the memoized metadata array and search index. Called by every
|
|
41
|
+
* mutation so the next read rebuilds from the current maps.
|
|
42
|
+
*/
|
|
43
|
+
private invalidateMetadataCaches;
|
|
44
|
+
/**
|
|
45
|
+
* Attribute synchronous registrar calls to an explicit package identity.
|
|
46
|
+
* Package registration functions are synchronous by contract.
|
|
47
|
+
*/
|
|
48
|
+
registerPackage(packageId: string, registrar: (registry: NodeRegistry) => void): void;
|
|
49
|
+
/** Monotonic metadata revision used to invalidate derived contract caches. */
|
|
50
|
+
get revision(): number;
|
|
51
|
+
/**
|
|
52
|
+
* Merged metadata for every node (loaded Python metadata first, registered TS
|
|
53
|
+
* metadata last so a TS class wins on a node_type collision). Built once and
|
|
54
|
+
* memoized; callers that mutate the result must copy it first.
|
|
55
|
+
*/
|
|
56
|
+
private mergedMetadata;
|
|
23
57
|
/**
|
|
24
58
|
* Validate a node descriptor against its registered class's @prop schema.
|
|
25
59
|
*
|
|
@@ -34,21 +68,90 @@ export declare class NodeRegistry {
|
|
|
34
68
|
* reference to the registry itself.
|
|
35
69
|
*/
|
|
36
70
|
createNodeValidator(): (descriptor: NodeDescriptor, connectedHandles: ReadonlySet<string>) => NodePropertyValidationIssue[];
|
|
71
|
+
/**
|
|
72
|
+
* Return a new NodeRegistry containing only the node classes that declare
|
|
73
|
+
* support for `target`. Loaded (Python) metadata is copied across when the
|
|
74
|
+
* matching class is included.
|
|
75
|
+
*
|
|
76
|
+
* Used at bundle / deployment time to construct a registry tailored to the
|
|
77
|
+
* active platform — the workflow runner then naturally fails on any graph
|
|
78
|
+
* referencing an unsupported node type.
|
|
79
|
+
*/
|
|
80
|
+
forPlatform(target: Platform): NodeRegistry;
|
|
81
|
+
/**
|
|
82
|
+
* Validator that rejects nodes not supporting `target`. Compose with
|
|
83
|
+
* {@link createNodeValidator} when enforcing platform constraints in a
|
|
84
|
+
* registry that contains nodes for multiple platforms.
|
|
85
|
+
*/
|
|
86
|
+
createPlatformValidator(target: Platform): (descriptor: NodeDescriptor, connectedHandles: ReadonlySet<string>) => NodePropertyValidationIssue[];
|
|
37
87
|
resolve(descriptor: NodeDescriptor): NodeExecutor;
|
|
38
88
|
getClass(nodeType: string): NodeClass | undefined;
|
|
39
89
|
has(nodeType: string): boolean;
|
|
40
90
|
list(): string[];
|
|
41
91
|
getMetadata(nodeType: string): NodeMetadata | undefined;
|
|
92
|
+
getMetadataSource(nodeType: string): NodeMetadataSource | undefined;
|
|
93
|
+
/**
|
|
94
|
+
* Exact package identity recorded by the loader or registrar for this node.
|
|
95
|
+
* Undefined means package provenance is not authoritative.
|
|
96
|
+
*/
|
|
97
|
+
getNodePackageId(nodeType: string): string | undefined;
|
|
98
|
+
/** Exact package identities represented by the current registry. */
|
|
99
|
+
listNodePackageIds(): string[];
|
|
42
100
|
resolveMetadata(nodeType: string): NodeMetadata | undefined;
|
|
43
101
|
listMetadata(): NodeMetadata[];
|
|
102
|
+
/**
|
|
103
|
+
* Rank registered nodes against `terms` using a memoized search index.
|
|
104
|
+
*
|
|
105
|
+
* Equivalent to `rankNodeMetadata(this.listMetadata(), terms, options)` but
|
|
106
|
+
* reuses a precomputed index across calls — the planner's inner loop. The
|
|
107
|
+
* index is invalidated whenever the registry changes.
|
|
108
|
+
*/
|
|
109
|
+
searchMetadata(terms: readonly string[], options?: ScoreOptions): ScoredNode[];
|
|
44
110
|
listRegisteredNodeTypesWithoutMetadata(): string[];
|
|
45
111
|
/** Add or replace metadata for a node type (e.g. from Python bridge). */
|
|
46
|
-
loadMetadata(nodeType: string, metadata: NodeMetadata): void;
|
|
112
|
+
loadMetadata(nodeType: string, metadata: NodeMetadata, options?: LoadMetadataOptions): void;
|
|
47
113
|
loadPythonMetadata(options?: PythonMetadataLoadOptions): PythonMetadataLoadResult;
|
|
114
|
+
/**
|
|
115
|
+
* Remove a node type from the registry.
|
|
116
|
+
* Returns true if the node type was present and removed.
|
|
117
|
+
*/
|
|
118
|
+
unregister(nodeType: string): boolean;
|
|
48
119
|
clear(): void;
|
|
49
120
|
static readonly global: NodeRegistry;
|
|
50
121
|
}
|
|
51
122
|
export declare function register(nodeClass: NodeClass): void;
|
|
123
|
+
/**
|
|
124
|
+
* Stamp streaming/control flags from the registry onto graph descriptors.
|
|
125
|
+
* Graphs arriving from a client carry only `type` and `properties`, and the
|
|
126
|
+
* kernel actor trusts `node.is_streaming_input` to pick run() over a one-shot
|
|
127
|
+
* process() — without this every streaming node "completes" instantly with
|
|
128
|
+
* empty outputs. The full-fat equivalent (which also resolves property/output
|
|
129
|
+
* types and drops unknown node types) is `Graph.loadFromDict` with
|
|
130
|
+
* `createGraphNodeTypeResolver`; this is the lightweight synchronous version
|
|
131
|
+
* for runners that only need correct execution semantics.
|
|
132
|
+
*
|
|
133
|
+
* Flags are resolved from the node's registered TS class when present, else
|
|
134
|
+
* from its loaded metadata (Python nodes have no TS class — they live only as
|
|
135
|
+
* metadata loaded from the worker's `package_metadata`, so `getClass` returns
|
|
136
|
+
* undefined and we must consult `resolveMetadata` or a streaming Python node
|
|
137
|
+
* read from a saved graph silently runs one-shot). This mirrors
|
|
138
|
+
* `Graph.loadFromDict`, which already reads the Python flag from metadata.
|
|
139
|
+
* `is_streaming_output` is derived from a TS class via `hasStreamingOutput`
|
|
140
|
+
* (purely structural: a `genProcess` override or iteration/forward/chunk
|
|
141
|
+
* correlation — ForEach, Collection, RepeatCount), and from the metadata's
|
|
142
|
+
* already-resolved boolean otherwise. Node types the registry doesn't know at
|
|
143
|
+
* all keep their own flags, defaulted to false (resolveExecutor reports
|
|
144
|
+
* unknown types loudly).
|
|
145
|
+
*/
|
|
146
|
+
export declare function hydrateGraphNodeFlags(graph: GraphData, registry: Pick<NodeRegistry, "getClass" | "resolveMetadata">): HydratedGraphData;
|
|
147
|
+
/**
|
|
148
|
+
* The declared input types of one node type, as a `propertyTypes`-shaped map
|
|
149
|
+
* (`{[property]: "list[image]" | "str" | …}`). This is the kernel's authority
|
|
150
|
+
* on list-ness — correlation analysis and multi-edge fan-in read it — so
|
|
151
|
+
* hydration paths that do not go through `Graph.loadFromDict` stamp it from
|
|
152
|
+
* here rather than re-deriving the rendering.
|
|
153
|
+
*/
|
|
154
|
+
export declare function propertyTypesForMetadata(metadata: NodeMetadata): Record<string, string>;
|
|
52
155
|
export declare function createGraphNodeTypeResolver(registry: NodeRegistry, options?: RegistryGraphResolverOptions): {
|
|
53
156
|
resolveNodeType: (nodeType: string) => Promise<ResolvedNodeType | null>;
|
|
54
157
|
};
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|