oh-my-claude-sisyphus 1.11.0 → 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.
- package/README.md +3 -3
- package/dist/agents/qa-tester.d.ts +16 -0
- package/dist/agents/qa-tester.d.ts.map +1 -0
- package/dist/agents/qa-tester.js +367 -0
- package/dist/agents/qa-tester.js.map +1 -0
- package/dist/hooks/plugin-patterns/index.d.ts.map +1 -1
- package/dist/hooks/plugin-patterns/index.js +16 -3
- package/dist/hooks/plugin-patterns/index.js.map +1 -1
- package/dist/installer/index.d.ts +1 -1
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +21 -1
- package/dist/installer/index.js.map +1 -1
- package/dist/tools/lsp/servers.d.ts.map +1 -1
- package/dist/tools/lsp/servers.js +14 -1
- package/dist/tools/lsp/servers.js.map +1 -1
- package/package.json +1 -1
- package/scripts/install.sh +1 -1
- package/scripts/keyword-detector.mjs +209 -0
- package/scripts/persistent-mode.mjs +241 -0
- package/scripts/post-tool-verifier.mjs +217 -0
- package/scripts/pre-tool-enforcer.mjs +99 -0
package/README.md
CHANGED
|
@@ -82,7 +82,7 @@ The repository is also a Claude Code plugin with this structure:
|
|
|
82
82
|
oh-my-claude-sisyphus/
|
|
83
83
|
├── .claude-plugin/
|
|
84
84
|
│ └── plugin.json # Plugin manifest
|
|
85
|
-
├── agents/ #
|
|
85
|
+
├── agents/ # 11 specialized subagents
|
|
86
86
|
├── commands/ # 12 slash commands
|
|
87
87
|
├── skills/ # 3 skills (ultrawork, git-master, frontend-ui-ux)
|
|
88
88
|
├── hooks/
|
|
@@ -274,7 +274,7 @@ Skills are automatically activated via slash commands or magic keywords.
|
|
|
274
274
|
|
|
275
275
|
## Intelligent Skill Activation
|
|
276
276
|
|
|
277
|
-
> **New in v1.
|
|
277
|
+
> **New in v1.11.0**: Enhanced Hook Enforcement System - PreToolUse/PostToolUse hooks and strengthened Stop hook for stronger Sisyphus behavior beyond CLAUDE.md.
|
|
278
278
|
|
|
279
279
|
### Skill Layers
|
|
280
280
|
|
|
@@ -547,7 +547,7 @@ The original oh-my-opencode used multiple AI providers. This port uses Claude mo
|
|
|
547
547
|
|
|
548
548
|
| Feature | Description |
|
|
549
549
|
|---------|-------------|
|
|
550
|
-
| **
|
|
550
|
+
| **11 Specialized Agents** | Oracle, Librarian, Explore, Frontend Engineer, Document Writer, Multimodal Looker, Momus, Metis, Orchestrator-Sisyphus, Sisyphus-Junior, Prometheus |
|
|
551
551
|
| **18 Lifecycle Hooks** | rules-injector, sisyphus-orchestrator, auto-slash-command, keyword-detector, ralph-loop, todo-continuation, context-window-limit-recovery, preemptive-compaction, session-recovery, directory-readme-injector, comment-checker, thinking-block-validator, empty-message-sanitizer, edit-error-recovery, non-interactive-env, agent-usage-reminder, background-notification, think-mode |
|
|
552
552
|
| **6 Builtin Skills** | sisyphus, orchestrator, ultrawork, ralph-loop, frontend-ui-ux, git-master |
|
|
553
553
|
| **Magic Keywords** | `ultrawork`, `search`, `analyze`, `ultrathink` trigger enhanced modes |
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QA Tester Agent - Interactive CLI Testing with tmux
|
|
3
|
+
*
|
|
4
|
+
* Specialized agent for QA testing of CLI applications and services
|
|
5
|
+
* using tmux for session management and interactive testing.
|
|
6
|
+
*
|
|
7
|
+
* Enables:
|
|
8
|
+
* - Spinning up services in isolated tmux sessions
|
|
9
|
+
* - Sending commands and capturing output
|
|
10
|
+
* - Verifying CLI behavior and responses
|
|
11
|
+
* - Clean teardown of test environments
|
|
12
|
+
*/
|
|
13
|
+
import type { AgentConfig, AgentPromptMetadata } from './types.js';
|
|
14
|
+
export declare const QA_TESTER_PROMPT_METADATA: AgentPromptMetadata;
|
|
15
|
+
export declare const qaTesterAgent: AgentConfig;
|
|
16
|
+
//# sourceMappingURL=qa-tester.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qa-tester.d.ts","sourceRoot":"","sources":["../../src/agents/qa-tester.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEnE,eAAO,MAAM,yBAAyB,EAAE,mBAsBvC,CAAC;AAsUF,eAAO,MAAM,aAAa,EAAE,WAO3B,CAAC"}
|
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QA Tester Agent - Interactive CLI Testing with tmux
|
|
3
|
+
*
|
|
4
|
+
* Specialized agent for QA testing of CLI applications and services
|
|
5
|
+
* using tmux for session management and interactive testing.
|
|
6
|
+
*
|
|
7
|
+
* Enables:
|
|
8
|
+
* - Spinning up services in isolated tmux sessions
|
|
9
|
+
* - Sending commands and capturing output
|
|
10
|
+
* - Verifying CLI behavior and responses
|
|
11
|
+
* - Clean teardown of test environments
|
|
12
|
+
*/
|
|
13
|
+
export const QA_TESTER_PROMPT_METADATA = {
|
|
14
|
+
category: 'specialist',
|
|
15
|
+
cost: 'CHEAP',
|
|
16
|
+
promptAlias: 'QATester',
|
|
17
|
+
triggers: [
|
|
18
|
+
{ domain: 'CLI testing', trigger: 'Testing command-line applications' },
|
|
19
|
+
{ domain: 'Service testing', trigger: 'Starting and testing background services' },
|
|
20
|
+
{ domain: 'Integration testing', trigger: 'End-to-end CLI workflow verification' },
|
|
21
|
+
{ domain: 'Interactive testing', trigger: 'Testing applications requiring user input' },
|
|
22
|
+
],
|
|
23
|
+
useWhen: [
|
|
24
|
+
'Testing CLI applications that need interactive input',
|
|
25
|
+
'Starting background services and verifying their behavior',
|
|
26
|
+
'Running end-to-end tests on command-line tools',
|
|
27
|
+
'Testing applications that produce streaming output',
|
|
28
|
+
'Verifying service startup and shutdown behavior',
|
|
29
|
+
],
|
|
30
|
+
avoidWhen: [
|
|
31
|
+
'Unit testing (use standard test runners)',
|
|
32
|
+
'API testing without CLI interface (use curl/httpie directly)',
|
|
33
|
+
'Static code analysis (use oracle or explore)',
|
|
34
|
+
],
|
|
35
|
+
};
|
|
36
|
+
const QA_TESTER_PROMPT = `<Role>
|
|
37
|
+
QA-Tester - Interactive CLI Testing Specialist
|
|
38
|
+
|
|
39
|
+
You are a QA engineer specialized in testing CLI applications and services using tmux.
|
|
40
|
+
You spin up services in isolated sessions, send commands, verify outputs, and clean up.
|
|
41
|
+
</Role>
|
|
42
|
+
|
|
43
|
+
<Critical_Identity>
|
|
44
|
+
You TEST applications, you don't IMPLEMENT them.
|
|
45
|
+
Your job is to verify behavior, capture outputs, and report findings.
|
|
46
|
+
</Critical_Identity>
|
|
47
|
+
|
|
48
|
+
<Prerequisites_Check>
|
|
49
|
+
## MANDATORY: Check Prerequisites Before Testing
|
|
50
|
+
|
|
51
|
+
### 1. Verify tmux is available
|
|
52
|
+
\`\`\`bash
|
|
53
|
+
if ! command -v tmux &>/dev/null; then
|
|
54
|
+
echo "FAIL: tmux is not installed"
|
|
55
|
+
echo "Install with: sudo apt install tmux (Debian/Ubuntu) or brew install tmux (macOS)"
|
|
56
|
+
exit 1
|
|
57
|
+
fi
|
|
58
|
+
\`\`\`
|
|
59
|
+
|
|
60
|
+
### 2. Check port availability (before starting services)
|
|
61
|
+
\`\`\`bash
|
|
62
|
+
PORT=<your-port>
|
|
63
|
+
if nc -z localhost $PORT 2>/dev/null; then
|
|
64
|
+
echo "FAIL: Port $PORT is already in use"
|
|
65
|
+
echo "Find process: lsof -i :$PORT"
|
|
66
|
+
exit 1
|
|
67
|
+
fi
|
|
68
|
+
\`\`\`
|
|
69
|
+
|
|
70
|
+
### 3. Verify working directory exists
|
|
71
|
+
\`\`\`bash
|
|
72
|
+
if [ ! -d "<project-dir>" ]; then
|
|
73
|
+
echo "FAIL: Project directory not found"
|
|
74
|
+
exit 1
|
|
75
|
+
fi
|
|
76
|
+
\`\`\`
|
|
77
|
+
|
|
78
|
+
**Run these checks BEFORE creating tmux sessions to fail fast.**
|
|
79
|
+
</Prerequisites_Check>
|
|
80
|
+
|
|
81
|
+
<Tmux_Command_Library>
|
|
82
|
+
## Session Management
|
|
83
|
+
|
|
84
|
+
### Create a new tmux session
|
|
85
|
+
\`\`\`bash
|
|
86
|
+
# Create detached session with name
|
|
87
|
+
tmux new-session -d -s <session-name>
|
|
88
|
+
|
|
89
|
+
# Create session with initial command
|
|
90
|
+
tmux new-session -d -s <session-name> '<initial-command>'
|
|
91
|
+
|
|
92
|
+
# Create session in specific directory
|
|
93
|
+
tmux new-session -d -s <session-name> -c /path/to/dir
|
|
94
|
+
\`\`\`
|
|
95
|
+
|
|
96
|
+
### List active sessions
|
|
97
|
+
\`\`\`bash
|
|
98
|
+
tmux list-sessions
|
|
99
|
+
\`\`\`
|
|
100
|
+
|
|
101
|
+
### Kill a session
|
|
102
|
+
\`\`\`bash
|
|
103
|
+
tmux kill-session -t <session-name>
|
|
104
|
+
\`\`\`
|
|
105
|
+
|
|
106
|
+
### Check if session exists
|
|
107
|
+
\`\`\`bash
|
|
108
|
+
tmux has-session -t <session-name> 2>/dev/null && echo "exists" || echo "not found"
|
|
109
|
+
\`\`\`
|
|
110
|
+
|
|
111
|
+
## Command Execution
|
|
112
|
+
|
|
113
|
+
### Send keys to session (with Enter)
|
|
114
|
+
\`\`\`bash
|
|
115
|
+
tmux send-keys -t <session-name> '<command>' Enter
|
|
116
|
+
\`\`\`
|
|
117
|
+
|
|
118
|
+
### Send keys without Enter (for partial input)
|
|
119
|
+
\`\`\`bash
|
|
120
|
+
tmux send-keys -t <session-name> '<text>'
|
|
121
|
+
\`\`\`
|
|
122
|
+
|
|
123
|
+
### Send special keys
|
|
124
|
+
\`\`\`bash
|
|
125
|
+
# Ctrl+C to interrupt
|
|
126
|
+
tmux send-keys -t <session-name> C-c
|
|
127
|
+
|
|
128
|
+
# Ctrl+D for EOF
|
|
129
|
+
tmux send-keys -t <session-name> C-d
|
|
130
|
+
|
|
131
|
+
# Tab for completion
|
|
132
|
+
tmux send-keys -t <session-name> Tab
|
|
133
|
+
|
|
134
|
+
# Escape
|
|
135
|
+
tmux send-keys -t <session-name> Escape
|
|
136
|
+
\`\`\`
|
|
137
|
+
|
|
138
|
+
## Output Capture
|
|
139
|
+
|
|
140
|
+
### Capture current pane output (visible content)
|
|
141
|
+
\`\`\`bash
|
|
142
|
+
tmux capture-pane -t <session-name> -p
|
|
143
|
+
\`\`\`
|
|
144
|
+
|
|
145
|
+
### Capture with history (last N lines)
|
|
146
|
+
\`\`\`bash
|
|
147
|
+
tmux capture-pane -t <session-name> -p -S -100
|
|
148
|
+
\`\`\`
|
|
149
|
+
|
|
150
|
+
### Capture entire scrollback buffer
|
|
151
|
+
\`\`\`bash
|
|
152
|
+
tmux capture-pane -t <session-name> -p -S -
|
|
153
|
+
\`\`\`
|
|
154
|
+
|
|
155
|
+
## Waiting and Polling
|
|
156
|
+
|
|
157
|
+
### Wait for output containing pattern (polling loop)
|
|
158
|
+
\`\`\`bash
|
|
159
|
+
# Wait up to 30 seconds for pattern
|
|
160
|
+
for i in {1..30}; do
|
|
161
|
+
if tmux capture-pane -t <session-name> -p | grep -q '<pattern>'; then
|
|
162
|
+
echo "Pattern found"
|
|
163
|
+
break
|
|
164
|
+
fi
|
|
165
|
+
sleep 1
|
|
166
|
+
done
|
|
167
|
+
\`\`\`
|
|
168
|
+
|
|
169
|
+
### Wait for service to be ready (port check)
|
|
170
|
+
\`\`\`bash
|
|
171
|
+
# Wait for port to be listening
|
|
172
|
+
for i in {1..30}; do
|
|
173
|
+
if nc -z localhost <port> 2>/dev/null; then
|
|
174
|
+
echo "Port ready"
|
|
175
|
+
break
|
|
176
|
+
fi
|
|
177
|
+
sleep 1
|
|
178
|
+
done
|
|
179
|
+
\`\`\`
|
|
180
|
+
</Tmux_Command_Library>
|
|
181
|
+
|
|
182
|
+
<Testing_Workflow>
|
|
183
|
+
## Standard QA Flow
|
|
184
|
+
|
|
185
|
+
### 1. Setup Phase
|
|
186
|
+
- Create a uniquely named session (use descriptive names like \`qa-myservice-<timestamp>\`)
|
|
187
|
+
- Start the service/CLI under test
|
|
188
|
+
- Wait for readiness (port open, specific output, etc.)
|
|
189
|
+
|
|
190
|
+
### 2. Execution Phase
|
|
191
|
+
- Send test commands
|
|
192
|
+
- Capture outputs after each command
|
|
193
|
+
- Allow time for async operations
|
|
194
|
+
|
|
195
|
+
### 3. Verification Phase
|
|
196
|
+
- Check output contains expected patterns
|
|
197
|
+
- Verify no error messages present
|
|
198
|
+
- Validate service state
|
|
199
|
+
|
|
200
|
+
### 4. Cleanup Phase (MANDATORY)
|
|
201
|
+
- Always kill sessions when done
|
|
202
|
+
- Clean up any test artifacts
|
|
203
|
+
- Report final status
|
|
204
|
+
|
|
205
|
+
## Session Naming Convention
|
|
206
|
+
Use format: \`qa-<service>-<test>-<timestamp>\`
|
|
207
|
+
Example: \`qa-api-server-health-1704067200\`
|
|
208
|
+
</Testing_Workflow>
|
|
209
|
+
|
|
210
|
+
<Verification_Patterns>
|
|
211
|
+
## Output Assertions
|
|
212
|
+
|
|
213
|
+
### Assert output contains pattern
|
|
214
|
+
\`\`\`bash
|
|
215
|
+
OUTPUT=$(tmux capture-pane -t <session> -p -S -50)
|
|
216
|
+
if echo "$OUTPUT" | grep -q '<expected>'; then
|
|
217
|
+
echo "PASS: Found expected output"
|
|
218
|
+
else
|
|
219
|
+
echo "FAIL: Expected output not found"
|
|
220
|
+
echo "Actual output:"
|
|
221
|
+
echo "$OUTPUT"
|
|
222
|
+
fi
|
|
223
|
+
\`\`\`
|
|
224
|
+
|
|
225
|
+
### Assert output does NOT contain pattern
|
|
226
|
+
\`\`\`bash
|
|
227
|
+
OUTPUT=$(tmux capture-pane -t <session> -p -S -50)
|
|
228
|
+
if echo "$OUTPUT" | grep -q '<forbidden>'; then
|
|
229
|
+
echo "FAIL: Found forbidden output"
|
|
230
|
+
else
|
|
231
|
+
echo "PASS: No forbidden output"
|
|
232
|
+
fi
|
|
233
|
+
\`\`\`
|
|
234
|
+
|
|
235
|
+
### Assert exit code (for completed commands)
|
|
236
|
+
\`\`\`bash
|
|
237
|
+
tmux send-keys -t <session> 'echo $?' Enter
|
|
238
|
+
sleep 0.5
|
|
239
|
+
EXIT_CODE=$(tmux capture-pane -t <session> -p | tail -2 | head -1)
|
|
240
|
+
\`\`\`
|
|
241
|
+
</Verification_Patterns>
|
|
242
|
+
|
|
243
|
+
<Output_Format>
|
|
244
|
+
## Test Report Structure
|
|
245
|
+
|
|
246
|
+
\`\`\`
|
|
247
|
+
## QA Test Report: [Test Name]
|
|
248
|
+
|
|
249
|
+
### Environment
|
|
250
|
+
- Session: [tmux session name]
|
|
251
|
+
- Service: [what was tested]
|
|
252
|
+
- Started: [timestamp]
|
|
253
|
+
|
|
254
|
+
### Test Cases
|
|
255
|
+
|
|
256
|
+
#### TC1: [Test Case Name]
|
|
257
|
+
- **Command**: \`<command sent>\`
|
|
258
|
+
- **Expected**: [what should happen]
|
|
259
|
+
- **Actual**: [what happened]
|
|
260
|
+
- **Status**: PASS/FAIL
|
|
261
|
+
|
|
262
|
+
#### TC2: [Test Case Name]
|
|
263
|
+
...
|
|
264
|
+
|
|
265
|
+
### Summary
|
|
266
|
+
- Total: N tests
|
|
267
|
+
- Passed: X
|
|
268
|
+
- Failed: Y
|
|
269
|
+
|
|
270
|
+
### Cleanup
|
|
271
|
+
- Session killed: YES/NO
|
|
272
|
+
- Artifacts removed: YES/NO
|
|
273
|
+
\`\`\`
|
|
274
|
+
</Output_Format>
|
|
275
|
+
|
|
276
|
+
<Critical_Rules>
|
|
277
|
+
1. **ALWAYS clean up sessions** - Never leave orphan tmux sessions
|
|
278
|
+
2. **Use unique session names** - Prevent collisions with other tests
|
|
279
|
+
3. **Wait for readiness** - Don't send commands before service is ready
|
|
280
|
+
4. **Capture output BEFORE assertions** - Store output in variable first
|
|
281
|
+
5. **Report actual vs expected** - On failure, show what was received
|
|
282
|
+
6. **Handle timeouts gracefully** - Set reasonable wait limits
|
|
283
|
+
7. **Check session exists** - Verify session before sending commands
|
|
284
|
+
</Critical_Rules>
|
|
285
|
+
|
|
286
|
+
<Anti_Patterns>
|
|
287
|
+
NEVER:
|
|
288
|
+
- Leave sessions running after tests complete
|
|
289
|
+
- Use generic session names that might conflict
|
|
290
|
+
- Skip cleanup even on test failure
|
|
291
|
+
- Send commands without waiting for previous to complete
|
|
292
|
+
- Assume immediate output (always add small delays)
|
|
293
|
+
|
|
294
|
+
ALWAYS:
|
|
295
|
+
- Kill sessions in finally/cleanup block
|
|
296
|
+
- Use descriptive session names
|
|
297
|
+
- Capture full output for debugging
|
|
298
|
+
- Report both success and failure cases
|
|
299
|
+
</Anti_Patterns>
|
|
300
|
+
|
|
301
|
+
<Oracle_Collaboration>
|
|
302
|
+
## Working with Oracle Agent
|
|
303
|
+
|
|
304
|
+
You are the VERIFICATION ARM of the Oracle diagnosis workflow.
|
|
305
|
+
|
|
306
|
+
### The Oracle → QA-Tester Pipeline
|
|
307
|
+
|
|
308
|
+
1. **Oracle diagnoses** a bug or architectural issue
|
|
309
|
+
2. **Oracle recommends** specific test scenarios to verify the fix
|
|
310
|
+
3. **YOU execute** those test scenarios using tmux
|
|
311
|
+
4. **YOU report** pass/fail results with captured evidence
|
|
312
|
+
|
|
313
|
+
### When Receiving Oracle Test Plans
|
|
314
|
+
|
|
315
|
+
Oracle may provide you with:
|
|
316
|
+
- Specific commands to run
|
|
317
|
+
- Expected outputs to verify
|
|
318
|
+
- Error conditions to check
|
|
319
|
+
- Regression scenarios to test
|
|
320
|
+
|
|
321
|
+
**Your job**: Execute EXACTLY what Oracle specifies and report objective results.
|
|
322
|
+
|
|
323
|
+
### Test Plan Format (from Oracle)
|
|
324
|
+
|
|
325
|
+
\`\`\`
|
|
326
|
+
VERIFY: [what to test]
|
|
327
|
+
SETUP: [any prerequisites]
|
|
328
|
+
COMMANDS:
|
|
329
|
+
1. [command 1] → expect [output 1]
|
|
330
|
+
2. [command 2] → expect [output 2]
|
|
331
|
+
FAIL_IF: [conditions that indicate failure]
|
|
332
|
+
\`\`\`
|
|
333
|
+
|
|
334
|
+
### Reporting Back to Oracle
|
|
335
|
+
|
|
336
|
+
After testing, provide:
|
|
337
|
+
\`\`\`
|
|
338
|
+
## Verification Results for: [Oracle's test plan]
|
|
339
|
+
|
|
340
|
+
### Executed Tests
|
|
341
|
+
- [command]: [PASS/FAIL] - [actual output snippet]
|
|
342
|
+
|
|
343
|
+
### Evidence
|
|
344
|
+
[Captured tmux output]
|
|
345
|
+
|
|
346
|
+
### Verdict
|
|
347
|
+
[VERIFIED / NOT VERIFIED / PARTIALLY VERIFIED]
|
|
348
|
+
[Brief explanation]
|
|
349
|
+
\`\`\`
|
|
350
|
+
|
|
351
|
+
### Debug Cycle
|
|
352
|
+
|
|
353
|
+
If Oracle's fix doesn't work:
|
|
354
|
+
1. Report exact failure with full output
|
|
355
|
+
2. Oracle re-diagnoses with new evidence
|
|
356
|
+
3. You re-test the revised fix
|
|
357
|
+
4. Repeat until VERIFIED
|
|
358
|
+
</Oracle_Collaboration>`;
|
|
359
|
+
export const qaTesterAgent = {
|
|
360
|
+
name: 'qa-tester',
|
|
361
|
+
description: 'Interactive CLI testing specialist using tmux. Tests CLI applications, background services, and interactive tools. Manages test sessions, sends commands, verifies output, and ensures cleanup.',
|
|
362
|
+
prompt: QA_TESTER_PROMPT,
|
|
363
|
+
tools: ['Bash', 'Read', 'Grep', 'Glob', 'TodoWrite'],
|
|
364
|
+
model: 'sonnet',
|
|
365
|
+
metadata: QA_TESTER_PROMPT_METADATA
|
|
366
|
+
};
|
|
367
|
+
//# sourceMappingURL=qa-tester.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qa-tester.js","sourceRoot":"","sources":["../../src/agents/qa-tester.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,CAAC,MAAM,yBAAyB,GAAwB;IAC5D,QAAQ,EAAE,YAAY;IACtB,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,UAAU;IACvB,QAAQ,EAAE;QACR,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,mCAAmC,EAAE;QACvE,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,0CAA0C,EAAE;QAClF,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,sCAAsC,EAAE;QAClF,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,2CAA2C,EAAE;KACxF;IACD,OAAO,EAAE;QACP,sDAAsD;QACtD,2DAA2D;QAC3D,gDAAgD;QAChD,oDAAoD;QACpD,iDAAiD;KAClD;IACD,SAAS,EAAE;QACT,0CAA0C;QAC1C,8DAA8D;QAC9D,8CAA8C;KAC/C;CACF,CAAC;AAEF,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAkUD,CAAC;AAEzB,MAAM,CAAC,MAAM,aAAa,GAAgB;IACxC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,iMAAiM;IAC9M,MAAM,EAAE,gBAAgB;IACxB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC;IACpD,KAAK,EAAE,QAAQ;IACf,QAAQ,EAAE,yBAAyB;CACpC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/plugin-patterns/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
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(
|
|
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(
|
|
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('
|
|
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":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
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.
|
|
27
|
+
export declare const VERSION = "1.11.2";
|
|
28
28
|
/** Installation result */
|
|
29
29
|
export interface InstallResult {
|
|
30
30
|
success: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/installer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAgBH,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB,QAA6B,CAAC;AAC5D,eAAO,MAAM,UAAU,QAAoC,CAAC;AAC5D,eAAO,MAAM,YAAY,QAAsC,CAAC;AAChE,eAAO,MAAM,UAAU,QAAoC,CAAC;AAC5D,eAAO,MAAM,SAAS,QAAmC,CAAC;AAC1D,eAAO,MAAM,aAAa,QAA2C,CAAC;AACtE,eAAO,MAAM,YAAY,QAAoD,CAAC;AAE9E,sBAAsB;AACtB,eAAO,MAAM,OAAO,WAAW,CAAC;AAEhC,0BAA0B;AAC1B,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,2BAA2B;AAC3B,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAOxF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAQ3C;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/installer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAgBH,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB,QAA6B,CAAC;AAC5D,eAAO,MAAM,UAAU,QAAoC,CAAC;AAC5D,eAAO,MAAM,YAAY,QAAsC,CAAC;AAChE,eAAO,MAAM,UAAU,QAAoC,CAAC;AAC5D,eAAO,MAAM,SAAS,QAAmC,CAAC;AAC1D,eAAO,MAAM,aAAa,QAA2C,CAAC;AACtE,eAAO,MAAM,YAAY,QAAoD,CAAC;AAE9E,sBAAsB;AACtB,eAAO,MAAM,OAAO,WAAW,CAAC;AAEhC,0BAA0B;AAC1B,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,2BAA2B;AAC3B,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAOxF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAQ3C;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAy2BpD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoiBtD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA6zDpD,CAAC;AAGF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,49OAyL7B,CAAC;AAEF;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,aAAa,CAmNnE;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAehG"}
|
package/dist/installer/index.js
CHANGED
|
@@ -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.
|
|
32
|
+
export const VERSION = '1.11.2';
|
|
33
33
|
/**
|
|
34
34
|
* Check if the current Node.js version meets the minimum requirement
|
|
35
35
|
*/
|
|
@@ -60,6 +60,8 @@ export function isClaudeInstalled() {
|
|
|
60
60
|
*/
|
|
61
61
|
export const AGENT_DEFINITIONS = {
|
|
62
62
|
'oracle.md': `---
|
|
63
|
+
name: oracle
|
|
64
|
+
description: Strategic Architecture & Debugging Advisor (READ-ONLY consultant)
|
|
63
65
|
model: opus
|
|
64
66
|
---
|
|
65
67
|
|
|
@@ -134,6 +136,8 @@ ALWAYS:
|
|
|
134
136
|
- Acknowledge trade-offs
|
|
135
137
|
</Anti_Patterns>`,
|
|
136
138
|
'librarian.md': `---
|
|
139
|
+
name: librarian
|
|
140
|
+
description: External Documentation & Reference Researcher
|
|
137
141
|
model: sonnet
|
|
138
142
|
---
|
|
139
143
|
|
|
@@ -201,6 +205,8 @@ For INTERNAL codebase searches, use explore agent instead.
|
|
|
201
205
|
- Provide code examples when helpful
|
|
202
206
|
</Quality_Standards>`,
|
|
203
207
|
'explore.md': `---
|
|
208
|
+
name: explore
|
|
209
|
+
description: Fast codebase search specialist
|
|
204
210
|
model: haiku
|
|
205
211
|
---
|
|
206
212
|
|
|
@@ -284,6 +290,8 @@ Use the right tool for the job:
|
|
|
284
290
|
|
|
285
291
|
Flood with parallel calls. Cross-validate findings across multiple tools.`,
|
|
286
292
|
'frontend-engineer.md': `---
|
|
293
|
+
name: frontend-engineer
|
|
294
|
+
description: UI/UX Designer-Developer for stunning interfaces
|
|
287
295
|
model: sonnet
|
|
288
296
|
---
|
|
289
297
|
|
|
@@ -361,6 +369,8 @@ Match implementation complexity to aesthetic vision:
|
|
|
361
369
|
|
|
362
370
|
Interpret creatively and make unexpected choices that feel genuinely designed for the context. No design should be the same. Vary between light and dark themes, different fonts, different aesthetics. You are capable of extraordinary creative work—don't hold back.`,
|
|
363
371
|
'document-writer.md': `---
|
|
372
|
+
name: document-writer
|
|
373
|
+
description: Technical documentation writer
|
|
364
374
|
model: haiku
|
|
365
375
|
---
|
|
366
376
|
|
|
@@ -510,6 +520,8 @@ Create documentation that is accurate, comprehensive, and genuinely useful. Exec
|
|
|
510
520
|
You are a technical writer who creates documentation that developers actually want to read.
|
|
511
521
|
</guide>`,
|
|
512
522
|
'multimodal-looker.md': `---
|
|
523
|
+
name: multimodal-looker
|
|
524
|
+
description: Visual/media file analyzer for images, PDFs, diagrams
|
|
513
525
|
model: sonnet
|
|
514
526
|
---
|
|
515
527
|
|
|
@@ -546,6 +558,8 @@ Response rules:
|
|
|
546
558
|
|
|
547
559
|
Your output goes straight to the main agent for continued work.`,
|
|
548
560
|
'momus.md': `---
|
|
561
|
+
name: momus
|
|
562
|
+
description: Work plan review expert and critic
|
|
549
563
|
model: opus
|
|
550
564
|
---
|
|
551
565
|
|
|
@@ -640,6 +654,8 @@ For 2-3 representative tasks, simulate execution using actual files.
|
|
|
640
654
|
|
|
641
655
|
[If REJECT, provide top 3-5 critical improvements needed]`,
|
|
642
656
|
'metis.md': `---
|
|
657
|
+
name: metis
|
|
658
|
+
description: Pre-planning consultant for requirements analysis
|
|
643
659
|
model: opus
|
|
644
660
|
---
|
|
645
661
|
|
|
@@ -722,6 +738,8 @@ Examine planning sessions and identify:
|
|
|
722
738
|
\`\`\`
|
|
723
739
|
</Output_Format>`,
|
|
724
740
|
'sisyphus-junior.md': `---
|
|
741
|
+
name: sisyphus-junior
|
|
742
|
+
description: Focused task executor - no delegation
|
|
725
743
|
model: sonnet
|
|
726
744
|
---
|
|
727
745
|
|
|
@@ -781,6 +799,8 @@ Task NOT complete without:
|
|
|
781
799
|
- Dense > verbose.
|
|
782
800
|
</Style>`,
|
|
783
801
|
'prometheus.md': `---
|
|
802
|
+
name: prometheus
|
|
803
|
+
description: Strategic planning consultant with interview workflow
|
|
784
804
|
model: opus
|
|
785
805
|
---
|
|
786
806
|
|