oh-my-claude-sisyphus 1.11.1 → 1.11.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/plugin-patterns/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;CAClB;AAgBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEvD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQ7D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAkBlF;AAMD,MAAM,WAAW,UAAU;IACzB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,sCAAsC;IACtC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAYD;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEpD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAqBhF;AAMD,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,6BAA6B;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,mBAAmB;IACnB,WAAW,EAAE,OAAO,CAAC;CACtB;AAkBD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC7B;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAyCtC;AAMD;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAmBrF;AAMD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA0BjF;AAMD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GACrB,eAAe,CAyBjB;AAMD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAqB3E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAmB5G"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/plugin-patterns/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAyBH,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;CAClB;AAgBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEvD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQ7D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAkBlF;AAMD,MAAM,WAAW,UAAU;IACzB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,sCAAsC;IACtC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAYD;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEpD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAqBhF;AAMD,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,6BAA6B;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,mBAAmB;IACnB,WAAW,EAAE,OAAO,CAAC;CACtB;AAkBD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAC7B;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAyCtC;AAMD;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAmBrF;AAMD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA0BjF;AAMD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GACrB,eAAe,CAyBjB;AAMD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAqB3E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAmB5G"}
@@ -11,6 +11,19 @@
11
11
  import { existsSync, readFileSync } from 'fs';
12
12
  import { join, extname } from 'path';
13
13
  import { execSync } from 'child_process';
