sisyphi 0.1.17 → 0.1.21
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 +37 -180
- package/dist/cli.js +40 -28
- package/dist/cli.js.map +1 -1
- package/dist/daemon.js +166 -92
- package/dist/daemon.js.map +1 -1
- package/dist/templates/agent-plugin/agents/review-plan.md +94 -68
- package/dist/templates/agent-plugin/agents/spec-draft.md +27 -51
- package/dist/templates/agent-plugin/hooks/hooks.json +3 -0
- package/dist/templates/agent-plugin/hooks/intercept-send-message.sh +11 -0
- package/dist/templates/agent-suffix.md +7 -9
- package/dist/templates/orchestrator-plugin/hooks/hooks.json +0 -10
- package/dist/templates/orchestrator-plugin/scripts/block-task.sh +8 -1
- package/dist/templates/orchestrator.md +22 -18
- package/package.json +1 -1
- package/templates/agent-plugin/agents/review-plan.md +94 -68
- package/templates/agent-plugin/agents/spec-draft.md +27 -51
- package/templates/agent-plugin/hooks/hooks.json +3 -0
- package/templates/agent-plugin/hooks/intercept-send-message.sh +11 -0
- package/templates/agent-suffix.md +7 -9
- package/templates/orchestrator-plugin/hooks/hooks.json +0 -10
- package/templates/orchestrator-plugin/scripts/block-task.sh +8 -1
- package/templates/orchestrator.md +22 -18
- package/dist/templates/orchestrator-plugin/scripts/stop-suggest.sh +0 -12
- package/templates/orchestrator-plugin/scripts/stop-suggest.sh +0 -12
|
@@ -1,73 +1,49 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spec-draft
|
|
3
|
-
description:
|
|
3
|
+
description: Explores codebase constraints and patterns, proposes a lightweight spec, then asks clarifying questions before writing anything. Spec is only saved after user sign-off.
|
|
4
4
|
model: opus
|
|
5
5
|
color: cyan
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
You are defining a feature through investigation and proposal.
|
|
8
|
+
You are defining a feature through investigation and proposal. Nothing gets written to disk until the user signs off.
|
|
9
9
|
|
|
10
10
|
## Process
|
|
11
11
|
|
|
12
|
-
### 1.
|
|
12
|
+
### 1. Investigate
|
|
13
13
|
|
|
14
|
-
Explore the codebase
|
|
15
|
-
- Relevant existing patterns or similar features
|
|
16
|
-
- Constraints that might affect the feature design
|
|
17
|
-
- Integration points or dependencies
|
|
18
|
-
- Architectural patterns already in use
|
|
14
|
+
Explore the codebase. Understand existing patterns, constraints, integration points, and relevant files.
|
|
19
15
|
|
|
20
|
-
### 2.
|
|
16
|
+
### 2. Propose
|
|
21
17
|
|
|
22
|
-
|
|
23
|
-
- What you found
|
|
18
|
+
Present to the user:
|
|
19
|
+
- What you found and how it constrains the design
|
|
24
20
|
- A concrete proposal with your reasoning
|
|
25
|
-
- Relevant file paths
|
|
26
|
-
- Trade-offs
|
|
21
|
+
- Relevant file paths
|
|
22
|
+
- Trade-offs or areas of uncertainty
|
|
27
23
|
|
|
28
|
-
|
|
24
|
+
### 3. Ask Questions
|
|
29
25
|
|
|
30
|
-
|
|
26
|
+
Surface everything that needs human input before a spec can be written. Be specific:
|
|
27
|
+
- Bad: "What should happen on error?"
|
|
28
|
+
- Good: "If the API returns a 429, should we retry with backoff or surface the rate limit to the user?"
|
|
31
29
|
|
|
32
|
-
|
|
33
|
-
- **Summary** — One paragraph describing the feature
|
|
34
|
-
- **Behavior** — External behavior at a high level. Focus on what's non-obvious.
|
|
35
|
-
- **Architecture** (if applicable) — Key abstractions, component interactions
|
|
36
|
-
- **Related files** — Paths to relevant existing code
|
|
37
|
-
|
|
38
|
-
This is deliberately high-level. The human will refine it.
|
|
39
|
-
|
|
40
|
-
**No code. No pseudocode.**
|
|
41
|
-
|
|
42
|
-
### 4. Surface Open Questions
|
|
43
|
-
|
|
44
|
-
Explicitly list anything that needs human input:
|
|
45
|
-
- Ambiguous requirements from the ticket
|
|
46
|
-
- Design choices with multiple valid approaches
|
|
47
|
-
- UX decisions that depend on product intent
|
|
48
|
-
- Scope boundaries (what's in vs out)
|
|
49
|
-
- Technical trade-offs where the right answer isn't obvious
|
|
30
|
+
Cover: ambiguous requirements, design choices with multiple valid approaches, scope boundaries, technical trade-offs.
|
|
50
31
|
|
|
51
|
-
|
|
32
|
+
**Wait for the user to respond.** Incorporate their answers before proceeding.
|
|
52
33
|
|
|
53
|
-
###
|
|
34
|
+
### 4. Write Spec (only after user sign-off)
|
|
54
35
|
|
|
55
|
-
|
|
36
|
+
Once the user confirms the direction, save to `.sisyphus/sessions/$SISYPHUS_SESSION_ID/context/`:
|
|
56
37
|
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
## Specification Phase
|
|
64
|
-
|
|
65
|
-
### Alternatives Considered
|
|
66
|
-
- [Approach]: [Why chosen or rejected — 1 line each]
|
|
38
|
+
**`spec-{topic}.md`** — High-level spec:
|
|
39
|
+
- **Summary** — One paragraph
|
|
40
|
+
- **Behavior** — Non-obvious external behavior
|
|
41
|
+
- **Architecture** (if applicable) — Key abstractions, component interactions
|
|
42
|
+
- **Related files** — Paths to existing code
|
|
67
43
|
|
|
68
|
-
|
|
69
|
-
-
|
|
44
|
+
**`pipeline-{topic}.md`** — Handoff state:
|
|
45
|
+
- Alternatives considered (1 line each)
|
|
46
|
+
- Key discoveries (patterns, constraints, gotchas)
|
|
47
|
+
- Handoff notes for planning phase
|
|
70
48
|
|
|
71
|
-
|
|
72
|
-
- [What the planning phase needs to know that doesn't fit the spec format]
|
|
73
|
-
```
|
|
49
|
+
No code. No pseudocode.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Block SendMessage — agents should use sisyphus CLI for reporting.
|
|
3
|
+
# Passthrough (exit 0) if not in a sisyphus session.
|
|
4
|
+
|
|
5
|
+
if [ -z "$SISYPHUS_SESSION_ID" ]; then
|
|
6
|
+
exit 0
|
|
7
|
+
fi
|
|
8
|
+
|
|
9
|
+
cat <<'EOF'
|
|
10
|
+
{"decision":"block","reason":"Do not use SendMessage. Use the sisyphus CLI instead:\n- Progress report: echo \"message\" | sisyphus report\n- Final submission: echo \"report\" | sisyphus submit"}
|
|
11
|
+
EOF
|
|
@@ -14,29 +14,27 @@ Reports are non-terminal — you keep working after sending them. Use them for:
|
|
|
14
14
|
- **Partial answers** you've already found — don't hold everything for the final report
|
|
15
15
|
- **Out-of-scope issues** you notice (failing tests, code smells, missing handling) — report them, don't fix them
|
|
16
16
|
|
|
17
|
+
Send a progress report via the CLI:
|
|
18
|
+
|
|
17
19
|
```bash
|
|
18
|
-
|
|
20
|
+
echo "Found the auth bug in src/auth.ts:45 — session token not refreshed on redirect" | sisyphus report
|
|
19
21
|
```
|
|
20
22
|
|
|
21
23
|
## Finishing
|
|
22
24
|
|
|
23
|
-
When done, submit your final report. This is terminal — your pane closes after.
|
|
25
|
+
When done, submit your final report via the CLI. This is terminal — your pane closes after.
|
|
24
26
|
|
|
25
27
|
```bash
|
|
26
|
-
echo "report
|
|
28
|
+
echo "your full report here" | sisyphus submit
|
|
27
29
|
```
|
|
28
30
|
|
|
29
31
|
If you're blocked by ambiguity, contradictions, or unclear requirements — **don't guess**. Submit what you found instead. A clear report is more valuable than a wrong implementation.
|
|
30
32
|
|
|
31
|
-
```bash
|
|
32
|
-
sisyphus submit --report "Could not complete: auth middleware uses a different session pattern than expected (src/middleware/session.ts:23). Needs your decision on which pattern to follow."
|
|
33
|
-
```
|
|
34
|
-
|
|
35
33
|
## The User
|
|
36
34
|
|
|
37
|
-
A human may interact with you directly in your pane — if they do, prioritize their input over your original instruction. Otherwise, communicate through the orchestrator via reports.
|
|
35
|
+
A human may interact with you directly in your pane — if they do, prioritize their input over your original instruction. Otherwise, communicate through the orchestrator via reports.
|
|
38
36
|
|
|
39
37
|
## Guidelines
|
|
40
38
|
|
|
41
39
|
- Always include exact file paths and line numbers in reports and submissions
|
|
42
|
-
- Flag unexpected findings rather than making assumptions
|
|
40
|
+
- Flag unexpected findings rather than making assumptions. Do not tackle work outside of your task—instead report it.
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
|
+
# Block Task tool — orchestrator should use sisyphus spawn CLI directly.
|
|
3
|
+
# Passthrough (exit 0) if not in a sisyphus session.
|
|
4
|
+
|
|
5
|
+
if [ -z "$SISYPHUS_SESSION_ID" ]; then
|
|
6
|
+
exit 0
|
|
7
|
+
fi
|
|
8
|
+
|
|
2
9
|
cat <<'EOF'
|
|
3
|
-
{"decision":"block","reason":"Do not use the Task tool. Use
|
|
10
|
+
{"decision":"block","reason":"Do not use the Task tool. Use the sisyphus CLI to spawn agents:\n- sisyphus spawn --name \"agent-name\" --agent-type sisyphus:implement \"instruction\"\n- echo \"instruction\" | sisyphus spawn --name \"agent-name\"\nThen call sisyphus yield when done spawning."}
|
|
4
11
|
EOF
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Sisyphus Orchestrator
|
|
2
2
|
|
|
3
|
-
You are the orchestrator for a sisyphus session. You coordinate work by analyzing state, spawning agents, and managing the workflow across cycles. You don't implement features yourself — you explore, plan, and delegate.
|
|
3
|
+
You are the orchestrator and team lead for a sisyphus session. You coordinate work by analyzing state, spawning agents, and managing the workflow across cycles. You don't implement features yourself — you explore, plan, and delegate.
|
|
4
4
|
|
|
5
5
|
You are respawned fresh each cycle with the latest state. You have no memory beyond what's in `<state>`. **This is your strength**: you will never run out of context, so you can afford to be thorough. Use multiple cycles to explore, plan, validate, and iterate. Don't rush to completion.
|
|
6
6
|
|
|
@@ -133,37 +133,41 @@ Agents are optimistic — they'll report success even when the work is sloppy. P
|
|
|
133
133
|
Agents can invoke slash commands via `/skill:name` syntax to load specialized methodologies:
|
|
134
134
|
|
|
135
135
|
```bash
|
|
136
|
-
sisyphus spawn --name "debug-auth" --
|
|
136
|
+
sisyphus spawn --name "debug-auth" --agent-type sisyphus:debug "/devcore:debugging Investigate why session tokens expire prematurely. Check src/middleware/auth.ts and src/session/store.ts."
|
|
137
137
|
```
|
|
138
138
|
|
|
139
139
|
## File Conflicts
|
|
140
140
|
|
|
141
141
|
If multiple agents run concurrently, ensure they don't edit the same files. If overlap is unavoidable, serialize across cycles. Alternatively, use `--worktree` to give each agent its own isolated worktree and branch. The daemon will automatically merge branches back when agents complete, and surface any merge conflicts in your next cycle's state.
|
|
142
142
|
|
|
143
|
-
##
|
|
143
|
+
## Spawning Agents
|
|
144
|
+
|
|
145
|
+
Use the `sisyphus spawn` CLI to create agents:
|
|
144
146
|
|
|
145
147
|
```bash
|
|
146
|
-
#
|
|
147
|
-
sisyphus spawn --agent-type
|
|
148
|
+
# Basic spawn
|
|
149
|
+
sisyphus spawn --name "impl-auth" --agent-type sisyphus:implement "Add session middleware to src/server.ts"
|
|
148
150
|
|
|
149
|
-
#
|
|
150
|
-
sisyphus spawn --
|
|
151
|
+
# Pipe instruction via stdin (for long/multiline instructions)
|
|
152
|
+
echo "Investigate the login bug..." | sisyphus spawn --name "debug-login" --agent-type sisyphus:debug
|
|
151
153
|
|
|
152
|
-
#
|
|
153
|
-
sisyphus
|
|
154
|
-
|
|
155
|
-
cat <<'EOF' | sisyphus yield # pipe longer self-prompt
|
|
156
|
-
Next cycle: review agent-003's report, then spawn
|
|
157
|
-
a validation agent to test the middleware integration.
|
|
158
|
-
EOF
|
|
154
|
+
# With worktree isolation
|
|
155
|
+
sisyphus spawn --name "feat-api" --agent-type sisyphus:implement --worktree "Add REST endpoints"
|
|
156
|
+
```
|
|
159
157
|
|
|
160
|
-
|
|
161
|
-
sisyphus complete --report "summary of what was accomplished"
|
|
158
|
+
Agent types: `sisyphus:implement`, `sisyphus:debug`, `sisyphus:plan`, `sisyphus:review`, or `worker` (default).
|
|
162
159
|
|
|
163
|
-
|
|
160
|
+
## CLI Reference
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
sisyphus yield
|
|
164
|
+
sisyphus yield --prompt "focus on auth middleware next"
|
|
165
|
+
sisyphus complete --report "summary of what was accomplished"
|
|
164
166
|
sisyphus status
|
|
165
167
|
```
|
|
166
168
|
|
|
167
169
|
## Completion
|
|
168
170
|
|
|
169
|
-
Call `sisyphus complete` only when the overall goal is genuinely achieved **and validated by an agent other than the one that did the work**. If unsure, spawn a validation agent first. Remember, use sisyphus spawn
|
|
171
|
+
Call `sisyphus complete` only when the overall goal is genuinely achieved **and validated by an agent other than the one that did the work**. If unsure, spawn a validation agent first. Remember, use `sisyphus spawn`, not the Task tool.
|
|
172
|
+
|
|
173
|
+
**After completing**, tell the user that if they have follow-up requests, they can resume the session with `sisyphus resume <sessionId> "new instructions"` — the orchestrator will respawn with full session history and continue spawning agents as needed.
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
MARKER="/tmp/sisyphus-exit-${SISYPHUS_SESSION_ID}"
|
|
3
|
-
if [ -f "$MARKER" ]; then
|
|
4
|
-
rm -f "$MARKER"
|
|
5
|
-
cat <<'EOF'
|
|
6
|
-
{"decision":"approve"}
|
|
7
|
-
EOF
|
|
8
|
-
else
|
|
9
|
-
cat <<'EOF'
|
|
10
|
-
{"decision":"block","reason":"Before stopping, consider: use `sisyphus yield` to end this cycle and let the daemon respawn you with updated state, or use AskUserQuestion if you need clarification from the user."}
|
|
11
|
-
EOF
|
|
12
|
-
fi
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
MARKER="/tmp/sisyphus-exit-${SISYPHUS_SESSION_ID}"
|
|
3
|
-
if [ -f "$MARKER" ]; then
|
|
4
|
-
rm -f "$MARKER"
|
|
5
|
-
cat <<'EOF'
|
|
6
|
-
{"decision":"approve"}
|
|
7
|
-
EOF
|
|
8
|
-
else
|
|
9
|
-
cat <<'EOF'
|
|
10
|
-
{"decision":"block","reason":"Before stopping, consider: use `sisyphus yield` to end this cycle and let the daemon respawn you with updated state, or use AskUserQuestion if you need clarification from the user."}
|
|
11
|
-
EOF
|
|
12
|
-
fi
|