@chllming/wave-orchestration 0.8.3 → 0.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CHANGELOG.md +36 -1
  2. package/README.md +60 -11
  3. package/docs/README.md +8 -2
  4. package/docs/agents/wave-design-role.md +47 -0
  5. package/docs/concepts/what-is-a-wave.md +11 -7
  6. package/docs/guides/author-and-run-waves.md +24 -0
  7. package/docs/guides/planner.md +44 -0
  8. package/docs/plans/architecture-hardening-migration.md +8 -1
  9. package/docs/plans/current-state.md +19 -7
  10. package/docs/plans/end-state-architecture.md +88 -70
  11. package/docs/plans/examples/wave-example-design-handoff.md +262 -0
  12. package/docs/plans/examples/wave-example-live-proof.md +1 -1
  13. package/docs/plans/migration.md +370 -64
  14. package/docs/plans/wave-orchestrator.md +49 -13
  15. package/docs/reference/cli-reference.md +46 -14
  16. package/docs/reference/coordination-and-closure.md +19 -6
  17. package/docs/reference/npmjs-trusted-publishing.md +5 -4
  18. package/docs/reference/sample-waves.md +14 -7
  19. package/docs/reference/skills.md +10 -0
  20. package/package.json +1 -1
  21. package/releases/manifest.json +39 -0
  22. package/scripts/wave-orchestrator/agent-state.mjs +64 -491
  23. package/scripts/wave-orchestrator/autonomous.mjs +10 -6
  24. package/scripts/wave-orchestrator/{launcher-closure.mjs → closure-engine.mjs} +190 -74
  25. package/scripts/wave-orchestrator/config.mjs +5 -0
  26. package/scripts/wave-orchestrator/coordination.mjs +42 -1
  27. package/scripts/wave-orchestrator/{launcher-derived-state.mjs → derived-state-engine.mjs} +34 -146
  28. package/scripts/wave-orchestrator/{launcher-gates.mjs → gate-engine.mjs} +501 -141
  29. package/scripts/wave-orchestrator/human-input-resolution.mjs +14 -10
  30. package/scripts/wave-orchestrator/human-input-workflow.mjs +104 -0
  31. package/scripts/wave-orchestrator/implementation-engine.mjs +120 -0
  32. package/scripts/wave-orchestrator/install.mjs +3 -0
  33. package/scripts/wave-orchestrator/launcher-runtime.mjs +11 -6
  34. package/scripts/wave-orchestrator/launcher.mjs +324 -723
  35. package/scripts/wave-orchestrator/ledger.mjs +56 -27
  36. package/scripts/wave-orchestrator/local-executor.mjs +37 -0
  37. package/scripts/wave-orchestrator/planner.mjs +24 -4
  38. package/scripts/wave-orchestrator/projection-writer.mjs +256 -0
  39. package/scripts/wave-orchestrator/reconcile-format.mjs +32 -0
  40. package/scripts/wave-orchestrator/reducer-snapshot.mjs +297 -0
  41. package/scripts/wave-orchestrator/replay.mjs +3 -1
  42. package/scripts/wave-orchestrator/result-envelope.mjs +620 -0
  43. package/scripts/wave-orchestrator/retry-control.mjs +22 -2
  44. package/scripts/wave-orchestrator/{launcher-retry.mjs → retry-engine.mjs} +352 -18
  45. package/scripts/wave-orchestrator/role-helpers.mjs +124 -1
  46. package/scripts/wave-orchestrator/{launcher-supervisor.mjs → session-supervisor.mjs} +178 -103
  47. package/scripts/wave-orchestrator/shared.mjs +2 -0
  48. package/scripts/wave-orchestrator/skills.mjs +1 -0
  49. package/scripts/wave-orchestrator/task-entity.mjs +65 -45
  50. package/scripts/wave-orchestrator/traces.mjs +10 -1
  51. package/scripts/wave-orchestrator/wave-files.mjs +96 -10
  52. package/scripts/wave-orchestrator/wave-state-reducer.mjs +76 -12
  53. package/skills/README.md +7 -0
  54. package/skills/role-design/SKILL.md +50 -0
  55. package/skills/role-design/skill.json +36 -0
  56. package/skills/tui-design/SKILL.md +77 -0
  57. package/skills/tui-design/references/tui-design.md +259 -0
  58. package/skills/tui-design/skill.json +36 -0
  59. package/wave.config.json +15 -1
