sisyphi 1.0.13 → 1.0.14
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/dist/{chunk-LWWRGQWM.js → chunk-MMA43N67.js} +2 -2
- package/dist/chunk-MMA43N67.js.map +1 -0
- package/dist/{chunk-T7ETTIQK.js → chunk-Q6VQOUN3.js} +2 -2
- package/dist/{chunk-JXKUI4P6.js → chunk-YGBGKMTF.js} +1 -28
- package/dist/{chunk-JXKUI4P6.js.map → chunk-YGBGKMTF.js.map} +1 -1
- package/dist/cli.js +51 -23
- package/dist/cli.js.map +1 -1
- package/dist/daemon.js +245 -97
- package/dist/daemon.js.map +1 -1
- package/dist/{paths-NUUALUVP.js → paths-FYYSBD27.js} +2 -2
- package/dist/templates/agent-plugin/agents/spec-draft.md +1 -1
- package/dist/templates/agent-plugin/agents/test-spec.md +1 -1
- package/dist/templates/agent-plugin/hooks/require-submit.sh +1 -1
- package/dist/templates/orchestrator-base.md +6 -4
- package/dist/templates/orchestrator-planning.md +1 -1
- package/dist/tui.js +2671 -2908
- package/dist/tui.js.map +1 -1
- package/package.json +2 -4
- package/templates/agent-plugin/agents/spec-draft.md +1 -1
- package/templates/agent-plugin/agents/test-spec.md +1 -1
- package/templates/agent-plugin/hooks/require-submit.sh +1 -1
- package/templates/orchestrator-base.md +6 -4
- package/templates/orchestrator-planning.md +1 -1
- package/dist/chunk-LWWRGQWM.js.map +0 -1
- /package/dist/{chunk-T7ETTIQK.js.map → chunk-Q6VQOUN3.js.map} +0 -0
- /package/dist/{paths-NUUALUVP.js.map → paths-FYYSBD27.js.map} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sisyphi",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.14",
|
|
4
4
|
"description": "tmux-integrated orchestration daemon for Claude Code multi-agent workflows",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,13 +38,11 @@
|
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@r-cli/sdk": "^1.2.0",
|
|
40
40
|
"commander": "^13.1.0",
|
|
41
|
-
"
|
|
42
|
-
"react": "^18.3.1",
|
|
41
|
+
"string-width": "^5.1.2",
|
|
43
42
|
"uuid": "^11.1.0"
|
|
44
43
|
},
|
|
45
44
|
"devDependencies": {
|
|
46
45
|
"@types/node": "^22.13.4",
|
|
47
|
-
"@types/react": "^18.3.28",
|
|
48
46
|
"@types/uuid": "^10.0.0",
|
|
49
47
|
"tsup": "^8.4.0",
|
|
50
48
|
"tsx": "^4.21.0",
|
|
@@ -62,7 +62,7 @@ Cover: ambiguous requirements, design choices with multiple valid approaches, sc
|
|
|
62
62
|
|
|
63
63
|
### 4. Write Spec (only after user sign-off)
|
|
64
64
|
|
|
65
|
-
Once the user confirms the direction, save to
|
|
65
|
+
Once the user confirms the direction, save to `$SISYPHUS_SESSION_DIR/context/`:
|
|
66
66
|
|
|
67
67
|
**`spec-{topic}.md`** — High-level spec:
|
|
68
68
|
- **Summary** — One paragraph
|
|
@@ -20,7 +20,7 @@ Implementation drifts from plans. Function names change, files move, APIs get re
|
|
|
20
20
|
|
|
21
21
|
## Output Format
|
|
22
22
|
|
|
23
|
-
Save to
|
|
23
|
+
Save to `$SISYPHUS_SESSION_DIR/context/test-spec-{topic}.md`:
|
|
24
24
|
|
|
25
25
|
```markdown
|
|
26
26
|
# {Topic} — Behavioral Test Spec
|
|
@@ -14,7 +14,7 @@ if [ "$STOP_ACTIVE" = "True" ]; then
|
|
|
14
14
|
fi
|
|
15
15
|
|
|
16
16
|
# Check if the agent already submitted its final report
|
|
17
|
-
REPORT_FILE="${
|
|
17
|
+
REPORT_FILE="${SISYPHUS_SESSION_DIR}/reports/${SISYPHUS_AGENT_ID}-final.md"
|
|
18
18
|
if [ -f "$REPORT_FILE" ]; then
|
|
19
19
|
exit 0
|
|
20
20
|
fi
|
|
@@ -24,7 +24,7 @@ This means:
|
|
|
24
24
|
|
|
25
25
|
You are respawned fresh each cycle with the latest session state. You have no memory beyond what's in your prompt. **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.
|
|
26
26
|
|
|
27
|
-
**Agent reports are saved in `reports/`.** The most recent cycle's reports are included in full in your prompt. For older cycles, read report files from the `reports/` directory when you need detail. Delegate to agents that create specs and plans and save context to
|
|
27
|
+
**Agent reports are saved in `reports/`.** The most recent cycle's reports are included in full in your prompt. For older cycles, read report files from the `reports/` directory when you need detail. Delegate to agents that create specs and plans and save context to `$SISYPHUS_SESSION_DIR/context/` — they're your primary tool for preserving context across cycles.
|
|
28
28
|
|
|
29
29
|
## Each Cycle
|
|
30
30
|
|
|
@@ -70,7 +70,7 @@ Use judgment about what's "significant." A one-file refactor doesn't need user s
|
|
|
70
70
|
|
|
71
71
|
## roadmap.md and Cycle Logs
|
|
72
72
|
|
|
73
|
-
A roadmap file and per-cycle log files live in the session directory (
|
|
73
|
+
A roadmap file and per-cycle log files live in the session directory (`$SISYPHUS_SESSION_DIR/`). **You own these files** — read and edit them directly.
|
|
74
74
|
|
|
75
75
|
### roadmap.md — Your development workflow
|
|
76
76
|
|
|
@@ -190,7 +190,7 @@ More cycles with working, verified, reviewed code beats fewer cycles with large
|
|
|
190
190
|
|
|
191
191
|
## Context Directory
|
|
192
192
|
|
|
193
|
-
The context directory (
|
|
193
|
+
The context directory (`$SISYPHUS_SESSION_DIR/context/`) is for persistent artifacts too large for agent instructions or logs: specs, implementation plans, exploration findings, test strategies, e2e verification recipes.
|
|
194
194
|
|
|
195
195
|
Context dir contents are listed in your prompt each cycle. Read files when you need full detail.
|
|
196
196
|
|
|
@@ -201,7 +201,7 @@ Context dir contents are listed in your prompt each cycle. Read files when you n
|
|
|
201
201
|
|
|
202
202
|
## Session Directory
|
|
203
203
|
|
|
204
|
-
Each session lives at
|
|
204
|
+
Each session lives at `$SISYPHUS_SESSION_DIR/` with this structure:
|
|
205
205
|
|
|
206
206
|
- `state.json` — Session state (managed by daemon, do not edit)
|
|
207
207
|
- `roadmap.md` — Development workflow document (you own this)
|
|
@@ -233,6 +233,8 @@ sisyphus spawn --name "feat-api" --agent-type sisyphus:implement --worktree "Add
|
|
|
233
233
|
|
|
234
234
|
{{AGENT_TYPES}}
|
|
235
235
|
|
|
236
|
+
> **Prefer sisyphus agents.** When multiple agent types offer similar capabilities, choose `sisyphus:*` agents — they are purpose-built for multi-agent orchestration with proper session integration, reporting, and lifecycle management.
|
|
237
|
+
|
|
236
238
|
### Slash Commands
|
|
237
239
|
|
|
238
240
|
Agents can invoke slash commands via `/skill:name` syntax to load specialized methodologies:
|
|
@@ -6,7 +6,7 @@ The natural sequence: **context → spec → roadmap refinement → detailed pla
|
|
|
6
6
|
|
|
7
7
|
## Exploration
|
|
8
8
|
|
|
9
|
-
Use explore agents to build understanding before making decisions. Each agent should save a focused context document to
|
|
9
|
+
Use explore agents to build understanding before making decisions. Each agent should save a focused context document to `$SISYPHUS_SESSION_DIR/context/` — these artifacts get passed to downstream agents so they don't have to re-explore the codebase themselves.
|
|
10
10
|
|
|
11
11
|
Adapt the number and focus of explore agents to the task. Key principles:
|
|
12
12
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/shared/config.ts","../src/shared/env.ts","../src/shared/exec.ts"],"sourcesContent":["import { readFileSync } from 'node:fs';\nimport { globalConfigPath, projectConfigPath } from './paths.js';\n\nexport interface WorktreeConfig {\n copy?: string[];\n clone?: string[];\n symlink?: string[];\n init?: string;\n}\n\nexport type EffortLevel = 'low' | 'medium' | 'high' | 'max';\n\nexport interface Config {\n model?: string;\n tmuxSession?: string;\n orchestratorPrompt?: string;\n pollIntervalMs?: number;\n autoUpdate?: boolean;\n orchestratorEffort?: EffortLevel;\n agentEffort?: EffortLevel;\n editor?: string;\n}\n\nconst DEFAULT_CONFIG: Config = {\n pollIntervalMs: 5000,\n orchestratorEffort: 'high',\n agentEffort: 'medium',\n};\n\nfunction readJsonFile(filePath: string): Partial<Config> {\n try {\n const content = readFileSync(filePath, 'utf-8');\n return JSON.parse(content) as Partial<Config>;\n } catch {\n return {};\n }\n}\n\nexport function loadConfig(cwd: string): Config {\n const global = readJsonFile(globalConfigPath());\n const project = readJsonFile(projectConfigPath(cwd));\n return { ...DEFAULT_CONFIG, ...global, ...project };\n}\n","/**\n * Build a PATH string that includes common binary directories\n * across package managers and platforms.\n *\n * Prepends known directories that exist on the system to the current PATH.\n * This ensures tmux commands can find binaries installed by Homebrew,\n * MacPorts, nix, and other package managers.\n */\nexport function augmentedPath(): string {\n const rawPath = process.env['PATH'];\n const basePath = rawPath !== undefined && rawPath.length > 0 ? rawPath : '/usr/bin:/bin';\n\n // Common binary directories across platforms/package managers.\n // Only prepend ones that aren't already in PATH.\n const candidates = [\n '/opt/homebrew/bin', // Homebrew (Apple Silicon macOS)\n '/opt/homebrew/sbin', // Homebrew sbin\n '/usr/local/bin', // Homebrew (Intel macOS), manual installs\n '/usr/local/sbin', // Manual installs\n '/opt/local/bin', // MacPorts\n '/opt/local/sbin', // MacPorts\n '/home/linuxbrew/.linuxbrew/bin', // Linuxbrew\n ];\n\n // Check for nix profile paths\n const nixProfile = process.env['NIX_PROFILES'];\n if (nixProfile) {\n for (const p of nixProfile.split(' ').reverse()) {\n candidates.push(`${p}/bin`);\n }\n }\n\n const existing = new Set(basePath.split(':'));\n const prepend = candidates.filter(dir => !existing.has(dir));\n\n return prepend.length > 0 ? `${prepend.join(':')}:${basePath}` : basePath;\n}\n\n/**\n * Environment variables for child processes that need access to\n * user-installed binaries (tmux, git, claude, etc.).\n */\nexport function execEnv(): Record<string, string | undefined> {\n return {\n ...process.env,\n PATH: augmentedPath(),\n };\n}\n","import { execSync } from 'node:child_process';\nimport { execEnv } from './env.js';\n\nexport const EXEC_ENV = execEnv();\n\nexport function exec(cmd: string, cwd?: string): string {\n return execSync(cmd, { encoding: 'utf-8', env: EXEC_ENV, cwd }).trim();\n}\n\nexport function execSafe(cmd: string, cwd?: string): string | null {\n try {\n return execSync(cmd, { encoding: 'utf-8', env: EXEC_ENV, cwd, stdio: ['pipe', 'pipe', 'pipe'] }).trim();\n } catch { return null; }\n}\n"],"mappings":";;;;;;;AAAA,SAAS,oBAAoB;AAuB7B,IAAM,iBAAyB;AAAA,EAC7B,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,aAAa;AACf;AAEA,SAAS,aAAa,UAAmC;AACvD,MAAI;AACF,UAAM,UAAU,aAAa,UAAU,OAAO;AAC9C,WAAO,KAAK,MAAM,OAAO;AAAA,EAC3B,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAEO,SAAS,WAAW,KAAqB;AAC9C,QAAM,SAAS,aAAa,iBAAiB,CAAC;AAC9C,QAAM,UAAU,aAAa,kBAAkB,GAAG,CAAC;AACnD,SAAO,EAAE,GAAG,gBAAgB,GAAG,QAAQ,GAAG,QAAQ;AACpD;;;AClCO,SAAS,gBAAwB;AACtC,QAAM,UAAU,QAAQ,IAAI,MAAM;AAClC,QAAM,WAAW,YAAY,UAAa,QAAQ,SAAS,IAAI,UAAU;AAIzE,QAAM,aAAa;AAAA,IACjB;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,IACA;AAAA;AAAA,EACF;AAGA,QAAM,aAAa,QAAQ,IAAI,cAAc;AAC7C,MAAI,YAAY;AACd,eAAW,KAAK,WAAW,MAAM,GAAG,EAAE,QAAQ,GAAG;AAC/C,iBAAW,KAAK,GAAG,CAAC,MAAM;AAAA,IAC5B;AAAA,EACF;AAEA,QAAM,WAAW,IAAI,IAAI,SAAS,MAAM,GAAG,CAAC;AAC5C,QAAM,UAAU,WAAW,OAAO,SAAO,CAAC,SAAS,IAAI,GAAG,CAAC;AAE3D,SAAO,QAAQ,SAAS,IAAI,GAAG,QAAQ,KAAK,GAAG,CAAC,IAAI,QAAQ,KAAK;AACnE;AAMO,SAAS,UAA8C;AAC5D,SAAO;AAAA,IACL,GAAG,QAAQ;AAAA,IACX,MAAM,cAAc;AAAA,EACtB;AACF;;;AC/CA,SAAS,gBAAgB;AAGlB,IAAM,WAAW,QAAQ;AAEzB,SAAS,KAAK,KAAa,KAAsB;AACtD,SAAO,SAAS,KAAK,EAAE,UAAU,SAAS,KAAK,UAAU,IAAI,CAAC,EAAE,KAAK;AACvE;AAEO,SAAS,SAAS,KAAa,KAA6B;AACjE,MAAI;AACF,WAAO,SAAS,KAAK,EAAE,UAAU,SAAS,KAAK,UAAU,KAAK,OAAO,CAAC,QAAQ,QAAQ,MAAM,EAAE,CAAC,EAAE,KAAK;AAAA,EACxG,QAAQ;AAAE,WAAO;AAAA,EAAM;AACzB;","names":[]}
|
|
File without changes
|
|
File without changes
|