oh-my-opencode 4.5.1 → 4.5.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +33 -18
- package/README.ko.md +33 -18
- package/README.md +82 -24
- package/README.ru.md +33 -18
- package/README.zh-cn.md +45 -24
- package/bin/oh-my-opencode.js +47 -2
- package/bin/oh-my-opencode.test.ts +174 -0
- package/bin/platform.d.ts +6 -0
- package/bin/platform.js +19 -0
- package/bin/platform.test.ts +66 -1
- package/dist/cli/cli-program.d.ts +18 -0
- package/dist/cli/index.js +28472 -26159
- package/dist/cli/install-codex/codex-cache-bundled-mcps.d.ts +5 -0
- package/dist/cli/install-codex/codex-cache-command-shim.d.ts +1 -0
- package/dist/cli/install-codex/codex-cache-legacy-bins.d.ts +3 -0
- package/dist/cli/install-codex/codex-cache-local-dependencies.d.ts +1 -0
- package/dist/cli/install-codex/codex-cache-paths.d.ts +2 -0
- package/dist/cli/install-codex/codex-cache.d.ts +31 -0
- package/dist/cli/install-codex/codex-config-toml.d.ts +11 -0
- package/dist/cli/install-codex/codex-hook-trust.d.ts +6 -0
- package/dist/cli/install-codex/codex-marketplace-snapshot.d.ts +15 -0
- package/dist/cli/install-codex/codex-marketplace.d.ts +9 -0
- package/dist/cli/install-codex/codex-multi-agent-v2-config.d.ts +1 -0
- package/dist/cli/install-codex/codex-process.d.ts +2 -0
- package/dist/cli/install-codex/index.d.ts +7 -0
- package/dist/cli/install-codex/install-codex.d.ts +17 -0
- package/dist/cli/install-codex/link-cached-plugin-agents.d.ts +12 -0
- package/dist/cli/install-codex/toml-section-editor.d.ts +9 -0
- package/dist/cli/install-codex/types.d.ts +56 -0
- package/dist/cli/star-request.d.ts +2 -0
- package/dist/cli/tui-install-prompts.d.ts +3 -2
- package/dist/cli/types.d.ts +8 -0
- package/dist/config/schema/agent-names.d.ts +4 -1
- package/dist/config/schema/commands.d.ts +1 -2
- package/dist/config/schema/oh-my-opencode-config.d.ts +5 -3
- package/dist/create-managers.d.ts +1 -0
- package/dist/features/background-agent/parent-wake-message-activity.d.ts +23 -0
- package/dist/features/background-agent/parent-wake-notifier.d.ts +0 -1
- package/dist/features/boulder-state/storage.d.ts +1 -1
- package/dist/features/builtin-commands/templates/refactor.d.ts +1 -1
- package/dist/features/builtin-commands/templates/remove-ai-slops.d.ts +2 -2
- package/dist/features/builtin-commands/types.d.ts +1 -1
- package/dist/features/builtin-skills/skill-file-loader.d.ts +4 -0
- package/dist/features/builtin-skills/skills/index.d.ts +4 -1
- package/dist/features/builtin-skills/skills/init-deep.d.ts +2 -0
- package/dist/features/builtin-skills/skills/remove-ai-slops.d.ts +2 -0
- package/dist/features/builtin-skills/skills/security-research.d.ts +2 -0
- package/dist/features/builtin-skills/skills/security-review.d.ts +2 -0
- package/dist/features/opencode-runtime-skills/index.d.ts +2 -0
- package/dist/features/opencode-runtime-skills/runtime-skill-config.d.ts +17 -0
- package/dist/features/opencode-runtime-skills/skill-markdown.d.ts +7 -0
- package/dist/features/opencode-runtime-skills/source-server.d.ts +8 -0
- package/dist/hooks/claude-code-hooks/hook-text.d.ts +2 -0
- package/dist/hooks/session-recovery/storage/latest-assistant-message.d.ts +5 -0
- package/dist/hooks/session-recovery/storage/thinking-prepend.d.ts +3 -0
- package/dist/hooks/thinking-block-validator/hook.d.ts +0 -18
- package/dist/hooks/todo-continuation-enforcer/pending-question-detection.d.ts +4 -0
- package/dist/index.js +1684 -1801
- package/dist/oh-my-opencode.schema.json +4 -2
- package/dist/plugin-handlers/config-handler.d.ts +2 -1
- package/dist/shared/external-plugin-detector.d.ts +8 -0
- package/dist/shared/prompt-async-gate/message-inspection-error.d.ts +1 -0
- package/dist/shared/prompt-async-gate/pending-tool-turn.d.ts +1 -0
- package/dist/shared/prompt-async-gate/prompt-message-state.d.ts +8 -0
- package/dist/shared/prompt-timeout-context.d.ts +2 -0
- package/dist/testing/create-plugin-module.d.ts +5 -1
- package/dist/tools/delegate-task/sync-prompt-sender.d.ts +2 -2
- package/package.json +31 -16
- package/packages/ast-grep-mcp/dist/cli.js +245 -40
- package/packages/lsp-tools-mcp/dist/cli.js +1 -1
- package/packages/omo-codex/marketplace.json +17 -0
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +35 -0
- package/packages/omo-codex/plugin/.mcp.json +14 -0
- package/packages/omo-codex/plugin/README.md +13 -0
- package/packages/omo-codex/plugin/components/comment-checker/.gitattributes +13 -0
- package/packages/omo-codex/plugin/components/comment-checker/.github/CODEOWNERS +12 -0
- package/packages/omo-codex/plugin/components/comment-checker/.github/ISSUE_TEMPLATE/bug.yml +40 -0
- package/packages/omo-codex/plugin/components/comment-checker/.github/ISSUE_TEMPLATE/feature.yml +27 -0
- package/packages/omo-codex/plugin/components/comment-checker/.github/branch-ruleset.json +45 -0
- package/packages/omo-codex/plugin/components/comment-checker/.github/dependabot.yml +16 -0
- package/packages/omo-codex/plugin/components/comment-checker/.github/pull_request_template.md +19 -0
- package/packages/omo-codex/plugin/components/comment-checker/.github/workflows/ci.yml +47 -0
- package/packages/omo-codex/plugin/components/comment-checker/.github/workflows/publish.yml +51 -0
- package/packages/omo-codex/plugin/components/comment-checker/AGENTS.md +35 -0
- package/packages/omo-codex/plugin/components/comment-checker/CHANGELOG.md +33 -0
- package/packages/omo-codex/plugin/components/comment-checker/LICENSE +21 -0
- package/packages/omo-codex/plugin/components/comment-checker/NOTICE +6 -0
- package/packages/omo-codex/plugin/components/comment-checker/README.md +87 -0
- package/packages/omo-codex/plugin/components/comment-checker/biome.json +48 -0
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +17 -0
- package/packages/omo-codex/plugin/components/comment-checker/package.json +57 -0
- package/packages/omo-codex/plugin/components/comment-checker/skills/comment-checker/SKILL.md +16 -0
- package/packages/omo-codex/plugin/components/comment-checker/src/cli.ts +12 -0
- package/packages/omo-codex/plugin/components/comment-checker/src/codex-hook.ts +205 -0
- package/packages/omo-codex/plugin/components/comment-checker/src/core.ts +361 -0
- package/packages/omo-codex/plugin/components/comment-checker/src/runner.ts +195 -0
- package/packages/omo-codex/plugin/components/comment-checker/test/codex-hook-newline.test.ts +52 -0
- package/packages/omo-codex/plugin/components/comment-checker/test/codex-hook.test.ts +368 -0
- package/packages/omo-codex/plugin/components/comment-checker/test/fixtures/post-tool-use.json +15 -0
- package/packages/omo-codex/plugin/components/comment-checker/test/package-smoke.test.ts +93 -0
- package/packages/omo-codex/plugin/components/comment-checker/test/runner.test.ts +66 -0
- package/packages/omo-codex/plugin/components/comment-checker/tsconfig.build.json +12 -0
- package/packages/omo-codex/plugin/components/comment-checker/tsconfig.json +27 -0
- package/packages/omo-codex/plugin/components/comment-checker/vitest.config.ts +9 -0
- package/packages/omo-codex/plugin/components/lsp/.gitattributes +13 -0
- package/packages/omo-codex/plugin/components/lsp/.github/CODEOWNERS +1 -0
- package/packages/omo-codex/plugin/components/lsp/.github/ISSUE_TEMPLATE/bug.yml +26 -0
- package/packages/omo-codex/plugin/components/lsp/.github/ISSUE_TEMPLATE/feature.yml +19 -0
- package/packages/omo-codex/plugin/components/lsp/.github/branch-ruleset.json +45 -0
- package/packages/omo-codex/plugin/components/lsp/.github/dependabot.yml +11 -0
- package/packages/omo-codex/plugin/components/lsp/.github/pull_request_template.md +11 -0
- package/packages/omo-codex/plugin/components/lsp/.github/workflows/ci.yml +56 -0
- package/packages/omo-codex/plugin/components/lsp/.github/workflows/publish.yml +60 -0
- package/packages/omo-codex/plugin/components/lsp/.mcp.json +9 -0
- package/packages/omo-codex/plugin/components/lsp/AGENTS.md +25 -0
- package/packages/omo-codex/plugin/components/lsp/CHANGELOG.md +25 -0
- package/packages/omo-codex/plugin/components/lsp/LICENSE +21 -0
- package/packages/omo-codex/plugin/components/lsp/NOTICE +3 -0
- package/packages/omo-codex/plugin/components/lsp/README.md +148 -0
- package/packages/omo-codex/plugin/components/lsp/biome.json +48 -0
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +17 -0
- package/packages/omo-codex/plugin/components/lsp/package.json +64 -0
- package/packages/omo-codex/plugin/components/lsp/scripts/build-lsp-tools.mjs +46 -0
- package/packages/omo-codex/plugin/components/lsp/scripts/build-lsp-tools.test.mjs +104 -0
- package/packages/omo-codex/plugin/components/lsp/scripts/clean-dist.mjs +5 -0
- package/packages/omo-codex/plugin/components/lsp/scripts/test.mjs +8 -0
- package/packages/omo-codex/plugin/components/lsp/skills/lsp/SKILL.md +35 -0
- package/packages/omo-codex/plugin/components/lsp/src/cli.ts +44 -0
- package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +285 -0
- package/packages/omo-codex/plugin/components/lsp/test/codex-hook.test.ts +358 -0
- package/packages/omo-codex/plugin/components/lsp/test/fixtures/broken.py +1 -0
- package/packages/omo-codex/plugin/components/lsp/test/fixtures/post-tool-use.json +15 -0
- package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +153 -0
- package/packages/omo-codex/plugin/components/lsp/tsconfig.build.json +12 -0
- package/packages/omo-codex/plugin/components/lsp/tsconfig.json +27 -0
- package/packages/omo-codex/plugin/components/lsp/vitest.config.ts +9 -0
- package/packages/omo-codex/plugin/components/rules/.codex-plugin/plugin.json +3 -0
- package/packages/omo-codex/plugin/components/rules/.gitattributes +13 -0
- package/packages/omo-codex/plugin/components/rules/.github/CODEOWNERS +12 -0
- package/packages/omo-codex/plugin/components/rules/.github/ISSUE_TEMPLATE/bug.yml +49 -0
- package/packages/omo-codex/plugin/components/rules/.github/ISSUE_TEMPLATE/feature.yml +27 -0
- package/packages/omo-codex/plugin/components/rules/.github/branch-ruleset.json +45 -0
- package/packages/omo-codex/plugin/components/rules/.github/dependabot.yml +16 -0
- package/packages/omo-codex/plugin/components/rules/.github/pull_request_template.md +20 -0
- package/packages/omo-codex/plugin/components/rules/.github/workflows/ci.yml +47 -0
- package/packages/omo-codex/plugin/components/rules/.github/workflows/publish.yml +51 -0
- package/packages/omo-codex/plugin/components/rules/AGENTS.md +34 -0
- package/packages/omo-codex/plugin/components/rules/CHANGELOG.md +19 -0
- package/packages/omo-codex/plugin/components/rules/LICENSE +21 -0
- package/packages/omo-codex/plugin/components/rules/NOTICE +15 -0
- package/packages/omo-codex/plugin/components/rules/README.md +124 -0
- package/packages/omo-codex/plugin/components/rules/biome.json +48 -0
- package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus.md +209 -0
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +54 -0
- package/packages/omo-codex/plugin/components/rules/package.json +62 -0
- package/packages/omo-codex/plugin/components/rules/scripts/bench-codex-rules.mjs +268 -0
- package/packages/omo-codex/plugin/components/rules/skills/rules/SKILL.md +34 -0
- package/packages/omo-codex/plugin/components/rules/src/cli.ts +143 -0
- package/packages/omo-codex/plugin/components/rules/src/codex-hook-options.ts +4 -0
- package/packages/omo-codex/plugin/components/rules/src/codex-hook.ts +238 -0
- package/packages/omo-codex/plugin/components/rules/src/config.ts +107 -0
- package/packages/omo-codex/plugin/components/rules/src/context-pressure.ts +26 -0
- package/packages/omo-codex/plugin/components/rules/src/debug-log.ts +65 -0
- package/packages/omo-codex/plugin/components/rules/src/dynamic-target-fingerprints.ts +98 -0
- package/packages/omo-codex/plugin/components/rules/src/hook-output.ts +19 -0
- package/packages/omo-codex/plugin/components/rules/src/path-utils.ts +29 -0
- package/packages/omo-codex/plugin/components/rules/src/persistent-cache.ts +234 -0
- package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +104 -0
- package/packages/omo-codex/plugin/components/rules/src/post-compact-claim.ts +13 -0
- package/packages/omo-codex/plugin/components/rules/src/post-compact-state.ts +45 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/cache.ts +64 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/constants.ts +115 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/engine.ts +535 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/errors.ts +13 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/finder-cache.ts +73 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/finder-paths.ts +47 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/finder-sources.ts +50 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/finder.ts +207 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/formatter.ts +123 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/matcher.ts +142 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/ordering.ts +33 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/parser.ts +326 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/plugin-root.ts +55 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/project-root.ts +30 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/scanner.ts +162 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/truncator.ts +67 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/types.ts +141 -0
- package/packages/omo-codex/plugin/components/rules/src/rules-engine-factory.ts +24 -0
- package/packages/omo-codex/plugin/components/rules/src/session-state-lock.ts +47 -0
- package/packages/omo-codex/plugin/components/rules/src/static-injection.ts +56 -0
- package/packages/omo-codex/plugin/components/rules/src/tool-paths.ts +192 -0
- package/packages/omo-codex/plugin/components/rules/src/transcript-rule-filter.ts +44 -0
- package/packages/omo-codex/plugin/components/rules/src/transcript-search.ts +108 -0
- package/packages/omo-codex/plugin/components/rules/test/bundled-rules-priority.test.ts +107 -0
- package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +268 -0
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-context-pressure.test.ts +243 -0
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-performance.test.ts +99 -0
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +132 -0
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +156 -0
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-dedup.test.ts +299 -0
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-lock.test.ts +46 -0
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-process.test.ts +83 -0
- package/packages/omo-codex/plugin/components/rules/test/codex-hook.test.ts +667 -0
- package/packages/omo-codex/plugin/components/rules/test/engine.test.ts +192 -0
- package/packages/omo-codex/plugin/components/rules/test/finder.test.ts +102 -0
- package/packages/omo-codex/plugin/components/rules/test/formatter.test.ts +168 -0
- package/packages/omo-codex/plugin/components/rules/test/hook-output.test.ts +42 -0
- package/packages/omo-codex/plugin/components/rules/test/matcher.test.ts +206 -0
- package/packages/omo-codex/plugin/components/rules/test/package-smoke.test.ts +151 -0
- package/packages/omo-codex/plugin/components/rules/test/persistent-cache.test.ts +63 -0
- package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +172 -0
- package/packages/omo-codex/plugin/components/rules/test/post-compact-test-fixture.ts +196 -0
- package/packages/omo-codex/plugin/components/rules/test/scanner.test.ts +63 -0
- package/packages/omo-codex/plugin/components/rules/test/tool-paths.test.ts +198 -0
- package/packages/omo-codex/plugin/components/rules/tsconfig.build.json +12 -0
- package/packages/omo-codex/plugin/components/rules/tsconfig.json +27 -0
- package/packages/omo-codex/plugin/components/rules/vitest.config.ts +8 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/.gitattributes +13 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/AGENTS.md +43 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/CHANGELOG.md +5 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/LICENSE +21 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/NOTICE +5 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/README.md +55 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/biome.json +48 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +51 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +28 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/package.json +53 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/src/boulder-reader.ts +167 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/src/cli.ts +52 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/src/codex-hook.ts +66 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/src/directive.ts +6 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/src/index.ts +5 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/src/types.ts +23 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/test/boulder-reader.test.ts +63 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/test/cli.test.ts +124 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +160 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/test/fixtures/boulder-completed.json +19 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/test/fixtures/boulder-mixed-platforms.json +27 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/test/fixtures/boulder-single-codex-work.json +19 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/test/fixtures/plan-all-done.md +5 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/test/fixtures/plan-with-nested-checkboxes.md +11 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/test/fixtures/plan-with-unchecked.md +6 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/tsconfig.build.json +12 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/tsconfig.json +27 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/vitest.config.ts +10 -0
- package/packages/omo-codex/plugin/components/telemetry/AGENTS.md +37 -0
- package/packages/omo-codex/plugin/components/telemetry/README.md +102 -0
- package/packages/omo-codex/plugin/components/telemetry/biome.json +48 -0
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +16 -0
- package/packages/omo-codex/plugin/components/telemetry/package.json +56 -0
- package/packages/omo-codex/plugin/components/telemetry/src/atomic-write.ts +22 -0
- package/packages/omo-codex/plugin/components/telemetry/src/cli.ts +69 -0
- package/packages/omo-codex/plugin/components/telemetry/src/codex-hook.ts +49 -0
- package/packages/omo-codex/plugin/components/telemetry/src/data-path.ts +45 -0
- package/packages/omo-codex/plugin/components/telemetry/src/env-flags.ts +43 -0
- package/packages/omo-codex/plugin/components/telemetry/src/posthog-activity-state.ts +81 -0
- package/packages/omo-codex/plugin/components/telemetry/src/posthog.ts +165 -0
- package/packages/omo-codex/plugin/components/telemetry/src/product-identity.ts +35 -0
- package/packages/omo-codex/plugin/components/telemetry/test/codex-hook.test.ts +270 -0
- package/packages/omo-codex/plugin/components/telemetry/tsconfig.build.json +12 -0
- package/packages/omo-codex/plugin/components/telemetry/tsconfig.json +27 -0
- package/packages/omo-codex/plugin/components/telemetry/vitest.config.ts +8 -0
- package/packages/omo-codex/plugin/components/ultrawork/AGENTS.md +41 -0
- package/packages/omo-codex/plugin/components/ultrawork/CHANGELOG.md +25 -0
- package/packages/omo-codex/plugin/components/ultrawork/LICENSE +21 -0
- package/packages/omo-codex/plugin/components/ultrawork/NOTICE +5 -0
- package/packages/omo-codex/plugin/components/ultrawork/README.md +60 -0
- package/packages/omo-codex/plugin/components/ultrawork/agents/codex-ultrawork-reviewer.toml +17 -0
- package/packages/omo-codex/plugin/components/ultrawork/agents/explorer.toml +82 -0
- package/packages/omo-codex/plugin/components/ultrawork/agents/librarian.toml +221 -0
- package/packages/omo-codex/plugin/components/ultrawork/agents/metis.toml +65 -0
- package/packages/omo-codex/plugin/components/ultrawork/agents/momus.toml +69 -0
- package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +163 -0
- package/packages/omo-codex/plugin/components/ultrawork/biome.json +48 -0
- package/packages/omo-codex/plugin/components/ultrawork/directive.md +264 -0
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +16 -0
- package/packages/omo-codex/plugin/components/ultrawork/package.json +54 -0
- package/packages/omo-codex/plugin/components/ultrawork/src/cli.ts +50 -0
- package/packages/omo-codex/plugin/components/ultrawork/src/codex-hook.ts +84 -0
- package/packages/omo-codex/plugin/components/ultrawork/src/directive.ts +3 -0
- package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +252 -0
- package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +78 -0
- package/packages/omo-codex/plugin/components/ultrawork/tsconfig.build.json +12 -0
- package/packages/omo-codex/plugin/components/ultrawork/tsconfig.json +27 -0
- package/packages/omo-codex/plugin/components/ulw-loop/.gitattributes +13 -0
- package/packages/omo-codex/plugin/components/ulw-loop/AGENTS.md +48 -0
- package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +7 -0
- package/packages/omo-codex/plugin/components/ulw-loop/LICENSE +21 -0
- package/packages/omo-codex/plugin/components/ulw-loop/NOTICE +6 -0
- package/packages/omo-codex/plugin/components/ulw-loop/README.md +74 -0
- package/packages/omo-codex/plugin/components/ulw-loop/biome.json +48 -0
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +29 -0
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +55 -0
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/.gitkeep +0 -0
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +222 -0
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/agents/openai.yaml +6 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/.gitkeep +0 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +155 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-arg-parser.ts +95 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-commands.ts +156 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-output.ts +63 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-steering.ts +94 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +40 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +129 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-snapshot.ts +139 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +177 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/evidence.ts +122 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/goal-status.ts +88 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/paths.ts +73 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/plan-crud.ts +113 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/plan-io.ts +124 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate.ts +102 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/review-blockers.ts +81 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/steering.ts +270 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/types.ts +277 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint.test.ts +213 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-commands.test.ts +375 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-helpers.test.ts +250 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-steering.test.ts +407 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +169 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-snapshot.test.ts +156 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +275 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/evidence-criteria-gate.test.ts +100 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/evidence.test.ts +263 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/.gitkeep +0 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/codex-goal-snapshot.json +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/sample-brief.md +5 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/sample-plan.json +108 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/sample-quality-gate.json +18 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/steering-proposal.json +8 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/user-prompt-submit.json +10 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/goal-status.test.ts +327 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +164 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/paths.test.ts +62 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/plan-crud.test.ts +256 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/plan-io.test.ts +239 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate.test.ts +203 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/review-blockers.test.ts +180 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +353 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/types.test.ts +79 -0
- package/packages/omo-codex/plugin/components/ulw-loop/tsconfig.build.json +12 -0
- package/packages/omo-codex/plugin/components/ulw-loop/tsconfig.json +27 -0
- package/packages/omo-codex/plugin/components/ulw-loop/vitest.config.ts +10 -0
- package/packages/omo-codex/plugin/hooks/hooks.json +138 -0
- package/packages/omo-codex/plugin/package-lock.json +1750 -0
- package/packages/omo-codex/plugin/package.json +26 -0
- package/packages/omo-codex/plugin/scripts/build-bundled-mcp-runtimes.mjs +50 -0
- package/packages/omo-codex/plugin/scripts/build-components.mjs +23 -0
- package/packages/omo-codex/plugin/scripts/hook-status-message.mjs +46 -0
- package/packages/omo-codex/plugin/scripts/sync-skills.mjs +75 -0
- package/packages/omo-codex/plugin/skills/comment-checker/SKILL.md +16 -0
- package/packages/omo-codex/plugin/skills/debugging/SKILL.md +116 -0
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/00-setup.md +108 -0
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/02-investigate.md +130 -0
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/04-oracle-triple.md +136 -0
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/05-escalate.md +69 -0
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/06-fix.md +116 -0
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/08-qa.md +94 -0
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/09-cleanup.md +164 -0
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/partial-runtime-evidence.md +229 -0
- package/packages/omo-codex/plugin/skills/debugging/references/runtimes/bundled-js-binary.md +415 -0
- package/packages/omo-codex/plugin/skills/debugging/references/runtimes/go.md +252 -0
- package/packages/omo-codex/plugin/skills/debugging/references/runtimes/native-binary.md +484 -0
- package/packages/omo-codex/plugin/skills/debugging/references/runtimes/node.md +260 -0
- package/packages/omo-codex/plugin/skills/debugging/references/runtimes/python.md +248 -0
- package/packages/omo-codex/plugin/skills/debugging/references/runtimes/rust.md +234 -0
- package/packages/omo-codex/plugin/skills/debugging/references/tools/ghidra.md +212 -0
- package/packages/omo-codex/plugin/skills/debugging/references/tools/playwright-cli.md +194 -0
- package/packages/omo-codex/plugin/skills/debugging/references/tools/pwndbg.md +263 -0
- package/packages/omo-codex/plugin/skills/debugging/references/tools/pwntools.md +265 -0
- package/packages/omo-codex/plugin/skills/frontend-ui-ux/SKILL.md +77 -0
- package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +325 -0
- package/packages/omo-codex/plugin/skills/lsp/SKILL.md +35 -0
- package/packages/omo-codex/plugin/skills/programming/SKILL.md +463 -0
- package/packages/omo-codex/plugin/skills/programming/references/go/README.md +90 -0
- package/packages/omo-codex/plugin/skills/programming/references/go/backend-stack.md +641 -0
- package/packages/omo-codex/plugin/skills/programming/references/go/bootstrap.md +328 -0
- package/packages/omo-codex/plugin/skills/programming/references/go/bubbletea-v2.md +360 -0
- package/packages/omo-codex/plugin/skills/programming/references/go/cobra-stack.md +468 -0
- package/packages/omo-codex/plugin/skills/programming/references/go/concurrency.md +362 -0
- package/packages/omo-codex/plugin/skills/programming/references/go/data-modeling.md +329 -0
- package/packages/omo-codex/plugin/skills/programming/references/go/error-handling.md +359 -0
- package/packages/omo-codex/plugin/skills/programming/references/go/golangci-strict.md +236 -0
- package/packages/omo-codex/plugin/skills/programming/references/go/grpc-connect.md +375 -0
- package/packages/omo-codex/plugin/skills/programming/references/go/libraries.md +337 -0
- package/packages/omo-codex/plugin/skills/programming/references/go/one-liners.md +202 -0
- package/packages/omo-codex/plugin/skills/programming/references/go/sqlc-pgx.md +471 -0
- package/packages/omo-codex/plugin/skills/programming/references/go/testing.md +467 -0
- package/packages/omo-codex/plugin/skills/programming/references/go/type-patterns.md +298 -0
- package/packages/omo-codex/plugin/skills/programming/references/python/README.md +314 -0
- package/packages/omo-codex/plugin/skills/programming/references/python/async-anyio.md +442 -0
- package/packages/omo-codex/plugin/skills/programming/references/python/data-modeling.md +233 -0
- package/packages/omo-codex/plugin/skills/programming/references/python/data-processing.md +133 -0
- package/packages/omo-codex/plugin/skills/programming/references/python/error-handling.md +218 -0
- package/packages/omo-codex/plugin/skills/programming/references/python/fastapi-stack.md +316 -0
- package/packages/omo-codex/plugin/skills/programming/references/python/httpx2-optimization.md +360 -0
- package/packages/omo-codex/plugin/skills/programming/references/python/libraries.md +307 -0
- package/packages/omo-codex/plugin/skills/programming/references/python/one-liners.md +268 -0
- package/packages/omo-codex/plugin/skills/programming/references/python/orjson-stack.md +378 -0
- package/packages/omo-codex/plugin/skills/programming/references/python/pydantic-ai.md +285 -0
- package/packages/omo-codex/plugin/skills/programming/references/python/pyproject-strict.md +232 -0
- package/packages/omo-codex/plugin/skills/programming/references/python/textual-tui.md +201 -0
- package/packages/omo-codex/plugin/skills/programming/references/python/type-patterns.md +176 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust/README.md +317 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust/async-tokio.md +299 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust/axum-stack.md +467 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust/cargo-strict.md +317 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust/clap-stack.md +409 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust/concurrency.md +375 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust/libraries.md +439 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust/one-liners.md +291 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust/proptest-insta.md +429 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust/type-state.md +354 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust/unsafe-discipline.md +250 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust/zero-cost-safety.md +527 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust-ub/README.md +289 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust-ub/miri-sanitizers-loom.md +411 -0
- package/packages/omo-codex/plugin/skills/programming/references/rust-ub/ub-taxonomy.md +269 -0
- package/packages/omo-codex/plugin/skills/programming/references/typescript/README.md +195 -0
- package/packages/omo-codex/plugin/skills/programming/references/typescript/backend-hono.md +672 -0
- package/packages/omo-codex/plugin/skills/programming/references/typescript/bootstrap.md +199 -0
- package/packages/omo-codex/plugin/skills/programming/references/typescript/data-modeling.md +202 -0
- package/packages/omo-codex/plugin/skills/programming/references/typescript/error-handling.md +169 -0
- package/packages/omo-codex/plugin/skills/programming/references/typescript/tsconfig-strict.md +152 -0
- package/packages/omo-codex/plugin/skills/programming/references/typescript/type-patterns.md +196 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/go/check-no-excuse-rules.sh +173 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/go/new-project.py +138 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/.editorconfig +13 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/.golangci.yml +95 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/AGENTS.md.tmpl +24 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/README.md.tmpl +12 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/Taskfile.yml +40 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/ci.yml +37 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/config.go +24 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/gitignore +15 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/main.go.tmpl +22 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/go/templates/run.go +15 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/python/check-no-excuse-rules.py +687 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/python/new-project.py +172 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/python/new-script.py +116 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/rust/check-no-excuse-rules.py +296 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/rust/check-no-excuse-rules.sh +158 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/rust/new-project.py +175 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/typescript/check-no-excuse-rules.ts +282 -0
- package/packages/omo-codex/plugin/skills/programming/scripts/typescript/new-project.ts +177 -0
- package/packages/omo-codex/plugin/skills/refactor/SKILL.md +779 -0
- package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +333 -0
- package/packages/omo-codex/plugin/skills/review-work/SKILL.md +549 -0
- package/packages/omo-codex/plugin/skills/rules/SKILL.md +34 -0
- package/packages/omo-codex/plugin/skills/start-work/SKILL.md +129 -0
- package/packages/omo-codex/plugin/skills/ulw-loop/.gitkeep +0 -0
- package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +222 -0
- package/packages/omo-codex/plugin/skills/ulw-loop/agents/openai.yaml +6 -0
- package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +399 -0
- package/packages/omo-codex/plugin/test/aggregate.test.mjs +330 -0
- package/packages/omo-codex/plugin/test/component-bin-names.test.mjs +66 -0
- package/packages/omo-codex/plugin/test/hook-status-message.test.mjs +150 -0
- package/packages/omo-codex/plugin/test/sync-skills.test.mjs +199 -0
- package/packages/omo-codex/scripts/install/agents.mjs +84 -0
- package/packages/omo-codex/scripts/install/cache.mjs +245 -0
- package/packages/omo-codex/scripts/install/command-shim.mjs +1 -0
- package/packages/omo-codex/scripts/install/config.mjs +229 -0
- package/packages/omo-codex/scripts/install/hook-trust.mjs +84 -0
- package/packages/omo-codex/scripts/install/legacy-bins.mjs +57 -0
- package/packages/omo-codex/scripts/install/marketplace.mjs +104 -0
- package/packages/omo-codex/scripts/install/mcp-runtime-cache.mjs +77 -0
- package/packages/omo-codex/scripts/install/multi-agent-v2-config.mjs +32 -0
- package/packages/omo-codex/scripts/install/process.mjs +19 -0
- package/packages/omo-codex/scripts/install/snapshot.mjs +54 -0
- package/packages/omo-codex/scripts/install/toml-editor.mjs +47 -0
- package/packages/omo-codex/scripts/install/utils.mjs +15 -0
- package/packages/omo-codex/scripts/install-agent-links.test.mjs +104 -0
- package/packages/omo-codex/scripts/install-bin-links.test.mjs +123 -0
- package/packages/omo-codex/scripts/install-cache-copy.test.mjs +30 -0
- package/packages/omo-codex/scripts/install-config.test.mjs +118 -0
- package/packages/omo-codex/scripts/install-local.mjs +192 -0
- package/packages/omo-codex/scripts/install-local.test.mjs +379 -0
- package/packages/omo-codex/scripts/install-mcp-runtime.test.mjs +173 -0
- package/packages/omo-codex/scripts/install-test-fixtures.mjs +58 -0
- package/packages/omo-codex/scripts/sync-telemetry-component.mjs +115 -0
- package/packages/omo-codex/scripts/sync-telemetry-component.test.mjs +94 -0
- package/packages/shared-skills/index.mjs +5 -0
- package/packages/shared-skills/package.json +14 -0
- package/packages/shared-skills/skills/debugging/SKILL.md +116 -0
- package/packages/shared-skills/skills/debugging/references/methodology/00-setup.md +108 -0
- package/packages/shared-skills/skills/debugging/references/methodology/02-investigate.md +130 -0
- package/packages/shared-skills/skills/debugging/references/methodology/04-oracle-triple.md +136 -0
- package/packages/shared-skills/skills/debugging/references/methodology/05-escalate.md +69 -0
- package/packages/shared-skills/skills/debugging/references/methodology/06-fix.md +116 -0
- package/packages/shared-skills/skills/debugging/references/methodology/08-qa.md +94 -0
- package/packages/shared-skills/skills/debugging/references/methodology/09-cleanup.md +164 -0
- package/packages/shared-skills/skills/debugging/references/methodology/partial-runtime-evidence.md +229 -0
- package/packages/shared-skills/skills/debugging/references/runtimes/bundled-js-binary.md +415 -0
- package/packages/shared-skills/skills/debugging/references/runtimes/go.md +252 -0
- package/packages/shared-skills/skills/debugging/references/runtimes/native-binary.md +484 -0
- package/packages/shared-skills/skills/debugging/references/runtimes/node.md +260 -0
- package/packages/shared-skills/skills/debugging/references/runtimes/python.md +248 -0
- package/packages/shared-skills/skills/debugging/references/runtimes/rust.md +234 -0
- package/packages/shared-skills/skills/debugging/references/tools/ghidra.md +212 -0
- package/packages/shared-skills/skills/debugging/references/tools/playwright-cli.md +194 -0
- package/packages/shared-skills/skills/debugging/references/tools/pwndbg.md +263 -0
- package/packages/shared-skills/skills/debugging/references/tools/pwntools.md +265 -0
- package/packages/shared-skills/skills/frontend-ui-ux/SKILL.md +77 -0
- package/packages/shared-skills/skills/init-deep/SKILL.md +309 -0
- package/packages/shared-skills/skills/programming/SKILL.md +463 -0
- package/packages/shared-skills/skills/programming/references/go/README.md +90 -0
- package/packages/shared-skills/skills/programming/references/go/backend-stack.md +641 -0
- package/packages/shared-skills/skills/programming/references/go/bootstrap.md +328 -0
- package/packages/shared-skills/skills/programming/references/go/bubbletea-v2.md +360 -0
- package/packages/shared-skills/skills/programming/references/go/cobra-stack.md +468 -0
- package/packages/shared-skills/skills/programming/references/go/concurrency.md +362 -0
- package/packages/shared-skills/skills/programming/references/go/data-modeling.md +329 -0
- package/packages/shared-skills/skills/programming/references/go/error-handling.md +359 -0
- package/packages/shared-skills/skills/programming/references/go/golangci-strict.md +236 -0
- package/packages/shared-skills/skills/programming/references/go/grpc-connect.md +375 -0
- package/packages/shared-skills/skills/programming/references/go/libraries.md +337 -0
- package/packages/shared-skills/skills/programming/references/go/one-liners.md +202 -0
- package/packages/shared-skills/skills/programming/references/go/sqlc-pgx.md +471 -0
- package/packages/shared-skills/skills/programming/references/go/testing.md +467 -0
- package/packages/shared-skills/skills/programming/references/go/type-patterns.md +298 -0
- package/packages/shared-skills/skills/programming/references/python/README.md +314 -0
- package/packages/shared-skills/skills/programming/references/python/async-anyio.md +442 -0
- package/packages/shared-skills/skills/programming/references/python/data-modeling.md +233 -0
- package/packages/shared-skills/skills/programming/references/python/data-processing.md +133 -0
- package/packages/shared-skills/skills/programming/references/python/error-handling.md +218 -0
- package/packages/shared-skills/skills/programming/references/python/fastapi-stack.md +316 -0
- package/packages/shared-skills/skills/programming/references/python/httpx2-optimization.md +360 -0
- package/packages/shared-skills/skills/programming/references/python/libraries.md +307 -0
- package/packages/shared-skills/skills/programming/references/python/one-liners.md +268 -0
- package/packages/shared-skills/skills/programming/references/python/orjson-stack.md +378 -0
- package/packages/shared-skills/skills/programming/references/python/pydantic-ai.md +285 -0
- package/packages/shared-skills/skills/programming/references/python/pyproject-strict.md +232 -0
- package/packages/shared-skills/skills/programming/references/python/textual-tui.md +201 -0
- package/packages/shared-skills/skills/programming/references/python/type-patterns.md +176 -0
- package/packages/shared-skills/skills/programming/references/rust/README.md +317 -0
- package/packages/shared-skills/skills/programming/references/rust/async-tokio.md +299 -0
- package/packages/shared-skills/skills/programming/references/rust/axum-stack.md +467 -0
- package/packages/shared-skills/skills/programming/references/rust/cargo-strict.md +317 -0
- package/packages/shared-skills/skills/programming/references/rust/clap-stack.md +409 -0
- package/packages/shared-skills/skills/programming/references/rust/concurrency.md +375 -0
- package/packages/shared-skills/skills/programming/references/rust/libraries.md +439 -0
- package/packages/shared-skills/skills/programming/references/rust/one-liners.md +291 -0
- package/packages/shared-skills/skills/programming/references/rust/proptest-insta.md +429 -0
- package/packages/shared-skills/skills/programming/references/rust/type-state.md +354 -0
- package/packages/shared-skills/skills/programming/references/rust/unsafe-discipline.md +250 -0
- package/packages/shared-skills/skills/programming/references/rust/zero-cost-safety.md +527 -0
- package/packages/shared-skills/skills/programming/references/rust-ub/README.md +289 -0
- package/packages/shared-skills/skills/programming/references/rust-ub/miri-sanitizers-loom.md +411 -0
- package/packages/shared-skills/skills/programming/references/rust-ub/ub-taxonomy.md +269 -0
- package/packages/shared-skills/skills/programming/references/typescript/README.md +195 -0
- package/packages/shared-skills/skills/programming/references/typescript/backend-hono.md +672 -0
- package/packages/shared-skills/skills/programming/references/typescript/bootstrap.md +199 -0
- package/packages/shared-skills/skills/programming/references/typescript/data-modeling.md +202 -0
- package/packages/shared-skills/skills/programming/references/typescript/error-handling.md +169 -0
- package/packages/shared-skills/skills/programming/references/typescript/tsconfig-strict.md +152 -0
- package/packages/shared-skills/skills/programming/references/typescript/type-patterns.md +196 -0
- package/packages/shared-skills/skills/programming/scripts/go/check-no-excuse-rules.sh +173 -0
- package/packages/shared-skills/skills/programming/scripts/go/new-project.py +138 -0
- package/packages/shared-skills/skills/programming/scripts/go/templates/.editorconfig +13 -0
- package/packages/shared-skills/skills/programming/scripts/go/templates/.golangci.yml +95 -0
- package/packages/shared-skills/skills/programming/scripts/go/templates/AGENTS.md.tmpl +24 -0
- package/packages/shared-skills/skills/programming/scripts/go/templates/README.md.tmpl +12 -0
- package/packages/shared-skills/skills/programming/scripts/go/templates/Taskfile.yml +40 -0
- package/packages/shared-skills/skills/programming/scripts/go/templates/ci.yml +37 -0
- package/packages/shared-skills/skills/programming/scripts/go/templates/config.go +24 -0
- package/packages/shared-skills/skills/programming/scripts/go/templates/gitignore +15 -0
- package/packages/shared-skills/skills/programming/scripts/go/templates/main.go.tmpl +22 -0
- package/packages/shared-skills/skills/programming/scripts/go/templates/run.go +15 -0
- package/packages/shared-skills/skills/programming/scripts/python/check-no-excuse-rules.py +687 -0
- package/packages/shared-skills/skills/programming/scripts/python/new-project.py +172 -0
- package/packages/shared-skills/skills/programming/scripts/python/new-script.py +116 -0
- package/packages/shared-skills/skills/programming/scripts/rust/check-no-excuse-rules.py +296 -0
- package/packages/shared-skills/skills/programming/scripts/rust/check-no-excuse-rules.sh +158 -0
- package/packages/shared-skills/skills/programming/scripts/rust/new-project.py +175 -0
- package/packages/shared-skills/skills/programming/scripts/typescript/check-no-excuse-rules.ts +282 -0
- package/packages/shared-skills/skills/programming/scripts/typescript/new-project.ts +177 -0
- package/packages/shared-skills/skills/refactor/SKILL.md +763 -0
- package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +317 -0
- package/packages/shared-skills/skills/review-work/SKILL.md +549 -0
- package/packages/shared-skills/skills/start-work/SKILL.md +129 -0
- package/packages/shared-skills/skills/ulw-plan/SKILL.md +383 -0
- package/postinstall.mjs +6 -2
- package/dist/features/builtin-commands/templates/init-deep.d.ts +0 -1
- package/dist/features/builtin-skills/skills/ai-slop-remover.d.ts +0 -2
|
@@ -53,7 +53,10 @@
|
|
|
53
53
|
"frontend-ui-ux",
|
|
54
54
|
"git-master",
|
|
55
55
|
"review-work",
|
|
56
|
-
"ai-
|
|
56
|
+
"remove-ai-slops",
|
|
57
|
+
"init-deep",
|
|
58
|
+
"security-research",
|
|
59
|
+
"security-review",
|
|
57
60
|
"team-mode"
|
|
58
61
|
]
|
|
59
62
|
}
|
|
@@ -69,7 +72,6 @@
|
|
|
69
72
|
"items": {
|
|
70
73
|
"type": "string",
|
|
71
74
|
"enum": [
|
|
72
|
-
"init-deep",
|
|
73
75
|
"ralph-loop",
|
|
74
76
|
"ulw-loop",
|
|
75
77
|
"cancel-ralph",
|
|
@@ -4,9 +4,10 @@ export { resolveCategoryConfig } from "./category-config-resolver";
|
|
|
4
4
|
export interface ConfigHandlerDeps {
|
|
5
5
|
ctx: {
|
|
6
6
|
directory: string;
|
|
7
|
-
client?:
|
|
7
|
+
client?: unknown;
|
|
8
8
|
};
|
|
9
9
|
pluginConfig: OhMyOpenCodeConfig;
|
|
10
10
|
modelCacheState: ModelCacheState;
|
|
11
|
+
runtimeSkillSourceUrl?: string;
|
|
11
12
|
}
|
|
12
13
|
export declare function createConfigHandler(deps: ConfigHandlerDeps): (config: Record<string, unknown>) => Promise<void>;
|
|
@@ -12,6 +12,12 @@ export interface ExternalSkillPluginResult {
|
|
|
12
12
|
pluginName: string | null;
|
|
13
13
|
allPlugins: string[];
|
|
14
14
|
}
|
|
15
|
+
export interface DuplicateOmoPluginResult {
|
|
16
|
+
detected: boolean;
|
|
17
|
+
pluginName: string | null;
|
|
18
|
+
duplicatePlugins: string[];
|
|
19
|
+
allPlugins: string[];
|
|
20
|
+
}
|
|
15
21
|
/**
|
|
16
22
|
* Detect if any external notification plugin is configured.
|
|
17
23
|
* Returns information about detected plugins for logging/warning.
|
|
@@ -22,6 +28,7 @@ export declare function detectExternalNotificationPlugin(directory: string): Ext
|
|
|
22
28
|
* Returns information about detected plugins for logging/warning.
|
|
23
29
|
*/
|
|
24
30
|
export declare function detectExternalSkillPlugin(directory: string): ExternalSkillPluginResult;
|
|
31
|
+
export declare function detectDuplicateOmoPlugin(directory: string): DuplicateOmoPluginResult;
|
|
25
32
|
/**
|
|
26
33
|
* Generate a warning message for users with conflicting notification plugins.
|
|
27
34
|
*/
|
|
@@ -30,3 +37,4 @@ export declare function getNotificationConflictWarning(pluginName: string): stri
|
|
|
30
37
|
* Generate a warning message for users with conflicting skill plugins.
|
|
31
38
|
*/
|
|
32
39
|
export declare function getSkillPluginConflictWarning(pluginName: string): string;
|
|
40
|
+
export declare function getDuplicateOmoPluginWarning(duplicatePlugins: readonly string[]): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isPromptMessageInspectionAborted(error: unknown): boolean;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { PromptDispatchClient, PromptSessionName } from "./types";
|
|
2
|
+
export declare function latestAssistantTurnHasUnansweredQuestion(messages: unknown[]): boolean;
|
|
2
3
|
export declare function latestAssistantTurnBlocksInternalPrompt(messages: unknown[]): boolean;
|
|
3
4
|
export declare function sessionLatestAssistantBlocksInternalPrompt<TInput>(args: {
|
|
4
5
|
readonly client: PromptDispatchClient;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function messageRole(message: unknown): string | undefined;
|
|
2
|
+
export declare function messageFinish(message: unknown): string | true | undefined;
|
|
3
|
+
export declare function messageCompleted(message: unknown): boolean;
|
|
4
|
+
export declare function messageIsSyntheticOrInternalUser(message: unknown): boolean;
|
|
5
|
+
export declare function messageHasQuestionTool(message: unknown): boolean;
|
|
6
|
+
export declare function messageHasWaitingTool(message: unknown): boolean;
|
|
7
|
+
export declare function messageHasUnresolvedTool(message: unknown): boolean;
|
|
8
|
+
export declare function messageHasSubstantiveAssistantOutput(message: unknown): boolean;
|
|
@@ -4,6 +4,8 @@ export interface PromptTimeoutArgs {
|
|
|
4
4
|
export interface PromptRetryOptions {
|
|
5
5
|
timeoutMs?: number;
|
|
6
6
|
queueBehavior?: "enqueue" | "defer";
|
|
7
|
+
checkStatus?: boolean;
|
|
8
|
+
checkToolState?: boolean;
|
|
7
9
|
}
|
|
8
10
|
export declare const PROMPT_TIMEOUT_MS = 120000;
|
|
9
11
|
export declare function createPromptTimeoutContext(args: PromptTimeoutArgs, timeoutMs: number): {
|
|
@@ -4,12 +4,13 @@ import { createHooks } from "../create-hooks";
|
|
|
4
4
|
import { createManagers } from "../create-managers";
|
|
5
5
|
import { createRuntimeTmuxConfig, isTmuxIntegrationEnabled } from "../create-runtime-tmux-config";
|
|
6
6
|
import { createTools } from "../create-tools";
|
|
7
|
+
import { createRuntimeSkillSourceServer } from "../features/opencode-runtime-skills";
|
|
7
8
|
import { initializeOpenClaw } from "../openclaw";
|
|
8
9
|
import { createPluginInterface } from "../plugin-interface";
|
|
9
10
|
import { loadPluginConfig } from "../plugin-config";
|
|
10
11
|
import { createModelCacheState } from "../plugin-state";
|
|
11
12
|
import { installAgentSortShim, setAgentSortOrder } from "../shared/agent-sort-shim";
|
|
12
|
-
import { detectExternalSkillPlugin, getSkillPluginConflictWarning } from "../shared/external-plugin-detector";
|
|
13
|
+
import { detectDuplicateOmoPlugin, detectExternalSkillPlugin, getDuplicateOmoPluginWarning, getSkillPluginConflictWarning } from "../shared/external-plugin-detector";
|
|
13
14
|
import { createFirstMessageVariantGate } from "../shared/first-message-variant";
|
|
14
15
|
import { initI18n } from "../shared/i18n";
|
|
15
16
|
import { log } from "../shared/logger";
|
|
@@ -24,6 +25,8 @@ export type PluginModuleDeps = {
|
|
|
24
25
|
log: typeof log;
|
|
25
26
|
logLegacyPluginStartupWarning: typeof logLegacyPluginStartupWarning;
|
|
26
27
|
migrateLegacyWorkspaceDirectory: typeof migrateLegacyWorkspaceDirectory;
|
|
28
|
+
detectDuplicateOmoPlugin: typeof detectDuplicateOmoPlugin;
|
|
29
|
+
getDuplicateOmoPluginWarning: typeof getDuplicateOmoPluginWarning;
|
|
27
30
|
detectExternalSkillPlugin: typeof detectExternalSkillPlugin;
|
|
28
31
|
getSkillPluginConflictWarning: typeof getSkillPluginConflictWarning;
|
|
29
32
|
injectServerAuthIntoClient: typeof injectServerAuthIntoClient;
|
|
@@ -37,6 +40,7 @@ export type PluginModuleDeps = {
|
|
|
37
40
|
createModelCacheState: typeof createModelCacheState;
|
|
38
41
|
createManagers: typeof createManagers;
|
|
39
42
|
createTools: typeof createTools;
|
|
43
|
+
createRuntimeSkillSourceServer: typeof createRuntimeSkillSourceServer;
|
|
40
44
|
createHooks: typeof createHooks;
|
|
41
45
|
createPluginInterface: typeof createPluginInterface;
|
|
42
46
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { SisyphusAgentConfig } from "../../config/schema";
|
|
2
|
-
import {
|
|
2
|
+
import { promptWithModelSuggestionRetry } from "../../shared/model-suggestion-retry";
|
|
3
3
|
import type { DelegatedModelConfig, DelegateTaskArgs, OpencodeClient } from "./types";
|
|
4
4
|
type SendSyncPromptDeps = {
|
|
5
|
-
|
|
5
|
+
promptWithModelSuggestionRetry: typeof promptWithModelSuggestionRetry;
|
|
6
6
|
};
|
|
7
7
|
export declare function buildSyncPromptTools(agentToUse: string): Record<string, boolean>;
|
|
8
8
|
export declare function sendSyncPrompt(client: OpencodeClient, input: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oh-my-opencode",
|
|
3
|
-
"version": "4.5.
|
|
3
|
+
"version": "4.5.12",
|
|
4
4
|
"description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -15,11 +15,15 @@
|
|
|
15
15
|
"packages/comment-checker-core",
|
|
16
16
|
"packages/hashline-core",
|
|
17
17
|
"packages/boulder-state",
|
|
18
|
-
"packages/agents-md-core"
|
|
18
|
+
"packages/agents-md-core",
|
|
19
|
+
"packages/shared-skills",
|
|
20
|
+
"packages/omo-codex"
|
|
19
21
|
],
|
|
20
22
|
"bin": {
|
|
21
23
|
"oh-my-opencode": "bin/oh-my-opencode.js",
|
|
22
|
-
"oh-my-openagent": "bin/oh-my-opencode.js"
|
|
24
|
+
"oh-my-openagent": "bin/oh-my-opencode.js",
|
|
25
|
+
"omo": "bin/oh-my-opencode.js",
|
|
26
|
+
"lazycodex": "bin/oh-my-opencode.js"
|
|
23
27
|
},
|
|
24
28
|
"files": [
|
|
25
29
|
"dist",
|
|
@@ -30,7 +34,14 @@
|
|
|
30
34
|
".agents/command",
|
|
31
35
|
".agents/skills",
|
|
32
36
|
"packages/lsp-tools-mcp/dist",
|
|
33
|
-
"packages/ast-grep-mcp/dist"
|
|
37
|
+
"packages/ast-grep-mcp/dist",
|
|
38
|
+
"packages/shared-skills/package.json",
|
|
39
|
+
"packages/shared-skills/index.mjs",
|
|
40
|
+
"packages/shared-skills/skills",
|
|
41
|
+
"packages/omo-codex/marketplace.json",
|
|
42
|
+
"packages/omo-codex/plugin",
|
|
43
|
+
"packages/omo-codex/plugin/.codex-plugin",
|
|
44
|
+
"packages/omo-codex/scripts"
|
|
34
45
|
],
|
|
35
46
|
"exports": {
|
|
36
47
|
".": {
|
|
@@ -54,9 +65,11 @@
|
|
|
54
65
|
"prepublishOnly": "bun run clean && bun run build:lsp-tools-mcp && bun run build",
|
|
55
66
|
"test:model-capabilities": "bun test src/shared/model-capability-aliases.test.ts src/shared/model-capability-guardrails.test.ts src/shared/model-capabilities.test.ts src/cli/doctor/checks/model-resolution.test.ts --bail",
|
|
56
67
|
"typecheck": "tsgo --noEmit && bun run typecheck:packages",
|
|
57
|
-
"typecheck:packages": "tsgo --noEmit -p packages/rules-engine/tsconfig.json && tsgo --noEmit -p packages/ast-grep-core/tsconfig.json && tsgo --noEmit -p packages/ast-grep-mcp/tsconfig.json && tsgo --noEmit -p packages/utils/tsconfig.json && tsgo --noEmit -p packages/model-core/tsconfig.json && tsgo --noEmit -p packages/prompts-core/tsconfig.json && tsgo --noEmit -p packages/comment-checker-core/tsconfig.json && tsgo --noEmit -p packages/hashline-core/tsconfig.json && tsgo --noEmit -p packages/boulder-state/tsconfig.json && tsgo --noEmit -p packages/agents-md-core/tsconfig.json",
|
|
68
|
+
"typecheck:packages": "tsgo --noEmit -p packages/rules-engine/tsconfig.json && tsgo --noEmit -p packages/ast-grep-core/tsconfig.json && tsgo --noEmit -p packages/ast-grep-mcp/tsconfig.json && tsgo --noEmit -p packages/utils/tsconfig.json && tsgo --noEmit -p packages/model-core/tsconfig.json && tsgo --noEmit -p packages/prompts-core/tsconfig.json && tsgo --noEmit -p packages/comment-checker-core/tsconfig.json && tsgo --noEmit -p packages/hashline-core/tsconfig.json && tsgo --noEmit -p packages/boulder-state/tsconfig.json && tsgo --noEmit -p packages/agents-md-core/tsconfig.json && tsgo --noEmit -p packages/omo-codex/tsconfig.json",
|
|
58
69
|
"typecheck:script": "tsgo --noEmit -p script/tsconfig.json",
|
|
59
70
|
"test": "bun test",
|
|
71
|
+
"test:codex": "bun run build:ast-grep-mcp && bun run build:lsp-tools-mcp && npm --prefix packages/omo-codex/plugin ci && bun run --cwd packages/omo-codex/plugin build && bun test src/cli/cli-installer.platform.test.ts src/cli/install-codex/codex-cache.test.ts src/cli/install-codex/codex-config-agent-cleanup.test.ts src/cli/install-codex/codex-config-toml.test.ts src/cli/install-codex/install-codex.test.ts src/cli/install-codex/link-cached-plugin-agents.test.ts packages/omo-codex/src/**/*.test.ts packages/utils/src/jsonc-parser.test.ts packages/utils/src/frontmatter.test.ts packages/hashline-core/src/hash-computation.test.ts packages/hashline-core/src/smoke-untested-modules.test.ts packages/rules-engine/src/index.test.ts packages/rules-engine/src/security-boundary.test.ts packages/agents-md-core/src/injector.test.ts packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts && node --test packages/omo-codex/plugin/test/*.test.mjs packages/omo-codex/scripts/install-cache-copy.test.mjs packages/omo-codex/scripts/install-config.test.mjs packages/omo-codex/scripts/install-local.test.mjs packages/omo-codex/scripts/install-mcp-runtime.test.mjs packages/omo-codex/scripts/install-agent-links.test.mjs packages/omo-codex/scripts/install-bin-links.test.mjs packages/omo-codex/scripts/sync-telemetry-component.test.mjs",
|
|
72
|
+
"test:windows-codex": "bun run test:codex",
|
|
60
73
|
"build:ast-grep-mcp": "bun run --cwd packages/ast-grep-mcp build"
|
|
61
74
|
},
|
|
62
75
|
"keywords": [
|
|
@@ -105,8 +118,10 @@
|
|
|
105
118
|
"@oh-my-opencode/comment-checker-core": "workspace:*",
|
|
106
119
|
"@oh-my-opencode/hashline-core": "workspace:*",
|
|
107
120
|
"@oh-my-opencode/model-core": "workspace:*",
|
|
121
|
+
"@oh-my-opencode/omo-codex": "workspace:*",
|
|
108
122
|
"@oh-my-opencode/prompts-core": "workspace:*",
|
|
109
123
|
"@oh-my-opencode/rules-engine": "workspace:*",
|
|
124
|
+
"@oh-my-opencode/shared-skills": "workspace:*",
|
|
110
125
|
"@oh-my-opencode/utils": "workspace:*",
|
|
111
126
|
"@typescript/native-preview": "7.0.0-dev.20260518.1",
|
|
112
127
|
"@types/js-yaml": "^4.0.9",
|
|
@@ -116,17 +131,17 @@
|
|
|
116
131
|
"zod": "^4.4.3"
|
|
117
132
|
},
|
|
118
133
|
"optionalDependencies": {
|
|
119
|
-
"oh-my-opencode-darwin-arm64": "4.5.
|
|
120
|
-
"oh-my-opencode-darwin-x64": "4.5.
|
|
121
|
-
"oh-my-opencode-darwin-x64-baseline": "4.5.
|
|
122
|
-
"oh-my-opencode-linux-arm64": "4.5.
|
|
123
|
-
"oh-my-opencode-linux-arm64-musl": "4.5.
|
|
124
|
-
"oh-my-opencode-linux-x64": "4.5.
|
|
125
|
-
"oh-my-opencode-linux-x64-baseline": "4.5.
|
|
126
|
-
"oh-my-opencode-linux-x64-musl": "4.5.
|
|
127
|
-
"oh-my-opencode-linux-x64-musl-baseline": "4.5.
|
|
128
|
-
"oh-my-opencode-windows-x64": "4.5.
|
|
129
|
-
"oh-my-opencode-windows-x64-baseline": "4.5.
|
|
134
|
+
"oh-my-opencode-darwin-arm64": "4.5.12",
|
|
135
|
+
"oh-my-opencode-darwin-x64": "4.5.12",
|
|
136
|
+
"oh-my-opencode-darwin-x64-baseline": "4.5.12",
|
|
137
|
+
"oh-my-opencode-linux-arm64": "4.5.12",
|
|
138
|
+
"oh-my-opencode-linux-arm64-musl": "4.5.12",
|
|
139
|
+
"oh-my-opencode-linux-x64": "4.5.12",
|
|
140
|
+
"oh-my-opencode-linux-x64-baseline": "4.5.12",
|
|
141
|
+
"oh-my-opencode-linux-x64-musl": "4.5.12",
|
|
142
|
+
"oh-my-opencode-linux-x64-musl-baseline": "4.5.12",
|
|
143
|
+
"oh-my-opencode-windows-x64": "4.5.12",
|
|
144
|
+
"oh-my-opencode-windows-x64-baseline": "4.5.12"
|
|
130
145
|
},
|
|
131
146
|
"overrides": {
|
|
132
147
|
"hono": "^4.12.18",
|
|
@@ -3,8 +3,38 @@
|
|
|
3
3
|
// src/cli.ts
|
|
4
4
|
import { argv, stderr } from "node:process";
|
|
5
5
|
|
|
6
|
-
// src/mcp.ts
|
|
7
|
-
import {
|
|
6
|
+
// src/mcp-lifecycle-log.ts
|
|
7
|
+
import { appendFileSync, renameSync, statSync } from "node:fs";
|
|
8
|
+
import { tmpdir } from "node:os";
|
|
9
|
+
import { join } from "node:path";
|
|
10
|
+
var LOG_FILE_NAME = "omo-ast-grep-mcp.log";
|
|
11
|
+
var MAX_LOG_BYTES = 5 * 1024 * 1024;
|
|
12
|
+
function mcpLifecycleLogPath() {
|
|
13
|
+
return join(tmpdir(), LOG_FILE_NAME);
|
|
14
|
+
}
|
|
15
|
+
function writeMcpLifecycleLog(event, fields = {}) {
|
|
16
|
+
const path = mcpLifecycleLogPath();
|
|
17
|
+
try {
|
|
18
|
+
rotateLogIfNeeded(path);
|
|
19
|
+
appendFileSync(path, `${JSON.stringify({ ts: new Date().toISOString(), event, pid: process.pid, ppid: process.ppid, ...fields })}
|
|
20
|
+
`);
|
|
21
|
+
} catch (error) {
|
|
22
|
+
if (error instanceof Error)
|
|
23
|
+
return;
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function rotateLogIfNeeded(path) {
|
|
28
|
+
try {
|
|
29
|
+
if (statSync(path).size < MAX_LOG_BYTES)
|
|
30
|
+
return;
|
|
31
|
+
renameSync(path, `${path}.1`);
|
|
32
|
+
} catch (error) {
|
|
33
|
+
if (error instanceof Error)
|
|
34
|
+
return;
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
8
38
|
|
|
9
39
|
// ../ast-grep-core/src/language-support.ts
|
|
10
40
|
var CLI_LANGUAGES = [
|
|
@@ -310,11 +340,11 @@ function errorMessage(error) {
|
|
|
310
340
|
}
|
|
311
341
|
// src/sg-cli-path.ts
|
|
312
342
|
import { createRequire } from "module";
|
|
313
|
-
import { dirname, join } from "path";
|
|
314
|
-
import { existsSync, statSync } from "fs";
|
|
343
|
+
import { dirname, join as join2 } from "path";
|
|
344
|
+
import { existsSync, statSync as statSync2 } from "fs";
|
|
315
345
|
function isValidBinary(filePath) {
|
|
316
346
|
try {
|
|
317
|
-
return
|
|
347
|
+
return statSync2(filePath).size > 1e4;
|
|
318
348
|
} catch {
|
|
319
349
|
return false;
|
|
320
350
|
}
|
|
@@ -339,7 +369,7 @@ function findSgCliPathSync() {
|
|
|
339
369
|
const require2 = createRequire(import.meta.url);
|
|
340
370
|
const cliPackageJsonPath = require2.resolve("@ast-grep/cli/package.json");
|
|
341
371
|
const cliDirectory = dirname(cliPackageJsonPath);
|
|
342
|
-
const sgPath =
|
|
372
|
+
const sgPath = join2(cliDirectory, binaryName);
|
|
343
373
|
if (existsSync(sgPath) && isValidBinary(sgPath)) {
|
|
344
374
|
return sgPath;
|
|
345
375
|
}
|
|
@@ -351,7 +381,7 @@ function findSgCliPathSync() {
|
|
|
351
381
|
const packageJsonPath = require2.resolve(`${platformPackage}/package.json`);
|
|
352
382
|
const packageDirectory = dirname(packageJsonPath);
|
|
353
383
|
const astGrepBinaryName = process.platform === "win32" ? "ast-grep.exe" : "ast-grep";
|
|
354
|
-
const binaryPath =
|
|
384
|
+
const binaryPath = join2(packageDirectory, astGrepBinaryName);
|
|
355
385
|
if (existsSync(binaryPath) && isValidBinary(binaryPath)) {
|
|
356
386
|
return binaryPath;
|
|
357
387
|
}
|
|
@@ -382,6 +412,192 @@ function getSgCliPath() {
|
|
|
382
412
|
function setSgCliPath(path) {
|
|
383
413
|
resolvedCliPath = path;
|
|
384
414
|
}
|
|
415
|
+
// src/mcp-stdio-transport.ts
|
|
416
|
+
var HEADER_SEPARATOR = Buffer.from(`\r
|
|
417
|
+
\r
|
|
418
|
+
`);
|
|
419
|
+
async function* readStdioJsonRpcMessages(input) {
|
|
420
|
+
let buffer = Buffer.alloc(0);
|
|
421
|
+
for await (const chunk of input) {
|
|
422
|
+
buffer = Buffer.concat([buffer, bufferFromChunk(chunk)]);
|
|
423
|
+
while (true) {
|
|
424
|
+
const result = readNextMessage(buffer);
|
|
425
|
+
if (result.kind === "incomplete")
|
|
426
|
+
break;
|
|
427
|
+
buffer = result.remaining;
|
|
428
|
+
if (result.message)
|
|
429
|
+
yield result.message;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
const trailing = buffer.toString("utf8").trim();
|
|
433
|
+
if (trailing.length > 0) {
|
|
434
|
+
yield parseJsonPayload(trailing, "line");
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
function writeStdioJsonRpcResponse(output, response, responseMode) {
|
|
438
|
+
const body = JSON.stringify(response);
|
|
439
|
+
if (responseMode === "framed") {
|
|
440
|
+
output.write(`Content-Length: ${Buffer.byteLength(body, "utf8")}\r
|
|
441
|
+
\r
|
|
442
|
+
${body}`);
|
|
443
|
+
return;
|
|
444
|
+
}
|
|
445
|
+
output.write(`${body}
|
|
446
|
+
`);
|
|
447
|
+
}
|
|
448
|
+
function readNextMessage(buffer) {
|
|
449
|
+
if (buffer.length === 0)
|
|
450
|
+
return { kind: "incomplete" };
|
|
451
|
+
return startsWithContentLength(buffer) ? readFramedMessage(buffer) : readLineMessage(buffer);
|
|
452
|
+
}
|
|
453
|
+
function readLineMessage(buffer) {
|
|
454
|
+
const newlineIndex = buffer.indexOf(10);
|
|
455
|
+
if (newlineIndex === -1)
|
|
456
|
+
return { kind: "incomplete" };
|
|
457
|
+
const line = buffer.subarray(0, newlineIndex).toString("utf8").replace(/\r$/, "");
|
|
458
|
+
if (line.trim().length === 0) {
|
|
459
|
+
return {
|
|
460
|
+
kind: "complete",
|
|
461
|
+
remaining: buffer.subarray(newlineIndex + 1)
|
|
462
|
+
};
|
|
463
|
+
}
|
|
464
|
+
return {
|
|
465
|
+
kind: "complete",
|
|
466
|
+
message: parseJsonPayload(line, "line"),
|
|
467
|
+
remaining: buffer.subarray(newlineIndex + 1)
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
function readFramedMessage(buffer) {
|
|
471
|
+
const separatorIndex = buffer.indexOf(HEADER_SEPARATOR);
|
|
472
|
+
if (separatorIndex === -1)
|
|
473
|
+
return { kind: "incomplete" };
|
|
474
|
+
const headers = buffer.subarray(0, separatorIndex).toString("ascii");
|
|
475
|
+
const contentLength = parseContentLength(headers);
|
|
476
|
+
const bodyStart = separatorIndex + HEADER_SEPARATOR.length;
|
|
477
|
+
if (contentLength === undefined) {
|
|
478
|
+
return {
|
|
479
|
+
kind: "complete",
|
|
480
|
+
message: {
|
|
481
|
+
kind: "parse_error",
|
|
482
|
+
message: "Missing or invalid Content-Length header",
|
|
483
|
+
responseMode: "framed"
|
|
484
|
+
},
|
|
485
|
+
remaining: buffer.subarray(bodyStart)
|
|
486
|
+
};
|
|
487
|
+
}
|
|
488
|
+
const bodyEnd = bodyStart + contentLength;
|
|
489
|
+
if (buffer.length < bodyEnd)
|
|
490
|
+
return { kind: "incomplete" };
|
|
491
|
+
const body = buffer.subarray(bodyStart, bodyEnd).toString("utf8");
|
|
492
|
+
return {
|
|
493
|
+
kind: "complete",
|
|
494
|
+
message: parseJsonPayload(body, "framed"),
|
|
495
|
+
remaining: buffer.subarray(bodyEnd)
|
|
496
|
+
};
|
|
497
|
+
}
|
|
498
|
+
function startsWithContentLength(buffer) {
|
|
499
|
+
const prefix = buffer.subarray(0, "content-length:".length).toString("ascii").toLowerCase();
|
|
500
|
+
return prefix === "content-length:";
|
|
501
|
+
}
|
|
502
|
+
function parseContentLength(headers) {
|
|
503
|
+
for (const line of headers.split(`\r
|
|
504
|
+
`)) {
|
|
505
|
+
const match = /^content-length:\s*(\d+)$/i.exec(line);
|
|
506
|
+
if (match === null)
|
|
507
|
+
continue;
|
|
508
|
+
const value = match[1];
|
|
509
|
+
if (value === undefined)
|
|
510
|
+
return;
|
|
511
|
+
return Number(value);
|
|
512
|
+
}
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
function parseJsonPayload(payload, responseMode) {
|
|
516
|
+
try {
|
|
517
|
+
return { kind: "request", payload: JSON.parse(payload), responseMode };
|
|
518
|
+
} catch (error) {
|
|
519
|
+
return { kind: "parse_error", message: messageFromError(error), responseMode };
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
function bufferFromChunk(chunk) {
|
|
523
|
+
if (Buffer.isBuffer(chunk))
|
|
524
|
+
return chunk;
|
|
525
|
+
if (typeof chunk === "string")
|
|
526
|
+
return Buffer.from(chunk);
|
|
527
|
+
throw new TypeError(`Unsupported stdio chunk type: ${typeof chunk}`);
|
|
528
|
+
}
|
|
529
|
+
function messageFromError(error) {
|
|
530
|
+
return error instanceof Error ? error.message : String(error);
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
// src/mcp-stdio-server.ts
|
|
534
|
+
var DEFAULT_IDLE_TIMEOUT_MS = 10 * 60000;
|
|
535
|
+
var noopLog = () => {};
|
|
536
|
+
async function runJsonRpcStdioServer(handler, input, output, options, stdioOptions = {}) {
|
|
537
|
+
const log = stdioOptions.log ?? noopLog;
|
|
538
|
+
const idleTimeoutMs = stdioOptions.idleTimeoutMs ?? DEFAULT_IDLE_TIMEOUT_MS;
|
|
539
|
+
const idleTimer = createIdleTimer(idleTimeoutMs, log, stdioOptions.onIdleTimeout);
|
|
540
|
+
log("stdio_started", { cwd: process.cwd(), idle_timeout_ms: idleTimeoutMs });
|
|
541
|
+
idleTimer.arm();
|
|
542
|
+
try {
|
|
543
|
+
for await (const message of readStdioJsonRpcMessages(input)) {
|
|
544
|
+
if (idleTimer.closed())
|
|
545
|
+
break;
|
|
546
|
+
idleTimer.arm();
|
|
547
|
+
if (message.kind === "parse_error") {
|
|
548
|
+
log("parse_error", { message: message.message });
|
|
549
|
+
writeStdioJsonRpcResponse(output, errorResponse(null, -32700, "Parse error", message.message), message.responseMode);
|
|
550
|
+
continue;
|
|
551
|
+
}
|
|
552
|
+
const parsed = message.payload;
|
|
553
|
+
const id = isRecord(parsed) ? jsonRpcId(parsed.id) : null;
|
|
554
|
+
const method = isRecord(parsed) && typeof parsed.method === "string" ? parsed.method : null;
|
|
555
|
+
log("request", { id: id === null ? null : String(id), method });
|
|
556
|
+
const response = await handler(parsed, options);
|
|
557
|
+
if (response) {
|
|
558
|
+
writeStdioJsonRpcResponse(output, response, message.responseMode);
|
|
559
|
+
log("response", { id: String(response.id), method, is_error: response.error !== undefined });
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
} finally {
|
|
563
|
+
idleTimer.clear();
|
|
564
|
+
log("stdio_stopped");
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
function createIdleTimer(idleTimeoutMs, log, onIdleTimeout) {
|
|
568
|
+
let timer = null;
|
|
569
|
+
let isClosed = false;
|
|
570
|
+
return {
|
|
571
|
+
arm: () => {
|
|
572
|
+
if (timer !== null)
|
|
573
|
+
clearTimeout(timer);
|
|
574
|
+
if (idleTimeoutMs <= 0)
|
|
575
|
+
return;
|
|
576
|
+
timer = setTimeout(() => {
|
|
577
|
+
isClosed = true;
|
|
578
|
+
log("idle_timeout", { idle_timeout_ms: idleTimeoutMs });
|
|
579
|
+
onIdleTimeout?.();
|
|
580
|
+
}, idleTimeoutMs);
|
|
581
|
+
timer.unref();
|
|
582
|
+
},
|
|
583
|
+
clear: () => {
|
|
584
|
+
if (timer === null)
|
|
585
|
+
return;
|
|
586
|
+
clearTimeout(timer);
|
|
587
|
+
timer = null;
|
|
588
|
+
},
|
|
589
|
+
closed: () => isClosed
|
|
590
|
+
};
|
|
591
|
+
}
|
|
592
|
+
function errorResponse(id, code, message, data) {
|
|
593
|
+
return { jsonrpc: "2.0", id, error: data === undefined ? { code, message } : { code, message, data } };
|
|
594
|
+
}
|
|
595
|
+
function jsonRpcId(value) {
|
|
596
|
+
return typeof value === "string" || typeof value === "number" || value === null ? value : null;
|
|
597
|
+
}
|
|
598
|
+
function isRecord(value) {
|
|
599
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
600
|
+
}
|
|
385
601
|
// src/runner.ts
|
|
386
602
|
import { existsSync as existsSync3 } from "node:fs";
|
|
387
603
|
|
|
@@ -692,9 +908,9 @@ var AST_GREP_MCP_TOOLS = [
|
|
|
692
908
|
}
|
|
693
909
|
];
|
|
694
910
|
async function handleAstGrepMcpRequest(input, options = {}) {
|
|
695
|
-
if (!
|
|
696
|
-
return
|
|
697
|
-
const id =
|
|
911
|
+
if (!isRecord2(input))
|
|
912
|
+
return errorResponse2(null, -32600, "Invalid Request");
|
|
913
|
+
const id = jsonRpcId2(input.id);
|
|
698
914
|
if (input.method === "notifications/initialized")
|
|
699
915
|
return;
|
|
700
916
|
if (input.method === "ping")
|
|
@@ -710,35 +926,19 @@ async function handleAstGrepMcpRequest(input, options = {}) {
|
|
|
710
926
|
return successResponse(id, { tools: enabledTools(options) });
|
|
711
927
|
if (input.method === "tools/call")
|
|
712
928
|
return handleToolCall(id, input.params, options);
|
|
713
|
-
return
|
|
929
|
+
return errorResponse2(id, -32601, `Method not found: ${String(input.method)}`);
|
|
714
930
|
}
|
|
715
|
-
async function runMcpStdioServer(input = process.stdin, output = process.stdout, options = {}) {
|
|
716
|
-
|
|
717
|
-
for await (const line of lines) {
|
|
718
|
-
if (!line.trim())
|
|
719
|
-
continue;
|
|
720
|
-
let parsed;
|
|
721
|
-
try {
|
|
722
|
-
parsed = JSON.parse(line);
|
|
723
|
-
} catch (error) {
|
|
724
|
-
output.write(`${JSON.stringify(errorResponse(null, -32700, "Parse error", messageFromError(error)))}
|
|
725
|
-
`);
|
|
726
|
-
continue;
|
|
727
|
-
}
|
|
728
|
-
const response = await handleAstGrepMcpRequest(parsed, options);
|
|
729
|
-
if (response)
|
|
730
|
-
output.write(`${JSON.stringify(response)}
|
|
731
|
-
`);
|
|
732
|
-
}
|
|
931
|
+
async function runMcpStdioServer(input = process.stdin, output = process.stdout, options = {}, stdioOptions = {}) {
|
|
932
|
+
await runJsonRpcStdioServer(handleAstGrepMcpRequest, input, output, options, stdioOptions);
|
|
733
933
|
}
|
|
734
934
|
async function handleToolCall(id, params, options) {
|
|
735
|
-
if (!
|
|
736
|
-
return
|
|
935
|
+
if (!isRecord2(params) || typeof params.name !== "string")
|
|
936
|
+
return errorResponse2(id, -32602, "tools/call requires params.name");
|
|
737
937
|
try {
|
|
738
938
|
const result = await executeAstGrepTool(params.name, params.arguments, options);
|
|
739
939
|
return successResponse(id, { content: result.content, isError: result.isError ?? false });
|
|
740
940
|
} catch (error) {
|
|
741
|
-
return successResponse(id, { content: [{ type: "text", text:
|
|
941
|
+
return successResponse(id, { content: [{ type: "text", text: messageFromError2(error) }], isError: true });
|
|
742
942
|
}
|
|
743
943
|
}
|
|
744
944
|
async function executeAstGrepTool(name, args, options) {
|
|
@@ -794,7 +994,7 @@ function parseReplaceArgs(args, workspaceDirectory) {
|
|
|
794
994
|
};
|
|
795
995
|
}
|
|
796
996
|
function requireRecord(value) {
|
|
797
|
-
if (!
|
|
997
|
+
if (!isRecord2(value))
|
|
798
998
|
throw new Error("Tool arguments must be an object");
|
|
799
999
|
return value;
|
|
800
1000
|
}
|
|
@@ -849,21 +1049,21 @@ function optionalBoolean(input, key) {
|
|
|
849
1049
|
function successResponse(id, result) {
|
|
850
1050
|
return { jsonrpc: "2.0", id, result };
|
|
851
1051
|
}
|
|
852
|
-
function
|
|
1052
|
+
function errorResponse2(id, code, message, data) {
|
|
853
1053
|
return { jsonrpc: "2.0", id, error: data === undefined ? { code, message } : { code, message, data } };
|
|
854
1054
|
}
|
|
855
1055
|
function requestedProtocolVersion(params) {
|
|
856
|
-
if (!
|
|
1056
|
+
if (!isRecord2(params) || typeof params.protocolVersion !== "string")
|
|
857
1057
|
return "2024-11-05";
|
|
858
1058
|
return params.protocolVersion;
|
|
859
1059
|
}
|
|
860
|
-
function
|
|
1060
|
+
function jsonRpcId2(value) {
|
|
861
1061
|
return typeof value === "string" || typeof value === "number" || value === null ? value : null;
|
|
862
1062
|
}
|
|
863
|
-
function
|
|
1063
|
+
function isRecord2(value) {
|
|
864
1064
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
865
1065
|
}
|
|
866
|
-
function
|
|
1066
|
+
function messageFromError2(error) {
|
|
867
1067
|
return error instanceof Error ? error.message : String(error);
|
|
868
1068
|
}
|
|
869
1069
|
|
|
@@ -871,10 +1071,15 @@ function messageFromError(error) {
|
|
|
871
1071
|
async function main() {
|
|
872
1072
|
const [command = "mcp"] = argv.slice(2);
|
|
873
1073
|
if (command === "mcp") {
|
|
874
|
-
await runMcpStdioServer(
|
|
1074
|
+
await runMcpStdioServer(process.stdin, process.stdout, {}, {
|
|
1075
|
+
log: writeMcpLifecycleLog,
|
|
1076
|
+
onIdleTimeout: () => {
|
|
1077
|
+
process.exit(0);
|
|
1078
|
+
}
|
|
1079
|
+
});
|
|
875
1080
|
return;
|
|
876
1081
|
}
|
|
877
|
-
stderr.write(`Usage: ast-grep
|
|
1082
|
+
stderr.write(`Usage: omo-ast-grep [mcp]
|
|
878
1083
|
`);
|
|
879
1084
|
process.exitCode = 2;
|
|
880
1085
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "sisyphuslabs",
|
|
3
|
+
"interface": {
|
|
4
|
+
"displayName": "Sisyphus Labs"
|
|
5
|
+
},
|
|
6
|
+
"plugins": [
|
|
7
|
+
{
|
|
8
|
+
"name": "omo",
|
|
9
|
+
"source": "./plugins/omo",
|
|
10
|
+
"category": "Developer Tools",
|
|
11
|
+
"policy": {
|
|
12
|
+
"installation": "AVAILABLE",
|
|
13
|
+
"authentication": "ON_INSTALL"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "omo",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "One Codex plugin namespace for Yeongyu's local Codex components.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Yeongyu Kim",
|
|
7
|
+
"email": "yeongyu@users.noreply.github.com",
|
|
8
|
+
"url": "https://github.com/code-yeongyu"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/sisyphuslabs/omo",
|
|
11
|
+
"repository": "https://github.com/sisyphuslabs/omo",
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"keywords": ["codex", "codex-plugin", "omo", "hooks", "mcp", "skills"],
|
|
14
|
+
"skills": "./skills/",
|
|
15
|
+
"hooks": "./hooks/hooks.json",
|
|
16
|
+
"mcpServers": "./.mcp.json",
|
|
17
|
+
"interface": {
|
|
18
|
+
"displayName": "OMO",
|
|
19
|
+
"shortDescription": "Unified local Codex components",
|
|
20
|
+
"longDescription": "OMO exposes the local Codex Rules, Comment Checker, LSP, Ultrawork, and ulw-loop components as one plugin namespace while keeping each component isolated under components/ for maintenance.",
|
|
21
|
+
"developerName": "Yeongyu Kim",
|
|
22
|
+
"category": "Developer Tools",
|
|
23
|
+
"capabilities": ["Hooks", "MCP Tools", "Code Intelligence", "Workflow", "Context Injection"],
|
|
24
|
+
"websiteURL": "https://github.com/sisyphuslabs/omo",
|
|
25
|
+
"privacyPolicyURL": "https://github.com/sisyphuslabs/omo#privacy",
|
|
26
|
+
"termsOfServiceURL": "https://github.com/sisyphuslabs/omo#license",
|
|
27
|
+
"defaultPrompt": [
|
|
28
|
+
"Use OMO LSP diagnostics on this workspace.",
|
|
29
|
+
"Show which OMO rules matched this file.",
|
|
30
|
+
"ulw: run this change with evidence."
|
|
31
|
+
],
|
|
32
|
+
"brandColor": "#7C3AED",
|
|
33
|
+
"screenshots": []
|
|
34
|
+
}
|
|
35
|
+
}
|