@@ -0,0 +1,259 @@
1
+ # TUI Design Reference
2
+
3
+ This reference distills reusable design guidance for Wave's terminal UX and operator-review work.
4
+
5
+ ## What a TUI is for
6
+
7
+ A TUI is for live operation of a changing system:
8
+
9
+ - observe
10
+ - decide
11
+ - act
12
+ - verify
13
+ - repeat
14
+
15
+ That means the UX must prioritize:
16
+
17
+ - stable state visibility
18
+ - continuous feedback
19
+ - keyboard throughput
20
+ - interruptibility
21
+ - recovery
22
+
23
+ It should not behave like:
24
+
25
+ - a one-shot CLI with colors
26
+ - a browser dashboard squeezed into a terminal
27
+
28
+ ## Core operating principles
29
+
30
+ ### Operational honesty
31
+
32
+ The TUI must make these obvious:
33
+
34
+ - what it knows
35
+ - how fresh that knowledge is
36
+ - what it is currently doing
37
+ - what is only requested versus confirmed
38
+ - what is partial, stale, blocked, or degraded
39
+
40
+ Never imply:
41
+
42
+ - "done" when the backend only accepted a request
43
+ - "live" when the data is cached or lagged
44
+ - "success" when verification has not happened
45
+
46
+ ### Keyboard-first interaction
47
+
48
+ Good TUIs separate input into four lanes:
49
+
50
+ 1. navigation
51
+ 2. actions
52
+ 3. command entry
53
+ 4. escapes and cancellation
54
+
55
+ Required behaviors:
56
+
57
+ - visible focus
58
+ - predictable pane switching
59
+ - context-sensitive help
60
+ - cancel and back semantics that always work
61
+
62
+ ### Stable information architecture
63
+
64
+ The screen should answer:
65
+
66
+ - where am I operating?
67
+ - what changed?
68
+ - what is wrong?
69
+ - what needs action now?
70
+
71
+ Use three state layers:
72
+
73
+ - global: scope, identity, connectivity, freshness
74
+ - session: filters, selected object, follow mode
75
+ - local: pane scroll, cursor, input buffer
76
+
77
+ ### Progressive disclosure
78
+
79
+ Default views should summarize:
80
+
81
+ - what's broken
82
+ - what changed
83
+ - what is actionable
84
+
85
+ Details should be one step away:
86
+
87
+ - inspect
88
+ - drill down
89
+ - open logs
90
+ - open proof
91
+ - open events
92
+
93
+ ### Recovery-first UX
94
+
95
+ Every serious TUI needs:
96
+
97
+ - retry
98
+ - resume
99
+ - replay or event history
100
+ - clear next-step messaging on failure
101
+
102
+ Errors should distinguish:
103
+
104
+ - what failed
105
+ - what scope it affected
106
+ - whether the system is safe
107
+ - what the operator can do next
108
+
109
+ ## Focus and navigation heuristics
110
+
111
+ ### Good focus rules
112
+
113
+ - the active pane is visually obvious
114
+ - the selected row is visually obvious
115
+ - streaming updates never steal focus
116
+ - selection stays pinned unless the operator changes it
117
+
118
+ ### Good navigation rules
119
+
120
+ - tab and shift-tab always get the user unstuck
121
+ - direct hotkeys may exist, but there is always a universal path
122
+ - search and filter are first-class
123
+ - command palette or command bar is ideal for power actions
124
+
125
+ ### Bad signs
126
+
127
+ - mode confusion
128
+ - accidental action keys
129
+ - focus ambiguity
130
+ - selection jumps during refresh
131
+
132
+ ## Visual system guidance
133
+
134
+ ### Use color semantically
135
+
136
+ Recommended semantic roles:
137
+
138
+ - critical
139
+ - warning
140
+ - success
141
+ - info
142
+ - muted
143
+ - focus
144
+ - selection
145
+
146
+ Rules:
147
+
148
+ - never rely on color alone
149
+ - support monochrome or no-color use
150
+ - avoid decorative rainbow dashboards
151
+
152
+ ### Respect terminal constraints
153
+
154
+ Design for:
155
+
156
+ - limited width
157
+ - resizing
158
+ - unicode width issues
159
+ - non-uniform terminal support
160
+
161
+ Implications:
162
+
163
+ - keep glyph choices conservative
164
+ - use ASCII fallbacks where needed
165
+ - degrade gracefully on small terminals
166
+
167
+ ## Live-system feedback rules
168
+
169
+ ### Loading and streaming
170
+
171
+ The operator must be able to tell:
172
+
173
+ - loading
174
+ - syncing
175
+ - replaying
176
+ - paused
177
+ - lagging
178
+ - dropping updates
179
+
180
+ If the system is slow:
181
+
182
+ - say what is happening
183
+ - show progress if possible
184
+ - show completed-so-far if total work is unknown
185
+ - provide interruption
186
+
187
+ ### Success and failure
188
+
189
+ For low-risk actions:
190
+
191
+ - a small confirmation is enough
192
+
193
+ For high-risk or asynchronous actions:
194
+
195
+ - show a receipt
196
+ - show the exact target
197
+ - show request versus applied versus verified state
198
+
199
+ ## Layout patterns that work
200
+
201
+ ### Best default pattern
202
+
203
+ For serious ops TUIs, prefer:
204
+
205
+ - dashboard or navigation pane
206
+ - list or queue pane
207
+ - inspector or detail pane
208
+
209
+ This supports:
210
+
211
+ - fast scanning
212
+ - stable orientation
213
+ - low-friction drill-down
214
+
215
+ ### Good drill-down flow
216
+
217
+ The path should be predictable:
218
+
219
+ - summary
220
+ - selected entity
221
+ - details
222
+ - logs, proof, events, or raw view
223
+
224
+ ### Narrow terminal fallback
225
+
226
+ When width collapses:
227
+
228
+ - reduce columns
229
+ - stack panels
230
+ - keep the same semantics
231
+ - prefer honest condensed output over broken split panes
232
+
233
+ ## Trust checklist for operator surfaces
234
+
235
+ Before approving a TUI or operator UX, ask:
236
+
237
+ - Is scope always visible?
238
+ - Is freshness always visible?
239
+ - Are action states honest?
240
+ - Are filters and selection visible?
241
+ - Can the user recover from errors?
242
+ - Can the user cancel?
243
+ - Can the user tell replay from live?
244
+ - Can the user tell pending from complete?
245
+ - Can the user audit what happened?
246
+
247
+ ## Anti-patterns
248
+
249
+ Reject designs that:
250
+
251
+ - flicker or constantly reflow
252
+ - hide scope or auth context
253
+ - overload color
254
+ - force memorization without help
255
+ - provide no cancel path
256
+ - show fake success
257
+ - use unstable alignment-critical glyphs
258
+ - stream in ways that steal focus
259
+ - hide blockers behind decorative dashboards
@@ -0,0 +1,36 @@
1
+ {
2
+ "id": "tui-design",
3
+ "title": "TUI Design Review",
4
+ "description": "Reviews terminal UI and operator-surface design against world-class TUI principles for focus, trust, navigation, information architecture, and recovery. Use when designing or reviewing TUIs, operator shells, dashboards, keyboard flows, or live terminal UX.",
5
+ "activation": {
6
+ "when": "Attach when the agent is designing or reviewing a TUI, operator shell, dashboard, keyboard interaction model, live status surface, or terminal-native information architecture.",
7
+ "roles": [
8
+ "design"
9
+ ],
10
+ "runtimes": [],
11
+ "deployKinds": []
12
+ },
13
+ "termination": "Stop when the design work clearly states whether the TUI is operationally honest, keyboard-first, focus-safe, and aligned with the repo's terminal UX expectations.",
14
+ "permissions": {
15
+ "network": [],
16
+ "shell": [],
17
+ "mcpServers": []
18
+ },
19
+ "trust": {
20
+ "tier": "repo-owned"
21
+ },
22
+ "evalCases": [
23
+ {
24
+ "id": "tui-design-review",
25
+ "role": "design",
26
+ "runtime": "codex",
27
+ "expectActive": true
28
+ },
29
+ {
30
+ "id": "implementation-review",
31
+ "role": "implementation",
32
+ "runtime": "codex",
33
+ "expectActive": false
34
+ }
35
+ ]
36
+ }
package/wave.config.json CHANGED
@@ -23,7 +23,8 @@
23
23
  "contEvalRolePromptPath": "docs/agents/wave-cont-eval-role.md",
