oh-my-claude-sisyphus 3.0.10 → 3.1.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 +23 -1
- package/agents/build-fixer-low.md +83 -0
- package/agents/build-fixer.md +160 -0
- package/agents/code-reviewer-low.md +82 -0
- package/agents/code-reviewer.md +115 -0
- package/agents/planner.md +83 -0
- package/agents/security-reviewer-low.md +83 -0
- package/agents/security-reviewer.md +186 -0
- package/agents/tdd-guide-low.md +81 -0
- package/agents/tdd-guide.md +165 -0
- package/commands/build-fix.md +55 -0
- package/commands/code-review.md +47 -0
- package/commands/help.md +1 -1
- package/commands/ralph.md +9 -0
- package/commands/security-review.md +47 -0
- package/commands/tdd.md +54 -0
- package/dist/__tests__/hud-agents.test.js +13 -10
- package/dist/__tests__/hud-agents.test.js.map +1 -1
- package/dist/__tests__/installer.test.js +1 -1
- package/dist/cli/index.js +0 -0
- package/dist/hooks/bridge.d.ts.map +1 -1
- package/dist/hooks/bridge.js +15 -3
- package/dist/hooks/bridge.js.map +1 -1
- package/dist/hooks/keyword-detector/index.d.ts +1 -1
- package/dist/hooks/keyword-detector/index.d.ts.map +1 -1
- package/dist/hooks/keyword-detector/index.js +2 -1
- package/dist/hooks/keyword-detector/index.js.map +1 -1
- package/dist/hooks/ralph-loop/index.d.ts +0 -20
- package/dist/hooks/ralph-loop/index.d.ts.map +1 -1
- package/dist/hooks/ralph-loop/index.js +6 -40
- package/dist/hooks/ralph-loop/index.js.map +1 -1
- package/dist/hooks/ultrawork-state/index.d.ts +3 -1
- package/dist/hooks/ultrawork-state/index.d.ts.map +1 -1
- package/dist/hooks/ultrawork-state/index.js +3 -2
- package/dist/hooks/ultrawork-state/index.js.map +1 -1
- package/dist/hud/elements/limits.d.ts +1 -1
- package/dist/hud/elements/limits.d.ts.map +1 -1
- package/dist/hud/elements/limits.js +35 -2
- package/dist/hud/elements/limits.js.map +1 -1
- package/dist/hud/elements/todos.d.ts +1 -1
- package/dist/hud/elements/todos.js +3 -3
- package/dist/hud/elements/todos.js.map +1 -1
- package/dist/hud/render.js +6 -6
- package/dist/hud/render.js.map +1 -1
- package/dist/hud/types.d.ts +4 -0
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/hud/types.js.map +1 -1
- package/dist/hud/usage-api.d.ts.map +1 -1
- package/dist/hud/usage-api.js +32 -6
- package/dist/hud/usage-api.js.map +1 -1
- package/dist/installer/hooks.d.ts +5 -0
- package/dist/installer/hooks.d.ts.map +1 -1
- package/dist/installer/hooks.js +20 -0
- package/dist/installer/hooks.js.map +1 -1
- package/dist/installer/index.d.ts +1 -1
- package/dist/installer/index.js +2 -2
- package/dist/installer/index.js.map +1 -1
- package/docs/CLAUDE.md +13 -1
- package/docs/FULL-README.md +1 -1
- package/docs/LOCAL_PLUGIN_INSTALL.md +1 -1
- package/package.json +1 -1
- package/skills/help/SKILL.md +1 -1
- package/skills/omc-setup/SKILL.md +95 -0
- package/skills/ralph/SKILL.md +9 -0
- package/skills/ultrawork/SKILL.md +9 -5
- package/dist/__tests__/learned-skills/config.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/config.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/config.test.js +0 -37
- package/dist/__tests__/learned-skills/config.test.js.map +0 -1
- package/dist/__tests__/learned-skills/detector.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/detector.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/detector.test.js +0 -99
- package/dist/__tests__/learned-skills/detector.test.js.map +0 -1
- package/dist/__tests__/learned-skills/finder.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/finder.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/finder.test.js +0 -59
- package/dist/__tests__/learned-skills/finder.test.js.map +0 -1
- package/dist/__tests__/learned-skills/loader.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/loader.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/loader.test.js +0 -69
- package/dist/__tests__/learned-skills/loader.test.js.map +0 -1
- package/dist/__tests__/learned-skills/parser.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/parser.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/parser.test.js +0 -81
- package/dist/__tests__/learned-skills/parser.test.js.map +0 -1
- package/dist/__tests__/learned-skills/validator.test.d.ts +0 -2
- package/dist/__tests__/learned-skills/validator.test.d.ts.map +0 -1
- package/dist/__tests__/learned-skills/validator.test.js +0 -85
- package/dist/__tests__/learned-skills/validator.test.js.map +0 -1
- package/dist/agents/document-writer.d.ts +0 -11
- package/dist/agents/document-writer.d.ts.map +0 -1
- package/dist/agents/document-writer.js +0 -209
- package/dist/agents/document-writer.js.map +0 -1
- package/dist/agents/frontend-engineer.d.ts +0 -11
- package/dist/agents/frontend-engineer.d.ts.map +0 -1
- package/dist/agents/frontend-engineer.js +0 -115
- package/dist/agents/frontend-engineer.js.map +0 -1
- package/dist/agents/librarian.d.ts +0 -12
- package/dist/agents/librarian.d.ts.map +0 -1
- package/dist/agents/librarian.js +0 -103
- package/dist/agents/librarian.js.map +0 -1
- package/dist/agents/metis.d.ts +0 -12
- package/dist/agents/metis.d.ts.map +0 -1
- package/dist/agents/metis.js +0 -117
- package/dist/agents/metis.js.map +0 -1
- package/dist/agents/momus.d.ts +0 -12
- package/dist/agents/momus.d.ts.map +0 -1
- package/dist/agents/momus.js +0 -128
- package/dist/agents/momus.js.map +0 -1
- package/dist/agents/multimodal-looker.d.ts +0 -11
- package/dist/agents/multimodal-looker.d.ts.map +0 -1
- package/dist/agents/multimodal-looker.js +0 -70
- package/dist/agents/multimodal-looker.js.map +0 -1
- package/dist/agents/oracle.d.ts +0 -13
- package/dist/agents/oracle.d.ts.map +0 -1
- package/dist/agents/oracle.js +0 -191
- package/dist/agents/oracle.js.map +0 -1
- package/dist/agents/orchestrator-sisyphus.d.ts +0 -11
- package/dist/agents/orchestrator-sisyphus.d.ts.map +0 -1
- package/dist/agents/orchestrator-sisyphus.js +0 -115
- package/dist/agents/orchestrator-sisyphus.js.map +0 -1
- package/dist/agents/prometheus.d.ts +0 -12
- package/dist/agents/prometheus.d.ts.map +0 -1
- package/dist/agents/prometheus.js +0 -195
- package/dist/agents/prometheus.js.map +0 -1
- package/dist/agents/sisyphus-junior.d.ts +0 -12
- package/dist/agents/sisyphus-junior.d.ts.map +0 -1
- package/dist/agents/sisyphus-junior.js +0 -93
- package/dist/agents/sisyphus-junior.js.map +0 -1
- package/dist/hooks/learned-skills/config.d.ts +0 -53
- package/dist/hooks/learned-skills/config.d.ts.map +0 -1
- package/dist/hooks/learned-skills/config.js +0 -103
- package/dist/hooks/learned-skills/config.js.map +0 -1
- package/dist/hooks/learned-skills/constants.d.ts +0 -24
- package/dist/hooks/learned-skills/constants.d.ts.map +0 -1
- package/dist/hooks/learned-skills/constants.js +0 -26
- package/dist/hooks/learned-skills/constants.js.map +0 -1
- package/dist/hooks/learned-skills/detection-hook.d.ts +0 -39
- package/dist/hooks/learned-skills/detection-hook.d.ts.map +0 -1
- package/dist/hooks/learned-skills/detection-hook.js +0 -83
- package/dist/hooks/learned-skills/detection-hook.js.map +0 -1
- package/dist/hooks/learned-skills/detector.d.ts +0 -30
- package/dist/hooks/learned-skills/detector.d.ts.map +0 -1
- package/dist/hooks/learned-skills/detector.js +0 -150
- package/dist/hooks/learned-skills/detector.js.map +0 -1
- package/dist/hooks/learned-skills/finder.d.ts +0 -21
- package/dist/hooks/learned-skills/finder.d.ts.map +0 -1
- package/dist/hooks/learned-skills/finder.js +0 -117
- package/dist/hooks/learned-skills/finder.js.map +0 -1
- package/dist/hooks/learned-skills/index.d.ts +0 -62
- package/dist/hooks/learned-skills/index.d.ts.map +0 -1
- package/dist/hooks/learned-skills/index.js +0 -137
- package/dist/hooks/learned-skills/index.js.map +0 -1
- package/dist/hooks/learned-skills/loader.d.ts +0 -20
- package/dist/hooks/learned-skills/loader.d.ts.map +0 -1
- package/dist/hooks/learned-skills/loader.js +0 -107
- package/dist/hooks/learned-skills/loader.js.map +0 -1
- package/dist/hooks/learned-skills/parser.d.ts +0 -21
- package/dist/hooks/learned-skills/parser.d.ts.map +0 -1
- package/dist/hooks/learned-skills/parser.js +0 -190
- package/dist/hooks/learned-skills/parser.js.map +0 -1
- package/dist/hooks/learned-skills/promotion.d.ts +0 -29
- package/dist/hooks/learned-skills/promotion.d.ts.map +0 -1
- package/dist/hooks/learned-skills/promotion.js +0 -87
- package/dist/hooks/learned-skills/promotion.js.map +0 -1
- package/dist/hooks/learned-skills/types.d.ts +0 -109
- package/dist/hooks/learned-skills/types.d.ts.map +0 -1
- package/dist/hooks/learned-skills/types.js +0 -8
- package/dist/hooks/learned-skills/types.js.map +0 -1
- package/dist/hooks/learned-skills/validator.d.ts +0 -15
- package/dist/hooks/learned-skills/validator.d.ts.map +0 -1
- package/dist/hooks/learned-skills/validator.js +0 -87
- package/dist/hooks/learned-skills/validator.js.map +0 -1
- package/dist/hooks/learned-skills/writer.d.ts +0 -27
- package/dist/hooks/learned-skills/writer.d.ts.map +0 -1
- package/dist/hooks/learned-skills/writer.js +0 -126
- package/dist/hooks/learned-skills/writer.js.map +0 -1
- package/dist/hooks/mnemosyne/config.d.ts +0 -53
- package/dist/hooks/mnemosyne/config.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/config.js +0 -103
- package/dist/hooks/mnemosyne/config.js.map +0 -1
- package/dist/hooks/mnemosyne/constants.d.ts +0 -24
- package/dist/hooks/mnemosyne/constants.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/constants.js +0 -26
- package/dist/hooks/mnemosyne/constants.js.map +0 -1
- package/dist/hooks/mnemosyne/detection-hook.d.ts +0 -39
- package/dist/hooks/mnemosyne/detection-hook.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/detection-hook.js +0 -83
- package/dist/hooks/mnemosyne/detection-hook.js.map +0 -1
- package/dist/hooks/mnemosyne/detector.d.ts +0 -30
- package/dist/hooks/mnemosyne/detector.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/detector.js +0 -150
- package/dist/hooks/mnemosyne/detector.js.map +0 -1
- package/dist/hooks/mnemosyne/finder.d.ts +0 -21
- package/dist/hooks/mnemosyne/finder.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/finder.js +0 -117
- package/dist/hooks/mnemosyne/finder.js.map +0 -1
- package/dist/hooks/mnemosyne/index.d.ts +0 -62
- package/dist/hooks/mnemosyne/index.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/index.js +0 -137
- package/dist/hooks/mnemosyne/index.js.map +0 -1
- package/dist/hooks/mnemosyne/loader.d.ts +0 -20
- package/dist/hooks/mnemosyne/loader.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/loader.js +0 -113
- package/dist/hooks/mnemosyne/loader.js.map +0 -1
- package/dist/hooks/mnemosyne/parser.d.ts +0 -21
- package/dist/hooks/mnemosyne/parser.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/parser.js +0 -190
- package/dist/hooks/mnemosyne/parser.js.map +0 -1
- package/dist/hooks/mnemosyne/promotion.d.ts +0 -29
- package/dist/hooks/mnemosyne/promotion.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/promotion.js +0 -87
- package/dist/hooks/mnemosyne/promotion.js.map +0 -1
- package/dist/hooks/mnemosyne/types.d.ts +0 -109
- package/dist/hooks/mnemosyne/types.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/types.js +0 -8
- package/dist/hooks/mnemosyne/types.js.map +0 -1
- package/dist/hooks/mnemosyne/validator.d.ts +0 -15
- package/dist/hooks/mnemosyne/validator.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/validator.js +0 -87
- package/dist/hooks/mnemosyne/validator.js.map +0 -1
- package/dist/hooks/mnemosyne/writer.d.ts +0 -27
- package/dist/hooks/mnemosyne/writer.d.ts.map +0 -1
- package/dist/hooks/mnemosyne/writer.js +0 -126
- package/dist/hooks/mnemosyne/writer.js.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/constants.d.ts +0 -23
- package/dist/hooks/sisyphus-orchestrator/constants.d.ts.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/constants.js +0 -142
- package/dist/hooks/sisyphus-orchestrator/constants.js.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/index.d.ts +0 -113
- package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +0 -1
- package/dist/hooks/sisyphus-orchestrator/index.js +0 -309
- package/dist/hooks/sisyphus-orchestrator/index.js.map +0 -1
- package/dist/hud/sisyphus-state.d.ts +0 -31
- package/dist/hud/sisyphus-state.d.ts.map +0 -1
- package/dist/hud/sisyphus-state.js +0 -163
- package/dist/hud/sisyphus-state.js.map +0 -1
|
@@ -1,309 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sisyphus Orchestrator Hook
|
|
3
|
-
*
|
|
4
|
-
* Enforces orchestrator behavior - delegation over direct implementation.
|
|
5
|
-
* When an orchestrator agent tries to directly modify files outside .sisyphus/,
|
|
6
|
-
* this hook injects reminders to delegate to subagents instead.
|
|
7
|
-
*
|
|
8
|
-
* Adapted from oh-my-opencode's sisyphus-orchestrator hook for shell-based hooks.
|
|
9
|
-
*/
|
|
10
|
-
import { execSync } from 'child_process';
|
|
11
|
-
import { HOOK_NAME, ALLOWED_PATH_PREFIX, WRITE_EDIT_TOOLS, DIRECT_WORK_REMINDER, ORCHESTRATOR_DELEGATION_REQUIRED, BOULDER_CONTINUATION_PROMPT, VERIFICATION_REMINDER, SINGLE_TASK_DIRECTIVE, } from './constants.js';
|
|
12
|
-
import { readBoulderState, getPlanProgress, } from '../../features/boulder-state/index.js';
|
|
13
|
-
import { addWorkingMemoryEntry, setPriorityContext, } from '../notepad/index.js';
|
|
14
|
-
// Re-export constants
|
|
15
|
-
export * from './constants.js';
|
|
16
|
-
/**
|
|
17
|
-
* Check if a file path is allowed for direct orchestrator modification
|
|
18
|
-
*/
|
|
19
|
-
export function isAllowedPath(filePath) {
|
|
20
|
-
if (!filePath)
|
|
21
|
-
return true;
|
|
22
|
-
return filePath.includes(ALLOWED_PATH_PREFIX);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Check if a tool is a write/edit tool
|
|
26
|
-
*/
|
|
27
|
-
export function isWriteEditTool(toolName) {
|
|
28
|
-
return WRITE_EDIT_TOOLS.includes(toolName);
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Get git diff statistics for the working directory
|
|
32
|
-
*/
|
|
33
|
-
export function getGitDiffStats(directory) {
|
|
34
|
-
try {
|
|
35
|
-
const output = execSync('git diff --numstat HEAD', {
|
|
36
|
-
cwd: directory,
|
|
37
|
-
encoding: 'utf-8',
|
|
38
|
-
timeout: 5000,
|
|
39
|
-
}).trim();
|
|
40
|
-
if (!output)
|
|
41
|
-
return [];
|
|
42
|
-
const statusOutput = execSync('git status --porcelain', {
|
|
43
|
-
cwd: directory,
|
|
44
|
-
encoding: 'utf-8',
|
|
45
|
-
timeout: 5000,
|
|
46
|
-
}).trim();
|
|
47
|
-
const statusMap = new Map();
|
|
48
|
-
for (const line of statusOutput.split('\n')) {
|
|
49
|
-
if (!line)
|
|
50
|
-
continue;
|
|
51
|
-
const status = line.substring(0, 2).trim();
|
|
52
|
-
const filePath = line.substring(3);
|
|
53
|
-
if (status === 'A' || status === '??') {
|
|
54
|
-
statusMap.set(filePath, 'added');
|
|
55
|
-
}
|
|
56
|
-
else if (status === 'D') {
|
|
57
|
-
statusMap.set(filePath, 'deleted');
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
statusMap.set(filePath, 'modified');
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
const stats = [];
|
|
64
|
-
for (const line of output.split('\n')) {
|
|
65
|
-
const parts = line.split('\t');
|
|
66
|
-
if (parts.length < 3)
|
|
67
|
-
continue;
|
|
68
|
-
const [addedStr, removedStr, path] = parts;
|
|
69
|
-
const added = addedStr === '-' ? 0 : parseInt(addedStr, 10);
|
|
70
|
-
const removed = removedStr === '-' ? 0 : parseInt(removedStr, 10);
|
|
71
|
-
stats.push({
|
|
72
|
-
path,
|
|
73
|
-
added,
|
|
74
|
-
removed,
|
|
75
|
-
status: statusMap.get(path) ?? 'modified',
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
return stats;
|
|
79
|
-
}
|
|
80
|
-
catch {
|
|
81
|
-
return [];
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Format file changes for display
|
|
86
|
-
*/
|
|
87
|
-
export function formatFileChanges(stats) {
|
|
88
|
-
if (stats.length === 0)
|
|
89
|
-
return '[FILE CHANGES SUMMARY]\nNo file changes detected.\n';
|
|
90
|
-
const modified = stats.filter((s) => s.status === 'modified');
|
|
91
|
-
const added = stats.filter((s) => s.status === 'added');
|
|
92
|
-
const deleted = stats.filter((s) => s.status === 'deleted');
|
|
93
|
-
const lines = ['[FILE CHANGES SUMMARY]'];
|
|
94
|
-
if (modified.length > 0) {
|
|
95
|
-
lines.push('Modified files:');
|
|
96
|
-
for (const f of modified) {
|
|
97
|
-
lines.push(` ${f.path} (+${f.added}, -${f.removed})`);
|
|
98
|
-
}
|
|
99
|
-
lines.push('');
|
|
100
|
-
}
|
|
101
|
-
if (added.length > 0) {
|
|
102
|
-
lines.push('Created files:');
|
|
103
|
-
for (const f of added) {
|
|
104
|
-
lines.push(` ${f.path} (+${f.added})`);
|
|
105
|
-
}
|
|
106
|
-
lines.push('');
|
|
107
|
-
}
|
|
108
|
-
if (deleted.length > 0) {
|
|
109
|
-
lines.push('Deleted files:');
|
|
110
|
-
for (const f of deleted) {
|
|
111
|
-
lines.push(` ${f.path} (-${f.removed})`);
|
|
112
|
-
}
|
|
113
|
-
lines.push('');
|
|
114
|
-
}
|
|
115
|
-
return lines.join('\n');
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Build verification reminder with session context
|
|
119
|
-
*/
|
|
120
|
-
export function buildVerificationReminder(sessionId) {
|
|
121
|
-
let reminder = VERIFICATION_REMINDER;
|
|
122
|
-
if (sessionId) {
|
|
123
|
-
reminder += `
|
|
124
|
-
|
|
125
|
-
---
|
|
126
|
-
|
|
127
|
-
**If ANY verification fails, resume the subagent with the fix:**
|
|
128
|
-
Task tool with resume="${sessionId}", prompt="fix: [describe the specific failure]"`;
|
|
129
|
-
}
|
|
130
|
-
return reminder;
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Build orchestrator reminder with plan progress
|
|
134
|
-
*/
|
|
135
|
-
export function buildOrchestratorReminder(planName, progress, sessionId) {
|
|
136
|
-
const remaining = progress.total - progress.completed;
|
|
137
|
-
return `
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
**State:** Plan: ${planName} | ${progress.completed}/${progress.total} done, ${remaining} left
|
|
141
|
-
|
|
142
|
-
---
|
|
143
|
-
|
|
144
|
-
${buildVerificationReminder(sessionId)}
|
|
145
|
-
|
|
146
|
-
ALL pass? → commit atomic unit, mark \`[x]\`, next task.`;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Build boulder continuation message
|
|
150
|
-
*/
|
|
151
|
-
export function buildBoulderContinuation(planName, remaining, total) {
|
|
152
|
-
return BOULDER_CONTINUATION_PROMPT.replace(/{PLAN_NAME}/g, planName) +
|
|
153
|
-
`\n\n[Status: ${total - remaining}/${total} completed, ${remaining} remaining]`;
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Detect and process <remember> tags from agent output
|
|
157
|
-
* <remember>content</remember> -> Working Memory
|
|
158
|
-
* <remember priority>content</remember> -> Priority Context
|
|
159
|
-
*/
|
|
160
|
-
function processRememberTags(output, directory) {
|
|
161
|
-
// Match priority remember tags
|
|
162
|
-
const priorityMatches = output.matchAll(/<remember\s+priority>([\s\S]*?)<\/remember>/gi);
|
|
163
|
-
for (const match of priorityMatches) {
|
|
164
|
-
const content = match[1].trim();
|
|
165
|
-
if (content) {
|
|
166
|
-
setPriorityContext(directory, content);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
// Match regular remember tags
|
|
170
|
-
const regularMatches = output.matchAll(/<remember>([\s\S]*?)<\/remember>/gi);
|
|
171
|
-
for (const match of regularMatches) {
|
|
172
|
-
const content = match[1].trim();
|
|
173
|
-
if (content) {
|
|
174
|
-
addWorkingMemoryEntry(directory, content);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Process pre-tool-use hook for orchestrator
|
|
180
|
-
* Returns warning message if orchestrator tries to modify non-allowed paths
|
|
181
|
-
*/
|
|
182
|
-
export function processOrchestratorPreTool(input) {
|
|
183
|
-
const { toolName, toolInput } = input;
|
|
184
|
-
// Only check write/edit tools
|
|
185
|
-
if (!isWriteEditTool(toolName)) {
|
|
186
|
-
return { continue: true };
|
|
187
|
-
}
|
|
188
|
-
// Extract file path from tool input
|
|
189
|
-
const filePath = (toolInput?.filePath ?? toolInput?.path ?? toolInput?.file);
|
|
190
|
-
// Allow if path is in allowed prefix
|
|
191
|
-
if (!filePath || isAllowedPath(filePath)) {
|
|
192
|
-
return { continue: true };
|
|
193
|
-
}
|
|
194
|
-
// Inject warning for non-allowed path modifications
|
|
195
|
-
const warning = ORCHESTRATOR_DELEGATION_REQUIRED.replace('$FILE_PATH', filePath);
|
|
196
|
-
return {
|
|
197
|
-
continue: true,
|
|
198
|
-
message: warning,
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* Process post-tool-use hook for orchestrator
|
|
203
|
-
* Adds reminders after file modifications and Task delegations
|
|
204
|
-
*/
|
|
205
|
-
export function processOrchestratorPostTool(input, output) {
|
|
206
|
-
const { toolName, toolInput, directory } = input;
|
|
207
|
-
const workDir = directory || process.cwd();
|
|
208
|
-
// Handle write/edit tools
|
|
209
|
-
if (isWriteEditTool(toolName)) {
|
|
210
|
-
const filePath = (toolInput?.filePath ?? toolInput?.path ?? toolInput?.file);
|
|
211
|
-
if (filePath && !isAllowedPath(filePath)) {
|
|
212
|
-
return {
|
|
213
|
-
continue: true,
|
|
214
|
-
modifiedOutput: output + DIRECT_WORK_REMINDER,
|
|
215
|
-
};
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
// Handle Task tool completion
|
|
219
|
-
if (toolName === 'Task' || toolName === 'task') {
|
|
220
|
-
// Check for background task launch
|
|
221
|
-
const isBackgroundLaunch = output.includes('Background task launched') || output.includes('Background task resumed');
|
|
222
|
-
if (isBackgroundLaunch) {
|
|
223
|
-
return { continue: true };
|
|
224
|
-
}
|
|
225
|
-
// Process <remember> tags from agent output
|
|
226
|
-
processRememberTags(output, workDir);
|
|
227
|
-
// Get git stats and build enhanced output
|
|
228
|
-
const gitStats = getGitDiffStats(workDir);
|
|
229
|
-
const fileChanges = formatFileChanges(gitStats);
|
|
230
|
-
// Check for boulder state
|
|
231
|
-
const boulderState = readBoulderState(workDir);
|
|
232
|
-
if (boulderState) {
|
|
233
|
-
const progress = getPlanProgress(boulderState.active_plan);
|
|
234
|
-
const enhancedOutput = `
|
|
235
|
-
## SUBAGENT WORK COMPLETED
|
|
236
|
-
|
|
237
|
-
${fileChanges}
|
|
238
|
-
<system-reminder>
|
|
239
|
-
${buildOrchestratorReminder(boulderState.plan_name, progress)}
|
|
240
|
-
</system-reminder>`;
|
|
241
|
-
return {
|
|
242
|
-
continue: true,
|
|
243
|
-
modifiedOutput: enhancedOutput,
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
// No boulder state - add standalone verification reminder
|
|
247
|
-
return {
|
|
248
|
-
continue: true,
|
|
249
|
-
modifiedOutput: output + `\n<system-reminder>\n${buildVerificationReminder()}\n</system-reminder>`,
|
|
250
|
-
};
|
|
251
|
-
}
|
|
252
|
-
return { continue: true };
|
|
253
|
-
}
|
|
254
|
-
/**
|
|
255
|
-
* Check if boulder has incomplete tasks and build continuation prompt
|
|
256
|
-
*/
|
|
257
|
-
export function checkBoulderContinuation(directory) {
|
|
258
|
-
const boulderState = readBoulderState(directory);
|
|
259
|
-
if (!boulderState) {
|
|
260
|
-
return { shouldContinue: false };
|
|
261
|
-
}
|
|
262
|
-
const progress = getPlanProgress(boulderState.active_plan);
|
|
263
|
-
if (progress.isComplete) {
|
|
264
|
-
return { shouldContinue: false };
|
|
265
|
-
}
|
|
266
|
-
const remaining = progress.total - progress.completed;
|
|
267
|
-
return {
|
|
268
|
-
shouldContinue: true,
|
|
269
|
-
message: buildBoulderContinuation(boulderState.plan_name, remaining, progress.total),
|
|
270
|
-
};
|
|
271
|
-
}
|
|
272
|
-
/**
|
|
273
|
-
* Create sisyphus orchestrator hook handlers
|
|
274
|
-
*/
|
|
275
|
-
export function createSisyphusOrchestratorHook(directory) {
|
|
276
|
-
return {
|
|
277
|
-
/**
|
|
278
|
-
* Hook name identifier
|
|
279
|
-
*/
|
|
280
|
-
name: HOOK_NAME,
|
|
281
|
-
/**
|
|
282
|
-
* Pre-tool execution handler
|
|
283
|
-
*/
|
|
284
|
-
preTool: (toolName, toolInput) => {
|
|
285
|
-
return processOrchestratorPreTool({
|
|
286
|
-
toolName,
|
|
287
|
-
toolInput,
|
|
288
|
-
directory,
|
|
289
|
-
});
|
|
290
|
-
},
|
|
291
|
-
/**
|
|
292
|
-
* Post-tool execution handler
|
|
293
|
-
*/
|
|
294
|
-
postTool: (toolName, toolInput, output) => {
|
|
295
|
-
return processOrchestratorPostTool({ toolName, toolInput, directory }, output);
|
|
296
|
-
},
|
|
297
|
-
/**
|
|
298
|
-
* Check for boulder continuation on session idle
|
|
299
|
-
*/
|
|
300
|
-
checkContinuation: () => {
|
|
301
|
-
return checkBoulderContinuation(directory);
|
|
302
|
-
},
|
|
303
|
-
/**
|
|
304
|
-
* Get single task directive for subagent prompts
|
|
305
|
-
*/
|
|
306
|
-
getSingleTaskDirective: () => SINGLE_TASK_DIRECTIVE,
|
|
307
|
-
};
|
|
308
|
-
}
|
|
309
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/sisyphus-orchestrator/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sisyphus HUD - State Readers
|
|
3
|
-
*
|
|
4
|
-
* Read ralph, ultrawork, and PRD state from existing Sisyphus files.
|
|
5
|
-
* These are read-only functions that don't modify the state files.
|
|
6
|
-
*/
|
|
7
|
-
import type { RalphStateForHud, UltraworkStateForHud, PrdStateForHud } from './types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Read Ralph Loop state for HUD display.
|
|
10
|
-
* Returns null if no state file exists or on error.
|
|
11
|
-
*/
|
|
12
|
-
export declare function readRalphStateForHud(directory: string): RalphStateForHud | null;
|
|
13
|
-
/**
|
|
14
|
-
* Read Ultrawork state for HUD display.
|
|
15
|
-
* Checks both local .sisyphus and global ~/.claude locations.
|
|
16
|
-
*/
|
|
17
|
-
export declare function readUltraworkStateForHud(directory: string): UltraworkStateForHud | null;
|
|
18
|
-
/**
|
|
19
|
-
* Read PRD state for HUD display.
|
|
20
|
-
* Checks both root prd.json and .sisyphus/prd.json.
|
|
21
|
-
*/
|
|
22
|
-
export declare function readPrdStateForHud(directory: string): PrdStateForHud | null;
|
|
23
|
-
/**
|
|
24
|
-
* Check if any Sisyphus mode is currently active
|
|
25
|
-
*/
|
|
26
|
-
export declare function isAnyModeActive(directory: string): boolean;
|
|
27
|
-
/**
|
|
28
|
-
* Get active skill names for display
|
|
29
|
-
*/
|
|
30
|
-
export declare function getActiveSkills(directory: string): string[];
|
|
31
|
-
//# sourceMappingURL=sisyphus-state.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sisyphus-state.d.ts","sourceRoot":"","sources":["../../src/hud/sisyphus-state.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACf,MAAM,YAAY,CAAC;AAiCpB;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CA8B/E;AAWD;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,GAChB,oBAAoB,GAAG,IAAI,CAwC7B;AAgBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAsC3E;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAK1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAc3D"}
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sisyphus HUD - State Readers
|
|
3
|
-
*
|
|
4
|
-
* Read ralph, ultrawork, and PRD state from existing Sisyphus files.
|
|
5
|
-
* These are read-only functions that don't modify the state files.
|
|
6
|
-
*/
|
|
7
|
-
import { existsSync, readFileSync, statSync } from 'fs';
|
|
8
|
-
import { join } from 'path';
|
|
9
|
-
/**
|
|
10
|
-
* Maximum age for state files to be considered "active".
|
|
11
|
-
* Files older than this are treated as stale/abandoned.
|
|
12
|
-
*/
|
|
13
|
-
const MAX_STATE_AGE_MS = 2 * 60 * 60 * 1000; // 2 hours
|
|
14
|
-
/**
|
|
15
|
-
* Check if a state file is stale based on file modification time.
|
|
16
|
-
*/
|
|
17
|
-
function isStateFileStale(filePath) {
|
|
18
|
-
try {
|
|
19
|
-
const stat = statSync(filePath);
|
|
20
|
-
const age = Date.now() - stat.mtimeMs;
|
|
21
|
-
return age > MAX_STATE_AGE_MS;
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
return true; // Treat errors as stale
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Read Ralph Loop state for HUD display.
|
|
29
|
-
* Returns null if no state file exists or on error.
|
|
30
|
-
*/
|
|
31
|
-
export function readRalphStateForHud(directory) {
|
|
32
|
-
const stateFile = join(directory, '.sisyphus', 'ralph-state.json');
|
|
33
|
-
if (!existsSync(stateFile)) {
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
// Check for stale state file (abandoned session)
|
|
37
|
-
if (isStateFileStale(stateFile)) {
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
try {
|
|
41
|
-
const content = readFileSync(stateFile, 'utf-8');
|
|
42
|
-
const state = JSON.parse(content);
|
|
43
|
-
if (!state.active) {
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
return {
|
|
47
|
-
active: state.active,
|
|
48
|
-
iteration: state.iteration,
|
|
49
|
-
maxIterations: state.max_iterations,
|
|
50
|
-
prdMode: state.prd_mode,
|
|
51
|
-
currentStoryId: state.current_story_id,
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
catch {
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Read Ultrawork state for HUD display.
|
|
60
|
-
* Checks both local .sisyphus and global ~/.claude locations.
|
|
61
|
-
*/
|
|
62
|
-
export function readUltraworkStateForHud(directory) {
|
|
63
|
-
// Check local state first
|
|
64
|
-
const localFile = join(directory, '.sisyphus', 'ultrawork-state.json');
|
|
65
|
-
let state = null;
|
|
66
|
-
let stateFile = null;
|
|
67
|
-
if (existsSync(localFile) && !isStateFileStale(localFile)) {
|
|
68
|
-
try {
|
|
69
|
-
const content = readFileSync(localFile, 'utf-8');
|
|
70
|
-
state = JSON.parse(content);
|
|
71
|
-
stateFile = localFile;
|
|
72
|
-
}
|
|
73
|
-
catch {
|
|
74
|
-
// Try global
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
// Check global state if local not found or stale
|
|
78
|
-
if (!state) {
|
|
79
|
-
const homeDir = process.env.HOME || process.env.USERPROFILE || '';
|
|
80
|
-
const globalFile = join(homeDir, '.claude', 'ultrawork-state.json');
|
|
81
|
-
if (existsSync(globalFile) && !isStateFileStale(globalFile)) {
|
|
82
|
-
try {
|
|
83
|
-
const content = readFileSync(globalFile, 'utf-8');
|
|
84
|
-
state = JSON.parse(content);
|
|
85
|
-
stateFile = globalFile;
|
|
86
|
-
}
|
|
87
|
-
catch {
|
|
88
|
-
return null;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
if (!state || !state.active) {
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
95
|
-
return {
|
|
96
|
-
active: state.active,
|
|
97
|
-
reinforcementCount: state.reinforcement_count,
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Read PRD state for HUD display.
|
|
102
|
-
* Checks both root prd.json and .sisyphus/prd.json.
|
|
103
|
-
*/
|
|
104
|
-
export function readPrdStateForHud(directory) {
|
|
105
|
-
// Check root first
|
|
106
|
-
let prdPath = join(directory, 'prd.json');
|
|
107
|
-
if (!existsSync(prdPath)) {
|
|
108
|
-
// Check .sisyphus
|
|
109
|
-
prdPath = join(directory, '.sisyphus', 'prd.json');
|
|
110
|
-
if (!existsSync(prdPath)) {
|
|
111
|
-
return null;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
try {
|
|
115
|
-
const content = readFileSync(prdPath, 'utf-8');
|
|
116
|
-
const prd = JSON.parse(content);
|
|
117
|
-
if (!prd.userStories || !Array.isArray(prd.userStories)) {
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
|
-
const stories = prd.userStories;
|
|
121
|
-
const completed = stories.filter((s) => s.passes).length;
|
|
122
|
-
const total = stories.length;
|
|
123
|
-
// Find current story (first incomplete, sorted by priority)
|
|
124
|
-
const incomplete = stories
|
|
125
|
-
.filter((s) => !s.passes)
|
|
126
|
-
.sort((a, b) => a.priority - b.priority);
|
|
127
|
-
return {
|
|
128
|
-
currentStoryId: incomplete[0]?.id || null,
|
|
129
|
-
completed,
|
|
130
|
-
total,
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
catch {
|
|
134
|
-
return null;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
// ============================================================================
|
|
138
|
-
// Combined State Check
|
|
139
|
-
// ============================================================================
|
|
140
|
-
/**
|
|
141
|
-
* Check if any Sisyphus mode is currently active
|
|
142
|
-
*/
|
|
143
|
-
export function isAnyModeActive(directory) {
|
|
144
|
-
const ralph = readRalphStateForHud(directory);
|
|
145
|
-
const ultrawork = readUltraworkStateForHud(directory);
|
|
146
|
-
return (ralph?.active ?? false) || (ultrawork?.active ?? false);
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Get active skill names for display
|
|
150
|
-
*/
|
|
151
|
-
export function getActiveSkills(directory) {
|
|
152
|
-
const skills = [];
|
|
153
|
-
const ralph = readRalphStateForHud(directory);
|
|
154
|
-
if (ralph?.active) {
|
|
155
|
-
skills.push('ralph');
|
|
156
|
-
}
|
|
157
|
-
const ultrawork = readUltraworkStateForHud(directory);
|
|
158
|
-
if (ultrawork?.active) {
|
|
159
|
-
skills.push('ultrawork');
|
|
160
|
-
}
|
|
161
|
-
return skills;
|
|
162
|
-
}
|
|
163
|
-
//# sourceMappingURL=sisyphus-state.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sisyphus-state.js","sourceRoot":"","sources":["../../src/hud/sisyphus-state.ts"],"names":[],"mappings":"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"}
|