oh-my-claude-sisyphus 3.8.10 → 3.8.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/dist/features/continuation-enforcement.js +1 -1
  4. package/dist/features/continuation-enforcement.js.map +1 -1
  5. package/dist/hooks/bridge.d.ts.map +1 -1
  6. package/dist/hooks/bridge.js +62 -78
  7. package/dist/hooks/bridge.js.map +1 -1
  8. package/dist/hooks/keyword-detector/__tests__/index.test.js +89 -1
  9. package/dist/hooks/keyword-detector/__tests__/index.test.js.map +1 -1
  10. package/dist/hooks/keyword-detector/index.d.ts +5 -1
  11. package/dist/hooks/keyword-detector/index.d.ts.map +1 -1
  12. package/dist/hooks/keyword-detector/index.js +32 -11
  13. package/dist/hooks/keyword-detector/index.js.map +1 -1
  14. package/dist/hooks/persistent-mode/index.d.ts +2 -1
  15. package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
  16. package/dist/hooks/persistent-mode/index.js +7 -17
  17. package/dist/hooks/persistent-mode/index.js.map +1 -1
  18. package/dist/hooks/todo-continuation/index.d.ts.map +1 -1
  19. package/dist/hooks/todo-continuation/index.js +2 -15
  20. package/dist/hooks/todo-continuation/index.js.map +1 -1
  21. package/dist/installer/hooks.d.ts +8 -111
  22. package/dist/installer/hooks.d.ts.map +1 -1
  23. package/dist/installer/hooks.js +11 -124
  24. package/dist/installer/hooks.js.map +1 -1
  25. package/dist/installer/index.d.ts +2 -10
  26. package/dist/installer/index.d.ts.map +1 -1
  27. package/dist/installer/index.js +10 -23
  28. package/dist/installer/index.js.map +1 -1
  29. package/package.json +1 -1
  30. package/scripts/keyword-detector.mjs +140 -59
  31. package/scripts/persistent-mode.mjs +26 -53
  32. package/templates/hooks/keyword-detector.mjs +280 -118
  33. package/templates/hooks/persistent-mode.mjs +26 -53
  34. package/templates/hooks/stop-continuation.mjs +6 -158
  35. package/hooks/keyword-detector.sh +0 -102
  36. package/hooks/persistent-mode.sh +0 -172
  37. package/hooks/session-start.sh +0 -62
  38. package/hooks/stop-continuation.sh +0 -40
  39. package/scripts/claude-sisyphus.sh +0 -9
  40. package/scripts/install.sh +0 -1673
  41. package/scripts/keyword-detector.sh +0 -71
  42. package/scripts/persistent-mode.sh +0 -311
  43. package/scripts/post-tool-verifier.sh +0 -196
  44. package/scripts/pre-tool-enforcer.sh +0 -76
  45. package/scripts/sisyphus-aliases.sh +0 -18
  46. package/scripts/stop-continuation.sh +0 -31
@@ -4,23 +4,15 @@
4
4
  * Handles installation of OMC agents, commands, and configuration
5
5
  * into the Claude Code config directory (~/.claude/).
6
6
  *
7
- * This replicates the functionality of scripts/install.sh but in TypeScript,
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
- * - OMC_USE_NODE_HOOKS=1: Force Node.js hooks on any platform
16
- * - OMC_USE_BASH_HOOKS=1: Force Bash hooks (Unix only)
7
+ * Cross-platform support via Node.js-based hook scripts (.mjs).
8
+ * Bash hook scripts were removed in v3.9.0.
17
9
  */
18
10
  import { existsSync, mkdirSync, writeFileSync, readFileSync, chmodSync, readdirSync } from 'fs';
19
11
  import { join, dirname } from 'path';
20
12
  import { fileURLToPath } from 'url';
21
13
  import { homedir } from 'os';
22
14
  import { execSync } from 'child_process';
23
- import { getHookScripts, getHooksSettingsConfig, isWindows, shouldUseNodeHooks, MIN_NODE_VERSION } from './hooks.js';
15
+ import { getHookScripts, getHooksSettingsConfig, isWindows, MIN_NODE_VERSION } from './hooks.js';
24
16
  /** Claude Code configuration directory */
