sisyphi 1.1.18 → 1.1.19

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 (231) hide show
  1. package/README.md +195 -75
  2. package/dist/chunk-36VJ7ZBD.js +1898 -0
  3. package/dist/chunk-36VJ7ZBD.js.map +1 -0
  4. package/dist/{chunk-C2XKXERJ.js → chunk-M6Z3KHOH.js} +159 -46
  5. package/dist/chunk-M6Z3KHOH.js.map +1 -0
  6. package/dist/chunk-O4ZHSQ5R.js +544 -0
  7. package/dist/chunk-O4ZHSQ5R.js.map +1 -0
  8. package/dist/chunk-P2HHTIPM.js +478 -0
  9. package/dist/chunk-P2HHTIPM.js.map +1 -0
  10. package/dist/{chunk-TMBAVPHH.js → chunk-PNDCVKBN.js} +73 -1
  11. package/dist/chunk-PNDCVKBN.js.map +1 -0
  12. package/dist/chunk-SVGIQ2G4.js +1076 -0
  13. package/dist/chunk-SVGIQ2G4.js.map +1 -0
  14. package/dist/cli.js +4405 -892
  15. package/dist/cli.js.map +1 -1
  16. package/dist/daemon.js +4340 -1990
  17. package/dist/daemon.js.map +1 -1
  18. package/dist/{paths-XRDEEJ5R.js → paths-JXFLR5BN.js} +38 -2
  19. package/dist/single-ask-6G4BIVY2.js +132 -0
  20. package/dist/single-ask-6G4BIVY2.js.map +1 -0
  21. package/dist/templates/CLAUDE.md +1 -56
  22. package/dist/templates/agent-plugin/agents/CLAUDE.md +2 -65
  23. package/dist/templates/agent-plugin/agents/debug.md +43 -6
  24. package/dist/templates/agent-plugin/agents/debug.settings.json +57 -0
  25. package/dist/templates/agent-plugin/agents/explore.md +28 -1
  26. package/dist/templates/agent-plugin/agents/explore.settings.json +57 -0
  27. package/dist/templates/agent-plugin/agents/implementor.md +94 -0
  28. package/dist/templates/agent-plugin/agents/implementor.settings.json +57 -0
  29. package/dist/templates/agent-plugin/agents/operator.md +43 -1
  30. package/dist/templates/agent-plugin/agents/operator.settings.json +57 -0
  31. package/dist/templates/agent-plugin/agents/plan/sub-planner.md +75 -0
  32. package/dist/templates/agent-plugin/agents/plan.md +176 -86
  33. package/dist/templates/agent-plugin/agents/plan.settings.json +57 -0
  34. package/dist/templates/agent-plugin/agents/problem/adversarial.md +26 -0
  35. package/dist/templates/agent-plugin/agents/problem/contrarian.md +26 -0
  36. package/dist/templates/agent-plugin/agents/problem/first-principles.md +26 -0
  37. package/dist/templates/agent-plugin/agents/problem/precedent.md +25 -0
  38. package/dist/templates/agent-plugin/agents/problem/simplifier.md +26 -0
  39. package/dist/templates/agent-plugin/agents/problem/systems-thinker.md +26 -0
  40. package/dist/templates/agent-plugin/agents/problem/time-traveler.md +26 -0
  41. package/dist/templates/agent-plugin/agents/problem/user-empathy.md +26 -0
  42. package/dist/templates/agent-plugin/agents/problem.md +334 -79
  43. package/dist/templates/agent-plugin/agents/problem.settings.json +57 -0
  44. package/dist/templates/agent-plugin/agents/research-lead/CLAUDE.md +26 -0
  45. package/dist/templates/agent-plugin/agents/research-lead/critic.md +61 -0
  46. package/dist/templates/agent-plugin/agents/research-lead/researcher.md +60 -0
  47. package/dist/templates/agent-plugin/agents/research-lead.md +184 -0
  48. package/dist/templates/agent-plugin/agents/research-lead.settings.json +57 -0
  49. package/dist/templates/agent-plugin/agents/review/CLAUDE.md +3 -29
  50. package/dist/templates/agent-plugin/agents/review/compliance.md +14 -3
  51. package/dist/templates/agent-plugin/agents/review/efficiency.md +15 -4
  52. package/dist/templates/agent-plugin/agents/review/quality.md +20 -6
  53. package/dist/templates/agent-plugin/agents/review/reuse.md +17 -5
  54. package/dist/templates/agent-plugin/agents/review/security.md +10 -3
  55. package/dist/templates/agent-plugin/agents/review/tests.md +58 -0
  56. package/dist/templates/agent-plugin/agents/review-plan/CLAUDE.md +28 -0
  57. package/dist/templates/agent-plugin/agents/review-plan/code-smells.md +4 -2
  58. package/dist/templates/agent-plugin/agents/review-plan/pattern-consistency.md +4 -2
  59. package/dist/templates/agent-plugin/agents/review-plan/requirements-coverage.md +3 -1
  60. package/dist/templates/agent-plugin/agents/review-plan/security.md +5 -2
  61. package/dist/templates/agent-plugin/agents/review-plan.md +52 -5
  62. package/dist/templates/agent-plugin/agents/review-plan.settings.json +57 -0
  63. package/dist/templates/agent-plugin/agents/review.md +89 -16
  64. package/dist/templates/agent-plugin/agents/review.settings.json +57 -0
  65. package/dist/templates/agent-plugin/agents/spec/engineer.md +175 -0
  66. package/dist/templates/agent-plugin/agents/spec/requirements-writer.md +149 -0
  67. package/dist/templates/agent-plugin/agents/spec.md +444 -0
  68. package/dist/templates/agent-plugin/agents/spec.settings.json +57 -0
  69. package/dist/templates/agent-plugin/agents/test-spec.md +58 -2
  70. package/dist/templates/agent-plugin/agents/test-spec.settings.json +57 -0
  71. package/dist/templates/agent-plugin/hooks/CLAUDE.md +9 -57
  72. package/dist/templates/agent-plugin/hooks/ask-background-guard.sh +57 -0
  73. package/dist/templates/agent-plugin/hooks/intercept-send-message.sh +1 -1
  74. package/dist/templates/agent-plugin/hooks/plan-user-prompt.sh +8 -7
  75. package/dist/templates/agent-plugin/hooks/plan-validate.sh +97 -0
  76. package/dist/templates/agent-plugin/hooks/plan-write-path.sh +55 -0
  77. package/dist/templates/agent-plugin/hooks/problem-user-prompt.sh +26 -0
  78. package/dist/templates/agent-plugin/hooks/register-bg-task.sh +37 -0
  79. package/dist/templates/agent-plugin/hooks/require-submit.sh +51 -42
  80. package/dist/templates/agent-plugin/hooks/review-user-prompt.sh +6 -2
  81. package/dist/templates/agent-plugin/hooks/spec-user-prompt.sh +43 -0
  82. package/dist/templates/agent-plugin/skills/humanloop/SKILL.md +147 -0
  83. package/dist/templates/agent-plugin/skills/perspective-fanout/SKILL.md +115 -0
  84. package/dist/templates/agent-plugin/skills/problem-document/SKILL.md +105 -0
  85. package/dist/templates/agent-plugin/skills/problem-plateau-breakers/SKILL.md +83 -0
  86. package/dist/templates/agent-suffix.md +7 -4
  87. package/dist/templates/baleia.lua +42 -0
  88. package/dist/templates/companion-plugin/hooks/user-prompt-context.sh +1 -1
  89. package/dist/templates/dashboard-claude.md +7 -3
  90. package/dist/templates/orchestrator-base.md +89 -52
  91. package/dist/templates/orchestrator-completion.md +47 -24
  92. package/dist/templates/orchestrator-discovery.md +183 -0
  93. package/dist/templates/orchestrator-impl.md +47 -18
  94. package/dist/templates/orchestrator-planning.md +109 -20
  95. package/dist/templates/orchestrator-plugin/commands/sisyphus/scratch.md +19 -0
  96. package/dist/templates/orchestrator-plugin/commands/sisyphus/spec.md +11 -0
  97. package/dist/templates/orchestrator-plugin/commands/sisyphus/strategize.md +5 -5
  98. package/dist/templates/orchestrator-plugin/hooks/hooks.json +0 -10
  99. package/dist/templates/orchestrator-plugin/skills/humanloop/SKILL.md +149 -0
  100. package/dist/templates/orchestrator-plugin/skills/orchestration/CLAUDE.md +1 -0
  101. package/dist/templates/orchestrator-plugin/skills/orchestration/SKILL.md +2 -1
  102. package/dist/templates/orchestrator-plugin/skills/orchestration/strategy.md +160 -0
  103. package/dist/templates/orchestrator-plugin/skills/orchestration/task-patterns.md +26 -28
  104. package/dist/templates/orchestrator-plugin/skills/orchestration/workflow-examples.md +133 -25
  105. package/dist/templates/orchestrator-settings.json +55 -0
  106. package/dist/templates/orchestrator-validation.md +17 -14
  107. package/dist/templates/sisyphus-init.lua +30 -0
  108. package/dist/templates/sisyphus-tmux-plugin/hooks/hooks.json +54 -0
  109. package/dist/templates/sisyphus-tmux-plugin/hooks/tmux-state.sh +19 -0
  110. package/dist/templates/termrender-haiku-system.md +82 -0
  111. package/dist/templates/whip-animation.sh +345 -0
  112. package/dist/tui.js +3242 -2189
  113. package/dist/tui.js.map +1 -1
  114. package/native/SisyphusNotify/main.swift +15 -5
  115. package/package.json +8 -6
  116. package/templates/CLAUDE.md +1 -56
  117. package/templates/agent-plugin/agents/CLAUDE.md +2 -65
  118. package/templates/agent-plugin/agents/debug.md +43 -6
  119. package/templates/agent-plugin/agents/debug.settings.json +57 -0
  120. package/templates/agent-plugin/agents/explore.md +28 -1
  121. package/templates/agent-plugin/agents/explore.settings.json +57 -0
  122. package/templates/agent-plugin/agents/implementor.md +94 -0
  123. package/templates/agent-plugin/agents/implementor.settings.json +57 -0
  124. package/templates/agent-plugin/agents/operator.md +43 -1
  125. package/templates/agent-plugin/agents/operator.settings.json +57 -0
  126. package/templates/agent-plugin/agents/plan/sub-planner.md +75 -0
  127. package/templates/agent-plugin/agents/plan.md +176 -86
  128. package/templates/agent-plugin/agents/plan.settings.json +57 -0
  129. package/templates/agent-plugin/agents/problem/adversarial.md +26 -0
  130. package/templates/agent-plugin/agents/problem/contrarian.md +26 -0
  131. package/templates/agent-plugin/agents/problem/first-principles.md +26 -0
  132. package/templates/agent-plugin/agents/problem/precedent.md +25 -0
  133. package/templates/agent-plugin/agents/problem/simplifier.md +26 -0
  134. package/templates/agent-plugin/agents/problem/systems-thinker.md +26 -0
  135. package/templates/agent-plugin/agents/problem/time-traveler.md +26 -0
  136. package/templates/agent-plugin/agents/problem/user-empathy.md +26 -0
  137. package/templates/agent-plugin/agents/problem.md +334 -79
  138. package/templates/agent-plugin/agents/problem.settings.json +57 -0
  139. package/templates/agent-plugin/agents/research-lead/CLAUDE.md +26 -0
  140. package/templates/agent-plugin/agents/research-lead/critic.md +61 -0
  141. package/templates/agent-plugin/agents/research-lead/researcher.md +60 -0
  142. package/templates/agent-plugin/agents/research-lead.md +184 -0
  143. package/templates/agent-plugin/agents/research-lead.settings.json +57 -0
  144. package/templates/agent-plugin/agents/review/CLAUDE.md +3 -29
  145. package/templates/agent-plugin/agents/review/compliance.md +14 -3
  146. package/templates/agent-plugin/agents/review/efficiency.md +15 -4
  147. package/templates/agent-plugin/agents/review/quality.md +20 -6
  148. package/templates/agent-plugin/agents/review/reuse.md +17 -5
  149. package/templates/agent-plugin/agents/review/security.md +10 -3
  150. package/templates/agent-plugin/agents/review/tests.md +58 -0
  151. package/templates/agent-plugin/agents/review-plan/CLAUDE.md +28 -0
  152. package/templates/agent-plugin/agents/review-plan/code-smells.md +4 -2
  153. package/templates/agent-plugin/agents/review-plan/pattern-consistency.md +4 -2
  154. package/templates/agent-plugin/agents/review-plan/requirements-coverage.md +3 -1
  155. package/templates/agent-plugin/agents/review-plan/security.md +5 -2
  156. package/templates/agent-plugin/agents/review-plan.md +52 -5
  157. package/templates/agent-plugin/agents/review-plan.settings.json +57 -0
  158. package/templates/agent-plugin/agents/review.md +89 -16
  159. package/templates/agent-plugin/agents/review.settings.json +57 -0
  160. package/templates/agent-plugin/agents/spec/engineer.md +175 -0
  161. package/templates/agent-plugin/agents/spec/requirements-writer.md +149 -0
  162. package/templates/agent-plugin/agents/spec.md +444 -0
  163. package/templates/agent-plugin/agents/spec.settings.json +57 -0
  164. package/templates/agent-plugin/agents/test-spec.md +58 -2
  165. package/templates/agent-plugin/agents/test-spec.settings.json +57 -0
  166. package/templates/agent-plugin/hooks/CLAUDE.md +9 -57
  167. package/templates/agent-plugin/hooks/ask-background-guard.sh +57 -0
  168. package/templates/agent-plugin/hooks/intercept-send-message.sh +1 -1
  169. package/templates/agent-plugin/hooks/plan-user-prompt.sh +8 -7
  170. package/templates/agent-plugin/hooks/plan-validate.sh +97 -0
  171. package/templates/agent-plugin/hooks/plan-write-path.sh +55 -0
  172. package/templates/agent-plugin/hooks/problem-user-prompt.sh +26 -0
  173. package/templates/agent-plugin/hooks/register-bg-task.sh +37 -0
  174. package/templates/agent-plugin/hooks/require-submit.sh +51 -42
  175. package/templates/agent-plugin/hooks/review-user-prompt.sh +6 -2
  176. package/templates/agent-plugin/hooks/spec-user-prompt.sh +43 -0
  177. package/templates/agent-plugin/skills/humanloop/SKILL.md +147 -0
  178. package/templates/agent-plugin/skills/perspective-fanout/SKILL.md +115 -0
  179. package/templates/agent-plugin/skills/problem-document/SKILL.md +105 -0
  180. package/templates/agent-plugin/skills/problem-plateau-breakers/SKILL.md +83 -0
  181. package/templates/agent-suffix.md +7 -4
  182. package/templates/baleia.lua +42 -0
  183. package/templates/companion-plugin/hooks/user-prompt-context.sh +1 -1
  184. package/templates/dashboard-claude.md +7 -3
  185. package/templates/orchestrator-base.md +89 -52
  186. package/templates/orchestrator-completion.md +47 -24
  187. package/templates/orchestrator-discovery.md +183 -0
  188. package/templates/orchestrator-impl.md +47 -18
  189. package/templates/orchestrator-planning.md +109 -20
  190. package/templates/orchestrator-plugin/commands/sisyphus/scratch.md +19 -0
  191. package/templates/orchestrator-plugin/commands/sisyphus/spec.md +11 -0
  192. package/templates/orchestrator-plugin/commands/sisyphus/strategize.md +5 -5
  193. package/templates/orchestrator-plugin/hooks/hooks.json +0 -10
  194. package/templates/orchestrator-plugin/skills/humanloop/SKILL.md +149 -0
  195. package/templates/orchestrator-plugin/skills/orchestration/CLAUDE.md +1 -0
  196. package/templates/orchestrator-plugin/skills/orchestration/SKILL.md +2 -1
  197. package/templates/orchestrator-plugin/skills/orchestration/strategy.md +160 -0
  198. package/templates/orchestrator-plugin/skills/orchestration/task-patterns.md +26 -28
  199. package/templates/orchestrator-plugin/skills/orchestration/workflow-examples.md +133 -25
  200. package/templates/orchestrator-settings.json +55 -0
  201. package/templates/orchestrator-validation.md +17 -14
  202. package/templates/sisyphus-init.lua +30 -0
  203. package/templates/sisyphus-tmux-plugin/hooks/hooks.json +54 -0
  204. package/templates/sisyphus-tmux-plugin/hooks/tmux-state.sh +19 -0
  205. package/templates/termrender-haiku-system.md +82 -0
  206. package/templates/whip-animation.sh +345 -0
  207. package/dist/chunk-22ZGZTGY.js +0 -67
  208. package/dist/chunk-22ZGZTGY.js.map +0 -1
  209. package/dist/chunk-6PJVJEYQ.js +0 -46
  210. package/dist/chunk-6PJVJEYQ.js.map +0 -1
  211. package/dist/chunk-C2XKXERJ.js.map +0 -1
  212. package/dist/chunk-TMBAVPHH.js.map +0 -1
  213. package/dist/chunk-V36NXMHP.js +0 -299
  214. package/dist/chunk-V36NXMHP.js.map +0 -1
  215. package/dist/templates/agent-plugin/agents/design.md +0 -134
  216. package/dist/templates/agent-plugin/agents/requirements.md +0 -138
  217. package/dist/templates/begin.md +0 -22
  218. package/dist/templates/nvim-tutorial.txt +0 -68
  219. package/dist/templates/orchestrator-plugin/commands/sisyphus/design.md +0 -13
  220. package/dist/templates/orchestrator-plugin/commands/sisyphus/requirements.md +0 -13
  221. package/dist/templates/orchestrator-plugin/hooks/idle-notify.sh +0 -71
  222. package/dist/templates/orchestrator-strategy.md +0 -238
  223. package/templates/agent-plugin/agents/design.md +0 -134
  224. package/templates/agent-plugin/agents/requirements.md +0 -138
  225. package/templates/begin.md +0 -22
  226. package/templates/nvim-tutorial.txt +0 -68
  227. package/templates/orchestrator-plugin/commands/sisyphus/design.md +0 -13
  228. package/templates/orchestrator-plugin/commands/sisyphus/requirements.md +0 -13
  229. package/templates/orchestrator-plugin/hooks/idle-notify.sh +0 -71
  230. package/templates/orchestrator-strategy.md +0 -238
  231. /package/dist/{paths-XRDEEJ5R.js.map → paths-JXFLR5BN.js.map} +0 -0
