@controllerai/cli 0.2.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.
Files changed (96) hide show
  1. package/README.md +180 -0
  2. package/dist/api/client.js +330 -0
  3. package/dist/api/client.js.map +1 -0
  4. package/dist/appLinks.js +99 -0
  5. package/dist/appLinks.js.map +1 -0
  6. package/dist/argv.js +124 -0
  7. package/dist/argv.js.map +1 -0
  8. package/dist/commands/agent.js +813 -0
  9. package/dist/commands/agent.js.map +1 -0
  10. package/dist/commands/auth.js +327 -0
  11. package/dist/commands/auth.js.map +1 -0
  12. package/dist/commands/branch.js +441 -0
  13. package/dist/commands/branch.js.map +1 -0
  14. package/dist/commands/connect.js +148 -0
  15. package/dist/commands/connect.js.map +1 -0
  16. package/dist/commands/connection.js +148 -0
  17. package/dist/commands/connection.js.map +1 -0
  18. package/dist/commands/data.js +441 -0
  19. package/dist/commands/data.js.map +1 -0
  20. package/dist/commands/deps.js +63 -0
  21. package/dist/commands/deps.js.map +1 -0
  22. package/dist/commands/doctor.js +102 -0
  23. package/dist/commands/doctor.js.map +1 -0
  24. package/dist/commands/events.js +72 -0
  25. package/dist/commands/events.js.map +1 -0
  26. package/dist/commands/exec.js +306 -0
  27. package/dist/commands/exec.js.map +1 -0
  28. package/dist/commands/expr.js +346 -0
  29. package/dist/commands/expr.js.map +1 -0
  30. package/dist/commands/flow.js +447 -0
  31. package/dist/commands/flow.js.map +1 -0
  32. package/dist/commands/integration.js +102 -0
  33. package/dist/commands/integration.js.map +1 -0
  34. package/dist/commands/node.js +885 -0
  35. package/dist/commands/node.js.map +1 -0
  36. package/dist/commands/organize.js +234 -0
  37. package/dist/commands/organize.js.map +1 -0
  38. package/dist/commands/run.js +437 -0
  39. package/dist/commands/run.js.map +1 -0
  40. package/dist/commands/schema.js +269 -0
  41. package/dist/commands/schema.js.map +1 -0
  42. package/dist/commands/skills.js +1156 -0
  43. package/dist/commands/skills.js.map +1 -0
  44. package/dist/commands/trigger.js +992 -0
  45. package/dist/commands/trigger.js.map +1 -0
  46. package/dist/commands/workflow.js +503 -0
  47. package/dist/commands/workflow.js.map +1 -0
  48. package/dist/config.js +74 -0
  49. package/dist/config.js.map +1 -0
  50. package/dist/context.js +39 -0
  51. package/dist/context.js.map +1 -0
  52. package/dist/errors.js +59 -0
  53. package/dist/errors.js.map +1 -0
  54. package/dist/index.js +125 -0
  55. package/dist/index.js.map +1 -0
  56. package/dist/jsSource.js +32 -0
  57. package/dist/jsSource.js.map +1 -0
  58. package/dist/nodeProps.js +177 -0
  59. package/dist/nodeProps.js.map +1 -0
  60. package/dist/output.js +85 -0
  61. package/dist/output.js.map +1 -0
  62. package/dist/version.js +7 -0
  63. package/dist/version.js.map +1 -0
  64. package/package.json +41 -0
  65. package/skills/controllerai-agents/SKILL.md +169 -0
  66. package/skills/controllerai-agents/agents/openai.yaml +4 -0
  67. package/skills/controllerai-agents/references/instructions-and-versioning.md +76 -0
  68. package/skills/controllerai-ai-nodes/SKILL.md +83 -0
  69. package/skills/controllerai-ai-nodes/agents/openai.yaml +4 -0
  70. package/skills/controllerai-ai-nodes/references/selection-and-testing.md +46 -0
  71. package/skills/controllerai-data/SKILL.md +121 -0
  72. package/skills/controllerai-data/agents/openai.yaml +4 -0
  73. package/skills/controllerai-data/references/data-rails.md +46 -0
  74. package/skills/controllerai-expressions/SKILL.md +115 -0
  75. package/skills/controllerai-expressions/agents/openai.yaml +4 -0
  76. package/skills/controllerai-expressions/references/dsl-and-recipes.md +120 -0
  77. package/skills/controllerai-flow-control/SKILL.md +132 -0
  78. package/skills/controllerai-flow-control/agents/openai.yaml +4 -0
  79. package/skills/controllerai-flow-control/references/patterns.md +61 -0
  80. package/skills/controllerai-integration-actions/SKILL.md +95 -0
  81. package/skills/controllerai-integration-actions/agents/openai.yaml +4 -0
  82. package/skills/controllerai-node-config/SKILL.md +138 -0
  83. package/skills/controllerai-node-config/agents/openai.yaml +4 -0
  84. package/skills/controllerai-node-config/references/prop-and-readiness.md +72 -0
  85. package/skills/controllerai-runs/SKILL.md +109 -0
  86. package/skills/controllerai-runs/agents/openai.yaml +4 -0
  87. package/skills/controllerai-runs/references/debugging.md +53 -0
  88. package/skills/controllerai-start/SKILL.md +44 -0
  89. package/skills/controllerai-start/agents/openai.yaml +4 -0
  90. package/skills/controllerai-triggers/SKILL.md +174 -0
  91. package/skills/controllerai-triggers/agents/openai.yaml +4 -0
  92. package/skills/controllerai-triggers/references/lifecycle.md +54 -0
  93. package/skills/controllerai-workflows/SKILL.md +86 -0
  94. package/skills/controllerai-workflows/agents/openai.yaml +4 -0
  95. package/skills/controllerai-workflows/references/command-map.md +64 -0
  96. package/skills/manifest.json +248 -0
