@controllerai/cli 0.2.20 → 0.2.22
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 +6 -3
- package/dist/api/client.js +5 -38
- package/dist/api/client.js.map +1 -1
- package/dist/commands/agent.js +169 -146
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/expr.js +10 -3
- package/dist/commands/expr.js.map +1 -1
- package/dist/commands/integration.js +30 -10
- package/dist/commands/integration.js.map +1 -1
- package/dist/commands/skills.js +1 -0
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/templateSetup.js +42 -0
- package/dist/commands/templateSetup.js.map +1 -0
- package/dist/commands/workflow.js +6 -7
- package/dist/commands/workflow.js.map +1 -1
- package/dist/errors.js +2 -5
- package/dist/errors.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/permissionTool.js +1 -1
- package/dist/permissionTool.js.map +1 -1
- package/package.json +6 -4
- package/skills/controllerai-agents/SKILL.md +109 -26
- package/skills/controllerai-agents/references/instructions-and-versioning.md +32 -34
- package/skills/controllerai-ai-nodes/SKILL.md +83 -10
- package/skills/controllerai-ai-nodes/references/selection-and-testing.md +44 -26
- package/skills/controllerai-data/SKILL.md +106 -34
- package/skills/controllerai-data/references/data-rails.md +24 -26
- package/skills/controllerai-expressions/SKILL.md +82 -29
- package/skills/controllerai-expressions/references/dsl-and-recipes.md +42 -40
- package/skills/controllerai-flow-control/SKILL.md +104 -21
- package/skills/controllerai-flow-control/references/patterns.md +23 -60
- package/skills/controllerai-integration-actions/SKILL.md +89 -11
- package/skills/controllerai-node-config/SKILL.md +108 -18
- package/skills/controllerai-node-config/references/prop-and-readiness.md +28 -78
- package/skills/controllerai-runs/SKILL.md +82 -25
- package/skills/controllerai-runs/references/debugging.md +24 -22
- package/skills/controllerai-start/SKILL.md +63 -35
- package/skills/controllerai-start/references/mcp-tool-map.md +22 -21
- package/skills/controllerai-template-setup/SKILL.md +132 -0
- package/skills/controllerai-template-setup/agents/openai.yaml +4 -0
- package/skills/controllerai-triggers/SKILL.md +113 -16
- package/skills/controllerai-triggers/references/lifecycle.md +36 -48
- package/skills/controllerai-workflows/SKILL.md +105 -25
- package/skills/controllerai-workflows/references/command-map.md +20 -44
- package/skills/manifest.json +96 -136
- package/skills-mcp/controllerai-agents/SKILL.md +121 -0
- package/skills-mcp/controllerai-agents/references/instructions-and-versioning.md +76 -0
- package/skills-mcp/controllerai-ai-nodes/SKILL.md +91 -0
- package/skills-mcp/controllerai-ai-nodes/references/selection-and-testing.md +66 -0
- package/skills-mcp/controllerai-data/SKILL.md +116 -0
- package/skills-mcp/controllerai-data/references/data-rails.md +43 -0
- package/skills-mcp/controllerai-expressions/SKILL.md +97 -0
- package/skills-mcp/controllerai-expressions/references/dsl-and-recipes.md +136 -0
- package/skills-mcp/controllerai-flow-control/SKILL.md +112 -0
- package/skills-mcp/controllerai-flow-control/references/patterns.md +82 -0
- package/skills-mcp/controllerai-integration-actions/SKILL.md +90 -0
- package/skills-mcp/controllerai-node-config/SKILL.md +106 -0
- package/skills-mcp/controllerai-node-config/references/prop-and-readiness.md +49 -0
- package/skills-mcp/controllerai-runs/SKILL.md +87 -0
- package/skills-mcp/controllerai-runs/references/debugging.md +53 -0
- package/skills-mcp/controllerai-start/SKILL.md +82 -0
- package/skills-mcp/controllerai-start/references/mcp-tool-map.md +177 -0
- package/skills-mcp/controllerai-template-setup/SKILL.md +10 -0
- package/skills-mcp/controllerai-triggers/SKILL.md +109 -0
- package/skills-mcp/controllerai-triggers/references/lifecycle.md +59 -0
- package/skills-mcp/controllerai-workflows/SKILL.md +108 -0
- package/skills-mcp/controllerai-workflows/references/command-map.md +1 -0
- package/skills-mcp/manifest.json +200 -0
- package/skills/controllerai-agents/references/command-reference.md +0 -205
- package/skills/controllerai-ai-nodes/references/command-reference.md +0 -98
- package/skills/controllerai-data/references/command-reference.md +0 -177
- package/skills/controllerai-expressions/references/command-reference.md +0 -166
- package/skills/controllerai-flow-control/references/command-reference.md +0 -171
- package/skills/controllerai-integration-actions/references/command-reference.md +0 -118
- package/skills/controllerai-node-config/references/command-reference.md +0 -186
- package/skills/controllerai-runs/references/command-reference.md +0 -113
- package/skills/controllerai-triggers/references/command-reference.md +0 -215
- package/skills/controllerai-workflows/references/command-reference.md +0 -118
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"skillSetVersion": "2026.09.15.2",
|
|
4
|
+
"minCliVersion": "0.2.0",
|
|
5
|
+
"latestCliVersion": "0.2.22",
|
|
6
|
+
"skills": [
|
|
7
|
+
{
|
|
8
|
+
"name": "controllerai-start",
|
|
9
|
+
"files": [
|
|
10
|
+
{
|
|
11
|
+
"path": "controllerai-start/SKILL.md",
|
|
12
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-start/SKILL.md",
|
|
13
|
+
"sha256": "65b35ecd4c5a94bd991f85aaaa6c26f1d551f646da136757c5a8a853b1f7389c",
|
|
14
|
+
"size": 11172
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"path": "controllerai-start/references/mcp-tool-map.md",
|
|
18
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-start/references/mcp-tool-map.md",
|
|
19
|
+
"sha256": "8dc049be93070daa4ad66d09883f2887cb130cf3d54cc50056a202a2e118a925",
|
|
20
|
+
"size": 26761
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "controllerai-workflows",
|
|
26
|
+
"files": [
|
|
27
|
+
{
|
|
28
|
+
"path": "controllerai-workflows/SKILL.md",
|
|
29
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-workflows/SKILL.md",
|
|
30
|
+
"sha256": "94f6f343c3cc2a469cdd2247f8bcc9cb8fa56290a35d988409155d22f5c5c1f9",
|
|
31
|
+
"size": 9549
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"path": "controllerai-workflows/references/command-map.md",
|
|
35
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-workflows/references/command-map.md",
|
|
36
|
+
"sha256": "3a1fe464d00c2ae734dab11db3b338436d91a9c32dd8a1b3f1843ac4200a739c",
|
|
37
|
+
"size": 89
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"name": "controllerai-node-config",
|
|
43
|
+
"files": [
|
|
44
|
+
{
|
|
45
|
+
"path": "controllerai-node-config/SKILL.md",
|
|
46
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-node-config/SKILL.md",
|
|
47
|
+
"sha256": "7fbc68a24ccc08c04be8b6c4184b74b238058b637e4203293e0c5eae332bac2d",
|
|
48
|
+
"size": 11678
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"path": "controllerai-node-config/references/prop-and-readiness.md",
|
|
52
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-node-config/references/prop-and-readiness.md",
|
|
53
|
+
"sha256": "87da8b25c8303818b1f0c677b2cc6f7121910e8fcd94371ed5bc2065f7b7b845",
|
|
54
|
+
"size": 5344
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"name": "controllerai-expressions",
|
|
60
|
+
"files": [
|
|
61
|
+
{
|
|
62
|
+
"path": "controllerai-expressions/SKILL.md",
|
|
63
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-expressions/SKILL.md",
|
|
64
|
+
"sha256": "c54f8c3176ffe48ca7aa78cd85151a1edf1f0083f7cd8b906b5d1d2ff5f5cc20",
|
|
65
|
+
"size": 10495
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"path": "controllerai-expressions/references/dsl-and-recipes.md",
|
|
69
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-expressions/references/dsl-and-recipes.md",
|
|
70
|
+
"sha256": "741b03033cb655dde95be99dcf6e00295b1b2d4f385ad42bbf4bb3c4001c9973",
|
|
71
|
+
"size": 4915
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "controllerai-flow-control",
|
|
77
|
+
"files": [
|
|
78
|
+
{
|
|
79
|
+
"path": "controllerai-flow-control/SKILL.md",
|
|
80
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-flow-control/SKILL.md",
|
|
81
|
+
"sha256": "4bacfc3b7501565e0e5984b19d9223da1b5bf770875db804b5e6827d33efa967",
|
|
82
|
+
"size": 12367
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"path": "controllerai-flow-control/references/patterns.md",
|
|
86
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-flow-control/references/patterns.md",
|
|
87
|
+
"sha256": "a849179afb512e8fc0c3c833a1a2c737c5108e8ab8941c9fa261767671eceb01",
|
|
88
|
+
"size": 4704
|
|
89
|
+
}
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"name": "controllerai-runs",
|
|
94
|
+
"files": [
|
|
95
|
+
{
|
|
96
|
+
"path": "controllerai-runs/SKILL.md",
|
|
97
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-runs/SKILL.md",
|
|
98
|
+
"sha256": "ce8109606899a36dd298aa7fc41ff2288f62bfe9adeae0806b95fd22a317fe27",
|
|
99
|
+
"size": 9312
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"path": "controllerai-runs/references/debugging.md",
|
|
103
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-runs/references/debugging.md",
|
|
104
|
+
"sha256": "616d13ea43785e4d11bdb50b9e4098126fbc470ee2568b250e1af5f15cab3edf",
|
|
105
|
+
"size": 3162
|
|
106
|
+
}
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"name": "controllerai-triggers",
|
|
111
|
+
"files": [
|
|
112
|
+
{
|
|
113
|
+
"path": "controllerai-triggers/SKILL.md",
|
|
114
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-triggers/SKILL.md",
|
|
115
|
+
"sha256": "0797e2070acbd674deca6b659d467d1cc5a86cb26120e489c52d10cb58fc044b",
|
|
116
|
+
"size": 12374
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"path": "controllerai-triggers/references/lifecycle.md",
|
|
120
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-triggers/references/lifecycle.md",
|
|
121
|
+
"sha256": "519d9f858ee2ec8ab5f1c988e547f5a8c5478f4da3d454236354ade9800ed044",
|
|
122
|
+
"size": 3438
|
|
123
|
+
}
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"name": "controllerai-data",
|
|
128
|
+
"files": [
|
|
129
|
+
{
|
|
130
|
+
"path": "controllerai-data/SKILL.md",
|
|
131
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-data/SKILL.md",
|
|
132
|
+
"sha256": "d17cfcda2abbccf6463edc6331c091175f7c7d92f6a2ce69dccc6d0fa4188e34",
|
|
133
|
+
"size": 12477
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"path": "controllerai-data/references/data-rails.md",
|
|
137
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-data/references/data-rails.md",
|
|
138
|
+
"sha256": "6d22c72b3b2da83cfaf078683ef41ec2b6f3b9b249789ab2bd23d01d6710c261",
|
|
139
|
+
"size": 2843
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"name": "controllerai-ai-nodes",
|
|
145
|
+
"files": [
|
|
146
|
+
{
|
|
147
|
+
"path": "controllerai-ai-nodes/SKILL.md",
|
|
148
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-ai-nodes/SKILL.md",
|
|
149
|
+
"sha256": "e6071d906cf1df7665cb63274a579d7a0f46796440112a74f190338389b2db33",
|
|
150
|
+
"size": 9484
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"path": "controllerai-ai-nodes/references/selection-and-testing.md",
|
|
154
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-ai-nodes/references/selection-and-testing.md",
|
|
155
|
+
"sha256": "66b235b9e81645ab877b31443505c7b07ea3f2e5a357053f266c121415f8cf5c",
|
|
156
|
+
"size": 3111
|
|
157
|
+
}
|
|
158
|
+
]
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"name": "controllerai-integration-actions",
|
|
162
|
+
"files": [
|
|
163
|
+
{
|
|
164
|
+
"path": "controllerai-integration-actions/SKILL.md",
|
|
165
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-integration-actions/SKILL.md",
|
|
166
|
+
"sha256": "ceabf8fc8d964e94a0feabd95d1a452cdf5d8cfca83106f1d388f7de4f9a5567",
|
|
167
|
+
"size": 10076
|
|
168
|
+
}
|
|
169
|
+
]
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"name": "controllerai-agents",
|
|
173
|
+
"files": [
|
|
174
|
+
{
|
|
175
|
+
"path": "controllerai-agents/SKILL.md",
|
|
176
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-agents/SKILL.md",
|
|
177
|
+
"sha256": "20ac5f23a1579cbaf109c958a211e5d1ee9859db430479e3e00ed81136fbf682",
|
|
178
|
+
"size": 12715
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"path": "controllerai-agents/references/instructions-and-versioning.md",
|
|
182
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-agents/references/instructions-and-versioning.md",
|
|
183
|
+
"sha256": "88b059e74aef03ccb12a53815d1090e5449090ff6dfd863b6cef5a12b434cb65",
|
|
184
|
+
"size": 5644
|
|
185
|
+
}
|
|
186
|
+
]
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"name": "controllerai-template-setup",
|
|
190
|
+
"files": [
|
|
191
|
+
{
|
|
192
|
+
"path": "controllerai-template-setup/SKILL.md",
|
|
193
|
+
"url": "https://getcontroller.ai/skills-mcp/2026.09.15.2/controllerai-template-setup/SKILL.md",
|
|
194
|
+
"sha256": "a530a694257ccf7622c4f16579cad91bf96ac06dfc7cbd82a919914abe387e52",
|
|
195
|
+
"size": 609
|
|
196
|
+
}
|
|
197
|
+
]
|
|
198
|
+
}
|
|
199
|
+
]
|
|
200
|
+
}
|
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
# Controller AI agents
|
|
2
|
-
|
|
3
|
-
An agent has one mutable draft and immutable published versions. Build instructions, tools, permissions, and files on the draft; verify in Test; publish last. Draft edits never update Live by themselves.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
- Attach one ready action directly instead of wrapping it; see Choose the capability architecture.
|
|
8
|
-
- Choose confirmation before attaching a consequential tool; see Create and assemble the draft.
|
|
9
|
-
- Use one conversation on an explicit rail for each verification task; see Verify the draft as an agent.
|
|
10
|
-
- Resolve pending requests in that same conversation; see Verify the draft as an agent.
|
|
11
|
-
- Enablement is runtime state, not publication; see Create and assemble the draft.
|
|
12
|
-
- Publish authorized workflow dependencies, preflight, then publish the agent; see Publish in dependency order.
|
|
13
|
-
- Draft-only means stop before publish; draft evidence never proves Live. See Publish in dependency order.
|
|
14
|
-
|
|
15
|
-
## 1. Choose the capability architecture
|
|
16
|
-
|
|
17
|
-
- Use `controllerai-integration-actions` when one existing app operation completes it.
|
|
18
|
-
- Use a workflow tool for multiple steps, transformations, branching, looping, durable state, triggers, a custom typed contract, or reusable business logic.
|
|
19
|
-
- Put judgment, tool-selection rules, tone, and escalation in instructions; put stable sources in knowledge files.
|
|
20
|
-
|
|
21
|
-
Do not create a one-node workflow merely to expose a ready action, or replace orchestration with several independent direct actions when ordering or data handling must be deterministic.
|
|
22
|
-
|
|
23
|
-
## 2. Build and verify capabilities
|
|
24
|
-
|
|
25
|
-
For a ready action, follow `controllerai-integration-actions`: discover exact identities, select a connection, decide confirmation, then attach.
|
|
26
|
-
|
|
27
|
-
For every workflow tool, load the relevant workflow skills and test the development state before attaching:
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
cai use <workflowId>
|
|
31
|
-
cai flow get <flowId> --json
|
|
32
|
-
cai run flow <flowId> --inputs values.json --json
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
MCP: there is no pin; pass `workflowId` to `flow_get` and `run_flow`, pass parsed `inputs`, and set `waitSeconds`.
|
|
36
|
-
|
|
37
|
-
Capture the successful execution ID. Inputs become tool parameters and outputs its result. Require a nonempty output contract and verify the run returns it.
|
|
38
|
-
|
|
39
|
-
## 3. Create and assemble the draft
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
Read [instructions-and-versioning.md](instructions-and-versioning.md) before publishing or explaining Test versus Live behavior.
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
cai agent create --name "<agent name>" --instructions-file instructions.md --json
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
MCP: `agent_create` takes complete Markdown in `instructions`; it cannot read `instructions.md`.
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
cai agent add-action <agentId> \
|
|
52
|
-
--integration <integrationSlug> \
|
|
53
|
-
--action <actionKey> \
|
|
54
|
-
--connection <connectionId> \
|
|
55
|
-
--description "Use when ..." \
|
|
56
|
-
--json
|
|
57
|
-
|
|
58
|
-
cai agent add-workflow <agentId> \
|
|
59
|
-
--workflow-id <workflowId> \
|
|
60
|
-
--flow <flowId> \
|
|
61
|
-
--description "Use when ...; accepts ...; returns ..." \
|
|
62
|
-
--json
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
MCP: use `agent_tool_action_add` or `agent_tool_workflow_add`; `requireConfirmation` is optional and defaults to `false`.
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
cai agent add-file <agentId> --file <path> --space <knowledge|shared> --json
|
|
69
|
-
cai agent files <agentId> --space <knowledge|shared> [--live] --json
|
|
70
|
-
cai agent tools <agentId> --json
|
|
71
|
-
cai agent get <agentId> --json
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
MCP: use `agent_knowledge_file_add` or `agent_workspace_file_add` with inline `content`; `agent_file_list` uses `environment: dev|live`. Shared runtime files update live immediately.
|
|
75
|
-
|
|
76
|
-
The default is no approval: attached actions and workflow tools run without a human approval step unless `requireConfirmation` is `true`, and omitting `--require-confirmation` has the same behavior. When attaching an action that sends, posts, spends, or deletes, choose `true` or explicitly tell the user that it will run unattended. Mention the confirmation choice in the report to the user; `cai agent update-tool` can change it later.
|
|
77
|
-
|
|
78
|
-
Keep the two modes straight:
|
|
79
|
-
|
|
80
|
-
| Context | Test / draft conversation | Live / shared conversation |
|
|
81
|
-
| --- | --- | --- |
|
|
82
|
-
| Agent configuration | Current mutable draft | Latest published immutable agent version |
|
|
83
|
-
| Workflow tools | Current workflow development heads | Each workflow's latest live release; never pinned |
|
|
84
|
-
| Reference files | Current draft knowledge files | Knowledge frozen into the published agent version |
|
|
85
|
-
| Runtime files | Current live runtime files, overlaid by development/test runtime files at the same path | Current live runtime files only |
|
|
86
|
-
| Access | Owner only | Owner, plus organization members when shared; non-owners never see the draft |
|
|
87
|
-
|
|
88
|
-
Version pinning for workflow tools does not exist. Live tools track the latest release. If asked to freeze one, explain this, attach with policy `latest`, and never abandon the attachment.
|
|
89
|
-
|
|
90
|
-
Publishing snapshots versioned fields, moves the live pointer, and restamps every existing live conversation. It does not snapshot the runtime model. This cutover interrupts in-flight answers and expires pending approvals; time it accordingly.
|
|
91
|
-
|
|
92
|
-
Runtime lifecycle changes do not require publishing:
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
cai agent update <agentId> --disabled --json
|
|
96
|
-
cai agent update <agentId> --enabled --json
|
|
97
|
-
cai agent delete <agentId> --confirm --json
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
MCP: draft edits use `agent_update`; runtime uses `agent_set_enabled`; `agent_delete` has no `confirm`. Disable pauses runtime. Soft delete revokes access and requests session termination; there is no CLI restore.
|
|
101
|
-
|
|
102
|
-
## Runtime usage boundary
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
## 4. Verify the draft as an agent
|
|
106
|
-
|
|
107
|
-
Saving the draft updates the agent's Test environment — there is no separate deploy step. Test conversations run each workflow tool's DEVELOPMENT version.
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
cai agent test <agentId> --draft --message "<representative request>" --json
|
|
111
|
-
cai agent conversation history <conversationId> --json
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
MCP: `agent_test` requires `rail: draft` or `rail: live` and takes `waitSeconds`.
|
|
115
|
-
|
|
116
|
-
`agent test` always creates a conversation. Use it for a one-shot check. When a task may need follow-up or approval, create one conversation on the requested rail, capture its ID, and reuse it:
|
|
117
|
-
|
|
118
|
-
```bash
|
|
119
|
-
cai agent conversation create <agentId> --draft --title "<test case>" --json
|
|
120
|
-
cai agent conversation send <conversationId> --message "<request>" --wait --json
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
Do not resend the request or create a replacement after an approval pause. A required post-publish Live check is a separate rail task and gets one fresh Live conversation.
|
|
124
|
-
|
|
125
|
-
Test positive and negative tool selection, exact arguments, results, errors, and knowledge. Offer the returned `appUrl`; on MCP, call `agent_present` and relay the returned card.
|
|
126
|
-
|
|
127
|
-
- For a workflow tool, correlate a side-effectful call with its terminal workflow execution ID.
|
|
128
|
-
- For a direct integration action, inspect persisted conversation action events/run result and the intended external effect. Direct actions do not create workflow execution IDs.
|
|
129
|
-
|
|
130
|
-
For a pending approval, inspect the exact request first:
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
cai agent conversation approve <conversationId> --request <requestId> --json
|
|
134
|
-
cai agent conversation deny <conversationId> --request <requestId> --message "<reason>" --json
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
The server resolves the tool from the request ID. Do not approve merely to continue. Resolve every pending request before publishing; approval or denial resumes this conversation, while publishing expires it.
|
|
138
|
-
|
|
139
|
-
After `cai agent remove-tool`, test one request that must no longer use the removed capability and one retained capability.
|
|
140
|
-
|
|
141
|
-
## 5. Publish in dependency order
|
|
142
|
-
|
|
143
|
-
For attached workflows only:
|
|
144
|
-
|
|
145
|
-
```bash
|
|
146
|
-
cai use <workflowId>
|
|
147
|
-
cai workflow status --json
|
|
148
|
-
cai workflow publish --name "<release>" --json
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
MCP: there is no `use`; pass `workflowId` to `workflow_status` and `workflow_publish`.
|
|
152
|
-
|
|
153
|
-
Publish a workflow only when its verified development state must go live and the user authorized it. A workflow publish already followed by a live agent changes that tool's live behavior immediately; do not republish the agent merely to pick it up.
|
|
154
|
-
|
|
155
|
-
For a draft-only request, stop after Test evidence. Do not publish a workflow or agent merely because it is ready.
|
|
156
|
-
|
|
157
|
-
Then publish the agent:
|
|
158
|
-
|
|
159
|
-
```bash
|
|
160
|
-
cai agent publish-preflight <agentId> --json
|
|
161
|
-
cai agent publish <agentId> --name "<release>" --json
|
|
162
|
-
cai agent versions <agentId> --json
|
|
163
|
-
cai agent test <agentId> --live --message "<representative request>" --json
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
MCP: `agent_test` requires `rail: draft` or `rail: live` and takes `waitSeconds`.
|
|
167
|
-
|
|
168
|
-
`publish-preflight` is the arbiter of structural readiness. Report blockers and stop. With none and an authorized release, publish, except an error you actually watched happen; that blocks even a green preflight.
|
|
169
|
-
|
|
170
|
-
Email verification is not a publishing prerequisite. An unclaimed agent-created account may publish; email claiming only raises its monthly usage cap and enables account recovery.
|
|
171
|
-
|
|
172
|
-
Use one loop: edit draft, read back, verify Test, publish, verify Live. Published versions have no rollback. Recover forward from `agent versions`; restore workflow definitions with history/restore, then republish. Workflow releases, action grants, and runtime files are live-bound; see [instructions-and-versioning.md](instructions-and-versioning.md). After detaching an action, publish to remove it from the published list.
|
|
173
|
-
|
|
174
|
-
Draft evidence does not prove the live agent. Test is owner-only; shared users always run the latest published agent version and never see draft instructions, tools, or knowledge.
|
|
175
|
-
|
|
176
|
-
## 6. Offer Slack and organization sharing
|
|
177
|
-
|
|
178
|
-
After publish, offer product setup for Slack. Agents remain private unless the user requests organization access:
|
|
179
|
-
|
|
180
|
-
```bash
|
|
181
|
-
cai agent visibility <agentId> --value organization --json
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
Members use the published version. Direct actions use the owner's external account and organization usage pool. Grant changes affect Live immediately; private visibility revokes access.
|
|
185
|
-
|
|
186
|
-
## Before you finish
|
|
187
|
-
|
|
188
|
-
```bash
|
|
189
|
-
cai agent tools <agentId> --json
|
|
190
|
-
cai agent conversation list <agentId> --mode dev --json
|
|
191
|
-
cai data query --type custom.<type> --env dev --json
|
|
192
|
-
cai agent conversation history <conversationId> --json
|
|
193
|
-
cai agent publish-preflight <agentId> --json
|
|
194
|
-
cai agent versions <agentId> --json
|
|
195
|
-
cai agent test <agentId> --live --message "<representative request>" --json
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
Run the last three commands only for an authorized release. For Live verification, use `--mode live` and `--env live` in the same pair.
|
|
199
|
-
|
|
200
|
-
- Conversation list must show the captured ID on the requested rail, without retry-created duplicates.
|
|
201
|
-
- History must show the intended tool arguments, terminal result, and no unresolved permission request.
|
|
202
|
-
- For stateful behavior, the same-rail data query must show the expected record; an assistant reply is not proof.
|
|
203
|
-
- A release requires clean preflight, agent version read-back, and one fresh Live conversation. Draft-only work must remain unpublished.
|
|
204
|
-
|
|
205
|
-
Report the agent ID/version, tools and confirmation policies, execution or direct-action evidence, rail state, connections, access, and anything unverified.
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
# Controller AI AI nodes
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
- Use native Ask AI for a bounded AI step; see Configure Ask AI in dependency order.
|
|
6
|
-
- Keep an existing Ask AI node unless the requested component changes; see Configure Ask AI in dependency order.
|
|
7
|
-
- Set reload selectors before fetching live model options; see Configure Ask AI in dependency order.
|
|
8
|
-
- Never invent or hardcode a model ID; see Configure Ask AI in dependency order.
|
|
9
|
-
|
|
10
|
-
## Choose the AI surface
|
|
11
|
-
|
|
12
|
-
- Use Ask AI for one bounded transformation with explicit inputs and output contract.
|
|
13
|
-
- Use a Controller AI agent for conversational judgment, multiple tools, durable instructions, and knowledge files. Load `controllerai-agents`.
|
|
14
|
-
- Use `registry_agent` workflow actions only when a workflow must create/message a platform agent conversation or manage its files; discover the exact action and props rather than treating the whole agent as one node.
|
|
15
|
-
|
|
16
|
-
## Configure Ask AI in dependency order
|
|
17
|
-
|
|
18
|
-
For a bounded workflow transformation, use the native Ask AI component. Do not replace it with a provider integration action or delete an existing Ask AI node to bypass configuration.
|
|
19
|
-
|
|
20
|
-
Discover the current component instead of hardcoding a key:
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
cai integration actions "ask AI" --json
|
|
24
|
-
cai integration action --integration <nodeSlug> --key <nodeKey> --json
|
|
25
|
-
cai node init --flow <flowId> --node <nodeSlug> --key <nodeKey> --name "<result produced>" --json
|
|
26
|
-
cai node status <nodeId> --json
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
Typical selectors are provider, model, prompt/user message, and response data type. Trust current prop metadata over these names.
|
|
30
|
-
|
|
31
|
-
1. Set the provider or other `reloadProps` selector.
|
|
32
|
-
2. Re-read props.
|
|
33
|
-
3. Fetch live model options; never invent a model identifier.
|
|
34
|
-
4. Set the returned model value.
|
|
35
|
-
5. Set the response type.
|
|
36
|
-
6. Author the prompt with expression context.
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
cai node set <nodeId> --prop <providerProp> --value '<provider>' --json
|
|
40
|
-
cai node props <nodeId> --json
|
|
41
|
-
cai node options <nodeId> --prop <modelProp> --query '<model family>' --json
|
|
42
|
-
cai node set <nodeId> --prop <modelProp> --value '<returned value>' --label '<returned label>' --json
|
|
43
|
-
cai expr set <nodeId> --prop <promptProp> --js '<prompt expression>' --json
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
MCP: `node set` and `expr set` both use `node_prop_set`; pass exactly one of `value` or `js` here.
|
|
47
|
-
|
|
48
|
-
Model catalogs, availability, and prices change. Use current options and the user's cost/quality preference. If the requested model is absent, leave it unset, report it, and ask; never substitute.
|
|
49
|
-
|
|
50
|
-
## Prefer typed output for downstream logic
|
|
51
|
-
|
|
52
|
-
If downstream nodes need fields, create a small `custom.*` shape first:
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
cai schema create custom.classification \
|
|
56
|
-
--field category:text:"Category" \
|
|
57
|
-
--field confidence:number:"Confidence" \
|
|
58
|
-
--field rationale:text:"Rationale" \
|
|
59
|
-
--json
|
|
60
|
-
cai node set <nodeId> --prop <responseTypeProp> --value 'custom.classification' --json
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
Tell the model exactly what each field means, allowed values, and how to represent uncertainty. Never parse free-form prose downstream when a structured response contract is available.
|
|
64
|
-
|
|
65
|
-
## Prompt contract
|
|
66
|
-
|
|
67
|
-
A useful workflow prompt contains only behavior-changing material:
|
|
68
|
-
|
|
69
|
-
- Task and audience
|
|
70
|
-
- Actual input data through exact bindings
|
|
71
|
-
- Decision rules and constraints
|
|
72
|
-
- Required output fields/format
|
|
73
|
-
- Explicit uncertainty or no-data behavior
|
|
74
|
-
|
|
75
|
-
Avoid filler personas, repeated instructions, and claims about data not present in expression context. For untrusted input, delimit it clearly and state that embedded instructions are data, not authority.
|
|
76
|
-
|
|
77
|
-
Read [selection-and-testing.md](selection-and-testing.md) for node choice and evaluation.
|
|
78
|
-
|
|
79
|
-
## Before you finish
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
cai node get <nodeId> --json
|
|
83
|
-
cai node status <nodeId> --json
|
|
84
|
-
cai node props <nodeId> --json
|
|
85
|
-
cai run node <nodeId> --inputs values.json --json
|
|
86
|
-
cai exec node <nodeExecutionId> --full --json
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
MCP: pass parsed values in `inputs` and set `waitSeconds` on `run_node`.
|
|
90
|
-
|
|
91
|
-
Test at least: normal input, missing/ambiguous input, and an adversarial or boundary case relevant to the task. Check resolved prompt/config, output type, required fields, and values—not just that text was returned.
|
|
92
|
-
|
|
93
|
-
- `node get` must identify the intended native Ask AI component.
|
|
94
|
-
- `node status` must report ready.
|
|
95
|
-
- Props must contain the exact returned provider/model value and label.
|
|
96
|
-
- The execution must show the resolved prompt and typed output fields.
|
|
97
|
-
|
|
98
|
-
AI execution inside the workflow is platform/API usage. Access through either builder transport does not transfer the coding-agent subscription to runtime AI nodes.
|