@@ -14,10 +14,14 @@ You are a review coordinator — do NOT review code directly. Spawn sub-agents u
14
14
 
15
15
  Always spawn core three (reuse, quality, efficiency). Add security for hotfix/security or sensitive code. Add compliance when CLAUDE.md/rules are extensive or scope is 5+ files.
16
16
 
17
+ Sub-agent dispatch must be scope-only — pass the diff and file boundaries, NOT your hypotheses, suspicions, or specific things to look for. Sub-agents that receive a leading conclusion will anchor on it and miss independent findings. Let each sub-agent form its own assessment from the code. If you tell a quality agent "I think there's redundant state in foo.ts", it will find redundant state in foo.ts whether or not it's real.
18
+
19
+ **A clean review is a valid and common outcome.** You are assessing a change, not hunting for something to flag. If all sub-agents come back clean, report clean — do not backfill. You are not deciding what's worth fixing; the orchestrator handles that. Your job is accurate detection. This review runs once per stage (there is no re-review after fixes), so make it thorough and honest, not padded.
20
+
17
21
  After sub-agents report, validate findings (~1 validation agent per 3 issues):
18
22
  - Bugs/Security: opus validates exploitable/broken
19
- - Everything else: sonnet confirms significant (not nitpick)
20
- - Drop anything subjective, pre-existing, or linter-catchable
23
+ - Everything else: sonnet confirms the finding is concrete and accurate (not speculative or subjective)
24
+ - Drop anything subjective, pre-existing, linter-catchable, or speculative without evidence
21
25
  - Every finding needs `file:line` + concrete evidence — no "this could be a problem"