@@ -0,0 +1,346 @@
1
+ import { requireContext } from '../context.js';
2
+ import { CaiError, userError } from '../errors.js';
3
+ import { resolveJsSource } from '../jsSource.js';
4
+ import { expressionReadbackChannel, nodePropsFromPayload } from '../nodeProps.js';
5
+ import { emit, emitError, isJsonMode, printKeyValues, printTable, warn } from '../output.js';
6
+ const bindingName = (js) => js.replace(/^(inputs|flow)\./, '');
7
+ export const validationFailed = (result) => result?.valid !== true || (result?.errors ?? []).length > 0;
8
+ export const validationMessage = (result) => (result?.errors ?? []).join('\n') || JSON.stringify(result ?? null);
9
+ const sourceNodeOf = (type) => {
10
+ const match = /^output\.node\.(.+?)(#data)?$/.exec(type ?? '');
11
+ return match ? match[1] : null;
12
+ };
13
+ /**
14
+ * Binding lookup on the backend is forgiving — four fallbacks — so a wrong
15
+ * guess binds to the WRONG input and still compiles clean. Every binding is
16
+ * therefore annotated with its de-duplicated JS name, the owning node and the
17
+ * opaque input id, and any shared display name is flagged loudly.
18
+ *
19
+ * `ctx.nodeInputs` is built by mapping `node.data.inputs` in order, so pairing
20
+ * the context bindings with the node record by index is exact, not heuristic.
21
+ */
22
+ export const annotate = (bindings, records) => {
23
+ const displayCounts = new Map();
24
+ for (const b of bindings) {
25
+ const key = (b.displayName ?? '').toLowerCase();
26
+ if (key)
27
+ displayCounts.set(key, (displayCounts.get(key) ?? 0) + 1);
28
+ }
29
+ return bindings.map((b, index) => ({
30
+ ...b,
31
+ jsName: bindingName(b.js),
32
+ inputId: records[index]?.id ?? null,
33
+ sourceNodeId: sourceNodeOf(b.type),
34
+ duplicateDisplayName: (displayCounts.get((b.displayName ?? '').toLowerCase()) ?? 0) > 1,
35
+ }));
36
+ };
37
+ /** Locate the flow containing `nodeId` and return its flow-input records. */
38
+ const findFlowInputs = async (api, workflowId, nodeId) => {
39
+ try {
40
+ const flows = await api.tool(workflowId, 'get_flows', {});
41
+ for (const summary of flows ?? []) {
42
+ if (!summary.flowInputCount)
43
+ continue;
44
+ const detail = await api.tool(workflowId, 'get_flow', { flowId: summary.id });
45
+ if ((detail?.nodes ?? []).some((n) => n.id === nodeId)) {
46
+ return detail?.flowInputs ?? [];
47
+ }
48
+ }
49
+ }
50
+ catch {
51
+ // annotation is best-effort; a missing id prints as "-" rather than failing
52
+ }
53
+ return [];
54
+ };
55
+ export const registerExpr = (program) => {
56
+ const expr = program.command('expr').description('The expression surface');
57
+ expr
58
+ .command('context')
59
+ .argument('<nodeId>')
60
+ .option('--prop <name>', 'the destination prop — adds its expected type and mode')
61
+ .option('--methods', 'include the full method catalog (large)', false)
62
+ .description('MANDATORY before writing any --js. Lists every in-scope binding.')
63
+ .action(async (nodeId, opts, command) => {
64
+ const { api, workflowId } = requireContext(command);
65
+ const [context, nodeRecord] = await Promise.all([
66
+ api.tool(workflowId, 'get_expression_context', {
67
+ nodeId,
68
+ ...(opts.prop ? { propName: opts.prop } : {}),
69
+ }),
70
+ api.tool(workflowId, 'get_node', { nodeId }).catch(() => null),
71
+ ]);
72
+ const nodeInputs = nodeRecord?.inputs ?? nodeRecord?.data?.inputs ?? [];
73
+ // get_node does not report the containing flow, so the flow-input records
74
+ // (needed for their opaque ids) are found by locating the owning canvas.
75
+ // Only worth the round trips when there are flow bindings to annotate.
76
+ const flowInputs = (context.flow ?? []).length
77
+ ? await findFlowInputs(api, workflowId, nodeId)
78
+ : [];
79
+ const inputs = annotate(context.inputs ?? [], nodeInputs);
80
+ const flow = annotate(context.flow ?? [], flowInputs);
81
+ const duplicates = [...inputs, ...flow].filter(b => b.duplicateDisplayName);
82
+ for (const d of duplicates) {
83
+ warn(`AMBIGUOUS DISPLAY NAME "${d.displayName}" — bind with the exact JS name "${d.js}" ` +
84
+ `(input id ${d.inputId ?? 'unknown'}${d.sourceNodeId ? `, from node ${d.sourceNodeId}` : ''}). Backend lookup has four fallbacks: a wrong guess binds to the wrong input ` +
85
+ 'and still compiles clean.');
86
+ }
87
+ const payload = {
88
+ nodeId,
89
+ inputs,
90
+ flow,
91
+ process: context.process ?? null,
92
+ item: context.item ?? null,
93
+ workflowData: context.workflowData ?? [],
94
+ constants: context.constants ?? [],
95
+ unwiredUpstreamOutputs: context.unwiredUpstreamOutputs ?? [],
96
+ schemas: context.schemas ?? {},
97
+ targetProp: context.targetProp ?? null,
98
+ targetPropError: context.targetPropError ?? null,
99
+ duplicateDisplayNames: duplicates.map(d => ({
100
+ displayName: d.displayName,
101
+ js: d.js,
102
+ jsName: d.jsName,
103
+ inputId: d.inputId,
104
+ sourceNodeId: d.sourceNodeId,
105
+ })),
106
+ ...(opts.methods ? { methods: context.methods } : {}),
107
+ };
108
+ emit(payload, () => {
109
+ if (payload.targetProp) {
110
+ printKeyValues([
111
+ ['target prop', payload.targetProp.key],
112
+ ['expected type', payload.targetProp.expectedType],
113
+ ['mode', payload.targetProp.mode],
114
+ ]);
115
+ process.stdout.write('\n');
116
+ }
117
+ if (payload.targetPropError) {
118
+ process.stdout.write(`targetProp error: ${payload.targetPropError}\n\n`);
119
+ }
120
+ process.stdout.write('node inputs\n');
121
+ printTable(['js', 'displayName', 'resolvedType', 'inputId', 'fromNode', 'dup'], inputs.map(b => [
122
+ b.js,
123
+ b.displayName,
124
+ b.resolvedType ?? b.type,
125
+ b.inputId,
126
+ b.sourceNodeId,
127
+ b.duplicateDisplayName ? 'DUPLICATE' : '',
128
+ ]));
129
+ process.stdout.write('\nflow inputs\n');
130
+ printTable(['js', 'displayName', 'type', 'inputId', 'dup'], flow.map(b => [
131
+ b.js,
132
+ b.displayName,
133
+ b.type,
134
+ b.inputId,
135
+ b.duplicateDisplayName ? 'DUPLICATE' : '',
136
+ ]));
137
+ if (payload.item) {
138
+ process.stdout.write(`\nloop item\n ${payload.item.js} : ${payload.item.type}\n`);
139
+ }
140
+ if (payload.process) {
141
+ process.stdout.write(`\nprocess output\n ${payload.process.js} : ${payload.process.type}\n`);
142
+ }
143
+ process.stdout.write('\nworkflow data\n');
144
+ printTable(['js', 'type'], payload.workflowData.map(w => [w.js, w.type]));
145
+ process.stdout.write('\nconstants\n');
146
+ printTable(['js', 'type'], payload.constants.map(c => [c.js, c.type]));
147
+ if (payload.unwiredUpstreamOutputs.length) {
148
+ process.stdout.write('\nupstream outputs NOT wired in yet\n');
149
+ printTable(['sourceNodeId', 'sourceNode', 'output', 'dataType'], payload.unwiredUpstreamOutputs.map(u => [
150
+ u.sourceNodeId,
151
+ u.sourceNodeName,
152
+ u.outputDisplayName,
153
+ u.dataType,
154
+ ]));
155
+ }
156
+ const fieldRows = inputs
157
+ .flatMap(b => (b.fields ?? []).map(f => [`${b.js}${f.js}`, f.display, f.type]))
158
+ .concat(flow.flatMap(b => (b.fields ?? []).map(f => [`${b.js}${f.js}`, f.display, f.type])));
159
+ if (fieldRows.length) {
160
+ process.stdout.write('\nnavigable fields\n');
161
+ printTable(['js', 'display', 'type'], fieldRows);
162
+ }
163
+ });
164
+ });
165
+ expr
166
+ .command('validate')
167
+ .argument('<nodeId>')
168
+ .option('--js <src>', 'expression DSL source')
169
+ .option('--js-file <path|->', 'read expression DSL source from a UTF-8 file or stdin')
170
+ .option('--prop <name>', 'destination prop — validates against its real type and mode')
171
+ .option('--mode <text|expression|onlyWhen>', 'compile target when --prop is unknown')
172
+ .description('Compile an expression against the node’s real scope. Side-effect free.')
173
+ .action(async (nodeId, opts, command) => {
174
+ const js = resolveJsSource(opts);
175
+ const { api, workflowId } = requireContext(command);
176
+ if (opts.mode && !['text', 'expression', 'onlyWhen'].includes(opts.mode)) {
177
+ throw userError(`--mode must be text, expression or onlyWhen.`, 'BAD_MODE');
178
+ }
179
+ const result = await api.tool(workflowId, 'validate_expression', {
180
+ js,
181
+ nodeId,
182
+ ...(opts.prop ? { propName: opts.prop } : {}),
183
+ ...(opts.mode ? { mode: opts.mode } : {}),
184
+ });
185
+ const failed = validationFailed(result);
186
+ for (const w of result?.warnings ?? [])
187
+ warn(String(w));
188
+ if (failed && isJsonMode()) {
189
+ emitError(new CaiError(`Expression validation failed.\n\n${validationMessage(result)}`, {
190
+ code: 'EXPRESSION_INVALID',
191
+ detail: result,
192
+ }));
193
+ process.exitCode = 1;
194
+ return;
195
+ }
196
+ emit(result, () => {
197
+ printKeyValues([
198
+ ['valid', failed ? 'NO' : 'yes'],
199
+ ['inferredType', result?.inferredType ?? '-'],
200
+ ...(result?.errorCategory
201
+ ? [['errorCategory', result.errorCategory]]
202
+ : []),
203
+ ]);
204
+ if (failed) {
205
+ process.stdout.write('\nerrors\n');
206
+ for (const message of result?.errors ?? [])
207
+ process.stdout.write(` ${message}\n`);
208
+ }
209
+ else {
210
+ process.stdout.write(`\ncompiled\n${JSON.stringify(result?.expression, null, 2)}\n`);
211
+ }
212
+ });
213
+ if (failed)
214
+ process.exitCode = 1;
215
+ });
216
+ expr
217
+ .command('set')
218
+ .argument('<nodeId>')
219
+ .requiredOption('--prop <name>', 'destination prop')
220
+ .option('--js <src>', 'expression DSL source')
221
+ .option('--js-file <path|->', 'read expression DSL source from a UTF-8 file or stdin')
222
+ .description('Context-check, compile, persist to the correct channel, and verify readback')
223
+ .action(async (nodeId, opts, command) => {
224
+ const js = resolveJsSource(opts);
225
+ const { api, workflowId } = requireContext(command);
226
+ const context = await api.tool(workflowId, 'get_expression_context', {
227
+ nodeId,
228
+ propName: opts.prop,
229
+ });
230
+ if (context?.targetPropError) {
231
+ throw userError(String(context.targetPropError), 'EXPRESSION_TARGET_UNAVAILABLE');
232
+ }
233
+ const propsData = await api.tool(workflowId, 'get_node_props', { nodeId });
234
+ const props = nodePropsFromPayload(propsData);
235
+ const prop = props.find(row => (row.name ?? row.key) === opts.prop);
236
+ if (!prop) {
237
+ throw userError(`Prop "${opts.prop}" is not available. Known: ${props
238
+ .map(row => row.name ?? row.key)
239
+ .filter(Boolean)
240
+ .join(', ')}`, 'PROP_NOT_FOUND');
241
+ }
242
+ if (prop.enabled === false || prop.source === 'propsCatalog') {
243
+ throw userError(`Prop "${opts.prop}" must be enabled before writing an expression: ` +
244
+ `\`cai node enable-prop ${nodeId} --prop ${opts.prop}\`.`, 'PROP_NOT_ENABLED');
245
+ }
246
+ const validation = await api.tool(workflowId, 'validate_expression', {
247
+ js,
248
+ nodeId,
249
+ propName: opts.prop,
250
+ });
251
+ if (validationFailed(validation)) {
252
+ throw userError(`Expression did not compile — nothing was written.\n\n${validationMessage(validation)}`, 'EXPRESSION_COMPILE_ERROR');
253
+ }
254
+ for (const message of validation.warnings ?? [])
255
+ warn(String(message));
256
+ const channel = expressionReadbackChannel(prop);
257
+ const result = await api.mutate(workflowId, () => api.tool(workflowId, 'update_node_prop', {
258
+ nodeId,
259
+ key: opts.prop,
260
+ // The backend owns the compile target and stored-channel routing.
261
+ // Always write valueJs, then verify its decompiled stored channel.
262
+ valueJs: js,
263
+ }));
264
+ const freshData = await api.tool(workflowId, 'get_node_props', { nodeId });
265
+ const freshProps = nodePropsFromPayload(freshData);
266
+ const readback = freshProps.find(row => (row.name ?? row.key) === opts.prop);
267
+ if (!readback?.[channel]) {
268
+ throw userError(`The backend accepted the write but ${opts.prop}.${channel} did not read back.`, 'READBACK_MISMATCH');
269
+ }
270
+ emit({
271
+ nodeId,
272
+ prop: opts.prop,
273
+ channel,
274
+ inferredType: validation.inferredType ?? null,
275
+ expectedType: context?.targetProp?.expectedType ?? null,
276
+ persistedJs: readback[channel],
277
+ result,
278
+ }, () => printKeyValues([
279
+ ['nodeId', nodeId],
280
+ ['prop', opts.prop],
281
+ ['channel', channel],
282
+ ['inferred type', validation.inferredType ?? '-'],
283
+ ['expected type', context?.targetProp?.expectedType ?? '-'],
284
+ ['verified', 'yes'],
285
+ ]));
286
+ });
287
+ expr
288
+ .command('ops')
289
+ .option('--type <ctype>', 'restrict to one base type: text|number|date|list|boolean|file|custom')
290
+ .description('The method catalog: which operations exist per CType')
291
+ .action(async (opts, command) => {
292
+ const { api, workflowId } = requireContext(command);
293
+ // The catalog rides on the context view; any node in the workflow works.
294
+ const flows = await api.tool(workflowId, 'get_flows', {});
295
+ const withNodes = (flows ?? []).find(f => f.nodeCount > 0);
296
+ if (!withNodes) {
297
+ throw userError('The method catalog is served with a node’s expression context, and this workflow ' +
298
+ 'has no nodes yet. Add one node, then re-run.', 'NO_NODES');
299
+ }
300
+ const flow = await api.tool(workflowId, 'get_flow', { flowId: withNodes.id });
301
+ const anyNodeId = (flow.nodes ?? [])[0]?.id;
302
+ const context = await api.tool(workflowId, 'get_expression_context', { nodeId: anyNodeId });
303
+ const methods = context.methods ?? {};
304
+ const filtered = opts.type ? { [opts.type]: methods[opts.type] ?? [] } : methods;
305
+ if (opts.type && !methods[opts.type]) {
306
+ throw userError(`Unknown type "${opts.type}". Known: ${Object.keys(methods).join(', ')}.`, 'UNKNOWN_CTYPE');
307
+ }
308
+ emit(filtered, () => {
309
+ for (const [type, ops] of Object.entries(filtered)) {
310
+ process.stdout.write(`\n${type}\n`);
311
+ for (const op of ops)
312
+ process.stdout.write(` ${op}\n`);
313
+ }
314
+ });
315
+ });
316
+ expr
317
+ .command('decompile')
318
+ .argument('<nodeId>')
319
+ .requiredOption('--prop <name>')
320
+ .description('Stored AST -> readable JS (reads valueJs from `node props`)')
321
+ .action(async (nodeId, opts, command) => {
322
+ const { api, workflowId } = requireContext(command);
323
+ const data = await api.tool(workflowId, 'get_node_props', { nodeId });
324
+ const props = nodePropsFromPayload(data);
325
+ const prop = props.find(p => (p.name ?? p.key) === opts.prop);
326
+ if (!prop) {
327
+ throw userError(`Prop "${opts.prop}" not found on ${nodeId}. Known: ${props
328
+ .map(p => p.name ?? p.key)
329
+ .join(', ')}`, 'PROP_NOT_FOUND');
330
+ }
331
+ const channel = prop.expressionValueJs !== undefined && prop.expressionValueJs !== null
332
+ ? 'expressionValueJs'
333
+ : 'valueJs';
334
+ const js = prop[channel];
335
+ if (js === undefined || js === null) {
336
+ warn(`Prop "${opts.prop}" holds no expression — it is a static value.`);
337
+ }
338
+ emit({ nodeId, prop: opts.prop, channel, js: js ?? null, value: prop.value ?? null }, () => printKeyValues([
339
+ ['prop', opts.prop],
340
+ ['channel', channel],
341
+ ['js', js ?? '(static value)'],
342
+ ['value', JSON.stringify(prop.value ?? null)],
343
+ ]));
344
+ });
345
+ };
346
+ //# sourceMappingURL=expr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expr.js","sourceRoot":"","sources":["../../src/commands/expr.ts"],"names":[],"mappings":"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"}