oh-my-opencode 4.8.1 → 4.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/prometheus/system-prompt.d.ts +1 -1
- package/dist/agents/sisyphus/claude-fable-5.d.ts +19 -0
- package/dist/agents/sisyphus/claude-opus-4-7.d.ts +3 -1
- package/dist/agents/sisyphus/claude-opus-4-8.d.ts +19 -0
- package/dist/agents/sisyphus/index.d.ts +4 -0
- package/dist/agents/types.d.ts +2 -2
- package/dist/cli/doctor/checks/codex.d.ts +1 -0
- package/dist/cli/doctor/checks/dependencies.d.ts +2 -2
- package/dist/cli/doctor/checks/tools-gh.d.ts +8 -1
- package/dist/cli/doctor/index.d.ts +1 -0
- package/dist/cli/doctor/types.d.ts +2 -0
- package/dist/cli/index.js +1908 -787
- package/dist/cli/install-codex/codex-config-permissions.d.ts +1 -1
- package/dist/cli/install-codex/codex-config-plugins.d.ts +1 -0
- package/dist/cli/install-codex/codex-config-toml.d.ts +1 -0
- package/dist/cli/install-codex/codex-installer-bin-dir.d.ts +8 -0
- package/dist/cli/install-codex/install-codex.d.ts +1 -8
- package/dist/cli/install-codex/lsp-daemon-reaper.d.ts +5 -0
- package/dist/cli/sparkshell-condense.d.ts +10 -0
- package/dist/cli/sparkshell-parse.d.ts +3 -0
- package/dist/cli/sparkshell-session-context.d.ts +20 -0
- package/dist/cli/sparkshell-spark.d.ts +23 -0
- package/dist/cli/sparkshell.d.ts +8 -1
- package/dist/cli-node/index.js +92564 -0
- package/dist/config/schema/agent-names.d.ts +2 -0
- package/dist/config/schema/hooks.d.ts +0 -2
- package/dist/config/schema/keyword-detector.d.ts +0 -6
- package/dist/config/schema/oh-my-opencode-config.d.ts +2 -4
- package/dist/create-hooks.d.ts +0 -2
- package/dist/features/background-agent/parent-wake-dedupe.d.ts +2 -0
- package/dist/features/background-agent/parent-wake-flush-runner.d.ts +2 -0
- package/dist/features/background-agent/parent-wake-prompt-dispatch.d.ts +1 -0
- package/dist/features/background-agent/parent-wake-session-history.d.ts +4 -0
- package/dist/features/background-agent/parent-wake-session-inspector.d.ts +1 -0
- package/dist/features/builtin-commands/templates/handoff.d.ts +1 -1
- package/dist/features/builtin-skills/index.d.ts +1 -1
- package/dist/features/builtin-skills/skills.d.ts +4 -0
- package/dist/features/opencode-runtime-skills/source-server.d.ts +16 -1
- package/dist/features/opencode-skill-loader/skill-definition-record.d.ts +2 -0
- package/dist/features/team-mode/tools/lifecycle-test-fixture.d.ts +2 -0
- package/dist/features/team-mode/types.d.ts +1 -0
- package/dist/features/tmux-subagent/failed-readiness-cache.d.ts +28 -0
- package/dist/features/tmux-subagent/manager.d.ts +1 -9
- package/dist/features/tmux-subagent/resolve-server-url.d.ts +3 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/executor.d.ts +1 -1
- package/dist/hooks/index.d.ts +0 -1
- package/dist/hooks/keyword-detector/constants.d.ts +0 -4
- package/dist/hooks/keyword-detector/ultrawork/source-detector.d.ts +1 -1
- package/dist/index.js +9001 -1795
- package/dist/oh-my-opencode.schema.json +2 -4
- package/dist/plugin/chat-params.d.ts +1 -8
- package/dist/plugin/hooks/create-core-hooks.d.ts +0 -2
- package/dist/plugin/hooks/create-session-hooks.d.ts +0 -2
- package/dist/plugin/hooks/create-transform-hooks.d.ts +1 -2
- package/dist/plugin/messages-transform.d.ts +0 -1
- package/dist/shared/model-availability.d.ts +10 -2
- package/dist/shared/module-resolution-failure.d.ts +7 -0
- package/package.json +25 -18
- package/packages/ast-grep-mcp/dist/cli.js +2 -10
- package/packages/git-bash-mcp/dist/cli.js +11 -4
- package/packages/lsp-daemon/dist/cli.d.ts +2 -0
- package/packages/lsp-daemon/dist/cli.js +3711 -0
- package/packages/lsp-daemon/dist/daemon-client.d.ts +19 -0
- package/packages/lsp-daemon/dist/daemon-client.js +114 -0
- package/packages/lsp-daemon/dist/daemon-server.d.ts +12 -0
- package/packages/lsp-daemon/dist/daemon-server.js +106 -0
- package/packages/lsp-daemon/dist/ensure-daemon.d.ts +21 -0
- package/packages/lsp-daemon/dist/ensure-daemon.js +97 -0
- package/packages/lsp-daemon/dist/index.d.ts +5 -0
- package/packages/lsp-daemon/dist/index.js +3573 -0
- package/packages/lsp-daemon/dist/lock.d.ts +7 -0
- package/packages/lsp-daemon/dist/lock.js +61 -0
- package/packages/lsp-daemon/dist/package.json +6 -0
- package/packages/lsp-daemon/dist/paths.d.ts +11 -0
- package/packages/lsp-daemon/dist/paths.js +49 -0
- package/packages/lsp-daemon/dist/proxy.d.ts +10 -0
- package/packages/lsp-daemon/dist/proxy.js +61 -0
- package/packages/lsp-daemon/dist/request-routing.d.ts +9 -0
- package/packages/lsp-daemon/dist/request-routing.js +44 -0
- package/packages/lsp-daemon/dist/run-daemon.d.ts +1 -0
- package/packages/lsp-daemon/dist/run-daemon.js +11 -0
- package/packages/lsp-daemon/dist/socket-jsonrpc.d.ts +5 -0
- package/packages/lsp-daemon/dist/socket-jsonrpc.js +25 -0
- package/packages/lsp-daemon/package.json +38 -0
- package/packages/lsp-tools-mcp/dist/cli.js +0 -0
- package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.js +40 -17
- package/packages/lsp-tools-mcp/dist/lsp/client.js +11 -9
- package/packages/lsp-tools-mcp/dist/lsp/config-loader.js +5 -5
- package/packages/lsp-tools-mcp/dist/lsp/directory-diagnostics.js +5 -3
- package/packages/lsp-tools-mcp/dist/lsp/effective-extension.d.ts +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/effective-extension.js +8 -0
- package/packages/lsp-tools-mcp/dist/lsp/infer-extension.js +3 -2
- package/packages/lsp-tools-mcp/dist/lsp/language-mappings.js +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/server-definitions.js +12 -0
- package/packages/lsp-tools-mcp/dist/lsp/server-install-state.d.ts +12 -0
- package/packages/lsp-tools-mcp/dist/lsp/server-install-state.js +51 -0
- package/packages/lsp-tools-mcp/dist/lsp/workspace-edit.js +2 -1
- package/packages/lsp-tools-mcp/dist/request-context.d.ts +7 -0
- package/packages/lsp-tools-mcp/dist/request-context.js +14 -0
- package/packages/lsp-tools-mcp/dist/tools.js +44 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +46 -33
- package/packages/omo-codex/plugin/.mcp.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/dist/apply-patch.d.ts +7 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/apply-patch.js +173 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/cli.d.ts +2 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/cli.js +10 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/codex-hook.d.ts +22 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/codex-hook.js +165 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/core-values.d.ts +1 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/core-values.js +1 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/core.d.ts +5 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/core.js +4 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/hook-input.d.ts +6 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/hook-input.js +10 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/record.d.ts +2 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/record.js +11 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/request-extractor.d.ts +3 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/request-extractor.js +104 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/runner.d.ts +26 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/runner.js +144 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/types.d.ts +43 -0
- package/packages/omo-codex/plugin/components/comment-checker/dist/types.js +1 -0
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/dist/cli.d.ts +2 -0
- package/packages/omo-codex/plugin/components/git-bash/dist/cli.js +29 -0
- package/packages/omo-codex/plugin/components/git-bash/dist/codex-hook.d.ts +28 -0
- package/packages/omo-codex/plugin/components/git-bash/dist/codex-hook.js +137 -0
- package/packages/omo-codex/plugin/components/git-bash/dist/index.d.ts +1 -0
- package/packages/omo-codex/plugin/components/git-bash/dist/index.js +1 -0
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +5 -2
- package/packages/omo-codex/plugin/components/lsp/.mcp.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/cli.d.ts +2 -0
- package/packages/omo-codex/plugin/components/lsp/dist/cli.js +42 -0
- package/packages/omo-codex/plugin/components/lsp/dist/codex-hook-cli.d.ts +2 -0
- package/packages/omo-codex/plugin/components/lsp/dist/codex-hook-cli.js +40 -0
- package/packages/omo-codex/plugin/components/lsp/dist/codex-hook.d.ts +16 -0
- package/packages/omo-codex/plugin/components/lsp/dist/codex-hook.js +180 -0
- package/packages/omo-codex/plugin/components/lsp/dist/lsp-session-state.d.ts +12 -0
- package/packages/omo-codex/plugin/components/lsp/dist/lsp-session-state.js +95 -0
- package/packages/omo-codex/plugin/components/lsp/dist/mutated-file-paths.d.ts +6 -0
- package/packages/omo-codex/plugin/components/lsp/dist/mutated-file-paths.js +79 -0
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +7 -7
- package/packages/omo-codex/plugin/components/lsp/scripts/build-lsp-daemon.mjs +68 -0
- package/packages/omo-codex/plugin/components/lsp/scripts/build-lsp-tools.mjs +45 -22
- package/packages/omo-codex/plugin/components/lsp/src/cli.ts +1 -1
- package/packages/omo-codex/plugin/components/lsp/src/codex-hook-cli.ts +1 -1
- package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +6 -2
- package/packages/omo-codex/plugin/components/lsp/src/lsp-session-state.ts +4 -0
- package/packages/omo-codex/plugin/components/lsp/test/codex-hook-unavailable.test.ts +68 -0
- package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +8 -20
- package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus.md +69 -96
- package/packages/omo-codex/plugin/components/rules/dist/cli.d.ts +2 -0
- package/packages/omo-codex/plugin/components/rules/dist/cli.js +118 -0
- package/packages/omo-codex/plugin/components/rules/dist/codex-hook-options.d.ts +5 -0
- package/packages/omo-codex/plugin/components/rules/dist/codex-hook-options.js +1 -0
- package/packages/omo-codex/plugin/components/rules/dist/codex-hook.d.ts +47 -0
- package/packages/omo-codex/plugin/components/rules/dist/codex-hook.js +127 -0
- package/packages/omo-codex/plugin/components/rules/dist/config.d.ts +2 -0
- package/packages/omo-codex/plugin/components/rules/dist/config.js +100 -0
- package/packages/omo-codex/plugin/components/rules/dist/context-pressure.d.ts +2 -0
- package/packages/omo-codex/plugin/components/rules/dist/context-pressure.js +26 -0
- package/packages/omo-codex/plugin/components/rules/dist/debug-log.d.ts +8 -0
- package/packages/omo-codex/plugin/components/rules/dist/debug-log.js +36 -0
- package/packages/omo-codex/plugin/components/rules/dist/dynamic-target-fingerprints.d.ts +7 -0
- package/packages/omo-codex/plugin/components/rules/dist/dynamic-target-fingerprints.js +65 -0
- package/packages/omo-codex/plugin/components/rules/dist/event-budget.d.ts +3 -0
- package/packages/omo-codex/plugin/components/rules/dist/event-budget.js +14 -0
- package/packages/omo-codex/plugin/components/rules/dist/hook-output.d.ts +2 -0
- package/packages/omo-codex/plugin/components/rules/dist/hook-output.js +24 -0
- package/packages/omo-codex/plugin/components/rules/dist/path-utils.d.ts +4 -0
- package/packages/omo-codex/plugin/components/rules/dist/path-utils.js +24 -0
- package/packages/omo-codex/plugin/components/rules/dist/persistent-cache.d.ts +13 -0
- package/packages/omo-codex/plugin/components/rules/dist/persistent-cache.js +172 -0
- package/packages/omo-codex/plugin/components/rules/dist/post-compact-budget.d.ts +6 -0
- package/packages/omo-codex/plugin/components/rules/dist/post-compact-budget.js +74 -0
- package/packages/omo-codex/plugin/components/rules/dist/post-compact-claim.d.ts +4 -0
- package/packages/omo-codex/plugin/components/rules/dist/post-compact-claim.js +6 -0
- package/packages/omo-codex/plugin/components/rules/dist/post-compact-directive.d.ts +1 -0
- package/packages/omo-codex/plugin/components/rules/dist/post-compact-directive.js +32 -0
- package/packages/omo-codex/plugin/components/rules/dist/post-compact-state.d.ts +13 -0
- package/packages/omo-codex/plugin/components/rules/dist/post-compact-state.js +29 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/cache.d.ts +9 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/cache.js +51 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/constants.d.ts +70 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/constants.js +101 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-dynamic-cache.d.ts +5 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-dynamic-cache.js +60 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-dynamic-loader.d.ts +6 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-dynamic-loader.js +61 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-loader.d.ts +7 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-loader.js +60 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-paths.d.ts +11 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-paths.js +75 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-static-loader.d.ts +6 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-static-loader.js +29 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-types.d.ts +44 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine-types.js +1 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine.d.ts +5 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/engine.js +85 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/errors.d.ts +6 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/errors.js +12 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/finder-cache.d.ts +14 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/finder-cache.js +51 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/finder-paths.d.ts +6 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/finder-paths.js +33 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/finder-sources.d.ts +5 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/finder-sources.js +40 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/finder.d.ts +28 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/finder.js +146 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/formatter.d.ts +7 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/formatter.js +112 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/matcher.d.ts +18 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/matcher.js +93 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/ordering.d.ts +3 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/ordering.js +27 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/parser-frontmatter.d.ts +7 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/parser-frontmatter.js +30 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/parser-yaml.d.ts +2 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/parser-yaml.js +237 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/parser.d.ts +3 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/parser.js +31 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/plugin-root.d.ts +1 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/plugin-root.js +48 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/project-root.d.ts +1 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/project-root.js +23 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/scanner.d.ts +14 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/scanner.js +111 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/sources.d.ts +3 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/sources.js +9 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/truncator.d.ts +18 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/truncator.js +59 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/types.d.ts +126 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules/types.js +8 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules-engine-factory.d.ts +6 -0
- package/packages/omo-codex/plugin/components/rules/dist/rules-engine-factory.js +20 -0
- package/packages/omo-codex/plugin/components/rules/dist/session-state-lock.d.ts +3 -0
- package/packages/omo-codex/plugin/components/rules/dist/session-state-lock.js +41 -0
- package/packages/omo-codex/plugin/components/rules/dist/sparkshell-awareness.d.ts +10 -0
- package/packages/omo-codex/plugin/components/rules/dist/sparkshell-awareness.js +90 -0
- package/packages/omo-codex/plugin/components/rules/dist/static-injection.d.ts +3 -0
- package/packages/omo-codex/plugin/components/rules/dist/static-injection.js +128 -0
- package/packages/omo-codex/plugin/components/rules/dist/tool-paths.d.ts +6 -0
- package/packages/omo-codex/plugin/components/rules/dist/tool-paths.js +168 -0
- package/packages/omo-codex/plugin/components/rules/dist/transcript-rule-filter.d.ts +4 -0
- package/packages/omo-codex/plugin/components/rules/dist/transcript-rule-filter.js +49 -0
- package/packages/omo-codex/plugin/components/rules/dist/transcript-search.d.ts +4 -0
- package/packages/omo-codex/plugin/components/rules/dist/transcript-search.js +91 -0
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/src/codex-hook.ts +4 -2
- package/packages/omo-codex/plugin/components/rules/src/config.ts +13 -0
- package/packages/omo-codex/plugin/components/rules/src/event-budget.ts +17 -0
- package/packages/omo-codex/plugin/components/rules/src/persistent-cache.ts +4 -1
- package/packages/omo-codex/plugin/components/rules/src/post-compact-directive.ts +39 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/constants.ts +16 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/engine.ts +8 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/types.ts +4 -0
- package/packages/omo-codex/plugin/components/rules/src/sparkshell-awareness.ts +53 -4
- package/packages/omo-codex/plugin/components/rules/src/static-injection.ts +127 -7
- package/packages/omo-codex/plugin/components/rules/src/transcript-rule-filter.ts +9 -1
- package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +4 -2
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +7 -2
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +9 -9
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-dedup.test.ts +10 -4
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-directive.test.ts +241 -0
- package/packages/omo-codex/plugin/components/rules/test/event-budget.test.ts +168 -0
- package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +4 -0
- package/packages/omo-codex/plugin/components/rules/test/sparkshell-awareness.test.ts +86 -3
- package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +15 -15
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/boulder-reader.d.ts +16 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/boulder-reader.js +146 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/cli.d.ts +2 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/cli.js +49 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/codex-hook.d.ts +2 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/codex-hook.js +80 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/directive.d.ts +1 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/directive.js +2 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/index.d.ts +5 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/index.js +3 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/types.d.ts +20 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/dist/types.js +1 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +24 -2
- package/packages/omo-codex/plugin/components/telemetry/dist/atomic-write.d.ts +1 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/atomic-write.js +18 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/cli.d.ts +2 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +62 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/codex-hook.d.ts +15 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/codex-hook.js +42 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/data-path.d.ts +10 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/data-path.js +35 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/diagnostics.d.ts +12 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/diagnostics.js +108 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/env-flags.d.ts +4 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/env-flags.js +31 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/posthog-activity-state.d.ts +8 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/posthog-activity-state.js +68 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/posthog.d.ts +21 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +133 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/product-identity.d.ts +8 -0
- package/packages/omo-codex/plugin/components/telemetry/dist/product-identity.js +29 -0
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/explorer.toml +5 -13
- package/packages/omo-codex/plugin/components/ultrawork/agents/librarian.toml +61 -185
- package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/directive.md +122 -117
- package/packages/omo-codex/plugin/components/ultrawork/dist/cli.d.ts +2 -0
- package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +48 -0
- package/packages/omo-codex/plugin/components/ultrawork/dist/codex-hook.d.ts +7 -0
- package/packages/omo-codex/plugin/components/ultrawork/dist/codex-hook.js +122 -0
- package/packages/omo-codex/plugin/components/ultrawork/dist/directive.d.ts +1 -0
- package/packages/omo-codex/plugin/components/ultrawork/dist/directive.js +2 -0
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +20 -11
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +17 -11
- package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +2 -5
- package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +0 -71
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.d.ts +16 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +200 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-arg-parser.d.ts +17 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-arg-parser.js +97 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-commands.d.ts +4 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-commands.js +183 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.d.ts +6 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.js +55 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-steering.d.ts +12 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-steering.js +145 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.d.ts +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +39 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.d.ts +13 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +100 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.d.ts +26 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.js +97 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-hook.d.ts +28 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-hook.js +145 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/command-types.d.ts +34 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/command-types.js +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/constants.d.ts +16 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/constants.js +41 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/domain-types.d.ts +95 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/domain-types.js +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence.d.ts +31 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence.js +119 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/goal-status.d.ts +12 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/goal-status.js +69 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.d.ts +16 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.js +59 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.d.ts +48 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.js +119 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.d.ts +8 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.js +89 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.d.ts +6 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.js +123 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.d.ts +16 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.js +70 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/runtime.d.ts +10 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/runtime.js +13 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-types.d.ts +63 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-types.js +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering.d.ts +6 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering.js +292 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/types.d.ts +5 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/types.js +5 -0
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +14 -14
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +24 -25
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-commands.ts +17 -3
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +2 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-entrypoint.test.ts +95 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +0 -96
- package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate.test.ts +23 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/skill-contract.test.ts +46 -0
- package/packages/omo-codex/plugin/hooks/hooks.json +16 -16
- package/packages/omo-codex/plugin/package-lock.json +10 -9
- package/packages/omo-codex/plugin/package.json +27 -26
- package/packages/omo-codex/plugin/scripts/auto-update.mjs +64 -15
- package/packages/omo-codex/plugin/scripts/build-bundled-mcp-runtimes.mjs +16 -0
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/multi-agent-v2-guard.mjs +82 -18
- package/packages/omo-codex/plugin/scripts/migrate-codex-config.mjs +2 -2
- package/packages/omo-codex/plugin/scripts/sync-skills.mjs +23 -11
- package/packages/omo-codex/plugin/scripts/sync-version.mjs +94 -0
- package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +9 -9
- package/packages/omo-codex/plugin/skills/lcx-contribute-bug-fix/SKILL.md +16 -1
- package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +93 -0
- package/packages/omo-codex/plugin/skills/lcx-doctor/agents/openai.yaml +11 -0
- package/packages/omo-codex/plugin/skills/lcx-report-bug/SKILL.md +17 -13
- package/packages/omo-codex/plugin/skills/lsp-setup/SKILL.md +139 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/bash/README.md +60 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/c-cpp/README.md +61 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/csharp/README.md +71 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/dart/README.md +48 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/elixir/README.md +51 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/go/README.md +57 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/haskell/README.md +57 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/java/README.md +57 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/julia/README.md +60 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/kotlin/README.md +59 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/lua/README.md +66 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/php/README.md +62 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/python/README.md +71 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/ruby/README.md +53 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/rust/README.md +59 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/swift/README.md +51 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/terraform/README.md +62 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/typescript/README.md +77 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/yaml/README.md +70 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/references/zig/README.md +49 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/scripts/detect-lsp.ts +210 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/scripts/lsp-server-table.ts +177 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/scripts/tsconfig.json +17 -0
- package/packages/omo-codex/plugin/skills/lsp-setup/scripts/verify-lsp.ts +147 -0
- package/packages/omo-codex/plugin/skills/refactor/SKILL.md +9 -9
- package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +10 -10
- package/packages/omo-codex/plugin/skills/review-work/SKILL.md +20 -22
- package/packages/omo-codex/plugin/skills/start-work/SKILL.md +38 -61
- package/packages/omo-codex/plugin/skills/ultraresearch/SKILL.md +135 -677
- package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +14 -14
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +24 -25
- package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +20 -11
- package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +17 -11
- package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +9 -9
- package/packages/omo-codex/plugin/test/aggregate-build.test.mjs +2 -1
- package/packages/omo-codex/plugin/test/aggregate-mcp.test.mjs +1 -1
- package/packages/omo-codex/plugin/test/aggregate-plugin-fixture.mjs +5 -5
- package/packages/omo-codex/plugin/test/aggregate-skills.test.mjs +6 -6
- package/packages/omo-codex/plugin/test/auto-update-restart-notice.test.mjs +194 -0
- package/packages/omo-codex/plugin/test/auto-update.test.mjs +17 -0
- package/packages/omo-codex/plugin/test/lcx-bug-skills.test.mjs +15 -44
- package/packages/omo-codex/plugin/test/lsp-prebuild-layouts.test.mjs +140 -0
- package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +189 -7
- package/packages/omo-codex/plugin/test/start-work-skill.test.mjs +9 -31
- package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +68 -4
- package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +119 -0
- package/packages/omo-codex/plugin/test/sync-skills.test.mjs +11 -112
- package/packages/omo-codex/plugin/test/sync-version.test.mjs +68 -0
- package/packages/omo-codex/plugin/test/ultraresearch-skill-contract.test.mjs +126 -0
- package/packages/omo-codex/plugin/test/ulw-plan-skill.test.mjs +2 -2
- package/packages/omo-codex/scripts/install/bin-dir.mjs +20 -0
- package/packages/omo-codex/scripts/install/bin-links.mjs +43 -6
- package/packages/omo-codex/scripts/install/cache.mjs +4 -0
- package/packages/omo-codex/scripts/install/config.mjs +4 -4
- package/packages/omo-codex/scripts/install/delegated-command.mjs +5 -1
- package/packages/omo-codex/scripts/install/git-bash-mcp-env.mjs +28 -0
- package/packages/omo-codex/scripts/install/git-bash.mjs +12 -4
- package/packages/omo-codex/scripts/install/git-bash.test.mjs +39 -4
- package/packages/omo-codex/scripts/install/hook-targets.mjs +46 -0
- package/packages/omo-codex/scripts/install/multi-agent-v2-config.mjs +12 -2
- package/packages/omo-codex/scripts/install/process.mjs +1 -0
- package/packages/omo-codex/scripts/install-bin-links.test.mjs +131 -3
- package/packages/omo-codex/scripts/install-config-git-bash.test.mjs +91 -0
- package/packages/omo-codex/scripts/install-config.test.mjs +50 -44
- package/packages/omo-codex/scripts/install-delegated-command.test.mjs +78 -0
- package/packages/omo-codex/scripts/install-git-bash-mcp-env.test.mjs +93 -0
- package/packages/omo-codex/scripts/install-hook-targets.test.mjs +100 -0
- package/packages/omo-codex/scripts/install-lazycodex-version-stamp.test.mjs +3 -1
- package/packages/omo-codex/scripts/install-local.mjs +7 -18
- package/packages/omo-codex/scripts/install-local.test.mjs +34 -1
- package/packages/shared-skills/skills/lcx-contribute-bug-fix/SKILL.md +16 -1
- package/packages/shared-skills/skills/lcx-doctor/SKILL.md +93 -0
- package/packages/shared-skills/skills/lcx-doctor/agents/openai.yaml +11 -0
- package/packages/shared-skills/skills/lcx-report-bug/SKILL.md +17 -13
- package/packages/shared-skills/skills/lsp-setup/SKILL.md +139 -0
- package/packages/shared-skills/skills/lsp-setup/references/bash/README.md +60 -0
- package/packages/shared-skills/skills/lsp-setup/references/c-cpp/README.md +61 -0
- package/packages/shared-skills/skills/lsp-setup/references/csharp/README.md +71 -0
- package/packages/shared-skills/skills/lsp-setup/references/dart/README.md +48 -0
- package/packages/shared-skills/skills/lsp-setup/references/elixir/README.md +51 -0
- package/packages/shared-skills/skills/lsp-setup/references/go/README.md +57 -0
- package/packages/shared-skills/skills/lsp-setup/references/haskell/README.md +57 -0
- package/packages/shared-skills/skills/lsp-setup/references/java/README.md +57 -0
- package/packages/shared-skills/skills/lsp-setup/references/julia/README.md +60 -0
- package/packages/shared-skills/skills/lsp-setup/references/kotlin/README.md +59 -0
- package/packages/shared-skills/skills/lsp-setup/references/lua/README.md +66 -0
- package/packages/shared-skills/skills/lsp-setup/references/php/README.md +62 -0
- package/packages/shared-skills/skills/lsp-setup/references/python/README.md +71 -0
- package/packages/shared-skills/skills/lsp-setup/references/ruby/README.md +53 -0
- package/packages/shared-skills/skills/lsp-setup/references/rust/README.md +59 -0
- package/packages/shared-skills/skills/lsp-setup/references/swift/README.md +51 -0
- package/packages/shared-skills/skills/lsp-setup/references/terraform/README.md +62 -0
- package/packages/shared-skills/skills/lsp-setup/references/typescript/README.md +77 -0
- package/packages/shared-skills/skills/lsp-setup/references/yaml/README.md +70 -0
- package/packages/shared-skills/skills/lsp-setup/references/zig/README.md +49 -0
- package/packages/shared-skills/skills/lsp-setup/scripts/detect-lsp.ts +210 -0
- package/packages/shared-skills/skills/lsp-setup/scripts/lsp-server-table.ts +177 -0
- package/packages/shared-skills/skills/lsp-setup/scripts/tsconfig.json +17 -0
- package/packages/shared-skills/skills/lsp-setup/scripts/verify-lsp.ts +147 -0
- package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +1 -1
- package/packages/shared-skills/skills/review-work/SKILL.md +10 -14
- package/packages/shared-skills/skills/start-work/SKILL.md +30 -59
- package/packages/shared-skills/skills/ultraresearch/SKILL.md +126 -667
- package/dist/hooks/anthropic-effort/hook.d.ts +0 -26
- package/dist/hooks/anthropic-effort/index.d.ts +0 -1
- package/dist/hooks/keyword-detector/analyze/default.d.ts +0 -12
- package/dist/hooks/keyword-detector/analyze/index.d.ts +0 -1
- package/dist/hooks/keyword-detector/search/default.d.ts +0 -12
- package/dist/hooks/keyword-detector/search/index.d.ts +0 -1
- package/dist/hooks/thinking-block-validator/hook.d.ts +0 -12
- package/dist/hooks/thinking-block-validator/index.d.ts +0 -1
- package/packages/omo-codex/plugin/components/ultrawork/test/directive-contract.test.ts +0 -18
- package/packages/omo-codex/plugin/test/global-review-debug-gate.test.mjs +0 -29
- package/packages/omo-codex/plugin/test/subagent-guidance.test.mjs +0 -151
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import os from "node:os";
|
|
2
|
+
type OsProvider = Pick<typeof os, "homedir" | "tmpdir">;
|
|
3
|
+
export declare function getOsProvider(): OsProvider;
|
|
4
|
+
/** @internal test-only */
|
|
5
|
+
export declare function __setOsProviderForTesting(provider: OsProvider): void;
|
|
6
|
+
/** @internal test-only */
|
|
7
|
+
export declare function __resetOsProviderForTesting(): void;
|
|
8
|
+
export declare function getDataDir(): string;
|
|
9
|
+
export declare function getActivityStateDir(): string;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { accessSync, constants, mkdirSync } from "node:fs";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { CACHE_DIR_NAME } from "./product-identity.js";
|
|
5
|
+
let osProviderOverride = null;
|
|
6
|
+
export function getOsProvider() {
|
|
7
|
+
return osProviderOverride ?? os;
|
|
8
|
+
}
|
|
9
|
+
/** @internal test-only */
|
|
10
|
+
export function __setOsProviderForTesting(provider) {
|
|
11
|
+
osProviderOverride = provider;
|
|
12
|
+
}
|
|
13
|
+
/** @internal test-only */
|
|
14
|
+
export function __resetOsProviderForTesting() {
|
|
15
|
+
osProviderOverride = null;
|
|
16
|
+
}
|
|
17
|
+
function resolveWritableDirectory(preferredDir, fallbackSuffix) {
|
|
18
|
+
try {
|
|
19
|
+
mkdirSync(preferredDir, { recursive: true });
|
|
20
|
+
accessSync(preferredDir, constants.W_OK);
|
|
21
|
+
return preferredDir;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
const fallbackDir = path.join(getOsProvider().tmpdir(), fallbackSuffix);
|
|
25
|
+
mkdirSync(fallbackDir, { recursive: true });
|
|
26
|
+
return fallbackDir;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function getDataDir() {
|
|
30
|
+
const preferredDataDir = process.env["XDG_DATA_HOME"] ?? path.join(getOsProvider().homedir(), ".local", "share");
|
|
31
|
+
return resolveWritableDirectory(preferredDataDir, "omo-codex-data");
|
|
32
|
+
}
|
|
33
|
+
export function getActivityStateDir() {
|
|
34
|
+
return path.join(getDataDir(), CACHE_DIR_NAME);
|
|
35
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type TelemetryDiagnosticEvent = "telemetry_activity_state_read_failed" | "telemetry_activity_state_write_failed" | "telemetry_capture_failed" | "telemetry_cpu_info_unavailable" | "telemetry_posthog_import_failed" | "telemetry_posthog_init_failed" | "telemetry_shutdown_failed";
|
|
2
|
+
export type TelemetryDiagnosticSource = "cli" | "install" | "plugin" | "shared";
|
|
3
|
+
export type TelemetryDiagnosticErrorKind = "error" | "non_error";
|
|
4
|
+
export type TelemetryDiagnosticInput = {
|
|
5
|
+
readonly event: TelemetryDiagnosticEvent;
|
|
6
|
+
readonly source: TelemetryDiagnosticSource;
|
|
7
|
+
readonly error?: unknown;
|
|
8
|
+
readonly errorKind?: TelemetryDiagnosticErrorKind;
|
|
9
|
+
};
|
|
10
|
+
export declare function getTelemetryDiagnosticsFilePath(): string;
|
|
11
|
+
export declare function writeTelemetryDiagnostic(input: TelemetryDiagnosticInput, now?: Date): void;
|
|
12
|
+
export declare function cleanupTelemetryDiagnostics(now?: Date): void;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { appendFileSync, existsSync, mkdirSync, readFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { writeFileAtomically } from "./atomic-write.js";
|
|
4
|
+
import { getActivityStateDir } from "./data-path.js";
|
|
5
|
+
const DIAGNOSTICS_FILE_NAME = "telemetry-diagnostics.jsonl";
|
|
6
|
+
const DIAGNOSTICS_RETENTION_MS = 7 * 24 * 60 * 60 * 1000;
|
|
7
|
+
const DIAGNOSTICS_MAX_BYTES = 256 * 1024;
|
|
8
|
+
export function getTelemetryDiagnosticsFilePath() {
|
|
9
|
+
return join(getActivityStateDir(), DIAGNOSTICS_FILE_NAME);
|
|
10
|
+
}
|
|
11
|
+
export function writeTelemetryDiagnostic(input, now = new Date()) {
|
|
12
|
+
try {
|
|
13
|
+
cleanupTelemetryDiagnostics(now);
|
|
14
|
+
mkdirSync(getActivityStateDir(), { recursive: true });
|
|
15
|
+
appendFileSync(getTelemetryDiagnosticsFilePath(), `${JSON.stringify(toDiagnosticRecord(input, now))}\n`, "utf-8");
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function cleanupTelemetryDiagnostics(now = new Date()) {
|
|
22
|
+
const diagnosticsFilePath = getTelemetryDiagnosticsFilePath();
|
|
23
|
+
if (!existsSync(diagnosticsFilePath)) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
const cutoffMs = now.getTime() - DIAGNOSTICS_RETENTION_MS;
|
|
28
|
+
const retainedLines = trimToMaxBytes(readFileSync(diagnosticsFilePath, "utf-8")
|
|
29
|
+
.split("\n")
|
|
30
|
+
.filter((line) => shouldRetainLine(line, cutoffMs)));
|
|
31
|
+
writeFileAtomically(diagnosticsFilePath, retainedLines.length === 0 ? "" : `${retainedLines.join("\n")}\n`);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function toDiagnosticRecord(input, now) {
|
|
38
|
+
return {
|
|
39
|
+
timestamp: now.toISOString(),
|
|
40
|
+
event: input.event,
|
|
41
|
+
source: input.source,
|
|
42
|
+
...serializeError(input.error, input.errorKind),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function serializeError(error, errorKind) {
|
|
46
|
+
if (error instanceof Error) {
|
|
47
|
+
return {
|
|
48
|
+
error_kind: errorKind ?? "error",
|
|
49
|
+
error_name: error.name,
|
|
50
|
+
error_message: error.message,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
if (error === undefined) {
|
|
54
|
+
return {};
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
error_kind: errorKind ?? "non_error",
|
|
58
|
+
error_name: typeof error,
|
|
59
|
+
error_message: String(error),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function shouldRetainLine(line, cutoffMs) {
|
|
63
|
+
if (line.length === 0) {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
const parsed = parseDiagnosticLine(line);
|
|
67
|
+
if (parsed === null) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
const timestamp = parsed["timestamp"];
|
|
71
|
+
if (typeof timestamp !== "string") {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
const timestampMs = Date.parse(timestamp);
|
|
75
|
+
return Number.isFinite(timestampMs) && timestampMs >= cutoffMs;
|
|
76
|
+
}
|
|
77
|
+
function parseDiagnosticLine(line) {
|
|
78
|
+
try {
|
|
79
|
+
const parsed = JSON.parse(line);
|
|
80
|
+
if (!isRecord(parsed)) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
return parsed;
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function isRecord(value) {
|
|
90
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
91
|
+
}
|
|
92
|
+
function trimToMaxBytes(lines) {
|
|
93
|
+
const retained = [];
|
|
94
|
+
let totalBytes = 0;
|
|
95
|
+
for (let index = lines.length - 1; index >= 0; index -= 1) {
|
|
96
|
+
const line = lines[index];
|
|
97
|
+
if (line === undefined) {
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
const lineBytes = Buffer.byteLength(`${line}\n`, "utf-8");
|
|
101
|
+
if (totalBytes + lineBytes > DIAGNOSTICS_MAX_BYTES) {
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
retained.unshift(line);
|
|
105
|
+
totalBytes += lineBytes;
|
|
106
|
+
}
|
|
107
|
+
return retained;
|
|
108
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { DEFAULT_POSTHOG_API_KEY, DEFAULT_POSTHOG_HOST, } from "./product-identity.js";
|
|
2
|
+
function normalizeEnvValue(value) {
|
|
3
|
+
return value?.trim().toLowerCase();
|
|
4
|
+
}
|
|
5
|
+
function isDisableFlag(value) {
|
|
6
|
+
const normalized = normalizeEnvValue(value);
|
|
7
|
+
return normalized === "1" || normalized === "true";
|
|
8
|
+
}
|
|
9
|
+
function isTelemetryOptOutFlag(value) {
|
|
10
|
+
const normalized = normalizeEnvValue(value);
|
|
11
|
+
return normalized === "0" || normalized === "false" || normalized === "no";
|
|
12
|
+
}
|
|
13
|
+
export function shouldDisablePostHog() {
|
|
14
|
+
return (isDisableFlag(process.env["OMO_DISABLE_POSTHOG"]) ||
|
|
15
|
+
isTelemetryOptOutFlag(process.env["OMO_SEND_ANONYMOUS_TELEMETRY"]) ||
|
|
16
|
+
isDisableFlag(process.env["OMO_CODEX_DISABLE_POSTHOG"]) ||
|
|
17
|
+
isTelemetryOptOutFlag(process.env["OMO_CODEX_SEND_ANONYMOUS_TELEMETRY"]));
|
|
18
|
+
}
|
|
19
|
+
export function getPostHogApiKey() {
|
|
20
|
+
const explicit = process.env["POSTHOG_API_KEY"];
|
|
21
|
+
if (explicit === undefined) {
|
|
22
|
+
return DEFAULT_POSTHOG_API_KEY;
|
|
23
|
+
}
|
|
24
|
+
return explicit.trim();
|
|
25
|
+
}
|
|
26
|
+
export function hasPostHogApiKey() {
|
|
27
|
+
return getPostHogApiKey().length > 0;
|
|
28
|
+
}
|
|
29
|
+
export function getPostHogHost() {
|
|
30
|
+
return process.env["POSTHOG_HOST"]?.trim() || DEFAULT_POSTHOG_HOST;
|
|
31
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type PostHogActivityState = {
|
|
2
|
+
readonly lastActiveDayUTC?: string;
|
|
3
|
+
};
|
|
4
|
+
export type PostHogActivityCaptureState = {
|
|
5
|
+
readonly dayUTC: string;
|
|
6
|
+
readonly captureDaily: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare function getPostHogActivityCaptureState(now?: Date): PostHogActivityCaptureState;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { writeFileAtomically } from "./atomic-write.js";
|
|
4
|
+
import { getActivityStateDir } from "./data-path.js";
|
|
5
|
+
import { writeTelemetryDiagnostic } from "./diagnostics.js";
|
|
6
|
+
const POSTHOG_ACTIVITY_STATE_FILE = "posthog-activity.json";
|
|
7
|
+
function getPostHogActivityStateFilePath() {
|
|
8
|
+
return join(getActivityStateDir(), POSTHOG_ACTIVITY_STATE_FILE);
|
|
9
|
+
}
|
|
10
|
+
function getUtcDayString(date) {
|
|
11
|
+
return date.toISOString().slice(0, 10);
|
|
12
|
+
}
|
|
13
|
+
function isPostHogActivityState(value) {
|
|
14
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
15
|
+
}
|
|
16
|
+
function writeActivityStateDiagnostic(event, error, errorKind) {
|
|
17
|
+
writeTelemetryDiagnostic({
|
|
18
|
+
event,
|
|
19
|
+
source: "shared",
|
|
20
|
+
error,
|
|
21
|
+
errorKind,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function readPostHogActivityState() {
|
|
25
|
+
const stateFilePath = getPostHogActivityStateFilePath();
|
|
26
|
+
if (!existsSync(stateFilePath)) {
|
|
27
|
+
return {};
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
const stateContent = readFileSync(stateFilePath, "utf-8");
|
|
31
|
+
const stateJson = JSON.parse(stateContent);
|
|
32
|
+
if (!isPostHogActivityState(stateJson)) {
|
|
33
|
+
return {};
|
|
34
|
+
}
|
|
35
|
+
return stateJson;
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
writeActivityStateDiagnostic("telemetry_activity_state_read_failed", error, error instanceof Error ? "error" : "non_error");
|
|
39
|
+
return {};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function writePostHogActivityState(nextState) {
|
|
43
|
+
const stateDir = getActivityStateDir();
|
|
44
|
+
const stateFilePath = getPostHogActivityStateFilePath();
|
|
45
|
+
try {
|
|
46
|
+
mkdirSync(stateDir, { recursive: true });
|
|
47
|
+
writeFileAtomically(stateFilePath, `${JSON.stringify(nextState, null, 2)}\n`);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
writeActivityStateDiagnostic("telemetry_activity_state_write_failed", error, error instanceof Error ? "error" : "non_error");
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export function getPostHogActivityCaptureState(now = new Date()) {
|
|
55
|
+
const state = readPostHogActivityState();
|
|
56
|
+
const dayUTC = getUtcDayString(now);
|
|
57
|
+
const captureDaily = state.lastActiveDayUTC !== dayUTC;
|
|
58
|
+
if (captureDaily) {
|
|
59
|
+
writePostHogActivityState({
|
|
60
|
+
...state,
|
|
61
|
+
lastActiveDayUTC: dayUTC,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
dayUTC,
|
|
66
|
+
captureDaily,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import os from "node:os";
|
|
2
|
+
import { getPostHogActivityCaptureState } from "./posthog-activity-state.js";
|
|
3
|
+
import { DEFAULT_POSTHOG_API_KEY, DEFAULT_POSTHOG_HOST } from "./product-identity.js";
|
|
4
|
+
export { DEFAULT_POSTHOG_API_KEY, DEFAULT_POSTHOG_HOST };
|
|
5
|
+
export type PostHogActivityReason = "session_start";
|
|
6
|
+
export type PostHogClient = {
|
|
7
|
+
trackActive: (distinctId: string, reason: PostHogActivityReason) => void;
|
|
8
|
+
shutdown: () => Promise<void>;
|
|
9
|
+
};
|
|
10
|
+
type OsProvider = Pick<typeof os, "arch" | "cpus" | "hostname" | "platform" | "release" | "totalmem" | "type">;
|
|
11
|
+
type ActivityStateProvider = typeof getPostHogActivityCaptureState;
|
|
12
|
+
export declare function createPluginPostHog(): Promise<PostHogClient>;
|
|
13
|
+
export declare function getPostHogDistinctId(): string;
|
|
14
|
+
/** @internal test-only */
|
|
15
|
+
export declare function __setOsProviderForTesting(provider: OsProvider): void;
|
|
16
|
+
/** @internal test-only */
|
|
17
|
+
export declare function __resetOsProviderForTesting(): void;
|
|
18
|
+
/** @internal test-only */
|
|
19
|
+
export declare function __setActivityStateProviderForTesting(provider: ActivityStateProvider): void;
|
|
20
|
+
/** @internal test-only */
|
|
21
|
+
export declare function __resetActivityStateProviderForTesting(): void;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import { writeTelemetryDiagnostic, } from "./diagnostics.js";
|
|
4
|
+
import { getPostHogApiKey, getPostHogHost, hasPostHogApiKey, shouldDisablePostHog } from "./env-flags.js";
|
|
5
|
+
import { getPostHogActivityCaptureState } from "./posthog-activity-state.js";
|
|
6
|
+
import { DEFAULT_POSTHOG_API_KEY, DEFAULT_POSTHOG_HOST, EVENT_NAME, getComponentVersion, PACKAGE_NAME, PRODUCT_NAME, } from "./product-identity.js";
|
|
7
|
+
export { DEFAULT_POSTHOG_API_KEY, DEFAULT_POSTHOG_HOST };
|
|
8
|
+
let osProviderOverride = null;
|
|
9
|
+
let activityStateProviderOverride = null;
|
|
10
|
+
const NO_OP_POSTHOG = {
|
|
11
|
+
trackActive: () => undefined,
|
|
12
|
+
shutdown: async () => undefined,
|
|
13
|
+
};
|
|
14
|
+
function resolveOsProvider() {
|
|
15
|
+
return osProviderOverride ?? os;
|
|
16
|
+
}
|
|
17
|
+
function resolveActivityStateProvider() {
|
|
18
|
+
return activityStateProviderOverride ?? getPostHogActivityCaptureState;
|
|
19
|
+
}
|
|
20
|
+
function writePostHogDiagnostic(event, source, error, errorKind) {
|
|
21
|
+
writeTelemetryDiagnostic({ event, source, error, errorKind });
|
|
22
|
+
}
|
|
23
|
+
function getSafeCpuInfo() {
|
|
24
|
+
try {
|
|
25
|
+
const cpuInfo = resolveOsProvider().cpus();
|
|
26
|
+
return {
|
|
27
|
+
count: cpuInfo.length,
|
|
28
|
+
model: cpuInfo[0]?.model,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
writePostHogDiagnostic("telemetry_cpu_info_unavailable", "plugin", error, error instanceof Error ? "error" : "non_error");
|
|
33
|
+
return {
|
|
34
|
+
count: 0,
|
|
35
|
+
model: undefined,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function getSharedProperties() {
|
|
40
|
+
const osProvider = resolveOsProvider();
|
|
41
|
+
const cpuInfo = getSafeCpuInfo();
|
|
42
|
+
return {
|
|
43
|
+
platform: "omo-codex",
|
|
44
|
+
product_name: PRODUCT_NAME,
|
|
45
|
+
package_name: PACKAGE_NAME,
|
|
46
|
+
package_version: getComponentVersion(),
|
|
47
|
+
runtime: "node",
|
|
48
|
+
runtime_version: process.version,
|
|
49
|
+
source: "plugin",
|
|
50
|
+
$os: osProvider.platform(),
|
|
51
|
+
$os_version: osProvider.release(),
|
|
52
|
+
os_arch: osProvider.arch(),
|
|
53
|
+
os_type: osProvider.type(),
|
|
54
|
+
cpu_count: cpuInfo.count,
|
|
55
|
+
cpu_model: cpuInfo.model,
|
|
56
|
+
total_memory_gb: Math.round(osProvider.totalmem() / 1024 / 1024 / 1024),
|
|
57
|
+
locale: Intl.DateTimeFormat().resolvedOptions().locale,
|
|
58
|
+
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
59
|
+
shell: process.env["SHELL"],
|
|
60
|
+
ci: Boolean(process.env["CI"]),
|
|
61
|
+
terminal: process.env["TERM_PROGRAM"],
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export async function createPluginPostHog() {
|
|
65
|
+
if (shouldDisablePostHog() || !hasPostHogApiKey()) {
|
|
66
|
+
return NO_OP_POSTHOG;
|
|
67
|
+
}
|
|
68
|
+
let PostHogClientConstructor;
|
|
69
|
+
try {
|
|
70
|
+
const module = await import("posthog-node");
|
|
71
|
+
PostHogClientConstructor = module.PostHog;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
writePostHogDiagnostic("telemetry_posthog_import_failed", "plugin", error, error instanceof Error ? "error" : "non_error");
|
|
75
|
+
return NO_OP_POSTHOG;
|
|
76
|
+
}
|
|
77
|
+
let client;
|
|
78
|
+
try {
|
|
79
|
+
client = new PostHogClientConstructor(getPostHogApiKey(), {
|
|
80
|
+
enableExceptionAutocapture: false,
|
|
81
|
+
enableLocalEvaluation: false,
|
|
82
|
+
strictLocalEvaluation: true,
|
|
83
|
+
disableRemoteConfig: true,
|
|
84
|
+
flushAt: 1,
|
|
85
|
+
flushInterval: 0,
|
|
86
|
+
host: getPostHogHost(),
|
|
87
|
+
disableGeoip: false,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
writePostHogDiagnostic("telemetry_posthog_init_failed", "plugin", error, error instanceof Error ? "error" : "non_error");
|
|
92
|
+
return NO_OP_POSTHOG;
|
|
93
|
+
}
|
|
94
|
+
const sharedProperties = getSharedProperties();
|
|
95
|
+
return {
|
|
96
|
+
trackActive: (distinctId, reason) => {
|
|
97
|
+
const activityState = resolveActivityStateProvider()();
|
|
98
|
+
if (!activityState.captureDaily) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
client.capture({
|
|
102
|
+
distinctId,
|
|
103
|
+
event: EVENT_NAME,
|
|
104
|
+
properties: {
|
|
105
|
+
...sharedProperties,
|
|
106
|
+
$process_person_profile: false,
|
|
107
|
+
day_utc: activityState.dayUTC,
|
|
108
|
+
reason,
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
},
|
|
112
|
+
shutdown: async () => client.shutdown(),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
export function getPostHogDistinctId() {
|
|
116
|
+
return createHash("sha256").update(`omo-codex:${resolveOsProvider().hostname()}`).digest("hex");
|
|
117
|
+
}
|
|
118
|
+
/** @internal test-only */
|
|
119
|
+
export function __setOsProviderForTesting(provider) {
|
|
120
|
+
osProviderOverride = provider;
|
|
121
|
+
}
|
|
122
|
+
/** @internal test-only */
|
|
123
|
+
export function __resetOsProviderForTesting() {
|
|
124
|
+
osProviderOverride = null;
|
|
125
|
+
}
|
|
126
|
+
/** @internal test-only */
|
|
127
|
+
export function __setActivityStateProviderForTesting(provider) {
|
|
128
|
+
activityStateProviderOverride = provider;
|
|
129
|
+
}
|
|
130
|
+
/** @internal test-only */
|
|
131
|
+
export function __resetActivityStateProviderForTesting() {
|
|
132
|
+
activityStateProviderOverride = null;
|
|
133
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const PRODUCT_NAME = "omo-codex";
|
|
2
|
+
export declare const PACKAGE_NAME = "@oh-my-opencode/omo-codex";
|
|
3
|
+
export declare const CACHE_DIR_NAME = "omo-codex";
|
|
4
|
+
export declare const EVENT_NAME = "omo_codex_daily_active";
|
|
5
|
+
export declare const LEGACY_PARENT_PACKAGE = "oh-my-opencode";
|
|
6
|
+
export declare const DEFAULT_POSTHOG_HOST = "https://us.i.posthog.com";
|
|
7
|
+
export declare const DEFAULT_POSTHOG_API_KEY = "phc_CFJhj5HyvA62QPhvyaUCtaq23aUfznnijg5VaaGkNk74";
|
|
8
|
+
export declare function getComponentVersion(): string;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
export const PRODUCT_NAME = "omo-codex";
|
|
3
|
+
export const PACKAGE_NAME = "@oh-my-opencode/omo-codex";
|
|
4
|
+
export const CACHE_DIR_NAME = "omo-codex";
|
|
5
|
+
export const EVENT_NAME = "omo_codex_daily_active";
|
|
6
|
+
export const LEGACY_PARENT_PACKAGE = "oh-my-opencode";
|
|
7
|
+
export const DEFAULT_POSTHOG_HOST = "https://us.i.posthog.com";
|
|
8
|
+
export const DEFAULT_POSTHOG_API_KEY = "phc_CFJhj5HyvA62QPhvyaUCtaq23aUfznnijg5VaaGkNk74";
|
|
9
|
+
function isComponentPackageManifest(value) {
|
|
10
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
11
|
+
}
|
|
12
|
+
function readComponentVersionFromManifest() {
|
|
13
|
+
try {
|
|
14
|
+
const manifestUrl = new URL("../package.json", import.meta.url);
|
|
15
|
+
const manifestText = readFileSync(manifestUrl, "utf-8");
|
|
16
|
+
const parsed = JSON.parse(manifestText);
|
|
17
|
+
if (isComponentPackageManifest(parsed) && typeof parsed.version === "string") {
|
|
18
|
+
return parsed.version;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return "0.0.0";
|
|
23
|
+
}
|
|
24
|
+
return "0.0.0";
|
|
25
|
+
}
|
|
26
|
+
const COMPONENT_VERSION_CACHE = readComponentVersionFromManifest();
|
|
27
|
+
export function getComponentVersion() {
|
|
28
|
+
return COMPONENT_VERSION_CACHE;
|
|
29
|
+
}
|
|
@@ -13,7 +13,7 @@ Answer the orchestrator's "Where is X?" / "Which files do Y?" / "Find code that
|
|
|
13
13
|
|
|
14
14
|
# When to invoke me (self-check)
|
|
15
15
|
- USE me when: multiple search angles are needed, the module structure is unfamiliar, or cross-layer pattern discovery is required.
|
|
16
|
-
- AVOID me when: the caller already knows the exact file
|
|
16
|
+
- AVOID me when: the caller already knows the exact file or symbol, or a single keyword search suffices. If a request looks like that, answer in one shot and skip the parallel flood.
|
|
17
17
|
|
|
18
18
|
# Thoroughness
|
|
19
19
|
The caller MAY specify thoroughness. Honor it:
|
|
@@ -56,7 +56,10 @@ If asked "where is auth?", explain the auth flow you found.]
|
|
|
56
56
|
|
|
57
57
|
Fire 3+ independent calls in the first action. Cross-validate findings across multiple tools. Do not serialize unless one call's output strictly feeds the next.
|
|
58
58
|
|
|
59
|
-
#
|
|
59
|
+
# Retrieval budget
|
|
60
|
+
Stop searching when the question is concretely answered. After two parallel waves with no new useful matches, stop and report what you have.
|
|
61
|
+
|
|
62
|
+
# Success criteria (the response is INVALID if any is unmet)
|
|
60
63
|
- Every path is **absolute** (starts with `/`).
|
|
61
64
|
- ALL relevant matches are included, not just the first one.
|
|
62
65
|
- The answer addresses the **actual need**, not only the literal request.
|
|
@@ -69,15 +72,4 @@ Fire 3+ independent calls in the first action. Cross-validate findings across mu
|
|
|
69
72
|
- Do not browse the internet. External research is the librarian's job.
|
|
70
73
|
- No emojis. Keep output clean and parseable.
|
|
71
74
|
- No tool names in prose (say "search the codebase", not "use rg"). No preamble ("I'll help you with..."). Answer directly.
|
|
72
|
-
|
|
73
|
-
# Retrieval budget
|
|
74
|
-
- Stop searching when the question is concretely answered.
|
|
75
|
-
- After two parallel waves with no new useful matches, stop and report what you have.
|
|
76
|
-
|
|
77
|
-
# Failure conditions (response is INVALID if)
|
|
78
|
-
- Any path is relative.
|
|
79
|
-
- Obvious matches missed.
|
|
80
|
-
- The caller would need to ask a follow-up.
|
|
81
|
-
- Only the literal question is answered while the underlying need is ignored.
|
|
82
|
-
- Missing `<analysis>` or `<results>` block.
|
|
83
75
|
"""
|