@loxtep/sdk 0.2.3 → 0.4.0
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/CHANGELOG.md +68 -0
- package/README.md +255 -4
- package/dist/authoring/agent.d.ts +164 -0
- package/dist/authoring/agent.d.ts.map +1 -0
- package/dist/authoring/agent.js +376 -0
- package/dist/authoring/agent.js.map +1 -0
- package/dist/authoring/compiler.d.ts +103 -0
- package/dist/authoring/compiler.d.ts.map +1 -0
- package/dist/authoring/compiler.js +305 -0
- package/dist/authoring/compiler.js.map +1 -0
- package/dist/authoring/define-data-workflow.d.ts +24 -0
- package/dist/authoring/define-data-workflow.d.ts.map +1 -0
- package/dist/authoring/define-data-workflow.js +93 -0
- package/dist/authoring/define-data-workflow.js.map +1 -0
- package/dist/authoring/index.d.ts +19 -0
- package/dist/authoring/index.d.ts.map +1 -0
- package/dist/authoring/index.js +15 -0
- package/dist/authoring/index.js.map +1 -0
- package/dist/authoring/toolbox.d.ts +133 -0
- package/dist/authoring/toolbox.d.ts.map +1 -0
- package/dist/authoring/toolbox.js +166 -0
- package/dist/authoring/toolbox.js.map +1 -0
- package/dist/authoring/triggers.d.ts +41 -0
- package/dist/authoring/triggers.d.ts.map +1 -0
- package/dist/authoring/triggers.js +60 -0
- package/dist/authoring/triggers.js.map +1 -0
- package/dist/authoring/types.d.ts +111 -0
- package/dist/authoring/types.d.ts.map +1 -0
- package/dist/authoring/types.js +9 -0
- package/dist/authoring/types.js.map +1 -0
- package/dist/cli/commands/activity-cmd.d.ts +28 -0
- package/dist/cli/commands/activity-cmd.d.ts.map +1 -0
- package/dist/cli/commands/activity-cmd.js +78 -0
- package/dist/cli/commands/activity-cmd.js.map +1 -0
- package/dist/cli/commands/attach-cmd.d.ts +38 -0
- package/dist/cli/commands/attach-cmd.d.ts.map +1 -0
- package/dist/cli/commands/attach-cmd.js +141 -0
- package/dist/cli/commands/attach-cmd.js.map +1 -0
- package/dist/cli/commands/data-contracts-cmd.d.ts +8 -0
- package/dist/cli/commands/data-contracts-cmd.d.ts.map +1 -1
- package/dist/cli/commands/data-contracts-cmd.js +11 -0
- package/dist/cli/commands/data-contracts-cmd.js.map +1 -1
- package/dist/cli/commands/data-products-cmd.d.ts +2 -0
- package/dist/cli/commands/data-products-cmd.d.ts.map +1 -1
- package/dist/cli/commands/data-products-cmd.js +35 -0
- package/dist/cli/commands/data-products-cmd.js.map +1 -1
- package/dist/cli/commands/deploy-cmd.d.ts +101 -0
- package/dist/cli/commands/deploy-cmd.d.ts.map +1 -0
- package/dist/cli/commands/deploy-cmd.js +461 -0
- package/dist/cli/commands/deploy-cmd.js.map +1 -0
- package/dist/cli/commands/generate-cmd.d.ts +35 -0
- package/dist/cli/commands/generate-cmd.d.ts.map +1 -0
- package/dist/cli/commands/generate-cmd.js +134 -0
- package/dist/cli/commands/generate-cmd.js.map +1 -0
- package/dist/cli/commands/improvements-cmd.d.ts +44 -0
- package/dist/cli/commands/improvements-cmd.d.ts.map +1 -0
- package/dist/cli/commands/improvements-cmd.js +215 -0
- package/dist/cli/commands/improvements-cmd.js.map +1 -0
- package/dist/cli/commands/init-cmd.d.ts +78 -0
- package/dist/cli/commands/init-cmd.d.ts.map +1 -0
- package/dist/cli/commands/init-cmd.js +250 -0
- package/dist/cli/commands/init-cmd.js.map +1 -0
- package/dist/cli/commands/instances-cmd.d.ts +37 -0
- package/dist/cli/commands/instances-cmd.d.ts.map +1 -0
- package/dist/cli/commands/instances-cmd.js +150 -0
- package/dist/cli/commands/instances-cmd.js.map +1 -0
- package/dist/cli/commands/test-cmd.d.ts +89 -0
- package/dist/cli/commands/test-cmd.d.ts.map +1 -0
- package/dist/cli/commands/test-cmd.js +378 -0
- package/dist/cli/commands/test-cmd.js.map +1 -0
- package/dist/cli/index.d.ts +5 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +240 -8
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/project-context.d.ts +153 -0
- package/dist/cli/project-context.d.ts.map +1 -0
- package/dist/cli/project-context.js +190 -0
- package/dist/cli/project-context.js.map +1 -0
- package/dist/client/activity-types.d.ts +66 -0
- package/dist/client/activity-types.d.ts.map +1 -0
- package/dist/client/activity-types.js +9 -0
- package/dist/client/activity-types.js.map +1 -0
- package/dist/client/activity.d.ts +22 -0
- package/dist/client/activity.d.ts.map +1 -0
- package/dist/client/activity.js +43 -0
- package/dist/client/activity.js.map +1 -0
- package/dist/client/data-products-types.d.ts +23 -0
- package/dist/client/data-products-types.d.ts.map +1 -1
- package/dist/client/data-products.d.ts +3 -1
- package/dist/client/data-products.d.ts.map +1 -1
- package/dist/client/data-products.js +20 -98
- package/dist/client/data-products.js.map +1 -1
- package/dist/client/{consumptions-types.d.ts → delivery-types.d.ts} +25 -8
- package/dist/client/delivery-types.d.ts.map +1 -0
- package/dist/client/delivery-types.js +10 -0
- package/dist/client/delivery-types.js.map +1 -0
- package/dist/client/delivery.d.ts +23 -0
- package/dist/client/delivery.d.ts.map +1 -0
- package/dist/client/delivery.js +105 -0
- package/dist/client/delivery.js.map +1 -0
- package/dist/client/flow-types.d.ts +4 -2
- package/dist/client/flow-types.d.ts.map +1 -1
- package/dist/client/flows.d.ts +1 -1
- package/dist/client/flows.d.ts.map +1 -1
- package/dist/client/flows.js +49 -124
- package/dist/client/flows.js.map +1 -1
- package/dist/client/improvements-types.d.ts +55 -0
- package/dist/client/improvements-types.d.ts.map +1 -0
- package/dist/client/improvements-types.js +9 -0
- package/dist/client/improvements-types.js.map +1 -0
- package/dist/client/improvements.d.ts +29 -0
- package/dist/client/improvements.d.ts.map +1 -0
- package/dist/client/improvements.js +50 -0
- package/dist/client/improvements.js.map +1 -0
- package/dist/client/index.d.ts +8 -3
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/instances-types.d.ts +92 -0
- package/dist/client/instances-types.d.ts.map +1 -1
- package/dist/client/instances.d.ts +26 -4
- package/dist/client/instances.d.ts.map +1 -1
- package/dist/client/instances.js +94 -3
- package/dist/client/instances.js.map +1 -1
- package/dist/client/loxtep-client.d.ts +48 -3
- package/dist/client/loxtep-client.d.ts.map +1 -1
- package/dist/client/loxtep-client.js +73 -5
- package/dist/client/loxtep-client.js.map +1 -1
- package/dist/client/projects-types.d.ts +25 -0
- package/dist/client/projects-types.d.ts.map +1 -1
- package/dist/client/projects.d.ts +2 -1
- package/dist/client/projects.d.ts.map +1 -1
- package/dist/client/projects.js +17 -0
- package/dist/client/projects.js.map +1 -1
- package/dist/client/promises.d.ts +11 -0
- package/dist/client/promises.d.ts.map +1 -1
- package/dist/client/promises.js +11 -0
- package/dist/client/promises.js.map +1 -1
- package/dist/client/queue-types.d.ts +15 -2
- package/dist/client/queue-types.d.ts.map +1 -1
- package/dist/client/queues.d.ts.map +1 -1
- package/dist/client/queues.js +3 -14
- package/dist/client/queues.js.map +1 -1
- package/dist/client/schemas.d.ts +1 -0
- package/dist/client/schemas.d.ts.map +1 -1
- package/dist/client/schemas.js +4 -0
- package/dist/client/schemas.js.map +1 -1
- package/dist/client/thesaurus.d.ts +5 -0
- package/dist/client/thesaurus.d.ts.map +1 -1
- package/dist/client/thesaurus.js +12 -0
- package/dist/client/thesaurus.js.map +1 -1
- package/dist/codegen/emit.d.ts +25 -0
- package/dist/codegen/emit.d.ts.map +1 -0
- package/dist/codegen/emit.js +158 -0
- package/dist/codegen/emit.js.map +1 -0
- package/dist/codegen/index.d.ts +17 -0
- package/dist/codegen/index.d.ts.map +1 -0
- package/dist/codegen/index.js +16 -0
- package/dist/codegen/index.js.map +1 -0
- package/dist/codegen/load-workspace-context.d.ts +30 -0
- package/dist/codegen/load-workspace-context.d.ts.map +1 -0
- package/dist/codegen/load-workspace-context.js +127 -0
- package/dist/codegen/load-workspace-context.js.map +1 -0
- package/dist/codegen/normalize.d.ts +35 -0
- package/dist/codegen/normalize.d.ts.map +1 -0
- package/dist/codegen/normalize.js +77 -0
- package/dist/codegen/normalize.js.map +1 -0
- package/dist/codegen/types.d.ts +89 -0
- package/dist/codegen/types.d.ts.map +1 -0
- package/dist/codegen/types.js +9 -0
- package/dist/codegen/types.js.map +1 -0
- package/dist/codegen/write-artifact.d.ts +40 -0
- package/dist/codegen/write-artifact.d.ts.map +1 -0
- package/dist/codegen/write-artifact.js +74 -0
- package/dist/codegen/write-artifact.js.map +1 -0
- package/dist/config/index.d.ts +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/workspace-config.d.ts +76 -0
- package/dist/config/workspace-config.d.ts.map +1 -0
- package/dist/config/workspace-config.js +129 -0
- package/dist/config/workspace-config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/rstreams/event-bridge.d.ts +16 -2
- package/dist/rstreams/event-bridge.d.ts.map +1 -1
- package/dist/rstreams/event-bridge.js +38 -5
- package/dist/rstreams/event-bridge.js.map +1 -1
- package/dist/skills/check-scope.d.ts +42 -0
- package/dist/skills/check-scope.d.ts.map +1 -0
- package/dist/skills/check-scope.js +84 -0
- package/dist/skills/check-scope.js.map +1 -0
- package/dist/skills/index.d.ts +14 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +12 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/loader.d.ts +79 -0
- package/dist/skills/loader.d.ts.map +1 -0
- package/dist/skills/loader.js +102 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/skills/types.d.ts +55 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +9 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/skills/validate-references.d.ts +54 -0
- package/dist/skills/validate-references.d.ts.map +1 -0
- package/dist/skills/validate-references.js +80 -0
- package/dist/skills/validate-references.js.map +1 -0
- package/docs/getting-started.md +7 -0
- package/package.json +7 -5
- package/dist/cli/commands/data-assets-cmd.d.ts +0 -12
- package/dist/cli/commands/data-assets-cmd.d.ts.map +0 -1
- package/dist/cli/commands/data-assets-cmd.js +0 -75
- package/dist/cli/commands/data-assets-cmd.js.map +0 -1
- package/dist/cli/commands/pipelines-cmd.d.ts +0 -17
- package/dist/cli/commands/pipelines-cmd.d.ts.map +0 -1
- package/dist/cli/commands/pipelines-cmd.js +0 -52
- package/dist/cli/commands/pipelines-cmd.js.map +0 -1
- package/dist/cli/commands/promises-cmd.d.ts +0 -11
- package/dist/cli/commands/promises-cmd.d.ts.map +0 -1
- package/dist/cli/commands/promises-cmd.js +0 -53
- package/dist/cli/commands/promises-cmd.js.map +0 -1
- package/dist/client/consumptions-types.d.ts.map +0 -1
- package/dist/client/consumptions-types.js +0 -5
- package/dist/client/consumptions-types.js.map +0 -1
- package/dist/client/consumptions.d.ts +0 -14
- package/dist/client/consumptions.d.ts.map +0 -1
- package/dist/client/consumptions.js +0 -47
- package/dist/client/consumptions.js.map +0 -1
- package/dist/client/data-assets-types.d.ts +0 -150
- package/dist/client/data-assets-types.d.ts.map +0 -1
- package/dist/client/data-assets-types.js +0 -5
- package/dist/client/data-assets-types.js.map +0 -1
- package/dist/client/data-assets.d.ts +0 -31
- package/dist/client/data-assets.d.ts.map +0 -1
- package/dist/client/data-assets.js +0 -182
- package/dist/client/data-assets.js.map +0 -1
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure deploy compiler — `compileModule`
|
|
3
|
+
*
|
|
4
|
+
* Lowers a `DataWorkflowModule` into `GraphPatchOp[]` mirroring the backend's
|
|
5
|
+
* `graph-patch-apply.ts` shape. This is a pure function: no I/O, no network.
|
|
6
|
+
*
|
|
7
|
+
* Responsibilities:
|
|
8
|
+
* - Trigger → connection/ingestion node
|
|
9
|
+
* - Handler steps → transform node(s)
|
|
10
|
+
* - Sinks → data-product node(s)
|
|
11
|
+
* - Resolve `workflow_id` by name for in-place update (R3.5)
|
|
12
|
+
* - Collect `referencedResources` for pre-deploy existence validation (R1.8)
|
|
13
|
+
* - Compute removal set: modules on instance but absent from project (R3.7)
|
|
14
|
+
*
|
|
15
|
+
* Requirements: 3.4, 3.5, 3.7
|
|
16
|
+
*/
|
|
17
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
18
|
+
// Internal helpers
|
|
19
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
20
|
+
/** Generate a deterministic node ID from module name + a suffix. */
|
|
21
|
+
function nodeId(workflowName, suffix) {
|
|
22
|
+
return `${workflowName}__${suffix}`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Lower a single trigger into a connection/ingestion node + graph ops.
|
|
26
|
+
* Returns the entity_id of the created node so downstream nodes can connect.
|
|
27
|
+
*/
|
|
28
|
+
function lowerTrigger(trigger, workflowName, index) {
|
|
29
|
+
const entityId = nodeId(workflowName, `trigger_${index}`);
|
|
30
|
+
const refs = [];
|
|
31
|
+
const entity = {
|
|
32
|
+
connection_id: entityId,
|
|
33
|
+
name: `${workflowName}_trigger_${index}`,
|
|
34
|
+
trigger_kind: trigger.kind,
|
|
35
|
+
};
|
|
36
|
+
if (trigger.ref) {
|
|
37
|
+
entity.source_id = trigger.ref.id;
|
|
38
|
+
entity.source_name = trigger.ref.name;
|
|
39
|
+
// Collect the resource reference
|
|
40
|
+
if (trigger.kind === 'queue') {
|
|
41
|
+
refs.push({ type: 'queue', id: trigger.ref.id, name: trigger.ref.name });
|
|
42
|
+
}
|
|
43
|
+
else if (trigger.kind === 'connector') {
|
|
44
|
+
refs.push({ type: 'connector', id: trigger.ref.id, name: trigger.ref.name });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (trigger.schedule) {
|
|
48
|
+
entity.schedule = trigger.schedule;
|
|
49
|
+
}
|
|
50
|
+
if (trigger.path) {
|
|
51
|
+
entity.webhook_path = trigger.path;
|
|
52
|
+
}
|
|
53
|
+
const ops = [
|
|
54
|
+
{ op: 'add_node', entity_type: 'connections', entity },
|
|
55
|
+
];
|
|
56
|
+
return { ops, entityId, refs };
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Lower the handler into a single transform node.
|
|
60
|
+
* The handler itself is stored as a reference (name-based) — the actual execution
|
|
61
|
+
* is handled at runtime by the deployed bot, not baked into the graph.
|
|
62
|
+
*/
|
|
63
|
+
function lowerHandler(workflowName) {
|
|
64
|
+
const entityId = nodeId(workflowName, 'handler');
|
|
65
|
+
const entity = {
|
|
66
|
+
transformation_id: entityId,
|
|
67
|
+
name: `${workflowName}_handler`,
|
|
68
|
+
transform_type: 'code_handler',
|
|
69
|
+
module_name: workflowName,
|
|
70
|
+
};
|
|
71
|
+
const ops = [
|
|
72
|
+
{ op: 'add_node', entity_type: 'transformations', entity },
|
|
73
|
+
];
|
|
74
|
+
return { ops, entityId };
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Resolve the `workflow_id` for a module by name from the NormalizedContext.
|
|
78
|
+
* If a workflow with the same name exists, returns its id for in-place update (R3.5).
|
|
79
|
+
*/
|
|
80
|
+
function resolveWorkflowId(workflowName, ctx) {
|
|
81
|
+
const match = ctx.workflows.find((w) => w.data.name === workflowName);
|
|
82
|
+
return match?.data.id;
|
|
83
|
+
}
|
|
84
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
85
|
+
// Node compile-time validation (R10.3)
|
|
86
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
87
|
+
/**
|
|
88
|
+
* Validate declared nodes before lowering. Fail fast if:
|
|
89
|
+
* 1. Any node has an `upstream` that cannot be resolved to a known node name
|
|
90
|
+
* 2. Any ApprovalNodeSpec lacks at least one labeled downstream connection
|
|
91
|
+
*
|
|
92
|
+
* The `knownNames` map is seeded with trigger/handler names before this runs,
|
|
93
|
+
* and we also consider other declared node names as valid references.
|
|
94
|
+
*/
|
|
95
|
+
function validateNodes(nodes, seedNames) {
|
|
96
|
+
// Build the full set of known names: seed names (triggers, handler) + all declared node names
|
|
97
|
+
const knownNames = new Set(seedNames.keys());
|
|
98
|
+
for (const node of nodes) {
|
|
99
|
+
knownNames.add(node.name);
|
|
100
|
+
}
|
|
101
|
+
for (const node of nodes) {
|
|
102
|
+
// Validate upstream is resolvable
|
|
103
|
+
if (!knownNames.has(node.upstream)) {
|
|
104
|
+
throw new Error(`Node "${node.name}" has upstream "${node.upstream}" which does not resolve to any known node.`);
|
|
105
|
+
}
|
|
106
|
+
// Validate ApprovalNodeSpec has at least one labeled downstream
|
|
107
|
+
if (node.kind === 'approval') {
|
|
108
|
+
if (!node.approved && !node.rejected) {
|
|
109
|
+
throw new Error(`Approval node "${node.name}" must have at least one labeled downstream connection (approved or rejected).`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
115
|
+
// Node lowering helpers
|
|
116
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
117
|
+
/**
|
|
118
|
+
* Lower the `nodes` array from a DataWorkflowModule into graph patch ops.
|
|
119
|
+
*
|
|
120
|
+
* For each declared node:
|
|
121
|
+
* - Emits an `add_node` op with the correct entity_type and config
|
|
122
|
+
* - Emits a `connect_nodes` op from the resolved upstream node
|
|
123
|
+
* - For ApprovalNodeSpec: emits `connect_nodes_labeled` for approved/rejected paths
|
|
124
|
+
* - For AgentNodeSpec: emits `connect_nodes_labeled` for error path
|
|
125
|
+
*
|
|
126
|
+
* The `nameToEntityId` map provides resolution of node names to entity_ids,
|
|
127
|
+
* seeded with trigger and handler entity ids before processing nodes.
|
|
128
|
+
*/
|
|
129
|
+
function lowerNodes(nodes, workflowName, nameToEntityId) {
|
|
130
|
+
const ops = [];
|
|
131
|
+
// First pass: assign entity_ids for all declared nodes so cross-references resolve
|
|
132
|
+
for (const node of nodes) {
|
|
133
|
+
const entityId = nodeId(workflowName, `node_${node.name}`);
|
|
134
|
+
nameToEntityId.set(node.name, entityId);
|
|
135
|
+
}
|
|
136
|
+
// Second pass: emit ops for each node
|
|
137
|
+
for (const node of nodes) {
|
|
138
|
+
const entityId = nameToEntityId.get(node.name);
|
|
139
|
+
if (node.kind === 'approval') {
|
|
140
|
+
// Emit add_node for approval
|
|
141
|
+
const entity = {
|
|
142
|
+
approval_node_id: entityId,
|
|
143
|
+
name: node.name,
|
|
144
|
+
approval_channel: node.approvalChannel,
|
|
145
|
+
timeout_hours: node.timeoutHours,
|
|
146
|
+
};
|
|
147
|
+
if (node.description !== undefined) {
|
|
148
|
+
entity.description = node.description;
|
|
149
|
+
}
|
|
150
|
+
ops.push({ op: 'add_node', entity_type: 'approvals', entity });
|
|
151
|
+
// Emit connect_nodes from upstream
|
|
152
|
+
const upstreamId = nameToEntityId.get(node.upstream);
|
|
153
|
+
if (upstreamId) {
|
|
154
|
+
ops.push({ op: 'connect_nodes', from_entity_id: upstreamId, to_entity_id: entityId });
|
|
155
|
+
}
|
|
156
|
+
// Emit connect_nodes_labeled for approved path
|
|
157
|
+
if (node.approved) {
|
|
158
|
+
const approvedId = nameToEntityId.get(node.approved);
|
|
159
|
+
if (approvedId) {
|
|
160
|
+
ops.push({
|
|
161
|
+
op: 'connect_nodes_labeled',
|
|
162
|
+
from_entity_id: entityId,
|
|
163
|
+
to_entity_id: approvedId,
|
|
164
|
+
label: 'approved',
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// Emit connect_nodes_labeled for rejected path
|
|
169
|
+
if (node.rejected) {
|
|
170
|
+
const rejectedId = nameToEntityId.get(node.rejected);
|
|
171
|
+
if (rejectedId) {
|
|
172
|
+
ops.push({
|
|
173
|
+
op: 'connect_nodes_labeled',
|
|
174
|
+
from_entity_id: entityId,
|
|
175
|
+
to_entity_id: rejectedId,
|
|
176
|
+
label: 'rejected',
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
else if (node.kind === 'agent') {
|
|
182
|
+
// Emit add_node for agent
|
|
183
|
+
const entity = {
|
|
184
|
+
agent_node_id: entityId,
|
|
185
|
+
name: node.name,
|
|
186
|
+
model_id: node.modelId,
|
|
187
|
+
prompt_template: node.promptTemplate,
|
|
188
|
+
timeout_seconds: node.timeoutSeconds ?? 30,
|
|
189
|
+
};
|
|
190
|
+
if (node.outputSchema !== undefined) {
|
|
191
|
+
entity.output_schema = node.outputSchema;
|
|
192
|
+
}
|
|
193
|
+
if (node.description !== undefined) {
|
|
194
|
+
entity.description = node.description;
|
|
195
|
+
}
|
|
196
|
+
ops.push({ op: 'add_node', entity_type: 'agents', entity });
|
|
197
|
+
// Emit connect_nodes from upstream
|
|
198
|
+
const upstreamId = nameToEntityId.get(node.upstream);
|
|
199
|
+
if (upstreamId) {
|
|
200
|
+
ops.push({ op: 'connect_nodes', from_entity_id: upstreamId, to_entity_id: entityId });
|
|
201
|
+
}
|
|
202
|
+
// Emit connect_nodes_labeled for error path
|
|
203
|
+
if (node.error) {
|
|
204
|
+
const errorId = nameToEntityId.get(node.error);
|
|
205
|
+
if (errorId) {
|
|
206
|
+
ops.push({
|
|
207
|
+
op: 'connect_nodes_labeled',
|
|
208
|
+
from_entity_id: entityId,
|
|
209
|
+
to_entity_id: errorId,
|
|
210
|
+
label: 'error',
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return { ops };
|
|
217
|
+
}
|
|
218
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
219
|
+
// Public API
|
|
220
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
221
|
+
/**
|
|
222
|
+
* Compile a single `DataWorkflowModule` into a `CompiledWorkflow`.
|
|
223
|
+
*
|
|
224
|
+
* This is a **pure function**: it performs no I/O, no network calls. Given the
|
|
225
|
+
* same module and context, it always produces the same output.
|
|
226
|
+
*
|
|
227
|
+
* Graph lowering:
|
|
228
|
+
* - Each trigger → a `connections` (ingestion) node
|
|
229
|
+
* - The handler → a `transformations` node
|
|
230
|
+
* - All trigger nodes connect to the handler node
|
|
231
|
+
*
|
|
232
|
+
* @param mod - The data workflow module to compile
|
|
233
|
+
* @param ctx - The normalized workspace context (provides workflow identity lookup)
|
|
234
|
+
* @returns A `CompiledWorkflow` with ops, referencedResources, and optional workflow_id
|
|
235
|
+
*/
|
|
236
|
+
export function compileModule(mod, ctx) {
|
|
237
|
+
const ops = [];
|
|
238
|
+
const referencedResources = [];
|
|
239
|
+
// Resolve workflow identity for in-place update (R3.5)
|
|
240
|
+
const workflow_id = resolveWorkflowId(mod.name, ctx);
|
|
241
|
+
// Lower each trigger into a connection/ingestion node
|
|
242
|
+
const triggerEntityIds = [];
|
|
243
|
+
for (let i = 0; i < mod.triggers.length; i++) {
|
|
244
|
+
const trigger = mod.triggers[i];
|
|
245
|
+
const result = lowerTrigger(trigger, mod.name, i);
|
|
246
|
+
ops.push(...result.ops);
|
|
247
|
+
triggerEntityIds.push(result.entityId);
|
|
248
|
+
referencedResources.push(...result.refs);
|
|
249
|
+
}
|
|
250
|
+
// Lower handler into a transform node
|
|
251
|
+
const handler = lowerHandler(mod.name);
|
|
252
|
+
ops.push(...handler.ops);
|
|
253
|
+
// Connect each trigger node to the handler node
|
|
254
|
+
for (const triggerId of triggerEntityIds) {
|
|
255
|
+
ops.push({
|
|
256
|
+
op: 'connect_nodes',
|
|
257
|
+
from_entity_id: triggerId,
|
|
258
|
+
to_entity_id: handler.entityId,
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
// Lower declarative nodes (approval gates, agent invocations) if present (R9.3, R9.4, R10.1, R10.2)
|
|
262
|
+
if (mod.nodes && mod.nodes.length > 0) {
|
|
263
|
+
// Build name-to-entityId map seeded with trigger/handler nodes
|
|
264
|
+
const nameToEntityId = new Map();
|
|
265
|
+
// Register trigger nodes by their constructed names (trigger_0, trigger_1, ...)
|
|
266
|
+
for (let i = 0; i < triggerEntityIds.length; i++) {
|
|
267
|
+
nameToEntityId.set(`trigger_${i}`, triggerEntityIds[i]);
|
|
268
|
+
}
|
|
269
|
+
// Register the handler node
|
|
270
|
+
nameToEntityId.set('handler', handler.entityId);
|
|
271
|
+
// Compile-time validation (R10.3): fail fast before emitting ops
|
|
272
|
+
validateNodes(mod.nodes, nameToEntityId);
|
|
273
|
+
const nodeResult = lowerNodes(mod.nodes, mod.name, nameToEntityId);
|
|
274
|
+
ops.push(...nodeResult.ops);
|
|
275
|
+
}
|
|
276
|
+
return {
|
|
277
|
+
name: mod.name,
|
|
278
|
+
...(workflow_id !== undefined ? { workflow_id } : {}),
|
|
279
|
+
ops,
|
|
280
|
+
referencedResources,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Compute the removal set: workflows present on the instance but absent from
|
|
285
|
+
* the current set of project modules (R3.7).
|
|
286
|
+
*
|
|
287
|
+
* Returns `remove_node` operations for each workflow that should be deleted,
|
|
288
|
+
* along with the workflow identities (name + id) for reporting.
|
|
289
|
+
*
|
|
290
|
+
* @param projectModuleNames - The set of module names currently in the project
|
|
291
|
+
* @param ctx - The normalized workspace context (contains instance workflows)
|
|
292
|
+
* @returns An object with removal ops and the names/ids of removed workflows
|
|
293
|
+
*/
|
|
294
|
+
export function computeRemovalSet(projectModuleNames, ctx) {
|
|
295
|
+
const removals = [];
|
|
296
|
+
const ops = [];
|
|
297
|
+
for (const wf of ctx.workflows) {
|
|
298
|
+
if (!projectModuleNames.has(wf.data.name)) {
|
|
299
|
+
removals.push({ name: wf.data.name, workflow_id: wf.data.id });
|
|
300
|
+
ops.push({ op: 'remove_node', entity_id: wf.data.id });
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return { removals, ops };
|
|
304
|
+
}
|
|
305
|
+
//# sourceMappingURL=compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/authoring/compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AA0CH,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,oEAAoE;AACpE,SAAS,MAAM,CAAC,YAAoB,EAAE,MAAc;IAClD,OAAO,GAAG,YAAY,KAAK,MAAM,EAAE,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CACnB,OAAoB,EACpB,YAAoB,EACpB,KAAa;IAEb,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,WAAW,KAAK,EAAE,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAkB,EAAE,CAAC;IAE/B,MAAM,MAAM,GAA4B;QACtC,aAAa,EAAE,QAAQ;QACvB,IAAI,EAAE,GAAG,YAAY,YAAY,KAAK,EAAE;QACxC,YAAY,EAAE,OAAO,CAAC,IAAI;KAC3B,CAAC;IAEF,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QAEtC,iCAAiC;QACjC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3E,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACrC,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IACrC,CAAC;IAED,MAAM,GAAG,GAAmB;QAC1B,EAAE,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE;KACvD,CAAC;IAEF,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CACnB,YAAoB;IAEpB,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAEjD,MAAM,MAAM,GAA4B;QACtC,iBAAiB,EAAE,QAAQ;QAC3B,IAAI,EAAE,GAAG,YAAY,UAAU;QAC/B,cAAc,EAAE,cAAc;QAC9B,WAAW,EAAE,YAAY;KAC1B,CAAC;IAEF,MAAM,GAAG,GAAmB;QAC1B,EAAE,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,EAAE;KAC3D,CAAC;IAEF,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CACxB,YAAoB,EACpB,GAAsB;IAEtB,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;IACtE,OAAO,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;AACxB,CAAC;AAED,+EAA+E;AAC/E,uCAAuC;AACvC,+EAA+E;AAE/E;;;;;;;GAOG;AACH,SAAS,aAAa,CACpB,KAA8C,EAC9C,SAA8B;IAE9B,8FAA8F;IAC9F,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,kCAAkC;QAClC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,SAAS,IAAI,CAAC,IAAI,mBAAmB,IAAI,CAAC,QAAQ,6CAA6C,CAChG,CAAC;QACJ,CAAC;QAED,gEAAgE;QAChE,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,CAAC,IAAI,gFAAgF,CAC5G,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;;;;;;;GAWG;AACH,SAAS,UAAU,CACjB,KAA8C,EAC9C,YAAoB,EACpB,cAAmC;IAEnC,MAAM,GAAG,GAAmB,EAAE,CAAC;IAE/B,mFAAmF;IACnF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,sCAAsC;IACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC;QAEhD,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7B,6BAA6B;YAC7B,MAAM,MAAM,GAA4B;gBACtC,gBAAgB,EAAE,QAAQ;gBAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,gBAAgB,EAAE,IAAI,CAAC,eAAe;gBACtC,aAAa,EAAE,IAAI,CAAC,YAAY;aACjC,CAAC;YACF,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACnC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACxC,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;YAE/D,mCAAmC;YACnC,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAI,UAAU,EAAE,CAAC;gBACf,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;YACxF,CAAC;YAED,+CAA+C;YAC/C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACrD,IAAI,UAAU,EAAE,CAAC;oBACf,GAAG,CAAC,IAAI,CAAC;wBACP,EAAE,EAAE,uBAAuB;wBAC3B,cAAc,EAAE,QAAQ;wBACxB,YAAY,EAAE,UAAU;wBACxB,KAAK,EAAE,UAAU;qBAClB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,+CAA+C;YAC/C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACrD,IAAI,UAAU,EAAE,CAAC;oBACf,GAAG,CAAC,IAAI,CAAC;wBACP,EAAE,EAAE,uBAAuB;wBAC3B,cAAc,EAAE,QAAQ;wBACxB,YAAY,EAAE,UAAU;wBACxB,KAAK,EAAE,UAAU;qBAClB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACjC,0BAA0B;YAC1B,MAAM,MAAM,GAA4B;gBACtC,aAAa,EAAE,QAAQ;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,OAAO;gBACtB,eAAe,EAAE,IAAI,CAAC,cAAc;gBACpC,eAAe,EAAE,IAAI,CAAC,cAAc,IAAI,EAAE;aAC3C,CAAC;YACF,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBACpC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;YAC3C,CAAC;YACD,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACnC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACxC,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YAE5D,mCAAmC;YACnC,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAI,UAAU,EAAE,CAAC;gBACf,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;YACxF,CAAC;YAED,4CAA4C;YAC5C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC/C,IAAI,OAAO,EAAE,CAAC;oBACZ,GAAG,CAAC,IAAI,CAAC;wBACP,EAAE,EAAE,uBAAuB;wBAC3B,cAAc,EAAE,QAAQ;wBACxB,YAAY,EAAE,OAAO;wBACrB,KAAK,EAAE,OAAO;qBACf,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,CAAC;AACjB,CAAC;AAED,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,aAAa,CAC3B,GAAuB,EACvB,GAAsB;IAEtB,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,MAAM,mBAAmB,GAAkB,EAAE,CAAC;IAE9C,uDAAuD;IACvD,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAErD,sDAAsD;IACtD,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAClD,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvC,mBAAmB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,sCAAsC;IACtC,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAEzB,gDAAgD;IAChD,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE,CAAC;QACzC,GAAG,CAAC,IAAI,CAAC;YACP,EAAE,EAAE,eAAe;YACnB,cAAc,EAAE,SAAS;YACzB,YAAY,EAAE,OAAO,CAAC,QAAQ;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,oGAAoG;IACpG,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,+DAA+D;QAC/D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;QAEjD,gFAAgF;QAChF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,4BAA4B;QAC5B,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEhD,iEAAiE;QACjE,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAEzC,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QACnE,GAAG,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG;QACH,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAC/B,kBAA+B,EAC/B,GAAsB;IAEtB,MAAM,QAAQ,GAAiD,EAAE,CAAC;IAClE,MAAM,GAAG,GAAmB,EAAE,CAAC;IAE/B,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/D,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `defineDataWorkflow` factory — the core code-first authoring entry point.
|
|
3
|
+
*
|
|
4
|
+
* Validates the module specification synchronously using zod and throws a
|
|
5
|
+
* `ValidationError` naming the invalid argument on failure.
|
|
6
|
+
*/
|
|
7
|
+
import type { DataWorkflowModule } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Validates a `DataWorkflowModule` specification and returns it unchanged.
|
|
10
|
+
*
|
|
11
|
+
* Throws `ValidationError` (from `@loxtep/sdk/errors`) with a `field_errors`
|
|
12
|
+
* entry naming the invalid argument when validation fails.
|
|
13
|
+
*
|
|
14
|
+
* Validation rules:
|
|
15
|
+
* - `name`: 1–64 characters (R3.1, R3.8)
|
|
16
|
+
* - `triggers`: at least 1 and at most 10 entries (R3.1, R3.8)
|
|
17
|
+
* - `requireApproval`: at most 100 entries, each 1–256 characters (R6.1)
|
|
18
|
+
*
|
|
19
|
+
* @param spec - The workflow module specification to validate.
|
|
20
|
+
* @returns The validated specification (unchanged).
|
|
21
|
+
* @throws {ValidationError} If any argument is invalid.
|
|
22
|
+
*/
|
|
23
|
+
export declare function defineDataWorkflow(spec: DataWorkflowModule): DataWorkflowModule;
|
|
24
|
+
//# sourceMappingURL=define-data-workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-data-workflow.d.ts","sourceRoot":"","sources":["../../src/authoring/define-data-workflow.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAWrD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,kBAAkB,GAAG,kBAAkB,CAiE/E"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `defineDataWorkflow` factory — the core code-first authoring entry point.
|
|
3
|
+
*
|
|
4
|
+
* Validates the module specification synchronously using zod and throws a
|
|
5
|
+
* `ValidationError` naming the invalid argument on failure.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { ValidationError } from '../errors/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Zod schema for the `requireApproval` array.
|
|
11
|
+
* Each entry is a non-empty string of 1–256 characters, with at most 100 entries.
|
|
12
|
+
*/
|
|
13
|
+
const requireApprovalSchema = z
|
|
14
|
+
.array(z.string().min(1).max(256))
|
|
15
|
+
.max(100)
|
|
16
|
+
.optional();
|
|
17
|
+
/**
|
|
18
|
+
* Validates a `DataWorkflowModule` specification and returns it unchanged.
|
|
19
|
+
*
|
|
20
|
+
* Throws `ValidationError` (from `@loxtep/sdk/errors`) with a `field_errors`
|
|
21
|
+
* entry naming the invalid argument when validation fails.
|
|
22
|
+
*
|
|
23
|
+
* Validation rules:
|
|
24
|
+
* - `name`: 1–64 characters (R3.1, R3.8)
|
|
25
|
+
* - `triggers`: at least 1 and at most 10 entries (R3.1, R3.8)
|
|
26
|
+
* - `requireApproval`: at most 100 entries, each 1–256 characters (R6.1)
|
|
27
|
+
*
|
|
28
|
+
* @param spec - The workflow module specification to validate.
|
|
29
|
+
* @returns The validated specification (unchanged).
|
|
30
|
+
* @throws {ValidationError} If any argument is invalid.
|
|
31
|
+
*/
|
|
32
|
+
export function defineDataWorkflow(spec) {
|
|
33
|
+
const errors = [];
|
|
34
|
+
// Validate name (1–64 characters)
|
|
35
|
+
if (typeof spec.name !== 'string' || spec.name.length < 1 || spec.name.length > 64) {
|
|
36
|
+
errors.push({
|
|
37
|
+
field: 'name',
|
|
38
|
+
message: `name must be between 1 and 64 characters, got ${typeof spec.name === 'string' ? spec.name.length : typeof spec.name}`,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
// Validate triggers (1–10)
|
|
42
|
+
if (!Array.isArray(spec.triggers) || spec.triggers.length < 1 || spec.triggers.length > 10) {
|
|
43
|
+
const count = Array.isArray(spec.triggers) ? spec.triggers.length : 0;
|
|
44
|
+
errors.push({
|
|
45
|
+
field: 'triggers',
|
|
46
|
+
message: `triggers must contain between 1 and 10 entries, got ${count}`,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
// Validate requireApproval (≤100 entries, each 1–256 chars)
|
|
50
|
+
if (spec.requireApproval !== undefined) {
|
|
51
|
+
const result = requireApprovalSchema.safeParse(spec.requireApproval);
|
|
52
|
+
if (!result.success) {
|
|
53
|
+
const zodIssues = result.error.issues;
|
|
54
|
+
// Provide a targeted message based on the zod failure
|
|
55
|
+
const issue = zodIssues[0];
|
|
56
|
+
if (issue) {
|
|
57
|
+
if (issue.code === 'too_big' && issue.path.length === 0) {
|
|
58
|
+
errors.push({
|
|
59
|
+
field: 'requireApproval',
|
|
60
|
+
message: `requireApproval must contain at most 100 entries, got ${spec.requireApproval.length}`,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
else if (issue.code === 'too_small' && issue.path.length > 0) {
|
|
64
|
+
const idx = String(issue.path[0]);
|
|
65
|
+
errors.push({
|
|
66
|
+
field: 'requireApproval',
|
|
67
|
+
message: `requireApproval[${idx}] must be between 1 and 256 characters`,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
else if (issue.code === 'too_big' && issue.path.length > 0) {
|
|
71
|
+
const idx = issue.path[0];
|
|
72
|
+
const idxStr = String(idx);
|
|
73
|
+
errors.push({
|
|
74
|
+
field: 'requireApproval',
|
|
75
|
+
message: `requireApproval[${idxStr}] must be between 1 and 256 characters, got ${spec.requireApproval[idx]?.length}`,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
errors.push({
|
|
80
|
+
field: 'requireApproval',
|
|
81
|
+
message: `requireApproval is invalid: ${issue.message}`,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (errors.length > 0) {
|
|
88
|
+
const message = errors.map((e) => `${e.field}: ${e.message}`).join('; ');
|
|
89
|
+
throw new ValidationError(`Invalid defineDataWorkflow specification: ${message}`, errors);
|
|
90
|
+
}
|
|
91
|
+
return spec;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=define-data-workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-data-workflow.js","sourceRoot":"","sources":["../../src/authoring/define-data-workflow.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD;;;GAGG;AACH,MAAM,qBAAqB,GAAG,CAAC;KAC5B,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACjC,GAAG,CAAC,GAAG,CAAC;KACR,QAAQ,EAAE,CAAC;AAEd;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAwB;IACzD,MAAM,MAAM,GAA8C,EAAE,CAAC;IAE7D,kCAAkC;IAClC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACnF,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,iDAAiD,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE;SAChI,CAAC,CAAC;IACL,CAAC;IAED,2BAA2B;IAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC3F,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE,uDAAuD,KAAK,EAAE;SACxE,CAAC,CAAC;IACL,CAAC;IAED,4DAA4D;IAC5D,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YACtC,sDAAsD;YACtD,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxD,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,iBAAiB;wBACxB,OAAO,EAAE,yDAA0D,IAAI,CAAC,eAA4B,CAAC,MAAM,EAAE;qBAC9G,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/D,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClC,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,iBAAiB;wBACxB,OAAO,EAAE,mBAAmB,GAAG,wCAAwC;qBACxE,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7D,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,iBAAiB;wBACxB,OAAO,EAAE,mBAAmB,MAAM,+CAAgD,IAAI,CAAC,eAA4B,CAAC,GAAa,CAAC,EAAE,MAAM,EAAE;qBAC7I,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC;wBACV,KAAK,EAAE,iBAAiB;wBACxB,OAAO,EAAE,+BAA+B,KAAK,CAAC,OAAO,EAAE;qBACxD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzE,MAAM,IAAI,eAAe,CACvB,6CAA6C,OAAO,EAAE,EACtD,MAAM,CACP,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code-first data workflow authoring surface.
|
|
3
|
+
*
|
|
4
|
+
* Entry points:
|
|
5
|
+
* - `defineDataWorkflow` — validates and returns a `DataWorkflowModule` spec
|
|
6
|
+
* - `on` — trigger builders (`queueEvent`, `connectorEvent`, `schedule`, `webhook`)
|
|
7
|
+
* - `createToolbox` — deterministic typed platform calls (no model in the loop)
|
|
8
|
+
* - `agent` — agentic operation entry point with scope enforcement and action trace
|
|
9
|
+
*/
|
|
10
|
+
export { defineDataWorkflow } from './define-data-workflow.js';
|
|
11
|
+
export { on } from './triggers.js';
|
|
12
|
+
export { createToolbox, ToolboxOperationError } from './toolbox.js';
|
|
13
|
+
export { agent, validateAgentOptions, computeReachableScope, enforceAgentScope, createScopeGuardedToolbox, ActionTrace, AgentScopeError, } from './agent.js';
|
|
14
|
+
export type { DataWorkflowModule, TriggerSpec, QueueRef, ConnectorRef, HandlerContext, ApprovalNodeSpec, AgentNodeSpec, } from './types.js';
|
|
15
|
+
export { compileModule, computeRemovalSet } from './compiler.js';
|
|
16
|
+
export type { GraphPatchOp, ResourceRef, CompiledWorkflow, } from './compiler.js';
|
|
17
|
+
export type { Toolbox, ToolboxDataProducts, ToolboxQueues, ToolboxConnections, ToolboxWorkflows, CreateToolboxOptions, DataProductRef, WorkflowRef, WriteResult, QueryRows, } from './toolbox.js';
|
|
18
|
+
export type { SkillRef, AgentOptions, ActionOutcome, ActionTraceEntry, AgentResult, AgentExecutionContext, } from './agent.js';
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/authoring/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EACL,KAAK,EACL,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACjE,YAAY,EACV,YAAY,EACZ,WAAW,EACX,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,OAAO,EACP,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,WAAW,EACX,SAAS,GACV,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code-first data workflow authoring surface.
|
|
3
|
+
*
|
|
4
|
+
* Entry points:
|
|
5
|
+
* - `defineDataWorkflow` — validates and returns a `DataWorkflowModule` spec
|
|
6
|
+
* - `on` — trigger builders (`queueEvent`, `connectorEvent`, `schedule`, `webhook`)
|
|
7
|
+
* - `createToolbox` — deterministic typed platform calls (no model in the loop)
|
|
8
|
+
* - `agent` — agentic operation entry point with scope enforcement and action trace
|
|
9
|
+
*/
|
|
10
|
+
export { defineDataWorkflow } from './define-data-workflow.js';
|
|
11
|
+
export { on } from './triggers.js';
|
|
12
|
+
export { createToolbox, ToolboxOperationError } from './toolbox.js';
|
|
13
|
+
export { agent, validateAgentOptions, computeReachableScope, enforceAgentScope, createScopeGuardedToolbox, ActionTrace, AgentScopeError, } from './agent.js';
|
|
14
|
+
export { compileModule, computeRemovalSet } from './compiler.js';
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/authoring/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EACL,KAAK,EACL,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC;AAUpB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic `toolbox` namespace — direct, typed platform calls with no model
|
|
3
|
+
* in the loop (R4.1, R4.7).
|
|
4
|
+
*
|
|
5
|
+
* Each method is a thin wrapper over the corresponding `LoxtepClient` namespace
|
|
6
|
+
* method. On success, it returns a typed result. On failure, it throws a
|
|
7
|
+
* `ToolboxOperationError` identifying the failed operation — it never falls back
|
|
8
|
+
* to a model.
|
|
9
|
+
*/
|
|
10
|
+
import type { LoxtepClient } from '../client/loxtep-client.js';
|
|
11
|
+
import type { DataProduct, DataProductQueryResult } from '../client/data-products-types.js';
|
|
12
|
+
import type { Connection, ConnectionTestResult } from '../client/connection-types.js';
|
|
13
|
+
import type { Flow } from '../client/flow-types.js';
|
|
14
|
+
import type { WorkflowGraph } from '../client/workflows-types.js';
|
|
15
|
+
import type { QueueRef } from './types.js';
|
|
16
|
+
import { LoxtepError } from '../errors/base.js';
|
|
17
|
+
/** Result of a data product write operation. */
|
|
18
|
+
export interface WriteResult {
|
|
19
|
+
/** Whether the write succeeded. */
|
|
20
|
+
success: true;
|
|
21
|
+
/** Number of events written. */
|
|
22
|
+
events_written: number;
|
|
23
|
+
}
|
|
24
|
+
/** Rows returned from a data product query. */
|
|
25
|
+
export interface QueryRows {
|
|
26
|
+
items: Record<string, unknown>[];
|
|
27
|
+
metadata: DataProductQueryResult['metadata'];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Error thrown when a deterministic toolbox operation fails.
|
|
31
|
+
* Identifies the failed operation and namespace so the caller can
|
|
32
|
+
* distinguish it from other errors.
|
|
33
|
+
*
|
|
34
|
+
* Per R4.7 — the SDK never falls back to a model on failure.
|
|
35
|
+
*/
|
|
36
|
+
export declare class ToolboxOperationError extends LoxtepError {
|
|
37
|
+
/** The toolbox namespace where the failure occurred (e.g. 'dataProducts'). */
|
|
38
|
+
readonly namespace: string;
|
|
39
|
+
/** The operation that failed (e.g. 'write', 'query', 'list'). */
|
|
40
|
+
readonly operation: string;
|
|
41
|
+
constructor(namespace: string, operation: string, message: string, cause?: unknown);
|
|
42
|
+
}
|
|
43
|
+
/** Typed reference to a data product from the Generated_SDK_Artifact. */
|
|
44
|
+
export interface DataProductRef {
|
|
45
|
+
id: string;
|
|
46
|
+
name: string;
|
|
47
|
+
}
|
|
48
|
+
/** Typed reference to a workflow from the Generated_SDK_Artifact. */
|
|
49
|
+
export interface WorkflowRef {
|
|
50
|
+
id: string;
|
|
51
|
+
name: string;
|
|
52
|
+
}
|
|
53
|
+
export type { QueueRef, ConnectorRef } from './types.js';
|
|
54
|
+
/**
|
|
55
|
+
* Data products toolbox — deterministic operations on data products.
|
|
56
|
+
*/
|
|
57
|
+
export interface ToolboxDataProducts {
|
|
58
|
+
/** Write an event to a data product's stream queue. */
|
|
59
|
+
write(ref: DataProductRef, event: unknown): Promise<WriteResult>;
|
|
60
|
+
/** Execute a SQL query against a data product. */
|
|
61
|
+
query(ref: DataProductRef, sql: string): Promise<QueryRows>;
|
|
62
|
+
/** Get a data product by reference. */
|
|
63
|
+
get(ref: DataProductRef): Promise<DataProduct>;
|
|
64
|
+
/** List data products (optionally filtered by domain). */
|
|
65
|
+
list(filters?: {
|
|
66
|
+
domain_id?: string;
|
|
67
|
+
}): Promise<DataProduct[]>;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Queues toolbox — deterministic operations on queues.
|
|
71
|
+
*/
|
|
72
|
+
export interface ToolboxQueues {
|
|
73
|
+
/** Write an event to a queue. */
|
|
74
|
+
write(ref: QueueRef, event: unknown): Promise<void>;
|
|
75
|
+
/** Get queue metadata. */
|
|
76
|
+
getMetadata(ref: QueueRef): Promise<{
|
|
77
|
+
queue_name: string;
|
|
78
|
+
[key: string]: unknown;
|
|
79
|
+
}>;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Connections toolbox — deterministic operations on connections.
|
|
83
|
+
*/
|
|
84
|
+
export interface ToolboxConnections {
|
|
85
|
+
/** List connections for the project. */
|
|
86
|
+
list(): Promise<Connection[]>;
|
|
87
|
+
/** Get a specific connection. */
|
|
88
|
+
get(connectionId: string): Promise<Connection>;
|
|
89
|
+
/** Test a connection. */
|
|
90
|
+
test(connectionId: string): Promise<ConnectionTestResult>;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Workflows toolbox — deterministic operations on workflows.
|
|
94
|
+
*/
|
|
95
|
+
export interface ToolboxWorkflows {
|
|
96
|
+
/** List workflows for the project. */
|
|
97
|
+
list(): Promise<Flow[]>;
|
|
98
|
+
/** Get a workflow's graph. */
|
|
99
|
+
getGraph(ref: WorkflowRef): Promise<WorkflowGraph>;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* The deterministic Toolbox namespace — thin typed wrappers over
|
|
103
|
+
* `LoxtepClient` namespaces. Each method returns typed results or throws a
|
|
104
|
+
* `ToolboxOperationError`. No model is ever invoked.
|
|
105
|
+
*/
|
|
106
|
+
export interface Toolbox {
|
|
107
|
+
dataProducts: ToolboxDataProducts;
|
|
108
|
+
queues: ToolboxQueues;
|
|
109
|
+
connections: ToolboxConnections;
|
|
110
|
+
workflows: ToolboxWorkflows;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Options for creating a toolbox.
|
|
114
|
+
*/
|
|
115
|
+
export interface CreateToolboxOptions {
|
|
116
|
+
/** The LoxtepClient instance to use for platform calls. */
|
|
117
|
+
client: LoxtepClient;
|
|
118
|
+
/** The project ID (used for project-scoped operations). */
|
|
119
|
+
projectId: string;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Create a `Toolbox` — deterministic, typed platform operations with no model
|
|
123
|
+
* in the loop.
|
|
124
|
+
*
|
|
125
|
+
* On success each method returns a typed result. On failure, a
|
|
126
|
+
* `ToolboxOperationError` is thrown identifying the failed operation.
|
|
127
|
+
* The toolbox never falls back to an AI model.
|
|
128
|
+
*
|
|
129
|
+
* @param options - Client and project configuration.
|
|
130
|
+
* @returns A `Toolbox` instance.
|
|
131
|
+
*/
|
|
132
|
+
export declare function createToolbox(options: CreateToolboxOptions): Toolbox;
|
|
133
|
+
//# sourceMappingURL=toolbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolbox.d.ts","sourceRoot":"","sources":["../../src/authoring/toolbox.ts"],"names":[],"mappings":"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"}
|