22
26
 
23
27
  You are read-only. Investigate and direct fixes through implementers — never edit code yourself.
@@ -0,0 +1,43 @@
1
+ #!/bin/bash
2
+ # UserPromptSubmit hook: fire only on the first prompt to prime the spec lead
3
+ # for a three-stage interactive spec session (shape → requirements → deepen).
4
+ if [ -z "$SISYPHUS_SESSION_ID" ] || [ -z "$SISYPHUS_AGENT_ID" ]; then exit 0; fi
5
+
6
+ FLAG_DIR="/tmp/sisyphus-hooks/${SISYPHUS_SESSION_ID}"
7
+ FLAG_FILE="${FLAG_DIR}/${SISYPHUS_AGENT_ID}-spec-primed"
8
+
9
+ # Only fire once per agent session
10
+ if [ -f "$FLAG_FILE" ]; then exit 0; fi
11
+
12
+ mkdir -p "$FLAG_DIR"
13
+ touch "$FLAG_FILE"
14
+
15
+ # IMPORTANT: heredoc delimiter is single-quoted (<<'HINT') — do NOT change to unquoted.
16
+ # Single quotes prevent bash from expanding $INSTRUCTION, $SISYPHUS_*, backticks,
17
+ # or any other dollar-sign content inside the prompt body. The body is static
18
+ # instructional prose and must be byte-for-byte literal.
19
+ #
20
+ # If you ever need to interpolate an env var into this output, do NOT switch the
21
+ # delimiter to unquoted. Instead, assign to a local var BEFORE the heredoc and
22
+ # emit the interpolated part via a separate printf call after the heredoc.
23
+ cat <<'HINT'
24
+ <spec-first-prompt>
25
+ This is a three-stage spec session: Stage 1 (shape), Stage 2 (requirements), Stage 3 (deepen). Do not treat it as a single requirements pass.
26
+
27
+ Your first message to the user should:
28
+ 1. Briefly acknowledge what you understand from the instruction
29
+ 2. Ask 1–2 clarifying questions about scope or intent
30
+ 3. Be short — a few sentences and the questions, nothing more
31
+
32
+ Before dispatching any subagent:
33
+ - Explore the codebase relevant to the topic (Bash, Glob, Grep, Read)
34
+ - Complete at least one round of user dialogue
35
+ - Do NOT spawn the engineer until exploration is done and the user has responded to you at least once
36
+
37
+ When you do dispatch subagents:
38
+ - Engineer: Agent tool with subagent_type "engineer"
39
+ - Requirements-writer: Agent tool with subagent_type "requirements-writer"
40
+
41
+ You are the only pane the user sees. Narrate subagent activity in real time — tell the user when you dispatch a subagent and what it is doing, and tell them what came back when it returns.
42
+ </spec-first-prompt>
43
+ HINT
@@ -0,0 +1,147 @@
1
+ ---
2
+ name: humanloop
3
+ description: >
4
+ Read before calling `sisyphus 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 submit via the Bash tool's `run_in_background` so you can end your turn while the user takes their time answering.
5
+ ---
6
+
7
+ # Talking to the user via decks
8
+
9
+ `sisyphus 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
+
11
+ This skill covers **what to put in a deck** and **how to invoke it**. Run `sisyphus ask -h` for the CLI shape (file path, `--session`, the `poll` and `peek` subcommands).
12
+
13
+ ## Reach for a deck when
14
+
15
+ - You have **2+ questions** to surface in one beat (bundle them into one deck).
16
+ - You're presenting **work for review or sign-off** (a design, a plan, a completion summary).
17
+ - You're choosing between **concrete alternatives** the user must pick.
18
+ - The work will sit while the user thinks. Decks survive across cycles; chat does not.
19
+
20
+ ## Skip the deck when
21
+
22
+ - It's a single, low-stakes question whose answer barely changes downstream work — just ask in chat.
23
+ - You can settle the question yourself by reading code or running a tool. **Default to investigating before asking.**
24
+ - The user is actively conversing with you — converting a live exchange into a deck adds friction.
25
+
26
+ ## How to invoke
27
+
28
+ The CLI **always blocks** until the user resolves the deck (potentially 10+ minutes). Submit through the Bash tool with `run_in_background: true` and **end your turn**. Do not peek, poll, or output filler chat between submit and answer — the bash completion notification is the only signal you need; it will wake you with stdout ready to parse. Same pattern for orchestrator, sub-agents, and one-off Claude Code sessions.
29
+
30
+ ```
31
+ Bash tool call:
32
+ command: sisyphus ask "$deck"
33
+ run_in_background: true
34
+ ```
35
+
36
+ Stdout on completion is one line of JSON: `{responses: [{id, selectedOptionId?, freetext?}, ...], completedAt}`. Branch on each response by its interaction `id`.
37
+
38
+ If you already hold an `askId` from a prior cycle (e.g. respawned mid-wait), `sisyphus ask poll <askId>` blocks on it and `sisyphus ask peek <askId>` returns status without blocking. Use these only for respawn-recovery — **never to monitor a deck you just submitted in the current turn**. See `sisyphus ask -h`.
39
+
40
+ ## Designing interactions
41
+
42
+ ### Each option is a concrete path forward
43
+
44
+ The user picks an option to commit to a direction. Each option should name a real path with its tradeoffs spelled out, grounded in *this* codebase. Sign-off decks branch differently per option ("looks good", "minor fixes", "moderate fixes", "scope rework" each route the orchestrator somewhere different). Decision decks present mutually exclusive directions with named consequences.
45
+
46
+ <example type="good">
47
+ ```
48
+ title: "Session store backend?"
49
+ subtitle: "Auth needs persistent sessions across restarts"
50
+ kind: decision
51
+ options:
52
+ in-memory: "In-memory map — simplest. Loses sessions on restart; single-process only."
53
+ redis: "Redis — survives restart, supports horizontal scale. New ops dependency."
54
+ postgres: "Reuse existing Postgres — no new infra; ~10ms read latency vs Redis ~1ms."
55
+ defer: "Ship in-memory now, migrate later if scale becomes real."
56
+ allowFreetext: true
57
+ freetextLabel: "Different framing — describe it"
58
+ ```
59
+ </example>
60
+
61
+ <example type="bad">
62
+ ```
63
+ title: "Happy with this design?"
64
+ options:
65
+ 1. Yes
66
+ 2. No, start over
67
+ 3. Maybe, with comments
68
+ 4. (no option, just freetext)
69
+ ```
70
+ "Happy?" names a feeling, not a fork. Options 3 and 4 both collapse to freetext, forcing the user to invent the actual decision. Rewrite as specific decisions about specific elements of the design.
71
+ </example>
72
+
73
+ ### Use `allowFreetext: true` as a safety valve, not the primary input
74
+
75
+ Freetext catches "anything else?" — opinions or context the options didn't anticipate. When freetext IS the answer you want, write a chat message instead.
76
+
77
+ <example type="bad">
78
+ ```
79
+ title: "Approve?"
80
+ options:
81
+ 1. Approve
82
+ 2. Reject
83
+ 3. Comment
84
+ allowFreetext: true
85
+ ```
86
+ A freetext form wearing option clothing. Either name what "reject" actually routes to (back to design? abandon? try a different framing?), or drop the deck and ask in chat.
87
+ </example>
88
+
89
+ ### Bound option count to 2–4
90
+
91
+ Above four, options become too granular for the user to weigh; below two, you've collapsed into a yes/no that's faster to ask in chat.
92
+
93
+ ### Ground options in what you've already gathered
94
+
95
+ Each option label should reference specifics from the codebase, plan, or exploration you just did — file names, framework constraints, prior decisions. When you can't fill in specifics, investigate before asking.
96
+
97
+ ### One concern per interaction
98
+
99
+ When two questions interact, give them separate `id` / `title` / `options` inside the same deck (see Bundling below). One interaction asks one thing.
100
+
101
+ ## `kind` — display hint
102
+
103
+ | kind | use for |
104
+ |---|---|
105
+ | `decision` | fork in the road; user picks a path forward |
106
+ | `validation` | sign-off on completed work |
107
+ | `notify` | FYI; user acknowledges |
108
+ | `context` | surfacing background that needs a response |
109
+ | `error` | something went wrong; user picks a recovery |
110
+
111
+ The dashboard uses `kind` for inbox icons and sort weight. Mis-tagging trains the user to ignore the icons. Pick the closest fit.
112
+
113
+ ## Bundling
114
+
115
+ If you'd otherwise submit two decks in the same beat, merge them. One deck with multiple `interactions` is one context switch for the user; two decks is two.
116
+
117
+ ```bash
118
+ deck="$SISYPHUS_SESSION_DIR/context/.ask-$(date +%s).json"
119
+ cat > "$deck" <<'EOF'
120
+ {
121
+ "title": "Phase 2 sign-off + follow-on decisions",
122
+ "interactions": [
123
+ {
124
+ "id": "approve-phase-2",
125
+ "title": "Phase 2 looks good?",
126
+ "kind": "validation",
127
+ "options": [...]
128
+ },
129
+ {
130
+ "id": "phase-3-scope",
131
+ "title": "Phase 3 scope?",
132
+ "kind": "decision",
133
+ "options": [...]
134
+ }
135
+ ]
136
+ }
137
+ EOF
138
+ # Then invoke `sisyphus ask "$deck"` via the Bash tool with run_in_background: true.
139
+ # Each interaction returns its own selectedOptionId / freetext in output.responses[], indexed by id.
140
+ ```
141
+
142
+ ## Submission notes
143
+
144
+ - The deck is validated at submit (precise errors — trust them).
145
+ - `bodyPath` lets an interaction point at a markdown file (e.g. a completion summary) instead of inlining the markdown in JSON.
146
+ - On completion, stdout is one line of JSON: `{responses, completedAt}`. Parse `responses[]` and dispatch on each interaction's `id`.
147
+ - See `sisyphus ask -h` for the full CLI surface.
@@ -0,0 +1,115 @@
1
+ ---
2
+ name: perspective-fanout
3
+ description: >
4
+ Load when the problem-agent dialogue has produced enough substance to react to but conclusions haven't hardened — typically four or more turns in, with a framing solidifying. Provides the protocol for spawning eight perspective sub-agents in parallel, synthesizing their outputs, and presenting the synthesis back to the user via a render+deck pair. Available only at MEDIUM, HIGH, or XHIGH effort.
5
+ ---
6
+
7
+ # Perspective fanout
8
+
9
+ Spawn the eight perspective lenses as parallel sub-agents to challenge convergence before the framing locks in. The agents operate from a shared problem statement so their outputs are directly comparable. After they return, synthesize and surface to the user — convergence, surprises, insights — as the seed for the next dialogue turn.
10
+
11
+ ## When to spawn
12
+
13
+ - The conversation has substance to react to (typically four or more turns in)
14
+ - A framing is starting to solidify
15
+ - You want to challenge convergence, not rescue a stalled discussion
16
+ - You have already formed your own take
17
+
18
+ If the conversation is stalled, use a plateau-breaker instead — perspective fanout needs material to push against.
19
+
20
+ ## Before spawning: write the shared problem statement
21
+
22
+ Two or three sentences, given verbatim to all eight agents:
23
+
24
+ - What's happening (or not happening)
25
+ - What's been considered so far (from your exploration and the user input)
26
+ - What a good outcome looks like
27
+
28
+ This shared framing is what makes the eight outputs comparable. Different framings produce different conversations and the synthesis collapses.
29
+
30
+ ## The eight lenses
31
+
32
+ Spawn one sub-agent per lens, all in the background, in parallel:
33
+
34
+ | Lens | Brief |
35
+ |---|---|
36
+ | First Principles | Strip away assumptions. What is the actual problem at its most fundamental level? |
37
+ | User Empathy | Forget the code. What does the person using this actually need? |
38
+ | Simplifier | What can be deleted, removed, or skipped? The best solution might be no solution. |
39
+ | Systems Thinker | Zoom out. What are the second-order effects? What breaks downstream? |
40
+ | Contrarian | Take the opposite position of whatever seems obvious. |
41
+ | Time Traveler | Six months from now, what will we wish we had done? |
42
+ | Adversarial | Assume the current approach is wrong. Find the flaw, the hidden assumption that breaks under stress. |
43
+ | Precedent | Has this been solved before? In this codebase, in open source, in a different domain entirely? |
44
+
45
+ Continue the conversation with the user while the agents run. Do not block.
46
+
47
+ ## Synthesis
48
+
49
+ When the eight return, write to `$SISYPHUS_SESSION_DIR/context/perspective-synthesis.md` covering:
50
+
51
+ - **Convergence** — where multiple lenses pointed the same direction (signal worth trusting)
52
+ - **Surprises** — which perspective said something nobody else did (potential breakthroughs)
53
+ - **Insights** — name each key finding in a memorable sentence the user can carry forward
54
+
55
+ Then render in the side pane:
56
+
57
+ ```bash
58
+ termrender --tmux "$SISYPHUS_SESSION_DIR/context/perspective-synthesis.md"
59
+ ```
60
+
61
+ Bail on non-zero exit with the file path and exit code.
62
+
63
+ ## Surface to the user
64
+
65
+ Issue the synthesis deck. No `${var}` shell assignments needed; angle-bracket placeholders are pre-substituted:
66
+
67
+ - `<one-line convergence>` — where multiple lenses pointed the same direction
68
+ - `<one-line surprise>` — what a single lens said that nobody else did
69
+
70
+ ```bash
71
+ synth_deck="$SISYPHUS_SESSION_DIR/context/.ask-problem-synth-$(date +%s)-$$.json"
72
+ cat > "$synth_deck" <<EOF
73
+ {
74
+ "interactions": [{
75
+ "id": "problem-perspective-synth",
76
+ "title": "Lens synthesis",
77
+ "subtitle": "After 8 perspective agents",
78
+ "body": "## In the side pane\n\n- Synthesis rendered via termrender — scroll and react below.\n\n## What I'm hearing\n\n- <one-line convergence>\n- <one-line surprise>",
79
+ "kind": "decision",
80
+ "options": [
81
+ {"id": "breakthrough", "label": "Breakthrough — this lens reframes it"},
82
+ {"id": "useful", "label": "Useful but not load-bearing"},
83
+ {"id": "wrong-direction", "label": "Wrong direction — discard"},
84
+ {"id": "mixed", "label": "Mixed — see freetext"}
85
+ ],
86
+ "allowFreetext": true,
87
+ "freetextLabel": "Which lens, what landed, what's still missing"
88
+ }]
89
+ }
90
+ EOF
91
+ result=$(sisyphus ask "$synth_deck") || { sisyphus agent submit "Synthesis deck failed — deck: $synth_deck"; exit 1; }
92
+ [ -n "$result" ] || { sisyphus agent submit "Synthesis deck: empty result — deck: $synth_deck"; exit 1; }
93
+ choice=$(echo "$result" | jq -r '.responses[0].selectedOptionId // empty')
94
+ notes=$(echo "$result" | jq -r '.responses[0].freetext // ""')
95
+ ```
96
+
97
+ ## Routing after synthesis
98
+
99
+ All four option ids return to the dialogue loop's turn-deck flow.
100
+
101
+ - `breakthrough`, `useful`, `mixed` — carry the synthesis forward into the next turn's framing (the next turn deck body should reference what landed)
102
+ - `wrong-direction` — discards the synthesis but does not exit the loop
103
+ - `notes` flows into the next turn's framing regardless of `choice`
104
+
105
+ **Increment the turn counter `N`** before issuing the next turn deck. Skipping the increment produces two consecutive `Turn N — <lens>` subtitles with the same N, breaking inbox scannability.
106
+
107
+ ## Failure handling
108
+
109
+ - If more than four of eight agents return errors, surface partial results if any returned cleanly, otherwise bail
110
+ - If `termrender --tmux` fails on the synthesis render, bail with file path and exit code
111
+ - If the synthesis deck fails or returns empty, bail with the deck path
112
+
113
+ ## Body content rules
114
+
115
+ The deck `body` field uses `##` headings, bullet lists, and bold only — no tables, no code fences, no termrender directives.
@@ -0,0 +1,105 @@
1
+ ---
2
+ name: problem-document
3
+ description: >
4
+ Load when ready to draft `context/problem.md` — the thinking artifact that orients downstream agents (spec, plan, implement) to why the work exists. Provides design principles, the section vocabulary to pick from, and an anchor example showing the target style. Use this before writing the draft, not after.
5
+ ---
6
+
7
+ # Designing the problem document
8
+
9
+ The problem document is a **thinking artifact**, not a spec. Its job is to orient downstream agents (spec, plan, implement) to *why* the work exists — what hurts, what's the non-obvious trick, what matters, what's risky — tightly enough that they can read the whole thing in under thirty seconds.
10
+
11
+ ## Design principles
12
+
13
+ - **Scannable, not exhaustive.** A downstream agent reads this once before doing real work. It needs to walk away with the right mental model, not every detail of the conversation that produced it.
14
+ - **Sections are a vocabulary, not a checklist.** Use the sections that earn their place for *this* problem. Skip ones that don't. Add ones that do. Different problems need different shapes.
15
+ - **Each section answers a question a downstream agent would ask:** "What hurts? What's the trick? What are we building? Why is it tricky? What does done look like? What can't we do? What's still up in the air?" If a section doesn't answer one of those, cut it.
16
+ - **Tables and bullets do the structural work; prose fills gaps where tables would feel forced.** A central decision shown as a 2-row table is worth ten sentences of paragraph.
17
+ - **No alternatives section.** The forks you considered and rejected lived in the conversation — they don't need to live in the artifact. Downstream agents care about the path forward, not the paths not taken.
18
+ - **Length follows from clarity, not from rules.** When the thinking is crisp, the document is short on its own. If a section feels like it wants more words, the answer is usually to tighten the thinking, not expand the section.
19
+
20
+ ## Section vocabulary
21
+
22
+ Pick what earns its place; rename freely.
23
+
24
+ - **The pain / what's wrong** — what hurts and why now
25
+ - **Key insight** — the non-obvious understanding that reframes the problem
26
+ - **What we're building** — the artifact(s) or change(s) the work produces
27
+ - **Why it's tricky** — failure modes, mental traps, things that defeat the obvious approach
28
+ - **What success looks like** — concrete outcomes, not metrics theater
29
+ - **Constraints** — what bounds the solution (not assumptions, not anti-goals — actual bounds)
30
+ - **Open questions** — unresolved choices the next phase needs to make
31
+
32
+ ## Anchor example
33
+
34
+ This is the target style — terse, scannable, structured by what serves the content rather than by template:
35
+
36
+ <example>
37
+ # Session debugging is too expensive to do
38
+
39
+ ## The pain
40
+ When a sisyphus session produces unexpected output, the maintainer can't
41
+ cheaply learn from it. The choice is between re-teaching Claude the
42
+ architecture every conversation, or doing manual archaeology across raw
43
+ JSONL files. Both are expensive enough that the learning loop gets skipped
44
+ entirely.
45
+
46
+ ## Key insight
47
+ The data is already on disk — sisyphus just doesn't read it. Every agent's
48
+ full transcript lives at `~/.claude/projects/<cwd>/<sessionId>.jsonl` with
49
+ file touches, tokens, subagent spawns, and timing. The fix is a reader, not
50
+ new instrumentation.
51
+
52
+ ## The two artifacts
53
+
54
+ | What | Why it's needed |
55
+ |---|---|
56
+ | **Debugging toolkit** (CLI verbs) | Cheap "what happened in session X" lookups Claude can compose with grep/jq |
57
+ | **Architecture skill** (SKILL.md) | A mental model Claude can pull when reasoning about sisyphus runtime — the novel multi-agent design defeats its priors |
58
+
59
+ Useless apart, powerful together. The toolkit answers *what*; the skill
60
+ answers *how to make sense of what*.
61
+
62
+ ## Why the skill matters
63
+
64
+ Claude's failure modes when reasoning about sisyphus are predictable:
65
+ - Treats the orchestrator as a long-running process with memory (it's
66
+ stateless, fork-per-cycle)
67
+ - Conflates sisyphus-managed agents with Claude-Code-managed Task-tool
68
+ subagents
69
+ - Misses that "completed" means three different things at three levels
70
+ - Loses track of which channel agents communicate over
71
+
72
+ These aren't undocumented — they're scattered across CLAUDE.md files framed
73
+ as traps, not mental models. The skill is synthesis with decision heuristics,
74
+ not new philosophy.
75
+
76
+ ## What success looks like
77
+
78
+ - Maintainer says "investigate session X", Claude pulls the skill, runs a
79
+ couple of CLI queries, gives a grounded diagnosis citing real file paths
80
+ and JSONL evidence — no re-teaching
81
+ - Same skill loads automatically for high-level architecture discussions,
82
+ not just debugging
83
+ - Zero new instrumentation — derived from data already on disk plus a
84
+ one-line fix to complete an existing index
85
+
86
+ ## Constraints
87
+
88
+ - Claude Code JSONL format isn't a stable contract — reader must degrade
89
+ gracefully if Anthropic changes it
90
+ - Codex/OpenAI agents have no equivalent transcript — known blind spot,
91
+ not in scope
92
+
93
+ ## Open questions
94
+
95
+ - Skill scope: one broad "sisyphus" skill (architecture + debugging) or
96
+ split into two?
97
+ - Pre-fix sessions: accept they're harder to debug, or add an mtime-proximity
98
+ fallback in the reader?
99
+ </example>
100
+
101
+ Notice what this example *doesn't* have: no "Alternatives Considered," no "Assumptions" section, no "User Experience" header (folded into success), no "Anti-Goals." Each section earned its place because the content needed it. A different problem would skip "Why the skill matters" and add "Migration path" or "User flows" — whatever the content demands.
102
+
103
+ ## Bifurcation case
104
+
105
+ If the conversation revealed that the scope contains **independent sub-problems** rather than one problem with sub-parts, do not write a unified `problem.md`. Instead, use the bifurcation-exit pattern from the agent prompt — the orchestrator handles re-entering discovery for each sub-problem.
@@ -0,0 +1,83 @@
1
+ ---
2
+ name: problem-plateau-breakers
3
+ description: >
4
+ Load when the problem-agent dialogue loop signals the conversation has stalled — repeated circling, user freetext like "different angle" / "going nowhere" / "feels stuck", or the agent senses it has been chasing the same framing for several turns without traction. Provides four breaker-deck shapes (flip, zoom-out, zoom-in, name-tension) and the routing for each. Increments the turn counter and returns control to the dialogue loop.
5
+ ---
6
+
7
+ # Plateau-breaker decks
8
+
9
+ When the conversation circles, the user wants a *different shape of question*, not another variation of the same one. Pick the breaker whose move matches the stall pattern, issue the deck, then resume the turn loop.
10
+
11
+ ## Pick the breaker type
12
+
13
+ | Type | Use when | Move |
14
+ |---|---|---|
15
+ | `flip` | The conversation keeps assuming a position is correct | Embrace the opposite — what changes if we believed the inverse? |
16
+ | `zoom-out` | The conversation is litigating details before establishing whether they matter | Step back — does this distinction even change the outcome? |
17
+ | `zoom-in` | The conversation is trading abstractions without testing them against a real case | Pick a concrete scenario and see if the framing survives |
18
+ | `name-tension` | Two values are being held in tension without naming the trade-off | Surface the tension itself as the question |
19
+
20
+ Choose one per stall. Do not chain breakers — if a breaker doesn't unstick the conversation, the next one is the *next* stall, counted toward the repeated-stuck guard.
21
+
22
+ ## Issue the deck
23
+
24
+ Required prior assignments before the heredoc:
25
+ - `type` — one of `flip` / `zoom-out` / `zoom-in` / `name-tension`
26
+
27
+ Angle-bracket placeholders (substitute literally before writing the heredoc):
28
+ - `<observation>` — what the conversation has been circling
29
+ - `<reframe>` — provisional alternative tied to the breaker type
30
+
31
+ ```bash
32
+ type=flip # or zoom-out / zoom-in / name-tension
33
+ deck="$SISYPHUS_SESSION_DIR/context/.ask-problem-plateau-${type}-$(date +%s)-$$.json"
34
+ cat > "$deck" <<EOF
35
+ {
36
+ "interactions": [{
37
+ "id": "problem-plateau-${type}",
38
+ "title": "Plateau breaker",
39
+ "subtitle": "Plateau breaker — ${type}",
40
+ "body": "## Stalled\n\n- <observation>\n\n## Reframe\n\n- <reframe>",
41
+ "kind": "decision",
42
+ "options": [
43
+ <options for this type — see table below>
44
+ ],
45
+ "allowFreetext": true,
46
+ "freetextLabel": "Or describe the angle differently"
47
+ }]
48
+ }
49
+ EOF
50
+ result=$(sisyphus ask "$deck") || { sisyphus agent submit "Plateau-breaker deck failed — type: $type — deck: $deck"; exit 1; }
51
+ [ -n "$result" ] || { sisyphus agent submit "Plateau-breaker deck: empty result — type: $type — deck: $deck"; exit 1; }
52
+ choice=$(echo "$result" | jq -r '.responses[0].selectedOptionId // empty')
53
+ notes=$(echo "$result" | jq -r '.responses[0].freetext // ""')
54
+ ```
55
+
56
+ ## Per-breaker options
57
+
58
+ Pre-substitute the matching row before writing the heredoc:
59
+
60
+ | `type` | Options (id / label) |
61
+ |---|---|
62
+ | `flip` | `embrace-flipped` / "Embrace the flipped position" · `stick-original` / "Stick with original" · `merge-both` / "Merge both" |
63
+ | `zoom-out` | `drop-doesnt-matter` / "Doesn't matter — drop" · `smaller-scope` / "Matters but smaller" · `matters-as-is` / "Matters as is" |
64
+ | `zoom-in` | `scenario-breaks-it` / "This scenario breaks it" · `scenario-holds` / "Scenario holds" · `different-scenario` / "Different scenario" |
65
+ | `name-tension` | `pick-side-A` / "Pick A" · `pick-side-B` / "Pick B" · `tension-itself` / "The tension itself is the problem" |
66
+
67
+ ## After the response
68
+
69
+ Increment the turn counter `N` and return to the dialogue loop's turn-deck flow. The user's `choice` and `notes` flow into the next turn's framing.
70
+
71
+ ## Body content rules
72
+
73
+ The deck `body` field uses `##` headings, bullet lists, and bold only — no tables, no code fences, no termrender directives. Violations fail `termrender --check` inside `parseDeck`.
74
+
75
+ ## Sanitize freetext on bail
76
+
77
+ If you bail with the user's freetext in the message, sanitize it first:
78
+
79
+ ```bash
80
+ safe_notes=$(printf '%s' "$notes" | tr -d '`$"\\')
81
+ ```
82
+
83
+ Raw `"$notes"` in a shell-interpolated bail message is a defect.
@@ -3,11 +3,10 @@
3
3
  You are an agent in a sisyphus session.
4
4
 
5
5
  - **Session ID**: {{SESSION_ID}}
6
- - **Your Task**: {{INSTRUCTION}}
7
6
 
8
7
  ## Reports
9
8
 
10
- Reports are non-terminal — you keep working after sending them. Use `sisyphus report` to flag things the orchestrator needs to know about:
9
+ Reports are non-terminal — you keep working after sending them. Use `sisyphus agent report` to flag things the orchestrator needs to know about:
11
10
 
12
11
  - **Code smells** — unexpected complexity, unclear architecture, code that seems wrong
13
12
  - **Out-of-scope issues** — failing tests, missing error handling, broken assumptions
@@ -16,7 +15,7 @@ Reports are non-terminal — you keep working after sending them. Use `sisyphus
16
15
  Report problems rather than working around them — the orchestrator can route these to the right agent. Stay focused on your task.
