oh-my-parallel-agent-opencode 0.1.0 → 0.2.1
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/LICENSE.md +82 -0
- package/README.md +105 -42
- package/bin/oh-my-parallel-agent-opencode.js +80 -0
- package/bin/platform.js +38 -0
- package/bin/platform.test.ts +148 -0
- package/dist/agents/atlas.d.ts +22 -0
- package/dist/agents/dynamic-agent-prompt-builder.d.ts +30 -0
- package/dist/agents/explore.d.ts +7 -0
- package/dist/agents/hephaestus.d.ts +6 -0
- package/dist/agents/index.d.ts +12 -0
- package/dist/agents/librarian.d.ts +7 -0
- package/dist/agents/metis.d.ts +21 -0
- package/dist/agents/momus.d.ts +21 -0
- package/dist/agents/momus.test.d.ts +1 -0
- package/dist/agents/multimodal-looker.d.ts +7 -0
- package/dist/agents/oracle.d.ts +7 -0
- package/dist/agents/prometheus/behavioral-summary.d.ts +6 -0
- package/dist/agents/prometheus/high-accuracy-mode.d.ts +6 -0
- package/dist/agents/prometheus/identity-constraints.d.ts +7 -0
- package/dist/agents/prometheus/index.d.ts +39 -0
- package/dist/agents/prometheus/interview-mode.d.ts +7 -0
- package/dist/agents/prometheus/plan-generation.d.ts +7 -0
- package/dist/agents/prometheus/plan-template.d.ts +7 -0
- package/dist/agents/prometheus-prompt.test.d.ts +1 -0
- package/dist/agents/sisyphus-junior.d.ts +10 -0
- package/dist/agents/sisyphus-junior.test.d.ts +1 -0
- package/dist/agents/sisyphus.d.ts +8 -0
- package/dist/agents/types.d.ts +63 -0
- package/dist/agents/utils.d.ts +16 -0
- package/dist/agents/utils.test.d.ts +1 -0
- package/dist/cli/config-manager.d.ts +162 -0
- package/dist/cli/config-manager.test.d.ts +1 -0
- package/dist/cli/doctor/checks/auth.d.ts +7 -0
- package/dist/cli/doctor/checks/auth.test.d.ts +1 -0
- package/dist/cli/doctor/checks/config.d.ts +8 -0
- package/dist/cli/doctor/checks/config.test.d.ts +1 -0
- package/dist/cli/doctor/checks/dependencies.d.ts +8 -0
- package/dist/cli/doctor/checks/dependencies.test.d.ts +1 -0
- package/dist/cli/doctor/checks/gh.d.ts +13 -0
- package/dist/cli/doctor/checks/gh.test.d.ts +1 -0
- package/dist/cli/doctor/checks/index.d.ts +13 -0
- package/dist/cli/doctor/checks/lsp.d.ts +8 -0
- package/dist/cli/doctor/checks/lsp.test.d.ts +1 -0
- package/dist/cli/doctor/checks/mcp-oauth.d.ts +15 -0
- package/dist/cli/doctor/checks/mcp-oauth.test.d.ts +1 -0
- package/dist/cli/doctor/checks/mcp.d.ts +6 -0
- package/dist/cli/doctor/checks/mcp.test.d.ts +1 -0
- package/dist/cli/doctor/checks/model-resolution.d.ts +33 -0
- package/dist/cli/doctor/checks/model-resolution.test.d.ts +1 -0
- package/dist/cli/doctor/checks/opencode.d.ts +19 -0
- package/dist/cli/doctor/checks/opencode.test.d.ts +1 -0
- package/dist/cli/doctor/checks/plugin.d.ts +4 -0
- package/dist/cli/doctor/checks/plugin.test.d.ts +1 -0
- package/dist/cli/doctor/checks/version.d.ts +4 -0
- package/dist/cli/doctor/checks/version.test.d.ts +1 -0
- package/dist/cli/doctor/constants.d.ts +42 -0
- package/dist/cli/doctor/formatter.d.ts +12 -0
- package/dist/cli/doctor/formatter.test.d.ts +1 -0
- package/dist/cli/doctor/index.d.ts +5 -0
- package/dist/cli/doctor/runner.d.ts +7 -0
- package/dist/cli/doctor/runner.test.d.ts +1 -0
- package/dist/cli/doctor/types.d.ts +91 -0
- package/dist/cli/get-local-version/formatter.d.ts +3 -0
- package/dist/cli/get-local-version/index.d.ts +3 -0
- package/dist/cli/get-local-version/types.d.ts +13 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +26903 -0
- package/dist/cli/index.test.d.ts +1 -0
- package/dist/cli/install.d.ts +2 -0
- package/dist/cli/install.test.d.ts +1 -0
- package/dist/cli/mcp-oauth/index.d.ts +6 -0
- package/dist/cli/mcp-oauth/index.test.d.ts +1 -0
- package/dist/cli/mcp-oauth/login.d.ts +6 -0
- package/dist/cli/mcp-oauth/login.test.d.ts +1 -0
- package/dist/cli/mcp-oauth/logout.d.ts +4 -0
- package/dist/cli/mcp-oauth/logout.test.d.ts +1 -0
- package/dist/cli/mcp-oauth/status.d.ts +1 -0
- package/dist/cli/mcp-oauth/status.test.d.ts +1 -0
- package/dist/cli/model-fallback.d.ts +18 -0
- package/dist/cli/model-fallback.test.d.ts +1 -0
- package/dist/cli/run/completion.d.ts +2 -0
- package/dist/cli/run/completion.test.d.ts +1 -0
- package/dist/cli/run/events.d.ts +14 -0
- package/dist/cli/run/events.test.d.ts +1 -0
- package/dist/cli/run/index.d.ts +2 -0
- package/dist/cli/run/runner.d.ts +2 -0
- package/dist/cli/run/types.d.ts +73 -0
- package/dist/cli/types.d.ts +39 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/schema.d.ts +2651 -0
- package/dist/config/schema.test.d.ts +1 -0
- package/dist/features/background-agent/concurrency.d.ts +27 -0
- package/dist/features/background-agent/concurrency.test.d.ts +1 -0
- package/dist/features/background-agent/constants.d.ts +44 -0
- package/dist/features/background-agent/index.d.ts +4 -0
- package/dist/features/background-agent/manager.d.ts +118 -0
- package/dist/features/background-agent/manager.test.d.ts +1 -0
- package/dist/features/background-agent/result-handler.d.ts +15 -0
- package/dist/features/background-agent/spawner.d.ts +14 -0
- package/dist/features/background-agent/state.d.ts +35 -0
- package/dist/features/background-agent/types.d.ts +79 -0
- package/dist/features/boulder-state/constants.d.ts +10 -0
- package/dist/features/boulder-state/index.d.ts +3 -0
- package/dist/features/boulder-state/storage.d.ts +28 -0
- package/dist/features/boulder-state/storage.test.d.ts +1 -0
- package/dist/features/boulder-state/types.d.ts +24 -0
- package/dist/features/builtin-commands/commands.d.ts +2 -0
- package/dist/features/builtin-commands/index.d.ts +2 -0
- package/dist/features/builtin-commands/templates/init-deep.d.ts +1 -0
- package/dist/features/builtin-commands/templates/ralph-loop.d.ts +2 -0
- package/dist/features/builtin-commands/templates/refactor.d.ts +1 -0
- package/dist/features/builtin-commands/templates/start-work.d.ts +1 -0
- package/dist/features/builtin-commands/templates/stop-continuation.d.ts +1 -0
- package/dist/features/builtin-commands/templates/stop-continuation.test.d.ts +1 -0
- package/dist/features/builtin-commands/types.d.ts +6 -0
- package/dist/features/builtin-skills/index.d.ts +2 -0
- package/dist/features/builtin-skills/skills/dev-browser.d.ts +2 -0
- package/dist/features/builtin-skills/skills/frontend-ui-ux.d.ts +2 -0
- package/dist/features/builtin-skills/skills/git-master.d.ts +2 -0
- package/dist/features/builtin-skills/skills/index.d.ts +4 -0
- package/dist/features/builtin-skills/skills/playwright.d.ts +3 -0
- package/dist/features/builtin-skills/skills.d.ts +6 -0
- package/dist/features/builtin-skills/skills.test.d.ts +1 -0
- package/dist/features/builtin-skills/types.d.ts +15 -0
- package/dist/features/claude-code-agent-loader/index.d.ts +2 -0
- package/dist/features/claude-code-agent-loader/loader.d.ts +3 -0
- package/dist/features/claude-code-agent-loader/types.d.ts +14 -0
- package/dist/features/claude-code-command-loader/index.d.ts +2 -0
- package/dist/features/claude-code-command-loader/loader.d.ts +6 -0
- package/dist/features/claude-code-command-loader/types.d.ts +42 -0
- package/dist/features/claude-code-mcp-loader/env-expander.d.ts +2 -0
- package/dist/features/claude-code-mcp-loader/index.d.ts +10 -0
- package/dist/features/claude-code-mcp-loader/loader.d.ts +4 -0
- package/dist/features/claude-code-mcp-loader/loader.test.d.ts +1 -0
- package/dist/features/claude-code-mcp-loader/transformer.d.ts +2 -0
- package/dist/features/claude-code-mcp-loader/types.d.ts +39 -0
- package/dist/features/claude-code-plugin-loader/index.d.ts +3 -0
- package/dist/features/claude-code-plugin-loader/loader.d.ts +20 -0
- package/dist/features/claude-code-plugin-loader/types.d.ts +186 -0
- package/dist/features/claude-code-session-state/index.d.ts +1 -0
- package/dist/features/claude-code-session-state/state.d.ts +9 -0
- package/dist/features/claude-code-session-state/state.test.d.ts +1 -0
- package/dist/features/context-injector/collector.d.ts +11 -0
- package/dist/features/context-injector/collector.test.d.ts +1 -0
- package/dist/features/context-injector/index.d.ts +3 -0
- package/dist/features/context-injector/injector.d.ts +39 -0
- package/dist/features/context-injector/injector.test.d.ts +1 -0
- package/dist/features/context-injector/types.d.ts +83 -0
- package/dist/features/hook-message-injector/constants.d.ts +3 -0
- package/dist/features/hook-message-injector/index.d.ts +4 -0
- package/dist/features/hook-message-injector/injector.d.ts +19 -0
- package/dist/features/hook-message-injector/types.d.ts +46 -0
- package/dist/features/mcp-oauth/callback-server.d.ts +11 -0
- package/dist/features/mcp-oauth/callback-server.test.d.ts +1 -0
- package/dist/features/mcp-oauth/dcr.d.ts +34 -0
- package/dist/features/mcp-oauth/dcr.test.d.ts +1 -0
- package/dist/features/mcp-oauth/discovery.d.ts +8 -0
- package/dist/features/mcp-oauth/discovery.test.d.ts +1 -0
- package/dist/features/mcp-oauth/index.d.ts +1 -0
- package/dist/features/mcp-oauth/provider.d.ts +41 -0
- package/dist/features/mcp-oauth/provider.test.d.ts +1 -0
- package/dist/features/mcp-oauth/resource-indicator.d.ts +2 -0
- package/dist/features/mcp-oauth/resource-indicator.test.d.ts +1 -0
- package/dist/features/mcp-oauth/schema.d.ts +6 -0
- package/dist/features/mcp-oauth/schema.test.d.ts +1 -0
- package/dist/features/mcp-oauth/step-up.d.ts +8 -0
- package/dist/features/mcp-oauth/step-up.test.d.ts +1 -0
- package/dist/features/mcp-oauth/storage.d.ts +17 -0
- package/dist/features/mcp-oauth/storage.test.d.ts +1 -0
- package/dist/features/opencode-skill-loader/async-loader.d.ts +6 -0
- package/dist/features/opencode-skill-loader/async-loader.test.d.ts +1 -0
- package/dist/features/opencode-skill-loader/blocking.d.ts +2 -0
- package/dist/features/opencode-skill-loader/blocking.test.d.ts +1 -0
- package/dist/features/opencode-skill-loader/discover-worker.d.ts +1 -0
- package/dist/features/opencode-skill-loader/index.d.ts +4 -0
- package/dist/features/opencode-skill-loader/loader.d.ts +16 -0
- package/dist/features/opencode-skill-loader/loader.test.d.ts +1 -0
- package/dist/features/opencode-skill-loader/merger.d.ts +7 -0
- package/dist/features/opencode-skill-loader/skill-content.d.ts +21 -0
- package/dist/features/opencode-skill-loader/skill-content.test.d.ts +1 -0
- package/dist/features/opencode-skill-loader/types.d.ts +34 -0
- package/dist/features/sisyphus-swarm/mailbox/types.d.ts +191 -0
- package/dist/features/sisyphus-swarm/mailbox/types.test.d.ts +1 -0
- package/dist/features/sisyphus-tasks/storage.d.ts +9 -0
- package/dist/features/sisyphus-tasks/storage.test.d.ts +1 -0
- package/dist/features/sisyphus-tasks/types.d.ts +47 -0
- package/dist/features/sisyphus-tasks/types.test.d.ts +1 -0
- package/dist/features/skill-mcp-manager/env-cleaner.d.ts +2 -0
- package/dist/features/skill-mcp-manager/env-cleaner.test.d.ts +1 -0
- package/dist/features/skill-mcp-manager/index.d.ts +2 -0
- package/dist/features/skill-mcp-manager/manager.d.ts +50 -0
- package/dist/features/skill-mcp-manager/manager.test.d.ts +1 -0
- package/dist/features/skill-mcp-manager/types.d.ts +11 -0
- package/dist/features/task-toast-manager/index.d.ts +2 -0
- package/dist/features/task-toast-manager/manager.d.ts +58 -0
- package/dist/features/task-toast-manager/manager.test.d.ts +1 -0
- package/dist/features/task-toast-manager/types.d.ts +24 -0
- package/dist/features/tmux-subagent/action-executor.d.ts +22 -0
- package/dist/features/tmux-subagent/decision-engine.d.ts +38 -0
- package/dist/features/tmux-subagent/decision-engine.test.d.ts +1 -0
- package/dist/features/tmux-subagent/index.d.ts +5 -0
- package/dist/features/tmux-subagent/manager.d.ts +59 -0
- package/dist/features/tmux-subagent/manager.test.d.ts +1 -0
- package/dist/features/tmux-subagent/pane-state-querier.d.ts +2 -0
- package/dist/features/tmux-subagent/types.d.ts +53 -0
- package/dist/hooks/agent-usage-reminder/constants.d.ts +5 -0
- package/dist/hooks/agent-usage-reminder/index.d.ts +22 -0
- package/dist/hooks/agent-usage-reminder/storage.d.ts +4 -0
- package/dist/hooks/agent-usage-reminder/types.d.ts +6 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/executor.d.ts +4 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/executor.test.d.ts +1 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/index.d.ts +16 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/parser.d.ts +2 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/pruning-deduplication.d.ts +7 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/pruning-deduplication.test.d.ts +1 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/pruning-types.d.ts +36 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/storage.d.ts +28 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/storage.test.d.ts +1 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/types.d.ts +37 -0
- package/dist/hooks/atlas/index.d.ts +35 -0
- package/dist/hooks/atlas/index.test.d.ts +1 -0
- package/dist/hooks/auto-slash-command/constants.d.ts +5 -0
- package/dist/hooks/auto-slash-command/detector.d.ts +9 -0
- package/dist/hooks/auto-slash-command/detector.test.d.ts +1 -0
- package/dist/hooks/auto-slash-command/executor.d.ts +11 -0
- package/dist/hooks/auto-slash-command/index.d.ts +12 -0
- package/dist/hooks/auto-slash-command/index.test.d.ts +1 -0
- package/dist/hooks/auto-slash-command/types.d.ts +27 -0
- package/dist/hooks/auto-update-checker/cache.d.ts +3 -0
- package/dist/hooks/auto-update-checker/checker.d.ts +20 -0
- package/dist/hooks/auto-update-checker/checker.test.d.ts +1 -0
- package/dist/hooks/auto-update-checker/constants.d.ts +10 -0
- package/dist/hooks/auto-update-checker/index.d.ts +17 -0
- package/dist/hooks/auto-update-checker/index.test.d.ts +1 -0
- package/dist/hooks/auto-update-checker/types.d.ts +25 -0
- package/dist/hooks/background-notification/index.d.ts +18 -0
- package/dist/hooks/background-notification/types.d.ts +4 -0
- package/dist/hooks/category-skill-reminder/index.d.ts +22 -0
- package/dist/hooks/category-skill-reminder/index.test.d.ts +1 -0
- package/dist/hooks/claude-code-hooks/config-loader.d.ts +13 -0
- package/dist/hooks/claude-code-hooks/config.d.ts +3 -0
- package/dist/hooks/claude-code-hooks/index.d.ts +48 -0
- package/dist/hooks/claude-code-hooks/plugin-config.d.ts +8 -0
- package/dist/hooks/claude-code-hooks/post-tool-use.d.ts +40 -0
- package/dist/hooks/claude-code-hooks/pre-compact.d.ts +16 -0
- package/dist/hooks/claude-code-hooks/pre-tool-use.d.ts +25 -0
- package/dist/hooks/claude-code-hooks/stop.d.ts +20 -0
- package/dist/hooks/claude-code-hooks/todo.d.ts +12 -0
- package/dist/hooks/claude-code-hooks/tool-input-cache.d.ts +5 -0
- package/dist/hooks/claude-code-hooks/transcript.d.ts +34 -0
- package/dist/hooks/claude-code-hooks/types.d.ts +183 -0
- package/dist/hooks/claude-code-hooks/user-prompt-submit.d.ts +22 -0
- package/dist/hooks/comment-checker/cli.d.ts +52 -0
- package/dist/hooks/comment-checker/cli.test.d.ts +1 -0
- package/dist/hooks/comment-checker/downloader.d.ts +25 -0
- package/dist/hooks/comment-checker/index.d.ts +19 -0
- package/dist/hooks/comment-checker/types.d.ts +31 -0
- package/dist/hooks/compaction-context-injector/index.d.ts +8 -0
- package/dist/hooks/compaction-context-injector/index.test.d.ts +1 -0
- package/dist/hooks/context-window-monitor.d.ts +18 -0
- package/dist/hooks/delegate-task-retry/index.d.ts +24 -0
- package/dist/hooks/delegate-task-retry/index.test.d.ts +1 -0
- package/dist/hooks/directory-agents-injector/constants.d.ts +3 -0
- package/dist/hooks/directory-agents-injector/index.d.ts +26 -0
- package/dist/hooks/directory-agents-injector/storage.d.ts +1 -0
- package/dist/hooks/directory-readme-injector/constants.d.ts +3 -0
- package/dist/hooks/directory-readme-injector/index.d.ts +26 -0
- package/dist/hooks/directory-readme-injector/storage.d.ts +1 -0
- package/dist/hooks/edit-error-recovery/index.d.ts +31 -0
- package/dist/hooks/edit-error-recovery/index.test.d.ts +1 -0
- package/dist/hooks/empty-task-response-detector.d.ts +12 -0
- package/dist/hooks/index.d.ts +35 -0
- package/dist/hooks/interactive-bash-session/constants.d.ts +4 -0
- package/dist/hooks/interactive-bash-session/index.d.ts +23 -0
- package/dist/hooks/interactive-bash-session/storage.d.ts +4 -0
- package/dist/hooks/interactive-bash-session/types.d.ts +10 -0
- package/dist/hooks/keyword-detector/analyze/default.d.ts +12 -0
- package/dist/hooks/keyword-detector/analyze/index.d.ts +1 -0
- package/dist/hooks/keyword-detector/constants.d.ts +10 -0
- package/dist/hooks/keyword-detector/detector.d.ts +11 -0
- package/dist/hooks/keyword-detector/index.d.ts +23 -0
- package/dist/hooks/keyword-detector/index.test.d.ts +1 -0
- package/dist/hooks/keyword-detector/search/default.d.ts +12 -0
- package/dist/hooks/keyword-detector/search/index.d.ts +1 -0
- package/dist/hooks/keyword-detector/types.d.ts +4 -0
- package/dist/hooks/keyword-detector/ultrawork/default.d.ts +10 -0
- package/dist/hooks/keyword-detector/ultrawork/gpt5.2.d.ts +16 -0
- package/dist/hooks/keyword-detector/ultrawork/index.d.ts +17 -0
- package/dist/hooks/keyword-detector/ultrawork/planner.d.ts +6 -0
- package/dist/hooks/keyword-detector/ultrawork/utils.d.ts +24 -0
- package/dist/hooks/non-interactive-env/constants.d.ts +34 -0
- package/dist/hooks/non-interactive-env/detector.d.ts +1 -0
- package/dist/hooks/non-interactive-env/index.d.ts +14 -0
- package/dist/hooks/non-interactive-env/index.test.d.ts +1 -0
- package/dist/hooks/non-interactive-env/types.d.ts +3 -0
- package/dist/hooks/prometheus-md-only/constants.d.ts +7 -0
- package/dist/hooks/prometheus-md-only/index.d.ts +12 -0
- package/dist/hooks/prometheus-md-only/index.test.d.ts +1 -0
- package/dist/hooks/question-label-truncator/index.d.ts +7 -0
- package/dist/hooks/question-label-truncator/index.test.d.ts +1 -0
- package/dist/hooks/ralph-loop/constants.d.ts +5 -0
- package/dist/hooks/ralph-loop/index.d.ts +21 -0
- package/dist/hooks/ralph-loop/index.test.d.ts +1 -0
- package/dist/hooks/ralph-loop/storage.d.ts +6 -0
- package/dist/hooks/ralph-loop/types.d.ts +17 -0
- package/dist/hooks/rules-injector/constants.d.ts +8 -0
- package/dist/hooks/rules-injector/finder.d.ts +33 -0
- package/dist/hooks/rules-injector/finder.test.d.ts +1 -0
- package/dist/hooks/rules-injector/index.d.ts +26 -0
- package/dist/hooks/rules-injector/matcher.d.ts +21 -0
- package/dist/hooks/rules-injector/output-path.d.ts +5 -0
- package/dist/hooks/rules-injector/output-path.test.d.ts +1 -0
- package/dist/hooks/rules-injector/parser.d.ts +18 -0
- package/dist/hooks/rules-injector/parser.test.d.ts +1 -0
- package/dist/hooks/rules-injector/storage.d.ts +9 -0
- package/dist/hooks/rules-injector/types.d.ts +54 -0
- package/dist/hooks/session-notification-utils.d.ts +9 -0
- package/dist/hooks/session-notification.d.ts +20 -0
- package/dist/hooks/session-notification.test.d.ts +1 -0
- package/dist/hooks/session-recovery/constants.d.ts +6 -0
- package/dist/hooks/session-recovery/index.d.ts +22 -0
- package/dist/hooks/session-recovery/index.test.d.ts +1 -0
- package/dist/hooks/session-recovery/storage.d.ts +19 -0
- package/dist/hooks/session-recovery/types.d.ts +90 -0
- package/dist/hooks/sisyphus-junior-notepad/constants.d.ts +2 -0
- package/dist/hooks/sisyphus-junior-notepad/index.d.ts +12 -0
- package/dist/hooks/start-work/index.d.ts +16 -0
- package/dist/hooks/start-work/index.test.d.ts +1 -0
- package/dist/hooks/stop-continuation-guard/index.d.ts +16 -0
- package/dist/hooks/stop-continuation-guard/index.test.d.ts +1 -0
- package/dist/hooks/subagent-question-blocker/index.d.ts +2 -0
- package/dist/hooks/subagent-question-blocker/index.test.d.ts +1 -0
- package/dist/hooks/task-resume-info/index.d.ts +11 -0
- package/dist/hooks/think-mode/detector.d.ts +5 -0
- package/dist/hooks/think-mode/index.d.ts +14 -0
- package/dist/hooks/think-mode/index.test.d.ts +1 -0
- package/dist/hooks/think-mode/switcher.d.ts +69 -0
- package/dist/hooks/think-mode/switcher.test.d.ts +1 -0
- package/dist/hooks/think-mode/types.d.ts +21 -0
- package/dist/hooks/thinking-block-validator/index.d.ts +30 -0
- package/dist/hooks/todo-continuation-enforcer.d.ts +19 -0
- package/dist/hooks/todo-continuation-enforcer.test.d.ts +1 -0
- package/dist/hooks/tool-output-truncator.d.ts +17 -0
- package/dist/hooks/tool-output-truncator.test.d.ts +1 -0
- package/dist/hooks/unstable-agent-babysitter/index.d.ts +50 -0
- package/dist/hooks/unstable-agent-babysitter/index.test.d.ts +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +76117 -0
- package/dist/index.test.d.ts +1 -0
- package/dist/mcp/context7.d.ts +9 -0
- package/dist/mcp/grep-app.d.ts +6 -0
- package/dist/mcp/index.d.ts +9 -0
- package/dist/mcp/index.test.d.ts +1 -0
- package/dist/mcp/types.d.ts +9 -0
- package/dist/mcp/websearch.d.ts +9 -0
- package/dist/oh-my-parallel-agent-opencode.schema.json +2182 -0
- package/dist/plugin-config.d.ts +4 -0
- package/dist/plugin-config.test.d.ts +1 -0
- package/dist/plugin-handlers/config-handler.d.ts +13 -0
- package/dist/plugin-handlers/config-handler.test.d.ts +1 -0
- package/dist/plugin-handlers/index.d.ts +1 -0
- package/dist/plugin-state.d.ts +6 -0
- package/dist/shared/agent-config-integration.test.d.ts +1 -0
- package/dist/shared/agent-display-names.d.ts +12 -0
- package/dist/shared/agent-display-names.test.d.ts +1 -0
- package/dist/shared/agent-tool-restrictions.d.ts +7 -0
- package/dist/shared/agent-variant.d.ts +9 -0
- package/dist/shared/agent-variant.test.d.ts +1 -0
- package/dist/shared/binary-downloader.d.ts +10 -0
- package/dist/shared/claude-config-dir.d.ts +1 -0
- package/dist/shared/claude-config-dir.test.d.ts +1 -0
- package/dist/shared/command-executor.d.ts +21 -0
- package/dist/shared/config-errors.d.ts +7 -0
- package/dist/shared/connected-providers-cache.d.ts +52 -0
- package/dist/shared/data-path.d.ts +30 -0
- package/dist/shared/deep-merge.d.ts +13 -0
- package/dist/shared/deep-merge.test.d.ts +1 -0
- package/dist/shared/dynamic-truncator.d.ts +27 -0
- package/dist/shared/external-plugin-detector.d.ts +18 -0
- package/dist/shared/external-plugin-detector.test.d.ts +1 -0
- package/dist/shared/file-reference-resolver.d.ts +1 -0
- package/dist/shared/file-utils.d.ts +7 -0
- package/dist/shared/first-message-variant.d.ts +11 -0
- package/dist/shared/first-message-variant.test.d.ts +1 -0
- package/dist/shared/frontmatter.d.ts +7 -0
- package/dist/shared/frontmatter.test.d.ts +1 -0
- package/dist/shared/hook-disabled.d.ts +2 -0
- package/dist/shared/index.d.ts +36 -0
- package/dist/shared/jsonc-parser.d.ts +15 -0
- package/dist/shared/jsonc-parser.test.d.ts +1 -0
- package/dist/shared/logger.d.ts +2 -0
- package/dist/shared/migration.d.ts +32 -0
- package/dist/shared/migration.test.d.ts +1 -0
- package/dist/shared/model-availability.d.ts +19 -0
- package/dist/shared/model-availability.test.d.ts +1 -0
- package/dist/shared/model-requirements.d.ts +13 -0
- package/dist/shared/model-requirements.test.d.ts +1 -0
- package/dist/shared/model-resolution-pipeline.d.ts +24 -0
- package/dist/shared/model-resolver.d.ts +22 -0
- package/dist/shared/model-resolver.test.d.ts +1 -0
- package/dist/shared/model-sanitizer.d.ts +3 -0
- package/dist/shared/model-suggestion-retry.d.ts +24 -0
- package/dist/shared/model-suggestion-retry.test.d.ts +1 -0
- package/dist/shared/ollama-ndjson-parser.d.ts +108 -0
- package/dist/shared/opencode-config-dir.d.ts +19 -0
- package/dist/shared/opencode-config-dir.test.d.ts +1 -0
- package/dist/shared/opencode-version.d.ts +19 -0
- package/dist/shared/opencode-version.test.d.ts +1 -0
- package/dist/shared/pattern-matcher.d.ts +3 -0
- package/dist/shared/permission-compat.d.ts +27 -0
- package/dist/shared/permission-compat.test.d.ts +1 -0
- package/dist/shared/session-cursor.d.ts +13 -0
- package/dist/shared/session-cursor.test.d.ts +1 -0
- package/dist/shared/session-injected-paths.d.ts +10 -0
- package/dist/shared/session-utils.d.ts +2 -0
- package/dist/shared/shell-env.d.ts +41 -0
- package/dist/shared/shell-env.test.d.ts +1 -0
- package/dist/shared/snake-case.d.ts +5 -0
- package/dist/shared/system-directive.d.ts +45 -0
- package/dist/shared/system-directive.test.d.ts +1 -0
- package/dist/shared/tmux/constants.d.ts +5 -0
- package/dist/shared/tmux/index.d.ts +3 -0
- package/dist/shared/tmux/tmux-utils.d.ts +17 -0
- package/dist/shared/tmux/tmux-utils.test.d.ts +1 -0
- package/dist/shared/tmux/types.d.ts +4 -0
- package/dist/shared/tool-name.d.ts +1 -0
- package/dist/shared/zip-extractor.d.ts +1 -0
- package/dist/tools/ast-grep/cli.d.ts +15 -0
- package/dist/tools/ast-grep/constants.d.ts +29 -0
- package/dist/tools/ast-grep/downloader.d.ts +5 -0
- package/dist/tools/ast-grep/index.d.ts +8 -0
- package/dist/tools/ast-grep/tools.d.ts +3 -0
- package/dist/tools/ast-grep/types.d.ts +58 -0
- package/dist/tools/ast-grep/utils.d.ts +5 -0
- package/dist/tools/background-task/constants.d.ts +3 -0
- package/dist/tools/background-task/index.d.ts +4 -0
- package/dist/tools/background-task/tools.d.ts +47 -0
- package/dist/tools/background-task/tools.test.d.ts +1 -0
- package/dist/tools/background-task/types.d.ts +20 -0
- package/dist/tools/call-omo-agent/constants.d.ts +2 -0
- package/dist/tools/call-omo-agent/index.d.ts +3 -0
- package/dist/tools/call-omo-agent/tools.d.ts +3 -0
- package/dist/tools/call-omo-agent/types.d.ts +24 -0
- package/dist/tools/delegate-task/categories.d.ts +17 -0
- package/dist/tools/delegate-task/constants.d.ts +30 -0
- package/dist/tools/delegate-task/executor.d.ts +75 -0
- package/dist/tools/delegate-task/helpers.d.ts +30 -0
- package/dist/tools/delegate-task/index.d.ts +4 -0
- package/dist/tools/delegate-task/prompt-builder.d.ts +6 -0
- package/dist/tools/delegate-task/timing.d.ts +11 -0
- package/dist/tools/delegate-task/tools.d.ts +6 -0
- package/dist/tools/delegate-task/tools.test.d.ts +1 -0
- package/dist/tools/delegate-task/types.d.ts +44 -0
- package/dist/tools/glob/cli.d.ts +11 -0
- package/dist/tools/glob/cli.test.d.ts +1 -0
- package/dist/tools/glob/constants.d.ts +6 -0
- package/dist/tools/glob/index.d.ts +2 -0
- package/dist/tools/glob/tools.d.ts +2 -0
- package/dist/tools/glob/types.d.ts +20 -0
- package/dist/tools/glob/utils.d.ts +2 -0
- package/dist/tools/grep/cli.d.ts +3 -0
- package/dist/tools/grep/constants.d.ts +17 -0
- package/dist/tools/grep/downloader.d.ts +3 -0
- package/dist/tools/grep/downloader.test.d.ts +1 -0
- package/dist/tools/grep/index.d.ts +2 -0
- package/dist/tools/grep/tools.d.ts +2 -0
- package/dist/tools/grep/types.d.ts +36 -0
- package/dist/tools/grep/utils.d.ts +3 -0
- package/dist/tools/index.d.ts +15 -0
- package/dist/tools/interactive-bash/constants.d.ts +3 -0
- package/dist/tools/interactive-bash/index.d.ts +3 -0
- package/dist/tools/interactive-bash/tools.d.ts +7 -0
- package/dist/tools/interactive-bash/utils.d.ts +3 -0
- package/dist/tools/look-at/constants.d.ts +2 -0
- package/dist/tools/look-at/index.d.ts +3 -0
- package/dist/tools/look-at/tools.d.ts +9 -0
- package/dist/tools/look-at/tools.test.d.ts +1 -0
- package/dist/tools/look-at/types.d.ts +4 -0
- package/dist/tools/lsp/client.d.ts +50 -0
- package/dist/tools/lsp/config.d.ts +17 -0
- package/dist/tools/lsp/config.test.d.ts +1 -0
- package/dist/tools/lsp/constants.d.ts +9 -0
- package/dist/tools/lsp/index.d.ts +6 -0
- package/dist/tools/lsp/tools.d.ts +7 -0
- package/dist/tools/lsp/types.d.ts +123 -0
- package/dist/tools/lsp/utils.d.ts +26 -0
- package/dist/tools/session-manager/constants.d.ts +12 -0
- package/dist/tools/session-manager/index.d.ts +3 -0
- package/dist/tools/session-manager/storage.d.ts +12 -0
- package/dist/tools/session-manager/storage.test.d.ts +1 -0
- package/dist/tools/session-manager/tools.d.ts +5 -0
- package/dist/tools/session-manager/tools.test.d.ts +1 -0
- package/dist/tools/session-manager/types.d.ts +89 -0
- package/dist/tools/session-manager/utils.d.ts +11 -0
- package/dist/tools/session-manager/utils.test.d.ts +1 -0
- package/dist/tools/skill/constants.d.ts +3 -0
- package/dist/tools/skill/index.d.ts +3 -0
- package/dist/tools/skill/tools.d.ts +4 -0
- package/dist/tools/skill/tools.test.d.ts +1 -0
- package/dist/tools/skill/types.d.ts +28 -0
- package/dist/tools/skill-mcp/constants.d.ts +2 -0
- package/dist/tools/skill-mcp/index.d.ts +3 -0
- package/dist/tools/skill-mcp/tools.d.ts +11 -0
- package/dist/tools/skill-mcp/tools.test.d.ts +1 -0
- package/dist/tools/skill-mcp/types.d.ts +8 -0
- package/dist/tools/slashcommand/index.d.ts +2 -0
- package/dist/tools/slashcommand/tools.d.ts +5 -0
- package/dist/tools/slashcommand/tools.test.d.ts +1 -0
- package/dist/tools/slashcommand/types.d.ts +24 -0
- package/package.json +77 -6
- package/postinstall.mjs +43 -0
- package/__tests__/agents.test.ts +0 -107
- package/__tests__/config-handler.test.ts +0 -198
- package/__tests__/dynamic-agent.test.ts +0 -68
- package/__tests__/schema.test.ts +0 -149
- package/__tests__/setup.test.ts +0 -16
- package/bun.lock +0 -29
- package/oh-my-parallel-agent-opencode.example.json +0 -7
- package/src/agents/explore.ts +0 -117
- package/src/agents/index.ts +0 -69
- package/src/agents/librarian.ts +0 -302
- package/src/agents/metis.ts +0 -341
- package/src/agents/momus.ts +0 -237
- package/src/agents/types.ts +0 -95
- package/src/config/schema.ts +0 -15
- package/src/index.ts +0 -116
- package/src/plugin-handlers/config-handler.ts +0 -129
- package/src/utils/dynamic-agent.ts +0 -37
- package/tsconfig.json +0 -19
package/LICENSE.md
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# License
|
|
2
|
+
|
|
3
|
+
Portions of this software are licensed as follows:
|
|
4
|
+
|
|
5
|
+
- All third party components incorporated into the oh-my-parallel-agent-opencode Software are licensed under the original license
|
|
6
|
+
provided by the owner of the applicable component.
|
|
7
|
+
- Content outside of the above mentioned files or restrictions is available under the "Sustainable Use
|
|
8
|
+
License" as defined below.
|
|
9
|
+
|
|
10
|
+
## Sustainable Use License
|
|
11
|
+
|
|
12
|
+
Version 1.0
|
|
13
|
+
|
|
14
|
+
### Acceptance
|
|
15
|
+
|
|
16
|
+
By using the software, you agree to all of the terms and conditions below.
|
|
17
|
+
|
|
18
|
+
### Copyright License
|
|
19
|
+
|
|
20
|
+
The licensor grants you a non-exclusive, royalty-free, worldwide, non-sublicensable, non-transferable license
|
|
21
|
+
to use, copy, distribute, make available, and prepare derivative works of the software, in each case subject
|
|
22
|
+
to the limitations below.
|
|
23
|
+
|
|
24
|
+
### Limitations
|
|
25
|
+
|
|
26
|
+
You may use or modify the software only for your own internal business purposes or for non-commercial or
|
|
27
|
+
personal use. You may distribute the software or provide it to others only if you do so free of charge for
|
|
28
|
+
non-commercial purposes. You may not alter, remove, or obscure any licensing, copyright, or other notices of
|
|
29
|
+
the licensor in the software. Any use of the licensor's trademarks is subject to applicable law.
|
|
30
|
+
|
|
31
|
+
### Patents
|
|
32
|
+
|
|
33
|
+
The licensor grants you a license, under any patent claims the licensor can license, or becomes able to
|
|
34
|
+
license, to make, have made, use, sell, offer for sale, import and have imported the software, in each case
|
|
35
|
+
subject to the limitations and conditions in this license. This license does not cover any patent claims that
|
|
36
|
+
you cause to be infringed by modifications or additions to the software. If you or your company make any
|
|
37
|
+
written claim that the software infringes or contributes to infringement of any patent, your patent license
|
|
38
|
+
for the software granted under these terms ends immediately. If your company makes such a claim, your patent
|
|
39
|
+
license ends immediately for work on behalf of your company.
|
|
40
|
+
|
|
41
|
+
### Notices
|
|
42
|
+
|
|
43
|
+
You must ensure that anyone who gets a copy of any part of the software from you also gets a copy of these
|
|
44
|
+
terms. If you modify the software, you must include in any modified copies of the software a prominent notice
|
|
45
|
+
stating that you have modified the software.
|
|
46
|
+
|
|
47
|
+
### No Other Rights
|
|
48
|
+
|
|
49
|
+
These terms do not imply any licenses other than those expressly granted in these terms.
|
|
50
|
+
|
|
51
|
+
### Termination
|
|
52
|
+
|
|
53
|
+
If you use the software in violation of these terms, such use is not licensed, and your license will
|
|
54
|
+
automatically terminate. If the licensor provides you with a notice of your violation, and you cease all
|
|
55
|
+
violation of this license no later than 30 days after you receive that notice, your license will be reinstated
|
|
56
|
+
retroactively. However, if you violate these terms after such reinstatement, any additional violation of these
|
|
57
|
+
terms will cause your license to terminate automatically and permanently.
|
|
58
|
+
|
|
59
|
+
### No Liability
|
|
60
|
+
|
|
61
|
+
As far as the law allows, the software comes as is, without any warranty or condition, and the licensor will
|
|
62
|
+
not be liable to you for any damages arising out of these terms or the use or nature of the software, under
|
|
63
|
+
any kind of legal claim.
|
|
64
|
+
|
|
65
|
+
### Definitions
|
|
66
|
+
|
|
67
|
+
The "licensor" is the entity offering these terms.
|
|
68
|
+
|
|
69
|
+
The "software" is the software the licensor makes available under these terms, including any portion of it.
|
|
70
|
+
|
|
71
|
+
"You" refers to the individual or entity agreeing to these terms.
|
|
72
|
+
|
|
73
|
+
"Your company" is any legal entity, sole proprietorship, or other kind of organization that you work for, plus
|
|
74
|
+
all organizations that have control over, are under the control of, or are under common control with that
|
|
75
|
+
organization. Control means ownership of substantially all the assets of an entity, or the power to direct its
|
|
76
|
+
management and policies by vote, contract, or otherwise. Control can be direct or indirect.
|
|
77
|
+
|
|
78
|
+
"Your license" is the license granted to you for the software under these terms.
|
|
79
|
+
|
|
80
|
+
"Use" means anything you do with the software requiring your license.
|
|
81
|
+
|
|
82
|
+
"Trademark" means trademarks, service marks, and similar rights.
|
package/README.md
CHANGED
|
@@ -1,77 +1,140 @@
|
|
|
1
1
|
# oh-my-parallel-agent-opencode
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode)에서 포크된 병렬 에이전트 플러그인입니다.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**momus-1, momus-2, metis-1, librarian-1, explore-1** 등 변형 에이전트를 지원합니다.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- **병렬 실행 지원**: 생성된 에이전트들은 `delegate_task` (또는 `call_omo_agent`)를 통해 백그라운드에서 병렬로 실행될 수 있습니다.
|
|
9
|
-
- **모델 자유 선택**: 각 에이전트마다 서로 다른 LLM 모델(OpenAI, Anthropic, Google 등)을 할당할 수 있습니다.
|
|
7
|
+
## 핵심 기능
|
|
10
8
|
|
|
11
|
-
|
|
9
|
+
- **4개 에이전트의 변형 지원**: `momus`, `metis`, `librarian`, `explore`
|
|
10
|
+
- **변형 패턴**: `{agent}-{n}` (예: `momus-1`, `metis-2`, `librarian-3`)
|
|
11
|
+
- **동일 프롬프트, 다른 설정**: 변형 에이전트는 base 에이전트와 동일한 프롬프트를 사용하지만 model/variant를 다르게 설정 가능
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
## 설치
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
|
|
17
|
-
npm link oh-my-parallel-agent-opencode
|
|
16
|
+
npm install oh-my-parallel-agent-opencode
|
|
18
17
|
```
|
|
19
18
|
|
|
20
|
-
## 설정
|
|
19
|
+
## 설정
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
### 설정 파일 형식 (`oh-my-parallel-agent.json`)
|
|
21
|
+
### 1. OpenCode에 플러그인 등록
|
|
25
22
|
|
|
23
|
+
`~/.config/opencode/opencode.json`:
|
|
26
24
|
```json
|
|
27
25
|
{
|
|
26
|
+
"plugin": ["oh-my-parallel-agent-opencode"]
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### 2. 플러그인 설정 파일 생성
|
|
31
|
+
|
|
32
|
+
`~/.config/opencode/oh-my-parallel-agent-opencode.jsonc`:
|
|
33
|
+
```jsonc
|
|
34
|
+
{
|
|
35
|
+
"$schema": "https://raw.githubusercontent.com/noseung-gyeong/oh-my-parallel-agent-opencode/master/assets/oh-my-parallel-agent-opencode.schema.json",
|
|
36
|
+
|
|
37
|
+
// 변형 에이전트 정의
|
|
28
38
|
"agents": {
|
|
39
|
+
// momus-1: Claude Sonnet 사용
|
|
29
40
|
"momus-1": {
|
|
30
|
-
"model": "
|
|
31
|
-
"temperature": 0.7
|
|
41
|
+
"model": "claude-sonnet-4-20250514"
|
|
32
42
|
},
|
|
43
|
+
|
|
44
|
+
// momus-2: GPT-4o 사용
|
|
33
45
|
"momus-2": {
|
|
34
|
-
"model": "
|
|
35
|
-
"prompt_append": "항상 비판적인 시각으로 검토해주세요."
|
|
46
|
+
"model": "gpt-4o"
|
|
36
47
|
},
|
|
37
|
-
|
|
38
|
-
|
|
48
|
+
|
|
49
|
+
// metis-1: 다른 모델로
|
|
50
|
+
"metis-1": {
|
|
51
|
+
"model": "gemini-2.5-pro"
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
// librarian-1, explore-1 등도 동일하게 정의
|
|
55
|
+
"librarian-1": {
|
|
56
|
+
"model": "claude-haiku-4-20250514"
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
"explore-1": {
|
|
60
|
+
"model": "claude-haiku-4-20250514"
|
|
39
61
|
}
|
|
40
62
|
}
|
|
41
63
|
}
|
|
42
64
|
```
|
|
43
65
|
|
|
44
|
-
|
|
45
|
-
- 예: `momus-1`, `explore-web`, `librarian-docs`
|
|
46
|
-
- **지원하는 기본 에이전트**: `librarian`, `explore`, `metis`, `momus`
|
|
66
|
+
## 사용법
|
|
47
67
|
|
|
48
|
-
|
|
68
|
+
### delegate_task에서 변형 에이전트 호출
|
|
49
69
|
|
|
50
|
-
|
|
70
|
+
```typescript
|
|
71
|
+
// momus-1 호출 (momus 프롬프트 + momus-1 설정 사용)
|
|
72
|
+
delegate_task(
|
|
73
|
+
subagent_type="momus-1",
|
|
74
|
+
prompt="계획을 검토해주세요"
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
// momus-2 호출 (momus 프롬프트 + momus-2 설정 사용)
|
|
78
|
+
delegate_task(
|
|
79
|
+
subagent_type="momus-2",
|
|
80
|
+
prompt="다른 관점에서 검토해주세요"
|
|
81
|
+
)
|
|
82
|
+
```
|
|
51
83
|
|
|
52
|
-
###
|
|
84
|
+
### 병렬로 여러 변형 에이전트 실행
|
|
53
85
|
|
|
54
86
|
```typescript
|
|
55
|
-
//
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
prompt: "현재 작성된 계획서의 논리적 허점을 찾아줘.",
|
|
59
|
-
run_in_background: true
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
await ctx.callTool("delegate_task", {
|
|
63
|
-
subagent_type: "momus-2",
|
|
64
|
-
prompt: "현재 작성된 계획서의 논리적 허점을 찾아줘.",
|
|
65
|
-
run_in_background: true
|
|
66
|
-
});
|
|
87
|
+
// 같은 작업을 다른 모델로 병렬 실행
|
|
88
|
+
delegate_task(subagent_type="momus-1", run_in_background=true, prompt="...")
|
|
89
|
+
delegate_task(subagent_type="momus-2", run_in_background=true, prompt="...")
|
|
67
90
|
```
|
|
68
91
|
|
|
69
|
-
|
|
92
|
+
## 지원 에이전트
|
|
70
93
|
|
|
71
|
-
|
|
94
|
+
| Base 에이전트 | 변형 패턴 | 설명 |
|
|
95
|
+
|--------------|----------|------|
|
|
96
|
+
| `momus` | `momus-1`, `momus-2`, ... | 계획 검토 에이전트 |
|
|
97
|
+
| `metis` | `metis-1`, `metis-2`, ... | 사전 계획 컨설턴트 |
|
|
98
|
+
| `librarian` | `librarian-1`, `librarian-2`, ... | 문서/코드 검색 에이전트 |
|
|
99
|
+
| `explore` | `explore-1`, `explore-2`, ... | 코드베이스 탐색 에이전트 |
|
|
72
100
|
|
|
73
|
-
|
|
74
|
-
|
|
101
|
+
## 동작 원리
|
|
102
|
+
|
|
103
|
+
1. `delegate_task(subagent_type="momus-1", ...)`로 호출
|
|
104
|
+
2. 플러그인이 `momus-1`에서 base 에이전트 `momus` 파싱
|
|
105
|
+
3. `momus`의 프롬프트/팩토리 사용
|
|
106
|
+
4. 설정 파일에서 `momus-1`의 model/variant 적용
|
|
107
|
+
5. 에이전트 실행
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
사용자 → delegate_task("momus-1")
|
|
111
|
+
↓
|
|
112
|
+
플러그인 → resolveBaseAgent("momus-1") → "momus"
|
|
113
|
+
↓
|
|
114
|
+
→ momus 프롬프트 로드
|
|
115
|
+
→ momus-1 설정 (model 등) 적용
|
|
116
|
+
↓
|
|
117
|
+
실행 ←───┘
|
|
75
118
|
```
|
|
76
119
|
|
|
77
|
-
|
|
120
|
+
## oh-my-opencode와의 차이점
|
|
121
|
+
|
|
122
|
+
| 항목 | oh-my-opencode | oh-my-parallel-agent-opencode |
|
|
123
|
+
|------|----------------|-------------------------------|
|
|
124
|
+
| 에이전트 | 전체 (sisyphus, oracle 등) | 4개만 (momus, metis, librarian, explore) |
|
|
125
|
+
| 변형 지원 | ❌ | ✅ `{agent}-{n}` 패턴 |
|
|
126
|
+
| 용도 | 전체 에이전트 시스템 | 병렬 검토/탐색에 특화 |
|
|
127
|
+
|
|
128
|
+
## 설정 파일 위치
|
|
129
|
+
|
|
130
|
+
- **플러그인 설정**: `~/.config/opencode/oh-my-parallel-agent-opencode.jsonc`
|
|
131
|
+
- **OpenCode 설정**: `~/.config/opencode/opencode.json`
|
|
132
|
+
|
|
133
|
+
## 라이선스
|
|
134
|
+
|
|
135
|
+
[SUL-1.0](LICENSE.md)
|
|
136
|
+
|
|
137
|
+
## 관련 프로젝트
|
|
138
|
+
|
|
139
|
+
- [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) - 원본 프로젝트
|
|
140
|
+
- [OpenCode](https://github.com/sst/opencode) - 기반 CLI
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// bin/oh-my-parallel-agent-opencode.js
|
|
3
|
+
// Wrapper script that detects platform and spawns the correct binary
|
|
4
|
+
|
|
5
|
+
import { spawnSync } from "node:child_process";
|
|
6
|
+
import { createRequire } from "node:module";
|
|
7
|
+
import { getPlatformPackage, getBinaryPath } from "./platform.js";
|
|
8
|
+
|
|
9
|
+
const require = createRequire(import.meta.url);
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Detect libc family on Linux
|
|
13
|
+
* @returns {string | null} 'glibc', 'musl', or null if detection fails
|
|
14
|
+
*/
|
|
15
|
+
function getLibcFamily() {
|
|
16
|
+
if (process.platform !== "linux") {
|
|
17
|
+
return undefined; // Not needed on non-Linux
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
try {
|
|
21
|
+
const detectLibc = require("detect-libc");
|
|
22
|
+
return detectLibc.familySync();
|
|
23
|
+
} catch {
|
|
24
|
+
// detect-libc not available
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function main() {
|
|
30
|
+
const { platform, arch } = process;
|
|
31
|
+
const libcFamily = getLibcFamily();
|
|
32
|
+
|
|
33
|
+
// Get platform package name
|
|
34
|
+
let pkg;
|
|
35
|
+
try {
|
|
36
|
+
pkg = getPlatformPackage({ platform, arch, libcFamily });
|
|
37
|
+
} catch (error) {
|
|
38
|
+
console.error(`\noh-my-parallel-agent-opencode: ${error.message}\n`);
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Resolve binary path
|
|
43
|
+
const binRelPath = getBinaryPath(pkg, platform);
|
|
44
|
+
|
|
45
|
+
let binPath;
|
|
46
|
+
try {
|
|
47
|
+
binPath = require.resolve(binRelPath);
|
|
48
|
+
} catch {
|
|
49
|
+
console.error(`\noh-my-parallel-agent-opencode: Platform binary not installed.`);
|
|
50
|
+
console.error(`\nYour platform: ${platform}-${arch}${libcFamily === "musl" ? "-musl" : ""}`);
|
|
51
|
+
console.error(`Expected package: ${pkg}`);
|
|
52
|
+
console.error(`\nTo fix, run:`);
|
|
53
|
+
console.error(` npm install ${pkg}\n`);
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Spawn the binary
|
|
58
|
+
const result = spawnSync(binPath, process.argv.slice(2), {
|
|
59
|
+
stdio: "inherit",
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
// Handle spawn errors
|
|
63
|
+
if (result.error) {
|
|
64
|
+
console.error(`\noh-my-parallel-agent-opencode: Failed to execute binary.`);
|
|
65
|
+
console.error(`Error: ${result.error.message}\n`);
|
|
66
|
+
process.exit(2);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Handle signals
|
|
70
|
+
if (result.signal) {
|
|
71
|
+
const signalNum = result.signal === "SIGTERM" ? 15 :
|
|
72
|
+
result.signal === "SIGKILL" ? 9 :
|
|
73
|
+
result.signal === "SIGINT" ? 2 : 1;
|
|
74
|
+
process.exit(128 + signalNum);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
process.exit(result.status ?? 1);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
main();
|
package/bin/platform.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// bin/platform.js
|
|
2
|
+
// Shared platform detection module - used by wrapper and postinstall
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Get the platform-specific package name
|
|
6
|
+
* @param {{ platform: string, arch: string, libcFamily?: string | null }} options
|
|
7
|
+
* @returns {string} Package name like "oh-my-parallel-agent-opencode-darwin-arm64"
|
|
8
|
+
* @throws {Error} If libc cannot be detected on Linux
|
|
9
|
+
*/
|
|
10
|
+
export function getPlatformPackage({ platform, arch, libcFamily }) {
|
|
11
|
+
let suffix = "";
|
|
12
|
+
if (platform === "linux") {
|
|
13
|
+
if (libcFamily === null || libcFamily === undefined) {
|
|
14
|
+
throw new Error(
|
|
15
|
+
"Could not detect libc on Linux. " +
|
|
16
|
+
"Please ensure detect-libc is installed or report this issue."
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
if (libcFamily === "musl") {
|
|
20
|
+
suffix = "-musl";
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Map platform names: win32 -> windows (for package name)
|
|
25
|
+
const os = platform === "win32" ? "windows" : platform;
|
|
26
|
+
return `oh-my-parallel-agent-opencode-${os}-${arch}${suffix}`;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Get the path to the binary within a platform package
|
|
31
|
+
* @param {string} pkg Package name
|
|
32
|
+
* @param {string} platform Process platform
|
|
33
|
+
* @returns {string} Relative path like "oh-my-parallel-agent-opencode-darwin-arm64/bin/oh-my-parallel-agent-opencode"
|
|
34
|
+
*/
|
|
35
|
+
export function getBinaryPath(pkg, platform) {
|
|
36
|
+
const ext = platform === "win32" ? ".exe" : "";
|
|
37
|
+
return `${pkg}/bin/oh-my-parallel-agent-opencode${ext}`;
|
|
38
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
// bin/platform.test.ts
|
|
2
|
+
import { describe, expect, test } from "bun:test";
|
|
3
|
+
import { getPlatformPackage, getBinaryPath } from "./platform.js";
|
|
4
|
+
|
|
5
|
+
describe("getPlatformPackage", () => {
|
|
6
|
+
// #region Darwin platforms
|
|
7
|
+
test("returns darwin-arm64 for macOS ARM64", () => {
|
|
8
|
+
// #given macOS ARM64 platform
|
|
9
|
+
const input = { platform: "darwin", arch: "arm64" };
|
|
10
|
+
|
|
11
|
+
// #when getting platform package
|
|
12
|
+
const result = getPlatformPackage(input);
|
|
13
|
+
|
|
14
|
+
// #then returns correct package name
|
|
15
|
+
expect(result).toBe("oh-my-parallel-agent-opencode-darwin-arm64");
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
test("returns darwin-x64 for macOS Intel", () => {
|
|
19
|
+
// #given macOS x64 platform
|
|
20
|
+
const input = { platform: "darwin", arch: "x64" };
|
|
21
|
+
|
|
22
|
+
// #when getting platform package
|
|
23
|
+
const result = getPlatformPackage(input);
|
|
24
|
+
|
|
25
|
+
// #then returns correct package name
|
|
26
|
+
expect(result).toBe("oh-my-parallel-agent-opencode-darwin-x64");
|
|
27
|
+
});
|
|
28
|
+
// #endregion
|
|
29
|
+
|
|
30
|
+
// #region Linux glibc platforms
|
|
31
|
+
test("returns linux-x64 for Linux x64 with glibc", () => {
|
|
32
|
+
// #given Linux x64 with glibc
|
|
33
|
+
const input = { platform: "linux", arch: "x64", libcFamily: "glibc" };
|
|
34
|
+
|
|
35
|
+
// #when getting platform package
|
|
36
|
+
const result = getPlatformPackage(input);
|
|
37
|
+
|
|
38
|
+
// #then returns correct package name
|
|
39
|
+
expect(result).toBe("oh-my-parallel-agent-opencode-linux-x64");
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
test("returns linux-arm64 for Linux ARM64 with glibc", () => {
|
|
43
|
+
// #given Linux ARM64 with glibc
|
|
44
|
+
const input = { platform: "linux", arch: "arm64", libcFamily: "glibc" };
|
|
45
|
+
|
|
46
|
+
// #when getting platform package
|
|
47
|
+
const result = getPlatformPackage(input);
|
|
48
|
+
|
|
49
|
+
// #then returns correct package name
|
|
50
|
+
expect(result).toBe("oh-my-parallel-agent-opencode-linux-arm64");
|
|
51
|
+
});
|
|
52
|
+
// #endregion
|
|
53
|
+
|
|
54
|
+
// #region Linux musl platforms
|
|
55
|
+
test("returns linux-x64-musl for Alpine x64", () => {
|
|
56
|
+
// #given Linux x64 with musl (Alpine)
|
|
57
|
+
const input = { platform: "linux", arch: "x64", libcFamily: "musl" };
|
|
58
|
+
|
|
59
|
+
// #when getting platform package
|
|
60
|
+
const result = getPlatformPackage(input);
|
|
61
|
+
|
|
62
|
+
// #then returns correct package name with musl suffix
|
|
63
|
+
expect(result).toBe("oh-my-parallel-agent-opencode-linux-x64-musl");
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
test("returns linux-arm64-musl for Alpine ARM64", () => {
|
|
67
|
+
// #given Linux ARM64 with musl (Alpine)
|
|
68
|
+
const input = { platform: "linux", arch: "arm64", libcFamily: "musl" };
|
|
69
|
+
|
|
70
|
+
// #when getting platform package
|
|
71
|
+
const result = getPlatformPackage(input);
|
|
72
|
+
|
|
73
|
+
// #then returns correct package name with musl suffix
|
|
74
|
+
expect(result).toBe("oh-my-parallel-agent-opencode-linux-arm64-musl");
|
|
75
|
+
});
|
|
76
|
+
// #endregion
|
|
77
|
+
|
|
78
|
+
// #region Windows platform
|
|
79
|
+
test("returns windows-x64 for Windows", () => {
|
|
80
|
+
// #given Windows x64 platform (win32 is Node's platform name)
|
|
81
|
+
const input = { platform: "win32", arch: "x64" };
|
|
82
|
+
|
|
83
|
+
// #when getting platform package
|
|
84
|
+
const result = getPlatformPackage(input);
|
|
85
|
+
|
|
86
|
+
// #then returns correct package name with 'windows' not 'win32'
|
|
87
|
+
expect(result).toBe("oh-my-parallel-agent-opencode-windows-x64");
|
|
88
|
+
});
|
|
89
|
+
// #endregion
|
|
90
|
+
|
|
91
|
+
// #region Error cases
|
|
92
|
+
test("throws error for Linux with null libcFamily", () => {
|
|
93
|
+
// #given Linux platform with null libc detection
|
|
94
|
+
const input = { platform: "linux", arch: "x64", libcFamily: null };
|
|
95
|
+
|
|
96
|
+
// #when getting platform package
|
|
97
|
+
// #then throws descriptive error
|
|
98
|
+
expect(() => getPlatformPackage(input)).toThrow("Could not detect libc");
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
test("throws error for Linux with undefined libcFamily", () => {
|
|
102
|
+
// #given Linux platform with undefined libc
|
|
103
|
+
const input = { platform: "linux", arch: "x64", libcFamily: undefined };
|
|
104
|
+
|
|
105
|
+
// #when getting platform package
|
|
106
|
+
// #then throws descriptive error
|
|
107
|
+
expect(() => getPlatformPackage(input)).toThrow("Could not detect libc");
|
|
108
|
+
});
|
|
109
|
+
// #endregion
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
describe("getBinaryPath", () => {
|
|
113
|
+
test("returns path without .exe for Unix platforms", () => {
|
|
114
|
+
// #given Unix platform package
|
|
115
|
+
const pkg = "oh-my-parallel-agent-opencode-darwin-arm64";
|
|
116
|
+
const platform = "darwin";
|
|
117
|
+
|
|
118
|
+
// #when getting binary path
|
|
119
|
+
const result = getBinaryPath(pkg, platform);
|
|
120
|
+
|
|
121
|
+
// #then returns path without extension
|
|
122
|
+
expect(result).toBe("oh-my-parallel-agent-opencode-darwin-arm64/bin/oh-my-parallel-agent-opencode");
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
test("returns path with .exe for Windows", () => {
|
|
126
|
+
// #given Windows platform package
|
|
127
|
+
const pkg = "oh-my-parallel-agent-opencode-windows-x64";
|
|
128
|
+
const platform = "win32";
|
|
129
|
+
|
|
130
|
+
// #when getting binary path
|
|
131
|
+
const result = getBinaryPath(pkg, platform);
|
|
132
|
+
|
|
133
|
+
// #then returns path with .exe extension
|
|
134
|
+
expect(result).toBe("oh-my-parallel-agent-opencode-windows-x64/bin/oh-my-parallel-agent-opencode.exe");
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
test("returns path without .exe for Linux", () => {
|
|
138
|
+
// #given Linux platform package
|
|
139
|
+
const pkg = "oh-my-parallel-agent-opencode-linux-x64";
|
|
140
|
+
const platform = "linux";
|
|
141
|
+
|
|
142
|
+
// #when getting binary path
|
|
143
|
+
const result = getBinaryPath(pkg, platform);
|
|
144
|
+
|
|
145
|
+
// #then returns path without extension
|
|
146
|
+
expect(result).toBe("oh-my-parallel-agent-opencode-linux-x64/bin/oh-my-parallel-agent-opencode");
|
|
147
|
+
});
|
|
148
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { AgentConfig } from "@opencode-ai/sdk";
|
|
2
|
+
import type { AgentPromptMetadata } from "./types";
|
|
3
|
+
import type { AvailableAgent, AvailableSkill } from "./dynamic-agent-prompt-builder";
|
|
4
|
+
import type { CategoryConfig } from "../config/schema";
|
|
5
|
+
/**
|
|
6
|
+
* Atlas - Master Orchestrator Agent
|
|
7
|
+
*
|
|
8
|
+
* Orchestrates work via delegate_task() to complete ALL tasks in a todo list until fully done.
|
|
9
|
+
* You are the conductor of a symphony of specialized agents.
|
|
10
|
+
*/
|
|
11
|
+
export interface OrchestratorContext {
|
|
12
|
+
model?: string;
|
|
13
|
+
availableAgents?: AvailableAgent[];
|
|
14
|
+
availableSkills?: AvailableSkill[];
|
|
15
|
+
userCategories?: Record<string, CategoryConfig>;
|
|
16
|
+
}
|
|
17
|
+
export declare const ATLAS_SYSTEM_PROMPT = "\n<identity>\nYou are Atlas - the Master Orchestrator from OhMyOpenCode.\n\nIn Greek mythology, Atlas holds up the celestial heavens. You hold up the entire workflow - coordinating every agent, every task, every verification until completion.\n\nYou are a conductor, not a musician. A general, not a soldier. You DELEGATE, COORDINATE, and VERIFY.\nYou never write code yourself. You orchestrate specialists who do.\n</identity>\n\n<mission>\nComplete ALL tasks in a work plan via `delegate_task()` until fully done.\nOne task per delegation. Parallel when independent. Verify everything.\n</mission>\n\n<delegation_system>\n## How to Delegate\n\nUse `delegate_task()` with EITHER category OR agent (mutually exclusive):\n\n```typescript\n// Option A: Category + Skills (spawns Sisyphus-Junior with domain config)\ndelegate_task(\n category=\"[category-name]\",\n load_skills=[\"skill-1\", \"skill-2\"],\n run_in_background=false,\n prompt=\"...\"\n)\n\n// Option B: Specialized Agent (for specific expert tasks)\ndelegate_task(\n subagent_type=\"[agent-name]\",\n load_skills=[],\n run_in_background=false,\n prompt=\"...\"\n)\n```\n\n{CATEGORY_SECTION}\n\n{AGENT_SECTION}\n\n{DECISION_MATRIX}\n\n{SKILLS_SECTION}\n\n{{CATEGORY_SKILLS_DELEGATION_GUIDE}}\n\n## 6-Section Prompt Structure (MANDATORY)\n\nEvery `delegate_task()` prompt MUST include ALL 6 sections:\n\n```markdown\n## 1. TASK\n[Quote EXACT checkbox item. Be obsessively specific.]\n\n## 2. EXPECTED OUTCOME\n- [ ] Files created/modified: [exact paths]\n- [ ] Functionality: [exact behavior]\n- [ ] Verification: `[command]` passes\n\n## 3. REQUIRED TOOLS\n- [tool]: [what to search/check]\n- context7: Look up [library] docs\n- ast-grep: `sg --pattern '[pattern]' --lang [lang]`\n\n## 4. MUST DO\n- Follow pattern in [reference file:lines]\n- Write tests for [specific cases]\n- Append findings to notepad (never overwrite)\n\n## 5. MUST NOT DO\n- Do NOT modify files outside [scope]\n- Do NOT add dependencies\n- Do NOT skip verification\n\n## 6. CONTEXT\n### Notepad Paths\n- READ: .sisyphus/notepads/{plan-name}/*.md\n- WRITE: Append to appropriate category\n\n### Inherited Wisdom\n[From notepad - conventions, gotchas, decisions]\n\n### Dependencies\n[What previous tasks built]\n```\n\n**If your prompt is under 30 lines, it's TOO SHORT.**\n</delegation_system>\n\n<workflow>\n## Step 0: Register Tracking\n\n```\nTodoWrite([{\n id: \"orchestrate-plan\",\n content: \"Complete ALL tasks in work plan\",\n status: \"in_progress\",\n priority: \"high\"\n}])\n```\n\n## Step 1: Analyze Plan\n\n1. Read the todo list file\n2. Parse incomplete checkboxes `- [ ]`\n3. Extract parallelizability info from each task\n4. Build parallelization map:\n - Which tasks can run simultaneously?\n - Which have dependencies?\n - Which have file conflicts?\n\nOutput:\n```\nTASK ANALYSIS:\n- Total: [N], Remaining: [M]\n- Parallelizable Groups: [list]\n- Sequential Dependencies: [list]\n```\n\n## Step 2: Initialize Notepad\n\n```bash\nmkdir -p .sisyphus/notepads/{plan-name}\n```\n\nStructure:\n```\n.sisyphus/notepads/{plan-name}/\n learnings.md # Conventions, patterns\n decisions.md # Architectural choices\n issues.md # Problems, gotchas\n problems.md # Unresolved blockers\n```\n\n## Step 3: Execute Tasks\n\n### 3.1 Check Parallelization\nIf tasks can run in parallel:\n- Prepare prompts for ALL parallelizable tasks\n- Invoke multiple `delegate_task()` in ONE message\n- Wait for all to complete\n- Verify all, then continue\n\nIf sequential:\n- Process one at a time\n\n### 3.2 Before Each Delegation\n\n**MANDATORY: Read notepad first**\n```\nglob(\".sisyphus/notepads/{plan-name}/*.md\")\nRead(\".sisyphus/notepads/{plan-name}/learnings.md\")\nRead(\".sisyphus/notepads/{plan-name}/issues.md\")\n```\n\nExtract wisdom and include in prompt.\n\n### 3.3 Invoke delegate_task()\n\n```typescript\ndelegate_task(\n category=\"[category]\",\n load_skills=[\"[relevant-skills]\"],\n run_in_background=false,\n prompt=`[FULL 6-SECTION PROMPT]`\n)\n```\n\n### 3.4 Verify (PROJECT-LEVEL QA)\n\n**After EVERY delegation, YOU must verify:**\n\n1. **Project-level diagnostics**:\n `lsp_diagnostics(filePath=\"src/\")` or `lsp_diagnostics(filePath=\".\")`\n MUST return ZERO errors\n\n2. **Build verification**:\n `bun run build` or `bun run typecheck`\n Exit code MUST be 0\n\n3. **Test verification**:\n `bun test`\n ALL tests MUST pass\n\n4. **Manual inspection**:\n - Read changed files\n - Confirm changes match requirements\n - Check for regressions\n\n**Checklist:**\n```\n[ ] lsp_diagnostics at project level - ZERO errors\n[ ] Build command - exit 0\n[ ] Test suite - all pass\n[ ] Files exist and match requirements\n[ ] No regressions\n```\n\n**If verification fails**: Resume the SAME session with the ACTUAL error output:\n```typescript\ndelegate_task(\n session_id=\"ses_xyz789\", // ALWAYS use the session from the failed task\n load_skills=[...],\n prompt=\"Verification failed: {actual error}. Fix.\"\n)\n```\n\n### 3.5 Handle Failures (USE RESUME)\n\n**CRITICAL: When re-delegating, ALWAYS use `session_id` parameter.**\n\nEvery `delegate_task()` output includes a session_id. STORE IT.\n\nIf task fails:\n1. Identify what went wrong\n2. **Resume the SAME session** - subagent has full context already:\n ```typescript\n delegate_task(\n session_id=\"ses_xyz789\", // Session from failed task\n load_skills=[...],\n prompt=\"FAILED: {error}. Fix by: {specific instruction}\"\n )\n ```\n3. Maximum 3 retry attempts with the SAME session\n4. If blocked after 3 attempts: Document and continue to independent tasks\n\n**Why session_id is MANDATORY for failures:**\n- Subagent already read all files, knows the context\n- No repeated exploration = 70%+ token savings\n- Subagent knows what approaches already failed\n- Preserves accumulated knowledge from the attempt\n\n**NEVER start fresh on failures** - that's like asking someone to redo work while wiping their memory.\n\n### 3.6 Loop Until Done\n\nRepeat Step 3 until all tasks complete.\n\n## Step 4: Final Report\n\n```\nORCHESTRATION COMPLETE\n\nTODO LIST: [path]\nCOMPLETED: [N/N]\nFAILED: [count]\n\nEXECUTION SUMMARY:\n- Task 1: SUCCESS (category)\n- Task 2: SUCCESS (agent)\n\nFILES MODIFIED:\n[list]\n\nACCUMULATED WISDOM:\n[from notepad]\n```\n</workflow>\n\n<parallel_execution>\n## Parallel Execution Rules\n\n**For exploration (explore/librarian)**: ALWAYS background\n```typescript\ndelegate_task(subagent_type=\"explore\", run_in_background=true, ...)\ndelegate_task(subagent_type=\"librarian\", run_in_background=true, ...)\n```\n\n**For task execution**: NEVER background\n```typescript\ndelegate_task(category=\"...\", run_in_background=false, ...)\n```\n\n**Parallel task groups**: Invoke multiple in ONE message\n```typescript\n// Tasks 2, 3, 4 are independent - invoke together\ndelegate_task(category=\"quick\", prompt=\"Task 2...\")\ndelegate_task(category=\"quick\", prompt=\"Task 3...\")\ndelegate_task(category=\"quick\", prompt=\"Task 4...\")\n```\n\n**Background management**:\n- Collect results: `background_output(task_id=\"...\")`\n- Before final answer: `background_cancel(all=true)`\n</parallel_execution>\n\n<notepad_protocol>\n## Notepad System\n\n**Purpose**: Subagents are STATELESS. Notepad is your cumulative intelligence.\n\n**Before EVERY delegation**:\n1. Read notepad files\n2. Extract relevant wisdom\n3. Include as \"Inherited Wisdom\" in prompt\n\n**After EVERY completion**:\n- Instruct subagent to append findings (never overwrite, never use Edit tool)\n\n**Format**:\n```markdown\n## [TIMESTAMP] Task: {task-id}\n{content}\n```\n\n**Path convention**:\n- Plan: `.sisyphus/plans/{name}.md` (READ ONLY)\n- Notepad: `.sisyphus/notepads/{name}/` (READ/APPEND)\n</notepad_protocol>\n\n<verification_rules>\n## QA Protocol\n\nYou are the QA gate. Subagents lie. Verify EVERYTHING.\n\n**After each delegation**:\n1. `lsp_diagnostics` at PROJECT level (not file level)\n2. Run build command\n3. Run test suite\n4. Read changed files manually\n5. Confirm requirements met\n\n**Evidence required**:\n| Action | Evidence |\n|--------|----------|\n| Code change | lsp_diagnostics clean at project level |\n| Build | Exit code 0 |\n| Tests | All pass |\n| Delegation | Verified independently |\n\n**No evidence = not complete.**\n</verification_rules>\n\n<boundaries>\n## What You Do vs Delegate\n\n**YOU DO**:\n- Read files (for context, verification)\n- Run commands (for verification)\n- Use lsp_diagnostics, grep, glob\n- Manage todos\n- Coordinate and verify\n\n**YOU DELEGATE**:\n- All code writing/editing\n- All bug fixes\n- All test creation\n- All documentation\n- All git operations\n</boundaries>\n\n<critical_overrides>\n## Critical Rules\n\n**NEVER**:\n- Write/edit code yourself - always delegate\n- Trust subagent claims without verification\n- Use run_in_background=true for task execution\n- Send prompts under 30 lines\n- Skip project-level lsp_diagnostics after delegation\n- Batch multiple tasks in one delegation\n- Start fresh session for failures/follow-ups - use `resume` instead\n\n**ALWAYS**:\n- Include ALL 6 sections in delegation prompts\n- Read notepad before every delegation\n- Run project-level QA after every delegation\n- Pass inherited wisdom to every subagent\n- Parallelize independent tasks\n- Verify with your own tools\n- **Store session_id from every delegation output**\n- **Use `session_id=\"{session_id}\"` for retries, fixes, and follow-ups**\n</critical_overrides>\n";
|
|
18
|
+
export declare function createAtlasAgent(ctx: OrchestratorContext): AgentConfig;
|
|
19
|
+
export declare namespace createAtlasAgent {
|
|
20
|
+
var mode: "primary";
|
|
21
|
+
}
|
|
22
|
+
export declare const atlasPromptMetadata: AgentPromptMetadata;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { AgentPromptMetadata, BuiltinAgentName } from "./types";
|
|
2
|
+
export interface AvailableAgent {
|
|
3
|
+
name: BuiltinAgentName;
|
|
4
|
+
description: string;
|
|
5
|
+
metadata: AgentPromptMetadata;
|
|
6
|
+
}
|
|
7
|
+
export interface AvailableTool {
|
|
8
|
+
name: string;
|
|
9
|
+
category: "lsp" | "ast" | "search" | "session" | "command" | "other";
|
|
10
|
+
}
|
|
11
|
+
export interface AvailableSkill {
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
location: "user" | "project" | "plugin";
|
|
15
|
+
}
|
|
16
|
+
export interface AvailableCategory {
|
|
17
|
+
name: string;
|
|
18
|
+
description: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function categorizeTools(toolNames: string[]): AvailableTool[];
|
|
21
|
+
export declare function buildKeyTriggersSection(agents: AvailableAgent[], _skills?: AvailableSkill[]): string;
|
|
22
|
+
export declare function buildToolSelectionTable(agents: AvailableAgent[], tools?: AvailableTool[], _skills?: AvailableSkill[]): string;
|
|
23
|
+
export declare function buildExploreSection(agents: AvailableAgent[]): string;
|
|
24
|
+
export declare function buildLibrarianSection(agents: AvailableAgent[]): string;
|
|
25
|
+
export declare function buildDelegationTable(agents: AvailableAgent[]): string;
|
|
26
|
+
export declare function buildCategorySkillsDelegationGuide(categories: AvailableCategory[], skills: AvailableSkill[]): string;
|
|
27
|
+
export declare function buildOracleSection(agents: AvailableAgent[]): string;
|
|
28
|
+
export declare function buildHardBlocksSection(): string;
|
|
29
|
+
export declare function buildAntiPatternsSection(): string;
|
|
30
|
+
export declare function buildUltraworkSection(agents: AvailableAgent[], categories: AvailableCategory[], skills: AvailableSkill[]): string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AgentConfig } from "@opencode-ai/sdk";
|
|
2
|
+
import type { AgentPromptMetadata } from "./types";
|
|
3
|
+
export declare const EXPLORE_PROMPT_METADATA: AgentPromptMetadata;
|
|
4
|
+
export declare function createExploreAgent(model: string): AgentConfig;
|
|
5
|
+
export declare namespace createExploreAgent {
|
|
6
|
+
var mode: "subagent";
|
|
7
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AgentConfig } from "@opencode-ai/sdk";
|
|
2
|
+
import type { AvailableAgent, AvailableSkill, AvailableCategory } from "./dynamic-agent-prompt-builder";
|
|
3
|
+
export declare function createHephaestusAgent(model: string, availableAgents?: AvailableAgent[], availableToolNames?: string[], availableSkills?: AvailableSkill[], availableCategories?: AvailableCategory[]): AgentConfig;
|
|
4
|
+
export declare namespace createHephaestusAgent {
|
|
5
|
+
var mode: "primary";
|
|
6
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from "./types";
|
|
2
|
+
export { createBuiltinAgents } from "./utils";
|
|
3
|
+
export type { AvailableAgent, AvailableCategory, AvailableSkill } from "./dynamic-agent-prompt-builder";
|
|
4
|
+
export { createSisyphusAgent } from "./sisyphus";
|
|
5
|
+
export { createOracleAgent, ORACLE_PROMPT_METADATA } from "./oracle";
|
|
6
|
+
export { createLibrarianAgent, LIBRARIAN_PROMPT_METADATA } from "./librarian";
|
|
7
|
+
export { createExploreAgent, EXPLORE_PROMPT_METADATA } from "./explore";
|
|
8
|
+
export { createMultimodalLookerAgent, MULTIMODAL_LOOKER_PROMPT_METADATA } from "./multimodal-looker";
|
|
9
|
+
export { createMetisAgent, METIS_SYSTEM_PROMPT, metisPromptMetadata } from "./metis";
|
|
10
|
+
export { createMomusAgent, MOMUS_SYSTEM_PROMPT, momusPromptMetadata } from "./momus";
|
|
11
|
+
export { createAtlasAgent, atlasPromptMetadata } from "./atlas";
|
|
12
|
+
export { PROMETHEUS_SYSTEM_PROMPT, PROMETHEUS_PERMISSION, PROMETHEUS_IDENTITY_CONSTRAINTS, PROMETHEUS_INTERVIEW_MODE, PROMETHEUS_PLAN_GENERATION, PROMETHEUS_HIGH_ACCURACY_MODE, PROMETHEUS_PLAN_TEMPLATE, PROMETHEUS_BEHAVIORAL_SUMMARY, } from "./prometheus";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AgentConfig } from "@opencode-ai/sdk";
|
|
2
|
+
import type { AgentPromptMetadata } from "./types";
|
|
3
|
+
export declare const LIBRARIAN_PROMPT_METADATA: AgentPromptMetadata;
|
|
4
|
+
export declare function createLibrarianAgent(model: string): AgentConfig;
|
|
5
|
+
export declare namespace createLibrarianAgent {
|
|
6
|
+
var mode: "subagent";
|
|
7
|
+
}
|