opencode-repos 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +180 -0
- package/README.md +103 -3
- package/TODO.md +3 -0
- package/index.ts +1590 -158
- package/oh-my-opencode/.github/FUNDING.yml +15 -0
- package/oh-my-opencode/.github/ISSUE_TEMPLATE/bug_report.yml +129 -0
- package/oh-my-opencode/.github/ISSUE_TEMPLATE/config.yml +8 -0
- package/oh-my-opencode/.github/ISSUE_TEMPLATE/feature_request.yml +100 -0
- package/oh-my-opencode/.github/ISSUE_TEMPLATE/general.yml +83 -0
- package/oh-my-opencode/.github/assets/google.jpg +0 -0
- package/oh-my-opencode/.github/assets/hero.jpg +0 -0
- package/oh-my-opencode/.github/assets/indent.jpg +0 -0
- package/oh-my-opencode/.github/assets/microsoft.jpg +0 -0
- package/oh-my-opencode/.github/assets/omo.png +0 -0
- package/oh-my-opencode/.github/assets/orchestrator-atlas.png +0 -0
- package/oh-my-opencode/.github/assets/sisyphus.png +0 -0
- package/oh-my-opencode/.github/assets/sisyphuslabs.png +0 -0
- package/oh-my-opencode/.github/pull_request_template.md +34 -0
- package/oh-my-opencode/.github/workflows/ci.yml +138 -0
- package/oh-my-opencode/.github/workflows/cla.yml +41 -0
- package/oh-my-opencode/.github/workflows/lint-workflows.yml +22 -0
- package/oh-my-opencode/.github/workflows/publish.yml +165 -0
- package/oh-my-opencode/.github/workflows/sisyphus-agent.yml +500 -0
- package/oh-my-opencode/.opencode/background-tasks.json +27 -0
- package/oh-my-opencode/.opencode/command/get-unpublished-changes.md +84 -0
- package/oh-my-opencode/.opencode/command/omomomo.md +37 -0
- package/oh-my-opencode/.opencode/command/publish.md +257 -0
- package/oh-my-opencode/AGENTS.md +179 -0
- package/oh-my-opencode/CLA.md +58 -0
- package/oh-my-opencode/CONTRIBUTING.md +268 -0
- package/oh-my-opencode/LICENSE.md +82 -0
- package/oh-my-opencode/README.ja.md +370 -0
- package/oh-my-opencode/README.md +376 -0
- package/oh-my-opencode/README.zh-cn.md +380 -0
- package/oh-my-opencode/assets/oh-my-opencode.schema.json +2171 -0
- package/oh-my-opencode/bin/oh-my-opencode.js +80 -0
- package/oh-my-opencode/bin/platform.js +38 -0
- package/oh-my-opencode/bin/platform.test.ts +148 -0
- package/oh-my-opencode/bun.lock +314 -0
- package/oh-my-opencode/bunfig.toml +2 -0
- package/oh-my-opencode/docs/category-skill-guide.md +200 -0
- package/oh-my-opencode/docs/cli-guide.md +272 -0
- package/oh-my-opencode/docs/configurations.md +654 -0
- package/oh-my-opencode/docs/features.md +550 -0
- package/oh-my-opencode/docs/guide/installation.md +288 -0
- package/oh-my-opencode/docs/guide/overview.md +97 -0
- package/oh-my-opencode/docs/guide/understanding-orchestration-system.md +445 -0
- package/oh-my-opencode/docs/orchestration-guide.md +152 -0
- package/oh-my-opencode/docs/ultrawork-manifesto.md +197 -0
- package/oh-my-opencode/package.json +89 -0
- package/oh-my-opencode/packages/darwin-arm64/bin/.gitkeep +0 -0
- package/oh-my-opencode/packages/darwin-arm64/package.json +22 -0
- package/oh-my-opencode/packages/darwin-x64/bin/.gitkeep +0 -0
- package/oh-my-opencode/packages/darwin-x64/package.json +22 -0
- package/oh-my-opencode/packages/linux-arm64/bin/.gitkeep +0 -0
- package/oh-my-opencode/packages/linux-arm64/package.json +25 -0
- package/oh-my-opencode/packages/linux-arm64-musl/bin/.gitkeep +0 -0
- package/oh-my-opencode/packages/linux-arm64-musl/package.json +25 -0
- package/oh-my-opencode/packages/linux-x64/bin/.gitkeep +0 -0
- package/oh-my-opencode/packages/linux-x64/package.json +25 -0
- package/oh-my-opencode/packages/linux-x64-musl/bin/.gitkeep +0 -0
- package/oh-my-opencode/packages/linux-x64-musl/package.json +25 -0
- package/oh-my-opencode/packages/windows-x64/bin/.gitkeep +0 -0
- package/oh-my-opencode/packages/windows-x64/package.json +22 -0
- package/oh-my-opencode/postinstall.mjs +43 -0
- package/oh-my-opencode/script/build-binaries.ts +103 -0
- package/oh-my-opencode/script/build-schema.ts +28 -0
- package/oh-my-opencode/script/generate-changelog.ts +92 -0
- package/oh-my-opencode/script/publish.ts +344 -0
- package/oh-my-opencode/signatures/cla.json +676 -0
- package/oh-my-opencode/src/agents/AGENTS.md +67 -0
- package/oh-my-opencode/src/agents/atlas.ts +1383 -0
- package/oh-my-opencode/src/agents/dynamic-agent-prompt-builder.ts +400 -0
- package/oh-my-opencode/src/agents/explore.ts +122 -0
- package/oh-my-opencode/src/agents/index.ts +13 -0
- package/oh-my-opencode/src/agents/librarian.ts +326 -0
- package/oh-my-opencode/src/agents/metis.ts +315 -0
- package/oh-my-opencode/src/agents/momus.test.ts +57 -0
- package/oh-my-opencode/src/agents/momus.ts +444 -0
- package/oh-my-opencode/src/agents/multimodal-looker.ts +56 -0
- package/oh-my-opencode/src/agents/oracle.ts +122 -0
- package/oh-my-opencode/src/agents/prometheus-prompt.test.ts +22 -0
- package/oh-my-opencode/src/agents/prometheus-prompt.ts +1196 -0
- package/oh-my-opencode/src/agents/sisyphus-junior.test.ts +232 -0
- package/oh-my-opencode/src/agents/sisyphus-junior.ts +134 -0
- package/oh-my-opencode/src/agents/sisyphus.ts +633 -0
- package/oh-my-opencode/src/agents/types.ts +80 -0
- package/oh-my-opencode/src/agents/utils.test.ts +311 -0
- package/oh-my-opencode/src/agents/utils.ts +240 -0
- package/oh-my-opencode/src/cli/AGENTS.md +91 -0
- package/oh-my-opencode/src/cli/config-manager.test.ts +364 -0
- package/oh-my-opencode/src/cli/config-manager.ts +641 -0
- package/oh-my-opencode/src/cli/doctor/checks/auth.test.ts +114 -0
- package/oh-my-opencode/src/cli/doctor/checks/auth.ts +115 -0
- package/oh-my-opencode/src/cli/doctor/checks/config.test.ts +103 -0
- package/oh-my-opencode/src/cli/doctor/checks/config.ts +123 -0
- package/oh-my-opencode/src/cli/doctor/checks/dependencies.test.ts +152 -0
- package/oh-my-opencode/src/cli/doctor/checks/dependencies.ts +163 -0
- package/oh-my-opencode/src/cli/doctor/checks/gh.test.ts +151 -0
- package/oh-my-opencode/src/cli/doctor/checks/gh.ts +171 -0
- package/oh-my-opencode/src/cli/doctor/checks/index.ts +34 -0
- package/oh-my-opencode/src/cli/doctor/checks/lsp.test.ts +134 -0
- package/oh-my-opencode/src/cli/doctor/checks/lsp.ts +77 -0
- package/oh-my-opencode/src/cli/doctor/checks/mcp.test.ts +115 -0
- package/oh-my-opencode/src/cli/doctor/checks/mcp.ts +128 -0
- package/oh-my-opencode/src/cli/doctor/checks/opencode.test.ts +227 -0
- package/oh-my-opencode/src/cli/doctor/checks/opencode.ts +178 -0
- package/oh-my-opencode/src/cli/doctor/checks/plugin.test.ts +109 -0
- package/oh-my-opencode/src/cli/doctor/checks/plugin.ts +124 -0
- package/oh-my-opencode/src/cli/doctor/checks/version.test.ts +148 -0
- package/oh-my-opencode/src/cli/doctor/checks/version.ts +135 -0
- package/oh-my-opencode/src/cli/doctor/constants.ts +72 -0
- package/oh-my-opencode/src/cli/doctor/formatter.test.ts +218 -0
- package/oh-my-opencode/src/cli/doctor/formatter.ts +140 -0
- package/oh-my-opencode/src/cli/doctor/index.ts +11 -0
- package/oh-my-opencode/src/cli/doctor/runner.test.ts +153 -0
- package/oh-my-opencode/src/cli/doctor/runner.ts +132 -0
- package/oh-my-opencode/src/cli/doctor/types.ts +113 -0
- package/oh-my-opencode/src/cli/get-local-version/formatter.ts +66 -0
- package/oh-my-opencode/src/cli/get-local-version/index.ts +106 -0
- package/oh-my-opencode/src/cli/get-local-version/types.ts +14 -0
- package/oh-my-opencode/src/cli/index.ts +153 -0
- package/oh-my-opencode/src/cli/install.ts +523 -0
- package/oh-my-opencode/src/cli/model-fallback.ts +246 -0
- package/oh-my-opencode/src/cli/run/completion.test.ts +170 -0
- package/oh-my-opencode/src/cli/run/completion.ts +79 -0
- package/oh-my-opencode/src/cli/run/events.test.ts +155 -0
- package/oh-my-opencode/src/cli/run/events.ts +325 -0
- package/oh-my-opencode/src/cli/run/index.ts +2 -0
- package/oh-my-opencode/src/cli/run/runner.ts +159 -0
- package/oh-my-opencode/src/cli/run/types.ts +76 -0
- package/oh-my-opencode/src/cli/types.ts +40 -0
- package/oh-my-opencode/src/config/index.ts +26 -0
- package/oh-my-opencode/src/config/schema.test.ts +444 -0
- package/oh-my-opencode/src/config/schema.ts +339 -0
- package/oh-my-opencode/src/features/AGENTS.md +77 -0
- package/oh-my-opencode/src/features/background-agent/concurrency.test.ts +418 -0
- package/oh-my-opencode/src/features/background-agent/concurrency.ts +137 -0
- package/oh-my-opencode/src/features/background-agent/index.ts +3 -0
- package/oh-my-opencode/src/features/background-agent/manager.test.ts +1928 -0
- package/oh-my-opencode/src/features/background-agent/manager.ts +1335 -0
- package/oh-my-opencode/src/features/background-agent/types.ts +66 -0
- package/oh-my-opencode/src/features/boulder-state/constants.ts +13 -0
- package/oh-my-opencode/src/features/boulder-state/index.ts +3 -0
- package/oh-my-opencode/src/features/boulder-state/storage.test.ts +250 -0
- package/oh-my-opencode/src/features/boulder-state/storage.ts +150 -0
- package/oh-my-opencode/src/features/boulder-state/types.ts +26 -0
- package/oh-my-opencode/src/features/builtin-commands/commands.ts +89 -0
- package/oh-my-opencode/src/features/builtin-commands/index.ts +2 -0
- package/oh-my-opencode/src/features/builtin-commands/templates/init-deep.ts +300 -0
- package/oh-my-opencode/src/features/builtin-commands/templates/ralph-loop.ts +38 -0
- package/oh-my-opencode/src/features/builtin-commands/templates/refactor.ts +619 -0
- package/oh-my-opencode/src/features/builtin-commands/templates/start-work.ts +72 -0
- package/oh-my-opencode/src/features/builtin-commands/types.ts +9 -0
- package/oh-my-opencode/src/features/builtin-skills/frontend-ui-ux/SKILL.md +78 -0
- package/oh-my-opencode/src/features/builtin-skills/git-master/SKILL.md +1105 -0
- package/oh-my-opencode/src/features/builtin-skills/index.ts +2 -0
- package/oh-my-opencode/src/features/builtin-skills/skills.ts +1203 -0
- package/oh-my-opencode/src/features/builtin-skills/types.ts +16 -0
- package/oh-my-opencode/src/features/claude-code-agent-loader/index.ts +2 -0
- package/oh-my-opencode/src/features/claude-code-agent-loader/loader.ts +90 -0
- package/oh-my-opencode/src/features/claude-code-agent-loader/types.ts +17 -0
- package/oh-my-opencode/src/features/claude-code-command-loader/index.ts +2 -0
- package/oh-my-opencode/src/features/claude-code-command-loader/loader.ts +144 -0
- package/oh-my-opencode/src/features/claude-code-command-loader/types.ts +46 -0
- package/oh-my-opencode/src/features/claude-code-mcp-loader/env-expander.ts +27 -0
- package/oh-my-opencode/src/features/claude-code-mcp-loader/index.ts +11 -0
- package/oh-my-opencode/src/features/claude-code-mcp-loader/loader.test.ts +162 -0
- package/oh-my-opencode/src/features/claude-code-mcp-loader/loader.ts +113 -0
- package/oh-my-opencode/src/features/claude-code-mcp-loader/transformer.ts +53 -0
- package/oh-my-opencode/src/features/claude-code-mcp-loader/types.ts +42 -0
- package/oh-my-opencode/src/features/claude-code-plugin-loader/index.ts +3 -0
- package/oh-my-opencode/src/features/claude-code-plugin-loader/loader.ts +486 -0
- package/oh-my-opencode/src/features/claude-code-plugin-loader/types.ts +210 -0
- package/oh-my-opencode/src/features/claude-code-session-state/index.ts +1 -0
- package/oh-my-opencode/src/features/claude-code-session-state/state.test.ts +126 -0
- package/oh-my-opencode/src/features/claude-code-session-state/state.ts +37 -0
- package/oh-my-opencode/src/features/context-injector/collector.test.ts +330 -0
- package/oh-my-opencode/src/features/context-injector/collector.ts +85 -0
- package/oh-my-opencode/src/features/context-injector/index.ts +14 -0
- package/oh-my-opencode/src/features/context-injector/injector.test.ts +122 -0
- package/oh-my-opencode/src/features/context-injector/injector.ts +167 -0
- package/oh-my-opencode/src/features/context-injector/types.ts +91 -0
- package/oh-my-opencode/src/features/hook-message-injector/constants.ts +6 -0
- package/oh-my-opencode/src/features/hook-message-injector/index.ts +4 -0
- package/oh-my-opencode/src/features/hook-message-injector/injector.ts +195 -0
- package/oh-my-opencode/src/features/hook-message-injector/types.ts +47 -0
- package/oh-my-opencode/src/features/opencode-skill-loader/async-loader.test.ts +448 -0
- package/oh-my-opencode/src/features/opencode-skill-loader/async-loader.ts +180 -0
- package/oh-my-opencode/src/features/opencode-skill-loader/blocking.test.ts +210 -0
- package/oh-my-opencode/src/features/opencode-skill-loader/blocking.ts +62 -0
- package/oh-my-opencode/src/features/opencode-skill-loader/discover-worker.ts +59 -0
- package/oh-my-opencode/src/features/opencode-skill-loader/index.ts +4 -0
- package/oh-my-opencode/src/features/opencode-skill-loader/loader.test.ts +273 -0
- package/oh-my-opencode/src/features/opencode-skill-loader/loader.ts +259 -0
- package/oh-my-opencode/src/features/opencode-skill-loader/merger.ts +267 -0
- package/oh-my-opencode/src/features/opencode-skill-loader/skill-content.test.ts +267 -0
- package/oh-my-opencode/src/features/opencode-skill-loader/skill-content.ts +206 -0
- package/oh-my-opencode/src/features/opencode-skill-loader/types.ts +38 -0
- package/oh-my-opencode/src/features/skill-mcp-manager/env-cleaner.test.ts +201 -0
- package/oh-my-opencode/src/features/skill-mcp-manager/env-cleaner.ts +27 -0
- package/oh-my-opencode/src/features/skill-mcp-manager/index.ts +2 -0
- package/oh-my-opencode/src/features/skill-mcp-manager/manager.test.ts +611 -0
- package/oh-my-opencode/src/features/skill-mcp-manager/manager.ts +520 -0
- package/oh-my-opencode/src/features/skill-mcp-manager/types.ts +14 -0
- package/oh-my-opencode/src/features/task-toast-manager/index.ts +2 -0
- package/oh-my-opencode/src/features/task-toast-manager/manager.test.ts +249 -0
- package/oh-my-opencode/src/features/task-toast-manager/manager.ts +215 -0
- package/oh-my-opencode/src/features/task-toast-manager/types.ts +24 -0
- package/oh-my-opencode/src/hooks/AGENTS.md +73 -0
- package/oh-my-opencode/src/hooks/agent-usage-reminder/constants.ts +54 -0
- package/oh-my-opencode/src/hooks/agent-usage-reminder/index.ts +109 -0
- package/oh-my-opencode/src/hooks/agent-usage-reminder/storage.ts +42 -0
- package/oh-my-opencode/src/hooks/agent-usage-reminder/types.ts +6 -0
- package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/executor.test.ts +307 -0
- package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/executor.ts +485 -0
- package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/index.ts +151 -0
- package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/parser.ts +201 -0
- package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/pruning-deduplication.test.ts +33 -0
- package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/pruning-deduplication.ts +184 -0
- package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/pruning-types.ts +44 -0
- package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/storage.test.ts +77 -0
- package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/storage.ts +250 -0
- package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/types.ts +42 -0
- package/oh-my-opencode/src/hooks/atlas/index.test.ts +953 -0
- package/oh-my-opencode/src/hooks/atlas/index.ts +771 -0
- package/oh-my-opencode/src/hooks/auto-slash-command/constants.ts +12 -0
- package/oh-my-opencode/src/hooks/auto-slash-command/detector.test.ts +296 -0
- package/oh-my-opencode/src/hooks/auto-slash-command/detector.ts +65 -0
- package/oh-my-opencode/src/hooks/auto-slash-command/executor.ts +205 -0
- package/oh-my-opencode/src/hooks/auto-slash-command/index.test.ts +254 -0
- package/oh-my-opencode/src/hooks/auto-slash-command/index.ts +89 -0
- package/oh-my-opencode/src/hooks/auto-slash-command/types.ts +23 -0
- package/oh-my-opencode/src/hooks/auto-update-checker/cache.ts +93 -0
- package/oh-my-opencode/src/hooks/auto-update-checker/checker.test.ts +24 -0
- package/oh-my-opencode/src/hooks/auto-update-checker/checker.ts +284 -0
- package/oh-my-opencode/src/hooks/auto-update-checker/constants.ts +64 -0
- package/oh-my-opencode/src/hooks/auto-update-checker/index.test.ts +254 -0
- package/oh-my-opencode/src/hooks/auto-update-checker/index.ts +260 -0
- package/oh-my-opencode/src/hooks/auto-update-checker/types.ts +29 -0
- package/oh-my-opencode/src/hooks/background-compaction/index.ts +87 -0
- package/oh-my-opencode/src/hooks/background-notification/index.ts +28 -0
- package/oh-my-opencode/src/hooks/background-notification/types.ts +5 -0
- package/oh-my-opencode/src/hooks/claude-code-hooks/AGENTS.md +70 -0
- package/oh-my-opencode/src/hooks/claude-code-hooks/config-loader.ts +107 -0
- package/oh-my-opencode/src/hooks/claude-code-hooks/config.ts +103 -0
- package/oh-my-opencode/src/hooks/claude-code-hooks/index.ts +401 -0
- package/oh-my-opencode/src/hooks/claude-code-hooks/plugin-config.ts +12 -0
- package/oh-my-opencode/src/hooks/claude-code-hooks/post-tool-use.ts +199 -0
- package/oh-my-opencode/src/hooks/claude-code-hooks/pre-compact.ts +109 -0
- package/oh-my-opencode/src/hooks/claude-code-hooks/pre-tool-use.ts +172 -0
- package/oh-my-opencode/src/hooks/claude-code-hooks/stop.ts +118 -0
- package/oh-my-opencode/src/hooks/claude-code-hooks/todo.ts +76 -0
- package/oh-my-opencode/src/hooks/claude-code-hooks/tool-input-cache.ts +47 -0
- package/oh-my-opencode/src/hooks/claude-code-hooks/transcript.ts +252 -0
- package/oh-my-opencode/src/hooks/claude-code-hooks/types.ts +204 -0
- package/oh-my-opencode/src/hooks/claude-code-hooks/user-prompt-submit.ts +117 -0
- package/oh-my-opencode/src/hooks/comment-checker/cli.test.ts +68 -0
- package/oh-my-opencode/src/hooks/comment-checker/cli.ts +221 -0
- package/oh-my-opencode/src/hooks/comment-checker/downloader.ts +196 -0
- package/oh-my-opencode/src/hooks/comment-checker/index.ts +171 -0
- package/oh-my-opencode/src/hooks/comment-checker/types.ts +33 -0
- package/oh-my-opencode/src/hooks/compaction-context-injector/index.ts +61 -0
- package/oh-my-opencode/src/hooks/context-window-monitor.ts +99 -0
- package/oh-my-opencode/src/hooks/delegate-task-retry/index.test.ts +119 -0
- package/oh-my-opencode/src/hooks/delegate-task-retry/index.ts +136 -0
- package/oh-my-opencode/src/hooks/directory-agents-injector/constants.ts +9 -0
- package/oh-my-opencode/src/hooks/directory-agents-injector/index.ts +182 -0
- package/oh-my-opencode/src/hooks/directory-agents-injector/storage.ts +48 -0
- package/oh-my-opencode/src/hooks/directory-agents-injector/types.ts +5 -0
- package/oh-my-opencode/src/hooks/directory-readme-injector/constants.ts +9 -0
- package/oh-my-opencode/src/hooks/directory-readme-injector/index.ts +177 -0
- package/oh-my-opencode/src/hooks/directory-readme-injector/storage.ts +48 -0
- package/oh-my-opencode/src/hooks/directory-readme-injector/types.ts +5 -0
- package/oh-my-opencode/src/hooks/edit-error-recovery/index.test.ts +126 -0
- package/oh-my-opencode/src/hooks/edit-error-recovery/index.ts +57 -0
- package/oh-my-opencode/src/hooks/empty-task-response-detector.ts +27 -0
- package/oh-my-opencode/src/hooks/index.ts +32 -0
- package/oh-my-opencode/src/hooks/interactive-bash-session/constants.ts +15 -0
- package/oh-my-opencode/src/hooks/interactive-bash-session/index.ts +262 -0
- package/oh-my-opencode/src/hooks/interactive-bash-session/storage.ts +59 -0
- package/oh-my-opencode/src/hooks/interactive-bash-session/types.ts +11 -0
- package/oh-my-opencode/src/hooks/keyword-detector/constants.ts +300 -0
- package/oh-my-opencode/src/hooks/keyword-detector/detector.ts +52 -0
- package/oh-my-opencode/src/hooks/keyword-detector/index.test.ts +529 -0
- package/oh-my-opencode/src/hooks/keyword-detector/index.ts +100 -0
- package/oh-my-opencode/src/hooks/keyword-detector/types.ts +4 -0
- package/oh-my-opencode/src/hooks/non-interactive-env/constants.ts +70 -0
- package/oh-my-opencode/src/hooks/non-interactive-env/detector.ts +19 -0
- package/oh-my-opencode/src/hooks/non-interactive-env/index.test.ts +323 -0
- package/oh-my-opencode/src/hooks/non-interactive-env/index.ts +63 -0
- package/oh-my-opencode/src/hooks/non-interactive-env/types.ts +3 -0
- package/oh-my-opencode/src/hooks/prometheus-md-only/constants.ts +32 -0
- package/oh-my-opencode/src/hooks/prometheus-md-only/index.test.ts +488 -0
- package/oh-my-opencode/src/hooks/prometheus-md-only/index.ts +136 -0
- package/oh-my-opencode/src/hooks/ralph-loop/constants.ts +5 -0
- package/oh-my-opencode/src/hooks/ralph-loop/index.test.ts +835 -0
- package/oh-my-opencode/src/hooks/ralph-loop/index.ts +417 -0
- package/oh-my-opencode/src/hooks/ralph-loop/storage.ts +115 -0
- package/oh-my-opencode/src/hooks/ralph-loop/types.ts +19 -0
- package/oh-my-opencode/src/hooks/rules-injector/constants.ts +30 -0
- package/oh-my-opencode/src/hooks/rules-injector/finder.test.ts +381 -0
- package/oh-my-opencode/src/hooks/rules-injector/finder.ts +263 -0
- package/oh-my-opencode/src/hooks/rules-injector/index.ts +223 -0
- package/oh-my-opencode/src/hooks/rules-injector/matcher.ts +63 -0
- package/oh-my-opencode/src/hooks/rules-injector/parser.test.ts +226 -0
- package/oh-my-opencode/src/hooks/rules-injector/parser.ts +211 -0
- package/oh-my-opencode/src/hooks/rules-injector/storage.ts +59 -0
- package/oh-my-opencode/src/hooks/rules-injector/types.ts +57 -0
- package/oh-my-opencode/src/hooks/session-notification-utils.ts +140 -0
- package/oh-my-opencode/src/hooks/session-notification.test.ts +361 -0
- package/oh-my-opencode/src/hooks/session-notification.ts +330 -0
- package/oh-my-opencode/src/hooks/session-recovery/constants.ts +10 -0
- package/oh-my-opencode/src/hooks/session-recovery/index.test.ts +223 -0
- package/oh-my-opencode/src/hooks/session-recovery/index.ts +435 -0
- package/oh-my-opencode/src/hooks/session-recovery/storage.ts +390 -0
- package/oh-my-opencode/src/hooks/session-recovery/types.ts +98 -0
- package/oh-my-opencode/src/hooks/start-work/index.test.ts +402 -0
- package/oh-my-opencode/src/hooks/start-work/index.ts +242 -0
- package/oh-my-opencode/src/hooks/task-resume-info/index.ts +36 -0
- package/oh-my-opencode/src/hooks/think-mode/detector.ts +57 -0
- package/oh-my-opencode/src/hooks/think-mode/index.test.ts +353 -0
- package/oh-my-opencode/src/hooks/think-mode/index.ts +89 -0
- package/oh-my-opencode/src/hooks/think-mode/switcher.test.ts +461 -0
- package/oh-my-opencode/src/hooks/think-mode/switcher.ts +222 -0
- package/oh-my-opencode/src/hooks/think-mode/types.ts +21 -0
- package/oh-my-opencode/src/hooks/thinking-block-validator/index.ts +171 -0
- package/oh-my-opencode/src/hooks/todo-continuation-enforcer.test.ts +876 -0
- package/oh-my-opencode/src/hooks/todo-continuation-enforcer.ts +480 -0
- package/oh-my-opencode/src/hooks/tool-output-truncator.test.ts +168 -0
- package/oh-my-opencode/src/hooks/tool-output-truncator.ts +61 -0
- package/oh-my-opencode/src/index.ts +589 -0
- package/oh-my-opencode/src/mcp/AGENTS.md +70 -0
- package/oh-my-opencode/src/mcp/context7.ts +6 -0
- package/oh-my-opencode/src/mcp/grep-app.ts +6 -0
- package/oh-my-opencode/src/mcp/index.test.ts +86 -0
- package/oh-my-opencode/src/mcp/index.ts +32 -0
- package/oh-my-opencode/src/mcp/types.ts +9 -0
- package/oh-my-opencode/src/mcp/websearch.ts +10 -0
- package/oh-my-opencode/src/plugin-config.test.ts +119 -0
- package/oh-my-opencode/src/plugin-config.ts +135 -0
- package/oh-my-opencode/src/plugin-handlers/config-handler.test.ts +103 -0
- package/oh-my-opencode/src/plugin-handlers/config-handler.ts +399 -0
- package/oh-my-opencode/src/plugin-handlers/index.ts +1 -0
- package/oh-my-opencode/src/plugin-state.ts +30 -0
- package/oh-my-opencode/src/shared/AGENTS.md +63 -0
- package/oh-my-opencode/src/shared/agent-tool-restrictions.ts +44 -0
- package/oh-my-opencode/src/shared/agent-variant.test.ts +83 -0
- package/oh-my-opencode/src/shared/agent-variant.ts +40 -0
- package/oh-my-opencode/src/shared/claude-config-dir.test.ts +60 -0
- package/oh-my-opencode/src/shared/claude-config-dir.ts +11 -0
- package/oh-my-opencode/src/shared/command-executor.ts +225 -0
- package/oh-my-opencode/src/shared/config-errors.ts +18 -0
- package/oh-my-opencode/src/shared/config-path.ts +47 -0
- package/oh-my-opencode/src/shared/data-path.ts +22 -0
- package/oh-my-opencode/src/shared/deep-merge.test.ts +336 -0
- package/oh-my-opencode/src/shared/deep-merge.ts +53 -0
- package/oh-my-opencode/src/shared/dynamic-truncator.ts +193 -0
- package/oh-my-opencode/src/shared/external-plugin-detector.test.ts +133 -0
- package/oh-my-opencode/src/shared/external-plugin-detector.ts +132 -0
- package/oh-my-opencode/src/shared/file-reference-resolver.ts +85 -0
- package/oh-my-opencode/src/shared/file-utils.ts +40 -0
- package/oh-my-opencode/src/shared/first-message-variant.test.ts +32 -0
- package/oh-my-opencode/src/shared/first-message-variant.ts +28 -0
- package/oh-my-opencode/src/shared/frontmatter.test.ts +262 -0
- package/oh-my-opencode/src/shared/frontmatter.ts +31 -0
- package/oh-my-opencode/src/shared/hook-disabled.ts +22 -0
- package/oh-my-opencode/src/shared/index.ts +29 -0
- package/oh-my-opencode/src/shared/jsonc-parser.test.ts +266 -0
- package/oh-my-opencode/src/shared/jsonc-parser.ts +66 -0
- package/oh-my-opencode/src/shared/logger.ts +20 -0
- package/oh-my-opencode/src/shared/migration.test.ts +602 -0
- package/oh-my-opencode/src/shared/migration.ts +191 -0
- package/oh-my-opencode/src/shared/model-resolver.test.ts +101 -0
- package/oh-my-opencode/src/shared/model-resolver.ts +35 -0
- package/oh-my-opencode/src/shared/model-sanitizer.ts +12 -0
- package/oh-my-opencode/src/shared/opencode-config-dir.test.ts +318 -0
- package/oh-my-opencode/src/shared/opencode-config-dir.ts +142 -0
- package/oh-my-opencode/src/shared/opencode-version.test.ts +223 -0
- package/oh-my-opencode/src/shared/opencode-version.ts +72 -0
- package/oh-my-opencode/src/shared/pattern-matcher.ts +29 -0
- package/oh-my-opencode/src/shared/permission-compat.test.ts +134 -0
- package/oh-my-opencode/src/shared/permission-compat.ts +77 -0
- package/oh-my-opencode/src/shared/session-cursor.test.ts +66 -0
- package/oh-my-opencode/src/shared/session-cursor.ts +85 -0
- package/oh-my-opencode/src/shared/shell-env.test.ts +278 -0
- package/oh-my-opencode/src/shared/shell-env.ts +111 -0
- package/oh-my-opencode/src/shared/snake-case.ts +49 -0
- package/oh-my-opencode/src/shared/system-directive.ts +40 -0
- package/oh-my-opencode/src/shared/tool-name.ts +26 -0
- package/oh-my-opencode/src/shared/zip-extractor.ts +83 -0
- package/oh-my-opencode/src/tools/AGENTS.md +74 -0
- package/oh-my-opencode/src/tools/ast-grep/cli.ts +230 -0
- package/oh-my-opencode/src/tools/ast-grep/constants.ts +261 -0
- package/oh-my-opencode/src/tools/ast-grep/downloader.ts +128 -0
- package/oh-my-opencode/src/tools/ast-grep/index.ts +13 -0
- package/oh-my-opencode/src/tools/ast-grep/tools.ts +112 -0
- package/oh-my-opencode/src/tools/ast-grep/types.ts +61 -0
- package/oh-my-opencode/src/tools/ast-grep/utils.ts +102 -0
- package/oh-my-opencode/src/tools/background-task/constants.ts +7 -0
- package/oh-my-opencode/src/tools/background-task/index.ts +7 -0
- package/oh-my-opencode/src/tools/background-task/tools.ts +479 -0
- package/oh-my-opencode/src/tools/background-task/types.ts +16 -0
- package/oh-my-opencode/src/tools/call-omo-agent/constants.ts +7 -0
- package/oh-my-opencode/src/tools/call-omo-agent/index.ts +3 -0
- package/oh-my-opencode/src/tools/call-omo-agent/tools.ts +338 -0
- package/oh-my-opencode/src/tools/call-omo-agent/types.ts +27 -0
- package/oh-my-opencode/src/tools/delegate-task/constants.ts +205 -0
- package/oh-my-opencode/src/tools/delegate-task/index.ts +3 -0
- package/oh-my-opencode/src/tools/delegate-task/tools.test.ts +1575 -0
- package/oh-my-opencode/src/tools/delegate-task/tools.ts +885 -0
- package/oh-my-opencode/src/tools/delegate-task/types.ts +9 -0
- package/oh-my-opencode/src/tools/glob/cli.test.ts +158 -0
- package/oh-my-opencode/src/tools/glob/cli.ts +191 -0
- package/oh-my-opencode/src/tools/glob/constants.ts +12 -0
- package/oh-my-opencode/src/tools/glob/index.ts +3 -0
- package/oh-my-opencode/src/tools/glob/tools.ts +41 -0
- package/oh-my-opencode/src/tools/glob/types.ts +22 -0
- package/oh-my-opencode/src/tools/glob/utils.ts +26 -0
- package/oh-my-opencode/src/tools/grep/cli.ts +229 -0
- package/oh-my-opencode/src/tools/grep/constants.ts +127 -0
- package/oh-my-opencode/src/tools/grep/downloader.test.ts +103 -0
- package/oh-my-opencode/src/tools/grep/downloader.ts +145 -0
- package/oh-my-opencode/src/tools/grep/index.ts +3 -0
- package/oh-my-opencode/src/tools/grep/tools.ts +40 -0
- package/oh-my-opencode/src/tools/grep/types.ts +39 -0
- package/oh-my-opencode/src/tools/grep/utils.ts +53 -0
- package/oh-my-opencode/src/tools/index.ts +72 -0
- package/oh-my-opencode/src/tools/interactive-bash/constants.ts +18 -0
- package/oh-my-opencode/src/tools/interactive-bash/index.ts +4 -0
- package/oh-my-opencode/src/tools/interactive-bash/tools.ts +126 -0
- package/oh-my-opencode/src/tools/interactive-bash/utils.ts +71 -0
- package/oh-my-opencode/src/tools/look-at/constants.ts +3 -0
- package/oh-my-opencode/src/tools/look-at/index.ts +3 -0
- package/oh-my-opencode/src/tools/look-at/tools.test.ts +73 -0
- package/oh-my-opencode/src/tools/look-at/tools.ts +173 -0
- package/oh-my-opencode/src/tools/look-at/types.ts +4 -0
- package/oh-my-opencode/src/tools/lsp/client.ts +596 -0
- package/oh-my-opencode/src/tools/lsp/config.test.ts +130 -0
- package/oh-my-opencode/src/tools/lsp/config.ts +285 -0
- package/oh-my-opencode/src/tools/lsp/constants.ts +390 -0
- package/oh-my-opencode/src/tools/lsp/index.ts +7 -0
- package/oh-my-opencode/src/tools/lsp/tools.ts +261 -0
- package/oh-my-opencode/src/tools/lsp/types.ts +124 -0
- package/oh-my-opencode/src/tools/lsp/utils.ts +406 -0
- package/oh-my-opencode/src/tools/session-manager/constants.ts +97 -0
- package/oh-my-opencode/src/tools/session-manager/index.ts +3 -0
- package/oh-my-opencode/src/tools/session-manager/storage.test.ts +315 -0
- package/oh-my-opencode/src/tools/session-manager/storage.ts +238 -0
- package/oh-my-opencode/src/tools/session-manager/tools.test.ts +124 -0
- package/oh-my-opencode/src/tools/session-manager/tools.ts +146 -0
- package/oh-my-opencode/src/tools/session-manager/types.ts +99 -0
- package/oh-my-opencode/src/tools/session-manager/utils.test.ts +160 -0
- package/oh-my-opencode/src/tools/session-manager/utils.ts +199 -0
- package/oh-my-opencode/src/tools/skill/constants.ts +8 -0
- package/oh-my-opencode/src/tools/skill/index.ts +3 -0
- package/oh-my-opencode/src/tools/skill/tools.test.ts +239 -0
- package/oh-my-opencode/src/tools/skill/tools.ts +200 -0
- package/oh-my-opencode/src/tools/skill/types.ts +31 -0
- package/oh-my-opencode/src/tools/skill-mcp/constants.ts +3 -0
- package/oh-my-opencode/src/tools/skill-mcp/index.ts +3 -0
- package/oh-my-opencode/src/tools/skill-mcp/tools.test.ts +215 -0
- package/oh-my-opencode/src/tools/skill-mcp/tools.ts +172 -0
- package/oh-my-opencode/src/tools/skill-mcp/types.ts +8 -0
- package/oh-my-opencode/src/tools/slashcommand/index.ts +2 -0
- package/oh-my-opencode/src/tools/slashcommand/tools.ts +252 -0
- package/oh-my-opencode/src/tools/slashcommand/types.ts +28 -0
- package/oh-my-opencode/test-setup.ts +6 -0
- package/oh-my-opencode/tsconfig.json +20 -0
- package/package.json +1 -1
- package/src/__tests__/git.test.ts +7 -2
- package/src/__tests__/manifest.test.ts +5 -5
- package/src/agents/repo-explorer.ts +2 -1
- package/src/git.ts +18 -3
- package/src/manifest.ts +22 -15
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# Manifesto
|
|
2
|
+
|
|
3
|
+
The principles and philosophy behind Oh My OpenCode.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Human Intervention is a Failure Signal
|
|
8
|
+
|
|
9
|
+
**HUMAN IN THE LOOP = BOTTLENECK**
|
|
10
|
+
**HUMAN IN THE LOOP = BOTTLENECK**
|
|
11
|
+
**HUMAN IN THE LOOP = BOTTLENECK**
|
|
12
|
+
|
|
13
|
+
Think about autonomous driving. When a human has to take over the wheel, that's not a feature - it's a failure of the system. The car couldn't handle the situation on its own.
|
|
14
|
+
|
|
15
|
+
**Why is coding any different?**
|
|
16
|
+
|
|
17
|
+
When you find yourself:
|
|
18
|
+
- Fixing the AI's half-finished code
|
|
19
|
+
- Manually correcting obvious mistakes
|
|
20
|
+
- Guiding the agent step-by-step through a task
|
|
21
|
+
- Repeatedly clarifying the same requirements
|
|
22
|
+
|
|
23
|
+
...that's not "human-AI collaboration." That's the AI failing to do its job.
|
|
24
|
+
|
|
25
|
+
**Oh My OpenCode is built on this premise**: Human intervention during agentic work is fundamentally a wrong signal. If the system is designed correctly, the agent should complete the work without requiring you to babysit it.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Indistinguishable Code
|
|
30
|
+
|
|
31
|
+
**Goal: Code written by the agent should be indistinguishable from code written by a senior engineer.**
|
|
32
|
+
|
|
33
|
+
Not "AI-generated code that needs cleanup." Not "a good starting point." The actual, final, production-ready code.
|
|
34
|
+
|
|
35
|
+
This means:
|
|
36
|
+
- Following existing codebase patterns exactly
|
|
37
|
+
- Proper error handling without being asked
|
|
38
|
+
- Tests that actually test the right things
|
|
39
|
+
- No AI slop (over-engineering, unnecessary abstractions, scope creep)
|
|
40
|
+
- Comments only when they add value
|
|
41
|
+
|
|
42
|
+
If you can tell whether a commit was made by a human or an agent, the agent has failed.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Token Cost vs. Productivity
|
|
47
|
+
|
|
48
|
+
**Higher token usage is acceptable if it significantly increases productivity.**
|
|
49
|
+
|
|
50
|
+
Using more tokens to:
|
|
51
|
+
- Have multiple specialized agents research in parallel
|
|
52
|
+
- Get the job done completely without human intervention
|
|
53
|
+
- Verify work thoroughly before completion
|
|
54
|
+
- Accumulate knowledge across tasks
|
|
55
|
+
|
|
56
|
+
...is a worthwhile investment when it means 10x, 20x, or 100x productivity gains.
|
|
57
|
+
|
|
58
|
+
**However:**
|
|
59
|
+
|
|
60
|
+
Unnecessary token waste is not pursued. The system optimizes for:
|
|
61
|
+
- Using cheaper models (Haiku, Flash) for simple tasks
|
|
62
|
+
- Avoiding redundant exploration
|
|
63
|
+
- Caching learnings across sessions
|
|
64
|
+
- Stopping research when sufficient context is gathered
|
|
65
|
+
|
|
66
|
+
Token efficiency matters. But not at the cost of work quality or human cognitive load.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Minimize Human Cognitive Load
|
|
71
|
+
|
|
72
|
+
**The human should only need to say what they want. Everything else is the agent's job.**
|
|
73
|
+
|
|
74
|
+
Two approaches to achieve this:
|
|
75
|
+
|
|
76
|
+
### Approach 1: Prometheus (Interview Mode)
|
|
77
|
+
|
|
78
|
+
You say: "I want to add authentication."
|
|
79
|
+
|
|
80
|
+
Prometheus:
|
|
81
|
+
- Researches your codebase to understand existing patterns
|
|
82
|
+
- Asks clarifying questions based on actual findings
|
|
83
|
+
- Surfaces edge cases you hadn't considered
|
|
84
|
+
- Documents decisions as you make them
|
|
85
|
+
- Generates a complete work plan
|
|
86
|
+
|
|
87
|
+
**You provide intent. The agent provides structure.**
|
|
88
|
+
|
|
89
|
+
### Approach 2: Ultrawork (Just Do It Mode)
|
|
90
|
+
|
|
91
|
+
You say: "ulw add authentication"
|
|
92
|
+
|
|
93
|
+
The agent:
|
|
94
|
+
- Figures out the right approach
|
|
95
|
+
- Researches best practices
|
|
96
|
+
- Implements following conventions
|
|
97
|
+
- Verifies everything works
|
|
98
|
+
- Keeps going until complete
|
|
99
|
+
|
|
100
|
+
**You provide intent. The agent handles everything.**
|
|
101
|
+
|
|
102
|
+
In both cases, the human's job is to **express what they want**, not to manage how it gets done.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Predictable, Continuous, Delegatable
|
|
107
|
+
|
|
108
|
+
**The ideal agent should work like a compiler**: markdown document goes in, working code comes out.
|
|
109
|
+
|
|
110
|
+
### Predictable
|
|
111
|
+
|
|
112
|
+
Given the same inputs:
|
|
113
|
+
- Same codebase patterns
|
|
114
|
+
- Same requirements
|
|
115
|
+
- Same constraints
|
|
116
|
+
|
|
117
|
+
...the output should be consistent. Not random, not surprising, not "creative" in ways you didn't ask for.
|
|
118
|
+
|
|
119
|
+
### Continuous
|
|
120
|
+
|
|
121
|
+
Work should survive interruptions:
|
|
122
|
+
- Session crashes? Resume with `/start-work`
|
|
123
|
+
- Need to step away? Progress is tracked
|
|
124
|
+
- Multi-day project? Context is preserved
|
|
125
|
+
|
|
126
|
+
The agent maintains state. You don't have to.
|
|
127
|
+
|
|
128
|
+
### Delegatable
|
|
129
|
+
|
|
130
|
+
Just like you can assign a task to a capable team member and trust them to handle it, you should be able to delegate to the agent.
|
|
131
|
+
|
|
132
|
+
This means:
|
|
133
|
+
- Clear acceptance criteria, verified independently
|
|
134
|
+
- Self-correcting behavior when something goes wrong
|
|
135
|
+
- Escalation (to Oracle, to user) only when truly needed
|
|
136
|
+
- Complete work, not "mostly done"
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## The Core Loop
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
Human Intent → Agent Execution → Verified Result
|
|
144
|
+
↑ ↓
|
|
145
|
+
└──────── Minimum ─────────────┘
|
|
146
|
+
(intervention only on true failure)
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Everything in Oh My OpenCode is designed to make this loop work:
|
|
150
|
+
|
|
151
|
+
| Feature | Purpose |
|
|
152
|
+
|---------|---------|
|
|
153
|
+
| Prometheus | Extract intent through intelligent interview |
|
|
154
|
+
| Metis | Catch ambiguities before they become bugs |
|
|
155
|
+
| Momus | Verify plans are complete before execution |
|
|
156
|
+
| Orchestrator | Coordinate work without human micromanagement |
|
|
157
|
+
| Todo Continuation | Force completion, prevent "I'm done" lies |
|
|
158
|
+
| Category System | Route to optimal model without human decision |
|
|
159
|
+
| Background Agents | Parallel research without blocking user |
|
|
160
|
+
| Wisdom Accumulation | Learn from work, don't repeat mistakes |
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## What This Means in Practice
|
|
165
|
+
|
|
166
|
+
**You should be able to:**
|
|
167
|
+
|
|
168
|
+
1. Describe what you want (high-level or detailed, your choice)
|
|
169
|
+
2. Let the agent interview you if needed
|
|
170
|
+
3. Confirm the plan (or just let ultrawork handle it)
|
|
171
|
+
4. Walk away
|
|
172
|
+
5. Come back to completed, verified, production-ready work
|
|
173
|
+
|
|
174
|
+
**If you can't do this, something in the system needs to improve.**
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## The Future We're Building
|
|
179
|
+
|
|
180
|
+
A world where:
|
|
181
|
+
- Human developers focus on **what** to build, not **how** to get AI to build it
|
|
182
|
+
- Code quality is independent of who (or what) wrote it
|
|
183
|
+
- Complex projects are as easy as simple ones (just take longer)
|
|
184
|
+
- "Prompt engineering" becomes as obsolete as "compiler debugging"
|
|
185
|
+
|
|
186
|
+
**The agent should be invisible.** Not in the sense that it's hidden, but in the sense that it just works - like electricity, like running water, like the internet.
|
|
187
|
+
|
|
188
|
+
You flip the switch. The light turns on. You don't think about the power grid.
|
|
189
|
+
|
|
190
|
+
That's the goal.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Further Reading
|
|
195
|
+
|
|
196
|
+
- [Overview](./guide/overview.md) - Getting started with Oh My OpenCode
|
|
197
|
+
- [Understanding the Orchestration System](./guide/understanding-orchestration-system.md) - How the agent coordination works
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "oh-my-opencode",
|
|
3
|
+
"version": "3.0.0-beta.11",
|
|
4
|
+
"description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"bin": {
|
|
9
|
+
"oh-my-opencode": "./bin/oh-my-opencode.js"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist",
|
|
13
|
+
"bin",
|
|
14
|
+
"postinstall.mjs"
|
|
15
|
+
],
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"import": "./dist/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./schema.json": "./dist/oh-my-opencode.schema.json"
|
|
22
|
+
},
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "bun build src/index.ts --outdir dist --target bun --format esm --external @ast-grep/napi && tsc --emitDeclarationOnly && bun build src/cli/index.ts --outdir dist/cli --target bun --format esm --external @ast-grep/napi && bun run build:schema",
|
|
25
|
+
"build:all": "bun run build && bun run build:binaries",
|
|
26
|
+
"build:binaries": "bun run script/build-binaries.ts",
|
|
27
|
+
"build:schema": "bun run script/build-schema.ts",
|
|
28
|
+
"clean": "rm -rf dist",
|
|
29
|
+
"postinstall": "node postinstall.mjs",
|
|
30
|
+
"prepublishOnly": "bun run clean && bun run build",
|
|
31
|
+
"typecheck": "tsc --noEmit",
|
|
32
|
+
"test": "bun test"
|
|
33
|
+
},
|
|
34
|
+
"keywords": [
|
|
35
|
+
"opencode",
|
|
36
|
+
"plugin",
|
|
37
|
+
"oracle",
|
|
38
|
+
"librarian",
|
|
39
|
+
"agents",
|
|
40
|
+
"ai",
|
|
41
|
+
"llm"
|
|
42
|
+
],
|
|
43
|
+
"author": "YeonGyu-Kim",
|
|
44
|
+
"license": "SUL-1.0",
|
|
45
|
+
"repository": {
|
|
46
|
+
"type": "git",
|
|
47
|
+
"url": "git+https://github.com/code-yeongyu/oh-my-opencode.git"
|
|
48
|
+
},
|
|
49
|
+
"bugs": {
|
|
50
|
+
"url": "https://github.com/code-yeongyu/oh-my-opencode/issues"
|
|
51
|
+
},
|
|
52
|
+
"homepage": "https://github.com/code-yeongyu/oh-my-opencode#readme",
|
|
53
|
+
"dependencies": {
|
|
54
|
+
"@ast-grep/cli": "^0.40.0",
|
|
55
|
+
"@ast-grep/napi": "^0.40.0",
|
|
56
|
+
"@clack/prompts": "^0.11.0",
|
|
57
|
+
"@code-yeongyu/comment-checker": "^0.6.1",
|
|
58
|
+
"@modelcontextprotocol/sdk": "^1.25.1",
|
|
59
|
+
"@opencode-ai/plugin": "^1.1.19",
|
|
60
|
+
"@opencode-ai/sdk": "^1.1.19",
|
|
61
|
+
"commander": "^14.0.2",
|
|
62
|
+
"detect-libc": "^2.0.0",
|
|
63
|
+
"js-yaml": "^4.1.1",
|
|
64
|
+
"jsonc-parser": "^3.3.1",
|
|
65
|
+
"picocolors": "^1.1.1",
|
|
66
|
+
"picomatch": "^4.0.2",
|
|
67
|
+
"zod": "^4.1.8"
|
|
68
|
+
},
|
|
69
|
+
"devDependencies": {
|
|
70
|
+
"@types/js-yaml": "^4.0.9",
|
|
71
|
+
"@types/picomatch": "^3.0.2",
|
|
72
|
+
"bun-types": "latest",
|
|
73
|
+
"typescript": "^5.7.3"
|
|
74
|
+
},
|
|
75
|
+
"optionalDependencies": {
|
|
76
|
+
"oh-my-opencode-darwin-arm64": "3.0.0-beta.11",
|
|
77
|
+
"oh-my-opencode-darwin-x64": "3.0.0-beta.11",
|
|
78
|
+
"oh-my-opencode-linux-arm64": "3.0.0-beta.11",
|
|
79
|
+
"oh-my-opencode-linux-arm64-musl": "3.0.0-beta.11",
|
|
80
|
+
"oh-my-opencode-linux-x64": "3.0.0-beta.11",
|
|
81
|
+
"oh-my-opencode-linux-x64-musl": "3.0.0-beta.11",
|
|
82
|
+
"oh-my-opencode-windows-x64": "3.0.0-beta.11"
|
|
83
|
+
},
|
|
84
|
+
"trustedDependencies": [
|
|
85
|
+
"@ast-grep/cli",
|
|
86
|
+
"@ast-grep/napi",
|
|
87
|
+
"@code-yeongyu/comment-checker"
|
|
88
|
+
]
|
|
89
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "oh-my-opencode-darwin-arm64",
|
|
3
|
+
"version": "3.0.0-beta.11",
|
|
4
|
+
"description": "Platform-specific binary for oh-my-opencode (darwin-arm64)",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/code-yeongyu/oh-my-opencode"
|
|
9
|
+
},
|
|
10
|
+
"os": [
|
|
11
|
+
"darwin"
|
|
12
|
+
],
|
|
13
|
+
"cpu": [
|
|
14
|
+
"arm64"
|
|
15
|
+
],
|
|
16
|
+
"files": [
|
|
17
|
+
"bin"
|
|
18
|
+
],
|
|
19
|
+
"bin": {
|
|
20
|
+
"oh-my-opencode": "./bin/oh-my-opencode"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "oh-my-opencode-darwin-x64",
|
|
3
|
+
"version": "3.0.0-beta.11",
|
|
4
|
+
"description": "Platform-specific binary for oh-my-opencode (darwin-x64)",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/code-yeongyu/oh-my-opencode"
|
|
9
|
+
},
|
|
10
|
+
"os": [
|
|
11
|
+
"darwin"
|
|
12
|
+
],
|
|
13
|
+
"cpu": [
|
|
14
|
+
"x64"
|
|
15
|
+
],
|
|
16
|
+
"files": [
|
|
17
|
+
"bin"
|
|
18
|
+
],
|
|
19
|
+
"bin": {
|
|
20
|
+
"oh-my-opencode": "./bin/oh-my-opencode"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "oh-my-opencode-linux-arm64",
|
|
3
|
+
"version": "3.0.0-beta.11",
|
|
4
|
+
"description": "Platform-specific binary for oh-my-opencode (linux-arm64)",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/code-yeongyu/oh-my-opencode"
|
|
9
|
+
},
|
|
10
|
+
"os": [
|
|
11
|
+
"linux"
|
|
12
|
+
],
|
|
13
|
+
"cpu": [
|
|
14
|
+
"arm64"
|
|
15
|
+
],
|
|
16
|
+
"libc": [
|
|
17
|
+
"glibc"
|
|
18
|
+
],
|
|
19
|
+
"files": [
|
|
20
|
+
"bin"
|
|
21
|
+
],
|
|
22
|
+
"bin": {
|
|
23
|
+
"oh-my-opencode": "./bin/oh-my-opencode"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "oh-my-opencode-linux-arm64-musl",
|
|
3
|
+
"version": "3.0.0-beta.11",
|
|
4
|
+
"description": "Platform-specific binary for oh-my-opencode (linux-arm64-musl)",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/code-yeongyu/oh-my-opencode"
|
|
9
|
+
},
|
|
10
|
+
"os": [
|
|
11
|
+
"linux"
|
|
12
|
+
],
|
|
13
|
+
"cpu": [
|
|
14
|
+
"arm64"
|
|
15
|
+
],
|
|
16
|
+
"libc": [
|
|
17
|
+
"musl"
|
|
18
|
+
],
|
|
19
|
+
"files": [
|
|
20
|
+
"bin"
|
|
21
|
+
],
|
|
22
|
+
"bin": {
|
|
23
|
+
"oh-my-opencode": "./bin/oh-my-opencode"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "oh-my-opencode-linux-x64",
|
|
3
|
+
"version": "3.0.0-beta.11",
|
|
4
|
+
"description": "Platform-specific binary for oh-my-opencode (linux-x64)",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/code-yeongyu/oh-my-opencode"
|
|
9
|
+
},
|
|
10
|
+
"os": [
|
|
11
|
+
"linux"
|
|
12
|
+
],
|
|
13
|
+
"cpu": [
|
|
14
|
+
"x64"
|
|
15
|
+
],
|
|
16
|
+
"libc": [
|
|
17
|
+
"glibc"
|
|
18
|
+
],
|
|
19
|
+
"files": [
|
|
20
|
+
"bin"
|
|
21
|
+
],
|
|
22
|
+
"bin": {
|
|
23
|
+
"oh-my-opencode": "./bin/oh-my-opencode"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "oh-my-opencode-linux-x64-musl",
|
|
3
|
+
"version": "3.0.0-beta.11",
|
|
4
|
+
"description": "Platform-specific binary for oh-my-opencode (linux-x64-musl)",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/code-yeongyu/oh-my-opencode"
|
|
9
|
+
},
|
|
10
|
+
"os": [
|
|
11
|
+
"linux"
|
|
12
|
+
],
|
|
13
|
+
"cpu": [
|
|
14
|
+
"x64"
|
|
15
|
+
],
|
|
16
|
+
"libc": [
|
|
17
|
+
"musl"
|
|
18
|
+
],
|
|
19
|
+
"files": [
|
|
20
|
+
"bin"
|
|
21
|
+
],
|
|
22
|
+
"bin": {
|
|
23
|
+
"oh-my-opencode": "./bin/oh-my-opencode"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "oh-my-opencode-windows-x64",
|
|
3
|
+
"version": "3.0.0-beta.11",
|
|
4
|
+
"description": "Platform-specific binary for oh-my-opencode (windows-x64)",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/code-yeongyu/oh-my-opencode"
|
|
9
|
+
},
|
|
10
|
+
"os": [
|
|
11
|
+
"win32"
|
|
12
|
+
],
|
|
13
|
+
"cpu": [
|
|
14
|
+
"x64"
|
|
15
|
+
],
|
|
16
|
+
"files": [
|
|
17
|
+
"bin"
|
|
18
|
+
],
|
|
19
|
+
"bin": {
|
|
20
|
+
"oh-my-opencode": "./bin/oh-my-opencode.exe"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// postinstall.mjs
|
|
2
|
+
// Runs after npm install to verify platform binary is available
|
|
3
|
+
|
|
4
|
+
import { createRequire } from "node:module";
|
|
5
|
+
import { getPlatformPackage, getBinaryPath } from "./bin/platform.js";
|
|
6
|
+
|
|
7
|
+
const require = createRequire(import.meta.url);
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Detect libc family on Linux
|
|
11
|
+
*/
|
|
12
|
+
function getLibcFamily() {
|
|
13
|
+
if (process.platform !== "linux") {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
try {
|
|
18
|
+
const detectLibc = require("detect-libc");
|
|
19
|
+
return detectLibc.familySync();
|
|
20
|
+
} catch {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function main() {
|
|
26
|
+
const { platform, arch } = process;
|
|
27
|
+
const libcFamily = getLibcFamily();
|
|
28
|
+
|
|
29
|
+
try {
|
|
30
|
+
const pkg = getPlatformPackage({ platform, arch, libcFamily });
|
|
31
|
+
const binPath = getBinaryPath(pkg, platform);
|
|
32
|
+
|
|
33
|
+
// Try to resolve the binary
|
|
34
|
+
require.resolve(binPath);
|
|
35
|
+
console.log(`✓ oh-my-opencode binary installed for ${platform}-${arch}`);
|
|
36
|
+
} catch (error) {
|
|
37
|
+
console.warn(`⚠ oh-my-opencode: ${error.message}`);
|
|
38
|
+
console.warn(` The CLI may not work on this platform.`);
|
|
39
|
+
// Don't fail installation - let user try anyway
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
main();
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
// script/build-binaries.ts
|
|
3
|
+
// Build platform-specific binaries for CLI distribution
|
|
4
|
+
|
|
5
|
+
import { $ } from "bun";
|
|
6
|
+
import { existsSync } from "node:fs";
|
|
7
|
+
import { join } from "node:path";
|
|
8
|
+
|
|
9
|
+
interface PlatformTarget {
|
|
10
|
+
dir: string;
|
|
11
|
+
target: string;
|
|
12
|
+
binary: string;
|
|
13
|
+
description: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const PLATFORMS: PlatformTarget[] = [
|
|
17
|
+
{ dir: "darwin-arm64", target: "bun-darwin-arm64", binary: "oh-my-opencode", description: "macOS ARM64" },
|
|
18
|
+
{ dir: "darwin-x64", target: "bun-darwin-x64", binary: "oh-my-opencode", description: "macOS x64" },
|
|
19
|
+
{ dir: "linux-x64", target: "bun-linux-x64", binary: "oh-my-opencode", description: "Linux x64 (glibc)" },
|
|
20
|
+
{ dir: "linux-arm64", target: "bun-linux-arm64", binary: "oh-my-opencode", description: "Linux ARM64 (glibc)" },
|
|
21
|
+
{ dir: "linux-x64-musl", target: "bun-linux-x64-musl", binary: "oh-my-opencode", description: "Linux x64 (musl)" },
|
|
22
|
+
{ dir: "linux-arm64-musl", target: "bun-linux-arm64-musl", binary: "oh-my-opencode", description: "Linux ARM64 (musl)" },
|
|
23
|
+
{ dir: "windows-x64", target: "bun-windows-x64", binary: "oh-my-opencode.exe", description: "Windows x64" },
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
const ENTRY_POINT = "src/cli/index.ts";
|
|
27
|
+
|
|
28
|
+
async function buildPlatform(platform: PlatformTarget): Promise<boolean> {
|
|
29
|
+
const outfile = join("packages", platform.dir, "bin", platform.binary);
|
|
30
|
+
|
|
31
|
+
console.log(`\n📦 Building ${platform.description}...`);
|
|
32
|
+
console.log(` Target: ${platform.target}`);
|
|
33
|
+
console.log(` Output: ${outfile}`);
|
|
34
|
+
|
|
35
|
+
try {
|
|
36
|
+
await $`bun build --compile --minify --sourcemap --bytecode --target=${platform.target} ${ENTRY_POINT} --outfile=${outfile}`;
|
|
37
|
+
|
|
38
|
+
// Verify binary exists
|
|
39
|
+
if (!existsSync(outfile)) {
|
|
40
|
+
console.error(` ❌ Binary not found after build: ${outfile}`);
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Verify binary with file command (skip on Windows host for non-Windows targets)
|
|
45
|
+
if (process.platform !== "win32") {
|
|
46
|
+
const fileInfo = await $`file ${outfile}`.text();
|
|
47
|
+
console.log(` ✓ ${fileInfo.trim()}`);
|
|
48
|
+
} else {
|
|
49
|
+
console.log(` ✓ Binary created successfully`);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return true;
|
|
53
|
+
} catch (error) {
|
|
54
|
+
console.error(` ❌ Build failed: ${error}`);
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
async function main() {
|
|
60
|
+
console.log("🔨 Building oh-my-opencode platform binaries");
|
|
61
|
+
console.log(` Entry point: ${ENTRY_POINT}`);
|
|
62
|
+
console.log(` Platforms: ${PLATFORMS.length}`);
|
|
63
|
+
|
|
64
|
+
// Verify entry point exists
|
|
65
|
+
if (!existsSync(ENTRY_POINT)) {
|
|
66
|
+
console.error(`\n❌ Entry point not found: ${ENTRY_POINT}`);
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const results: { platform: string; success: boolean }[] = [];
|
|
71
|
+
|
|
72
|
+
for (const platform of PLATFORMS) {
|
|
73
|
+
const success = await buildPlatform(platform);
|
|
74
|
+
results.push({ platform: platform.description, success });
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Summary
|
|
78
|
+
console.log("\n" + "=".repeat(50));
|
|
79
|
+
console.log("Build Summary:");
|
|
80
|
+
console.log("=".repeat(50));
|
|
81
|
+
|
|
82
|
+
const succeeded = results.filter(r => r.success).length;
|
|
83
|
+
const failed = results.filter(r => !r.success).length;
|
|
84
|
+
|
|
85
|
+
for (const result of results) {
|
|
86
|
+
const icon = result.success ? "✓" : "✗";
|
|
87
|
+
console.log(` ${icon} ${result.platform}`);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
console.log("=".repeat(50));
|
|
91
|
+
console.log(`Total: ${succeeded} succeeded, ${failed} failed`);
|
|
92
|
+
|
|
93
|
+
if (failed > 0) {
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
console.log("\n✅ All platform binaries built successfully!\n");
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
main().catch((error) => {
|
|
101
|
+
console.error("Fatal error:", error);
|
|
102
|
+
process.exit(1);
|
|
103
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
import * as z from "zod"
|
|
3
|
+
import { OhMyOpenCodeConfigSchema } from "../src/config/schema"
|
|
4
|
+
|
|
5
|
+
const SCHEMA_OUTPUT_PATH = "assets/oh-my-opencode.schema.json"
|
|
6
|
+
|
|
7
|
+
async function main() {
|
|
8
|
+
console.log("Generating JSON Schema...")
|
|
9
|
+
|
|
10
|
+
const jsonSchema = z.toJSONSchema(OhMyOpenCodeConfigSchema, {
|
|
11
|
+
io: "input",
|
|
12
|
+
target: "draft-7",
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
const finalSchema = {
|
|
16
|
+
$schema: "http://json-schema.org/draft-07/schema#",
|
|
17
|
+
$id: "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json",
|
|
18
|
+
title: "Oh My OpenCode Configuration",
|
|
19
|
+
description: "Configuration schema for oh-my-opencode plugin",
|
|
20
|
+
...jsonSchema,
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
await Bun.write(SCHEMA_OUTPUT_PATH, JSON.stringify(finalSchema, null, 2))
|
|
24
|
+
|
|
25
|
+
console.log(`✓ JSON Schema generated: ${SCHEMA_OUTPUT_PATH}`)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
main()
|