25
17
  export const CLAUDE_CONFIG_DIR = join(homedir(), '.claude');
26
18
  export const AGENTS_DIR = join(CLAUDE_CONFIG_DIR, 'agents');
@@ -153,19 +145,15 @@ export function install(options = {}) {
153
145
  console.log(msg);
154
146
  }
155
147
  };
156
- // Check Node.js version (required for Node.js hooks on Windows)
148
+ // Check Node.js version (required for Node.js hooks)
157
149
  const nodeCheck = checkNodeVersion();
158
150
  if (!nodeCheck.valid) {
159
- log(`Warning: Node.js ${nodeCheck.required}+ required, found ${nodeCheck.current}`);
160
- if (isWindows()) {
161
- result.errors.push(`Node.js ${nodeCheck.required}+ is required for Windows support. Found: ${nodeCheck.current}`);
162
- result.message = `Installation failed: Node.js ${nodeCheck.required}+ required`;
163
- return result;
164
- }
165
- // On Unix, we can still use bash hooks, so just warn
151
+ result.errors.push(`Node.js ${nodeCheck.required}+ is required. Found: ${nodeCheck.current}`);
152
+ result.message = `Installation failed: Node.js ${nodeCheck.required}+ required`;
153
+ return result;
166
154
  }
167
155
  // Log platform info
168
- log(`Platform: ${process.platform} (${shouldUseNodeHooks() ? 'Node.js hooks' : 'Bash hooks'})`);
156
+ log(`Platform: ${process.platform} (Node.js hooks)`);
169
157
  // Check if running as a plugin
170
158
  const runningAsPlugin = isRunningAsPlugin();
