@output.ai/cli 0.4.2 → 0.5.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 +6 -8
- package/dist/assets/docker/docker-compose-dev.yml +9 -1
- package/dist/services/coding_agents.js +180 -8
- package/dist/services/coding_agents.spec.js +54 -11
- package/dist/templates/agent_instructions/AGENTS.md.template +13 -7
- package/dist/templates/agent_instructions/agents/{context_fetcher.md.template → workflow_context_fetcher.md.template} +1 -1
- package/dist/templates/agent_instructions/agents/workflow_debugger.md.template +98 -0
- package/dist/templates/agent_instructions/agents/workflow_planner.md.template +3 -3
- package/dist/templates/agent_instructions/agents/{prompt_writer.md.template → workflow_prompt_writer.md.template} +1 -1
- package/dist/templates/agent_instructions/agents/workflow_quality.md.template +2 -2
- package/dist/templates/agent_instructions/commands/build_workflow.md.template +2 -2
- package/dist/templates/agent_instructions/commands/debug_workflow.md.template +198 -0
- package/dist/templates/agent_instructions/commands/plan_workflow.md.template +2 -2
- package/dist/templates/agent_instructions/skills/output-error-direct-io/SKILL.md.template +249 -0
- package/dist/templates/agent_instructions/skills/output-error-http-client/SKILL.md.template +298 -0
- package/dist/templates/agent_instructions/skills/output-error-missing-schemas/SKILL.md.template +265 -0
- package/dist/templates/agent_instructions/skills/output-error-nondeterminism/SKILL.md.template +252 -0
- package/dist/templates/agent_instructions/skills/output-error-try-catch/SKILL.md.template +226 -0
- package/dist/templates/agent_instructions/skills/output-error-zod-import/SKILL.md.template +209 -0
- package/dist/templates/agent_instructions/skills/output-services-check/SKILL.md.template +128 -0
- package/dist/templates/agent_instructions/skills/output-workflow-list/SKILL.md.template +117 -0
- package/dist/templates/agent_instructions/skills/output-workflow-result/SKILL.md.template +199 -0
- package/dist/templates/agent_instructions/skills/output-workflow-run/SKILL.md.template +228 -0
- package/dist/templates/agent_instructions/skills/output-workflow-runs-list/SKILL.md.template +141 -0
- package/dist/templates/agent_instructions/skills/output-workflow-start/SKILL.md.template +201 -0
- package/dist/templates/agent_instructions/skills/output-workflow-status/SKILL.md.template +151 -0
- package/dist/templates/agent_instructions/skills/output-workflow-stop/SKILL.md.template +164 -0
- package/dist/templates/agent_instructions/skills/output-workflow-trace/SKILL.md.template +134 -0
- package/dist/templates/project/README.md.template +1 -1
- package/dist/templates/project/package.json.template +3 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -5,11 +5,7 @@ Command-line interface for creating and running Output Framework workflows.
|
|
|
5
5
|
[](https://www.npmjs.com/package/@output.ai/cli)
|
|
6
6
|
[](https://docs.output.ai/packages/cli)
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
```bash
|
|
11
|
-
npm install -g @output.ai/cli
|
|
12
|
-
```
|
|
8
|
+
> **Full Documentation**: For detailed command options, flags, and examples, see the [CLI Reference](https://docs.output.ai/packages/cli).
|
|
13
9
|
|
|
14
10
|
## Quick Start
|
|
15
11
|
|
|
@@ -35,11 +31,13 @@ output workflow run simple --input '{"question": "who is ada lovelace?"}'
|
|
|
35
31
|
| `output workflow plan` | Generate a workflow plan from description |
|
|
36
32
|
| `output workflow generate` | Generate a workflow from plan |
|
|
37
33
|
| `output workflow list` | List available workflows |
|
|
34
|
+
| `output workflow runs list` | List recent workflow runs |
|
|
38
35
|
| `output workflow run` | Execute a workflow synchronously |
|
|
39
36
|
| `output workflow start` | Start a workflow asynchronously |
|
|
40
37
|
| `output workflow status` | Get workflow execution status |
|
|
41
38
|
| `output workflow result` | Get workflow execution result |
|
|
42
39
|
| `output workflow stop` | Stop a workflow execution |
|
|
40
|
+
| `output workflow debug` | Display workflow execution trace |
|
|
43
41
|
|
|
44
42
|
## Development Services
|
|
45
43
|
|
|
@@ -53,7 +51,7 @@ Running `output dev` starts:
|
|
|
53
51
|
|
|
54
52
|
## Documentation
|
|
55
53
|
|
|
56
|
-
For comprehensive documentation
|
|
54
|
+
For comprehensive documentation including all command flags and detailed examples:
|
|
57
55
|
|
|
58
|
-
- [CLI Reference](https://docs.output.ai/packages/cli)
|
|
59
|
-
- [Getting Started](https://docs.output.ai/quickstart)
|
|
56
|
+
- [CLI Reference](https://docs.output.ai/packages/cli) - Complete command documentation
|
|
57
|
+
- [Getting Started](https://docs.output.ai/quickstart) - Project setup guide
|
|
@@ -105,7 +105,15 @@ services:
|
|
|
105
105
|
- TEMPORAL_ADDRESS=temporal:7233
|
|
106
106
|
- TRACE_LOCAL_ON=true
|
|
107
107
|
- HOST_TRACE_PATH=${PWD}/logs
|
|
108
|
-
command:
|
|
108
|
+
command: >
|
|
109
|
+
sh -c "
|
|
110
|
+
npm run output:worker:install &&
|
|
111
|
+
echo 'Installed dependencies' &&
|
|
112
|
+
npm run output:worker:build &&
|
|
113
|
+
echo 'Built worker' &&
|
|
114
|
+
npm run output:worker:start &&
|
|
115
|
+
echo 'Started worker'
|
|
116
|
+
"
|
|
109
117
|
working_dir: /app
|
|
110
118
|
volumes:
|
|
111
119
|
- ./:/app
|
|
@@ -36,19 +36,29 @@ export const AGENT_CONFIGS = {
|
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
type: 'template',
|
|
39
|
-
from: 'agents/
|
|
40
|
-
to: `${AGENT_CONFIG_DIR}/agents/
|
|
39
|
+
from: 'agents/workflow_context_fetcher.md.template',
|
|
40
|
+
to: `${AGENT_CONFIG_DIR}/agents/workflow_context_fetcher.md`
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
type: 'template',
|
|
44
|
-
from: 'agents/
|
|
45
|
-
to: `${AGENT_CONFIG_DIR}/agents/
|
|
44
|
+
from: 'agents/workflow_prompt_writer.md.template',
|
|
45
|
+
to: `${AGENT_CONFIG_DIR}/agents/workflow_prompt_writer.md`
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
type: 'template',
|
|
49
|
+
from: 'agents/workflow_debugger.md.template',
|
|
50
|
+
to: `${AGENT_CONFIG_DIR}/agents/workflow_debugger.md`
|
|
46
51
|
},
|
|
47
52
|
{
|
|
48
53
|
type: 'template',
|
|
49
54
|
from: 'commands/plan_workflow.md.template',
|
|
50
55
|
to: `${AGENT_CONFIG_DIR}/commands/plan_workflow.md`
|
|
51
56
|
},
|
|
57
|
+
{
|
|
58
|
+
type: 'template',
|
|
59
|
+
from: 'commands/debug_workflow.md.template',
|
|
60
|
+
to: `${AGENT_CONFIG_DIR}/commands/debug_workflow.md`
|
|
61
|
+
},
|
|
52
62
|
{
|
|
53
63
|
type: 'template',
|
|
54
64
|
from: 'commands/build_workflow.md.template',
|
|
@@ -63,6 +73,82 @@ export const AGENT_CONFIGS = {
|
|
|
63
73
|
type: 'template',
|
|
64
74
|
from: 'meta/post_flight.md.template',
|
|
65
75
|
to: '.outputai/meta/post_flight.md'
|
|
76
|
+
},
|
|
77
|
+
// Skills (all at top level - no nesting allowed)
|
|
78
|
+
{
|
|
79
|
+
type: 'template',
|
|
80
|
+
from: 'skills/output-services-check/SKILL.md.template',
|
|
81
|
+
to: `${AGENT_CONFIG_DIR}/skills/output-services-check/SKILL.md`
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
type: 'template',
|
|
85
|
+
from: 'skills/output-workflow-trace/SKILL.md.template',
|
|
86
|
+
to: `${AGENT_CONFIG_DIR}/skills/output-workflow-trace/SKILL.md`
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
type: 'template',
|
|
90
|
+
from: 'skills/output-workflow-list/SKILL.md.template',
|
|
91
|
+
to: `${AGENT_CONFIG_DIR}/skills/output-workflow-list/SKILL.md`
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
type: 'template',
|
|
95
|
+
from: 'skills/output-workflow-runs-list/SKILL.md.template',
|
|
96
|
+
to: `${AGENT_CONFIG_DIR}/skills/output-workflow-runs-list/SKILL.md`
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
type: 'template',
|
|
100
|
+
from: 'skills/output-workflow-run/SKILL.md.template',
|
|
101
|
+
to: `${AGENT_CONFIG_DIR}/skills/output-workflow-run/SKILL.md`
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
type: 'template',
|
|
105
|
+
from: 'skills/output-workflow-start/SKILL.md.template',
|
|
106
|
+
to: `${AGENT_CONFIG_DIR}/skills/output-workflow-start/SKILL.md`
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
type: 'template',
|
|
110
|
+
from: 'skills/output-workflow-status/SKILL.md.template',
|
|
111
|
+
to: `${AGENT_CONFIG_DIR}/skills/output-workflow-status/SKILL.md`
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
type: 'template',
|
|
115
|
+
from: 'skills/output-workflow-result/SKILL.md.template',
|
|
116
|
+
to: `${AGENT_CONFIG_DIR}/skills/output-workflow-result/SKILL.md`
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
type: 'template',
|
|
120
|
+
from: 'skills/output-workflow-stop/SKILL.md.template',
|
|
121
|
+
to: `${AGENT_CONFIG_DIR}/skills/output-workflow-stop/SKILL.md`
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
type: 'template',
|
|
125
|
+
from: 'skills/output-error-zod-import/SKILL.md.template',
|
|
126
|
+
to: `${AGENT_CONFIG_DIR}/skills/output-error-zod-import/SKILL.md`
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
type: 'template',
|
|
130
|
+
from: 'skills/output-error-nondeterminism/SKILL.md.template',
|
|
131
|
+
to: `${AGENT_CONFIG_DIR}/skills/output-error-nondeterminism/SKILL.md`
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
type: 'template',
|
|
135
|
+
from: 'skills/output-error-try-catch/SKILL.md.template',
|
|
136
|
+
to: `${AGENT_CONFIG_DIR}/skills/output-error-try-catch/SKILL.md`
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
type: 'template',
|
|
140
|
+
from: 'skills/output-error-missing-schemas/SKILL.md.template',
|
|
141
|
+
to: `${AGENT_CONFIG_DIR}/skills/output-error-missing-schemas/SKILL.md`
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
type: 'template',
|
|
145
|
+
from: 'skills/output-error-direct-io/SKILL.md.template',
|
|
146
|
+
to: `${AGENT_CONFIG_DIR}/skills/output-error-direct-io/SKILL.md`
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
type: 'template',
|
|
150
|
+
from: 'skills/output-error-http-client/SKILL.md.template',
|
|
151
|
+
to: `${AGENT_CONFIG_DIR}/skills/output-error-http-client/SKILL.md`
|
|
66
152
|
}
|
|
67
153
|
]
|
|
68
154
|
},
|
|
@@ -87,23 +173,109 @@ export const AGENT_CONFIGS = {
|
|
|
87
173
|
},
|
|
88
174
|
{
|
|
89
175
|
type: 'symlink',
|
|
90
|
-
from: `${AGENT_CONFIG_DIR}/agents/
|
|
91
|
-
to: '.claude/agents/
|
|
176
|
+
from: `${AGENT_CONFIG_DIR}/agents/workflow_context_fetcher.md`,
|
|
177
|
+
to: '.claude/agents/workflow_context_fetcher.md'
|
|
92
178
|
},
|
|
93
179
|
{
|
|
94
180
|
type: 'symlink',
|
|
95
|
-
from: `${AGENT_CONFIG_DIR}/agents/
|
|
96
|
-
to: '.claude/agents/
|
|
181
|
+
from: `${AGENT_CONFIG_DIR}/agents/workflow_prompt_writer.md`,
|
|
182
|
+
to: '.claude/agents/workflow_prompt_writer.md'
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
type: 'symlink',
|
|
186
|
+
from: `${AGENT_CONFIG_DIR}/agents/workflow_debugger.md`,
|
|
187
|
+
to: '.claude/agents/workflow_debugger.md'
|
|
97
188
|
},
|
|
98
189
|
{
|
|
99
190
|
type: 'symlink',
|
|
100
191
|
from: `${AGENT_CONFIG_DIR}/commands/plan_workflow.md`,
|
|
101
192
|
to: '.claude/commands/plan_workflow.md'
|
|
102
193
|
},
|
|
194
|
+
{
|
|
195
|
+
type: 'symlink',
|
|
196
|
+
from: `${AGENT_CONFIG_DIR}/commands/debug_workflow.md`,
|
|
197
|
+
to: '.claude/commands/debug_workflow.md'
|
|
198
|
+
},
|
|
103
199
|
{
|
|
104
200
|
type: 'symlink',
|
|
105
201
|
from: `${AGENT_CONFIG_DIR}/commands/build_workflow.md`,
|
|
106
202
|
to: '.claude/commands/build_workflow.md'
|
|
203
|
+
},
|
|
204
|
+
// Skills Symlinks (all at top level - no nesting allowed)
|
|
205
|
+
{
|
|
206
|
+
type: 'symlink',
|
|
207
|
+
from: `${AGENT_CONFIG_DIR}/skills/output-services-check/SKILL.md`,
|
|
208
|
+
to: '.claude/skills/output-services-check/SKILL.md'
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
type: 'symlink',
|
|
212
|
+
from: `${AGENT_CONFIG_DIR}/skills/output-workflow-trace/SKILL.md`,
|
|
213
|
+
to: '.claude/skills/output-workflow-trace/SKILL.md'
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
type: 'symlink',
|
|
217
|
+
from: `${AGENT_CONFIG_DIR}/skills/output-workflow-list/SKILL.md`,
|
|
218
|
+
to: '.claude/skills/output-workflow-list/SKILL.md'
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
type: 'symlink',
|
|
222
|
+
from: `${AGENT_CONFIG_DIR}/skills/output-workflow-runs-list/SKILL.md`,
|
|
223
|
+
to: '.claude/skills/output-workflow-runs-list/SKILL.md'
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
type: 'symlink',
|
|
227
|
+
from: `${AGENT_CONFIG_DIR}/skills/output-workflow-run/SKILL.md`,
|
|
228
|
+
to: '.claude/skills/output-workflow-run/SKILL.md'
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
type: 'symlink',
|
|
232
|
+
from: `${AGENT_CONFIG_DIR}/skills/output-workflow-start/SKILL.md`,
|
|
233
|
+
to: '.claude/skills/output-workflow-start/SKILL.md'
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
type: 'symlink',
|
|
237
|
+
from: `${AGENT_CONFIG_DIR}/skills/output-workflow-status/SKILL.md`,
|
|
238
|
+
to: '.claude/skills/output-workflow-status/SKILL.md'
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
type: 'symlink',
|
|
242
|
+
from: `${AGENT_CONFIG_DIR}/skills/output-workflow-result/SKILL.md`,
|
|
243
|
+
to: '.claude/skills/output-workflow-result/SKILL.md'
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
type: 'symlink',
|
|
247
|
+
from: `${AGENT_CONFIG_DIR}/skills/output-workflow-stop/SKILL.md`,
|
|
248
|
+
to: '.claude/skills/output-workflow-stop/SKILL.md'
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
type: 'symlink',
|
|
252
|
+
from: `${AGENT_CONFIG_DIR}/skills/output-error-zod-import/SKILL.md`,
|
|
253
|
+
to: '.claude/skills/output-error-zod-import/SKILL.md'
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
type: 'symlink',
|
|
257
|
+
from: `${AGENT_CONFIG_DIR}/skills/output-error-nondeterminism/SKILL.md`,
|
|
258
|
+
to: '.claude/skills/output-error-nondeterminism/SKILL.md'
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
type: 'symlink',
|
|
262
|
+
from: `${AGENT_CONFIG_DIR}/skills/output-error-try-catch/SKILL.md`,
|
|
263
|
+
to: '.claude/skills/output-error-try-catch/SKILL.md'
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
type: 'symlink',
|
|
267
|
+
from: `${AGENT_CONFIG_DIR}/skills/output-error-missing-schemas/SKILL.md`,
|
|
268
|
+
to: '.claude/skills/output-error-missing-schemas/SKILL.md'
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
type: 'symlink',
|
|
272
|
+
from: `${AGENT_CONFIG_DIR}/skills/output-error-direct-io/SKILL.md`,
|
|
273
|
+
to: '.claude/skills/output-error-direct-io/SKILL.md'
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
type: 'symlink',
|
|
277
|
+
from: `${AGENT_CONFIG_DIR}/skills/output-error-http-client/SKILL.md`,
|
|
278
|
+
to: '.claude/skills/output-error-http-client/SKILL.md'
|
|
107
279
|
}
|
|
108
280
|
]
|
|
109
281
|
}
|
|
@@ -33,17 +33,23 @@ describe('coding_agents service', () => {
|
|
|
33
33
|
expect(files).toContain('CLAUDE.md');
|
|
34
34
|
expect(files).toContain('.claude/agents/workflow_planner.md');
|
|
35
35
|
expect(files).toContain('.claude/commands/plan_workflow.md');
|
|
36
|
+
// Spot check skill files (all at top level - no nesting)
|
|
37
|
+
expect(files).toContain('.outputai/skills/output-services-check/SKILL.md');
|
|
38
|
+
expect(files).toContain('.outputai/skills/output-workflow-list/SKILL.md');
|
|
39
|
+
expect(files).toContain('.outputai/skills/output-error-zod-import/SKILL.md');
|
|
40
|
+
expect(files).toContain('.claude/skills/output-workflow-trace/SKILL.md');
|
|
41
|
+
expect(files).toContain('.claude/skills/output-workflow-run/SKILL.md');
|
|
42
|
+
expect(files).toContain('.claude/skills/output-error-nondeterminism/SKILL.md');
|
|
36
43
|
});
|
|
37
44
|
it('should include both outputai and claude-code files', () => {
|
|
38
45
|
const files = getRequiredFiles();
|
|
39
46
|
const expectedCount = AGENT_CONFIGS.outputai.mappings.length +
|
|
40
47
|
AGENT_CONFIGS['claude-code'].mappings.length;
|
|
41
48
|
expect(files.length).toBe(expectedCount);
|
|
42
|
-
expect(files.length).toBe(16);
|
|
43
49
|
});
|
|
44
50
|
it('should have outputai files with .outputai prefix', () => {
|
|
45
51
|
const files = getRequiredFiles();
|
|
46
|
-
const outputaiFiles = files.slice(0,
|
|
52
|
+
const outputaiFiles = files.slice(0, 26);
|
|
47
53
|
outputaiFiles.forEach(file => {
|
|
48
54
|
expect(file).toMatch(/^\.outputai\//);
|
|
49
55
|
});
|
|
@@ -78,19 +84,56 @@ describe('coding_agents service', () => {
|
|
|
78
84
|
'.outputai/AGENTS.md',
|
|
79
85
|
'.outputai/agents/workflow_planner.md',
|
|
80
86
|
'.outputai/agents/workflow_quality.md',
|
|
81
|
-
'.outputai/agents/
|
|
82
|
-
'.outputai/agents/
|
|
87
|
+
'.outputai/agents/workflow_context_fetcher.md',
|
|
88
|
+
'.outputai/agents/workflow_prompt_writer.md',
|
|
89
|
+
'.outputai/agents/workflow_debugger.md',
|
|
83
90
|
'.outputai/commands/plan_workflow.md',
|
|
91
|
+
'.outputai/commands/debug_workflow.md',
|
|
84
92
|
'.outputai/commands/build_workflow.md',
|
|
85
93
|
'.outputai/meta/pre_flight.md',
|
|
86
94
|
'.outputai/meta/post_flight.md',
|
|
95
|
+
// Skills (all at top level - no nesting allowed)
|
|
96
|
+
'.outputai/skills/output-services-check/SKILL.md',
|
|
97
|
+
'.outputai/skills/output-workflow-trace/SKILL.md',
|
|
98
|
+
'.outputai/skills/output-workflow-list/SKILL.md',
|
|
99
|
+
'.outputai/skills/output-workflow-runs-list/SKILL.md',
|
|
100
|
+
'.outputai/skills/output-workflow-run/SKILL.md',
|
|
101
|
+
'.outputai/skills/output-workflow-start/SKILL.md',
|
|
102
|
+
'.outputai/skills/output-workflow-status/SKILL.md',
|
|
103
|
+
'.outputai/skills/output-workflow-result/SKILL.md',
|
|
104
|
+
'.outputai/skills/output-workflow-stop/SKILL.md',
|
|
105
|
+
'.outputai/skills/output-error-zod-import/SKILL.md',
|
|
106
|
+
'.outputai/skills/output-error-nondeterminism/SKILL.md',
|
|
107
|
+
'.outputai/skills/output-error-try-catch/SKILL.md',
|
|
108
|
+
'.outputai/skills/output-error-missing-schemas/SKILL.md',
|
|
109
|
+
'.outputai/skills/output-error-direct-io/SKILL.md',
|
|
110
|
+
'.outputai/skills/output-error-http-client/SKILL.md',
|
|
111
|
+
// Claude-code symlinks
|
|
87
112
|
'CLAUDE.md',
|
|
88
113
|
'.claude/agents/workflow_planner.md',
|
|
89
114
|
'.claude/agents/workflow_quality.md',
|
|
90
|
-
'.claude/agents/
|
|
91
|
-
'.claude/agents/
|
|
115
|
+
'.claude/agents/workflow_context_fetcher.md',
|
|
116
|
+
'.claude/agents/workflow_prompt_writer.md',
|
|
117
|
+
'.claude/agents/workflow_debugger.md',
|
|
92
118
|
'.claude/commands/plan_workflow.md',
|
|
93
|
-
'.claude/commands/
|
|
119
|
+
'.claude/commands/debug_workflow.md',
|
|
120
|
+
'.claude/commands/build_workflow.md',
|
|
121
|
+
// Claude-code skill symlinks (all at top level - no nesting allowed)
|
|
122
|
+
'.claude/skills/output-services-check/SKILL.md',
|
|
123
|
+
'.claude/skills/output-workflow-trace/SKILL.md',
|
|
124
|
+
'.claude/skills/output-workflow-list/SKILL.md',
|
|
125
|
+
'.claude/skills/output-workflow-runs-list/SKILL.md',
|
|
126
|
+
'.claude/skills/output-workflow-run/SKILL.md',
|
|
127
|
+
'.claude/skills/output-workflow-start/SKILL.md',
|
|
128
|
+
'.claude/skills/output-workflow-status/SKILL.md',
|
|
129
|
+
'.claude/skills/output-workflow-result/SKILL.md',
|
|
130
|
+
'.claude/skills/output-workflow-stop/SKILL.md',
|
|
131
|
+
'.claude/skills/output-error-zod-import/SKILL.md',
|
|
132
|
+
'.claude/skills/output-error-nondeterminism/SKILL.md',
|
|
133
|
+
'.claude/skills/output-error-try-catch/SKILL.md',
|
|
134
|
+
'.claude/skills/output-error-missing-schemas/SKILL.md',
|
|
135
|
+
'.claude/skills/output-error-direct-io/SKILL.md',
|
|
136
|
+
'.claude/skills/output-error-http-client/SKILL.md'
|
|
94
137
|
],
|
|
95
138
|
isComplete: false
|
|
96
139
|
});
|
|
@@ -104,7 +147,7 @@ describe('coding_agents service', () => {
|
|
|
104
147
|
missingFiles: [],
|
|
105
148
|
isComplete: true
|
|
106
149
|
});
|
|
107
|
-
expect(access).toHaveBeenCalledTimes(
|
|
150
|
+
expect(access).toHaveBeenCalledTimes(51); // dir + 26 outputai + 24 claude-code
|
|
108
151
|
});
|
|
109
152
|
it('should return missing files when some files do not exist', async () => {
|
|
110
153
|
const missingFiles = new Set([
|
|
@@ -180,10 +223,10 @@ describe('coding_agents service', () => {
|
|
|
180
223
|
force: false,
|
|
181
224
|
agentProvider: 'claude-code'
|
|
182
225
|
});
|
|
183
|
-
// Should create outputai files (
|
|
226
|
+
// Should create outputai files (26 templates)
|
|
184
227
|
expect(fs.writeFile).toHaveBeenCalledWith(expect.stringContaining('AGENTS.md'), expect.any(String), 'utf-8');
|
|
185
|
-
// Should create symlinks (
|
|
186
|
-
expect(fs.symlink).toHaveBeenCalledTimes(
|
|
228
|
+
// Should create symlinks (24 symlinks for claude-code)
|
|
229
|
+
expect(fs.symlink).toHaveBeenCalledTimes(24);
|
|
187
230
|
});
|
|
188
231
|
it('should skip existing files when force is false', async () => {
|
|
189
232
|
// Mock some files exist
|
|
@@ -205,15 +205,21 @@ throw new FatalError('Critical failure - do not retry');
|
|
|
205
205
|
throw new ValidationError('Invalid input format');
|
|
206
206
|
```
|
|
207
207
|
|
|
208
|
-
##
|
|
208
|
+
## Sub-Agents
|
|
209
209
|
|
|
210
210
|
For workflow planning and implementation:
|
|
211
|
-
- `.claude/agents/workflow_planner.md` - Workflow architecture specialist
|
|
212
|
-
- `.claude/agents/workflow_quality.md` - Workflow quality and best practices specialist
|
|
213
|
-
- `.claude/agents/
|
|
214
|
-
- `.claude/agents/
|
|
215
|
-
- `.claude/
|
|
216
|
-
|
|
211
|
+
- workflow-planner: `.claude/agents/workflow_planner.md` - Workflow architecture specialist
|
|
212
|
+
- workflow-quality: `.claude/agents/workflow_quality.md` - Workflow quality and best practices specialist
|
|
213
|
+
- workflow-prompt-writer: `.claude/agents/workflow_prompt_writer.md` - Prompt file creation and review specialist
|
|
214
|
+
- workflow-context-fetcher: `.claude/agents/workflow_context_fetcher.md` - Efficient context retrieval (used by other agents)
|
|
215
|
+
- workflow-debugger: `.claude/agents/workflow_debugger.md` - Workflow debugging specialist
|
|
216
|
+
|
|
217
|
+
## Commands
|
|
218
|
+
|
|
219
|
+
For workflow planning and implementation:
|
|
220
|
+
- /plan_workflow: `.claude/commands/plan_workflow.md` - Planning command
|
|
221
|
+
- /build_workflow: `.claude/commands/build_workflow.md` - Implementation command
|
|
222
|
+
- /debug_workflow: `.claude/commands/debug_workflow.md` - Debugging command
|
|
217
223
|
|
|
218
224
|
## Configuration
|
|
219
225
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: context-fetcher
|
|
2
|
+
name: workflow-context-fetcher
|
|
3
3
|
description: Use proactively to retrieve and extract relevant information from Output SDK project documentation files. Checks if content is already in context before returning.
|
|
4
4
|
tools: Read, Grep, Glob
|
|
5
5
|
model: haiku
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workflow-debugger
|
|
3
|
+
description: Use this agent when you need to debug Output SDK workflows in local development. Invoke when workflows fail, return unexpected results, or you need to analyze execution traces to identify root causes.
|
|
4
|
+
model: opus
|
|
5
|
+
color: yellow
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Output SDK Workflow Debugger Agent
|
|
9
|
+
|
|
10
|
+
## Identity
|
|
11
|
+
|
|
12
|
+
You are an Output SDK debugging expert who specializes in diagnosing and resolving workflow execution issues in local development environments. You use a systematic approach: verify infrastructure, gather evidence from execution traces, identify root causes, and suggest targeted fixes based on common error patterns.
|
|
13
|
+
|
|
14
|
+
## Context Retrieval
|
|
15
|
+
|
|
16
|
+
Use the `workflow-quality` subagent for:
|
|
17
|
+
- **Code Quality Guidance**: Import conventions, determinism rules, step boundaries
|
|
18
|
+
- **Best Practices**: Schema definitions, retry policies, error handling
|
|
19
|
+
- **Common Pitfalls**: Known issues and their solutions
|
|
20
|
+
|
|
21
|
+
Use the `workflow-context-fetcher` subagent for:
|
|
22
|
+
- **Project Structure**: Find workflow files in `src/workflows/*/`
|
|
23
|
+
- **Existing Patterns**: Examine similar implementations for comparison
|
|
24
|
+
|
|
25
|
+
## CLI Commands for Debugging
|
|
26
|
+
|
|
27
|
+
For detailed command usage, Claude will automatically invoke the relevant skill.
|
|
28
|
+
|
|
29
|
+
### Quick Reference
|
|
30
|
+
|
|
31
|
+
| Command | Purpose |
|
|
32
|
+
|---------|---------|
|
|
33
|
+
| `output dev` | Start development services |
|
|
34
|
+
| `output workflow list` | List available workflows |
|
|
35
|
+
| `output workflow runs list` | List execution history |
|
|
36
|
+
| `output workflow run` | Execute synchronously |
|
|
37
|
+
| `output workflow start` | Start asynchronously |
|
|
38
|
+
| `output workflow status` | Check execution status |
|
|
39
|
+
| `output workflow result` | Get execution result |
|
|
40
|
+
| `output workflow stop` | Stop running workflow |
|
|
41
|
+
| `output workflow debug` | Analyze execution trace |
|
|
42
|
+
|
|
43
|
+
## Temporal UI
|
|
44
|
+
|
|
45
|
+
For visual workflow inspection and detailed execution timelines, access the Temporal Web UI at:
|
|
46
|
+
|
|
47
|
+
**http://localhost:8080**
|
|
48
|
+
|
|
49
|
+
The Temporal UI provides real-time visibility into workflow executions, event history, and task queues.
|
|
50
|
+
|
|
51
|
+
## Systematic Debugging Approach
|
|
52
|
+
|
|
53
|
+
### Step 1: Verify Infrastructure
|
|
54
|
+
Confirm Docker containers are running and services are active.
|
|
55
|
+
- **Skill**: `output-services-check`
|
|
56
|
+
|
|
57
|
+
### Step 2: Gather Evidence
|
|
58
|
+
List recent runs and identify the failing workflow ID.
|
|
59
|
+
- **Skills**: `output-workflow-runs-list`, `output-workflow-trace`
|
|
60
|
+
|
|
61
|
+
### Step 3: Analyze Trace
|
|
62
|
+
Examine the trace for error messages, failed steps, and I/O data.
|
|
63
|
+
- **Skill**: `output-workflow-trace`
|
|
64
|
+
|
|
65
|
+
### Step 4: Apply Fix
|
|
66
|
+
Match error symptoms to solutions and verify the fix.
|
|
67
|
+
- **Skills**: `output-error-*` (matched by symptoms)
|
|
68
|
+
|
|
69
|
+
## Example Interaction
|
|
70
|
+
|
|
71
|
+
**User**: "My workflow is failing but I don't know why. The run ID is abc123."
|
|
72
|
+
|
|
73
|
+
**Agent**: Let me help you debug this workflow. First, let's get the execution trace:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
output workflow debug abc123 --format json
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
This will show us exactly where the workflow failed and what error occurred. While I analyze the trace, you can also check the Temporal UI at http://localhost:8080 for a visual timeline of the execution.
|
|
80
|
+
|
|
81
|
+
**User**: "The trace shows an error about incompatible schemas in step 'processData'."
|
|
82
|
+
|
|
83
|
+
**Agent**: This is likely the Zod import source issue. Check your step file - you're probably importing `z` from `zod` instead of `@output.ai/core`. These create different schema instances that aren't compatible.
|
|
84
|
+
|
|
85
|
+
Change:
|
|
86
|
+
```typescript
|
|
87
|
+
import { z } from 'zod';
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
To:
|
|
91
|
+
```typescript
|
|
92
|
+
import { z } from '@output.ai/core';
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
After making this change, run the workflow again with `output workflow run <workflowName>` to verify the fix.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
*This agent specializes in debugging Output SDK workflows in local development environments.*
|
|
@@ -14,12 +14,12 @@ You are a Output SDK workflow planning specialist who follows structured XML-bas
|
|
|
14
14
|
Your workflow planning follows the structured process defined in `/plan_workflow` command with explicit numbered steps and validation checkpoints.
|
|
15
15
|
|
|
16
16
|
### Context Retrieval
|
|
17
|
-
Use the `context-fetcher` subagent to retrieve documentation only if not already in context:
|
|
17
|
+
Use the `workflow-context-fetcher` subagent to retrieve documentation only if not already in context:
|
|
18
18
|
- **Pre-Flight**: `.outputai/meta/pre_flight.md` - validation rules and smart defaults
|
|
19
19
|
- **Post-Flight**: `.outputai/meta/post_flight.md` - completion checklist
|
|
20
20
|
- **Existing Patterns**: `src/workflows/*/workflow.ts` - similar workflow patterns
|
|
21
21
|
|
|
22
|
-
Use the `prompt-writer` subagent for:
|
|
22
|
+
Use the `workflow-prompt-writer` subagent for:
|
|
23
23
|
- Creating and reviewing `.prompt` files
|
|
24
24
|
- Liquid.js template syntax guidance
|
|
25
25
|
- Provider/model configuration
|
|
@@ -64,7 +64,7 @@ Only request clarification for:
|
|
|
64
64
|
- Specify workerModule service usage
|
|
65
65
|
|
|
66
66
|
### 🏗️ Step 5-6: Prompt & Orchestration Planning
|
|
67
|
-
- Design LLM prompts with template variables (delegate to `prompt-writer` subagent for implementation)
|
|
67
|
+
- Design LLM prompts with template variables (delegate to `workflow-prompt-writer` subagent for implementation)
|
|
68
68
|
- Define workflow execution logic step-by-step
|
|
69
69
|
- Plan conditional logic and data flow
|
|
70
70
|
- Generate TypeScript code templates
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: prompt-writer
|
|
2
|
+
name: workflow-prompt-writer
|
|
3
3
|
description: Use this agent when writing, reviewing, or debugging LLM prompt files (.prompt). Specializes in Liquid.js template syntax, YAML frontmatter configuration, and Output SDK prompt conventions.
|
|
4
4
|
tools: Read, Write, Edit, Grep, Glob
|
|
5
5
|
model: sonnet
|
|
@@ -13,11 +13,11 @@ You are an Output SDK implementation expert who ensures workflow code follows be
|
|
|
13
13
|
|
|
14
14
|
## Context Retrieval
|
|
15
15
|
|
|
16
|
-
Use the `context-fetcher` subagent to efficiently retrieve:
|
|
16
|
+
Use the `workflow-context-fetcher` subagent to efficiently retrieve:
|
|
17
17
|
- **Existing Patterns**: Find similar implementations in `src/workflows/*/`
|
|
18
18
|
- **Project Conventions**: Check `.outputai/AGENTS.md` for project-specific rules
|
|
19
19
|
|
|
20
|
-
Use the `prompt-writer` subagent for:
|
|
20
|
+
Use the `workflow-prompt-writer` subagent for:
|
|
21
21
|
- Creating new `.prompt` files
|
|
22
22
|
- Reviewing or debugging prompt template syntax
|
|
23
23
|
- Understanding Liquid.js syntax and YAML frontmatter
|
|
@@ -25,7 +25,7 @@ Implement the workflow described in the plan document, following Output SDK patt
|
|
|
25
25
|
|
|
26
26
|
<process_flow>
|
|
27
27
|
|
|
28
|
-
<step number="1" name="plan_analysis" subagent="context-fetcher">
|
|
28
|
+
<step number="1" name="plan_analysis" subagent="workflow-context-fetcher">
|
|
29
29
|
|
|
30
30
|
### Step 1: Plan Analysis
|
|
31
31
|
|
|
@@ -122,7 +122,7 @@ export const stepName = step( {
|
|
|
122
122
|
|
|
123
123
|
</step>
|
|
124
124
|
|
|
125
|
-
<step number="4" name="prompt_templates" subagent="prompt-writer">
|
|
125
|
+
<step number="4" name="prompt_templates" subagent="workflow-prompt-writer">
|
|
126
126
|
|
|
127
127
|
### Step 4: Prompt Templates (if needed)
|
|
128
128
|
|