sisyphi 1.1.25 → 1.1.27
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 +35 -35
- package/deploy/aws/main.tf +1 -1
- package/deploy/aws/variables.tf +1 -1
- package/deploy/aws/versions.tf +1 -1
- package/deploy/hetzner/variables.tf +1 -1
- package/deploy/hetzner/versions.tf +1 -1
- package/deploy/shared/cloud-init.yaml.tpl +1 -1
- package/dist/cli.js +619 -200
- package/dist/cli.js.map +1 -1
- package/dist/daemon.js +23 -11
- package/dist/daemon.js.map +1 -1
- package/dist/deploy/aws/main.tf +1 -1
- package/dist/deploy/aws/variables.tf +1 -1
- package/dist/deploy/aws/versions.tf +1 -1
- package/dist/deploy/hetzner/variables.tf +1 -1
- package/dist/deploy/hetzner/versions.tf +1 -1
- package/dist/deploy/shared/cloud-init.yaml.tpl +1 -1
- package/dist/templates/agent-plugin/agents/explore.md +2 -2
- package/dist/templates/agent-plugin/agents/implementor.md +2 -2
- package/dist/templates/agent-plugin/agents/operator.md +3 -3
- package/dist/templates/agent-plugin/agents/plan.md +2 -2
- package/dist/templates/agent-plugin/agents/problem.md +8 -8
- package/dist/templates/agent-plugin/agents/review-plan/CLAUDE.md +1 -1
- package/dist/templates/agent-plugin/agents/spec/requirements-writer.md +1 -1
- package/dist/templates/agent-plugin/agents/spec.md +19 -19
- package/dist/templates/agent-plugin/skills/humanloop/SKILL.md +7 -7
- package/dist/templates/agent-plugin/skills/perspective-fanout/SKILL.md +2 -2
- package/dist/templates/agent-plugin/skills/problem-plateau-breakers/SKILL.md +2 -2
- package/dist/templates/agent-suffix.md +3 -3
- package/dist/templates/dashboard-claude.md +13 -13
- package/dist/templates/orchestrator-base.md +13 -13
- package/dist/templates/orchestrator-completion.md +11 -11
- package/dist/templates/orchestrator-discovery.md +5 -5
- package/dist/templates/orchestrator-impl.md +8 -8
- package/dist/templates/orchestrator-planning.md +6 -6
- package/dist/templates/orchestrator-plugin/commands/sisyphus/scratch.md +1 -1
- package/dist/templates/orchestrator-plugin/commands/sisyphus/strategize.md +2 -2
- package/dist/templates/orchestrator-plugin/skills/humanloop/SKILL.md +9 -9
- package/dist/templates/orchestrator-plugin/skills/orchestration/CLAUDE.md +1 -1
- package/dist/templates/orchestrator-plugin/skills/orchestration/SKILL.md +1 -1
- package/dist/templates/orchestrator-plugin/skills/orchestration/strategy.md +4 -4
- package/dist/templates/orchestrator-plugin/skills/orchestration/task-patterns.md +2 -2
- package/dist/templates/orchestrator-plugin/skills/orchestration/workflow-examples.md +1 -1
- package/dist/templates/orchestrator-validation.md +5 -5
- package/dist/templates/termrender-haiku-system.md +1 -1
- package/dist/tui.js +8 -8
- package/dist/tui.js.map +1 -1
- package/package.json +2 -1
- package/templates/agent-plugin/agents/explore.md +2 -2
- package/templates/agent-plugin/agents/implementor.md +2 -2
- package/templates/agent-plugin/agents/operator.md +3 -3
- package/templates/agent-plugin/agents/plan.md +2 -2
- package/templates/agent-plugin/agents/problem.md +8 -8
- package/templates/agent-plugin/agents/review-plan/CLAUDE.md +1 -1
- package/templates/agent-plugin/agents/spec/requirements-writer.md +1 -1
- package/templates/agent-plugin/agents/spec.md +19 -19
- package/templates/agent-plugin/skills/humanloop/SKILL.md +7 -7
- package/templates/agent-plugin/skills/perspective-fanout/SKILL.md +2 -2
- package/templates/agent-plugin/skills/problem-plateau-breakers/SKILL.md +2 -2
- package/templates/agent-suffix.md +3 -3
- package/templates/dashboard-claude.md +13 -13
- package/templates/orchestrator-base.md +13 -13
- package/templates/orchestrator-completion.md +11 -11
- package/templates/orchestrator-discovery.md +5 -5
- package/templates/orchestrator-impl.md +8 -8
- package/templates/orchestrator-planning.md +6 -6
- package/templates/orchestrator-plugin/commands/sisyphus/scratch.md +1 -1
- package/templates/orchestrator-plugin/commands/sisyphus/strategize.md +2 -2
- package/templates/orchestrator-plugin/skills/humanloop/SKILL.md +9 -9
- package/templates/orchestrator-plugin/skills/orchestration/CLAUDE.md +1 -1
- package/templates/orchestrator-plugin/skills/orchestration/SKILL.md +1 -1
- package/templates/orchestrator-plugin/skills/orchestration/strategy.md +4 -4
- package/templates/orchestrator-plugin/skills/orchestration/task-patterns.md +2 -2
- package/templates/orchestrator-plugin/skills/orchestration/workflow-examples.md +1 -1
- package/templates/orchestrator-validation.md +5 -5
- package/templates/termrender-haiku-system.md +1 -1
|
@@ -38,26 +38,26 @@ The user already knows what they asked for — don't recap the goal. Focus on wh
|
|
|
38
38
|
|
|
39
39
|
Use tables, diagrams, and structured markdown freely — the deck below renders the file via `bodyPath`, so termrender directives are styled in the user's resolution view. Keep it tight but visually clear. If the session was straightforward, the summary should be short. Save the detail for when the user asks.
|
|
40
40
|
|
|
41
|
-
## Ask for Sign-off via `
|
|
41
|
+
## Ask for Sign-off via `sis ask`
|
|
42
42
|
|
|
43
|
-
Submit a structured deck pointing at `completion-summary.md` via `bodyPath`. The CLI blocks until the user resolves the ask in their dashboard inbox, then prints the JSON response. **NEVER call `
|
|
43
|
+
Submit a structured deck pointing at `completion-summary.md` via `bodyPath`. The CLI blocks until the user resolves the ask in their dashboard inbox, then prints the JSON response. **NEVER call `sis session complete` until the user picks `approve`.**
|
|
44
44
|
|
|
45
45
|
Read the `humanloop` skill for option design and submission flow. The completion deck is the canonical four-branch sign-off — `approve` / `minor` / `moderate` / `major` — each routes to a different recovery (see "Handle Feedback" below). Use `bodyPath: "../completion-summary.md"` so the user reviews the rendered summary inside the deck.
|
|
46
46
|
|
|
47
47
|
```bash
|
|
48
|
-
result=$(
|
|
48
|
+
result=$(sis ask "$deck")
|
|
49
49
|
choice=$(echo "$result" | jq -r '.responses[0].selectedOptionId')
|
|
50
50
|
notes=$(echo "$result" | jq -r '.responses[0].freetext // ""')
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
Orchestrator blocks here — `
|
|
53
|
+
Orchestrator blocks here — `sis ask` waits internally; do not add any extra "wait for user" step. See `sis ask -h` for CLI syntax.
|
|
54
54
|
|
|
55
55
|
## Handle Feedback
|
|
56
56
|
|
|
57
57
|
Branch on `$choice`:
|
|
58
58
|
|
|
59
59
|
### `approve` — finalize
|
|
60
|
-
Call `
|
|
60
|
+
Call `sis session complete` (see Finalizing below). `$notes` may still contain a small follow-up — fold into the report if relevant.
|
|
61
61
|
|
|
62
62
|
### `minor` — typo, rename, small fix, cosmetic tweak
|
|
63
63
|
Fix it yourself directly using `$notes` as the spec. Then update `completion-summary.md` to reflect the fix and **submit a fresh deck** (new tempfile path, same shape) to re-ask. Multiple rounds of minor fixes are fine — stay in the loop.
|
|
@@ -72,7 +72,7 @@ These need agents. Use `$notes` to capture the items raised, then:
|
|
|
72
72
|
3. Yield back to implementation (or planning if the fix requires design):
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
|
-
|
|
75
|
+
sis orch yield --mode implementation --prompt "User review surfaced issues to fix: $notes. See roadmap.md for details."
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
If a single deck round surfaces multiple moderate items, capture them all in `$notes` (the freetext field) — don't ask again in the same cycle to collect more.
|
|
@@ -85,7 +85,7 @@ These change the goal itself:
|
|
|
85
85
|
3. Yield to discovery mode:
|
|
86
86
|
|
|
87
87
|
```bash
|
|
88
|
-
|
|
88
|
+
sis orch yield --mode discovery --prompt "User requested significant scope change: $notes. Goal and strategy updated — re-evaluate approach."
|
|
89
89
|
```
|
|
90
90
|
|
|
91
91
|
## Context Management
|
|
@@ -93,7 +93,7 @@ sisyphus orch yield --mode discovery --prompt "User requested significant scope
|
|
|
93
93
|
If the conversation runs long (many rounds of minor fixes, extended discussion), yield back to completion mode with a progress summary so you get fresh context:
|
|
94
94
|
|
|
95
95
|
```bash
|
|
96
|
-
|
|
96
|
+
sis orch yield --mode completion --prompt "User review in progress. Fixed: [list]. Still discussing: [list]. Awaiting final confirmation."
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
## Finalizing
|
|
@@ -101,7 +101,7 @@ sisyphus orch yield --mode completion --prompt "User review in progress. Fixed:
|
|
|
101
101
|
Only after `$choice == "approve"` — call:
|
|
102
102
|
|
|
103
103
|
```bash
|
|
104
|
-
|
|
104
|
+
sis session complete --report "summary of what was accomplished"
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
The report should be a concise summary suitable for session history. Reference the full completion report you presented if needed.
|
|
@@ -109,6 +109,6 @@ The report should be a concise summary suitable for session history. Reference t
|
|
|
109
109
|
## Completion CLI
|
|
110
110
|
|
|
111
111
|
```bash
|
|
112
|
-
|
|
113
|
-
|
|
112
|
+
sis session complete --report "summary of what was accomplished" # finalize session (only after user confirms)
|
|
113
|
+
sis session continue "new instructions" # reactivate a completed session
|
|
114
114
|
```
|
|
@@ -41,7 +41,7 @@ cat > "$decomp_deck" <<'EOF'
|
|
|
41
41
|
}]
|
|
42
42
|
}
|
|
43
43
|
EOF
|
|
44
|
-
|
|
44
|
+
sis ask "$decomp_deck"
|
|
45
45
|
```
|
|
46
46
|
|
|
47
47
|
If the user picks one, record the others in `goal.md` under a "Known follow-ups" section, then proceed with the chosen one through the rest of discovery.
|
|
@@ -116,7 +116,7 @@ cat > "$confirm_deck" <<'EOF'
|
|
|
116
116
|
}]
|
|
117
117
|
}
|
|
118
118
|
EOF
|
|
119
|
-
|
|
119
|
+
sis ask "$confirm_deck"
|
|
120
120
|
```
|
|
121
121
|
|
|
122
122
|
**Branching:**
|
|
@@ -140,7 +140,7 @@ Pick the tier by **novelty of behavior**, not file count:
|
|
|
140
140
|
- New subsystem / new protocol / cross-domain orchestration: **HIGH**
|
|
141
141
|
- Novel concurrency / new security boundary / multi-system contract: **XHIGH**
|
|
142
142
|
|
|
143
|
-
Apply the tier with `
|
|
143
|
+
Apply the tier with `sis session effort <low|medium|high|xhigh>` — this filters the strategy skill, mode templates, and agent prompts on subsequent cycles so you only see the guidance that applies. The user can override at any point.
|
|
144
144
|
|
|
145
145
|
If you change the tier mid-session because scope shifted, the next cycle's prompts adjust automatically; don't manually patch `strategy.md` to match — re-invoke the strategy skill.
|
|
146
146
|
|
|
@@ -171,13 +171,13 @@ After writing `goal.md` and `strategy.md`, initialize `roadmap.md`. Populate Cur
|
|
|
171
171
|
Once `goal.md`, `strategy.md`, and `roadmap.md` are written and the goal is confirmed:
|
|
172
172
|
|
|
173
173
|
```bash
|
|
174
|
-
|
|
174
|
+
sis orch yield --mode planning --prompt "Discovery complete — goal.md, strategy.md, and roadmap.md initialized. Begin first stage."
|
|
175
175
|
```
|
|
176
176
|
|
|
177
177
|
If you're still working on goal clarity (waiting for problem agent, re-entering after bifurcation, iterating with user), stay in discovery:
|
|
178
178
|
|
|
179
179
|
```bash
|
|
180
|
-
|
|
180
|
+
sis orch yield --mode discovery --prompt "Goal still being refined — [what's happening, what's next]."
|
|
181
181
|
```
|
|
182
182
|
|
|
183
183
|
</transition>
|
|
@@ -103,7 +103,7 @@ A clean report ("No concerns") is a valid and common outcome. When you get one,
|
|
|
103
103
|
Aggregate reviewer findings. Spawn fix agents and **point them at the review report** — don't rewrite findings as line-by-line instructions. You triage (skip false positives, note architectural constraints) — they implement.
|
|
104
104
|
|
|
105
105
|
```bash
|
|
106
|
-
|
|
106
|
+
sis agent spawn --name "fix-review-issues" --agent-type sisyphus:implement \
|
|
107
107
|
"Fix the issues in reports/agent-003-final.md. Skip item #5 (false positive). Run type-check after."
|
|
108
108
|
```
|
|
109
109
|
|
|
@@ -121,7 +121,7 @@ This is a deliberate choice, not an oversight. Re-reviewing has two failure mode
|
|
|
121
121
|
If the fix agent's own report flags that it hit unexpected complexity or introduced something it wasn't comfortable with, address that specifically — read the code, decide, don't spawn another reviewer. If the single review pass surfaces findings that suggest an architectural problem rather than code-level issues, backtrack to planning instead of patching:
|
|
122
122
|
|
|
123
123
|
```bash
|
|
124
|
-
|
|
124
|
+
sis orch yield --mode planning --prompt "Review surfaced architectural issue: [summary]. Needs replan, not fixes."
|
|
125
125
|
```
|
|
126
126
|
|
|
127
127
|
Real regressions from fix agents are caught by e2e validation (next step), not by a second review pass.
|
|
@@ -146,7 +146,7 @@ If the project lacks validation tooling, **create it** — a smoke-test script,
|
|
|
146
146
|
**Phase-scoped plans:** if the current plan only covers one phase of a multi-phase feature (the plan-lead convention when `strategy.md` has multiple phases), yield back to planning after this phase's validation passes — not to validation mode. Plan files live under `context/{plan-lead-agent-id}/`; use the paths the plan lead reported when dispatching implement agents.
|
|
147
147
|
|
|
148
148
|
```bash
|
|
149
|
-
|
|
149
|
+
sis orch yield --mode planning --prompt "Phase N validated. Plan phase N+1 per strategy.md."
|
|
150
150
|
```
|
|
151
151
|
|
|
152
152
|
The next cycle's plan lead incorporates what you learned here before committing phase N+1 to paper.
|
|
@@ -154,7 +154,7 @@ The next cycle's plan lead incorporates what you learned here before committing
|
|
|
154
154
|
When all implementation phases are complete (the final phase has been planned, implemented, and stage-validated), transition to validation mode for the comprehensive final pass:
|
|
155
155
|
|
|
156
156
|
```bash
|
|
157
|
-
|
|
157
|
+
sis orch yield --mode validation --prompt "All stages implemented — validate against context/e2e-recipe.md"
|
|
158
158
|
```
|
|
159
159
|
|
|
160
160
|
Validation mode shifts the orchestrator's entire focus to proving the feature works. Stage-level validation during implementation catches issues early; the final validation pass proves the whole thing holds together.
|
|
@@ -166,7 +166,7 @@ Validation mode shifts the orchestrator's entire focus to proving the feature wo
|
|
|
166
166
|
If the approach is wrong mid-implementation, don't keep pushing. Return to planning:
|
|
167
167
|
|
|
168
168
|
```bash
|
|
169
|
-
|
|
169
|
+
sis orch yield --mode planning --prompt "Discovered X mid-implementation — approach needs rework. See cycle log and roadmap.md."
|
|
170
170
|
```
|
|
171
171
|
|
|
172
172
|
Concrete triggers:
|
|
@@ -183,9 +183,9 @@ Update roadmap.md to reflect you're back in an earlier phase. Log the discovery
|
|
|
183
183
|
## Implementation CLI
|
|
184
184
|
|
|
185
185
|
```bash
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
186
|
+
sis session task "revised goal" # update the session goal mid-flight
|
|
187
|
+
sis agent restart <agentId> # respawn a failed/killed agent in a new pane
|
|
188
|
+
sis session rollback <sessionId> <cycle> # rewind state to a prior cycle boundary
|
|
189
189
|
```
|
|
190
190
|
|
|
191
191
|
</impl-cli>
|
|
@@ -113,7 +113,7 @@ plan phase 1 → implement phase 1 → validate phase 1 → plan phase 2 → imp
|
|
|
113
113
|
After a phase's implementation passes e2e validation, yield back to planning mode for the next phase:
|
|
114
114
|
|
|
115
115
|
```bash
|
|
116
|
-
|
|
116
|
+
sis orch yield --mode planning --prompt "Phase N validated. Plan phase N+1 per strategy.md."
|
|
117
117
|
```
|
|
118
118
|
|
|
119
119
|
When spawning the phase-scoped plan lead, name in the prompt:
|
|
@@ -140,9 +140,9 @@ Signs you need phased development: multiple unfamiliar subsystems, the task span
|
|
|
140
140
|
|
|
141
141
|
Before implementation begins, determine how to concretely verify the change works end-to-end. This is the single most common failure mode: agents report success but nothing actually works.
|
|
142
142
|
|
|
143
|
-
If you cannot determine a concrete verification method, **ask the user via `
|
|
143
|
+
If you cannot determine a concrete verification method, **ask the user via `sis ask`**. Propose 2-4 candidate verification approaches as options (not an open-ended question). Do not proceed to implementation without a verification plan.
|
|
144
144
|
|
|
145
|
-
Before authoring the deck, **read the `humanloop` skill** for option-design guidance and submission flow. Ground options in this feature's actual surface (manual UI? integration test? log inspection? metric delta?) — not generic placeholders. `
|
|
145
|
+
Before authoring the deck, **read the `humanloop` skill** for option-design guidance and submission flow. Ground options in this feature's actual surface (manual UI? integration test? log inspection? metric delta?) — not generic placeholders. `sis ask -h` covers CLI syntax.
|
|
146
146
|
|
|
147
147
|
Write the recipe to `context/e2e-recipe.md` with setup steps, exact commands or interactions to verify, and what success looks like. Make it executable, not aspirational. Implementation agents and validation agents both reference this file.
|
|
148
148
|
|
|
@@ -153,7 +153,7 @@ Write the recipe to `context/e2e-recipe.md` with setup steps, exact commands or
|
|
|
153
153
|
## Planning CLI
|
|
154
154
|
|
|
155
155
|
```bash
|
|
156
|
-
|
|
156
|
+
sis admin requirements --export --session-id <id> # render requirements.json → requirements.md (no LLM tokens)
|
|
157
157
|
```
|
|
158
158
|
|
|
159
159
|
The requirements export renders a `requirements.json` to markdown without consuming LLM tokens.
|
|
@@ -165,7 +165,7 @@ The requirements export renders a `requirements.json` to markdown without consum
|
|
|
165
165
|
When you have enough understanding, a reviewed plan, and a verification recipe — transition explicitly:
|
|
166
166
|
|
|
167
167
|
```bash
|
|
168
|
-
|
|
168
|
+
sis orch yield --mode implementation --prompt "Begin implementation — see roadmap.md and the plan file path the plan lead reported (under context/{plan-lead-agent-id}/)."
|
|
169
169
|
```
|
|
170
170
|
|
|
171
171
|
The `--mode implementation` flag loads implementation-phase guidance for the next cycle.
|
|
@@ -173,7 +173,7 @@ The `--mode implementation` flag loads implementation-phase guidance for the nex
|
|
|
173
173
|
After implementation is complete, transition to validation mode to prove the feature works:
|
|
174
174
|
|
|
175
175
|
```bash
|
|
176
|
-
|
|
176
|
+
sis orch yield --mode validation --prompt "Implementation complete — validate against context/e2e-recipe.md"
|
|
177
177
|
```
|
|
178
178
|
|
|
179
179
|
</transition>
|
|
@@ -11,7 +11,7 @@ The user wants to spin up a standalone Claude Code session — outside sisyphus
|
|
|
11
11
|
Run the following in bash:
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
|
|
14
|
+
sis admin scratch "$ARGUMENTS"
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
This opens a new tmux window in the home session with `claude --dangerously-skip-permissions`. Do not track it, wait for it, or reference it in the roadmap. It's fire-and-forget.
|
|
@@ -10,10 +10,10 @@ The user wants to redirect this session's strategy.
|
|
|
10
10
|
|
|
11
11
|
## Steps
|
|
12
12
|
|
|
13
|
-
1. If the session is completed (`
|
|
13
|
+
1. If the session is completed (`sis status`), reactivate it with `sis session continue`.
|
|
14
14
|
2. Invoke the **strategy skill** to annotate `strategy.md` with the pivot — what changed, new focus, which existing artifacts still apply. Don't rewrite the whole strategy.
|
|
15
15
|
3. Yield to discovery mode:
|
|
16
16
|
```bash
|
|
17
|
-
|
|
17
|
+
sis orch yield --mode discovery --prompt "<concise description of the new direction>"
|
|
18
18
|
```
|
|
19
19
|
This respawns a fresh orchestrator that will re-evaluate the goal, stages, and approach.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: humanloop
|
|
3
3
|
description: >
|
|
4
|
-
Read before calling `
|
|
4
|
+
Read before calling `sis ask`. Triggers when surfacing multiple questions or decisions to the user, presenting work for review/sign-off, or proposing concrete alternatives. Covers when a deck beats chat, how to design options as real forks the user can pick between, how to bundle related questions into one deck, and how to invoke synchronously so the orchestrator's process blocks until the user answers.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Talking to the user via decks
|
|
8
8
|
|
|
9
|
-
`
|
|
9
|
+
`sis ask` posts a structured deck of questions to the user's dashboard inbox. They walk through it on their own time and you read structured JSON back. Use it instead of dumping a wall of questions into chat.
|
|
10
10
|
|
|
11
|
-
This skill covers **what to put in a deck** and **how to invoke it**. Run `
|
|
11
|
+
This skill covers **what to put in a deck** and **how to invoke it**. Run `sis ask -h` for the CLI shape (file path, `--session`, the `poll` and `peek` subcommands).
|
|
12
12
|
|
|
13
13
|
## Reach for a deck when
|
|
14
14
|
|
|
@@ -25,19 +25,19 @@ This skill covers **what to put in a deck** and **how to invoke it**. Run `sisyp
|
|
|
25
25
|
|
|
26
26
|
## How to invoke
|
|
27
27
|
|
|
28
|
-
**Run `
|
|
28
|
+
**Run `sis ask` in the foreground — let the Bash tool block.** The CLI waits internally for the user to resolve the deck (potentially 10+ minutes). Your pane stays alive in tmux for the duration; the daemon will not respawn you while a tool call is in flight. When the user answers, the bash returns stdout and you parse it inline.
|
|
29
29
|
|
|
30
30
|
```bash
|
|
31
|
-
result=$(
|
|
31
|
+
result=$(sis ask "$deck")
|
|
32
32
|
choice=$(echo "$result" | jq -r '.responses[0].selectedOptionId')
|
|
33
33
|
notes=$(echo "$result" | jq -r '.responses[0].freetext // ""')
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
**Do not `run_in_background` and yield** — yielding kills your pane and any backgrounded bash with it; the next cycle's fresh orchestrator can only peek the on-disk deck (`
|
|
36
|
+
**Do not `run_in_background` and yield** — yielding kills your pane and any backgrounded bash with it; the next cycle's fresh orchestrator can only peek the on-disk deck (`sis ask peek`) and yield again, producing a polling loop. The daemon now refuses `sis orch yield` while a deck owned by orchestrator is pending; the supported pattern is foreground.
|
|
37
37
|
|
|
38
38
|
Stdout on completion is one line of JSON: `{responses: [{id, selectedOptionId?, freetext?}, ...], completedAt}`. Branch on each response by its interaction `id`.
|
|
39
39
|
|
|
40
|
-
If you respawn mid-wait and find a pending deck on disk (e.g. after a daemon restart that orphaned the prior bash), block on it with `
|
|
40
|
+
If you respawn mid-wait and find a pending deck on disk (e.g. after a daemon restart that orphaned the prior bash), block on it with `sis ask poll <askId>` to re-attach. `sis ask peek <askId>` is non-blocking and reserved for respawn-recovery diagnostics. See `sis ask -h`.
|
|
41
41
|
|
|
42
42
|
## Designing interactions
|
|
43
43
|
|
|
@@ -137,7 +137,7 @@ cat > "$deck" <<'EOF'
|
|
|
137
137
|
]
|
|
138
138
|
}
|
|
139
139
|
EOF
|
|
140
|
-
# Then invoke `
|
|
140
|
+
# Then invoke `sis ask "$deck"` synchronously (foreground bash) — blocks until answered.
|
|
141
141
|
# Each interaction returns its own selectedOptionId / freetext in output.responses[], indexed by id.
|
|
142
142
|
```
|
|
143
143
|
|
|
@@ -147,4 +147,4 @@ EOF
|
|
|
147
147
|
- `kind` is an enum: `notify` | `validation` | `decision` | `context` | `error`. No other values accepted (see the table above for which to pick).
|
|
148
148
|
- `bodyPath` points at a markdown file instead of inlining the body in JSON. The path is resolved **relative to the deck JSON's directory** and must stay inside it (no `..`, no symlinks out, no absolute paths pointing elsewhere). Practical pattern: write the deck JSON next to its body file — e.g. both inside `$SISYPHUS_SESSION_DIR/context/` — and use a basename like `"completion-summary.md"`. Mutually exclusive with `body`.
|
|
149
149
|
- On completion, stdout is one line of JSON: `{responses, completedAt}`. Parse `responses[]` and dispatch on each interaction's `id`.
|
|
150
|
-
- See `
|
|
150
|
+
- See `sis ask -h` for the full CLI surface.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
- `
|
|
1
|
+
- `sis orch yield --mode discovery`, `--mode validation`, etc. must be explicit at mode-transition cycles. Omitting silently defaults to `implementation` mode, skipping guardrails the subsequent cycle expects.
|
|
@@ -22,7 +22,7 @@ How to structure sisyphus sessions for common task types. This skill helps the o
|
|
|
22
22
|
|
|
23
23
|
## Agent Types
|
|
24
24
|
|
|
25
|
-
Available agent types are listed under **Available Agent Types** in your prompt. Use `--agent-type` with `
|
|
25
|
+
Available agent types are listed under **Available Agent Types** in your prompt. Use `--agent-type` with `sis agent spawn`.
|
|
26
26
|
|
|
27
27
|
For task breakdown patterns per workflow type, see [task-patterns.md](task-patterns.md).
|
|
28
28
|
For end-to-end workflow examples, see [workflow-examples.md](workflow-examples.md).
|
|
@@ -52,7 +52,7 @@ When you're tempted to name a stage after a code area, that signals you're sketc
|
|
|
52
52
|
|
|
53
53
|
## Default Pipeline Shape
|
|
54
54
|
|
|
55
|
-
The session's effort tier dictates the default pipeline. **Use this shape unless the problem explicitly demands more or less.** The user can change tiers via `
|
|
55
|
+
The session's effort tier dictates the default pipeline. **Use this shape unless the problem explicitly demands more or less.** The user can change tiers via `sis session effort <low|medium|high|xhigh>`.
|
|
56
56
|
|
|
57
57
|
<!--EFFORT:LOW-->
|
|
58
58
|
**Pipeline:** `plan → implement → validate`
|
|
@@ -72,7 +72,7 @@ Add `sisyphus:review-plan` only when the plan covers multi-domain integration. A
|
|
|
72
72
|
`sisyphus:review-plan` runs after the plan is drafted. `sisyphus:spec` spawns whenever a feature adds user-visible behavior. `sisyphus:problem` spawns when the goal is nebulous. Append `+ test-spec` to the planning stage **only when the user's initial prompt or goal.md explicitly requested tests** (e.g. "with tests", "TDD", "include unit tests", "test coverage"); silence is a "no." When justified, `sisyphus:test-spec` spawns in parallel with the high-level plan at Cycle 2, not after implementation — post-implementation test-spec silently describes what the code does rather than what it should do.
|
|
73
73
|
<!--/EFFORT-->
|
|
74
74
|
|
|
75
|
-
**Re-evaluate the tier when scope shifts mid-session.** A MEDIUM feature that uncovers a new subsystem may have crossed into HIGH; a HIGH feature whose scope was narrowed may have dropped to MEDIUM. Re-run `
|
|
75
|
+
**Re-evaluate the tier when scope shifts mid-session.** A MEDIUM feature that uncovers a new subsystem may have crossed into HIGH; a HIGH feature whose scope was narrowed may have dropped to MEDIUM. Re-run `sis session effort` and re-invoke this skill rather than continuing under the old tier's pipeline.
|
|
76
76
|
|
|
77
77
|
## Choosing a Different Shape
|
|
78
78
|
|
|
@@ -146,8 +146,8 @@ When the work in flight reveals the strategy itself is off, escalate up this lad
|
|
|
146
146
|
|
|
147
147
|
1. **Revise in place.** Stage detail evolved but the pipeline shape holds. Edit `strategy.md` and `roadmap.md`; continue.
|
|
148
148
|
2. **`sisyphus:strategize`.** Approach is wrong but artifacts (specs, explorations, reports) still apply. Annotates the pivot into `strategy.md` and yields `--mode discovery` with a fresh orchestrator.
|
|
149
|
-
3. **`
|
|
150
|
-
4. **`
|
|
149
|
+
3. **`sis session clone <goal>`.** The session is actually two (or more) independent projects. Forks scope into a new top-level session; update `goal.md`/`roadmap.md` here to drop what was cloned.
|
|
150
|
+
4. **`sis session rollback <sessionId> <cycle>`.** A specific cycle introduced state to discard. Rewinds and pauses the session — cycles after the target are lost. Last resort; the others preserve history.
|
|
151
151
|
|
|
152
152
|
When the user is the source of the change, update `goal.md` first — strategy revision is downstream of goal.
|
|
153
153
|
|
|
@@ -97,7 +97,7 @@ Note: critique and validation are embedded between implementation phases, not de
|
|
|
97
97
|
- **Cycle 5**: Spawn `sisyphus:implement` for Phase 2. Phase 1 is types — low risk, doesn't need its own validation. Yield.
|
|
98
98
|
- **Cycle 6**: Spawn `sisyphus:review` for critique of phases 1-2. This is the checkpoint before integration builds on top. Yield.
|
|
99
99
|
- **Cycle 7**: Address critique findings + spawn `sisyphus:implement` for Phase 3. Yield.
|
|
100
|
-
- **Cycle 8**: `
|
|
100
|
+
- **Cycle 8**: `sis orch yield --mode validation` for e2e smoketest. Validation mode proves the feature works — operator for UI, evidence for every claim.
|
|
101
101
|
- **Cycle 9**: Address validation failures (back to `--mode implementation`) or complete.
|
|
102
102
|
|
|
103
103
|
### Failure modes
|
|
@@ -153,7 +153,7 @@ Note: verification checkpoints are embedded in the stage outline, not deferred t
|
|
|
153
153
|
- **Cycle 7**: Address critique findings. Spawn `sisyphus:implement` for stage 3. Yield.
|
|
154
154
|
- **Cycle 8**: Spawn `sisyphus:implement` for stage 4. Spawn `sisyphus:review` to critique stage 3 in parallel. Yield.
|
|
155
155
|
- **Cycle 9**: Spawn `sisyphus:validate` for stages 3-4 — core logic checkpoint before integration. Address stage 3 critique. Yield.
|
|
156
|
-
- **Cycle 10+**: Implement integration stage. Final review. Then `
|
|
156
|
+
- **Cycle 10+**: Implement integration stage. Final review. Then `sis orch yield --mode validation` for comprehensive e2e proof.
|
|
157
157
|
|
|
158
158
|
### Failure modes
|
|
159
159
|
- **Detail-plan agent can't produce quality output**: The stage is still too large. Break it into sub-stages in the outline and detail-plan each sub-stage individually.
|
|
@@ -111,7 +111,7 @@ Follows Feature Build Large pattern:
|
|
|
111
111
|
Cycle 5: critique stages 1-2 (foundation review before worker builds on it)
|
|
112
112
|
Cycle 6: address critique + implement stage 3
|
|
113
113
|
Cycle 7: implement stage 4 (integration + retry); validate stages 3-4
|
|
114
|
-
Cycle 8:
|
|
114
|
+
Cycle 8: sis orch yield --mode validation — e2e: enqueue job, kill server, restart,
|
|
115
115
|
confirm job ran exactly once
|
|
116
116
|
Cycle 9: final review agent; complete
|
|
117
117
|
```
|
|
@@ -21,7 +21,7 @@ If the recipe doesn't exist or doesn't cover what was implemented:
|
|
|
21
21
|
If you genuinely cannot determine how to verify the feature — transition back to planning:
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
|
|
24
|
+
sis orch yield --mode planning --prompt "Cannot determine verification method for [feature] — need to establish e2e recipe"
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
## The Operator Is Not Optional
|
|
@@ -76,7 +76,7 @@ If a report says "all checks pass" but the evidence is thin or missing — that'
|
|
|
76
76
|
When validation surfaces real bugs:
|
|
77
77
|
|
|
78
78
|
```bash
|
|
79
|
-
|
|
79
|
+
sis orch yield --mode implementation --prompt "Validation failed — [specific failures]. See reports/agent-XXX-final.md for details."
|
|
80
80
|
```
|
|
81
81
|
|
|
82
82
|
Log what failed and why before yielding. The implementation cycle needs clear context on what to fix.
|
|
@@ -84,7 +84,7 @@ Log what failed and why before yielding. The implementation cycle needs clear co
|
|
|
84
84
|
When validation reveals that the approach itself is flawed — not bugs, but architectural issues or fundamental misunderstandings:
|
|
85
85
|
|
|
86
86
|
```bash
|
|
87
|
-
|
|
87
|
+
sis orch yield --mode planning --prompt "Validation revealed [architectural issue] — approach needs rethinking. See cycle log."
|
|
88
88
|
```
|
|
89
89
|
|
|
90
90
|
**Do not attempt fixes in validation mode** beyond trivial issues (a missed import, a config typo). If the fix requires design decisions or touches multiple files, transition to implementation mode where the orchestrator has the right guidance for managing that work.
|
|
@@ -92,7 +92,7 @@ sisyphus orch yield --mode planning --prompt "Validation revealed [architectural
|
|
|
92
92
|
## Validation CLI
|
|
93
93
|
|
|
94
94
|
```bash
|
|
95
|
-
|
|
95
|
+
sis agent restart <agentId> # respawn a failed/killed validation agent
|
|
96
96
|
```
|
|
97
97
|
|
|
98
98
|
## Transition to Completion
|
|
@@ -100,7 +100,7 @@ sisyphus agent restart <agentId> # respawn a failed/kill
|
|
|
100
100
|
When all validation passes, yield to completion mode for user sign-off:
|
|
101
101
|
|
|
102
102
|
```bash
|
|
103
|
-
|
|
103
|
+
sis orch yield --mode completion --prompt "Validation passed — all recipe steps verified. Ready for user review."
|
|
104
104
|
```
|
|
105
105
|
|
|
106
106
|
Only yield when every recipe step has been executed with evidence of success. If the recipe was updated during validation, re-validate against the updated version.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Role
|
|
2
2
|
|
|
3
|
-
You generate dense, terminal-width termrender visuals for
|
|
3
|
+
You generate dense, terminal-width termrender visuals for `sis ask` questions.
|
|
4
4
|
Your output is exactly one `attach_visual` call with the final markdown.
|
|
5
5
|
Read code or files via `read_file` if needed. Do not speculate about file contents.
|
|
6
6
|
|
package/dist/tui.js
CHANGED
|
@@ -3603,7 +3603,7 @@ function rawSend(request, timeoutMs = 1e4) {
|
|
|
3603
3603
|
const timeout = setTimeout(() => {
|
|
3604
3604
|
socket.destroy();
|
|
3605
3605
|
reject(new Error(`Request timed out after ${(timeoutMs / 1e3).toFixed(0)}s. The daemon may be overloaded.
|
|
3606
|
-
Check:
|
|
3606
|
+
Check: sis admin doctor
|
|
3607
3607
|
Logs: tail -20 ~/.sisyphus/daemon.log`));
|
|
3608
3608
|
}, timeoutMs);
|
|
3609
3609
|
socket.on("connect", () => {
|
|
@@ -4728,7 +4728,7 @@ function handleLeaderAction(action, state2, actions) {
|
|
|
4728
4728
|
break;
|
|
4729
4729
|
}
|
|
4730
4730
|
try {
|
|
4731
|
-
actions.openShellPopup(state2.cwd, `
|
|
4731
|
+
actions.openShellPopup(state2.cwd, `sis session clone ${selectedSessionId}`);
|
|
4732
4732
|
} catch {
|
|
4733
4733
|
notify(state2, "Failed to open shell");
|
|
4734
4734
|
}
|
|
@@ -4736,7 +4736,7 @@ function handleLeaderAction(action, state2, actions) {
|
|
|
4736
4736
|
}
|
|
4737
4737
|
case "history": {
|
|
4738
4738
|
try {
|
|
4739
|
-
actions.openShellPopup(state2.cwd, "
|
|
4739
|
+
actions.openShellPopup(state2.cwd, "sis admin history");
|
|
4740
4740
|
} catch {
|
|
4741
4741
|
notify(state2, "Failed to open shell");
|
|
4742
4742
|
}
|
|
@@ -4744,7 +4744,7 @@ function handleLeaderAction(action, state2, actions) {
|
|
|
4744
4744
|
}
|
|
4745
4745
|
case "pick-session": {
|
|
4746
4746
|
try {
|
|
4747
|
-
actions.openShellPopup(state2.cwd, "
|
|
4747
|
+
actions.openShellPopup(state2.cwd, "sis pick-session");
|
|
4748
4748
|
} catch {
|
|
4749
4749
|
notify(state2, "Failed to open shell");
|
|
4750
4750
|
}
|
|
@@ -4752,7 +4752,7 @@ function handleLeaderAction(action, state2, actions) {
|
|
|
4752
4752
|
}
|
|
4753
4753
|
case "cycle-session": {
|
|
4754
4754
|
try {
|
|
4755
|
-
actions.openShellPopup(state2.cwd, "
|
|
4755
|
+
actions.openShellPopup(state2.cwd, "sis cycle");
|
|
4756
4756
|
} catch {
|
|
4757
4757
|
notify(state2, "Failed to open shell");
|
|
4758
4758
|
}
|
|
@@ -4760,7 +4760,7 @@ function handleLeaderAction(action, state2, actions) {
|
|
|
4760
4760
|
}
|
|
4761
4761
|
case "reconnect": {
|
|
4762
4762
|
try {
|
|
4763
|
-
actions.openShellPopup(state2.cwd, "
|
|
4763
|
+
actions.openShellPopup(state2.cwd, "sis session reconnect");
|
|
4764
4764
|
} catch {
|
|
4765
4765
|
notify(state2, "Failed to open shell");
|
|
4766
4766
|
}
|
|
@@ -4776,7 +4776,7 @@ function handleLeaderAction(action, state2, actions) {
|
|
|
4776
4776
|
}
|
|
4777
4777
|
case "show-status": {
|
|
4778
4778
|
try {
|
|
4779
|
-
actions.openShellPopup(state2.cwd, `
|
|
4779
|
+
actions.openShellPopup(state2.cwd, `sis status${selectedSessionId ? ` ${selectedSessionId}` : ""}`);
|
|
4780
4780
|
} catch {
|
|
4781
4781
|
notify(state2, "Failed to open status");
|
|
4782
4782
|
}
|
|
@@ -5506,7 +5506,7 @@ function openCompanionPane(cwd2) {
|
|
|
5506
5506
|
} catch {
|
|
5507
5507
|
template = `You are a Sisyphus dashboard companion. Help the user manage multi-agent sessions.
|
|
5508
5508
|
Project: ${cwd2}
|
|
5509
|
-
Run \`
|
|
5509
|
+
Run \`sis list\` and \`sis status\` to see current state.`;
|
|
5510
5510
|
}
|
|
5511
5511
|
const rendered = template.replace(/\{\{CWD\}\}/g, cwd2);
|
|
5512
5512
|
const promptPath = join12(globalDir(), "dashboard-companion-prompt.md");
|