171
159
  if (runningAsPlugin) {
@@ -275,10 +263,9 @@ export function install(options = {}) {
275
263
  else {
276
264
  log('CLAUDE.md exists in home directory, skipping');
277
265
  }
278
- // Install hook scripts (platform-aware)
266
+ // Install hook scripts
279
267
  const hookScripts = getHookScripts();
280
- const hookType = shouldUseNodeHooks() ? 'Node.js' : 'Bash';
281
- log(`Installing ${hookType} hook scripts...`);
268
+ log('Installing hook scripts...');
282
269
  for (const [filename, content] of Object.entries(hookScripts)) {
283
270
  const filepath = join(HOOKS_DIR, filename);
284
271
  if (existsSync(filepath) && !options.force) {
@@ -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": "3.8.10",
3
+ "version": "3.8.12",
4
4
  "description": "Multi-agent orchestration system for Claude Code - Inspired by oh-my-opencode",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -134,6 +134,64 @@ ${originalPrompt}
134
134
  IMPORTANT: Invoke the skill IMMEDIATELY. Do not proceed without loading the skill instructions.`;
135
135
  }
136
136
 
137
+ /**
138
+ * Create multi-skill invocation message for combined keywords
139
+ */
140
+ function createMultiSkillInvocation(skills, originalPrompt) {
141
+ if (skills.length === 0) return '';
142
+ if (skills.length === 1) {
143
+ return createSkillInvocation(skills[0].name, originalPrompt, skills[0].args);
144
+ }
145
+
146
+ const skillBlocks = skills.map((s, i) => {
147
+ const argsSection = s.args ? `\nArguments: ${s.args}` : '';
148
+ return `### Skill ${i + 1}: ${s.name.toUpperCase()}
149
+ Skill: oh-my-claudecode:${s.name}${argsSection}`;
150
+ }).join('\n\n');
151
+
152
+ return `[MAGIC KEYWORDS DETECTED: ${skills.map(s => s.name.toUpperCase()).join(', ')}]
153
+
154
+ You MUST invoke ALL of the following skills using the Skill tool, in order:
155
+
156
+ ${skillBlocks}
157
+
158
+ User request:
159
+ ${originalPrompt}
160
+
161
+ IMPORTANT: Invoke ALL skills listed above. Start with the first skill IMMEDIATELY. After it completes, invoke the next skill in order. Do not skip any skill.`;
162
+ }
163
+
164
+ /**
165
+ * Resolve conflicts between detected keywords
166
+ */
167
+ function resolveConflicts(matches) {
168
+ const names = matches.map(m => m.name);
169
+
170
+ // Cancel is exclusive
171
+ if (names.includes('cancel')) {
172
+ return [matches.find(m => m.name === 'cancel')];
173
+ }
174
+
175
+ let resolved = [...matches];
176
+
177
+ // Ecomode beats ultrawork
178
+ if (names.includes('ecomode') && names.includes('ultrawork')) {
179
+ resolved = resolved.filter(m => m.name !== 'ultrawork');
180
+ }
181
+
182
+ // Ultrapilot beats autopilot
183
+ if (names.includes('ultrapilot') && names.includes('autopilot')) {
184
+ resolved = resolved.filter(m => m.name !== 'autopilot');
185
+ }
186
+
187
+ // Sort by priority order
188
+ const priorityOrder = ['cancel','ralph','autopilot','ultrapilot','ultrawork','ecomode',
189
+ 'swarm','pipeline','ralplan','plan','tdd','research','ultrathink','deepsearch','analyze'];
190
+ resolved.sort((a, b) => priorityOrder.indexOf(a.name) - priorityOrder.indexOf(b.name));
191
+
192
+ return resolved;
193
+ }
194
+
137
195
  /**
138
196
  * Create proper hook output with additionalContext (Claude Code hooks API)
139
197
  * The 'message' field is NOT a valid hook output - use hookSpecificOutput.additionalContext
@@ -169,27 +227,20 @@ async function main() {
169
227
 
170
228
  const cleanPrompt = removeCodeBlocks(prompt).toLowerCase();
171
229
 
172
- // Priority order: cancel > ralph > autopilot > ultrapilot > ultrawork > ecomode > swarm > pipeline > ralplan > plan > tdd > research > ultrathink > deepsearch > analyze
230
+ // Collect all matching keywords
231
+ const matches = [];
173
232
 
174
- // Priority 1: Cancel (BEFORE other modes - clears states)
175
- // Use specific keywords to avoid false positives from natural language
176
- // (e.g., "don't let it stop the context" or URLs containing "cancel")
233
+ // Cancel keywords
177
234
  if (/\b(cancelomc|stopomc)\b/i.test(cleanPrompt)) {
178
- // Special: clear state files instead of creating them
179
- clearStateFiles(directory, ['ralph', 'autopilot', 'ultrapilot', 'ultrawork', 'ecomode', 'swarm', 'pipeline']);
180
- console.log(JSON.stringify(createHookOutput(createSkillInvocation('cancel', prompt))));
181
- return;
235
+ matches.push({ name: 'cancel', args: '' });
182
236
  }
183
237
 
184
- // Priority 2: Ralph keywords
238
+ // Ralph keywords
185
239
  if (/\b(ralph|don't stop|must complete|until done)\b/i.test(cleanPrompt)) {
186
- activateState(directory, prompt, 'ralph');
187
- activateState(directory, prompt, 'ultrawork');
188
- console.log(JSON.stringify(createHookOutput(createSkillInvocation('ralph', prompt))));
189
- return;
240
+ matches.push({ name: 'ralph', args: '' });
190
241
  }
191
242
 
192
- // Priority 3: Autopilot keywords
243
+ // Autopilot keywords
193
244
  if (/\b(autopilot|auto pilot|auto-pilot|autonomous|full auto|fullsend)\b/i.test(cleanPrompt) ||
194
245
  /\bbuild\s+me\s+/i.test(cleanPrompt) ||
195
246
  /\bcreate\s+me\s+/i.test(cleanPrompt) ||
@@ -199,101 +250,131 @@ async function main() {
199
250
  /\bhandle\s+it\s+all\b/i.test(cleanPrompt) ||
200
251
  /\bend\s+to\s+end\b/i.test(cleanPrompt) ||
201
252
  /\be2e\s+this\b/i.test(cleanPrompt)) {
202
- activateState(directory, prompt, 'autopilot');
203
- console.log(JSON.stringify(createHookOutput(createSkillInvocation('autopilot', prompt))));
204
- return;
253
+ matches.push({ name: 'autopilot', args: '' });
205
254
  }
206
255
 
207
- // Priority 4: Ultrapilot
256
+ // Ultrapilot keywords
208
257
  if (/\b(ultrapilot|ultra-pilot)\b/i.test(cleanPrompt) ||
209
258
  /\bparallel\s+build\b/i.test(cleanPrompt) ||
210
259
  /\bswarm\s+build\b/i.test(cleanPrompt)) {
211
- activateState(directory, prompt, 'ultrapilot');
212
- console.log(JSON.stringify(createHookOutput(createSkillInvocation('ultrapilot', prompt))));
213
- return;
260
+ matches.push({ name: 'ultrapilot', args: '' });
214
261
  }
215
262
 
216
- // Priority 5: Ultrawork keywords
263
+ // Ultrawork keywords
217
264
  if (/\b(ultrawork|ulw|uw)\b/i.test(cleanPrompt)) {
218
- activateState(directory, prompt, 'ultrawork');
219
- console.log(JSON.stringify(createHookOutput(createSkillInvocation('ultrawork', prompt))));
220
- return;
265
+ matches.push({ name: 'ultrawork', args: '' });
221
266
  }
222
267
 
223
- // Priority 6: Ecomode keywords (includes "efficient")
268
+ // Ecomode keywords
224
269
  if (/\b(eco|ecomode|eco-mode|efficient|save-tokens|budget)\b/i.test(cleanPrompt)) {
225
- activateState(directory, prompt, 'ecomode');
226
- console.log(JSON.stringify(createHookOutput(createSkillInvocation('ecomode', prompt))));
227
- return;
270
+ matches.push({ name: 'ecomode', args: '' });
228
271
  }
229
272
 
230
- // Priority 7: Swarm - parse N from "swarm N agents"
273
+ // Swarm - parse N from "swarm N agents"
231
274
  const swarmMatch = cleanPrompt.match(/\bswarm\s+(\d+)\s+agents?\b/i);
232
275
  if (swarmMatch || /\bcoordinated\s+agents\b/i.test(cleanPrompt)) {
233
- const agentCount = swarmMatch ? swarmMatch[1] : '3'; // default 3
234
- console.log(JSON.stringify(createHookOutput(createSkillInvocation('swarm', prompt, agentCount))));
235
- return;
276
+ const agentCount = swarmMatch ? swarmMatch[1] : '3';
277
+ matches.push({ name: 'swarm', args: agentCount });
236
278
  }
237
279
 
238
- // Priority 8: Pipeline
280
+ // Pipeline keywords
239
281
  if (/\b(pipeline)\b/i.test(cleanPrompt) || /\bchain\s+agents\b/i.test(cleanPrompt)) {
240
- console.log(JSON.stringify(createHookOutput(createSkillInvocation('pipeline', prompt))));
241
- return;
282
+ matches.push({ name: 'pipeline', args: '' });
242
283
  }
243
284
 
244
- // Priority 9: Ralplan keyword (before plan to avoid false match)
285
+ // Ralplan keyword
245
286
  if (/\b(ralplan)\b/i.test(cleanPrompt)) {
246
- console.log(JSON.stringify(createHookOutput(createSkillInvocation('ralplan', prompt))));
247
- return;
287
+ matches.push({ name: 'ralplan', args: '' });
248
288
  }
249
289
 
250
- // Priority 10: Plan keywords
290
+ // Plan keywords
251
291
  if (/\b(plan this|plan the)\b/i.test(cleanPrompt)) {
252
- console.log(JSON.stringify(createHookOutput(createSkillInvocation('plan', prompt))));
253
- return;
292
+ matches.push({ name: 'plan', args: '' });
254
293
  }
255
294
 
256
- // Priority 11: TDD
295
+ // TDD keywords
257
296
  if (/\b(tdd)\b/i.test(cleanPrompt) ||
258
297
  /\btest\s+first\b/i.test(cleanPrompt) ||
259
298
  /\bred\s+green\b/i.test(cleanPrompt)) {
260
- console.log(JSON.stringify(createHookOutput(createSkillInvocation('tdd', prompt))));
261
- return;
299
+ matches.push({ name: 'tdd', args: '' });
262
300
  }
263
301
 
264
- // Priority 12: Research
265
- // "research" alone OR "analyze data" OR "statistics" trigger research skill
302
+ // Research keywords
266
303
  if (/\b(research)\b/i.test(cleanPrompt) ||
267
304
  /\banalyze\s+data\b/i.test(cleanPrompt) ||
268
305
  /\bstatistics\b/i.test(cleanPrompt)) {
269
- console.log(JSON.stringify(createHookOutput(createSkillInvocation('research', prompt))));
270
- return;
306
+ matches.push({ name: 'research', args: '' });
271
307
  }
272
308
 
273
- // Priority 13: Ultrathink/think keywords (keep inline message)
309
+ // Ultrathink keywords
274
310
  if (/\b(ultrathink|think hard|think deeply)\b/i.test(cleanPrompt)) {
275
- console.log(JSON.stringify(createHookOutput(ULTRATHINK_MESSAGE)));
276
- return;
311
+ matches.push({ name: 'ultrathink', args: '' });
277
312
  }
278
313
 
279
- // Priority 14: Deepsearch (RESTRICTED patterns)
314
+ // Deepsearch keywords
280
315
  if (/\b(deepsearch)\b/i.test(cleanPrompt) ||
281
316
  /\bsearch\s+(the\s+)?(codebase|code|files?|project)\b/i.test(cleanPrompt) ||
282
317
  /\bfind\s+(in\s+)?(codebase|code|all\s+files?)\b/i.test(cleanPrompt)) {
283
- console.log(JSON.stringify(createHookOutput(createSkillInvocation('deepsearch', prompt))));
284
- return;
318
+ matches.push({ name: 'deepsearch', args: '' });
285
319
  }
286
320
 
287
- // Priority 15: Analyze (RESTRICTED patterns)
321
+ // Analyze keywords
288
322
  if (/\b(deep\s*analyze)\b/i.test(cleanPrompt) ||
289
323
  /\binvestigate\s+(the|this|why)\b/i.test(cleanPrompt) ||
290
324
  /\bdebug\s+(the|this|why)\b/i.test(cleanPrompt)) {
291
- console.log(JSON.stringify(createHookOutput(createSkillInvocation('analyze', prompt))));
325
+ matches.push({ name: 'analyze', args: '' });
326
+ }
327
+
328
+ // No matches - pass through
329
+ if (matches.length === 0) {
330
+ console.log(JSON.stringify({ continue: true }));
292
331
  return;
293
332
  }
294
333
 
295
- // No keywords detected
296
- console.log(JSON.stringify({ continue: true }));
334
+ // Resolve conflicts
335
+ const resolved = resolveConflicts(matches);
336
+
337
+ // Handle cancel specially - clear states and emit
338
+ if (resolved.length > 0 && resolved[0].name === 'cancel') {
339
+ clearStateFiles(directory, ['ralph', 'autopilot', 'ultrapilot', 'ultrawork', 'ecomode', 'swarm', 'pipeline']);
340
+ console.log(JSON.stringify(createHookOutput(createSkillInvocation('cancel', prompt))));
341
+ return;
342
+ }
343
+
344
+ // Activate states for modes that need them
345
+ const stateModes = resolved.filter(m => ['ralph', 'autopilot', 'ultrapilot', 'ultrawork', 'ecomode'].includes(m.name));
346
+ for (const mode of stateModes) {
347
+ activateState(directory, prompt, mode.name);
348
+ }
349
+
350
+ // Special: Ralph with ultrawork (only if ecomode NOT present)
351
+ const hasRalph = resolved.some(m => m.name === 'ralph');
352
+ const hasEcomode = resolved.some(m => m.name === 'ecomode');
353
+ const hasUltrawork = resolved.some(m => m.name === 'ultrawork');
354
+ if (hasRalph && !hasEcomode && !hasUltrawork) {
355
+ activateState(directory, prompt, 'ultrawork');
356
+ }
357
+
358
+ // Handle ultrathink specially - prepend message instead of skill invocation
359
+ const ultrathinkIndex = resolved.findIndex(m => m.name === 'ultrathink');
360
+ if (ultrathinkIndex !== -1) {
361
+ // Remove ultrathink from skill list
362
+ resolved.splice(ultrathinkIndex, 1);
363
+
364
+ // If ultrathink was the only match, emit message
365
+ if (resolved.length === 0) {
366
+ console.log(JSON.stringify(createHookOutput(ULTRATHINK_MESSAGE)));
367
+ return;
368
+ }
369
+
370
+ // Otherwise, prepend ultrathink message to skill invocation
371
+ const skillMessage = createMultiSkillInvocation(resolved, prompt);
372
+ console.log(JSON.stringify(createHookOutput(ULTRATHINK_MESSAGE + skillMessage)));
373
+ return;
374
+ }
375
+
376
+ // Emit skill invocation(s)
377
+ console.log(JSON.stringify(createHookOutput(createMultiSkillInvocation(resolved, prompt))));
297
378
  } catch (error) {
298
379
  // On any error, allow continuation
299
380
  console.log(JSON.stringify({ continue: true }));
@@ -83,23 +83,20 @@ function countIncompleteTasks(sessionId) {
83
83
  return count;
84
84
  }
85
85
 
86
- function countIncompleteTodos(todosDir, projectDir) {
86
+ function countIncompleteTodos(sessionId, projectDir) {
87
87
  let count = 0;
88
88
 
89
- if (existsSync(todosDir)) {
89
+ // Session-specific todos only (no global scan)
90
+ if (sessionId && typeof sessionId === 'string' && /^[a-zA-Z0-9][a-zA-Z0-9_-]{0,255}$/.test(sessionId)) {
91
+ const sessionTodoPath = join(homedir(), '.claude', 'todos', `${sessionId}.json`);
90
92
  try {
91
- const files = readdirSync(todosDir).filter(f => f.endsWith('.json'));
92
- for (const file of files) {
93
- try {
94
- const content = readFileSync(join(todosDir, file), 'utf-8');
95
- const data = JSON.parse(content);
96
- const todos = Array.isArray(data) ? data : (Array.isArray(data?.todos) ? data.todos : []);
97
- count += todos.filter(t => t.status !== 'completed' && t.status !== 'cancelled').length;
98
- } catch { /* skip */ }
99
- }
93
+ const data = readJsonFile(sessionTodoPath);
94
+ const todos = Array.isArray(data) ? data : (Array.isArray(data?.todos) ? data.todos : []);
95
+ count += todos.filter(t => t.status !== 'completed' && t.status !== 'cancelled').length;
100
96
  } catch { /* skip */ }
101
97
  }
102
98
 
99
+ // Project-local todos only
103
100
  for (const path of [
104
101
  join(projectDir, '.omc', 'todos.json'),
105
102
  join(projectDir, '.claude', 'todos.json')
@@ -173,7 +170,6 @@ async function main() {
173
170
 
174
171
  const directory = data.directory || process.cwd();
175
172
  const sessionId = data.sessionId || data.session_id || '';
176
- const todosDir = join(homedir(), '.claude', 'todos');
177
173
  const stateDir = join(directory, '.omc', 'state');
178
174
  const globalStateDir = join(homedir(), '.omc', 'state');
179
175
 
@@ -204,9 +200,9 @@ async function main() {
204
200
  const swarmMarker = existsSync(join(stateDir, 'swarm-active.marker'));
205
201
  const swarmSummary = readJsonFile(join(stateDir, 'swarm-summary.json'));
206
202
 
207
- // Count incomplete items
203
+ // Count incomplete items (session-specific + project-local only)
208
204
  const taskCount = countIncompleteTasks(sessionId);
209
- const todoCount = countIncompleteTodos(todosDir, directory);
205
+ const todoCount = countIncompleteTodos(sessionId, directory);
210
206
  const totalIncomplete = taskCount + todoCount;
211
207
 
212
208
  // Priority 1: Ralph Loop (explicit persistence mode)
@@ -219,8 +215,8 @@ async function main() {
219
215
  writeJsonFile(ralph.path, ralph.state);
220
216
 
221
217
  console.log(JSON.stringify({
222
- continue: false,
223
- reason: `[RALPH LOOP - ITERATION ${iteration + 1}/${maxIter}] Work is NOT done. Continue. When complete, output: <promise>${ralph.state.completion_promise || 'DONE'}</promise>\n${ralph.state.prompt ? `Task: ${ralph.state.prompt}` : ''}`
218
+ continue: true,
219
+ message: `[RALPH LOOP - ITERATION ${iteration + 1}/${maxIter}] Work is NOT done. Continue. When complete, output: <promise>${ralph.state.completion_promise || 'DONE'}</promise>\n${ralph.state.prompt ? `Task: ${ralph.state.prompt}` : ''}`
224
220
  }));
225
221
  return;
226
222
  }
@@ -236,8 +232,8 @@ async function main() {
236
232
  writeJsonFile(autopilot.path, autopilot.state);
237
233
 
238
234
  console.log(JSON.stringify({
239
- continue: false,
240
- reason: `[AUTOPILOT - Phase: ${phase}] Autopilot not complete. Continue working.`
235
+ continue: true,
236
+ message: `[AUTOPILOT - Phase: ${phase}] Autopilot not complete. Continue working.`
241
237
  }));
242
238
  return;
243
239
  }
@@ -255,8 +251,8 @@ async function main() {
255
251
  writeJsonFile(ultrapilot.path, ultrapilot.state);
256
252
 
257
253
  console.log(JSON.stringify({
258
- continue: false,
259
- reason: `[ULTRAPILOT] ${incomplete} workers still running. Continue.`
254
+ continue: true,
255
+ message: `[ULTRAPILOT] ${incomplete} workers still running. Continue.`
260
256
  }));
261
257
  return;
262
258
  }
@@ -273,8 +269,8 @@ async function main() {
273
269
  writeJsonFile(join(stateDir, 'swarm-summary.json'), swarmSummary);
274
270
 
275
271
  console.log(JSON.stringify({
276
- continue: false,
277
- reason: `[SWARM ACTIVE] ${pending} tasks remain. Continue working.`
272
+ continue: true,
273
+ message: `[SWARM ACTIVE] ${pending} tasks remain. Continue working.`
278
274
  }));
279
275
  return;
280
276
  }
@@ -292,8 +288,8 @@ async function main() {
292
288
  writeJsonFile(pipeline.path, pipeline.state);
293
289
 
294
290
  console.log(JSON.stringify({
295
- continue: false,
296
- reason: `[PIPELINE - Stage ${currentStage + 1}/${totalStages}] Pipeline not complete. Continue.`
291
+ continue: true,
292
+ message: `[PIPELINE - Stage ${currentStage + 1}/${totalStages}] Pipeline not complete. Continue.`
297
293
  }));
298
294
  return;
299
295
  }
@@ -309,8 +305,8 @@ async function main() {
309
305
  writeJsonFile(ultraqa.path, ultraqa.state);
310
306
 
311
307
  console.log(JSON.stringify({
312
- continue: false,
313
- reason: `[ULTRAQA - Cycle ${cycle + 1}/${maxCycles}] Tests not all passing. Continue fixing.`
308
+ continue: true,
309
+ message: `[ULTRAQA - Cycle ${cycle + 1}/${maxCycles}] Tests not all passing. Continue fixing.`
314
310
  }));
315
311
  return;
316
312
  }
@@ -345,8 +341,8 @@ async function main() {
345
341
  }
346
342
 
347
343
  console.log(JSON.stringify({
348
- continue: false,
349
- reason
344
+ continue: true,
345
+ message: reason
350
346
  }));
351
347
  return;
352
348
  }
@@ -374,31 +370,8 @@ async function main() {
374
370
  }
375
371
 
376
372
  console.log(JSON.stringify({
377
- continue: false,
378
- reason
379
- }));
380
- return;
381
- }
382
-
383
- // Priority 9: Generic Task/Todo continuation (no specific mode)
384
- if (totalIncomplete > 0) {
385
- const contFile = join(stateDir, 'continuation-count.json');
386
- let contState = readJsonFile(contFile) || { count: 0 };
387
- contState.count = (contState.count || 0) + 1;
388
- writeJsonFile(contFile, contState);
389
-
390
- if (contState.count > 15) {
391
- console.log(JSON.stringify({
392
- continue: true,
393
- reason: `[CONTINUATION ESCAPE] Max continuations reached. Allowing stop.`
394
- }));
395
- return;
396
- }
397
-
398
- const itemType = taskCount > 0 ? 'Tasks' : 'todos';
399
- console.log(JSON.stringify({
400
- continue: false,
401
- reason: `[CONTINUATION ${contState.count}/15] ${totalIncomplete} incomplete ${itemType}. Continue working.`
373
+ continue: true,
374
+ message: reason
402
375
  }));
403
376
  return;
404
377
  }