-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathwave.yaml
More file actions
507 lines (506 loc) · 17 KB
/
wave.yaml
File metadata and controls
507 lines (506 loc) · 17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
apiVersion: v1
kind: WaveManifest
metadata:
description: A Wave multi-agent project
name: wave-project
forge: github
project:
language: go
test_command: "go test ./..."
# Disable gpgsign for test-suite sub-commits (e.g. worktree tests that
# call `git commit`). A broken user gpg/keyboxd config must not fail
# the test suite.
contract_test_command: "env GIT_CONFIG_NOSYSTEM=1 GIT_CONFIG_GLOBAL=/dev/null go test ./..."
lint_command: "go vet ./..."
build_command: "go build ./..."
source_glob: "*.go"
ontology:
telos: "Coordinate multiple AI personas through structured pipelines with permissions, contracts, and workspace isolation"
contexts:
- name: execution
description: "Pipeline execution engine — DAG resolution, step orchestration, workspace lifecycle, adapter subprocess management"
invariants:
- "Steps execute in topological order for DAGs, or via graph walker for pipelines with loops and conditional edges"
- "Each step gets fresh memory by default — thread continuity is opt-in"
- "Contract validation must pass before step is marked successful"
- "Each step runs in an isolated workspace"
- "Artifacts from prior steps are injected before persona prompt fires"
- name: security
description: "Permission enforcement, input sanitization, path validation, sandbox configuration"
invariants:
- "All user inputs sanitized for prompt injection"
- "Deny rules projected into both settings.json AND runtime CLAUDE.md"
- "No credentials on disk; sanitized logging"
- "Workspace isolation prevents data leakage between steps"
- name: validation
description: "Output validation, contract enforcement, preflight checks, adaptive retry"
invariants:
- "Hard contract failures block step completion"
- "Soft contract failures log warnings but do not block"
- "Contract validation MUST NOT pass silently on failure"
- "Preflight checks run before any step executes"
- name: delivery
description: "Feature completeness — a capability exists only when users experience it through shipped pipelines and defaults"
invariants:
- "A feature is not done until shipped pipelines use it — engine code without pipeline adoption is incomplete"
- "Validation means the user-facing product changed — not that tests pass or files exist"
- "internal/defaults/pipelines/ must reflect all capabilities the engine supports"
- "Every new executor capability requires at least one default pipeline demonstrating it"
- name: configuration
description: "Manifest loading, persona management, pipeline definitions, embedded defaults"
invariants:
- "wave.yaml is the single source of truth for project configuration"
- "Single static binary — no runtime dependencies except adapter binaries"
- "Parity enforcement between .agents/ files and internal/defaults/"
- "Pipeline YAML defaults memory.strategy to fresh"
- name: quality
description: "Validation and quality gates — first-pass failure is expected, rework is the norm"
invariants:
- "First-pass success is the exception — validation exists to catch and correct, not to rubber-stamp"
- "Every pipeline output must pass through a validation gate before being considered done"
- "Rework after review is not failure — it is the expected path to quality"
- "Contract validation, PR review, and test suites are gates, not formalities"
- "When validation fails, analyze root cause and fix — do not work around the validator"
conventions:
naming: "snake_case for Go files, kebab-case for pipelines and personas"
testing: "table-driven tests with t.TempDir() for isolation"
errors: "structured CLIError with code, message, suggestion"
adapters:
claude:
binary: claude
default_model: sonnet
default_permissions:
allowed_tools:
- Read
- Bash
deny: []
mode: headless
output_format: json
project_files:
- CLAUDE.md
- AGENTS.md
- .claude/settings.json
gemini:
binary: gemini
default_model: gemini-2.5-flash-lite
default_permissions:
allowed_tools:
- Read
- Bash
deny: []
mode: headless
output_format: json
project_files:
- AGENTS.md
opencode:
binary: opencode
default_model: opencode/big-pickle
tier_models:
cheapest: default
balanced: default
strongest: default
default_permissions:
allowed_tools:
- Read
- Bash
deny: []
mode: headless
output_format: json
project_files:
- AGENTS.md
opencode-qwen:
binary: opencode-patched
default_model: ollama/qwen3.5:27b
tier_models:
cheapest: ollama/qwen3.5:27b
balanced: ollama/qwen3.5:27b
strongest: ollama/qwen3.5:27b
default_permissions:
allowed_tools:
- Read
- Bash
deny: []
mode: headless
output_format: json
project_files:
- AGENTS.md
opencode-glm:
binary: opencode-patched
default_model: ollama/glm-4.7-flash
tier_models:
cheapest: ollama/glm-4.7-flash
balanced: ollama/glm-4.7-flash
strongest: ollama/glm-4.7-flash
default_permissions:
allowed_tools:
- Read
- Bash
deny: []
mode: headless
output_format: json
project_files:
- AGENTS.md
personas:
auditor:
adapter: claude
description: Security review and quality assurance
#temperature: 0.1
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/auditor.md
craftsman:
adapter: claude
description: Code implementation and testing
#temperature: 0.3
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/craftsman.md
debugger:
adapter: claude
description: Systematic issue diagnosis and root cause analysis
#temperature: 0.2
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/debugger.md
navigator:
adapter: claude
description: Read-only codebase exploration and analysis
#temperature: 0.3
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/navigator.md
philosopher:
adapter: claude
description: Architecture design and specification
#temperature: 0.7
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/philosopher.md
planner:
adapter: claude
description: Task breakdown and project planning
#temperature: 0.3
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/planner.md
summarizer:
adapter: claude
description: Context compaction for relay handoffs
#temperature: 0.2
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/summarizer.md
webui-capturer:
adapter: claude
description: Browser-driven WebUI screenshot capture via the chromedp adapter
#temperature: 0.0
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/webui-capturer.md
github-analyst:
adapter: claude
description: GitHub issue analysis and quality assessment
#temperature: 0.3
token_scopes:
- issues:read
- pulls:read
- repos:read
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/github-analyst.md
github-enhancer:
adapter: claude
description: GitHub issue enhancement and improvement
#temperature: 0.5
token_scopes:
- issues:write
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/github-enhancer.md
github-scoper:
adapter: claude
description: GitHub epic decomposition into child issues
#temperature: 0.3
token_scopes:
- issues:write
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/github-scoper.md
implementer:
adapter: claude
description: Code execution and artifact generation for pipeline steps
#temperature: 0.3
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/implementer.md
reviewer:
adapter: claude
description: Quality review, validation, and assessment
#temperature: 0.3
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/reviewer.md
researcher:
adapter: claude
description: Web research and information synthesis
#temperature: 0.5
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/researcher.md
github-commenter:
adapter: claude
description: Post comments on GitHub issues and pull requests, create PRs
#temperature: 0.3
token_scopes:
- issues:write
- pulls:write
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/github-commenter.md
gitlab-analyst:
adapter: claude
description: GitLab issue analysis and quality assessment
#temperature: 0.3
token_scopes:
- issues:read
- pulls:read
- repos:read
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/gitlab-analyst.md
gitlab-enhancer:
adapter: claude
description: GitLab issue enhancement and improvement
#temperature: 0.5
token_scopes:
- issues:write
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/gitlab-enhancer.md
gitlab-scoper:
adapter: claude
description: GitLab epic decomposition into child issues
#temperature: 0.3
token_scopes:
- issues:write
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/gitlab-scoper.md
gitlab-commenter:
adapter: claude
description: Post comments on GitLab issues and merge requests
#temperature: 0.3
token_scopes:
- issues:write
- pulls:write
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/gitlab-commenter.md
gitea-analyst:
adapter: claude
description: Gitea issue analysis and quality assessment
#temperature: 0.3
token_scopes:
- issues:read
- pulls:read
- repos:read
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/gitea-analyst.md
gitea-enhancer:
adapter: claude
description: Gitea issue enhancement and improvement
#temperature: 0.5
token_scopes:
- issues:write
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/gitea-enhancer.md
gitea-scoper:
adapter: claude
description: Gitea epic decomposition into child issues
#temperature: 0.3
token_scopes:
- issues:write
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/gitea-scoper.md
gitea-commenter:
adapter: claude
description: Post comments on Gitea issues and pull requests
#temperature: 0.3
token_scopes:
- issues:write
- pulls:write
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/gitea-commenter.md
bitbucket-analyst:
adapter: claude
description: Bitbucket issue analysis and quality assessment
#temperature: 0.3
token_scopes:
- issues:read
- pulls:read
- repos:read
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/bitbucket-analyst.md
bitbucket-enhancer:
adapter: claude
description: Bitbucket issue enhancement and improvement
#temperature: 0.5
token_scopes:
- issues:write
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/bitbucket-enhancer.md
bitbucket-scoper:
adapter: claude
description: Bitbucket epic decomposition into child issues
#temperature: 0.3
token_scopes:
- issues:write
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/bitbucket-scoper.md
bitbucket-commenter:
adapter: claude
description: Post comments on Bitbucket issues and pull requests, create PRs
#temperature: 0.3
token_scopes:
- issues:write
- pulls:write
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/bitbucket-commenter.md
supervisor:
adapter: claude
description: Work quality and process quality evaluation
#temperature: 0.2
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/supervisor.md
validator:
adapter: claude
description: Skeptical analysis and verification of findings against source code
#temperature: 0.1
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/validator.md
synthesizer:
adapter: claude
description: Structured synthesis of analysis findings into actionable JSON proposals
#temperature: 0.2
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/synthesizer.md
provocateur:
adapter: claude
description: Creative challenger for divergent thinking and complexity hunting
#temperature: 0.8
permissions:
allowed_tools:
- "*"
deny: []
system_prompt_file: .agents/personas/provocateur.md
runtime:
audit:
log_all_file_operations: false
log_all_tool_calls: true
log_dir: .agents/traces/
default_timeout_minutes: 30
stall_timeout: 10m
max_concurrent_workers: 5
meta_pipeline:
max_depth: 2
max_total_steps: 20
max_total_tokens: 500000
timeout_minutes: 60
relay:
strategy: summarize_to_checkpoint
token_threshold_percent: 80
timeouts:
step_default_minutes: 15
relay_compaction_minutes: 5
meta_default_minutes: 30
skill_install_seconds: 120
skill_cli_seconds: 120
skill_http_seconds: 120
skill_http_header_seconds: 30
skill_publish_seconds: 30
process_grace_seconds: 3
stdout_drain_seconds: 1
gate_approval_hours: 24
gate_poll_interval_seconds: 30
gate_poll_timeout_minutes: 30
git_command_seconds: 30
forge_api_seconds: 15
retry_max_delay_seconds: 60
workspace_root: .agents/workspaces
cost:
enabled: true
budget_ceiling: 50.0
warn_at: 25.0
routing:
auto_route: true