14
+ /**
15
+ * Check if running on Windows
16
+ */
17
+ function isWindows() {
18
+ return process.platform === 'win32';
19
+ }
20
+ /**
21
+ * Cross-platform command to check if a binary exists in PATH
22
+ * Uses 'where' on Windows, 'which' on Unix
23
+ */
24
+ function whichCommand(binary) {
25
+ return isWindows() ? `where ${binary}` : `which ${binary}`;
26
+ }
14
27
  const DEFAULT_FORMATTERS = {
15
28
  '.ts': 'prettier --write',
16
29
  '.tsx': 'prettier --write',
@@ -36,7 +49,7 @@ export function getFormatter(ext) {
36
49
  export function isFormatterAvailable(command) {
37
50
  try {
38
51
  const binary = command.split(' ')[0];
39
- execSync(`which ${binary}`, { encoding: 'utf-8', stdio: 'pipe' });
52
+ execSync(whichCommand(binary), { encoding: 'utf-8', stdio: 'pipe' });
40
53
  return true;
41
54
  }
42
55
  catch {
@@ -89,7 +102,7 @@ export function lintFile(filePath) {
89
102
  }
90
103
  try {
91
104
  const binary = linter.split(' ')[0];
92
- execSync(`which ${binary}`, { encoding: 'utf-8', stdio: 'pipe' });
105
+ execSync(whichCommand(binary), { encoding: 'utf-8', stdio: 'pipe' });
93
106
  }
94
107
  catch {
95
108
  return { success: true, message: `Linter ${linter} not available` };
@@ -165,7 +178,7 @@ export function runTypeCheck(directory) {
165
178
  return { success: true, message: 'No tsconfig.json found' };
166
179
  }
167
180
  try {
168
- execSync('which tsc', { encoding: 'utf-8', stdio: 'pipe' });
181
+ execSync(whichCommand('tsc'), { encoding: 'utf-8', stdio: 'pipe' });
169
182
  }
170
183
  catch {
171
184
  return { success: true, message: 'TypeScript not installed' };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/plugin-patterns/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/plugin-patterns/index.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,7 @@ export declare const HOOKS_DIR: string;
24
24
  export declare const SETTINGS_FILE: string;
25
25
  export declare const VERSION_FILE: string;
26
26
  /** Current version */
27
- export declare const VERSION = "1.11.1";
27
+ export declare const VERSION = "1.11.2";
28
28
  /** Installation result */
29
29
  export interface InstallResult {
30
30
  success: boolean;
@@ -29,7 +29,7 @@ export const HOOKS_DIR = join(CLAUDE_CONFIG_DIR, 'hooks');
29
29
  export const SETTINGS_FILE = join(CLAUDE_CONFIG_DIR, 'settings.json');
30
30
  export const VERSION_FILE = join(CLAUDE_CONFIG_DIR, '.sisyphus-version.json');
31
31
  /** Current version */
32
- export const VERSION = '1.11.1';
32
+ export const VERSION = '1.11.2';
33
33
  /**
34
34
  * Check if the current Node.js version meets the minimum requirement
35
35
  */
@@ -1 +1 @@
1
- {"version":3,"file":"servers.d.ts","sourceRoot":"","sources":["../../../src/tools/lsp/servers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjD;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAuEvD,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAOtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAUzE;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,KAAK,CAAC,eAAe,GAAG;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAK/E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CA6B7E"}
1
+ {"version":3,"file":"servers.d.ts","sourceRoot":"","sources":["../../../src/tools/lsp/servers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjD;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAuEvD,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAOtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAUzE;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,KAAK,CAAC,eAAe,GAAG;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAK/E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CA6B7E"}
@@ -6,6 +6,19 @@
6
6
  */
7
7
  import { execSync } from 'child_process';
8
8
  import { extname } from 'path';
9
+ /**
10
+ * Check if running on Windows
11
+ */
12
+ function isWindows() {
13
+ return process.platform === 'win32';
14
+ }
15
+ /**
16
+ * Cross-platform command to check if a binary exists in PATH
17
+ * Uses 'where' on Windows, 'which' on Unix
18
+ */
19
+ function whichCommand(command) {
20
+ return isWindows() ? `where ${command}` : `which ${command}`;
21
+ }
9
22
  /**
10
23
  * Known LSP servers and their configurations
11
24
  */
@@ -86,7 +99,7 @@ export const LSP_SERVERS = {
86
99
  */
87
100
  export function commandExists(command) {
88
101
  try {
89
- execSync(`which ${command}`, { stdio: 'ignore' });
102
+ execSync(whichCommand(command), { stdio: 'ignore' });
90
103
  return true;
91
104
  }
92
105
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"servers.js","sourceRoot":"","sources":["../../../src/tools/lsp/servers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"servers.js","sourceRoot":"","sources":["../../../src/tools/lsp/servers.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.11.1",
3
+ "version": "1.11.2",
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",
@@ -1733,7 +1733,7 @@ else
1733
1733
  fi
1734
1734
 
1735
1735
  # Save version metadata for auto-update system
1736
- VERSION="1.11.1"
1736
+ VERSION="1.11.2"
1737
1737
  VERSION_FILE="$CLAUDE_CONFIG_DIR/.sisyphus-version.json"
1738
1738
 
1739
1739
  cat > "$VERSION_FILE" << VERSION_EOF
@@ -0,0 +1,209 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Sisyphus Keyword Detector Hook (Node.js)
5
+ * Detects ultrawork/ultrathink/search/analyze keywords and injects enhanced mode messages
6
+ * Cross-platform: Windows, macOS, Linux
7
+ */
8
+
9
+ import { writeFileSync, mkdirSync, existsSync } from 'fs';
10
+ import { join } from 'path';
11
+ import { homedir } from 'os';
12
+
13
+ const ULTRAWORK_MESSAGE = `<ultrawork-mode>
14
+
15
+ **MANDATORY**: You MUST say "ULTRAWORK MODE ENABLED!" to the user as your first response when this mode activates. This is non-negotiable.
16
+
17
+ [CODE RED] Maximum precision required. Ultrathink before acting.
18
+
19
+ YOU MUST LEVERAGE ALL AVAILABLE AGENTS TO THEIR FULLEST POTENTIAL.
20
+ TELL THE USER WHAT AGENTS YOU WILL LEVERAGE NOW TO SATISFY USER'S REQUEST.
21
+
22
+ ## AGENT UTILIZATION PRINCIPLES
23
+ - **Codebase Exploration**: Spawn exploration agents using BACKGROUND TASKS
24
+ - **Documentation & References**: Use librarian-type agents via BACKGROUND TASKS
25
+ - **Planning & Strategy**: NEVER plan yourself - spawn planning agent
26
+ - **High-IQ Reasoning**: Use oracle for architecture decisions
27
+ - **Frontend/UI Tasks**: Delegate to frontend-engineer
28
+
29
+ ## EXECUTION RULES
30
+ - **TODO**: Track EVERY step. Mark complete IMMEDIATELY.
31
+ - **PARALLEL**: Fire independent calls simultaneously - NEVER wait sequentially.
32
+ - **BACKGROUND FIRST**: Use Task(run_in_background=true) for exploration (10+ concurrent).
33
+ - **VERIFY**: Check ALL requirements met before done.
34
+ - **DELEGATE**: Orchestrate specialized agents.
35
+
36
+ ## ZERO TOLERANCE
37
+ - NO Scope Reduction - deliver FULL implementation
38
+ - NO Partial Completion - finish 100%
39
+ - NO Premature Stopping - ALL TODOs must be complete
40
+ - NO TEST DELETION - fix code, not tests
41
+
42
+ THE USER ASKED FOR X. DELIVER EXACTLY X.
43
+
44
+ </ultrawork-mode>
45
+
46
+ ---
47
+ `;
48
+
49
+ const ULTRATHINK_MESSAGE = `<think-mode>
50
+
51
+ **ULTRATHINK MODE ENABLED** - Extended reasoning activated.
52
+
53
+ You are now in deep thinking mode. Take your time to:
54
+ 1. Thoroughly analyze the problem from multiple angles
55
+ 2. Consider edge cases and potential issues
56
+ 3. Think through the implications of each approach
57
+ 4. Reason step-by-step before acting
58
+
59
+ Use your extended thinking capabilities to provide the most thorough and well-reasoned response.
60
+
61
+ </think-mode>
62
+
63
+ ---
64
+ `;
65
+
66
+ const SEARCH_MESSAGE = `<search-mode>
67
+ MAXIMIZE SEARCH EFFORT. Launch multiple background agents IN PARALLEL:
68
+ - explore agents (codebase patterns, file structures)
69
+ - librarian agents (remote repos, official docs, GitHub examples)
70
+ Plus direct tools: Grep, Glob
71
+ NEVER stop at first result - be exhaustive.
72
+ </search-mode>
73
+
74
+ ---
75
+ `;
76
+
77
+ const ANALYZE_MESSAGE = `<analyze-mode>
78
+ ANALYSIS MODE. Gather context before diving deep:
79
+
80
+ CONTEXT GATHERING (parallel):
81
+ - 1-2 explore agents (codebase patterns, implementations)
82
+ - 1-2 librarian agents (if external library involved)
83
+ - Direct tools: Grep, Glob, LSP for targeted searches
84
+
85
+ IF COMPLEX (architecture, multi-system, debugging after 2+ failures):
86
+ - Consult oracle agent for strategic guidance
87
+
88
+ SYNTHESIZE findings before proceeding.
89
+ </analyze-mode>
90
+
91
+ ---
92
+ `;
93
+
94
+ // Read all stdin
95
+ async function readStdin() {
96
+ const chunks = [];
97
+ for await (const chunk of process.stdin) {
98
+ chunks.push(chunk);
99
+ }
100
+ return Buffer.concat(chunks).toString('utf-8');
101
+ }
102
+
103
+ // Extract prompt from various JSON structures
104
+ function extractPrompt(input) {
105
+ try {
106
+ const data = JSON.parse(input);
107
+ if (data.prompt) return data.prompt;
108
+ if (data.message?.content) return data.message.content;
109
+ if (Array.isArray(data.parts)) {
110
+ return data.parts
111
+ .filter(p => p.type === 'text')
112
+ .map(p => p.text)
113
+ .join(' ');
114
+ }
115
+ return '';
116
+ } catch {
117
+ // Fallback: try to extract with regex
118
+ const match = input.match(/"(?:prompt|content|text)"\s*:\s*"([^"]+)"/);
119
+ return match ? match[1] : '';
120
+ }
121
+ }
122
+
123
+ // Remove code blocks to prevent false positives
124
+ function removeCodeBlocks(text) {
125
+ return text
126
+ .replace(/```[\s\S]*?```/g, '')
127
+ .replace(/`[^`]+`/g, '');
128
+ }
129
+
130
+ // Create ultrawork state file
131
+ function activateUltraworkState(directory, prompt) {
132
+ const state = {
133
+ active: true,
134
+ started_at: new Date().toISOString(),
135
+ original_prompt: prompt,
136
+ reinforcement_count: 0,
137
+ last_checked_at: new Date().toISOString()
138
+ };
139
+
140
+ // Write to local .sisyphus directory
141
+ const localDir = join(directory, '.sisyphus');
142
+ if (!existsSync(localDir)) {
143
+ try { mkdirSync(localDir, { recursive: true }); } catch {}
144
+ }
145
+ try { writeFileSync(join(localDir, 'ultrawork-state.json'), JSON.stringify(state, null, 2)); } catch {}
146
+
147
+ // Write to global .claude directory
148
+ const globalDir = join(homedir(), '.claude');
149
+ if (!existsSync(globalDir)) {
150
+ try { mkdirSync(globalDir, { recursive: true }); } catch {}
151
+ }
152
+ try { writeFileSync(join(globalDir, 'ultrawork-state.json'), JSON.stringify(state, null, 2)); } catch {}
153
+ }
154
+
155
+ // Main
156
+ async function main() {
157
+ try {
158
+ const input = await readStdin();
159
+ if (!input.trim()) {
160
+ console.log(JSON.stringify({ continue: true }));
161
+ return;
162
+ }
163
+
164
+ let data = {};
165
+ try { data = JSON.parse(input); } catch {}
166
+ const directory = data.directory || process.cwd();
167
+
168
+ const prompt = extractPrompt(input);
169
+ if (!prompt) {
170
+ console.log(JSON.stringify({ continue: true }));
171
+ return;
172
+ }
173
+
174
+ const cleanPrompt = removeCodeBlocks(prompt).toLowerCase();
175
+
176
+ // Check for ultrawork keywords (highest priority)
177
+ if (/\b(ultrawork|ulw|uw)\b/.test(cleanPrompt)) {
178
+ activateUltraworkState(directory, prompt);
179
+ console.log(JSON.stringify({ continue: true, message: ULTRAWORK_MESSAGE }));
180
+ return;
181
+ }
182
+
183
+ // Check for ultrathink/think keywords
184
+ if (/\b(ultrathink|think)\b/.test(cleanPrompt)) {
185
+ console.log(JSON.stringify({ continue: true, message: ULTRATHINK_MESSAGE }));
186
+ return;
187
+ }
188
+
189
+ // Check for search keywords
190
+ 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)) {
191
+ console.log(JSON.stringify({ continue: true, message: SEARCH_MESSAGE }));
192
+ return;
193
+ }
194
+
195
+ // Check for analyze keywords
196
+ 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)) {
197
+ console.log(JSON.stringify({ continue: true, message: ANALYZE_MESSAGE }));
198
+ return;
199
+ }
200
+
201
+ // No keywords detected
202
+ console.log(JSON.stringify({ continue: true }));
203
+ } catch (error) {
204
+ // On any error, allow continuation
205
+ console.log(JSON.stringify({ continue: true }));
206
+ }
207
+ }
208
+
209
+ main();
@@ -0,0 +1,241 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Sisyphus Persistent Mode Hook (Node.js)
5
+ * Unified handler for ultrawork, ralph-loop, and todo continuation
6
+ * Cross-platform: Windows, macOS, Linux
7
+ */
8
+
9
+ import { existsSync, readFileSync, writeFileSync, readdirSync } from 'fs';
10
+ import { join } from 'path';
11
+ import { homedir } from 'os';
12
+
13
+ // Read all stdin
14
+ async function readStdin() {
15
+ const chunks = [];
16
+ for await (const chunk of process.stdin) {
17
+ chunks.push(chunk);
18
+ }
19
+ return Buffer.concat(chunks).toString('utf-8');
20
+ }
21
+
22
+ // Read JSON file safely
23
+ function readJsonFile(path) {
24
+ try {
25
+ if (!existsSync(path)) return null;
26
+ return JSON.parse(readFileSync(path, 'utf-8'));
27
+ } catch {
28
+ return null;
29
+ }
30
+ }
31
+
32
+ // Write JSON file safely
33
+ function writeJsonFile(path, data) {
34
+ try {
35
+ writeFileSync(path, JSON.stringify(data, null, 2));
36
+ return true;
37
+ } catch {
38
+ return false;
39
+ }
40
+ }
41
+
42
+ // Count incomplete todos
43
+ function countIncompleteTodos(todosDir, projectDir) {
44
+ let count = 0;
45
+
46
+ // Check global todos
47
+ if (existsSync(todosDir)) {
48
+ try {
49
+ const files = readdirSync(todosDir).filter(f => f.endsWith('.json'));
50
+ for (const file of files) {
51
+ const todos = readJsonFile(join(todosDir, file));
52
+ if (Array.isArray(todos)) {
53
+ count += todos.filter(t => t.status !== 'completed' && t.status !== 'cancelled').length;
54
+ }
55
+ }
56
+ } catch {}
57
+ }
58
+
59
+ // Check project todos
60
+ for (const path of [
61
+ join(projectDir, '.sisyphus', 'todos.json'),
62
+ join(projectDir, '.claude', 'todos.json')
63
+ ]) {
64
+ const data = readJsonFile(path);
65
+ const todos = data?.todos || data;
66
+ if (Array.isArray(todos)) {
67
+ count += todos.filter(t => t.status !== 'completed' && t.status !== 'cancelled').length;
68
+ }
69
+ }
70
+
71
+ return count;
72
+ }
73
+
74
+ async function main() {
75
+ try {
76
+ const input = await readStdin();
77
+ let data = {};
78
+ try { data = JSON.parse(input); } catch {}
79
+
80
+ const directory = data.directory || process.cwd();
81
+ const todosDir = join(homedir(), '.claude', 'todos');
82
+
83
+ // Check for ultrawork state
84
+ let ultraworkState = readJsonFile(join(directory, '.sisyphus', 'ultrawork-state.json'))
85
+ || readJsonFile(join(homedir(), '.claude', 'ultrawork-state.json'));
86
+
87
+ // Check for ralph loop state
88
+ const ralphState = readJsonFile(join(directory, '.sisyphus', 'ralph-state.json'));
89
+
90
+ // Check for verification state
91
+ const verificationState = readJsonFile(join(directory, '.sisyphus', 'ralph-verification.json'));
92
+
93
+ // Count incomplete todos
94
+ const incompleteCount = countIncompleteTodos(todosDir, directory);
95
+
96
+ // Priority 1: Ralph Loop with Oracle Verification
97
+ if (ralphState?.active) {
98
+ const iteration = ralphState.iteration || 1;
99
+ const maxIter = ralphState.max_iterations || 10;
100
+
101
+ // Check if oracle verification is pending
102
+ if (verificationState?.pending) {
103
+ const attempt = (verificationState.verification_attempts || 0) + 1;
104
+ const maxAttempts = verificationState.max_verification_attempts || 3;
105
+
106
+ console.log(JSON.stringify({
107
+ continue: false,
108
+ reason: `<ralph-verification>
109
+
110
+ [ORACLE VERIFICATION REQUIRED - Attempt ${attempt}/${maxAttempts}]
111
+
112
+ The agent claims the task is complete. Before accepting, YOU MUST verify with Oracle.
113
+
114
+ **Original Task:**
115
+ ${verificationState.original_task || ralphState.prompt || 'No task specified'}
116
+
117
+ **Completion Claim:**
118
+ ${verificationState.completion_claim || 'Task marked complete'}
119
+
120
+ ${verificationState.oracle_feedback ? `**Previous Oracle Feedback (rejected):**
121
+ ${verificationState.oracle_feedback}
122
+ ` : ''}
123
+
124
+ ## MANDATORY VERIFICATION STEPS
125
+
126
+ 1. **Spawn Oracle Agent** for verification
127
+ 2. **Oracle must check:**
128
+ - Are ALL requirements from the original task met?
129
+ - Is the implementation complete, not partial?
130
+ - Are there any obvious bugs or issues?
131
+ - Does the code compile/run without errors?
132
+ - Are tests passing (if applicable)?
133
+
134
+ 3. **Based on Oracle's response:**
135
+ - If APPROVED: Output \`<oracle-approved>VERIFIED_COMPLETE</oracle-approved>\`
136
+ - If REJECTED: Continue working on the identified issues
137
+
138
+ </ralph-verification>
139
+
140
+ ---
141
+ `
142
+ }));
143
+ return;
144
+ }
145
+
146
+ if (iteration < maxIter) {
147
+ const newIter = iteration + 1;
148
+ ralphState.iteration = newIter;
149
+ writeJsonFile(join(directory, '.sisyphus', 'ralph-state.json'), ralphState);
150
+
151
+ console.log(JSON.stringify({
152
+ continue: false,
153
+ reason: `<ralph-loop-continuation>
154
+
155
+ [RALPH LOOP - ITERATION ${newIter}/${maxIter}]
156
+
157
+ Your previous attempt did not output the completion promise. The work is NOT done yet.
158
+
159
+ CRITICAL INSTRUCTIONS:
160
+ 1. Review your progress and the original task
161
+ 2. Check your todo list - are ALL items marked complete?
162
+ 3. Continue from where you left off
163
+ 4. When FULLY complete, output: <promise>${ralphState.completion_promise || 'TASK_COMPLETE'}</promise>
164
+ 5. Do NOT stop until the task is truly done
165
+
166
+ ${ralphState.prompt ? `Original task: ${ralphState.prompt}` : ''}
167
+
168
+ </ralph-loop-continuation>
169
+
170
+ ---
171
+ `
172
+ }));
173
+ return;
174
+ }
175
+ }
176
+
177
+ // Priority 2: Ultrawork with incomplete todos
178
+ if (ultraworkState?.active && incompleteCount > 0) {
179
+ const newCount = (ultraworkState.reinforcement_count || 0) + 1;
180
+ ultraworkState.reinforcement_count = newCount;
181
+ ultraworkState.last_checked_at = new Date().toISOString();
182
+
183
+ writeJsonFile(join(directory, '.sisyphus', 'ultrawork-state.json'), ultraworkState);
184
+
185
+ console.log(JSON.stringify({
186
+ continue: false,
187
+ reason: `<ultrawork-persistence>
188
+
189
+ [ULTRAWORK MODE STILL ACTIVE - Reinforcement #${newCount}]
190
+
191
+ Your ultrawork session is NOT complete. ${incompleteCount} incomplete todos remain.
192
+
193
+ REMEMBER THE ULTRAWORK RULES:
194
+ - **PARALLEL**: Fire independent calls simultaneously - NEVER wait sequentially
195
+ - **BACKGROUND FIRST**: Use Task(run_in_background=true) for exploration (10+ concurrent)
196
+ - **TODO**: Track EVERY step. Mark complete IMMEDIATELY after each
197
+ - **VERIFY**: Check ALL requirements met before done
198
+ - **NO Premature Stopping**: ALL TODOs must be complete
199
+
200
+ Continue working on the next pending task. DO NOT STOP until all tasks are marked complete.
201
+
202
+ ${ultraworkState.original_prompt ? `Original task: ${ultraworkState.original_prompt}` : ''}
203
+
204
+ </ultrawork-persistence>
205
+
206
+ ---
207
+ `
208
+ }));
209
+ return;
210
+ }
211
+
212
+ // Priority 3: Todo Continuation
213
+ if (incompleteCount > 0) {
214
+ console.log(JSON.stringify({
215
+ continue: false,
216
+ reason: `<todo-continuation>
217
+
218
+ [SYSTEM REMINDER - TODO CONTINUATION]
219
+
220
+ Incomplete tasks remain in your todo list (${incompleteCount} remaining). Continue working on the next pending task.
221
+
222
+ - Proceed without asking for permission
223
+ - Mark each task complete when finished
224
+ - Do not stop until all tasks are done
225
+
226
+ </todo-continuation>
227
+
228
+ ---
229
+ `
230
+ }));
231
+ return;
232
+ }
233
+
234
+ // No blocking needed
235
+ console.log(JSON.stringify({ continue: true }));
236
+ } catch (error) {
237
+ console.log(JSON.stringify({ continue: true }));
238
+ }
239
+ }
240
+
241
+ main();
@@ -0,0 +1,217 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * PostToolUse Hook: Verification Reminder System (Node.js)
5
+ * Monitors tool execution and provides contextual guidance
6
+ * Cross-platform: Windows, macOS, Linux
7
+ */
8
+
9
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
10
+ import { join } from 'path';
11
+ import { homedir } from 'os';
12
+
13
+ // State file for session tracking
14
+ const STATE_FILE = join(homedir(), '.claude', '.session-stats.json');
15
+
16
+ // Ensure state directory exists
17
+ try {
18
+ const stateDir = join(homedir(), '.claude');
19
+ if (!existsSync(stateDir)) {
20
+ mkdirSync(stateDir, { recursive: true });
21
+ }
22
+ } catch {}
23
+
24
+ // Read all stdin
25
+ async function readStdin() {
26
+ const chunks = [];
27
+ for await (const chunk of process.stdin) {
28
+ chunks.push(chunk);
29
+ }
30
+ return Buffer.concat(chunks).toString('utf-8');
31
+ }
32
+
33
+ // Load session statistics
34
+ function loadStats() {
35
+ try {
36
+ if (existsSync(STATE_FILE)) {
37
+ return JSON.parse(readFileSync(STATE_FILE, 'utf-8'));
38
+ }
39
+ } catch {}
40
+ return { sessions: {} };
41
+ }
42
+
43
+ // Save session statistics
44
+ function saveStats(stats) {
45
+ try {
46
+ writeFileSync(STATE_FILE, JSON.stringify(stats, null, 2));
47
+ } catch {}
48
+ }
49
+
50
+ // Update stats for this session
51
+ function updateStats(toolName, sessionId) {
52
+ const stats = loadStats();
53
+
54
+ if (!stats.sessions[sessionId]) {
55
+ stats.sessions[sessionId] = {
56
+ tool_counts: {},
57
+ last_tool: '',
58
+ total_calls: 0,
59
+ started_at: Math.floor(Date.now() / 1000)
60
+ };
61
+ }
62
+
63
+ const session = stats.sessions[sessionId];
64
+ session.tool_counts[toolName] = (session.tool_counts[toolName] || 0) + 1;
65
+ session.last_tool = toolName;
66
+ session.total_calls = (session.total_calls || 0) + 1;
67
+ session.updated_at = Math.floor(Date.now() / 1000);
68
+
69
+ saveStats(stats);
70
+ return session.tool_counts[toolName];
71
+ }
72
+
73
+ // Detect failures in Bash output
74
+ function detectBashFailure(output) {
75
+ const errorPatterns = [
76
+ /error:/i,
77
+ /failed/i,
78
+ /cannot/i,
79
+ /permission denied/i,
80
+ /command not found/i,
81
+ /no such file/i,
82
+ /exit code: [1-9]/i,
83
+ /exit status [1-9]/i,
84
+ /fatal:/i,
85
+ /abort/i,
86
+ ];
87
+
88
+ return errorPatterns.some(pattern => pattern.test(output));
89
+ }
90
+
91
+ // Detect background operation
92
+ function detectBackgroundOperation(output) {
93
+ const bgPatterns = [
94
+ /started/i,
95
+ /running/i,
96
+ /background/i,
97
+ /async/i,
98
+ /task_id/i,
99
+ /spawned/i,
100
+ ];
101
+
102
+ return bgPatterns.some(pattern => pattern.test(output));
103
+ }
104
+
105
+ // Detect write failure
106
+ function detectWriteFailure(output) {
107
+ const errorPatterns = [
108
+ /error/i,
109
+ /failed/i,
110
+ /permission denied/i,
111
+ /read-only/i,
112
+ /not found/i,
113
+ ];
114
+
115
+ return errorPatterns.some(pattern => pattern.test(output));
116
+ }
117
+
118
+ // Generate contextual message
119
+ function generateMessage(toolName, toolOutput, sessionId, toolCount) {
120
+ let message = '';
121
+
122
+ switch (toolName) {
123
+ case 'Bash':
124
+ if (detectBashFailure(toolOutput)) {
125
+ message = 'Command failed. Please investigate the error and fix before continuing.';
126
+ } else if (detectBackgroundOperation(toolOutput)) {
127
+ message = 'Background operation detected. Remember to verify results before proceeding.';
128
+ }
129
+ break;
130
+
131
+ case 'Task':
132
+ if (detectWriteFailure(toolOutput)) {
133
+ message = 'Task delegation failed. Verify agent name and parameters.';
134
+ } else if (detectBackgroundOperation(toolOutput)) {
135
+ message = 'Background task launched. Use TaskOutput to check results when needed.';
136
+ } else if (toolCount > 5) {
137
+ message = `Multiple tasks delegated (${toolCount} total). Track their completion status.`;
138
+ }
139
+ break;
140
+
141
+ case 'Edit':
142
+ if (detectWriteFailure(toolOutput)) {
143
+ message = 'Edit operation failed. Verify file exists and content matches exactly.';
144
+ } else {
145
+ message = 'Code modified. Verify changes work as expected before marking complete.';
146
+ }
147
+ break;
148
+
149
+ case 'Write':
150
+ if (detectWriteFailure(toolOutput)) {
151
+ message = 'Write operation failed. Check file permissions and directory existence.';
152
+ } else {
153
+ message = 'File written. Test the changes to ensure they work correctly.';
154
+ }
155
+ break;
156
+
157
+ case 'TodoWrite':
158
+ if (/created|added/i.test(toolOutput)) {
159
+ message = 'Todo list updated. Proceed with next task on the list.';
160
+ } else if (/completed|done/i.test(toolOutput)) {
161
+ message = 'Task marked complete. Continue with remaining todos.';
162
+ } else if (/in_progress/i.test(toolOutput)) {
163
+ message = 'Task marked in progress. Focus on completing this task.';
164
+ }
165
+ break;
166
+
167
+ case 'Read':
168
+ if (toolCount > 10) {
169
+ message = `Extensive reading (${toolCount} files). Consider using Grep for pattern searches.`;
170
+ }
171
+ break;
172
+
173
+ case 'Grep':
174
+ if (/^0$|no matches/i.test(toolOutput)) {
175
+ message = 'No matches found. Verify pattern syntax or try broader search.';
176
+ }
177
+ break;
178
+
179
+ case 'Glob':
180
+ if (!toolOutput.trim() || /no files/i.test(toolOutput)) {
181
+ message = 'No files matched pattern. Verify glob syntax and directory.';
182
+ }
183
+ break;
184
+ }
185
+
186
+ return message;
187
+ }
188
+
189
+ async function main() {
190
+ try {
191
+ const input = await readStdin();
192
+ const data = JSON.parse(input);
193
+
194
+ const toolName = data.toolName || '';
195
+ const toolOutput = data.toolOutput || '';
196
+ const sessionId = data.sessionId || 'unknown';
197
+
198
+ // Update session statistics
199
+ const toolCount = updateStats(toolName, sessionId);
200
+
201
+ // Generate contextual message
202
+ const message = generateMessage(toolName, toolOutput, sessionId, toolCount);
203
+
204
+ // Build response
205
+ const response = { continue: true };
206
+ if (message) {
207
+ response.message = message;
208
+ }
209
+
210
+ console.log(JSON.stringify(response, null, 2));
211
+ } catch (error) {
212
+ // On error, always continue
213
+ console.log(JSON.stringify({ continue: true }));
214
+ }
215
+ }
216
+
217
+ main();
@@ -0,0 +1,99 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * PreToolUse Hook: Sisyphus Reminder Enforcer (Node.js)
5
+ * Injects contextual reminders before every tool execution
6
+ * Cross-platform: Windows, macOS, Linux
7
+ */
8
+
9
+ import { existsSync, readFileSync } from 'fs';
10
+ import { join } from 'path';
11
+
12
+ // Read all stdin
13
+ async function readStdin() {
14
+ const chunks = [];
15
+ for await (const chunk of process.stdin) {
16
+ chunks.push(chunk);
17
+ }
18
+ return Buffer.concat(chunks).toString('utf-8');
19
+ }
20
+
21
+ // Simple JSON field extraction
22
+ function extractJsonField(input, field, defaultValue = '') {
23
+ try {
24
+ const data = JSON.parse(input);
25
+ return data[field] ?? defaultValue;
26
+ } catch {
27
+ // Fallback regex extraction
28
+ const match = input.match(new RegExp(`"${field}"\\s*:\\s*"([^"]*)"`, 'i'));
29
+ return match ? match[1] : defaultValue;
30
+ }
31
+ }
32
+
33
+ // Get todo status from project
34
+ function getTodoStatus(directory) {
35
+ const todoFile = join(directory, '.sisyphus', 'todos.json');
36
+
37
+ if (!existsSync(todoFile)) {
38
+ return '';
39
+ }
40
+
41
+ try {
42
+ const content = readFileSync(todoFile, 'utf-8');
43
+ const data = JSON.parse(content);
44
+ const todos = data.todos || data;
45
+
46
+ if (!Array.isArray(todos)) {
47
+ return '';
48
+ }
49
+
50
+ const pending = todos.filter(t => t.status === 'pending').length;
51
+ const inProgress = todos.filter(t => t.status === 'in_progress').length;
52
+
53
+ if (pending + inProgress > 0) {
54
+ return `[${inProgress} active, ${pending} pending] `;
55
+ }
56
+ } catch {
57
+ // Ignore errors
58
+ }
59
+
60
+ return '';
61
+ }
62
+
63
+ // Generate contextual message based on tool type
64
+ function generateMessage(toolName, todoStatus) {
65
+ const messages = {
66
+ TodoWrite: `${todoStatus}Mark todos in_progress BEFORE starting, completed IMMEDIATELY after finishing.`,
67
+ Bash: `${todoStatus}Use parallel execution for independent tasks. Use run_in_background for long operations (npm install, builds, tests).`,
68
+ Task: `${todoStatus}Launch multiple agents in parallel when tasks are independent. Use run_in_background for long operations.`,
69
+ Edit: `${todoStatus}Verify changes work after editing. Test functionality before marking complete.`,
70
+ Write: `${todoStatus}Verify changes work after editing. Test functionality before marking complete.`,
71
+ Read: `${todoStatus}Read multiple files in parallel when possible for faster analysis.`,
72
+ Grep: `${todoStatus}Combine searches in parallel when investigating multiple patterns.`,
73
+ Glob: `${todoStatus}Combine searches in parallel when investigating multiple patterns.`,
74
+ };
75
+
76
+ return messages[toolName] || `${todoStatus}The boulder never stops. Continue until all tasks complete.`;
77
+ }
78
+
79
+ async function main() {
80
+ try {
81
+ const input = await readStdin();
82
+
83
+ const toolName = extractJsonField(input, 'toolName', 'unknown');
84
+ const directory = extractJsonField(input, 'directory', process.cwd());
85
+
86
+ const todoStatus = getTodoStatus(directory);
87
+ const message = generateMessage(toolName, todoStatus);
88
+
89
+ console.log(JSON.stringify({
90
+ continue: true,
91
+ message: message
92
+ }, null, 2));
93
+ } catch (error) {
94
+ // On error, always continue
95
+ console.log(JSON.stringify({ continue: true }));
96
+ }
97
+ }
98
+
99
+ main();