17
16
 
18
17
  ```bash
19
- echo "src/auth.ts:45 — session token not refreshed on redirect, circular dep between auth and session modules" | sisyphus report
18
+ echo "src/auth.ts:45 — session token not refreshed on redirect, circular dep between auth and session modules" | sisyphus agent report
20
19
  ```
21
20
 
22
21
  ## Finishing
@@ -24,7 +23,7 @@ echo "src/auth.ts:45 — session token not refreshed on redirect, circular dep b
24
23
  When done, submit your final report via the CLI. This is terminal — your pane closes after.
25
24
 
26
25
  ```bash
27
- echo "your full report here" | sisyphus submit
26
+ echo "your full report here" | sisyphus agent submit
28
27
  ```
29
28
 
30
29
  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.
@@ -33,6 +32,10 @@ If you're blocked by ambiguity, contradictions, or unclear requirements — **do
33
32
 
34
33
  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
34
 
35
+ ## Context
36
+
37
+ Session context directory: @{{CONTEXT_DIR}}
38
+
36
39
  ## Guidelines
37
40
 
38
41
  - Always include exact file paths and line numbers in reports and submissions
@@ -0,0 +1,42 @@
1
+ -- Sisyphus: ANSI escape code rendering for neovim
2
+ -- Auto-detects buffers containing ANSI escape codes and colorizes them.
3
+ -- Installed by `sisyphus admin setup`. Safe to customize or remove.
4
+ return {
5
+ "m00qek/baleia.nvim",
6
+ version = "*",
7
+ event = "BufReadPost",
8
+ config = function()
9
+ local b = require("baleia").setup({ async = false })
10
+
11
+ local function has_ansi(buf)
12
+ local count = vim.api.nvim_buf_line_count(buf)
13
+ local lines = vim.api.nvim_buf_get_lines(buf, 0, math.min(100, count), false)
14
+ for _, line in ipairs(lines) do
15
+ if line:find("\27%[") then
16
+ return true
17
+ end
18
+ end
19
+ return false
20
+ end
21
+
22
+ -- Colorize the buffer that triggered the plugin load
23
+ if has_ansi(0) then
24
+ b.once(0)
25
+ end
26
+
27
+ -- Auto-detect for all future buffers
28
+ vim.api.nvim_create_autocmd("BufReadPost", {
29
+ callback = function(ev)
30
+ if has_ansi(ev.buf) then
31
+ vim.defer_fn(function()
32
+ b.once(ev.buf)
33
+ end, 10)
34
+ end
35
+ end,
36
+ })
37
+
38
+ vim.api.nvim_create_user_command("BaleiaColorize", function()
39
+ b.once(vim.api.nvim_get_current_buf())
40
+ end, {})
41
+ end,
42
+ }
@@ -1,3 +1,3 @@
1
1
  #!/bin/bash
