@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.
- package/CHANGELOG.md +36 -1
- package/README.md +60 -11
- package/docs/README.md +8 -2
- package/docs/agents/wave-design-role.md +47 -0
- package/docs/concepts/what-is-a-wave.md +11 -7
- package/docs/guides/author-and-run-waves.md +24 -0
- package/docs/guides/planner.md +44 -0
- package/docs/plans/architecture-hardening-migration.md +8 -1
- package/docs/plans/current-state.md +19 -7
- package/docs/plans/end-state-architecture.md +88 -70
- package/docs/plans/examples/wave-example-design-handoff.md +262 -0
- package/docs/plans/examples/wave-example-live-proof.md +1 -1
- package/docs/plans/migration.md +370 -64
- package/docs/plans/wave-orchestrator.md +49 -13
- package/docs/reference/cli-reference.md +46 -14
- package/docs/reference/coordination-and-closure.md +19 -6
- package/docs/reference/npmjs-trusted-publishing.md +5 -4
- package/docs/reference/sample-waves.md +14 -7
- package/docs/reference/skills.md +10 -0
- package/package.json +1 -1
- package/releases/manifest.json +39 -0
- package/scripts/wave-orchestrator/agent-state.mjs +64 -491
- package/scripts/wave-orchestrator/autonomous.mjs +10 -6
- package/scripts/wave-orchestrator/{launcher-closure.mjs → closure-engine.mjs} +190 -74
- package/scripts/wave-orchestrator/config.mjs +5 -0
- package/scripts/wave-orchestrator/coordination.mjs +42 -1
- package/scripts/wave-orchestrator/{launcher-derived-state.mjs → derived-state-engine.mjs} +34 -146
- package/scripts/wave-orchestrator/{launcher-gates.mjs → gate-engine.mjs} +501 -141
- package/scripts/wave-orchestrator/human-input-resolution.mjs +14 -10
- package/scripts/wave-orchestrator/human-input-workflow.mjs +104 -0
- package/scripts/wave-orchestrator/implementation-engine.mjs +120 -0
- package/scripts/wave-orchestrator/install.mjs +3 -0
- package/scripts/wave-orchestrator/launcher-runtime.mjs +11 -6
- package/scripts/wave-orchestrator/launcher.mjs +324 -723
- package/scripts/wave-orchestrator/ledger.mjs +56 -27
- package/scripts/wave-orchestrator/local-executor.mjs +37 -0
- package/scripts/wave-orchestrator/planner.mjs +24 -4
- package/scripts/wave-orchestrator/projection-writer.mjs +256 -0
- package/scripts/wave-orchestrator/reconcile-format.mjs +32 -0
- package/scripts/wave-orchestrator/reducer-snapshot.mjs +297 -0
- package/scripts/wave-orchestrator/replay.mjs +3 -1
- package/scripts/wave-orchestrator/result-envelope.mjs +620 -0
- package/scripts/wave-orchestrator/retry-control.mjs +22 -2
- package/scripts/wave-orchestrator/{launcher-retry.mjs → retry-engine.mjs} +352 -18
- package/scripts/wave-orchestrator/role-helpers.mjs +124 -1
- package/scripts/wave-orchestrator/{launcher-supervisor.mjs → session-supervisor.mjs} +178 -103
- package/scripts/wave-orchestrator/shared.mjs +2 -0
- package/scripts/wave-orchestrator/skills.mjs +1 -0
- package/scripts/wave-orchestrator/task-entity.mjs +65 -45
- package/scripts/wave-orchestrator/traces.mjs +10 -1
- package/scripts/wave-orchestrator/wave-files.mjs +96 -10
- package/scripts/wave-orchestrator/wave-state-reducer.mjs +76 -12
- package/skills/README.md +7 -0
- package/skills/role-design/SKILL.md +50 -0
- package/skills/role-design/skill.json +36 -0
- package/skills/tui-design/SKILL.md +77 -0
- package/skills/tui-design/references/tui-design.md +259 -0
- package/skills/tui-design/skill.json +36 -0
- 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",
|