oh-my-claude-sisyphus 3.8.9 → 3.8.10
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +1 -1
- package/agents/architect.md +78 -0
- package/agents/explore.md +15 -0
- package/agents/qa-tester.md +159 -1
- package/agents/writer.md +20 -0
- package/commands/help.md +1 -1
- package/commands/omc-setup.md +1 -1
- package/dist/__tests__/agent-registry.test.d.ts +2 -0
- package/dist/__tests__/agent-registry.test.d.ts.map +1 -0
- package/dist/__tests__/agent-registry.test.js +39 -0
- package/dist/__tests__/agent-registry.test.js.map +1 -0
- package/dist/__tests__/load-agent-prompt.test.d.ts +2 -0
- package/dist/__tests__/load-agent-prompt.test.d.ts.map +1 -0
- package/dist/__tests__/load-agent-prompt.test.js +68 -0
- package/dist/__tests__/load-agent-prompt.test.js.map +1 -0
- package/dist/__tests__/model-routing.test.js +5 -34
- package/dist/__tests__/model-routing.test.js.map +1 -1
- package/dist/agents/analyst.d.ts.map +1 -1
- package/dist/agents/analyst.js +2 -77
- package/dist/agents/analyst.js.map +1 -1
- package/dist/agents/architect.d.ts.map +1 -1
- package/dist/agents/architect.js +3 -148
- package/dist/agents/architect.js.map +1 -1
- package/dist/agents/coordinator-deprecated.d.ts +18 -0
- package/dist/agents/coordinator-deprecated.d.ts.map +1 -0
- package/dist/agents/coordinator-deprecated.js +34 -0
- package/dist/agents/coordinator-deprecated.js.map +1 -0
- package/dist/agents/critic.d.ts.map +1 -1
- package/dist/agents/critic.js +2 -90
- package/dist/agents/critic.js.map +1 -1
- package/dist/agents/definitions.d.ts +2 -0
- package/dist/agents/definitions.d.ts.map +1 -1
- package/dist/agents/definitions.js +3 -32
- package/dist/agents/definitions.js.map +1 -1
- package/dist/agents/designer.d.ts.map +1 -1
- package/dist/agents/designer.js +2 -73
- package/dist/agents/designer.js.map +1 -1
- package/dist/agents/executor.d.ts +1 -0
- package/dist/agents/executor.d.ts.map +1 -1
- package/dist/agents/executor.js +3 -56
- package/dist/agents/executor.js.map +1 -1
- package/dist/agents/explore.d.ts.map +1 -1
- package/dist/agents/explore.js +2 -64
- package/dist/agents/explore.js.map +1 -1
- package/dist/agents/index.d.ts +4 -3
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +6 -3
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/planner.d.ts.map +1 -1
- package/dist/agents/planner.js +2 -157
- package/dist/agents/planner.js.map +1 -1
- package/dist/agents/qa-tester.d.ts.map +1 -1
- package/dist/agents/qa-tester.js +2 -324
- package/dist/agents/qa-tester.js.map +1 -1
- package/dist/agents/researcher.d.ts.map +1 -1
- package/dist/agents/researcher.js +2 -65
- package/dist/agents/researcher.js.map +1 -1
- package/dist/agents/scientist.d.ts.map +1 -1
- package/dist/agents/scientist.js +2 -293
- package/dist/agents/scientist.js.map +1 -1
- package/dist/agents/utils.d.ts +7 -0
- package/dist/agents/utils.d.ts.map +1 -1
- package/dist/agents/utils.js +50 -0
- package/dist/agents/utils.js.map +1 -1
- package/dist/agents/vision.d.ts.map +1 -1
- package/dist/agents/vision.js +2 -32
- package/dist/agents/vision.js.map +1 -1
- package/dist/agents/writer.d.ts.map +1 -1
- package/dist/agents/writer.js +2 -171
- package/dist/agents/writer.js.map +1 -1
- package/dist/cli/analytics.js +0 -0
- package/dist/cli/index.js +0 -0
- package/dist/features/model-routing/index.d.ts +1 -1
- package/dist/features/model-routing/index.d.ts.map +1 -1
- package/dist/features/model-routing/index.js +1 -1
- package/dist/features/model-routing/index.js.map +1 -1
- package/dist/features/model-routing/router.d.ts +1 -15
- package/dist/features/model-routing/router.d.ts.map +1 -1
- package/dist/features/model-routing/router.js +2 -33
- package/dist/features/model-routing/router.js.map +1 -1
- package/dist/features/model-routing/rules.d.ts.map +1 -1
- package/dist/features/model-routing/rules.js +0 -8
- package/dist/features/model-routing/rules.js.map +1 -1
- package/dist/features/model-routing/types.d.ts +1 -2
- package/dist/features/model-routing/types.d.ts.map +1 -1
- package/dist/features/model-routing/types.js +2 -6
- package/dist/features/model-routing/types.js.map +1 -1
- package/dist/features/task-decomposer/index.d.ts +1 -1
- package/dist/features/task-decomposer/index.d.ts.map +1 -1
- package/dist/features/task-decomposer/index.js +5 -8
- package/dist/features/task-decomposer/index.js.map +1 -1
- package/dist/features/task-decomposer/types.d.ts +4 -4
- package/dist/features/task-decomposer/types.d.ts.map +1 -1
- package/dist/hooks/ultrapilot/decomposer.d.ts +1 -1
- package/dist/hooks/ultrapilot/decomposer.js +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/docs/CLAUDE.md +44 -4
- package/docs/FEATURES.md +1 -1
- package/docs/MIGRATION.md +5 -5
- package/docs/REFERENCE.md +6 -2
- package/package.json +1 -1
- package/skills/help/SKILL.md +1 -1
- package/skills/omc-setup/SKILL.md +1 -1
- package/dist/__tests__/analytics/analytics-summary.test.d.ts +0 -2
- package/dist/__tests__/analytics/analytics-summary.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/analytics-summary.test.js +0 -267
- package/dist/__tests__/analytics/analytics-summary.test.js.map +0 -1
- package/dist/__tests__/analytics/cost-estimator.test.d.ts +0 -2
- package/dist/__tests__/analytics/cost-estimator.test.d.ts.map +0 -1
- package/dist/__tests__/analytics/cost-estimator.test.js +0 -212
- package/dist/__tests__/analytics/cost-estimator.test.js.map +0 -1
- package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts +0 -7
- package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts.map +0 -1
- package/dist/__tests__/hooks/auto-slash-command/executor.test.js +0 -374
- package/dist/__tests__/hooks/auto-slash-command/executor.test.js.map +0 -1
- package/dist/__tests__/hud/auto-tracking.integration.test.d.ts +0 -2
- package/dist/__tests__/hud/auto-tracking.integration.test.d.ts.map +0 -1
- package/dist/__tests__/hud/auto-tracking.integration.test.js +0 -12
- package/dist/__tests__/hud/auto-tracking.integration.test.js.map +0 -1
- 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/codex-agents.d.ts +0 -20
- package/dist/agents/codex-agents.d.ts.map +0 -1
- package/dist/agents/codex-agents.js +0 -36
- package/dist/agents/codex-agents.js.map +0 -1
- package/dist/agents/coordinator.d.ts +0 -11
- package/dist/agents/coordinator.d.ts.map +0 -1
- package/dist/agents/coordinator.js +0 -115
- package/dist/agents/coordinator.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/cli/components/CostDashboard.d.ts +0 -15
- package/dist/cli/components/CostDashboard.d.ts.map +0 -1
- package/dist/cli/components/CostDashboard.js +0 -15
- package/dist/cli/components/CostDashboard.js.map +0 -1
- package/dist/cli/components/LiveStats.d.ts +0 -16
- package/dist/cli/components/LiveStats.d.ts.map +0 -1
- package/dist/cli/components/LiveStats.js +0 -16
- package/dist/cli/components/LiveStats.js.map +0 -1
- package/dist/cli/components/SessionBrowser.d.ts +0 -14
- package/dist/cli/components/SessionBrowser.d.ts.map +0 -1
- package/dist/cli/components/SessionBrowser.js +0 -14
- package/dist/cli/components/SessionBrowser.js.map +0 -1
- package/dist/cli/tui.d.ts +0 -21
- package/dist/cli/tui.d.ts.map +0 -1
- package/dist/cli/tui.js +0 -21
- package/dist/cli/tui.js.map +0 -1
- package/dist/hooks/autopilot/signals.d.ts +0 -20
- package/dist/hooks/autopilot/signals.d.ts.map +0 -1
- package/dist/hooks/autopilot/signals.js +0 -75
- package/dist/hooks/autopilot/signals.js.map +0 -1
- package/dist/hooks/autopilot/summary.d.ts +0 -27
- package/dist/hooks/autopilot/summary.d.ts.map +0 -1
- package/dist/hooks/autopilot/summary.js +0 -160
- package/dist/hooks/autopilot/summary.js.map +0 -1
- package/dist/hooks/autopilot/transition.d.ts +0 -39
- package/dist/hooks/autopilot/transition.d.ts.map +0 -1
- package/dist/hooks/autopilot/transition.js +0 -216
- package/dist/hooks/autopilot/transition.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/constants.d.ts +0 -28
- package/dist/hooks/context-window-limit-recovery/constants.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/constants.js +0 -85
- package/dist/hooks/context-window-limit-recovery/constants.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/index.d.ts +0 -62
- package/dist/hooks/context-window-limit-recovery/index.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/index.js +0 -201
- package/dist/hooks/context-window-limit-recovery/index.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/parser.d.ts +0 -31
- package/dist/hooks/context-window-limit-recovery/parser.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/parser.js +0 -241
- package/dist/hooks/context-window-limit-recovery/parser.js.map +0 -1
- package/dist/hooks/context-window-limit-recovery/types.d.ts +0 -84
- package/dist/hooks/context-window-limit-recovery/types.d.ts.map +0 -1
- package/dist/hooks/context-window-limit-recovery/types.js +0 -34
- package/dist/hooks/context-window-limit-recovery/types.js.map +0 -1
- package/dist/hooks/edit-error-recovery/index.d.ts +0 -62
- package/dist/hooks/edit-error-recovery/index.d.ts.map +0 -1
- package/dist/hooks/edit-error-recovery/index.js +0 -89
- package/dist/hooks/edit-error-recovery/index.js.map +0 -1
- package/dist/hooks/github-auto-responder/classifier.d.ts +0 -43
- package/dist/hooks/github-auto-responder/classifier.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/classifier.js +0 -150
- package/dist/hooks/github-auto-responder/classifier.js.map +0 -1
- package/dist/hooks/github-auto-responder/config.d.ts +0 -109
- package/dist/hooks/github-auto-responder/config.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/config.js +0 -69
- package/dist/hooks/github-auto-responder/config.js.map +0 -1
- package/dist/hooks/github-auto-responder/constants.d.ts +0 -45
- package/dist/hooks/github-auto-responder/constants.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/constants.js +0 -60
- package/dist/hooks/github-auto-responder/constants.js.map +0 -1
- package/dist/hooks/github-auto-responder/filters.d.ts +0 -95
- package/dist/hooks/github-auto-responder/filters.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/filters.js +0 -174
- package/dist/hooks/github-auto-responder/filters.js.map +0 -1
- package/dist/hooks/github-auto-responder/github-client.d.ts +0 -65
- package/dist/hooks/github-auto-responder/github-client.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/github-client.js +0 -128
- package/dist/hooks/github-auto-responder/github-client.js.map +0 -1
- package/dist/hooks/github-auto-responder/idempotency.d.ts +0 -68
- package/dist/hooks/github-auto-responder/idempotency.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/idempotency.js +0 -147
- package/dist/hooks/github-auto-responder/idempotency.js.map +0 -1
- package/dist/hooks/github-auto-responder/index.d.ts +0 -140
- package/dist/hooks/github-auto-responder/index.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/index.js +0 -145
- package/dist/hooks/github-auto-responder/index.js.map +0 -1
- package/dist/hooks/github-auto-responder/persona.d.ts +0 -40
- package/dist/hooks/github-auto-responder/persona.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/persona.js +0 -99
- package/dist/hooks/github-auto-responder/persona.js.map +0 -1
- package/dist/hooks/github-auto-responder/responder.d.ts +0 -122
- package/dist/hooks/github-auto-responder/responder.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/responder.js +0 -264
- package/dist/hooks/github-auto-responder/responder.js.map +0 -1
- package/dist/hooks/github-auto-responder/server.d.ts +0 -140
- package/dist/hooks/github-auto-responder/server.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/server.js +0 -301
- package/dist/hooks/github-auto-responder/server.js.map +0 -1
- package/dist/hooks/github-auto-responder/signature.d.ts +0 -34
- package/dist/hooks/github-auto-responder/signature.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/signature.js +0 -79
- package/dist/hooks/github-auto-responder/signature.js.map +0 -1
- package/dist/hooks/github-auto-responder/templates.d.ts +0 -16
- package/dist/hooks/github-auto-responder/templates.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/templates.js +0 -93
- package/dist/hooks/github-auto-responder/templates.js.map +0 -1
- package/dist/hooks/github-auto-responder/types.d.ts +0 -246
- package/dist/hooks/github-auto-responder/types.d.ts.map +0 -1
- package/dist/hooks/github-auto-responder/types.js +0 -7
- package/dist/hooks/github-auto-responder/types.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/ralph-loop/index.d.ts +0 -116
- package/dist/hooks/ralph-loop/index.d.ts.map +0 -1
- package/dist/hooks/ralph-loop/index.js +0 -322
- package/dist/hooks/ralph-loop/index.js.map +0 -1
- package/dist/hooks/ralph-prd/index.d.ts +0 -130
- package/dist/hooks/ralph-prd/index.d.ts.map +0 -1
- package/dist/hooks/ralph-prd/index.js +0 -310
- package/dist/hooks/ralph-prd/index.js.map +0 -1
- package/dist/hooks/ralph-progress/index.d.ts +0 -102
- package/dist/hooks/ralph-progress/index.d.ts.map +0 -1
- package/dist/hooks/ralph-progress/index.js +0 -408
- package/dist/hooks/ralph-progress/index.js.map +0 -1
- package/dist/hooks/ralph-verifier/index.d.ts +0 -72
- package/dist/hooks/ralph-verifier/index.d.ts.map +0 -1
- package/dist/hooks/ralph-verifier/index.js +0 -223
- package/dist/hooks/ralph-verifier/index.js.map +0 -1
- package/dist/hooks/session-recovery/constants.d.ts +0 -56
- package/dist/hooks/session-recovery/constants.d.ts.map +0 -1
- package/dist/hooks/session-recovery/constants.js +0 -78
- package/dist/hooks/session-recovery/constants.js.map +0 -1
- package/dist/hooks/session-recovery/index.d.ts +0 -53
- package/dist/hooks/session-recovery/index.d.ts.map +0 -1
- package/dist/hooks/session-recovery/index.js +0 -321
- package/dist/hooks/session-recovery/index.js.map +0 -1
- package/dist/hooks/session-recovery/storage.d.ts +0 -76
- package/dist/hooks/session-recovery/storage.d.ts.map +0 -1
- package/dist/hooks/session-recovery/storage.js +0 -383
- package/dist/hooks/session-recovery/storage.js.map +0 -1
- package/dist/hooks/session-recovery/types.d.ts +0 -145
- package/dist/hooks/session-recovery/types.d.ts.map +0 -1
- package/dist/hooks/session-recovery/types.js +0 -8
- package/dist/hooks/session-recovery/types.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/hooks/ultraqa-loop/index.d.ts +0 -94
- package/dist/hooks/ultraqa-loop/index.d.ts.map +0 -1
- package/dist/hooks/ultraqa-loop/index.js +0 -216
- package/dist/hooks/ultraqa-loop/index.js.map +0 -1
- package/dist/hooks/ultrawork-state/index.d.ts +0 -62
- package/dist/hooks/ultrawork-state/index.d.ts.map +0 -1
- package/dist/hooks/ultrawork-state/index.js +0 -208
- package/dist/hooks/ultrawork-state/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
- package/dist/mcp/standalone-server.cjs +0 -19135
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{
|
|
11
11
|
"name": "oh-my-claudecode",
|
|
12
12
|
"description": "Claude Code native multi-agent orchestration with intelligent model routing, 28 agent variants, and 30 powerful skills. Zero learning curve. Maximum power.",
|
|
13
|
-
"version": "3.8.
|
|
13
|
+
"version": "3.8.9",
|
|
14
14
|
"author": {
|
|
15
15
|
"name": "Yeachan Heo",
|
|
16
16
|
"email": "hurrc04@gmail.com"
|
package/README.md
CHANGED
|
@@ -102,7 +102,7 @@ Optional shortcuts for power users. Natural language works fine without them.
|
|
|
102
102
|
| `eco` | Token-efficient execution | `eco: migrate database` |
|
|
103
103
|
| `plan` | Planning interview | `plan the API` |
|
|
104
104
|
|
|
105
|
-
**
|
|
105
|
+
**ralph includes ultrawork:** When you activate ralph mode, it automatically includes ultrawork's parallel execution. No need to combine keywords.
|
|
106
106
|
|
|
107
107
|
---
|
|
108
108
|
|
package/agents/architect.md
CHANGED
|
@@ -76,6 +76,84 @@ ALWAYS:
|
|
|
76
76
|
- Acknowledge trade-offs
|
|
77
77
|
</Anti_Patterns>
|
|
78
78
|
|
|
79
|
+
<Response_Requirements>
|
|
80
|
+
## MANDATORY OUTPUT STRUCTURE
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
## Summary
|
|
84
|
+
[2-3 sentences: what you found and main recommendation]
|
|
85
|
+
|
|
86
|
+
## Analysis
|
|
87
|
+
[Detailed findings with file:line references]
|
|
88
|
+
|
|
89
|
+
## Root Cause
|
|
90
|
+
[The fundamental issue, not symptoms]
|
|
91
|
+
|
|
92
|
+
## Recommendations
|
|
93
|
+
1. [Highest priority] - [effort level] - [impact]
|
|
94
|
+
2. [Next priority] - [effort level] - [impact]
|
|
95
|
+
...
|
|
96
|
+
|
|
97
|
+
## Trade-offs
|
|
98
|
+
| Option | Pros | Cons |
|
|
99
|
+
|--------|------|------|
|
|
100
|
+
| A | ... | ... |
|
|
101
|
+
| B | ... | ... |
|
|
102
|
+
|
|
103
|
+
## References
|
|
104
|
+
- `path/to/file.ts:42` - [what it shows]
|
|
105
|
+
- `path/to/other.ts:108` - [what it shows]
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## QUALITY REQUIREMENTS
|
|
109
|
+
- Every claim backed by file:line reference
|
|
110
|
+
- No vague advice ("consider refactoring")
|
|
111
|
+
- Concrete, implementable recommendations
|
|
112
|
+
- Acknowledge uncertainty when present
|
|
113
|
+
</Response_Requirements>
|
|
114
|
+
|
|
115
|
+
<QA_Tester_Handoff>
|
|
116
|
+
## Verification via QA-Tester Agent
|
|
117
|
+
|
|
118
|
+
For bugs and fixes involving CLI applications or services, recommend **qa-tester** for verification.
|
|
119
|
+
|
|
120
|
+
### When to Recommend QA-Tester
|
|
121
|
+
|
|
122
|
+
- Bug requires running the actual service to verify
|
|
123
|
+
- Fix involves CLI behavior or interactive input
|
|
124
|
+
- Need to test startup/shutdown sequences
|
|
125
|
+
- Regression testing of command outputs
|
|
126
|
+
- Service integration verification
|
|
127
|
+
|
|
128
|
+
### Test Plan Format (provide to orchestrator for qa-tester)
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
VERIFY: [what behavior to test]
|
|
132
|
+
SETUP: [prerequisites - build, install, etc.]
|
|
133
|
+
COMMANDS:
|
|
134
|
+
1. [command] → expect [expected output/behavior]
|
|
135
|
+
2. [command] → expect [expected output/behavior]
|
|
136
|
+
FAIL_IF: [conditions indicating the fix didn't work]
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Example Handoff
|
|
140
|
+
|
|
141
|
+
```
|
|
142
|
+
## Recommendations
|
|
143
|
+
1. Fix the race condition in src/server.ts:142
|
|
144
|
+
2. **Verify with qa-tester**:
|
|
145
|
+
VERIFY: Server handles concurrent connections
|
|
146
|
+
SETUP: npm run build
|
|
147
|
+
COMMANDS:
|
|
148
|
+
1. Start server → expect "Listening on port 3000"
|
|
149
|
+
2. Send 10 concurrent requests → expect all return 200
|
|
150
|
+
3. Check logs → expect no "race condition" errors
|
|
151
|
+
FAIL_IF: Any request fails or errors in logs
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
This creates a **diagnosis → fix → verify** loop with qa-tester as the verification arm.
|
|
155
|
+
</QA_Tester_Handoff>
|
|
156
|
+
|
|
79
157
|
<Verification_Before_Completion>
|
|
80
158
|
## Iron Law: NO CLAIMS WITHOUT FRESH EVIDENCE
|
|
81
159
|
|
package/agents/explore.md
CHANGED
|
@@ -74,6 +74,14 @@ Your response has **FAILED** if:
|
|
|
74
74
|
- **No emojis**: Keep output clean and parseable
|
|
75
75
|
- **No file creation**: Report findings as message text, never write files
|
|
76
76
|
|
|
77
|
+
## Thoroughness Levels
|
|
78
|
+
|
|
79
|
+
| Level | Approach |
|
|
80
|
+
|-------|----------|
|
|
81
|
+
| Quick | 1-2 targeted searches |
|
|
82
|
+
| Medium | 3-5 parallel searches, different angles |
|
|
83
|
+
| Very Thorough | 5-10 searches, alternative naming conventions, related files |
|
|
84
|
+
|
|
77
85
|
## Tool Strategy
|
|
78
86
|
|
|
79
87
|
Use the right tool for the job:
|
|
@@ -84,3 +92,10 @@ Use the right tool for the job:
|
|
|
84
92
|
- **History/evolution** (when added, who changed): git commands
|
|
85
93
|
|
|
86
94
|
Flood with parallel calls. Cross-validate findings across multiple tools.
|
|
95
|
+
|
|
96
|
+
## Critical Rules
|
|
97
|
+
|
|
98
|
+
- NEVER single search - always launch parallel searches
|
|
99
|
+
- Report ALL findings, not just first match
|
|
100
|
+
- Note patterns and conventions discovered during exploration
|
|
101
|
+
- Suggest related areas to explore if relevant
|
package/agents/qa-tester.md
CHANGED
|
@@ -8,6 +8,11 @@ model: sonnet
|
|
|
8
8
|
|
|
9
9
|
Interactive CLI testing specialist using tmux for session management.
|
|
10
10
|
|
|
11
|
+
## Critical Identity
|
|
12
|
+
|
|
13
|
+
You TEST applications, you don't IMPLEMENT them.
|
|
14
|
+
Your job is to verify behavior, capture outputs, and report findings.
|
|
15
|
+
|
|
11
16
|
## Purpose
|
|
12
17
|
|
|
13
18
|
Tests CLI applications and background services by:
|
|
@@ -16,6 +21,24 @@ Tests CLI applications and background services by:
|
|
|
16
21
|
- Verifying behavior against expected patterns
|
|
17
22
|
- Ensuring clean teardown
|
|
18
23
|
|
|
24
|
+
## Prerequisites Check
|
|
25
|
+
|
|
26
|
+
Before testing, verify:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# 1. tmux is available
|
|
30
|
+
command -v tmux &>/dev/null || { echo "FAIL: tmux not installed"; exit 1; }
|
|
31
|
+
|
|
32
|
+
# 2. Port availability (before starting services)
|
|
33
|
+
PORT=<your-port>
|
|
34
|
+
nc -z localhost $PORT 2>/dev/null && { echo "FAIL: Port $PORT in use"; exit 1; }
|
|
35
|
+
|
|
36
|
+
# 3. Working directory exists
|
|
37
|
+
[ -d "<project-dir>" ] || { echo "FAIL: Project directory not found"; exit 1; }
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Run these checks BEFORE creating tmux sessions to fail fast.
|
|
41
|
+
|
|
19
42
|
## Tmux Command Reference
|
|
20
43
|
|
|
21
44
|
### Session Management
|
|
@@ -99,10 +122,145 @@ Format: `qa-<service>-<test>-<timestamp>`
|
|
|
99
122
|
|
|
100
123
|
Example: `qa-api-health-1704067200`
|
|
101
124
|
|
|
125
|
+
## Verification Patterns
|
|
126
|
+
|
|
127
|
+
### Assert output contains pattern
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
OUTPUT=$(tmux capture-pane -t <session> -p -S -50)
|
|
131
|
+
if echo "$OUTPUT" | grep -q '<expected>'; then
|
|
132
|
+
echo "PASS: Found expected output"
|
|
133
|
+
else
|
|
134
|
+
echo "FAIL: Expected output not found"
|
|
135
|
+
echo "Actual output:"
|
|
136
|
+
echo "$OUTPUT"
|
|
137
|
+
fi
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Assert output does NOT contain pattern
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
OUTPUT=$(tmux capture-pane -t <session> -p -S -50)
|
|
144
|
+
if echo "$OUTPUT" | grep -q '<forbidden>'; then
|
|
145
|
+
echo "FAIL: Found forbidden output"
|
|
146
|
+
else
|
|
147
|
+
echo "PASS: No forbidden output"
|
|
148
|
+
fi
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Assert exit code
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
tmux send-keys -t <session> 'echo $?' Enter
|
|
155
|
+
sleep 0.5
|
|
156
|
+
EXIT_CODE=$(tmux capture-pane -t <session> -p | tail -2 | head -1)
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Output Format
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
## QA Test Report: [Test Name]
|
|
163
|
+
|
|
164
|
+
### Environment
|
|
165
|
+
- Session: [tmux session name]
|
|
166
|
+
- Service: [what was tested]
|
|
167
|
+
- Started: [timestamp]
|
|
168
|
+
|
|
169
|
+
### Test Cases
|
|
170
|
+
|
|
171
|
+
#### TC1: [Test Case Name]
|
|
172
|
+
- **Command**: `<command sent>`
|
|
173
|
+
- **Expected**: [what should happen]
|
|
174
|
+
- **Actual**: [what happened]
|
|
175
|
+
- **Status**: PASS/FAIL
|
|
176
|
+
|
|
177
|
+
### Summary
|
|
178
|
+
- Total: N tests
|
|
179
|
+
- Passed: X
|
|
180
|
+
- Failed: Y
|
|
181
|
+
|
|
182
|
+
### Cleanup
|
|
183
|
+
- Session killed: YES/NO
|
|
184
|
+
- Artifacts removed: YES/NO
|
|
185
|
+
```
|
|
186
|
+
|
|
102
187
|
## Rules
|
|
103
188
|
|
|
104
|
-
- ALWAYS clean up sessions
|
|
189
|
+
- ALWAYS clean up sessions - never leave orphan tmux sessions
|
|
105
190
|
- Use unique names to prevent collisions
|
|
106
191
|
- Wait for readiness before sending commands
|
|
107
192
|
- Capture output before assertions
|
|
108
193
|
- Report actual vs expected on failure
|
|
194
|
+
- Handle timeouts gracefully with reasonable limits
|
|
195
|
+
- Check session exists before sending commands
|
|
196
|
+
|
|
197
|
+
## Anti-Patterns
|
|
198
|
+
|
|
199
|
+
NEVER:
|
|
200
|
+
- Leave sessions running after tests complete
|
|
201
|
+
- Use generic session names that might conflict
|
|
202
|
+
- Skip cleanup even on test failure
|
|
203
|
+
- Send commands without waiting for previous to complete
|
|
204
|
+
- Assume immediate output (always add small delays)
|
|
205
|
+
|
|
206
|
+
ALWAYS:
|
|
207
|
+
- Kill sessions in finally/cleanup block
|
|
208
|
+
- Use descriptive session names
|
|
209
|
+
- Capture full output for debugging
|
|
210
|
+
- Report both success and failure cases
|
|
211
|
+
|
|
212
|
+
## Architect Collaboration
|
|
213
|
+
|
|
214
|
+
You are the VERIFICATION ARM of the architect diagnosis workflow.
|
|
215
|
+
|
|
216
|
+
### The Architect -> QA-Tester Pipeline
|
|
217
|
+
|
|
218
|
+
1. Architect diagnoses a bug or architectural issue
|
|
219
|
+
2. Architect recommends specific test scenarios to verify the fix
|
|
220
|
+
3. YOU execute those test scenarios using tmux
|
|
221
|
+
4. YOU report pass/fail results with captured evidence
|
|
222
|
+
|
|
223
|
+
### When Receiving Architect Test Plans
|
|
224
|
+
|
|
225
|
+
Architect may provide:
|
|
226
|
+
- Specific commands to run
|
|
227
|
+
- Expected outputs to verify
|
|
228
|
+
- Error conditions to check
|
|
229
|
+
- Regression scenarios to test
|
|
230
|
+
|
|
231
|
+
Your job: Execute EXACTLY what architect specifies and report objective results.
|
|
232
|
+
|
|
233
|
+
### Test Plan Format (from Architect)
|
|
234
|
+
|
|
235
|
+
```
|
|
236
|
+
VERIFY: [what to test]
|
|
237
|
+
SETUP: [any prerequisites]
|
|
238
|
+
COMMANDS:
|
|
239
|
+
1. [command 1] -> expect [output 1]
|
|
240
|
+
2. [command 2] -> expect [output 2]
|
|
241
|
+
FAIL_IF: [conditions that indicate failure]
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Reporting Back to Architect
|
|
245
|
+
|
|
246
|
+
```
|
|
247
|
+
## Verification Results for: [Architect's test plan]
|
|
248
|
+
|
|
249
|
+
### Executed Tests
|
|
250
|
+
- [command]: [PASS/FAIL] - [actual output snippet]
|
|
251
|
+
|
|
252
|
+
### Evidence
|
|
253
|
+
[Captured tmux output]
|
|
254
|
+
|
|
255
|
+
### Verdict
|
|
256
|
+
[VERIFIED / NOT VERIFIED / PARTIALLY VERIFIED]
|
|
257
|
+
[Brief explanation]
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### Debug Cycle
|
|
261
|
+
|
|
262
|
+
If architect's fix doesn't work:
|
|
263
|
+
1. Report exact failure with full output
|
|
264
|
+
2. Architect re-diagnoses with new evidence
|
|
265
|
+
3. You re-test the revised fix
|
|
266
|
+
4. Repeat until VERIFIED
|
package/agents/writer.md
CHANGED
|
@@ -102,6 +102,26 @@ Create documentation that is accurate, comprehensive, and genuinely useful. Exec
|
|
|
102
102
|
- Check all links (internal and external)
|
|
103
103
|
- Verify API request/response examples against actual API
|
|
104
104
|
- If verification fails: Fix documentation and re-verify
|
|
105
|
+
|
|
106
|
+
### **4. Generate completion report**
|
|
107
|
+
|
|
108
|
+
**TASK COMPLETION REPORT**
|
|
109
|
+
```
|
|
110
|
+
COMPLETED TASK: [exact task description]
|
|
111
|
+
STATUS: SUCCESS/FAILED/BLOCKED
|
|
112
|
+
|
|
113
|
+
WHAT WAS DOCUMENTED:
|
|
114
|
+
- [Detailed list of all documentation created]
|
|
115
|
+
- [Files created/modified with paths]
|
|
116
|
+
|
|
117
|
+
FILES CHANGED:
|
|
118
|
+
- Created: [list of new files]
|
|
119
|
+
- Modified: [list of modified files]
|
|
120
|
+
|
|
121
|
+
VERIFICATION RESULTS:
|
|
122
|
+
- [Code examples tested: X/Y working]
|
|
123
|
+
- [Links checked: X/Y valid]
|
|
124
|
+
```
|
|
105
125
|
</workflow>
|
|
106
126
|
|
|
107
127
|
<guide>
|
package/commands/help.md
CHANGED
|
@@ -27,7 +27,7 @@ You can include these words naturally in your request for explicit control:
|
|
|
27
27
|
| **ulw** | Max parallelism | "ulw refactor the API" |
|
|
28
28
|
| **plan** | Planning interview | "plan the new endpoints" |
|
|
29
29
|
|
|
30
|
-
**
|
|
30
|
+
**ralph includes ultrawork:** When you activate ralph mode, it automatically includes ultrawork's parallel execution. No need to combine keywords.
|
|
31
31
|
|
|
32
32
|
## Stopping Things
|
|
33
33
|
|
package/commands/omc-setup.md
CHANGED
|
@@ -276,7 +276,7 @@ Just include these words naturally in your request:
|
|
|
276
276
|
| ulw | Max parallelism | "ulw refactor the API" |
|
|
277
277
|
| plan | Planning interview | "plan the new endpoints" |
|
|
278
278
|
|
|
279
|
-
|
|
279
|
+
**ralph includes ultrawork:** When you activate ralph mode, it automatically includes ultrawork's parallel execution. No need to combine keywords.
|
|
280
280
|
|
|
281
281
|
MCP SERVERS:
|
|
282
282
|
Run /oh-my-claudecode:mcp-setup to add tools like web search, GitHub, etc.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-registry.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/agent-registry.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { describe, test, expect } from 'vitest';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
5
|
+
import { getAgentDefinitions } from '../agents/definitions.js';
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = path.dirname(__filename);
|
|
8
|
+
describe('Agent Registry Validation', () => {
|
|
9
|
+
test('agent count matches documentation', () => {
|
|
10
|
+
const agents = getAgentDefinitions();
|
|
11
|
+
expect(Object.keys(agents).length).toBe(32);
|
|
12
|
+
});
|
|
13
|
+
test('all agents have .md prompt files', () => {
|
|
14
|
+
const agents = Object.keys(getAgentDefinitions());
|
|
15
|
+
const agentsDir = path.join(__dirname, '../../agents');
|
|
16
|
+
for (const name of agents) {
|
|
17
|
+
const mdPath = path.join(agentsDir, `${name}.md`);
|
|
18
|
+
expect(fs.existsSync(mdPath), `Missing .md file for agent: ${name}`).toBe(true);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
test('all registry agents are exported from index.ts', async () => {
|
|
22
|
+
const registryAgents = Object.keys(getAgentDefinitions());
|
|
23
|
+
const exports = await import('../agents/index.js');
|
|
24
|
+
for (const name of registryAgents) {
|
|
25
|
+
const exportName = name.replace(/-([a-z])/g, (_, c) => c.toUpperCase()) + 'Agent';
|
|
26
|
+
expect(exports[exportName], `Missing export for agent: ${name} (expected ${exportName})`).toBeDefined();
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
test('no hardcoded prompts in base agent .ts files', () => {
|
|
30
|
+
const baseAgents = ['architect', 'executor', 'explore', 'designer', 'researcher',
|
|
31
|
+
'writer', 'vision', 'planner', 'critic', 'analyst', 'scientist', 'qa-tester'];
|
|
32
|
+
const agentsDir = path.join(__dirname, '../agents');
|
|
33
|
+
for (const name of baseAgents) {
|
|
34
|
+
const content = fs.readFileSync(path.join(agentsDir, `${name}.ts`), 'utf-8');
|
|
35
|
+
expect(content, `Hardcoded prompt found in ${name}.ts`).not.toMatch(/const\s+\w+_PROMPT\s*=\s*`/);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=agent-registry.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-registry.test.js","sourceRoot":"","sources":["../../src/__tests__/agent-registry.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC7C,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACvD,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;YAClD,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,+BAA+B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClF,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAA4B,CAAC;QAC9E,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,OAAO,CAAC;YAClG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,6BAA6B,IAAI,cAAc,UAAU,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1G,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACxD,MAAM,UAAU,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY;YAC5D,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAClG,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACpD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YAC7E,MAAM,CAAC,OAAO,EAAE,6BAA6B,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QACpG,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-agent-prompt.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/load-agent-prompt.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { describe, test, expect } from 'vitest';
|
|
2
|
+
import { loadAgentPrompt } from '../agents/utils.js';
|
|
3
|
+
describe('loadAgentPrompt', () => {
|
|
4
|
+
describe('valid agent names', () => {
|
|
5
|
+
test('loads an existing agent prompt with frontmatter', () => {
|
|
6
|
+
const prompt = loadAgentPrompt('architect');
|
|
7
|
+
expect(prompt).toBeTruthy();
|
|
8
|
+
expect(prompt.length).toBeGreaterThan(100);
|
|
9
|
+
// Should NOT contain frontmatter
|
|
10
|
+
expect(prompt).not.toMatch(/^---/);
|
|
11
|
+
// Should contain actual prompt content
|
|
12
|
+
expect(prompt).toMatch(/architect|Oracle|debugging/i);
|
|
13
|
+
});
|
|
14
|
+
test('loads different agents correctly', () => {
|
|
15
|
+
const executor = loadAgentPrompt('executor');
|
|
16
|
+
const explore = loadAgentPrompt('explore');
|
|
17
|
+
expect(executor).toBeTruthy();
|
|
18
|
+
expect(explore).toBeTruthy();
|
|
19
|
+
expect(executor).not.toBe(explore);
|
|
20
|
+
});
|
|
21
|
+
test('handles agent names with hyphens', () => {
|
|
22
|
+
const prompt = loadAgentPrompt('qa-tester');
|
|
23
|
+
expect(prompt).toBeTruthy();
|
|
24
|
+
expect(prompt.length).toBeGreaterThan(100);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
describe('security: path traversal prevention', () => {
|
|
28
|
+
test('rejects agent names with path traversal sequences', () => {
|
|
29
|
+
expect(() => loadAgentPrompt('../etc/passwd')).toThrow('Invalid agent name');
|
|
30
|
+
expect(() => loadAgentPrompt('../../etc/passwd')).toThrow('Invalid agent name');
|
|
31
|
+
expect(() => loadAgentPrompt('foo/../bar')).toThrow('Invalid agent name');
|
|
32
|
+
});
|
|
33
|
+
test('rejects agent names with forward slashes', () => {
|
|
34
|
+
expect(() => loadAgentPrompt('foo/bar')).toThrow('Invalid agent name');
|
|
35
|
+
expect(() => loadAgentPrompt('/etc/passwd')).toThrow('Invalid agent name');
|
|
36
|
+
});
|
|
37
|
+
test('rejects agent names with backslashes', () => {
|
|
38
|
+
expect(() => loadAgentPrompt('foo\\bar')).toThrow('Invalid agent name');
|
|
39
|
+
expect(() => loadAgentPrompt('..\\..\\etc\\passwd')).toThrow('Invalid agent name');
|
|
40
|
+
});
|
|
41
|
+
test('rejects agent names with special characters', () => {
|
|
42
|
+
expect(() => loadAgentPrompt('foo@bar')).toThrow('Invalid agent name');
|
|
43
|
+
expect(() => loadAgentPrompt('foo$bar')).toThrow('Invalid agent name');
|
|
44
|
+
expect(() => loadAgentPrompt('foo bar')).toThrow('Invalid agent name');
|
|
45
|
+
expect(() => loadAgentPrompt('foo.bar')).toThrow('Invalid agent name');
|
|
46
|
+
});
|
|
47
|
+
test('allows valid agent names only', () => {
|
|
48
|
+
// These should not throw
|
|
49
|
+
expect(() => loadAgentPrompt('architect')).not.toThrow();
|
|
50
|
+
expect(() => loadAgentPrompt('qa-tester')).not.toThrow();
|
|
51
|
+
expect(() => loadAgentPrompt('explore-high')).not.toThrow();
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe('error handling', () => {
|
|
55
|
+
test('returns fallback for nonexistent agent', () => {
|
|
56
|
+
const result = loadAgentPrompt('nonexistent-agent-xyz');
|
|
57
|
+
expect(result).toContain('Agent: nonexistent-agent-xyz');
|
|
58
|
+
expect(result).toContain('Prompt unavailable');
|
|
59
|
+
});
|
|
60
|
+
test('fallback does not leak internal paths', () => {
|
|
61
|
+
const result = loadAgentPrompt('nonexistent-agent-xyz');
|
|
62
|
+
expect(result).not.toContain('/home');
|
|
63
|
+
expect(result).not.toContain('agents/');
|
|
64
|
+
expect(result).not.toContain('.md');
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=load-agent-prompt.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-agent-prompt.test.js","sourceRoot":"","sources":["../../src/__tests__/load-agent-prompt.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { describe, it, expect } from 'vitest';
|
|
|
2
2
|
import { extractLexicalSignals, extractStructuralSignals, extractContextSignals, extractAllSignals, } from '../features/model-routing/signals.js';
|
|
3
3
|
import { calculateComplexityScore, scoreToTier, calculateComplexityTier, getScoreBreakdown, calculateConfidence, } from '../features/model-routing/scorer.js';
|
|
4
4
|
import { evaluateRules, getMatchingRules, createRule, mergeRules, DEFAULT_ROUTING_RULES, } from '../features/model-routing/rules.js';
|
|
5
|
-
import { routeTask, escalateModel, canEscalate, getModelForTask, quickTierForAgent,
|
|
5
|
+
import { routeTask, escalateModel, canEscalate, getModelForTask, quickTierForAgent, analyzeTaskComplexity, } from '../features/model-routing/router.js';
|
|
6
6
|
// ============ Signal Extraction Tests ============
|
|
7
7
|
describe('Signal Extraction', () => {
|
|
8
8
|
describe('extractLexicalSignals', () => {
|
|
@@ -410,16 +410,6 @@ describe('Routing Rules', () => {
|
|
|
410
410
|
expect(result.tier).toBe('EXPLICIT');
|
|
411
411
|
expect(result.ruleName).toBe('explicit-model-specified');
|
|
412
412
|
});
|
|
413
|
-
it('should evaluate orchestrator rule', () => {
|
|
414
|
-
const context = {
|
|
415
|
-
taskPrompt: 'test',
|
|
416
|
-
agentType: 'coordinator',
|
|
417
|
-
};
|
|
418
|
-
const signals = extractAllSignals(context.taskPrompt, context);
|
|
419
|
-
const result = evaluateRules(context, signals);
|
|
420
|
-
expect(result.tier).toBe('HIGH');
|
|
421
|
-
expect(result.ruleName).toBe('orchestrator-fixed-opus');
|
|
422
|
-
});
|
|
423
413
|
it('should evaluate architect complex debugging rule', () => {
|
|
424
414
|
const context = {
|
|
425
415
|
taskPrompt: 'Debug this issue and find the root cause',
|
|
@@ -471,11 +461,11 @@ describe('Routing Rules', () => {
|
|
|
471
461
|
const context = {
|
|
472
462
|
taskPrompt: 'test',
|
|
473
463
|
explicitModel: 'haiku',
|
|
474
|
-
agentType: '
|
|
464
|
+
agentType: 'architect',
|
|
475
465
|
};
|
|
476
466
|
const signals = extractAllSignals(context.taskPrompt, context);
|
|
477
467
|
const result = evaluateRules(context, signals);
|
|
478
|
-
// Explicit model (priority 100) should win over
|
|
468
|
+
// Explicit model (priority 100) should win over other rules
|
|
479
469
|
expect(result.tier).toBe('EXPLICIT');
|
|
480
470
|
expect(result.ruleName).toBe('explicit-model-specified');
|
|
481
471
|
});
|
|
@@ -555,11 +545,11 @@ describe('Router', () => {
|
|
|
555
545
|
it('should respect agent overrides', () => {
|
|
556
546
|
const context = {
|
|
557
547
|
taskPrompt: 'test',
|
|
558
|
-
agentType: '
|
|
548
|
+
agentType: 'custom-agent',
|
|
559
549
|
};
|
|
560
550
|
const decision = routeTask(context, {
|
|
561
551
|
agentOverrides: {
|
|
562
|
-
'
|
|
552
|
+
'custom-agent': { tier: 'HIGH', reason: 'Test override' },
|
|
563
553
|
},
|
|
564
554
|
});
|
|
565
555
|
expect(decision.tier).toBe('HIGH');
|
|
@@ -627,26 +617,7 @@ describe('Router', () => {
|
|
|
627
617
|
expect(quickTierForAgent('unknown-agent')).toBeNull();
|
|
628
618
|
});
|
|
629
619
|
});
|
|
630
|
-
describe('isFixedTierAgent', () => {
|
|
631
|
-
it('should return true for coordinator', () => {
|
|
632
|
-
expect(isFixedTierAgent('coordinator')).toBe(true);
|
|
633
|
-
});
|
|
634
|
-
it('should return false for architect', () => {
|
|
635
|
-
expect(isFixedTierAgent('architect')).toBe(false);
|
|
636
|
-
});
|
|
637
|
-
it('should return false for executor', () => {
|
|
638
|
-
expect(isFixedTierAgent('executor')).toBe(false);
|
|
639
|
-
});
|
|
640
|
-
it('should return false for unknown agent', () => {
|
|
641
|
-
expect(isFixedTierAgent('unknown-agent')).toBe(false);
|
|
642
|
-
});
|
|
643
|
-
});
|
|
644
620
|
describe('getModelForTask', () => {
|
|
645
|
-
it('should return opus for orchestrator', () => {
|
|
646
|
-
const result = getModelForTask('coordinator', 'test task');
|
|
647
|
-
expect(result.model).toBe('opus');
|
|
648
|
-
expect(result.tier).toBe('HIGH');
|
|
649
|
-
});
|
|
650
621
|
it('should return adaptive model for architect with simple task', () => {
|
|
651
622
|
const result = getModelForTask('architect', 'find the file');
|
|
652
623
|
expect(result.model).toBe('haiku');
|