@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.
- package/README.md +180 -0
- package/dist/api/client.js +330 -0
- package/dist/api/client.js.map +1 -0
- package/dist/appLinks.js +99 -0
- package/dist/appLinks.js.map +1 -0
- package/dist/argv.js +124 -0
- package/dist/argv.js.map +1 -0
- package/dist/commands/agent.js +813 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/auth.js +327 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/branch.js +441 -0
- package/dist/commands/branch.js.map +1 -0
- package/dist/commands/connect.js +148 -0
- package/dist/commands/connect.js.map +1 -0
- package/dist/commands/connection.js +148 -0
- package/dist/commands/connection.js.map +1 -0
- package/dist/commands/data.js +441 -0
- package/dist/commands/data.js.map +1 -0
- package/dist/commands/deps.js +63 -0
- package/dist/commands/deps.js.map +1 -0
- package/dist/commands/doctor.js +102 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/events.js +72 -0
- package/dist/commands/events.js.map +1 -0
- package/dist/commands/exec.js +306 -0
- package/dist/commands/exec.js.map +1 -0
- package/dist/commands/expr.js +346 -0
- package/dist/commands/expr.js.map +1 -0
- package/dist/commands/flow.js +447 -0
- package/dist/commands/flow.js.map +1 -0
- package/dist/commands/integration.js +102 -0
- package/dist/commands/integration.js.map +1 -0
- package/dist/commands/node.js +885 -0
- package/dist/commands/node.js.map +1 -0
- package/dist/commands/organize.js +234 -0
- package/dist/commands/organize.js.map +1 -0
- package/dist/commands/run.js +437 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/schema.js +269 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/skills.js +1156 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/trigger.js +992 -0
- package/dist/commands/trigger.js.map +1 -0
- package/dist/commands/workflow.js +503 -0
- package/dist/commands/workflow.js.map +1 -0
- package/dist/config.js +74 -0
- package/dist/config.js.map +1 -0
- package/dist/context.js +39 -0
- package/dist/context.js.map +1 -0
- package/dist/errors.js +59 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.js +125 -0
- package/dist/index.js.map +1 -0
- package/dist/jsSource.js +32 -0
- package/dist/jsSource.js.map +1 -0
- package/dist/nodeProps.js +177 -0
- package/dist/nodeProps.js.map +1 -0
- package/dist/output.js +85 -0
- package/dist/output.js.map +1 -0
- package/dist/version.js +7 -0
- package/dist/version.js.map +1 -0
- package/package.json +41 -0
- package/skills/controllerai-agents/SKILL.md +169 -0
- package/skills/controllerai-agents/agents/openai.yaml +4 -0
- package/skills/controllerai-agents/references/instructions-and-versioning.md +76 -0
- package/skills/controllerai-ai-nodes/SKILL.md +83 -0
- package/skills/controllerai-ai-nodes/agents/openai.yaml +4 -0
- package/skills/controllerai-ai-nodes/references/selection-and-testing.md +46 -0
- package/skills/controllerai-data/SKILL.md +121 -0
- package/skills/controllerai-data/agents/openai.yaml +4 -0
- package/skills/controllerai-data/references/data-rails.md +46 -0
- package/skills/controllerai-expressions/SKILL.md +115 -0
- package/skills/controllerai-expressions/agents/openai.yaml +4 -0
- package/skills/controllerai-expressions/references/dsl-and-recipes.md +120 -0
- package/skills/controllerai-flow-control/SKILL.md +132 -0
- package/skills/controllerai-flow-control/agents/openai.yaml +4 -0
- package/skills/controllerai-flow-control/references/patterns.md +61 -0
- package/skills/controllerai-integration-actions/SKILL.md +95 -0
- package/skills/controllerai-integration-actions/agents/openai.yaml +4 -0
- package/skills/controllerai-node-config/SKILL.md +138 -0
- package/skills/controllerai-node-config/agents/openai.yaml +4 -0
- package/skills/controllerai-node-config/references/prop-and-readiness.md +72 -0
- package/skills/controllerai-runs/SKILL.md +109 -0
- package/skills/controllerai-runs/agents/openai.yaml +4 -0
- package/skills/controllerai-runs/references/debugging.md +53 -0
- package/skills/controllerai-start/SKILL.md +44 -0
- package/skills/controllerai-start/agents/openai.yaml +4 -0
- package/skills/controllerai-triggers/SKILL.md +174 -0
- package/skills/controllerai-triggers/agents/openai.yaml +4 -0
- package/skills/controllerai-triggers/references/lifecycle.md +54 -0
- package/skills/controllerai-workflows/SKILL.md +86 -0
- package/skills/controllerai-workflows/agents/openai.yaml +4 -0
- package/skills/controllerai-workflows/references/command-map.md +64 -0
- package/skills/manifest.json +248 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { requireContext } from '../context.js';
|
|
3
|
+
import { userError } from '../errors.js';
|
|
4
|
+
import { emit, printKeyValues, printTable, warn } from '../output.js';
|
|
5
|
+
/** Integration/system schemas: `custom.__send_http_request` and friends. */
|
|
6
|
+
export const isSystemSchema = (name) => name.startsWith('custom.__');
|
|
7
|
+
/**
|
|
8
|
+
* Pinned against the live route: a field entry is
|
|
9
|
+
* `{ id, display, type }` and **`id` is caller-supplied and stored verbatim**.
|
|
10
|
+
* (The engine's own derived schemas use an `<name>_<type>` id convention, but
|
|
11
|
+
* nothing enforces it on user schemas — `email` stays `email`.)
|
|
12
|
+
*
|
|
13
|
+
* CLI spelling: `--field <id>:<type>[:<display>]`. `display` defaults to `id`.
|
|
14
|
+
*/
|
|
15
|
+
export const parseFieldSpec = (spec) => {
|
|
16
|
+
const parts = spec.split(':');
|
|
17
|
+
if (parts.length < 2 || parts.length > 3 || parts.some(p => p.trim() === '')) {
|
|
18
|
+
throw userError(`--field "${spec}" is malformed. Use <id>:<type>[:<display>], e.g. ` +
|
|
19
|
+
'`--field email:text` or `--field email:text:"Email address"`.', 'BAD_FIELD_SPEC');
|
|
20
|
+
}
|
|
21
|
+
const [id, type, display] = parts.map(p => p.trim());
|
|
22
|
+
return { id, type, display: display ?? id };
|
|
23
|
+
};
|
|
24
|
+
export const parseFieldSpecs = (specs) => {
|
|
25
|
+
const fields = specs.map(parseFieldSpec);
|
|
26
|
+
const seen = new Set();
|
|
27
|
+
for (const field of fields) {
|
|
28
|
+
if (seen.has(field.id)) {
|
|
29
|
+
throw userError(`--field id "${field.id}" is repeated.`, 'DUPLICATE_FIELD_ID');
|
|
30
|
+
}
|
|
31
|
+
seen.add(field.id);
|
|
32
|
+
}
|
|
33
|
+
return fields;
|
|
34
|
+
};
|
|
35
|
+
/** Read `{display, fields}` (or a `{name: {display, fields}}` map) from a file. */
|
|
36
|
+
export const readSchemaJson = (path) => {
|
|
37
|
+
const raw = path === '-' ? readFileSync(0, 'utf8') : readFileSync(path, 'utf8');
|
|
38
|
+
try {
|
|
39
|
+
return JSON.parse(raw);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
throw userError(`--from-json ${path} is not valid JSON: ${error instanceof Error ? error.message : error}`, 'BAD_SCHEMA_JSON');
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
/** The backend requires the `custom.` prefix; fail before the round trip. */
|
|
46
|
+
export const assertSchemaName = (name) => {
|
|
47
|
+
if (!name.startsWith('custom.')) {
|
|
48
|
+
throw userError(`Schema name "${name}" must start with "custom." (e.g. "custom.${name}").`, 'BAD_SCHEMA_NAME');
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
export const buildDefinition = (name, opts) => {
|
|
52
|
+
if (opts.fromJson) {
|
|
53
|
+
const parsed = readSchemaJson(opts.fromJson);
|
|
54
|
+
const definition = parsed?.fields ? parsed : parsed?.[name];
|
|
55
|
+
if (!definition?.fields || !Array.isArray(definition.fields)) {
|
|
56
|
+
throw userError(`--from-json must contain {display, fields:[{id,display,type}]} — either directly, or ` +
|
|
57
|
+
`keyed by "${name}".`, 'BAD_SCHEMA_JSON_SHAPE');
|
|
58
|
+
}
|
|
59
|
+
for (const field of definition.fields) {
|
|
60
|
+
if (!field?.id || !field?.type) {
|
|
61
|
+
throw userError(`Every field needs an "id" and a "type": ${JSON.stringify(field)}`, 'BAD_SCHEMA_FIELD');
|
|
62
|
+
}
|
|
63
|
+
if (!field.display)
|
|
64
|
+
field.display = field.id;
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
display: definition.display ?? opts.display ?? name.replace(/^custom\./, ''),
|
|
68
|
+
fields: definition.fields,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
if (!opts.field?.length) {
|
|
72
|
+
throw userError('Pass at least one --field <id>:<type>[:<display>], or --from-json <file|->.', 'MISSING_FIELDS');
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
display: opts.display ?? name.replace(/^custom\./, ''),
|
|
76
|
+
fields: parseFieldSpecs(opts.field),
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
const fieldRows = (definition) => (definition.fields ?? []).map(f => [f.id, f.display, f.type]);
|
|
80
|
+
/**
|
|
81
|
+
* The body of `cai schema create`. Exported because `cai data collection create`
|
|
82
|
+
* is documented sugar over exactly this call — there is no create-collection
|
|
83
|
+
* route, collections are synced from `custom.*` schemas — and sugar that
|
|
84
|
+
* re-enters the same function cannot drift from what it claims to wrap.
|
|
85
|
+
*/
|
|
86
|
+
export const runSchemaCreate = async (command, name, opts) => {
|
|
87
|
+
const { api, workflowId } = requireContext(command);
|
|
88
|
+
assertSchemaName(name);
|
|
89
|
+
if (isSystemSchema(name)) {
|
|
90
|
+
warn(`"${name}" uses the custom.__ prefix reserved for engine-derived integration schemas. ` +
|
|
91
|
+
'The data store rejects custom.__* types, so no collection will be created for it.');
|
|
92
|
+
}
|
|
93
|
+
const definition = buildDefinition(name, opts);
|
|
94
|
+
const existing = await api.tool(workflowId, 'get_schemas', {});
|
|
95
|
+
if (existing?.[name]) {
|
|
96
|
+
warn(`Schema "${name}" already exists — create_data_types overwrites it wholesale. ` +
|
|
97
|
+
'Use `cai schema update` if you meant to change it deliberately.');
|
|
98
|
+
}
|
|
99
|
+
const result = await api.mutate(workflowId, () => api.tool(workflowId, 'create_data_types', { schemas: { [name]: definition } }));
|
|
100
|
+
emit({ name, schema: definition, result }, () => {
|
|
101
|
+
printKeyValues([
|
|
102
|
+
['created', name],
|
|
103
|
+
['display', definition.display],
|
|
104
|
+
]);
|
|
105
|
+
process.stdout.write('\nfields\n');
|
|
106
|
+
printTable(['id', 'display', 'type'], fieldRows(definition));
|
|
107
|
+
process.stdout.write('\nA data collection for this type now exists — see `cai data collections`.\n');
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
export const registerSchema = (program) => {
|
|
111
|
+
const schema = program
|
|
112
|
+
.command('schema')
|
|
113
|
+
.description('Per-workflow custom data types (`custom.*`) — the data store’s schemas');
|
|
114
|
+
schema
|
|
115
|
+
.command('list')
|
|
116
|
+
.option('--all', 'include the engine-derived custom.__* integration schemas', false)
|
|
117
|
+
.description('Every data type defined in this workflow')
|
|
118
|
+
.action(async (opts, command) => {
|
|
119
|
+
const { api, workflowId } = requireContext(command);
|
|
120
|
+
const schemas = await api.tool(workflowId, 'get_schemas', {});
|
|
121
|
+
const entries = Object.entries(schemas ?? {}).filter(([name]) => opts.all || !isSystemSchema(name));
|
|
122
|
+
const hidden = Object.keys(schemas ?? {}).length - entries.length;
|
|
123
|
+
emit({
|
|
124
|
+
items: entries.map(([name, definition]) => ({ name, ...definition })),
|
|
125
|
+
schemas: Object.fromEntries(entries),
|
|
126
|
+
hiddenSystemSchemas: hidden,
|
|
127
|
+
}, () => {
|
|
128
|
+
printTable(['name', 'display', 'fields', 'source'], entries.map(([name, definition]) => [
|
|
129
|
+
name,
|
|
130
|
+
definition.display,
|
|
131
|
+
(definition.fields ?? []).length,
|
|
132
|
+
definition.nodeSlug ? `derived (${definition.nodeSlug})` : 'workflow',
|
|
133
|
+
]));
|
|
134
|
+
if (hidden > 0) {
|
|
135
|
+
process.stdout.write(`\n${hidden} custom.__* integration schema(s) hidden — --all shows them\n`);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
schema
|
|
140
|
+
.command('get')
|
|
141
|
+
.argument('<name>', 'schema name, e.g. custom.customer')
|
|
142
|
+
.description('One data type with its field ids, displays and types')
|
|
143
|
+
.action(async (name, _opts, command) => {
|
|
144
|
+
const { api, workflowId } = requireContext(command);
|
|
145
|
+
const schemas = await api.tool(workflowId, 'get_schemas', {});
|
|
146
|
+
const definition = schemas?.[name];
|
|
147
|
+
if (!definition) {
|
|
148
|
+
throw userError(`No schema "${name}" in this workflow. Known: ` +
|
|
149
|
+
`${Object.keys(schemas ?? {})
|
|
150
|
+
.filter(n => !isSystemSchema(n))
|
|
151
|
+
.join(', ') || '(none)'}.`, 'UNKNOWN_SCHEMA');
|
|
152
|
+
}
|
|
153
|
+
emit({ name, ...definition }, () => {
|
|
154
|
+
printKeyValues([
|
|
155
|
+
['name', name],
|
|
156
|
+
['display', definition.display],
|
|
157
|
+
['source', definition.nodeSlug ? `derived (${definition.nodeSlug})` : 'workflow'],
|
|
158
|
+
]);
|
|
159
|
+
process.stdout.write('\nfields\n');
|
|
160
|
+
printTable(['id', 'display', 'type'], fieldRows(definition));
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
schema
|
|
164
|
+
.command('resolve')
|
|
165
|
+
.argument('<typeId>', 'e.g. text, custom.customer, list.custom.customer, node.<nodeId>')
|
|
166
|
+
.description('Resolve a type id to its display name, fields and list-ness')
|
|
167
|
+
.action(async (typeId, _opts, command) => {
|
|
168
|
+
const { api, workflowId } = requireContext(command);
|
|
169
|
+
const data = await api.tool(workflowId, 'resolve_type', { typeId });
|
|
170
|
+
emit(data, () => {
|
|
171
|
+
printKeyValues([
|
|
172
|
+
['typeId', typeId],
|
|
173
|
+
['display', data?.display ?? data?.displayName ?? '-'],
|
|
174
|
+
['isList', data?.isList ? 'yes' : 'no'],
|
|
175
|
+
['unknown', data?.isUnknown ? 'yes' : 'no'],
|
|
176
|
+
]);
|
|
177
|
+
const fields = data?.fields ?? [];
|
|
178
|
+
if (fields.length) {
|
|
179
|
+
process.stdout.write('\nfields\n');
|
|
180
|
+
printTable(['id', 'display', 'type'], fields.map((f) => [f.id, f.display, f.type]));
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
schema
|
|
185
|
+
.command('create')
|
|
186
|
+
.argument('<name>', 'schema name — must start with "custom."')
|
|
187
|
+
.option('--display <label>', 'human label (defaults to the name without the prefix)')
|
|
188
|
+
.option('--field <id:type[:display]>', 'field spec; repeatable', (value, previous = []) => [...previous, value])
|
|
189
|
+
.option('--from-json <file|->', 'full {display, fields} definition instead of --field')
|
|
190
|
+
.description('Create a custom data type (this is also what creates a data collection)')
|
|
191
|
+
.action(async (name, opts, command) => {
|
|
192
|
+
await runSchemaCreate(command, name, opts);
|
|
193
|
+
});
|
|
194
|
+
schema
|
|
195
|
+
.command('update')
|
|
196
|
+
.argument('<name>', 'schema name, e.g. custom.customer')
|
|
197
|
+
.option('--display <label>', 'new human label')
|
|
198
|
+
.option('--field <id:type[:display]>', 'field spec; repeatable. THE FIELD LIST IS REPLACED WHOLESALE', (value, previous = []) => [...previous, value])
|
|
199
|
+
.option('--from-json <file|->', 'full {display, fields} definition instead of --field')
|
|
200
|
+
.description('Replace a data type definition (not a patch — the whole schema is rewritten)')
|
|
201
|
+
.action(async (name, opts, command) => {
|
|
202
|
+
const { api, workflowId } = requireContext(command);
|
|
203
|
+
assertSchemaName(name);
|
|
204
|
+
const schemas = await api.tool(workflowId, 'get_schemas', {});
|
|
205
|
+
const current = schemas?.[name];
|
|
206
|
+
if (!current) {
|
|
207
|
+
throw userError(`No schema "${name}" to update. Create it with \`cai schema create ${name}\`.`, 'UNKNOWN_SCHEMA');
|
|
208
|
+
}
|
|
209
|
+
if (current.nodeSlug) {
|
|
210
|
+
warn(`"${name}" is derived from the ${current.nodeSlug} integration. Editing it by hand ` +
|
|
211
|
+
'diverges from what the node produces and the engine may regenerate it.');
|
|
212
|
+
}
|
|
213
|
+
if (!opts.fromJson && !opts.field?.length && opts.display === undefined) {
|
|
214
|
+
throw userError('Nothing to update. Pass --display, --field (repeatable) or --from-json.', 'NOTHING_TO_DO');
|
|
215
|
+
}
|
|
216
|
+
// `update_data_type` replaces the whole schema, so anything the caller did
|
|
217
|
+
// not restate has to be carried over from the current definition — an
|
|
218
|
+
// omitted --display must NOT silently fall back to the name-derived
|
|
219
|
+
// default and rewrite the label.
|
|
220
|
+
const definition = opts.fromJson || opts.field?.length
|
|
221
|
+
? buildDefinition(name, { ...opts, display: opts.display ?? current.display })
|
|
222
|
+
: { display: opts.display ?? current.display, fields: current.fields };
|
|
223
|
+
if (opts.display !== undefined)
|
|
224
|
+
definition.display = opts.display;
|
|
225
|
+
const dropped = (current.fields ?? [])
|
|
226
|
+
.map(f => f.id)
|
|
227
|
+
.filter(id => !definition.fields.some(f => f.id === id));
|
|
228
|
+
if (dropped.length) {
|
|
229
|
+
warn(`Field(s) ${dropped.join(', ')} are being removed from "${name}". --field replaces the ` +
|
|
230
|
+
'whole list rather than adding to it; existing records keep the data but it is no ' +
|
|
231
|
+
'longer addressable.');
|
|
232
|
+
}
|
|
233
|
+
const result = await api.mutate(workflowId, () => api.tool(workflowId, 'update_data_type', { schemaName: name, schema: definition }));
|
|
234
|
+
// `update_data_type` replaces the whole definition. Echo the shape the
|
|
235
|
+
// backend now stores — not the shape we sent — so an unintended field
|
|
236
|
+
// drop is visible in the same response that caused it.
|
|
237
|
+
const afterSchemas = await api.tool(workflowId, 'get_schemas', {});
|
|
238
|
+
const persisted = afterSchemas?.[name] ?? null;
|
|
239
|
+
if (!persisted) {
|
|
240
|
+
warn(`Could not re-read "${name}" after the update — verify with \`cai schema get ${name}\`.`);
|
|
241
|
+
}
|
|
242
|
+
emit({ name, schema: definition, persistedSchema: persisted, droppedFields: dropped, result }, () => {
|
|
243
|
+
printKeyValues([
|
|
244
|
+
['updated', name],
|
|
245
|
+
['display', (persisted ?? definition).display],
|
|
246
|
+
]);
|
|
247
|
+
process.stdout.write('\nfields (complete stored shape after this update)\n');
|
|
248
|
+
printTable(['id', 'display', 'type'], fieldRows(persisted ?? definition));
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
schema
|
|
252
|
+
.command('delete')
|
|
253
|
+
.argument('<name>', 'schema name, e.g. custom.customer')
|
|
254
|
+
.requiredOption('--yes', 'confirm deleting the type and records, and removing fields that reference it')
|
|
255
|
+
.description('Delete a custom data type')
|
|
256
|
+
.action(async (name, _opts, command) => {
|
|
257
|
+
const { api, workflowId } = requireContext(command);
|
|
258
|
+
assertSchemaName(name);
|
|
259
|
+
const result = await api.mutate(workflowId, () => api.tool(workflowId, 'delete_data_type', { schemaName: name }));
|
|
260
|
+
warn(`Deleted the "${name}" type and its data collection, and removed fields that referenced ` +
|
|
261
|
+
'the type. Verified: after this call the collection no longer appears in ' +
|
|
262
|
+
'`cai data collections` and querying the type ' +
|
|
263
|
+
'fails with "not available in the dev store" — any records it held become unreachable ' +
|
|
264
|
+
'through every surface the CLI has. Re-creating the schema does not bring them back. ' +
|
|
265
|
+
'Expressions bound to the type resolve to an unknown type.');
|
|
266
|
+
emit({ name, result }, () => printKeyValues([['deleted', name]]));
|
|
267
|
+
});
|
|
268
|
+
};
|
|
269
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"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"}
|