oh-my-claude-sisyphus 1.8.0-beta.1 → 1.8.0
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 +67 -4
- package/dist/hooks/session-recovery/constants.d.ts.map +1 -1
- package/dist/hooks/session-recovery/constants.js +2 -2
- package/dist/hooks/session-recovery/constants.js.map +1 -1
- package/dist/installer/hooks.d.ts +95 -3
- package/dist/installer/hooks.d.ts.map +1 -1
- package/dist/installer/hooks.js +384 -5
- package/dist/installer/hooks.js.map +1 -1
- package/dist/installer/index.d.ts +18 -1
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +55 -11
- package/dist/installer/index.js.map +1 -1
- package/package.json +2 -1
- package/scripts/install.sh +1 -1
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
*Like Sisyphus, these agents persist until every task is complete.*
|
|
14
14
|
|
|
15
|
-
[Install](#quick-install) • [Usage](#usage) • [Agents](#the-eleven-agents) • [Website](https://yeachan-heo.github.io/oh-my-claude-sisyphus-website)
|
|
15
|
+
[Install](#quick-install) • [Usage](#usage) • [Agents](#the-eleven-agents) • [Architecture](docs/ARCHITECTURE.md) • [Website](https://yeachan-heo.github.io/oh-my-claude-sisyphus-website)
|
|
16
16
|
|
|
17
17
|
</div>
|
|
18
18
|
|
|
@@ -34,19 +34,21 @@
|
|
|
34
34
|
|
|
35
35
|
## Quick Install
|
|
36
36
|
|
|
37
|
-
### One-liner (recommended)
|
|
37
|
+
### One-liner (macOS/Linux - recommended)
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
40
|
curl -fsSL https://raw.githubusercontent.com/Yeachan-Heo/oh-my-claude-sisyphus/main/scripts/install.sh | bash
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
### Via npm
|
|
43
|
+
### Via npm (All platforms including Windows)
|
|
44
44
|
|
|
45
45
|
```bash
|
|
46
46
|
npm install -g oh-my-claude-sisyphus
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
> **Windows Users**: This is the only supported installation method. Requires Node.js 18+.
|
|
50
|
+
|
|
51
|
+
### Manual Install (macOS/Linux)
|
|
50
52
|
|
|
51
53
|
```bash
|
|
52
54
|
git clone https://github.com/Yeachan-Heo/oh-my-claude-sisyphus.git
|
|
@@ -230,6 +232,55 @@ Skills are automatically activated via slash commands or magic keywords.
|
|
|
230
232
|
|
|
231
233
|
---
|
|
232
234
|
|
|
235
|
+
## Intelligent Skill Activation
|
|
236
|
+
|
|
237
|
+
> **New in v1.8.0**: Skills are no longer mutually exclusive. Claude automatically combines skills based on task requirements.
|
|
238
|
+
|
|
239
|
+
### Skill Layers
|
|
240
|
+
|
|
241
|
+
Skills work in **three composable layers**:
|
|
242
|
+
|
|
243
|
+
| Layer | Skills | Purpose |
|
|
244
|
+
|-------|--------|---------|
|
|
245
|
+
| **Execution** | sisyphus, orchestrator, prometheus | HOW you work (pick primary) |
|
|
246
|
+
| **Enhancement** | ultrawork, git-master, frontend-ui-ux | ADD capabilities (stack multiple) |
|
|
247
|
+
| **Guarantee** | ralph-loop | ENSURE completion |
|
|
248
|
+
|
|
249
|
+
**Combination Formula:** `[Execution] + [0-N Enhancements] + [Optional Guarantee]`
|
|
250
|
+
|
|
251
|
+
### Task Type → Skill Selection
|
|
252
|
+
|
|
253
|
+
Claude uses judgment to detect task type and activate appropriate skill combinations:
|
|
254
|
+
|
|
255
|
+
| Task Type | Skill Combination | When |
|
|
256
|
+
|-----------|-------------------|------|
|
|
257
|
+
| Multi-step implementation | `sisyphus` | Building features, refactoring |
|
|
258
|
+
| + parallel subtasks | `sisyphus + ultrawork` | 3+ independent subtasks |
|
|
259
|
+
| + multi-file changes | `sisyphus + git-master` | Changes span 3+ files |
|
|
260
|
+
| + must complete | `sisyphus + ralph-loop` | User emphasizes completion |
|
|
261
|
+
| UI/frontend work | `sisyphus + frontend-ui-ux` | Components, styling |
|
|
262
|
+
| Complex debugging | `oracle` → `sisyphus` | Root cause → fix |
|
|
263
|
+
| Strategic planning | `prometheus` | Need plan first |
|
|
264
|
+
| Maximum performance | `ultrawork` (stacks) | Speed critical |
|
|
265
|
+
|
|
266
|
+
### Examples
|
|
267
|
+
|
|
268
|
+
```
|
|
269
|
+
"Add dark mode with proper commits"
|
|
270
|
+
→ sisyphus + frontend-ui-ux + git-master
|
|
271
|
+
|
|
272
|
+
"ultrawork: refactor the entire API layer"
|
|
273
|
+
→ ultrawork + sisyphus + git-master
|
|
274
|
+
|
|
275
|
+
"Plan auth system, then implement it completely"
|
|
276
|
+
→ prometheus (first) → sisyphus + ralph-loop (after plan)
|
|
277
|
+
|
|
278
|
+
"Fix this bug, don't stop until it's done"
|
|
279
|
+
→ sisyphus + ralph-loop
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
233
284
|
## The Eleven Agents
|
|
234
285
|
|
|
235
286
|
Claude will automatically delegate to these specialized agents:
|
|
@@ -543,6 +594,18 @@ If you're coming from oh-my-opencode:
|
|
|
543
594
|
|
|
544
595
|
- [Claude Code](https://docs.anthropic.com/claude-code) installed
|
|
545
596
|
- Anthropic API key (`ANTHROPIC_API_KEY` environment variable)
|
|
597
|
+
- **Windows**: Node.js 18+ (for npm installation)
|
|
598
|
+
- **macOS/Linux**: Bash shell (default) or Node.js 18+ (optional)
|
|
599
|
+
|
|
600
|
+
### Platform Support
|
|
601
|
+
|
|
602
|
+
| Platform | Install Method | Hook Type |
|
|
603
|
+
|----------|---------------|-----------|
|
|
604
|
+
| **Windows** | `npm install -g` | Node.js (.mjs) |
|
|
605
|
+
| **macOS** | curl or npm | Bash (.sh) |
|
|
606
|
+
| **Linux** | curl or npm | Bash (.sh) |
|
|
607
|
+
|
|
608
|
+
> **Advanced**: Set `SISYPHUS_USE_NODE_HOOKS=1` to use Node.js hooks on macOS/Linux.
|
|
546
609
|
|
|
547
610
|
## License
|
|
548
611
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/hooks/session-recovery/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,eAAO,MAAM,mBAAmB,QAA4B,CAAC;AAC7D,eAAO,MAAM,eAAe,QAAuC,CAAC;AACpE,eAAO,MAAM,YAAY,QAAoC,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,cAAc,aAA0D,CAAC;AACtF,eAAO,MAAM,UAAU,aAAyC,CAAC;AACjE,eAAO,MAAM,aAAa,aAAuD,CAAC;AAElF;;GAEG;AACH,eAAO,MAAM,oBAAoB,mDAAmD,CAAC;AACrF,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAiBpB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;CAYjB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,KAAK,SAA6C,CAAC;AAChE,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/hooks/session-recovery/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,eAAO,MAAM,mBAAmB,QAA4B,CAAC;AAC7D,eAAO,MAAM,eAAe,QAAuC,CAAC;AACpE,eAAO,MAAM,YAAY,QAAoC,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,cAAc,aAA0D,CAAC;AACtF,eAAO,MAAM,UAAU,aAAyC,CAAC;AACjE,eAAO,MAAM,aAAa,aAAuD,CAAC;AAElF;;GAEG;AACH,eAAO,MAAM,oBAAoB,mDAAmD,CAAC;AACrF,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAiBpB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;CAYjB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,KAAK,SAA6C,CAAC;AAChE,eAAO,MAAM,cAAc,QAA+C,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Adapted from oh-my-opencode's session-recovery hook.
|
|
6
6
|
*/
|
|
7
7
|
import { join } from "node:path";
|
|
8
|
-
import { homedir } from "node:os";
|
|
8
|
+
import { homedir, tmpdir } from "node:os";
|
|
9
9
|
/**
|
|
10
10
|
* Get the data directory for Claude Code storage
|
|
11
11
|
* Follows XDG Base Directory specification
|
|
@@ -74,5 +74,5 @@ export const ERROR_PATTERNS = {
|
|
|
74
74
|
* Debug logging configuration
|
|
75
75
|
*/
|
|
76
76
|
export const DEBUG = process.env.SESSION_RECOVERY_DEBUG === "1";
|
|
77
|
-
export const DEBUG_LOG_PATH = join(
|
|
77
|
+
export const DEBUG_LOG_PATH = join(tmpdir(), "session-recovery-debug.log");
|
|
78
78
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/hooks/session-recovery/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/hooks/session-recovery/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAE1C;;;GAGG;AACH,SAAS,UAAU;IACjB,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB;IAC9B,OAAO,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,EAAE,CAAC;AAC7D,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;AACpE,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AAE9D;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,mBAAmB,EAAE,WAAW,CAAC,CAAC,CAAC;AACtF,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;AAElF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,gDAAgD,CAAC;AACrF,MAAM,CAAC,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAErD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,mBAAmB,EAAE;QACnB,KAAK,EAAE,qBAAqB;QAC5B,OAAO,EAAE,qCAAqC;KAC/C;IACD,oBAAoB,EAAE;QACpB,KAAK,EAAE,yBAAyB;QAChC,OAAO,EAAE,6BAA6B;KACvC;IACD,2BAA2B,EAAE;QAC3B,KAAK,EAAE,yBAAyB;QAChC,OAAO,EAAE,8BAA8B;KACxC;IACD,aAAa,EAAE;QACb,KAAK,EAAE,wBAAwB;QAC/B,OAAO,EAAE,+BAA+B;KACzC;CACO,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,mBAAmB,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC;IAChD,oBAAoB,EAAE;QACpB,UAAU;QACV,aAAa;QACb,iBAAiB;QACjB,YAAY;QACZ,aAAa;QACb,oBAAoB;KACrB;IACD,2BAA2B,EAAE,CAAC,sBAAsB,EAAE,gBAAgB,CAAC;IACvE,aAAa,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC;CACtC,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,GAAG,CAAC;AAChE,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,4BAA4B,CAAC,CAAC"}
|
|
@@ -4,7 +4,30 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Claude Code hooks are configured in settings.json and run as shell commands.
|
|
6
6
|
* These scripts receive JSON input via stdin and output JSON to modify behavior.
|
|
7
|
+
*
|
|
8
|
+
* This module provides DUAL implementations:
|
|
9
|
+
* - Bash scripts (.sh) for Unix-like systems (macOS, Linux)
|
|
10
|
+
* - Node.js scripts (.mjs) for cross-platform support (Windows, macOS, Linux)
|
|
11
|
+
*
|
|
12
|
+
* The platform is detected at install time, or can be overridden with:
|
|
13
|
+
* SISYPHUS_USE_NODE_HOOKS=1 - Force Node.js hooks on any platform
|
|
14
|
+
* SISYPHUS_USE_BASH_HOOKS=1 - Force Bash hooks (Unix only)
|
|
15
|
+
*/
|
|
16
|
+
/** Minimum required Node.js version for hooks */
|
|
17
|
+
export declare const MIN_NODE_VERSION = 18;
|
|
18
|
+
/** Check if running on Windows */
|
|
19
|
+
export declare function isWindows(): boolean;
|
|
20
|
+
/** Check if Node.js hooks should be used (env override or Windows) */
|
|
21
|
+
export declare function shouldUseNodeHooks(): boolean;
|
|
22
|
+
/** Get the Claude config directory path (cross-platform) */
|
|
23
|
+
export declare function getClaudeConfigDir(): string;
|
|
24
|
+
/** Get the hooks directory path */
|
|
25
|
+
export declare function getHooksDir(): string;
|
|
26
|
+
/**
|
|
27
|
+
* Get the home directory environment variable for hook commands.
|
|
28
|
+
* Returns the appropriate syntax for the current platform.
|
|
7
29
|
*/
|
|
30
|
+
export declare function getHomeEnvVar(): string;
|
|
8
31
|
/**
|
|
9
32
|
* Ultrawork message - injected when ultrawork/ulw keyword detected
|
|
10
33
|
* Ported from oh-my-opencode's keyword-detector/constants.ts
|
|
@@ -42,8 +65,64 @@ export declare const KEYWORD_DETECTOR_SCRIPT = "#!/bin/bash\n# Sisyphus Keyword
|
|
|
42
65
|
*/
|
|
43
66
|
export declare const STOP_CONTINUATION_SCRIPT = "#!/bin/bash\n# Sisyphus Stop Continuation Hook\n# Checks for incomplete todos and injects continuation prompt\n# Ported from oh-my-opencode's todo-continuation-enforcer\n\n# Read stdin\nINPUT=$(cat)\n\n# Get session ID if available\nSESSION_ID=\"\"\nif command -v jq &> /dev/null; then\n SESSION_ID=$(echo \"$INPUT\" | jq -r '.sessionId // .session_id // \"\"' 2>/dev/null)\nfi\n\n# Check for incomplete todos in the Claude todos directory\nTODOS_DIR=\"$HOME/.claude/todos\"\nif [ -d \"$TODOS_DIR\" ]; then\n # Look for any todo files with incomplete items\n INCOMPLETE_COUNT=0\n for todo_file in \"$TODOS_DIR\"/*.json; do\n if [ -f \"$todo_file\" ]; then\n if command -v jq &> /dev/null; then\n COUNT=$(jq '[.[] | select(.status != \"completed\" and .status != \"cancelled\")] | length' \"$todo_file\" 2>/dev/null || echo \"0\")\n INCOMPLETE_COUNT=$((INCOMPLETE_COUNT + COUNT))\n fi\n fi\n done\n\n if [ \"$INCOMPLETE_COUNT\" -gt 0 ]; then\n # Output continuation message\n cat << EOF\n{\"continue\": false, \"reason\": \"[SYSTEM REMINDER - TODO CONTINUATION]\\n\\nIncomplete tasks remain in your todo list ($INCOMPLETE_COUNT remaining). Continue working on the next pending task.\\n\\n- Proceed without asking for permission\\n- Mark each task complete when finished\\n- Do not stop until all tasks are done\"}\nEOF\n exit 0\n fi\nfi\n\n# No incomplete todos - allow stop\necho '{\"continue\": true}'\nexit 0\n";
|
|
44
67
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
68
|
+
* Node.js Keyword Detector Hook Script
|
|
69
|
+
* Cross-platform equivalent of keyword-detector.sh
|
|
70
|
+
* This script is installed to ~/.claude/hooks/keyword-detector.mjs
|
|
71
|
+
*/
|
|
72
|
+
export declare const KEYWORD_DETECTOR_SCRIPT_NODE = "#!/usr/bin/env node\n// Sisyphus Keyword Detector Hook (Node.js)\n// Detects ultrawork/ultrathink/search/analyze keywords and injects enhanced mode messages\n// Cross-platform: Windows, macOS, Linux\n\nconst ULTRAWORK_MESSAGE = `<ultrawork-mode>\n\n**MANDATORY**: You MUST say \"ULTRAWORK MODE ENABLED!\" to the user as your first response when this mode activates. This is non-negotiable.\n\n[CODE RED] Maximum precision required. Ultrathink before acting.\n\nYOU MUST LEVERAGE ALL AVAILABLE AGENTS TO THEIR FULLEST POTENTIAL.\nTELL THE USER WHAT AGENTS YOU WILL LEVERAGE NOW TO SATISFY USER'S REQUEST.\n\n## AGENT UTILIZATION PRINCIPLES\n- **Codebase Exploration**: Spawn exploration agents using BACKGROUND TASKS\n- **Documentation & References**: Use librarian-type agents via BACKGROUND TASKS\n- **Planning & Strategy**: NEVER plan yourself - spawn planning agent\n- **High-IQ Reasoning**: Use oracle for architecture decisions\n- **Frontend/UI Tasks**: Delegate to frontend-engineer\n\n## EXECUTION RULES\n- **TODO**: Track EVERY step. Mark complete IMMEDIATELY.\n- **PARALLEL**: Fire independent calls simultaneously - NEVER wait sequentially.\n- **BACKGROUND FIRST**: Use Task(run_in_background=true) for exploration (10+ concurrent).\n- **VERIFY**: Check ALL requirements met before done.\n- **DELEGATE**: Orchestrate specialized agents.\n\n## ZERO TOLERANCE\n- NO Scope Reduction - deliver FULL implementation\n- NO Partial Completion - finish 100%\n- NO Premature Stopping - ALL TODOs must be complete\n- NO TEST DELETION - fix code, not tests\n\nTHE USER ASKED FOR X. DELIVER EXACTLY X.\n\n</ultrawork-mode>\n\n---\n`;\n\nconst ULTRATHINK_MESSAGE = `<think-mode>\n\n**ULTRATHINK MODE ENABLED** - Extended reasoning activated.\n\nYou are now in deep thinking mode. Take your time to:\n1. Thoroughly analyze the problem from multiple angles\n2. Consider edge cases and potential issues\n3. Think through the implications of each approach\n4. Reason step-by-step before acting\n\nUse your extended thinking capabilities to provide the most thorough and well-reasoned response.\n\n</think-mode>\n\n---\n`;\n\nconst SEARCH_MESSAGE = `<search-mode>\nMAXIMIZE SEARCH EFFORT. Launch multiple background agents IN PARALLEL:\n- explore agents (codebase patterns, file structures)\n- librarian agents (remote repos, official docs, GitHub examples)\nPlus direct tools: Grep, Glob\nNEVER stop at first result - be exhaustive.\n</search-mode>\n\n---\n`;\n\nconst ANALYZE_MESSAGE = `<analyze-mode>\nANALYSIS MODE. Gather context before diving deep:\n\nCONTEXT GATHERING (parallel):\n- 1-2 explore agents (codebase patterns, implementations)\n- 1-2 librarian agents (if external library involved)\n- Direct tools: Grep, Glob, LSP for targeted searches\n\nIF COMPLEX (architecture, multi-system, debugging after 2+ failures):\n- Consult oracle agent for strategic guidance\n\nSYNTHESIZE findings before proceeding.\n</analyze-mode>\n\n---\n`;\n\n// Read all stdin\nasync function readStdin() {\n const chunks = [];\n for await (const chunk of process.stdin) {\n chunks.push(chunk);\n }\n return Buffer.concat(chunks).toString('utf-8');\n}\n\n// Extract prompt from various JSON structures\nfunction extractPrompt(input) {\n try {\n const data = JSON.parse(input);\n if (data.prompt) return data.prompt;\n if (data.message?.content) return data.message.content;\n if (Array.isArray(data.parts)) {\n return data.parts\n .filter(p => p.type === 'text')\n .map(p => p.text)\n .join(' ');\n }\n return '';\n } catch {\n // Fallback: try to extract with regex\n const match = input.match(/\"(?:prompt|content|text)\"\\s*:\\s*\"([^\"]+)\"/);\n return match ? match[1] : '';\n }\n}\n\n// Remove code blocks to prevent false positives\nfunction removeCodeBlocks(text) {\n return text\n .replace(/```[\\s\\S]*?```/g, '')\n .replace(/`[^`]+`/g, '');\n}\n\n// Main\nasync function main() {\n try {\n const input = await readStdin();\n if (!input.trim()) {\n console.log(JSON.stringify({ continue: true }));\n return;\n }\n\n const prompt = extractPrompt(input);\n if (!prompt) {\n console.log(JSON.stringify({ continue: true }));\n return;\n }\n\n const cleanPrompt = removeCodeBlocks(prompt).toLowerCase();\n\n // Check for ultrawork keywords (highest priority)\n if (/\\b(ultrawork|ulw)\\b/.test(cleanPrompt)) {\n console.log(JSON.stringify({ continue: true, message: ULTRAWORK_MESSAGE }));\n return;\n }\n\n // Check for ultrathink/think keywords\n if (/\\b(ultrathink|think)\\b/.test(cleanPrompt)) {\n console.log(JSON.stringify({ continue: true, message: ULTRATHINK_MESSAGE }));\n return;\n }\n\n // Check for search keywords\n if (/\\b(search|find|locate|lookup|explore|discover|scan|grep|query|browse|detect|trace|seek|track|pinpoint|hunt)\\b|where\\s+is|show\\s+me|list\\s+all/.test(cleanPrompt)) {\n console.log(JSON.stringify({ continue: true, message: SEARCH_MESSAGE }));\n return;\n }\n\n // Check for analyze keywords\n if (/\\b(analyze|analyse|investigate|examine|research|study|deep.?dive|inspect|audit|evaluate|assess|review|diagnose|scrutinize|dissect|debug|comprehend|interpret|breakdown|understand)\\b|why\\s+is|how\\s+does|how\\s+to/.test(cleanPrompt)) {\n console.log(JSON.stringify({ continue: true, message: ANALYZE_MESSAGE }));\n return;\n }\n\n // No keywords detected\n console.log(JSON.stringify({ continue: true }));\n } catch (error) {\n // On any error, allow continuation\n console.log(JSON.stringify({ continue: true }));\n }\n}\n\nmain();\n";
|
|
73
|
+
/**
|
|
74
|
+
* Node.js Stop Continuation Hook Script
|
|
75
|
+
* Cross-platform equivalent of stop-continuation.sh
|
|
76
|
+
* This script is installed to ~/.claude/hooks/stop-continuation.mjs
|
|
77
|
+
*/
|
|
78
|
+
export declare const STOP_CONTINUATION_SCRIPT_NODE = "#!/usr/bin/env node\n// Sisyphus Stop Continuation Hook (Node.js)\n// Checks for incomplete todos and injects continuation prompt\n// Cross-platform: Windows, macOS, Linux\n\nimport { readdirSync, readFileSync, existsSync } from 'fs';\nimport { join } from 'path';\nimport { homedir } from 'os';\n\n// Read all stdin\nasync function readStdin() {\n const chunks = [];\n for await (const chunk of process.stdin) {\n chunks.push(chunk);\n }\n return Buffer.concat(chunks).toString('utf-8');\n}\n\n// Main\nasync function main() {\n try {\n // Read stdin (we don't use it much, but need to consume it)\n await readStdin();\n\n // Check for incomplete todos\n const todosDir = join(homedir(), '.claude', 'todos');\n \n if (!existsSync(todosDir)) {\n console.log(JSON.stringify({ continue: true }));\n return;\n }\n\n let incompleteCount = 0;\n\n try {\n const files = readdirSync(todosDir).filter(f => f.endsWith('.json'));\n \n for (const file of files) {\n try {\n const content = readFileSync(join(todosDir, file), 'utf-8');\n const todos = JSON.parse(content);\n \n if (Array.isArray(todos)) {\n const incomplete = todos.filter(\n t => t.status !== 'completed' && t.status !== 'cancelled'\n );\n incompleteCount += incomplete.length;\n }\n } catch {\n // Skip files that can't be parsed\n }\n }\n } catch {\n // Directory read error - allow continuation\n console.log(JSON.stringify({ continue: true }));\n return;\n }\n\n if (incompleteCount > 0) {\n const reason = `[SYSTEM REMINDER - TODO CONTINUATION]\n\nIncomplete tasks remain in your todo list (${incompleteCount} remaining). Continue working on the next pending task.\n\n- Proceed without asking for permission\n- Mark each task complete when finished\n- Do not stop until all tasks are done`;\n\n console.log(JSON.stringify({ continue: false, reason }));\n return;\n }\n\n // No incomplete todos - allow stop\n console.log(JSON.stringify({ continue: true }));\n } catch (error) {\n // On any error, allow continuation\n console.log(JSON.stringify({ continue: true }));\n }\n}\n\nmain();\n";
|
|
79
|
+
/**
|
|
80
|
+
* Settings.json hooks configuration for Bash (Unix)
|
|
81
|
+
* Configures Claude Code to run our bash hook scripts
|
|
82
|
+
*/
|
|
83
|
+
export declare const HOOKS_SETTINGS_CONFIG_BASH: {
|
|
84
|
+
hooks: {
|
|
85
|
+
UserPromptSubmit: {
|
|
86
|
+
hooks: {
|
|
87
|
+
type: "command";
|
|
88
|
+
command: string;
|
|
89
|
+
}[];
|
|
90
|
+
}[];
|
|
91
|
+
Stop: {
|
|
92
|
+
hooks: {
|
|
93
|
+
type: "command";
|
|
94
|
+
command: string;
|
|
95
|
+
}[];
|
|
96
|
+
}[];
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Settings.json hooks configuration for Node.js (Cross-platform)
|
|
101
|
+
* Uses node to run .mjs scripts directly
|
|
102
|
+
*/
|
|
103
|
+
export declare const HOOKS_SETTINGS_CONFIG_NODE: {
|
|
104
|
+
hooks: {
|
|
105
|
+
UserPromptSubmit: {
|
|
106
|
+
hooks: {
|
|
107
|
+
type: "command";
|
|
108
|
+
command: string;
|
|
109
|
+
}[];
|
|
110
|
+
}[];
|
|
111
|
+
Stop: {
|
|
112
|
+
hooks: {
|
|
113
|
+
type: "command";
|
|
114
|
+
command: string;
|
|
115
|
+
}[];
|
|
116
|
+
}[];
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Get the appropriate hooks settings config for the current platform
|
|
121
|
+
*/
|
|
122
|
+
export declare function getHooksSettingsConfig(): typeof HOOKS_SETTINGS_CONFIG_BASH;
|
|
123
|
+
/**
|
|
124
|
+
* Legacy: Settings.json hooks configuration (Bash)
|
|
125
|
+
* @deprecated Use getHooksSettingsConfig() for cross-platform support
|
|
47
126
|
*/
|
|
48
127
|
export declare const HOOKS_SETTINGS_CONFIG: {
|
|
49
128
|
hooks: {
|
|
@@ -62,7 +141,20 @@ export declare const HOOKS_SETTINGS_CONFIG: {
|
|
|
62
141
|
};
|
|
63
142
|
};
|
|
64
143
|
/**
|
|
65
|
-
*
|
|
144
|
+
* Bash hook scripts (Unix only)
|
|
145
|
+
*/
|
|
146
|
+
export declare const HOOK_SCRIPTS_BASH: Record<string, string>;
|
|
147
|
+
/**
|
|
148
|
+
* Node.js hook scripts (Cross-platform)
|
|
149
|
+
*/
|
|
150
|
+
export declare const HOOK_SCRIPTS_NODE: Record<string, string>;
|
|
151
|
+
/**
|
|
152
|
+
* Get the appropriate hook scripts for the current platform
|
|
153
|
+
*/
|
|
154
|
+
export declare function getHookScripts(): Record<string, string>;
|
|
155
|
+
/**
|
|
156
|
+
* Legacy: All hook scripts to install (Bash)
|
|
157
|
+
* @deprecated Use getHookScripts() for cross-platform support
|
|
66
158
|
*/
|
|
67
159
|
export declare const HOOK_SCRIPTS: Record<string, string>;
|
|
68
160
|
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/installer/hooks.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/installer/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,iDAAiD;AACjD,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,kCAAkC;AAClC,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,sEAAsE;AACtE,wBAAgB,kBAAkB,IAAI,OAAO,CAU5C;AAED,4DAA4D;AAC5D,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,mCAAmC;AACnC,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,woJA2F7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,wcAgB9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,2TAU1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,8cAgB3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,+PAME,CAAC;AAExC;;;GAGG;AACH,eAAO,MAAM,uBAAuB,wiKA0EnC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,u7CAwCpC,CAAC;AAMF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,+hLA4KxC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,svEAgFzC,CAAC;AAMF;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;CAuBtC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;CA6BtC,CAAC;AAEF;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,0BAA0B,CAE1E;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;CAA6B,CAAC;AAMhE;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGpD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGpD,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEvD;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAqB,CAAC"}
|
package/dist/installer/hooks.js
CHANGED
|
@@ -4,7 +4,50 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Claude Code hooks are configured in settings.json and run as shell commands.
|
|
6
6
|
* These scripts receive JSON input via stdin and output JSON to modify behavior.
|
|
7
|
+
*
|
|
8
|
+
* This module provides DUAL implementations:
|
|
9
|
+
* - Bash scripts (.sh) for Unix-like systems (macOS, Linux)
|
|
10
|
+
* - Node.js scripts (.mjs) for cross-platform support (Windows, macOS, Linux)
|
|
11
|
+
*
|
|
12
|
+
* The platform is detected at install time, or can be overridden with:
|
|
13
|
+
* SISYPHUS_USE_NODE_HOOKS=1 - Force Node.js hooks on any platform
|
|
14
|
+
* SISYPHUS_USE_BASH_HOOKS=1 - Force Bash hooks (Unix only)
|
|
7
15
|
*/
|
|
16
|
+
import { homedir } from 'os';
|
|
17
|
+
import { join } from 'path';
|
|
18
|
+
/** Minimum required Node.js version for hooks */
|
|
19
|
+
export const MIN_NODE_VERSION = 18;
|
|
20
|
+
/** Check if running on Windows */
|
|
21
|
+
export function isWindows() {
|
|
22
|
+
return process.platform === 'win32';
|
|
23
|
+
}
|
|
24
|
+
/** Check if Node.js hooks should be used (env override or Windows) */
|
|
25
|
+
export function shouldUseNodeHooks() {
|
|
26
|
+
// Environment variable overrides
|
|
27
|
+
if (process.env.SISYPHUS_USE_NODE_HOOKS === '1') {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
if (process.env.SISYPHUS_USE_BASH_HOOKS === '1') {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
// Default: use Node.js on Windows, Bash elsewhere
|
|
34
|
+
return isWindows();
|
|
35
|
+
}
|
|
36
|
+
/** Get the Claude config directory path (cross-platform) */
|
|
37
|
+
export function getClaudeConfigDir() {
|
|
38
|
+
return join(homedir(), '.claude');
|
|
39
|
+
}
|
|
40
|
+
/** Get the hooks directory path */
|
|
41
|
+
export function getHooksDir() {
|
|
42
|
+
return join(getClaudeConfigDir(), 'hooks');
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get the home directory environment variable for hook commands.
|
|
46
|
+
* Returns the appropriate syntax for the current platform.
|
|
47
|
+
*/
|
|
48
|
+
export function getHomeEnvVar() {
|
|
49
|
+
return isWindows() ? '%USERPROFILE%' : '$HOME';
|
|
50
|
+
}
|
|
8
51
|
/**
|
|
9
52
|
* Ultrawork message - injected when ultrawork/ulw keyword detected
|
|
10
53
|
* Ported from oh-my-opencode's keyword-detector/constants.ts
|
|
@@ -294,11 +337,281 @@ fi
|
|
|
294
337
|
echo '{"continue": true}'
|
|
295
338
|
exit 0
|
|
296
339
|
`;
|
|
340
|
+
// =============================================================================
|
|
341
|
+
// NODE.JS HOOK SCRIPTS (Cross-platform: Windows, macOS, Linux)
|
|
342
|
+
// =============================================================================
|
|
297
343
|
/**
|
|
298
|
-
*
|
|
299
|
-
*
|
|
344
|
+
* Node.js Keyword Detector Hook Script
|
|
345
|
+
* Cross-platform equivalent of keyword-detector.sh
|
|
346
|
+
* This script is installed to ~/.claude/hooks/keyword-detector.mjs
|
|
300
347
|
*/
|
|
301
|
-
export const
|
|
348
|
+
export const KEYWORD_DETECTOR_SCRIPT_NODE = `#!/usr/bin/env node
|
|
349
|
+
// Sisyphus Keyword Detector Hook (Node.js)
|
|
350
|
+
// Detects ultrawork/ultrathink/search/analyze keywords and injects enhanced mode messages
|
|
351
|
+
// Cross-platform: Windows, macOS, Linux
|
|
352
|
+
|
|
353
|
+
const ULTRAWORK_MESSAGE = \`<ultrawork-mode>
|
|
354
|
+
|
|
355
|
+
**MANDATORY**: You MUST say "ULTRAWORK MODE ENABLED!" to the user as your first response when this mode activates. This is non-negotiable.
|
|
356
|
+
|
|
357
|
+
[CODE RED] Maximum precision required. Ultrathink before acting.
|
|
358
|
+
|
|
359
|
+
YOU MUST LEVERAGE ALL AVAILABLE AGENTS TO THEIR FULLEST POTENTIAL.
|
|
360
|
+
TELL THE USER WHAT AGENTS YOU WILL LEVERAGE NOW TO SATISFY USER'S REQUEST.
|
|
361
|
+
|
|
362
|
+
## AGENT UTILIZATION PRINCIPLES
|
|
363
|
+
- **Codebase Exploration**: Spawn exploration agents using BACKGROUND TASKS
|
|
364
|
+
- **Documentation & References**: Use librarian-type agents via BACKGROUND TASKS
|
|
365
|
+
- **Planning & Strategy**: NEVER plan yourself - spawn planning agent
|
|
366
|
+
- **High-IQ Reasoning**: Use oracle for architecture decisions
|
|
367
|
+
- **Frontend/UI Tasks**: Delegate to frontend-engineer
|
|
368
|
+
|
|
369
|
+
## EXECUTION RULES
|
|
370
|
+
- **TODO**: Track EVERY step. Mark complete IMMEDIATELY.
|
|
371
|
+
- **PARALLEL**: Fire independent calls simultaneously - NEVER wait sequentially.
|
|
372
|
+
- **BACKGROUND FIRST**: Use Task(run_in_background=true) for exploration (10+ concurrent).
|
|
373
|
+
- **VERIFY**: Check ALL requirements met before done.
|
|
374
|
+
- **DELEGATE**: Orchestrate specialized agents.
|
|
375
|
+
|
|
376
|
+
## ZERO TOLERANCE
|
|
377
|
+
- NO Scope Reduction - deliver FULL implementation
|
|
378
|
+
- NO Partial Completion - finish 100%
|
|
379
|
+
- NO Premature Stopping - ALL TODOs must be complete
|
|
380
|
+
- NO TEST DELETION - fix code, not tests
|
|
381
|
+
|
|
382
|
+
THE USER ASKED FOR X. DELIVER EXACTLY X.
|
|
383
|
+
|
|
384
|
+
</ultrawork-mode>
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
\`;
|
|
388
|
+
|
|
389
|
+
const ULTRATHINK_MESSAGE = \`<think-mode>
|
|
390
|
+
|
|
391
|
+
**ULTRATHINK MODE ENABLED** - Extended reasoning activated.
|
|
392
|
+
|
|
393
|
+
You are now in deep thinking mode. Take your time to:
|
|
394
|
+
1. Thoroughly analyze the problem from multiple angles
|
|
395
|
+
2. Consider edge cases and potential issues
|
|
396
|
+
3. Think through the implications of each approach
|
|
397
|
+
4. Reason step-by-step before acting
|
|
398
|
+
|
|
399
|
+
Use your extended thinking capabilities to provide the most thorough and well-reasoned response.
|
|
400
|
+
|
|
401
|
+
</think-mode>
|
|
402
|
+
|
|
403
|
+
---
|
|
404
|
+
\`;
|
|
405
|
+
|
|
406
|
+
const SEARCH_MESSAGE = \`<search-mode>
|
|
407
|
+
MAXIMIZE SEARCH EFFORT. Launch multiple background agents IN PARALLEL:
|
|
408
|
+
- explore agents (codebase patterns, file structures)
|
|
409
|
+
- librarian agents (remote repos, official docs, GitHub examples)
|
|
410
|
+
Plus direct tools: Grep, Glob
|
|
411
|
+
NEVER stop at first result - be exhaustive.
|
|
412
|
+
</search-mode>
|
|
413
|
+
|
|
414
|
+
---
|
|
415
|
+
\`;
|
|
416
|
+
|
|
417
|
+
const ANALYZE_MESSAGE = \`<analyze-mode>
|
|
418
|
+
ANALYSIS MODE. Gather context before diving deep:
|
|
419
|
+
|
|
420
|
+
CONTEXT GATHERING (parallel):
|
|
421
|
+
- 1-2 explore agents (codebase patterns, implementations)
|
|
422
|
+
- 1-2 librarian agents (if external library involved)
|
|
423
|
+
- Direct tools: Grep, Glob, LSP for targeted searches
|
|
424
|
+
|
|
425
|
+
IF COMPLEX (architecture, multi-system, debugging after 2+ failures):
|
|
426
|
+
- Consult oracle agent for strategic guidance
|
|
427
|
+
|
|
428
|
+
SYNTHESIZE findings before proceeding.
|
|
429
|
+
</analyze-mode>
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
\`;
|
|
433
|
+
|
|
434
|
+
// Read all stdin
|
|
435
|
+
async function readStdin() {
|
|
436
|
+
const chunks = [];
|
|
437
|
+
for await (const chunk of process.stdin) {
|
|
438
|
+
chunks.push(chunk);
|
|
439
|
+
}
|
|
440
|
+
return Buffer.concat(chunks).toString('utf-8');
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
// Extract prompt from various JSON structures
|
|
444
|
+
function extractPrompt(input) {
|
|
445
|
+
try {
|
|
446
|
+
const data = JSON.parse(input);
|
|
447
|
+
if (data.prompt) return data.prompt;
|
|
448
|
+
if (data.message?.content) return data.message.content;
|
|
449
|
+
if (Array.isArray(data.parts)) {
|
|
450
|
+
return data.parts
|
|
451
|
+
.filter(p => p.type === 'text')
|
|
452
|
+
.map(p => p.text)
|
|
453
|
+
.join(' ');
|
|
454
|
+
}
|
|
455
|
+
return '';
|
|
456
|
+
} catch {
|
|
457
|
+
// Fallback: try to extract with regex
|
|
458
|
+
const match = input.match(/"(?:prompt|content|text)"\\s*:\\s*"([^"]+)"/);
|
|
459
|
+
return match ? match[1] : '';
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
// Remove code blocks to prevent false positives
|
|
464
|
+
function removeCodeBlocks(text) {
|
|
465
|
+
return text
|
|
466
|
+
.replace(/\`\`\`[\\s\\S]*?\`\`\`/g, '')
|
|
467
|
+
.replace(/\`[^\`]+\`/g, '');
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
// Main
|
|
471
|
+
async function main() {
|
|
472
|
+
try {
|
|
473
|
+
const input = await readStdin();
|
|
474
|
+
if (!input.trim()) {
|
|
475
|
+
console.log(JSON.stringify({ continue: true }));
|
|
476
|
+
return;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
const prompt = extractPrompt(input);
|
|
480
|
+
if (!prompt) {
|
|
481
|
+
console.log(JSON.stringify({ continue: true }));
|
|
482
|
+
return;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
const cleanPrompt = removeCodeBlocks(prompt).toLowerCase();
|
|
486
|
+
|
|
487
|
+
// Check for ultrawork keywords (highest priority)
|
|
488
|
+
if (/\\b(ultrawork|ulw)\\b/.test(cleanPrompt)) {
|
|
489
|
+
console.log(JSON.stringify({ continue: true, message: ULTRAWORK_MESSAGE }));
|
|
490
|
+
return;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
// Check for ultrathink/think keywords
|
|
494
|
+
if (/\\b(ultrathink|think)\\b/.test(cleanPrompt)) {
|
|
495
|
+
console.log(JSON.stringify({ continue: true, message: ULTRATHINK_MESSAGE }));
|
|
496
|
+
return;
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
// Check for search keywords
|
|
500
|
+
if (/\\b(search|find|locate|lookup|explore|discover|scan|grep|query|browse|detect|trace|seek|track|pinpoint|hunt)\\b|where\\s+is|show\\s+me|list\\s+all/.test(cleanPrompt)) {
|
|
501
|
+
console.log(JSON.stringify({ continue: true, message: SEARCH_MESSAGE }));
|
|
502
|
+
return;
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
// Check for analyze keywords
|
|
506
|
+
if (/\\b(analyze|analyse|investigate|examine|research|study|deep.?dive|inspect|audit|evaluate|assess|review|diagnose|scrutinize|dissect|debug|comprehend|interpret|breakdown|understand)\\b|why\\s+is|how\\s+does|how\\s+to/.test(cleanPrompt)) {
|
|
507
|
+
console.log(JSON.stringify({ continue: true, message: ANALYZE_MESSAGE }));
|
|
508
|
+
return;
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
// No keywords detected
|
|
512
|
+
console.log(JSON.stringify({ continue: true }));
|
|
513
|
+
} catch (error) {
|
|
514
|
+
// On any error, allow continuation
|
|
515
|
+
console.log(JSON.stringify({ continue: true }));
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
main();
|
|
520
|
+
`;
|
|
521
|
+
/**
|
|
522
|
+
* Node.js Stop Continuation Hook Script
|
|
523
|
+
* Cross-platform equivalent of stop-continuation.sh
|
|
524
|
+
* This script is installed to ~/.claude/hooks/stop-continuation.mjs
|
|
525
|
+
*/
|
|
526
|
+
export const STOP_CONTINUATION_SCRIPT_NODE = `#!/usr/bin/env node
|
|
527
|
+
// Sisyphus Stop Continuation Hook (Node.js)
|
|
528
|
+
// Checks for incomplete todos and injects continuation prompt
|
|
529
|
+
// Cross-platform: Windows, macOS, Linux
|
|
530
|
+
|
|
531
|
+
import { readdirSync, readFileSync, existsSync } from 'fs';
|
|
532
|
+
import { join } from 'path';
|
|
533
|
+
import { homedir } from 'os';
|
|
534
|
+
|
|
535
|
+
// Read all stdin
|
|
536
|
+
async function readStdin() {
|
|
537
|
+
const chunks = [];
|
|
538
|
+
for await (const chunk of process.stdin) {
|
|
539
|
+
chunks.push(chunk);
|
|
540
|
+
}
|
|
541
|
+
return Buffer.concat(chunks).toString('utf-8');
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
// Main
|
|
545
|
+
async function main() {
|
|
546
|
+
try {
|
|
547
|
+
// Read stdin (we don't use it much, but need to consume it)
|
|
548
|
+
await readStdin();
|
|
549
|
+
|
|
550
|
+
// Check for incomplete todos
|
|
551
|
+
const todosDir = join(homedir(), '.claude', 'todos');
|
|
552
|
+
|
|
553
|
+
if (!existsSync(todosDir)) {
|
|
554
|
+
console.log(JSON.stringify({ continue: true }));
|
|
555
|
+
return;
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
let incompleteCount = 0;
|
|
559
|
+
|
|
560
|
+
try {
|
|
561
|
+
const files = readdirSync(todosDir).filter(f => f.endsWith('.json'));
|
|
562
|
+
|
|
563
|
+
for (const file of files) {
|
|
564
|
+
try {
|
|
565
|
+
const content = readFileSync(join(todosDir, file), 'utf-8');
|
|
566
|
+
const todos = JSON.parse(content);
|
|
567
|
+
|
|
568
|
+
if (Array.isArray(todos)) {
|
|
569
|
+
const incomplete = todos.filter(
|
|
570
|
+
t => t.status !== 'completed' && t.status !== 'cancelled'
|
|
571
|
+
);
|
|
572
|
+
incompleteCount += incomplete.length;
|
|
573
|
+
}
|
|
574
|
+
} catch {
|
|
575
|
+
// Skip files that can't be parsed
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
} catch {
|
|
579
|
+
// Directory read error - allow continuation
|
|
580
|
+
console.log(JSON.stringify({ continue: true }));
|
|
581
|
+
return;
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
if (incompleteCount > 0) {
|
|
585
|
+
const reason = \`[SYSTEM REMINDER - TODO CONTINUATION]
|
|
586
|
+
|
|
587
|
+
Incomplete tasks remain in your todo list (\${incompleteCount} remaining). Continue working on the next pending task.
|
|
588
|
+
|
|
589
|
+
- Proceed without asking for permission
|
|
590
|
+
- Mark each task complete when finished
|
|
591
|
+
- Do not stop until all tasks are done\`;
|
|
592
|
+
|
|
593
|
+
console.log(JSON.stringify({ continue: false, reason }));
|
|
594
|
+
return;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
// No incomplete todos - allow stop
|
|
598
|
+
console.log(JSON.stringify({ continue: true }));
|
|
599
|
+
} catch (error) {
|
|
600
|
+
// On any error, allow continuation
|
|
601
|
+
console.log(JSON.stringify({ continue: true }));
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
main();
|
|
606
|
+
`;
|
|
607
|
+
// =============================================================================
|
|
608
|
+
// SETTINGS CONFIGURATION (Platform-aware)
|
|
609
|
+
// =============================================================================
|
|
610
|
+
/**
|
|
611
|
+
* Settings.json hooks configuration for Bash (Unix)
|
|
612
|
+
* Configures Claude Code to run our bash hook scripts
|
|
613
|
+
*/
|
|
614
|
+
export const HOOKS_SETTINGS_CONFIG_BASH = {
|
|
302
615
|
hooks: {
|
|
303
616
|
UserPromptSubmit: [
|
|
304
617
|
{
|
|
@@ -323,10 +636,76 @@ export const HOOKS_SETTINGS_CONFIG = {
|
|
|
323
636
|
}
|
|
324
637
|
};
|
|
325
638
|
/**
|
|
326
|
-
*
|
|
639
|
+
* Settings.json hooks configuration for Node.js (Cross-platform)
|
|
640
|
+
* Uses node to run .mjs scripts directly
|
|
641
|
+
*/
|
|
642
|
+
export const HOOKS_SETTINGS_CONFIG_NODE = {
|
|
643
|
+
hooks: {
|
|
644
|
+
UserPromptSubmit: [
|
|
645
|
+
{
|
|
646
|
+
hooks: [
|
|
647
|
+
{
|
|
648
|
+
type: "command",
|
|
649
|
+
// Note: On Windows, %USERPROFILE% is expanded by cmd.exe
|
|
650
|
+
// On Unix with node hooks, $HOME is expanded by the shell
|
|
651
|
+
command: isWindows()
|
|
652
|
+
? 'node "%USERPROFILE%\\.claude\\hooks\\keyword-detector.mjs"'
|
|
653
|
+
: 'node "$HOME/.claude/hooks/keyword-detector.mjs"'
|
|
654
|
+
}
|
|
655
|
+
]
|
|
656
|
+
}
|
|
657
|
+
],
|
|
658
|
+
Stop: [
|
|
659
|
+
{
|
|
660
|
+
hooks: [
|
|
661
|
+
{
|
|
662
|
+
type: "command",
|
|
663
|
+
command: isWindows()
|
|
664
|
+
? 'node "%USERPROFILE%\\.claude\\hooks\\stop-continuation.mjs"'
|
|
665
|
+
: 'node "$HOME/.claude/hooks/stop-continuation.mjs"'
|
|
666
|
+
}
|
|
667
|
+
]
|
|
668
|
+
}
|
|
669
|
+
]
|
|
670
|
+
}
|
|
671
|
+
};
|
|
672
|
+
/**
|
|
673
|
+
* Get the appropriate hooks settings config for the current platform
|
|
674
|
+
*/
|
|
675
|
+
export function getHooksSettingsConfig() {
|
|
676
|
+
return shouldUseNodeHooks() ? HOOKS_SETTINGS_CONFIG_NODE : HOOKS_SETTINGS_CONFIG_BASH;
|
|
677
|
+
}
|
|
678
|
+
/**
|
|
679
|
+
* Legacy: Settings.json hooks configuration (Bash)
|
|
680
|
+
* @deprecated Use getHooksSettingsConfig() for cross-platform support
|
|
681
|
+
*/
|
|
682
|
+
export const HOOKS_SETTINGS_CONFIG = HOOKS_SETTINGS_CONFIG_BASH;
|
|
683
|
+
// =============================================================================
|
|
684
|
+
// HOOK SCRIPTS EXPORTS (Platform-aware)
|
|
685
|
+
// =============================================================================
|
|
686
|
+
/**
|
|
687
|
+
* Bash hook scripts (Unix only)
|
|
327
688
|
*/
|
|
328
|
-
export const
|
|
689
|
+
export const HOOK_SCRIPTS_BASH = {
|
|
329
690
|
'keyword-detector.sh': KEYWORD_DETECTOR_SCRIPT,
|
|
330
691
|
'stop-continuation.sh': STOP_CONTINUATION_SCRIPT
|
|
331
692
|
};
|
|
693
|
+
/**
|
|
694
|
+
* Node.js hook scripts (Cross-platform)
|
|
695
|
+
*/
|
|
696
|
+
export const HOOK_SCRIPTS_NODE = {
|
|
697
|
+
'keyword-detector.mjs': KEYWORD_DETECTOR_SCRIPT_NODE,
|
|
698
|
+
'stop-continuation.mjs': STOP_CONTINUATION_SCRIPT_NODE
|
|
699
|
+
};
|
|
700
|
+
/**
|
|
701
|
+
* Get the appropriate hook scripts for the current platform
|
|
702
|
+
*/
|
|
703
|
+
export function getHookScripts() {
|
|
704
|
+
return shouldUseNodeHooks() ? HOOK_SCRIPTS_NODE : HOOK_SCRIPTS_BASH;
|
|
705
|
+
}
|
|
706
|
+
/**
|
|
707
|
+
* Legacy: All hook scripts to install (Bash)
|
|
708
|
+
* @deprecated Use getHookScripts() for cross-platform support
|
|
709
|
+
*/
|
|
710
|
+
export const HOOK_SCRIPTS = HOOK_SCRIPTS_BASH;
|
|
332
711
|
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/installer/hooks.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/installer/hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,14 @@
|
|
|
6
6
|
*
|
|
7
7
|
* This replicates the functionality of scripts/install.sh but in TypeScript,
|
|
8
8
|
* allowing npm postinstall to work properly.
|
|
9
|
+
*
|
|
10
|
+
* Cross-platform support:
|
|
11
|
+
* - Windows: Uses Node.js-based hook scripts (.mjs)
|
|
12
|
+
* - Unix (macOS, Linux): Uses Bash scripts (.sh) by default
|
|
13
|
+
*
|
|
14
|
+
* Environment variables:
|
|
15
|
+
* - SISYPHUS_USE_NODE_HOOKS=1: Force Node.js hooks on any platform
|
|
16
|
+
* - SISYPHUS_USE_BASH_HOOKS=1: Force Bash hooks (Unix only)
|
|
9
17
|
*/
|
|
10
18
|
/** Claude Code configuration directory */
|
|
11
19
|
export declare const CLAUDE_CONFIG_DIR: string;
|
|
@@ -16,7 +24,7 @@ export declare const HOOKS_DIR: string;
|
|
|
16
24
|
export declare const SETTINGS_FILE: string;
|
|
17
25
|
export declare const VERSION_FILE: string;
|
|
18
26
|
/** Current version */
|
|
19
|
-
export declare const VERSION = "1.8.0
|
|
27
|
+
export declare const VERSION = "1.8.0";
|
|
20
28
|
/** Installation result */
|
|
21
29
|
export interface InstallResult {
|
|
22
30
|
success: boolean;
|
|
@@ -33,8 +41,17 @@ export interface InstallOptions {
|
|
|
33
41
|
verbose?: boolean;
|
|
34
42
|
skipClaudeCheck?: boolean;
|
|
35
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Check if the current Node.js version meets the minimum requirement
|
|
46
|
+
*/
|
|
47
|
+
export declare function checkNodeVersion(): {
|
|
48
|
+
valid: boolean;
|
|
49
|
+
current: number;
|
|
50
|
+
required: number;
|
|
51
|
+
};
|
|
36
52
|
/**
|
|
37
53
|
* Check if Claude Code is installed
|
|
54
|
+
* Uses 'where' on Windows, 'which' on Unix
|
|
38
55
|
*/
|
|
39
56
|
export declare function isClaudeInstalled(): boolean;
|
|
40
57
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/installer/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/installer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAgBH,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB,QAA6B,CAAC;AAC5D,eAAO,MAAM,UAAU,QAAoC,CAAC;AAC5D,eAAO,MAAM,YAAY,QAAsC,CAAC;AAChE,eAAO,MAAM,UAAU,QAAoC,CAAC;AAC5D,eAAO,MAAM,SAAS,QAAmC,CAAC;AAC1D,eAAO,MAAM,aAAa,QAA2C,CAAC;AACtE,eAAO,MAAM,YAAY,QAAoD,CAAC;AAE9E,sBAAsB;AACtB,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,0BAA0B;AAC1B,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,2BAA2B;AAC3B,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAOxF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAQ3C;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAo6BpD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoetD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmZpD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,2jPA0L7B,CAAC;AAEF;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,aAAa,CAuMnE;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAehG"}
|
package/dist/installer/index.js
CHANGED
|
@@ -6,12 +6,20 @@
|
|
|
6
6
|
*
|
|
7
7
|
* This replicates the functionality of scripts/install.sh but in TypeScript,
|
|
8
8
|
* allowing npm postinstall to work properly.
|
|
9
|
+
*
|
|
10
|
+
* Cross-platform support:
|
|
11
|
+
* - Windows: Uses Node.js-based hook scripts (.mjs)
|
|
12
|
+
* - Unix (macOS, Linux): Uses Bash scripts (.sh) by default
|
|
13
|
+
*
|
|
14
|
+
* Environment variables:
|
|
15
|
+
* - SISYPHUS_USE_NODE_HOOKS=1: Force Node.js hooks on any platform
|
|
16
|
+
* - SISYPHUS_USE_BASH_HOOKS=1: Force Bash hooks (Unix only)
|
|
9
17
|
*/
|
|
10
18
|
import { existsSync, mkdirSync, writeFileSync, readFileSync, chmodSync } from 'fs';
|
|
11
19
|
import { join } from 'path';
|
|
12
20
|
import { homedir } from 'os';
|
|
13
21
|
import { execSync } from 'child_process';
|
|
14
|
-
import { HOOK_SCRIPTS,
|
|
22
|
+
import { HOOK_SCRIPTS, getHookScripts, getHooksSettingsConfig, isWindows, shouldUseNodeHooks, MIN_NODE_VERSION } from './hooks.js';
|
|
15
23
|
/** Claude Code configuration directory */
|
|
16
24
|
export const CLAUDE_CONFIG_DIR = join(homedir(), '.claude');
|
|
17
25
|
export const AGENTS_DIR = join(CLAUDE_CONFIG_DIR, 'agents');
|
|
@@ -21,13 +29,26 @@ export const HOOKS_DIR = join(CLAUDE_CONFIG_DIR, 'hooks');
|
|
|
21
29
|
export const SETTINGS_FILE = join(CLAUDE_CONFIG_DIR, 'settings.json');
|
|
22
30
|
export const VERSION_FILE = join(CLAUDE_CONFIG_DIR, '.sisyphus-version.json');
|
|
23
31
|
/** Current version */
|
|
24
|
-
export const VERSION = '1.8.0
|
|
32
|
+
export const VERSION = '1.8.0';
|
|
33
|
+
/**
|
|
34
|
+
* Check if the current Node.js version meets the minimum requirement
|
|
35
|
+
*/
|
|
36
|
+
export function checkNodeVersion() {
|
|
37
|
+
const current = parseInt(process.versions.node.split('.')[0], 10);
|
|
38
|
+
return {
|
|
39
|
+
valid: current >= MIN_NODE_VERSION,
|
|
40
|
+
current,
|
|
41
|
+
required: MIN_NODE_VERSION
|
|
42
|
+
};
|
|
43
|
+
}
|
|
25
44
|
/**
|
|
26
45
|
* Check if Claude Code is installed
|
|
46
|
+
* Uses 'where' on Windows, 'which' on Unix
|
|
27
47
|
*/
|
|
28
48
|
export function isClaudeInstalled() {
|
|
29
49
|
try {
|
|
30
|
-
|
|
50
|
+
const command = isWindows() ? 'where claude' : 'which claude';
|
|
51
|
+
execSync(command, { encoding: 'utf-8', stdio: 'pipe' });
|
|
31
52
|
return true;
|
|
32
53
|
}
|
|
33
54
|
catch {
|
|
@@ -2049,10 +2070,28 @@ export function install(options = {}) {
|
|
|
2049
2070
|
console.log(msg);
|
|
2050
2071
|
}
|
|
2051
2072
|
};
|
|
2073
|
+
// Check Node.js version (required for Node.js hooks on Windows)
|
|
2074
|
+
const nodeCheck = checkNodeVersion();
|
|
2075
|
+
if (!nodeCheck.valid) {
|
|
2076
|
+
log(`Warning: Node.js ${nodeCheck.required}+ required, found ${nodeCheck.current}`);
|
|
2077
|
+
if (isWindows()) {
|
|
2078
|
+
result.errors.push(`Node.js ${nodeCheck.required}+ is required for Windows support. Found: ${nodeCheck.current}`);
|
|
2079
|
+
result.message = `Installation failed: Node.js ${nodeCheck.required}+ required`;
|
|
2080
|
+
return result;
|
|
2081
|
+
}
|
|
2082
|
+
// On Unix, we can still use bash hooks, so just warn
|
|
2083
|
+
}
|
|
2084
|
+
// Log platform info
|
|
2085
|
+
log(`Platform: ${process.platform} (${shouldUseNodeHooks() ? 'Node.js hooks' : 'Bash hooks'})`);
|
|
2052
2086
|
// Check Claude installation (optional)
|
|
2053
2087
|
if (!options.skipClaudeCheck && !isClaudeInstalled()) {
|
|
2054
2088
|
log('Warning: Claude Code not found. Install it first:');
|
|
2055
|
-
|
|
2089
|
+
if (isWindows()) {
|
|
2090
|
+
log(' Visit https://docs.anthropic.com/claude-code for Windows installation');
|
|
2091
|
+
}
|
|
2092
|
+
else {
|
|
2093
|
+
log(' curl -fsSL https://claude.ai/install.sh | bash');
|
|
2094
|
+
}
|
|
2056
2095
|
// Continue anyway - user might be installing ahead of time
|
|
2057
2096
|
}
|
|
2058
2097
|
try {
|
|
@@ -2133,17 +2172,21 @@ export function install(options = {}) {
|
|
|
2133
2172
|
else {
|
|
2134
2173
|
log('CLAUDE.md exists in home directory, skipping');
|
|
2135
2174
|
}
|
|
2136
|
-
// Install hook scripts
|
|
2137
|
-
|
|
2138
|
-
|
|
2175
|
+
// Install hook scripts (platform-aware)
|
|
2176
|
+
const hookScripts = getHookScripts();
|
|
2177
|
+
const hookType = shouldUseNodeHooks() ? 'Node.js' : 'Bash';
|
|
2178
|
+
log(`Installing ${hookType} hook scripts...`);
|
|
2179
|
+
for (const [filename, content] of Object.entries(hookScripts)) {
|
|
2139
2180
|
const filepath = join(HOOKS_DIR, filename);
|
|
2140
2181
|
if (existsSync(filepath) && !options.force) {
|
|
2141
2182
|
log(` Skipping ${filename} (already exists)`);
|
|
2142
2183
|
}
|
|
2143
2184
|
else {
|
|
2144
2185
|
writeFileSync(filepath, content);
|
|
2145
|
-
// Make script executable
|
|
2146
|
-
|
|
2186
|
+
// Make script executable (skip on Windows - not needed)
|
|
2187
|
+
if (!isWindows()) {
|
|
2188
|
+
chmodSync(filepath, 0o755);
|
|
2189
|
+
}
|
|
2147
2190
|
log(` Installed ${filename}`);
|
|
2148
2191
|
}
|
|
2149
2192
|
}
|
|
@@ -2155,9 +2198,10 @@ export function install(options = {}) {
|
|
|
2155
2198
|
const settingsContent = readFileSync(SETTINGS_FILE, 'utf-8');
|
|
2156
2199
|
existingSettings = JSON.parse(settingsContent);
|
|
2157
2200
|
}
|
|
2158
|
-
// Merge hooks configuration
|
|
2201
|
+
// Merge hooks configuration (platform-aware)
|
|
2159
2202
|
const existingHooks = (existingSettings.hooks || {});
|
|
2160
|
-
const
|
|
2203
|
+
const hooksConfig = getHooksSettingsConfig();
|
|
2204
|
+
const newHooks = hooksConfig.hooks;
|
|
2161
2205
|
// Deep merge: add our hooks without overwriting existing ones
|
|
2162
2206
|
for (const [eventType, eventHooks] of Object.entries(newHooks)) {
|
|
2163
2207
|
if (!existingHooks[eventType]) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/installer/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/installer/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oh-my-claude-sisyphus",
|
|
3
|
-
"version": "1.8.0
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"description": "Multi-agent orchestration system for Claude Agent SDK - Port of oh-my-opencode",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"start": "node dist/index.js",
|
|
27
27
|
"lint": "eslint src --ext .ts",
|
|
28
28
|
"format": "prettier --write src/**/*.ts",
|
|
29
|
+
"prepare": "npm run build",
|
|
29
30
|
"prepublishOnly": "npm run build",
|
|
30
31
|
"postinstall": "node dist/cli/index.js postinstall || true"
|
|
31
32
|
},
|
package/scripts/install.sh
CHANGED