24
24
  "integrationRolePromptPath": "docs/agents/wave-integration-role.md",
25
25
  "documentationRolePromptPath": "docs/agents/wave-documentation-role.md",
26
- "securityRolePromptPath": "docs/agents/wave-security-role.md"
26
+ "securityRolePromptPath": "docs/agents/wave-security-role.md",
27
+ "designRolePromptPath": "docs/agents/wave-design-role.md"
27
28
  },
28
29
  "executors": {
29
30
  "default": "codex",
@@ -60,6 +61,17 @@
60
61
  "minutes": 20
61
62
  }
62
63
  },
64
+ "design-pass": {
65
+ "id": "claude",
66
+ "tags": ["design", "review"],
67
+ "budget": {
68
+ "turns": 10,
69
+ "minutes": 30
70
+ },
71
+ "claude": {
72
+ "allowedTools": ["Read", "Edit", "Write", "Bash", "Grep", "Glob"]
73
+ }
74
+ },
63
75
  "planning-readonly": {
64
76
  "id": "codex",
65
77
  "model": "gpt-5-codex",
@@ -112,6 +124,7 @@
112
124
  "dir": "skills",
113
125
  "base": ["wave-core", "repo-coding-rules"],
114
126
  "byRole": {
127
+ "design": ["role-design"],
115
128
  "implementation": ["role-implementation"],
116
129
  "integration": ["role-integration"],
117
130
  "documentation": ["role-documentation"],
@@ -199,6 +212,7 @@
199
212
  "opencode": 2
200
213
  },
201
214
  "defaultExecutorByRole": {
215
+ "design": "claude",
202
216
  "implementation": "codex",
203
217
  "integration": "claude",
204
218
  "documentation": "claude",