oh-my-claude-sisyphus 3.5.7 → 3.6.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/agents/executor-high.md +2 -0
- package/agents/executor-low.md +2 -0
- package/agents/executor.md +2 -0
- package/agents/templates/base-agent.md +9 -0
- package/commands/cancel.md +8 -8
- package/commands/swarm.md +350 -148
- package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts +7 -0
- package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts.map +1 -0
- package/dist/__tests__/hooks/auto-slash-command/executor.test.js +374 -0
- package/dist/__tests__/hooks/auto-slash-command/executor.test.js.map +1 -0
- package/dist/__tests__/hooks/learner/bridge.test.d.ts +11 -0
- package/dist/__tests__/hooks/learner/bridge.test.d.ts.map +1 -0
- package/dist/__tests__/hooks/learner/bridge.test.js +199 -0
- package/dist/__tests__/hooks/learner/bridge.test.js.map +1 -0
- package/dist/__tests__/hooks.test.js +10 -9
- package/dist/__tests__/hooks.test.js.map +1 -1
- package/dist/__tests__/installer.test.js +1 -1
- package/dist/agents/codex-agents.d.ts +20 -0
- package/dist/agents/codex-agents.d.ts.map +1 -0
- package/dist/agents/codex-agents.js +36 -0
- package/dist/agents/codex-agents.js.map +1 -0
- package/dist/agents/preamble.d.ts +14 -0
- package/dist/agents/preamble.d.ts.map +1 -0
- package/dist/agents/preamble.js +26 -0
- package/dist/agents/preamble.js.map +1 -0
- package/dist/hooks/autopilot/__tests__/cancel.test.js +14 -4
- package/dist/hooks/autopilot/__tests__/cancel.test.js.map +1 -1
- package/dist/hooks/autopilot/__tests__/state.test.js +1 -0
- package/dist/hooks/autopilot/__tests__/state.test.js.map +1 -1
- package/dist/hooks/autopilot/__tests__/summary.test.js +38 -3
- package/dist/hooks/autopilot/__tests__/summary.test.js.map +1 -1
- package/dist/hooks/autopilot/state.d.ts +1 -1
- package/dist/hooks/autopilot/state.d.ts.map +1 -1
- package/dist/hooks/autopilot/state.js +15 -8
- package/dist/hooks/autopilot/state.js.map +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +7 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/learner/bridge.d.ts +71 -0
- package/dist/hooks/learner/bridge.d.ts.map +1 -0
- package/dist/hooks/learner/bridge.js +426 -0
- package/dist/hooks/learner/bridge.js.map +1 -0
- package/dist/hooks/mode-registry/index.d.ts +135 -0
- package/dist/hooks/mode-registry/index.d.ts.map +1 -0
- package/dist/hooks/mode-registry/index.js +445 -0
- package/dist/hooks/mode-registry/index.js.map +1 -0
- package/dist/hooks/mode-registry/types.d.ts +31 -0
- package/dist/hooks/mode-registry/types.d.ts.map +1 -0
- package/dist/hooks/mode-registry/types.js +7 -0
- package/dist/hooks/mode-registry/types.js.map +1 -0
- package/dist/hooks/ralph/loop.js +6 -6
- package/dist/hooks/ralph/loop.js.map +1 -1
- package/dist/hooks/skill-bridge.cjs +349 -0
- package/dist/hooks/swarm/__tests__/claiming.test.d.ts +2 -0
- package/dist/hooks/swarm/__tests__/claiming.test.d.ts.map +1 -0
- package/dist/hooks/swarm/__tests__/claiming.test.js +170 -0
- package/dist/hooks/swarm/__tests__/claiming.test.js.map +1 -0
- package/dist/hooks/swarm/__tests__/index.test.d.ts +2 -0
- package/dist/hooks/swarm/__tests__/index.test.d.ts.map +1 -0
- package/dist/hooks/swarm/__tests__/index.test.js +157 -0
- package/dist/hooks/swarm/__tests__/index.test.js.map +1 -0
- package/dist/hooks/swarm/__tests__/mode-registry.test.d.ts +2 -0
- package/dist/hooks/swarm/__tests__/mode-registry.test.d.ts.map +1 -0
- package/dist/hooks/swarm/__tests__/mode-registry.test.js +177 -0
- package/dist/hooks/swarm/__tests__/mode-registry.test.js.map +1 -0
- package/dist/hooks/swarm/claiming.d.ts +101 -0
- package/dist/hooks/swarm/claiming.d.ts.map +1 -0
- package/dist/hooks/swarm/claiming.js +460 -0
- package/dist/hooks/swarm/claiming.js.map +1 -0
- package/dist/hooks/swarm/index.d.ts +221 -0
- package/dist/hooks/swarm/index.d.ts.map +1 -0
- package/dist/hooks/swarm/index.js +413 -0
- package/dist/hooks/swarm/index.js.map +1 -0
- package/dist/hooks/swarm/state.d.ts +94 -0
- package/dist/hooks/swarm/state.d.ts.map +1 -0
- package/dist/hooks/swarm/state.js +530 -0
- package/dist/hooks/swarm/state.js.map +1 -0
- package/dist/hooks/swarm/types.d.ts +116 -0
- package/dist/hooks/swarm/types.d.ts.map +1 -0
- package/dist/hooks/swarm/types.js +22 -0
- package/dist/hooks/swarm/types.js.map +1 -0
- package/dist/hooks/ultrapilot/decomposer.d.ts +141 -0
- package/dist/hooks/ultrapilot/decomposer.d.ts.map +1 -0
- package/dist/hooks/ultrapilot/decomposer.js +377 -0
- package/dist/hooks/ultrapilot/decomposer.js.map +1 -0
- package/dist/hooks/ultrapilot/index.d.ts +31 -0
- package/dist/hooks/ultrapilot/index.d.ts.map +1 -1
- package/dist/hooks/ultrapilot/index.js +43 -2
- package/dist/hooks/ultrapilot/index.js.map +1 -1
- package/dist/hooks/ultrapilot/state.d.ts +1 -1
- package/dist/hooks/ultrapilot/state.d.ts.map +1 -1
- package/dist/hooks/ultrapilot/state.js +7 -0
- package/dist/hooks/ultrapilot/state.js.map +1 -1
- package/dist/hooks/ultraqa/index.js +5 -5
- package/dist/hooks/ultraqa/index.js.map +1 -1
- package/dist/hooks/ultrawork/index.js +3 -3
- package/dist/hooks/ultrawork/index.js.map +1 -1
- package/dist/installer/index.d.ts +1 -1
- package/dist/installer/index.js +1 -1
- package/package.json +6 -2
- package/scripts/build-skill-bridge.mjs +32 -0
- package/scripts/skill-injector.mjs +77 -26
- package/skills/autopilot/SKILL.md +18 -0
- package/skills/cancel/SKILL.md +166 -141
- package/skills/ecomode/SKILL.md +14 -0
- package/skills/pipeline/SKILL.md +13 -0
- package/skills/ralph/SKILL.md +22 -1
- package/skills/swarm/SKILL.md +521 -197
- package/skills/ultrapilot/SKILL.md +82 -13
- package/skills/ultraqa/SKILL.md +13 -0
- package/skills/ultrawork/SKILL.md +14 -0
|
@@ -100,39 +100,96 @@ backend frontend database api-docs tests
|
|
|
100
100
|
|
|
101
101
|
**Agent:** Architect (Opus)
|
|
102
102
|
|
|
103
|
+
**Method:** AI-Powered Task Decomposition
|
|
104
|
+
|
|
105
|
+
Ultrapilot uses the `decomposer` module to generate intelligent task breakdowns:
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
import {
|
|
109
|
+
generateDecompositionPrompt,
|
|
110
|
+
parseDecompositionResult,
|
|
111
|
+
validateFileOwnership,
|
|
112
|
+
extractSharedFiles
|
|
113
|
+
} from 'src/hooks/ultrapilot/decomposer';
|
|
114
|
+
|
|
115
|
+
// 1. Generate prompt for Architect
|
|
116
|
+
const prompt = generateDecompositionPrompt(task, codebaseContext, {
|
|
117
|
+
maxSubtasks: 5,
|
|
118
|
+
preferredModel: 'sonnet'
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
// 2. Call Architect agent
|
|
122
|
+
const response = await Task({
|
|
123
|
+
subagent_type: 'oh-my-claudecode:architect',
|
|
124
|
+
model: 'opus',
|
|
125
|
+
prompt
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
// 3. Parse structured result
|
|
129
|
+
const result = parseDecompositionResult(response);
|
|
130
|
+
|
|
131
|
+
// 4. Validate no file conflicts
|
|
132
|
+
const { isValid, conflicts } = validateFileOwnership(result.subtasks);
|
|
133
|
+
|
|
134
|
+
// 5. Extract shared files from subtasks
|
|
135
|
+
const finalResult = extractSharedFiles(result);
|
|
136
|
+
```
|
|
137
|
+
|
|
103
138
|
**Process:**
|
|
104
|
-
1. Analyze task requirements
|
|
105
|
-
2. Identify independent components
|
|
106
|
-
3.
|
|
107
|
-
4.
|
|
108
|
-
5.
|
|
139
|
+
1. Analyze task requirements via Architect agent
|
|
140
|
+
2. Identify independent components with file boundaries
|
|
141
|
+
3. Assign agent type (executor-low/executor/executor-high) per complexity
|
|
142
|
+
4. Map dependencies between subtasks (blockedBy)
|
|
143
|
+
5. Generate parallel execution groups
|
|
144
|
+
6. Identify shared files (handled by coordinator)
|
|
109
145
|
|
|
110
|
-
**Output:**
|
|
146
|
+
**Output:** Structured `DecompositionResult`:
|
|
111
147
|
|
|
112
148
|
```json
|
|
113
149
|
{
|
|
114
150
|
"subtasks": [
|
|
115
151
|
{
|
|
116
|
-
"id": "
|
|
152
|
+
"id": "1",
|
|
117
153
|
"description": "Backend API routes",
|
|
118
|
-
"files": ["src/api
|
|
119
|
-
"
|
|
154
|
+
"files": ["src/api/routes.ts", "src/api/handlers.ts"],
|
|
155
|
+
"blockedBy": [],
|
|
156
|
+
"agentType": "executor",
|
|
157
|
+
"model": "sonnet"
|
|
120
158
|
},
|
|
121
159
|
{
|
|
122
|
-
"id": "
|
|
160
|
+
"id": "2",
|
|
123
161
|
"description": "Frontend components",
|
|
124
|
-
"files": ["src/ui
|
|
125
|
-
"
|
|
162
|
+
"files": ["src/ui/App.tsx", "src/ui/TodoList.tsx"],
|
|
163
|
+
"blockedBy": [],
|
|
164
|
+
"agentType": "executor",
|
|
165
|
+
"model": "sonnet"
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"id": "3",
|
|
169
|
+
"description": "Wire frontend to backend",
|
|
170
|
+
"files": ["src/client/api.ts"],
|
|
171
|
+
"blockedBy": ["1", "2"],
|
|
172
|
+
"agentType": "executor-low",
|
|
173
|
+
"model": "haiku"
|
|
126
174
|
}
|
|
127
175
|
],
|
|
128
176
|
"sharedFiles": [
|
|
129
177
|
"package.json",
|
|
130
178
|
"tsconfig.json",
|
|
131
179
|
"README.md"
|
|
132
|
-
]
|
|
180
|
+
],
|
|
181
|
+
"parallelGroups": [["1", "2"], ["3"]]
|
|
133
182
|
}
|
|
134
183
|
```
|
|
135
184
|
|
|
185
|
+
**Decomposition Types:**
|
|
186
|
+
|
|
187
|
+
| Type | Description | Use Case |
|
|
188
|
+
|------|-------------|----------|
|
|
189
|
+
| `DecomposedTask` | Full task with id, files, blockedBy, agentType, model | Intelligent worker spawning |
|
|
190
|
+
| `DecompositionResult` | Complete result with subtasks, sharedFiles, parallelGroups | Full decomposition output |
|
|
191
|
+
| `toSimpleSubtasks()` | Convert to string[] for legacy compatibility | Simple task lists |
|
|
192
|
+
|
|
136
193
|
### Phase 2: File Ownership Partitioning
|
|
137
194
|
|
|
138
195
|
**Goal:** Assign exclusive file sets to workers
|
|
@@ -547,6 +604,18 @@ Then run:
|
|
|
547
604
|
/oh-my-claudecode:ultrapilot --custom-decomposition
|
|
548
605
|
```
|
|
549
606
|
|
|
607
|
+
## STATE CLEANUP ON COMPLETION
|
|
608
|
+
|
|
609
|
+
**IMPORTANT: Delete state files on completion - do NOT just set `active: false`**
|
|
610
|
+
|
|
611
|
+
When all workers complete successfully:
|
|
612
|
+
|
|
613
|
+
```bash
|
|
614
|
+
# Delete ultrapilot state files
|
|
615
|
+
rm -f .omc/state/ultrapilot-state.json
|
|
616
|
+
rm -f .omc/state/ultrapilot-ownership.json
|
|
617
|
+
```
|
|
618
|
+
|
|
550
619
|
## Future Enhancements
|
|
551
620
|
|
|
552
621
|
**Planned for v4.1:**
|
package/skills/ultraqa/SKILL.md
CHANGED
|
@@ -117,6 +117,19 @@ User can cancel with `/oh-my-claudecode:cancel` which clears the state file.
|
|
|
117
117
|
4. **CLEAR OUTPUT** - User should always know current cycle and status
|
|
118
118
|
5. **CLEAN UP** - Clear state file on completion or cancellation
|
|
119
119
|
|
|
120
|
+
## STATE CLEANUP ON COMPLETION
|
|
121
|
+
|
|
122
|
+
**IMPORTANT: Delete state files on completion - do NOT just set `active: false`**
|
|
123
|
+
|
|
124
|
+
When goal is met OR max cycles reached OR exiting early:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# Delete ultraqa state file
|
|
128
|
+
rm -f .omc/state/ultraqa-state.json
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
This ensures clean state for future sessions. Stale state files with `active: false` should not be left behind.
|
|
132
|
+
|
|
120
133
|
---
|
|
121
134
|
|
|
122
135
|
Begin ULTRAQA cycling now. Parse the goal and start cycle 1.
|
|
@@ -90,3 +90,17 @@ Before stopping, verify:
|
|
|
90
90
|
- [ ] ERRORS: Zero unaddressed errors
|
|
91
91
|
|
|
92
92
|
**If ANY checkbox is unchecked, CONTINUE WORKING.**
|
|
93
|
+
|
|
94
|
+
## STATE CLEANUP ON COMPLETION
|
|
95
|
+
|
|
96
|
+
**IMPORTANT: Delete state files on completion - do NOT just set `active: false`**
|
|
97
|
+
|
|
98
|
+
When all verification passes and work is complete:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
# Delete ultrawork state files
|
|
102
|
+
rm -f .omc/state/ultrawork-state.json
|
|
103
|
+
rm -f ~/.claude/ultrawork-state.json
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
This ensures clean state for future sessions. Stale state files with `active: false` should not be left behind.
|