2
2
  if [ -z "$SISYPHUS_COMPANION_CWD" ]; then exit 0; fi
3
- sisyphus companion-context --cwd "$SISYPHUS_COMPANION_CWD" 2>/dev/null
3
+ sisyphus companion context --cwd "$SISYPHUS_COMPANION_CWD" 2>/dev/null
@@ -18,9 +18,13 @@ Session context is injected automatically via hook on each prompt. Run `sisyphus
18
18
  ```
19
19
  sisyphus list # List sessions for this project
20
20
  sisyphus status <session-id> # Show detailed session status
21
- sisyphus message "<content>" --session <id> # Queue message for orchestrator
22
- sisyphus kill <session-id> # Kill a session and all its agents
23
- sisyphus resume <session-id> "instructions" # Resume a completed/paused session
21
+ sisyphus message "<content>" --session <id> # Queue message for orchestrator (read on next cycle)
22
+ sisyphus tell <target> "<text>" --session <id> # Type prompt directly into a running pane (immediate); target = orchestrator | agent-NNN
23
+ # --no-submit pastes without pressing Enter; --text-from-stdin reads body from stdin
24
+ sisyphus read <target> --session <id> # Print Claude conversation transcript for a target
25
+ # --tail N / --head N to slice; --summary for one-line-per-turn; --cycle N for a specific orchestrator cycle
26
+ sisyphus session kill <session-id> # Kill a session and all its agents
27
+ sisyphus session resume <session-id> "instructions" # Resume a completed/paused session
24
28
  sisyphus start "task" # Start a new orchestrated session
25
29
  sisyphus start "task" -c "background context" # Start with additional context
26
30
  ```