oh-my-opencode 5.1.47 → 5.1.51
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/refusal-rule.d.ts +7 -0
- package/dist/cli/index.js +1194 -752
- package/dist/cli/service-auth/accounts-gate.d.ts +11 -0
- package/dist/cli/service-auth/commands.d.ts +2 -4
- package/dist/cli/service-auth/index.d.ts +1 -1
- package/dist/cli/service-auth/keystore.d.ts +26 -2
- package/dist/cli/service-auth/protocol.d.ts +7 -1
- package/dist/cli/service-auth/session.d.ts +6 -0
- package/dist/cli/service-auth/signed-out-marker.d.ts +11 -0
- package/dist/cli-node/index.js +1194 -752
- package/dist/config/schema/hooks.d.ts +1 -0
- package/dist/create-hooks.d.ts +1 -0
- package/dist/features/boulder-state/storage.d.ts +1 -1
- package/dist/features/boulder-state/types.d.ts +1 -1
- package/dist/hooks/atlas/idle-continuation.d.ts +2 -1
- package/dist/hooks/atlas/types.d.ts +9 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/momus-review-persistence/hook.d.ts +19 -0
- package/dist/hooks/momus-review-persistence/index.d.ts +1 -0
- package/dist/hooks/momus-review-persistence/review-resolution.d.ts +20 -0
- package/dist/hooks/prometheus-md-only/constants.d.ts +2 -0
- package/dist/hooks/prometheus-md-only/fixtures/denial-log.d.ts +1 -0
- package/dist/hooks/prometheus-md-only/fixtures/guarded-hashline.d.ts +1 -0
- package/dist/hooks/prometheus-md-only/fixtures/invoke-before.d.ts +7 -0
- package/dist/hooks/prometheus-md-only/fixtures/opencode-patch-parser.d.ts +2 -0
- package/dist/hooks/prometheus-md-only/hook.d.ts +5 -1
- package/dist/hooks/prometheus-md-only/path-policy.d.ts +2 -9
- package/dist/hooks/prometheus-md-only/vendor/opencode-patch-parser.d.ts +22 -0
- package/dist/index.js +2322 -1045
- package/dist/plugin/hooks/create-core-hooks.d.ts +1 -0
- package/dist/plugin/hooks/create-tool-guard-hooks.d.ts +2 -1
- package/dist/shared/posthog-activity-state.d.ts +1 -0
- package/dist/shared/posthog.d.ts +1 -2
- package/dist/shared/resolve-file-write-path.d.ts +6 -0
- package/dist/skills/ast-grep/README.md +1 -1
- package/dist/skills/ast-grep/install.ps1 +5 -3
- package/dist/skills/ast-grep/install.sh +4 -5
- package/dist/skills/ast-grep/references/install.md +2 -2
- package/dist/skills/ast-grep/scripts/ast_grep_helper.py +13 -3
- package/dist/skills/browser/runtime/omowright/manifest.json +1 -1
- package/dist/skills/coding-agent-sessions/AGENTS.md +5 -4
- package/dist/skills/coding-agent-sessions/SKILL.md +11 -11
- package/dist/skills/coding-agent-sessions/references/all-platforms.md +2 -2
- package/dist/skills/coding-agent-sessions/references/codex.md +4 -4
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/cli.py +1 -1
- package/dist/skills/coding-agent-sessions/scripts/find-agent-sessions.py +6 -3
- package/dist/skills/frontend/ATTRIBUTION.md +1 -1
- package/dist/skills/frontend/SKILL.md +34 -12
- package/dist/skills/frontend/references/design/README.md +2 -2
- package/dist/skills/frontend/references/design/_INDEX.md +2 -1
- package/dist/skills/frontend/references/design/component-catalogs.md +14 -10
- package/dist/skills/frontend/references/design/design-system-architecture.md +19 -6
- package/dist/skills/frontend/references/design/grounding.md +29 -0
- package/dist/skills/frontend/references/ui-ux-db/scripts/design_system.py +2 -0
- package/dist/skills/frontend/references/ui-ux-db/scripts/search.py +2 -0
- package/dist/skills/ultimate-browsing/SKILL.md +5 -4
- package/dist/skills/ultimate-browsing/engine/AGENTS.md +2 -2
- package/dist/skills/ultimate-browsing/engine/__main__.py +9 -6
- package/dist/skills/ultimate-browsing/engine/summary.py +1 -1
- package/dist/skills/ultimate-browsing/references/insane-search/README.md +4 -4
- package/dist/skills/ultimate-browsing/scripts/extract_cookies.py +4 -2
- package/dist/skills/ulw-research/AGENTS.md +8 -4
- package/dist/skills/ulw-research/SKILL.md +7 -259
- package/dist/skills/ulw-research/references/deliverable-phase.md +68 -24
- package/dist/skills/ulw-research/references/fact-ledger-grammar.md +7 -3
- package/dist/skills/ulw-research/references/fact-ledger.md +42 -8
- package/dist/skills/ulw-research/references/fidelity-claim-kinds.md +1 -1
- package/dist/skills/ulw-research/references/markdown-blocks.md +12 -0
- package/dist/skills/ulw-research/references/report-gates.md +14 -6
- package/dist/skills/ulw-research/references/research-collection.md +195 -0
- package/dist/skills/ulw-research/references/research-delivery.md +123 -0
- package/dist/skills/ulw-research/scripts/claim-kinds.mjs +33 -5
- package/dist/skills/ulw-research/scripts/claim-kinds.test.ts +37 -2
- package/dist/skills/ulw-research/scripts/claim-prefix.test.ts +76 -0
- package/dist/skills/ulw-research/scripts/contracts-validation.test.ts +83 -0
- package/dist/skills/ulw-research/scripts/contracts.mjs +16 -15
- package/dist/skills/ulw-research/scripts/contracts.test.ts +6 -109
- package/dist/skills/ulw-research/scripts/conversion-altered.test.ts +154 -0
- package/dist/skills/ulw-research/scripts/conversion-originals.test.ts +297 -0
- package/dist/skills/ulw-research/scripts/conversion-probe-classes.test.ts +361 -0
- package/dist/skills/ulw-research/scripts/conversion-probe.mjs +229 -0
- package/dist/skills/ulw-research/scripts/conversion-probe.test.ts +218 -0
- package/dist/skills/ulw-research/scripts/copy-returns-fidelity-policy.test.ts +156 -0
- package/dist/skills/ulw-research/scripts/copy-returns-polish.test.ts +10 -9
- package/dist/skills/ulw-research/scripts/css-hiding.mjs +158 -0
- package/dist/skills/ulw-research/scripts/css-lite.mjs +4 -2
- package/dist/skills/ulw-research/scripts/delivery-barrier-meaning.test.ts +186 -0
- package/dist/skills/ulw-research/scripts/delivery-barrier.test.ts +40 -87
- package/dist/skills/ulw-research/scripts/entities.mjs +13 -4
- package/dist/skills/ulw-research/scripts/fact-commands-fill.mjs +96 -0
- package/dist/skills/ulw-research/scripts/fact-commands-meaning.mjs +26 -30
- package/dist/skills/ulw-research/scripts/fact-commands-polish.mjs +46 -19
- package/dist/skills/ulw-research/scripts/fact-commands-verify.mjs +37 -6
- package/dist/skills/ulw-research/scripts/fact-commands.mjs +40 -62
- package/dist/skills/ulw-research/scripts/fact-derive-2.test.ts +149 -0
- package/dist/skills/ulw-research/scripts/fact-derive.mjs +7 -2
- package/dist/skills/ulw-research/scripts/fact-derive.test.ts +7 -192
- package/dist/skills/ulw-research/scripts/fact-fill.mjs +9 -6
- package/dist/skills/ulw-research/scripts/fact-ledger-kinds.mjs +6 -7
- package/dist/skills/ulw-research/scripts/fact-ledger-kinds.test.ts +2 -1
- package/dist/skills/ulw-research/scripts/fact-ledger-legacy.test.ts +2 -1
- package/dist/skills/ulw-research/scripts/fact-locate.mjs +15 -9
- package/dist/skills/ulw-research/scripts/fact-unit-dimensions-2.test.ts +149 -0
- package/dist/skills/ulw-research/scripts/fact-unit-dimensions.test.ts +4 -168
- package/dist/skills/ulw-research/scripts/fact-unit-rules.test.ts +3 -229
- package/dist/skills/ulw-research/scripts/fidelity-claims.mjs +4 -3
- package/dist/skills/ulw-research/scripts/fidelity-csv.mjs +32 -0
- package/dist/skills/ulw-research/scripts/fidelity-lexicon.mjs +1 -1
- package/dist/skills/ulw-research/scripts/fidelity-originals.mjs +161 -0
- package/dist/skills/ulw-research/scripts/fidelity-policy.mjs +183 -0
- package/dist/skills/ulw-research/scripts/fidelity-records.mjs +81 -14
- package/dist/skills/ulw-research/scripts/fidelity-snapshot-readability.mjs +49 -0
- package/dist/skills/ulw-research/scripts/fidelity-sources.mjs +76 -0
- package/dist/skills/ulw-research/scripts/fidelity-trace.mjs +25 -11
- package/dist/skills/ulw-research/scripts/fidelity-value-unit.mjs +202 -0
- package/dist/skills/ulw-research/scripts/fidelity-values.mjs +40 -39
- package/dist/skills/ulw-research/scripts/fidelity-values.test.ts +8 -29
- package/dist/skills/ulw-research/scripts/gates-fidelity.mjs +8 -6
- package/dist/skills/ulw-research/scripts/gates-static-headings.test.ts +17 -0
- package/dist/skills/ulw-research/scripts/gates-static.mjs +10 -1
- package/dist/skills/ulw-research/scripts/html-lite.mjs +6 -2
- package/dist/skills/ulw-research/scripts/html-markup.mjs +2 -2
- package/dist/skills/ulw-research/scripts/html-text-map.mjs +140 -0
- package/dist/skills/ulw-research/scripts/html-text-map.test.ts +148 -0
- package/dist/skills/ulw-research/scripts/markdown-closers.mjs +126 -0
- package/dist/skills/ulw-research/scripts/md-lite-boundaries.test.ts +46 -0
- package/dist/skills/ulw-research/scripts/md-lite.mjs +1 -1
- package/dist/skills/ulw-research/scripts/number-grammar.mjs +33 -0
- package/dist/skills/ulw-research/scripts/number-grammar.test.ts +36 -0
- package/dist/skills/ulw-research/scripts/numerals.mjs +18 -7
- package/dist/skills/ulw-research/scripts/numerals.test.ts +3 -0
- package/dist/skills/ulw-research/scripts/outcome-start.mjs +66 -0
- package/dist/skills/ulw-research/scripts/outcome-start.test.ts +109 -0
- package/dist/skills/ulw-research/scripts/outcome.mjs +11 -22
- package/dist/skills/ulw-research/scripts/page-source-locator.test.ts +187 -0
- package/dist/skills/ulw-research/scripts/placeholder.mjs +18 -6
- package/dist/skills/ulw-research/scripts/polish-apply.mjs +3 -2
- package/dist/skills/ulw-research/scripts/polish-markup.test.ts +15 -1
- package/dist/skills/ulw-research/scripts/polish-partial.test.ts +42 -0
- package/dist/skills/ulw-research/scripts/raw-decode.mjs +110 -0
- package/dist/skills/ulw-research/scripts/raw-locator.mjs +47 -0
- package/dist/skills/ulw-research/scripts/raw-snapshot.test.ts +139 -0
- package/dist/skills/ulw-research/scripts/report-tools-2.test.ts +233 -0
- package/dist/skills/ulw-research/scripts/report-tools-3.test.ts +141 -0
- package/dist/skills/ulw-research/scripts/report-tools-4.test.ts +135 -0
- package/dist/skills/ulw-research/scripts/report-tools-5.test.ts +231 -0
- package/dist/skills/ulw-research/scripts/report-tools-commands.mjs +1 -1
- package/dist/skills/ulw-research/scripts/report-tools.mjs +7 -1
- package/dist/skills/ulw-research/scripts/report-tools.test.ts +6 -560
- package/dist/skills/ulw-research/scripts/snapshot-readability.test.ts +116 -0
- package/dist/skills/ulw-research/scripts/source-commands.mjs +87 -29
- package/dist/skills/ulw-research/scripts/source-integrity.test.ts +243 -0
- package/dist/skills/ulw-research/scripts/source-refresh.mjs +82 -0
- package/dist/skills/ulw-research/scripts/source-snapshot.mjs +73 -69
- package/dist/skills/ulw-research/scripts/source-snapshot.test.ts +7 -4
- package/dist/skills/ulw-research/scripts/source-view.mjs +89 -0
- package/dist/skills/ulw-research/scripts/sources-citation.mjs +203 -0
- package/dist/skills/ulw-research/scripts/sources-citation.test.ts +236 -0
- package/dist/skills/ulw-research/scripts/tests/contracts-support.ts +147 -0
- package/dist/skills/ulw-research/scripts/tests/delivery-barrier-session.ts +59 -0
- package/dist/skills/ulw-research/scripts/tests/derive-clock.ts +4 -0
- package/dist/skills/ulw-research/scripts/tests/fact-derive-support.ts +65 -0
- package/dist/skills/ulw-research/scripts/tests/fact-unit-dimensions-support.ts +41 -0
- package/dist/skills/ulw-research/scripts/tests/fact-unit-rules-support.ts +241 -0
- package/dist/skills/ulw-research/scripts/tests/fidelity-values-support.ts +30 -0
- package/dist/skills/ulw-research/scripts/tests/fixtures/conversion-probe.html +14 -0
- package/dist/skills/ulw-research/scripts/tests/fixtures/sources-shapes.html +20 -0
- package/dist/skills/ulw-research/scripts/tests/numeral-classes.ts +196 -0
- package/dist/skills/ulw-research/scripts/tests/report-tools-support.ts +182 -0
- package/dist/skills/ulw-research/scripts/tests/value-mode-support.ts +48 -0
- package/dist/skills/ulw-research/scripts/units.mjs +14 -3
- package/dist/skills/ulw-research/scripts/units.test.ts +10 -0
- package/dist/skills/ulw-research/scripts/value-mode-unit-classes.test.ts +255 -0
- package/dist/skills/ulw-research/scripts/value-mode-unit.test.ts +179 -0
- package/dist/skills/ulw-research/scripts/value-rules-cli.test.ts +157 -0
- package/dist/skills/ulw-research/scripts/value-rules-followups.test.ts +72 -0
- package/dist/skills/ulw-research/scripts/value-rules-priority.test.ts +80 -0
- package/dist/tools/delegate-task/executor-types.d.ts +1 -0
- package/dist/tools/delegate-task/sync-session-existence.d.ts +4 -0
- package/dist/tools/delegate-task/types.d.ts +1 -0
- package/dist/tools/skill/description-formatter.d.ts +2 -1
- package/dist/tools/skill/types.d.ts +6 -0
- package/dist/tui.js +131 -33
- package/package.json +18 -15
- package/packages/git-bash-mcp/package.json +1 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/README.md +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- 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/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lcx/skills/lcx-contribute-bug-fix/SKILL.md +51 -55
- package/packages/omo-codex/plugin/components/lcx/skills/lcx-contribute-bug-fix/agents/openai.yaml +1 -1
- package/packages/omo-codex/plugin/components/lcx/skills/lcx-report-bug/SKILL.md +7 -7
- package/packages/omo-codex/plugin/components/lcx/skills/lcx-report-bug/agents/openai.yaml +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- 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/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +2 -2
- package/packages/omo-codex/plugin/components/telemetry/README.md +2 -2
- package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +52 -15
- package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +52 -19
- 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/telemetry/src/codex-hook.ts +2 -9
- package/packages/omo-codex/plugin/components/telemetry/src/posthog.ts +4 -13
- package/packages/omo-codex/plugin/components/telemetry/src/product-identity.ts +0 -2
- package/packages/omo-codex/plugin/components/telemetry/test/codex-hook-diagnostics.test.ts +0 -3
- package/packages/omo-codex/plugin/components/telemetry/test/codex-hook.test.ts +3 -8
- package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +3 -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/src/directive-content.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/directive.md +3 -0
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +16 -16
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/shared/package.json +1 -1
- package/packages/omo-codex/plugin/skills/ast-grep/README.md +1 -1
- package/packages/omo-codex/plugin/skills/ast-grep/install.ps1 +5 -3
- package/packages/omo-codex/plugin/skills/ast-grep/install.sh +4 -5
- package/packages/omo-codex/plugin/skills/ast-grep/references/install.md +2 -2
- package/packages/omo-codex/plugin/skills/ast-grep/scripts/ast_grep_helper.py +13 -3
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/AGENTS.md +5 -4
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +11 -11
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +2 -2
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/codex.md +4 -4
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/cli.py +1 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/find-agent-sessions.py +6 -3
- package/packages/omo-codex/plugin/skills/frontend/ATTRIBUTION.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +34 -12
- package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +2 -2
- package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +2 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/component-catalogs.md +14 -10
- package/packages/omo-codex/plugin/skills/frontend/references/design/design-system-architecture.md +19 -6
- package/packages/omo-codex/plugin/skills/frontend/references/design/grounding.md +29 -0
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/scripts/design_system.py +2 -0
- package/packages/omo-codex/plugin/skills/frontend/references/ui-ux-db/scripts/search.py +2 -0
- package/packages/omo-codex/plugin/skills/lcx-contribute-bug-fix/SKILL.md +51 -55
- package/packages/omo-codex/plugin/skills/lcx-contribute-bug-fix/agents/openai.yaml +1 -1
- package/packages/omo-codex/plugin/skills/lcx-report-bug/SKILL.md +7 -7
- package/packages/omo-codex/plugin/skills/lcx-report-bug/agents/openai.yaml +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +5 -4
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +2 -2
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/__main__.py +9 -6
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/summary.py +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +4 -4
- package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/extract_cookies.py +4 -2
- package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +3 -0
- package/packages/omo-codex/plugin/skills/ulw-research/AGENTS.md +8 -4
- package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +7 -259
- package/packages/omo-codex/plugin/skills/ulw-research/references/deliverable-phase.md +68 -24
- package/packages/omo-codex/plugin/skills/ulw-research/references/fact-ledger-grammar.md +7 -3
- package/packages/omo-codex/plugin/skills/ulw-research/references/fact-ledger.md +42 -8
- package/packages/omo-codex/plugin/skills/ulw-research/references/fidelity-claim-kinds.md +1 -1
- package/packages/omo-codex/plugin/skills/ulw-research/references/markdown-blocks.md +12 -0
- package/packages/omo-codex/plugin/skills/ulw-research/references/report-gates.md +14 -6
- package/packages/omo-codex/plugin/skills/ulw-research/references/research-collection.md +195 -0
- package/packages/omo-codex/plugin/skills/ulw-research/references/research-delivery.md +123 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/claim-kinds.mjs +33 -5
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/contracts.mjs +16 -15
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/conversion-probe.mjs +229 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/css-hiding.mjs +158 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/css-lite.mjs +4 -2
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/entities.mjs +13 -4
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-commands-fill.mjs +96 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-commands-meaning.mjs +26 -30
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-commands-polish.mjs +46 -19
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-commands-verify.mjs +37 -6
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-commands.mjs +40 -62
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-derive.mjs +7 -2
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-fill.mjs +9 -6
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-ledger-kinds.mjs +6 -7
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fact-locate.mjs +15 -9
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-claims.mjs +4 -3
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-csv.mjs +32 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-lexicon.mjs +1 -1
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-originals.mjs +161 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-policy.mjs +183 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-records.mjs +81 -14
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-snapshot-readability.mjs +49 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-sources.mjs +76 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-trace.mjs +25 -11
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-value-unit.mjs +202 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/fidelity-values.mjs +40 -39
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/gates-fidelity.mjs +8 -6
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/gates-static.mjs +10 -1
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/html-lite.mjs +6 -2
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/html-markup.mjs +2 -2
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/html-text-map.mjs +140 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/markdown-closers.mjs +126 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/md-lite.mjs +1 -1
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/number-grammar.mjs +33 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/numerals.mjs +18 -7
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/outcome-start.mjs +66 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/outcome.mjs +11 -22
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/placeholder.mjs +18 -6
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/polish-apply.mjs +3 -2
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/raw-decode.mjs +110 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/raw-locator.mjs +47 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/report-tools-commands.mjs +1 -1
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/report-tools.mjs +7 -1
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/source-commands.mjs +87 -29
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/source-refresh.mjs +82 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/source-snapshot.mjs +73 -69
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/source-view.mjs +89 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/sources-citation.mjs +203 -0
- package/packages/omo-codex/plugin/skills/ulw-research/scripts/units.mjs +14 -3
- package/packages/omo-codex/plugin/test/payload-equivalence.test.mjs +6 -4
- package/packages/omo-codex/plugin/test/sync-skills.test.mjs +4 -3
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +338 -237
- package/packages/prompts-core/prompts/ultrawork/codex.md +3 -0
- package/packages/shared-skills/skill-source-filter.mjs +6 -2
- package/packages/shared-skills/skills/ast-grep/README.md +1 -1
- package/packages/shared-skills/skills/ast-grep/install.ps1 +5 -3
- package/packages/shared-skills/skills/ast-grep/install.sh +4 -5
- package/packages/shared-skills/skills/ast-grep/references/install.md +2 -2
- package/packages/shared-skills/skills/ast-grep/scripts/ast_grep_helper.py +13 -3
- package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/shared-skills/skills/coding-agent-sessions/AGENTS.md +5 -4
- package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +11 -11
- package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +2 -2
- package/packages/shared-skills/skills/coding-agent-sessions/references/codex.md +4 -4
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/cli.py +1 -1
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/find-agent-sessions.py +6 -3
- package/packages/shared-skills/skills/frontend/ATTRIBUTION.md +1 -1
- package/packages/shared-skills/skills/frontend/SKILL.md +34 -12
- package/packages/shared-skills/skills/frontend/references/design/README.md +2 -2
- package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +2 -1
- package/packages/shared-skills/skills/frontend/references/design/component-catalogs.md +14 -10
- package/packages/shared-skills/skills/frontend/references/design/design-system-architecture.md +19 -6
- package/packages/shared-skills/skills/frontend/references/design/grounding.md +29 -0
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/scripts/design_system.py +2 -0
- package/packages/shared-skills/skills/frontend/references/ui-ux-db/scripts/search.py +2 -0
- package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +5 -4
- package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +2 -2
- package/packages/shared-skills/skills/ultimate-browsing/engine/__main__.py +9 -6
- package/packages/shared-skills/skills/ultimate-browsing/engine/summary.py +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +4 -4
- package/packages/shared-skills/skills/ultimate-browsing/scripts/extract_cookies.py +4 -2
- package/packages/shared-skills/skills/ulw-research/AGENTS.md +8 -4
- package/packages/shared-skills/skills/ulw-research/SKILL.md +7 -259
- package/packages/shared-skills/skills/ulw-research/references/deliverable-phase.md +68 -24
- package/packages/shared-skills/skills/ulw-research/references/fact-ledger-grammar.md +7 -3
- package/packages/shared-skills/skills/ulw-research/references/fact-ledger.md +42 -8
- package/packages/shared-skills/skills/ulw-research/references/fidelity-claim-kinds.md +1 -1
- package/packages/shared-skills/skills/ulw-research/references/markdown-blocks.md +12 -0
- package/packages/shared-skills/skills/ulw-research/references/report-gates.md +14 -6
- package/packages/shared-skills/skills/ulw-research/references/research-collection.md +195 -0
- package/packages/shared-skills/skills/ulw-research/references/research-delivery.md +123 -0
- package/packages/shared-skills/skills/ulw-research/scripts/claim-kinds.mjs +33 -5
- package/packages/shared-skills/skills/ulw-research/scripts/claim-kinds.test.ts +37 -2
- package/packages/shared-skills/skills/ulw-research/scripts/claim-prefix.test.ts +76 -0
- package/packages/shared-skills/skills/ulw-research/scripts/contracts-validation.test.ts +83 -0
- package/packages/shared-skills/skills/ulw-research/scripts/contracts.mjs +16 -15
- package/packages/shared-skills/skills/ulw-research/scripts/contracts.test.ts +6 -109
- package/packages/shared-skills/skills/ulw-research/scripts/conversion-altered.test.ts +154 -0
- package/packages/shared-skills/skills/ulw-research/scripts/conversion-originals.test.ts +297 -0
- package/packages/shared-skills/skills/ulw-research/scripts/conversion-probe-classes.test.ts +361 -0
- package/packages/shared-skills/skills/ulw-research/scripts/conversion-probe.mjs +229 -0
- package/packages/shared-skills/skills/ulw-research/scripts/conversion-probe.test.ts +218 -0
- package/packages/shared-skills/skills/ulw-research/scripts/copy-returns-fidelity-policy.test.ts +156 -0
- package/packages/shared-skills/skills/ulw-research/scripts/copy-returns-polish.test.ts +10 -9
- package/packages/shared-skills/skills/ulw-research/scripts/css-hiding.mjs +158 -0
- package/packages/shared-skills/skills/ulw-research/scripts/css-lite.mjs +4 -2
- package/packages/shared-skills/skills/ulw-research/scripts/delivery-barrier-meaning.test.ts +186 -0
- package/packages/shared-skills/skills/ulw-research/scripts/delivery-barrier.test.ts +40 -87
- package/packages/shared-skills/skills/ulw-research/scripts/entities.mjs +13 -4
- package/packages/shared-skills/skills/ulw-research/scripts/fact-commands-fill.mjs +96 -0
- package/packages/shared-skills/skills/ulw-research/scripts/fact-commands-meaning.mjs +26 -30
- package/packages/shared-skills/skills/ulw-research/scripts/fact-commands-polish.mjs +46 -19
- package/packages/shared-skills/skills/ulw-research/scripts/fact-commands-verify.mjs +37 -6
- package/packages/shared-skills/skills/ulw-research/scripts/fact-commands.mjs +40 -62
- package/packages/shared-skills/skills/ulw-research/scripts/fact-derive-2.test.ts +149 -0
- package/packages/shared-skills/skills/ulw-research/scripts/fact-derive.mjs +7 -2
- package/packages/shared-skills/skills/ulw-research/scripts/fact-derive.test.ts +7 -192
- package/packages/shared-skills/skills/ulw-research/scripts/fact-fill.mjs +9 -6
- package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-kinds.mjs +6 -7
- package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-kinds.test.ts +2 -1
- package/packages/shared-skills/skills/ulw-research/scripts/fact-ledger-legacy.test.ts +2 -1
- package/packages/shared-skills/skills/ulw-research/scripts/fact-locate.mjs +15 -9
- package/packages/shared-skills/skills/ulw-research/scripts/fact-unit-dimensions-2.test.ts +149 -0
- package/packages/shared-skills/skills/ulw-research/scripts/fact-unit-dimensions.test.ts +4 -168
- package/packages/shared-skills/skills/ulw-research/scripts/fact-unit-rules.test.ts +3 -229
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-claims.mjs +4 -3
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-csv.mjs +32 -0
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-lexicon.mjs +1 -1
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-originals.mjs +161 -0
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-policy.mjs +183 -0
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-records.mjs +81 -14
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-snapshot-readability.mjs +49 -0
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-sources.mjs +76 -0
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-trace.mjs +25 -11
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-value-unit.mjs +202 -0
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-values.mjs +40 -39
- package/packages/shared-skills/skills/ulw-research/scripts/fidelity-values.test.ts +8 -29
- package/packages/shared-skills/skills/ulw-research/scripts/gates-fidelity.mjs +8 -6
- package/packages/shared-skills/skills/ulw-research/scripts/gates-static-headings.test.ts +17 -0
- package/packages/shared-skills/skills/ulw-research/scripts/gates-static.mjs +10 -1
- package/packages/shared-skills/skills/ulw-research/scripts/html-lite.mjs +6 -2
- package/packages/shared-skills/skills/ulw-research/scripts/html-markup.mjs +2 -2
- package/packages/shared-skills/skills/ulw-research/scripts/html-text-map.mjs +140 -0
- package/packages/shared-skills/skills/ulw-research/scripts/html-text-map.test.ts +148 -0
- package/packages/shared-skills/skills/ulw-research/scripts/markdown-closers.mjs +126 -0
- package/packages/shared-skills/skills/ulw-research/scripts/md-lite-boundaries.test.ts +46 -0
- package/packages/shared-skills/skills/ulw-research/scripts/md-lite.mjs +1 -1
- package/packages/shared-skills/skills/ulw-research/scripts/number-grammar.mjs +33 -0
- package/packages/shared-skills/skills/ulw-research/scripts/number-grammar.test.ts +36 -0
- package/packages/shared-skills/skills/ulw-research/scripts/numerals.mjs +18 -7
- package/packages/shared-skills/skills/ulw-research/scripts/numerals.test.ts +3 -0
- package/packages/shared-skills/skills/ulw-research/scripts/outcome-start.mjs +66 -0
- package/packages/shared-skills/skills/ulw-research/scripts/outcome-start.test.ts +109 -0
- package/packages/shared-skills/skills/ulw-research/scripts/outcome.mjs +11 -22
- package/packages/shared-skills/skills/ulw-research/scripts/page-source-locator.test.ts +187 -0
- package/packages/shared-skills/skills/ulw-research/scripts/placeholder.mjs +18 -6
- package/packages/shared-skills/skills/ulw-research/scripts/polish-apply.mjs +3 -2
- package/packages/shared-skills/skills/ulw-research/scripts/polish-markup.test.ts +15 -1
- package/packages/shared-skills/skills/ulw-research/scripts/polish-partial.test.ts +42 -0
- package/packages/shared-skills/skills/ulw-research/scripts/raw-decode.mjs +110 -0
- package/packages/shared-skills/skills/ulw-research/scripts/raw-locator.mjs +47 -0
- package/packages/shared-skills/skills/ulw-research/scripts/raw-snapshot.test.ts +139 -0
- package/packages/shared-skills/skills/ulw-research/scripts/report-tools-2.test.ts +233 -0
- package/packages/shared-skills/skills/ulw-research/scripts/report-tools-3.test.ts +141 -0
- package/packages/shared-skills/skills/ulw-research/scripts/report-tools-4.test.ts +135 -0
- package/packages/shared-skills/skills/ulw-research/scripts/report-tools-5.test.ts +231 -0
- package/packages/shared-skills/skills/ulw-research/scripts/report-tools-commands.mjs +1 -1
- package/packages/shared-skills/skills/ulw-research/scripts/report-tools.mjs +7 -1
- package/packages/shared-skills/skills/ulw-research/scripts/report-tools.test.ts +6 -560
- package/packages/shared-skills/skills/ulw-research/scripts/snapshot-readability.test.ts +116 -0
- package/packages/shared-skills/skills/ulw-research/scripts/source-commands.mjs +87 -29
- package/packages/shared-skills/skills/ulw-research/scripts/source-integrity.test.ts +243 -0
- package/packages/shared-skills/skills/ulw-research/scripts/source-refresh.mjs +82 -0
- package/packages/shared-skills/skills/ulw-research/scripts/source-snapshot.mjs +73 -69
- package/packages/shared-skills/skills/ulw-research/scripts/source-snapshot.test.ts +7 -4
- package/packages/shared-skills/skills/ulw-research/scripts/source-view.mjs +89 -0
- package/packages/shared-skills/skills/ulw-research/scripts/sources-citation.mjs +203 -0
- package/packages/shared-skills/skills/ulw-research/scripts/sources-citation.test.ts +236 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/contracts-support.ts +147 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/delivery-barrier-session.ts +59 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/derive-clock.ts +4 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/fact-derive-support.ts +65 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/fact-unit-dimensions-support.ts +41 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/fact-unit-rules-support.ts +241 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/fidelity-values-support.ts +30 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/conversion-probe.html +14 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/fixtures/sources-shapes.html +20 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/numeral-classes.ts +196 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/report-tools-support.ts +182 -0
- package/packages/shared-skills/skills/ulw-research/scripts/tests/value-mode-support.ts +48 -0
- package/packages/shared-skills/skills/ulw-research/scripts/units.mjs +14 -3
- package/packages/shared-skills/skills/ulw-research/scripts/units.test.ts +10 -0
- package/packages/shared-skills/skills/ulw-research/scripts/value-mode-unit-classes.test.ts +255 -0
- package/packages/shared-skills/skills/ulw-research/scripts/value-mode-unit.test.ts +179 -0
- package/packages/shared-skills/skills/ulw-research/scripts/value-rules-cli.test.ts +157 -0
- package/packages/shared-skills/skills/ulw-research/scripts/value-rules-followups.test.ts +72 -0
- package/packages/shared-skills/skills/ulw-research/scripts/value-rules-priority.test.ts +80 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/fixtures/amp_redirect_stub.html +0 -7
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/fixtures/search_interstitial.html +0 -19
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/fixtures/wayback_available.json +0 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/fixtures/wayback_snapshot.html +0 -1128
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_fetch_chain.py +0 -77
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_playwright_stealth.py +0 -86
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_playwright_templates.py +0 -279
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_surrogate.py +0 -252
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_surrogate_validators.py +0 -78
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lcx-contribute-bug-fix
|
|
3
|
-
description: "Contribute a verified bug fix for LazyCodex, lazycodex-ai, omo-codex, bundled Codex skills, or upstream Codex CLI bugs.
|
|
3
|
+
description: "Contribute a verified bug fix for LazyCodex, lazycodex-ai, omo-codex, bundled Codex skills, or upstream Codex CLI bugs. LazyCodex-owned defects get a fork PR against code-yeongyu/oh-my-openagent (base dev, source-tree paths under packages/omo-codex/plugin, with the changelog fragment); upstream Codex bugs get a fork PR against openai/codex. code-yeongyu/lazycodex is a generated distribution mirror and never gets a PR. Use when the user asks to fix a bug, contribute a bug fix, contribute to fix bug, open a PR for a bug, or debug and PR a LazyCodex/Codex defect."
|
|
4
4
|
metadata:
|
|
5
5
|
short-description: Contribute verified LazyCodex or Codex bug fixes
|
|
6
6
|
---
|
|
@@ -11,12 +11,12 @@ Use this skill to debug a concrete LazyCodex or Codex defect, implement the smal
|
|
|
11
11
|
|
|
12
12
|
Route ownership the same way as `$lcx-report-bug`, but the deliverable differs by target:
|
|
13
13
|
|
|
14
|
-
- `code-yeongyu/
|
|
14
|
+
- `code-yeongyu/oh-my-openagent` (base branch `dev`) for LazyCodex, lazycodex-ai, omo-codex, bundled skills, hooks, MCP wiring, installer behavior, marketplace sync, docs, or packaging. Deliverable: a PR from a fork that edits the source-tree paths under `packages/omo-codex/plugin/` and carries the changelog fragment that repo requires. `code-yeongyu/lazycodex` is a distribution mirror generated from it (its `plugins/omo/` tree is synced from `packages/omo-codex/plugin/`), and the maintainer lands LazyCodex fixes from PRs against oh-my-openagent. NEVER open a PR or push a branch against `code-yeongyu/lazycodex`: its contents are regenerated on every release, so a PR there cannot be merged and will be closed. At most file a short issue there (symptom plus failing input) that links the oh-my-openagent PR; never embed a patch.
|
|
15
15
|
- `openai/codex` for upstream Codex CLI bugs that reproduce without LazyCodex or come from Codex core behavior. Deliverable: a PR from a fork.
|
|
16
16
|
|
|
17
17
|
## Required Outcome
|
|
18
18
|
|
|
19
|
-
For `openai/codex`, create a fork PR that includes:
|
|
19
|
+
For `code-yeongyu/oh-my-openagent` and `openai/codex`, create a fork PR that includes:
|
|
20
20
|
|
|
21
21
|
- a focused branch from a fresh `${TMPDIR:-/tmp}` clone/worktree
|
|
22
22
|
- reproduction logs from before the fix
|
|
@@ -24,22 +24,24 @@ For `openai/codex`, create a fork PR that includes:
|
|
|
24
24
|
- verification logs from after the fix
|
|
25
25
|
- apply `lazycodex-generated` when label management is available
|
|
26
26
|
- the required LazyCodex footer tag `Tag: lazycodex-generated`
|
|
27
|
+
- for `code-yeongyu/oh-my-openagent`: base `dev`, edits at `packages/omo-codex/plugin/...` (never the mirror's `plugins/omo/...` paths), and the changelog fragment `changes/unreleased/<pr-number>.md` that the repo's AGENTS.md describes
|
|
27
28
|
- cleanup of temporary worktrees and clones
|
|
28
29
|
|
|
29
|
-
For `code-yeongyu/lazycodex`,
|
|
30
|
-
|
|
31
|
-
- reproduction logs from before the fix
|
|
32
|
-
- the root cause with source evidence
|
|
33
|
-
- the verified patch as a unified diff, produced and tested in a fresh `${TMPDIR:-/tmp}` clone/worktree
|
|
34
|
-
- verification logs from after the fix
|
|
35
|
-
- the `lazycodex-generated` label and the footer tag `Tag: lazycodex-generated`
|
|
36
|
-
- cleanup of temporary worktrees and clones
|
|
30
|
+
For `code-yeongyu/lazycodex`, deliver no PR and no patch. When a pointer is useful there, file a short issue (symptom plus failing input, the `lazycodex-generated` label and the footer tag `Tag: lazycodex-generated`) that links the oh-my-openagent PR.
|
|
37
31
|
|
|
38
32
|
## Required Workflow
|
|
39
33
|
|
|
40
34
|
1. Read the user's bug report and identify the affected surface. Before commands, apply the bundled ultrawork directive’s Task resources and todo rules; read those sections if absent from context.
|
|
41
35
|
2. Invoke `$omo:debugging` for the investigation. If only unqualified skill names are exposed, invoke `$debugging` and state that it is the OMO debugging skill.
|
|
42
|
-
3.
|
|
36
|
+
3. Search for an existing lead PR before anything is filed. Search your own open PRs across all repos by the symptom or the changed symbol, then the target repo's open PRs, so a fix that already exists is found first and gets new evidence instead of a duplicate:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
gh search prs --author @me --state open "<symbol or error text>"
|
|
40
|
+
gh search prs --repo code-yeongyu/oh-my-openagent --state open "<symbol or error text>"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
If a matching open PR exists, add evidence to it or report it instead of opening a second one.
|
|
44
|
+
4. Materialize the latest sources under `LAZYCODEX_SOURCE_ROOT="${LAZYCODEX_SOURCE_ROOT:-${TMPDIR:-/tmp}/lazycodex-sources}"`, then decide the target repository. Sync the checkouts on every run and compare them before choosing. Validate cached checkouts before reuse so an incomplete `.git` directory cannot route the fix to the wrong repo:
|
|
43
45
|
|
|
44
46
|
```bash
|
|
45
47
|
# The default checkout cache is per-task under TMPDIR=$RUN_TMP.
|
|
@@ -85,12 +87,13 @@ sync_latest_source() {
|
|
|
85
87
|
git -C "$DEST" checkout -B "$DEFAULT_BRANCH" FETCH_HEAD
|
|
86
88
|
}
|
|
87
89
|
sync_latest_source code-yeongyu/lazycodex "$LAZYCODEX_SOURCE_ROOT/lazycodex-source"
|
|
90
|
+
sync_latest_source code-yeongyu/oh-my-openagent "$LAZYCODEX_SOURCE_ROOT/oh-my-openagent-source"
|
|
88
91
|
sync_latest_source openai/codex "$LAZYCODEX_SOURCE_ROOT/chatgpt-subscription-source"
|
|
89
92
|
```
|
|
90
|
-
|
|
93
|
+
5. Create a fresh temporary clone and branch under `${TMPDIR:-/tmp}`. Do not modify the user's current repository for the target fix unless the current repository is itself the requested target and the user explicitly asked for local edits. Apply those resource rules at clone/worktree creation.
|
|
91
94
|
|
|
92
95
|
```bash
|
|
93
|
-
TARGET_REPO="code-yeongyu/
|
|
96
|
+
TARGET_REPO="code-yeongyu/oh-my-openagent" # or openai/codex
|
|
94
97
|
WORK_ROOT="${RUN_TMP:?apply ultrawork Task resources first}"
|
|
95
98
|
gh repo clone "$TARGET_REPO" "$WORK_ROOT/repo" -- --depth=1
|
|
96
99
|
cd "$WORK_ROOT/repo"
|
|
@@ -103,11 +106,11 @@ cd "$WORK_ROOT/worktree"
|
|
|
103
106
|
|
|
104
107
|
If `gh` cannot clone, use `git clone --depth=1 "https://github.com/$TARGET_REPO" "$WORK_ROOT/repo"` and continue with the same worktree flow.
|
|
105
108
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
6. Reproduce the bug in the worktree through the real surface. Save exact command output to `${TMPDIR:-/tmp}/lazycodex-fix-<short-slug>-repro.log`.
|
|
110
|
+
7. Write or update a failing regression test before production changes. Confirm it fails for the bug, not for a missing fixture or typo.
|
|
111
|
+
8. Implement the smallest correct fix. Avoid refactors unless the fix cannot be made safely without one.
|
|
112
|
+
9. Run the regression test, adjacent tests, and the smallest real-surface QA command that proves the user-visible behavior changed.
|
|
113
|
+
10. Commit the verified fix in the worktree. Inspect the status first so the delivered diff cannot be empty or stale:
|
|
111
114
|
|
|
112
115
|
```bash
|
|
113
116
|
git status --short
|
|
@@ -116,16 +119,11 @@ git commit -m "fix: <short bug-fix summary>"
|
|
|
116
119
|
git log --oneline "origin/$BASE_BRANCH..HEAD"
|
|
117
120
|
```
|
|
118
121
|
|
|
119
|
-
|
|
120
|
-
- `openai/codex`: generate the PR body with `scripts/create-pr-body.mjs
|
|
121
|
-
- `code-yeongyu/
|
|
122
|
-
|
|
123
|
-
```bash
|
|
124
|
-
PATCH_FILE="${TMPDIR:-/tmp}/lazycodex-fix-<short-slug>.patch"
|
|
125
|
-
git diff "origin/$BASE_BRANCH"..HEAD > "$PATCH_FILE"
|
|
126
|
-
```
|
|
122
|
+
11. Build the delivery body for the target:
|
|
123
|
+
- `code-yeongyu/oh-my-openagent` and `openai/codex`: generate the PR body with `scripts/create-pr-body.mjs` (set `targetRepository` to the repo you are filing against).
|
|
124
|
+
- `code-yeongyu/oh-my-openagent` only: add the changelog fragment `changes/unreleased/<pr-number>.md` once the PR number exists, in the format `docs/reference/changelog-fragments.md` of that repo defines, and commit it to the same branch.
|
|
127
125
|
|
|
128
|
-
|
|
126
|
+
12. Ensure the generated label exists when the target repo allows label management. Keep the footer tag even when label creation is unavailable:
|
|
129
127
|
|
|
130
128
|
```bash
|
|
131
129
|
LABEL_ARGS=()
|
|
@@ -136,8 +134,17 @@ else
|
|
|
136
134
|
fi
|
|
137
135
|
```
|
|
138
136
|
|
|
139
|
-
|
|
140
|
-
- `code-yeongyu/
|
|
137
|
+
13. Deliver the fix.
|
|
138
|
+
- `code-yeongyu/oh-my-openagent`: fork, push the branch to the fork, and create the PR against base `dev`. Never push a branch to or run `gh pr create` against `code-yeongyu/lazycodex`:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
gh repo fork code-yeongyu/oh-my-openagent --remote --remote-name fork
|
|
142
|
+
GH_USER="$(gh api user --jq .login)"
|
|
143
|
+
git push -u fork "$BRANCH_NAME"
|
|
144
|
+
gh pr create --repo code-yeongyu/oh-my-openagent --base dev --head "$GH_USER:$BRANCH_NAME" --title "<short fix title>" "${LABEL_ARGS[@]}" --body-file "$PR_BODY"
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
- `code-yeongyu/lazycodex` (optional pointer): a short issue with the symptom, the failing input and a link to the oh-my-openagent PR, never a diff:
|
|
141
148
|
|
|
142
149
|
```bash
|
|
143
150
|
ISSUE_BODY="${TMPDIR:-/tmp}/lazycodex-fix-<short-slug>-issue.md"
|
|
@@ -153,7 +160,7 @@ git push -u fork "$BRANCH_NAME"
|
|
|
153
160
|
gh pr create --repo openai/codex --base "$BASE_BRANCH" --head "$GH_USER:$BRANCH_NAME" --title "<short fix title>" "${LABEL_ARGS[@]}" --body-file "$PR_BODY"
|
|
154
161
|
```
|
|
155
162
|
|
|
156
|
-
|
|
163
|
+
14. Finish cleanup per Task resources. Run this only when that rule permits removing the worktree and run root; otherwise retain them and report the outstanding cleanup todo:
|
|
157
164
|
|
|
158
165
|
```bash
|
|
159
166
|
cd /
|
|
@@ -166,34 +173,22 @@ test ! -e "$WORK_ROOT" && printf 'cleanup: worktree and caches REMOVED\n'
|
|
|
166
173
|
|
|
167
174
|
Return the PR or issue URL, the reproduction command, the verification command, and the cleanup receipt.
|
|
168
175
|
|
|
169
|
-
##
|
|
176
|
+
## Pointer Issue Template (code-yeongyu/lazycodex, optional)
|
|
170
177
|
|
|
171
|
-
Write the issue body in English.
|
|
178
|
+
Write the issue body in English. It names the symptom and the failing input and links the oh-my-openagent PR; the fix itself lives in that PR:
|
|
172
179
|
|
|
173
180
|
````markdown
|
|
174
|
-
##
|
|
181
|
+
## Symptom
|
|
175
182
|
[What failed for the user.]
|
|
176
183
|
|
|
177
|
-
##
|
|
178
|
-
[Exact failing command and
|
|
179
|
-
|
|
180
|
-
## Root Cause
|
|
181
|
-
[Confirmed cause with runtime and source evidence.]
|
|
184
|
+
## Failing Input
|
|
185
|
+
[Exact failing command and the shortest log excerpt.]
|
|
182
186
|
|
|
183
|
-
##
|
|
184
|
-
[
|
|
185
|
-
|
|
186
|
-
```diff
|
|
187
|
-
[Contents of $PATCH_FILE.]
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
## Verification
|
|
191
|
-
- [RED test output or repro before the fix]
|
|
192
|
-
- [GREEN test output after the fix]
|
|
193
|
-
- [Manual QA command and result]
|
|
187
|
+
## Fix
|
|
188
|
+
[Link to the code-yeongyu/oh-my-openagent PR.]
|
|
194
189
|
|
|
195
190
|
---
|
|
196
|
-
This
|
|
191
|
+
This issue was generated by LazyCodex.
|
|
197
192
|
Tag: lazycodex-generated
|
|
198
193
|
````
|
|
199
194
|
|
|
@@ -267,10 +262,11 @@ Stop and ask one narrow question only when:
|
|
|
267
262
|
|
|
268
263
|
Do not open:
|
|
269
264
|
|
|
270
|
-
- a PR or pushed branch targeting `code-yeongyu/lazycodex` —
|
|
271
|
-
- a PR
|
|
272
|
-
- a PR
|
|
265
|
+
- a PR or pushed branch targeting `code-yeongyu/lazycodex` — send the fix as a PR against `code-yeongyu/oh-my-openagent` instead, always
|
|
266
|
+
- a PR for a defect that already has an open lead PR found by the search in step 3
|
|
267
|
+
- a PR without a failing-before and passing-after test
|
|
268
|
+
- a PR without a real-surface QA command
|
|
273
269
|
- a PR or issue without the `Tag: lazycodex-generated` footer
|
|
274
|
-
-
|
|
270
|
+
- an issue on `code-yeongyu/lazycodex` that embeds a patch
|
|
275
271
|
- a vague fix that does not identify the root cause
|
|
276
272
|
- a broad refactor disguised as a bug fix
|
package/packages/omo-codex/plugin/components/lcx/skills/lcx-contribute-bug-fix/agents/openai.yaml
CHANGED
|
@@ -9,4 +9,4 @@ interface:
|
|
|
9
9
|
- "lazycodex fix"
|
|
10
10
|
- "omo-codex bug fix"
|
|
11
11
|
- "codex bug fix pr"
|
|
12
|
-
default_prompt: "Use $lcx-contribute-bug-fix to debug this LazyCodex or Codex bug, work from a fresh ${TMPDIR:-/tmp} clone and worktree, implement the smallest verified fix, apply the lazycodex-generated label, deliver it
|
|
12
|
+
default_prompt: "Use $lcx-contribute-bug-fix to debug this LazyCodex or Codex bug, search my open PRs for an existing lead PR first, work from a fresh ${TMPDIR:-/tmp} clone and worktree, implement the smallest verified fix, apply the lazycodex-generated label, deliver it as a fork PR (code-yeongyu/oh-my-openagent base dev for LazyCodex defects, openai/codex for upstream; never a PR on the code-yeongyu/lazycodex mirror), and clean up."
|
|
@@ -9,8 +9,8 @@ metadata:
|
|
|
9
9
|
|
|
10
10
|
You are a LazyCodex bug router and reporter. Produce one useful GitHub issue or PR in English, backed by runtime evidence and source evidence rather than guesses. Route it to the repository that owns the defect:
|
|
11
11
|
|
|
12
|
-
- `code-yeongyu/lazycodex` for LazyCodex, lazycodex-ai, omo-codex, marketplace, bundled skill, hook, MCP, installer, or packaging bugs. The artifact for this repo is always an issue
|
|
13
|
-
- `openai/codex` for upstream Codex CLI bugs that reproduce without LazyCodex or are caused by Codex core behavior.
|
|
12
|
+
- `code-yeongyu/lazycodex` for LazyCodex, lazycodex-ai, omo-codex, marketplace, bundled skill, hook, MCP, installer, or packaging bugs. The artifact for this repo is always an issue, never a PR: it is a distribution mirror generated from `code-yeongyu/oh-my-openagent` (its `plugins/omo/` tree is synced from `packages/omo-codex/plugin/`), so PRs there cannot be merged. A fix for these defects goes to `code-yeongyu/oh-my-openagent` as a fork PR (base `dev`, source-tree paths, changelog fragment) through `$lcx-contribute-bug-fix`; the mirror issue stays short and links that PR.
|
|
13
|
+
- `openai/codex` for upstream Codex CLI bugs that reproduce without LazyCodex or are caused by Codex core behavior. A PR may be created here.
|
|
14
14
|
|
|
15
15
|
Use GPT-5.5 style: outcome first, concise, evidence-bound. Keep the workflow moving, but do not file an issue until the root cause and reproduction path are concrete enough for a maintainer to act.
|
|
16
16
|
|
|
@@ -90,7 +90,7 @@ sync_latest_source openai/codex "$LAZYCODEX_SOURCE_ROOT/chatgpt-subscription-sou
|
|
|
90
90
|
- Use `code-yeongyu/lazycodex` when the bug is in LazyCodex integration, distribution, bundled plugin code, skills, hooks, MCP wiring, installer behavior, aliases, marketplace sync, docs, or any behavior that disappears in clean upstream Codex.
|
|
91
91
|
- Use `openai/codex` when the bug reproduces in clean upstream Codex without LazyCodex, or the failing behavior comes from Codex CLI core, plugin API contracts, sandboxing, approvals, config loading, or built-in tool behavior.
|
|
92
92
|
- If ownership remains ambiguous after evidence gathering, do not guess. Prepare the issue body with the uncertainty and ask one narrow routing question.
|
|
93
|
-
7. Search for an existing issue
|
|
93
|
+
7. Search for an existing issue or lead PR before creating anything new. Search your own open PRs across all repos first (`gh search prs --author @me --state open "<symbol or error text>"`), then the selected repo, and the other repo too when the ownership boundary is close:
|
|
94
94
|
|
|
95
95
|
```bash
|
|
96
96
|
TARGET_REPO="code-yeongyu/lazycodex" # or openai/codex
|
|
@@ -111,7 +111,7 @@ fi
|
|
|
111
111
|
|
|
112
112
|
If the selected repo is `openai/codex` and label management is not available, still include the footer tag in the body and continue without claiming label creation succeeded.
|
|
113
113
|
10. If no matching issue exists, create the issue with `gh` and apply the `lazycodex-generated` label.
|
|
114
|
-
11. Create a PR only when the target repo is `openai/codex` AND the user asked for a PR, the fix is already implemented on a branch, or the smallest correct fix can be safely made there. Never create a PR or push a branch against `code-yeongyu/lazycodex
|
|
114
|
+
11. Create a PR only when the target repo is `openai/codex` or `code-yeongyu/oh-my-openagent` (the source of the LazyCodex mirror, base `dev`) AND the user asked for a PR, the fix is already implemented on a branch, or the smallest correct fix can be safely made there; use `$lcx-contribute-bug-fix` for the fix workflow. Never create a PR or push a branch against `code-yeongyu/lazycodex`: file a short issue there (symptom and failing input) that links the oh-my-openagent PR, with no patch. Apply the `lazycodex-generated` label to every PR created by this skill. Otherwise create an issue with fix guidance.
|
|
115
115
|
|
|
116
116
|
## Required Label And Footer
|
|
117
117
|
|
|
@@ -176,7 +176,7 @@ Tag: lazycodex-generated
|
|
|
176
176
|
|
|
177
177
|
## PR Body Template
|
|
178
178
|
|
|
179
|
-
Use this only when a PR is the right artifact, which is only ever for `openai/codex`:
|
|
179
|
+
Use this only when a PR is the right artifact, which is only ever for `openai/codex` or `code-yeongyu/oh-my-openagent`:
|
|
180
180
|
|
|
181
181
|
```markdown
|
|
182
182
|
## Summary
|
|
@@ -226,7 +226,7 @@ if [ "${#LABEL_ARGS[@]}" -gt 0 ]; then
|
|
|
226
226
|
fi
|
|
227
227
|
```
|
|
228
228
|
|
|
229
|
-
For a PR from a branch pushed to a fork
|
|
229
|
+
For a PR from a branch pushed to a fork, against `openai/codex` or `code-yeongyu/oh-my-openagent` (never `code-yeongyu/lazycodex`):
|
|
230
230
|
|
|
231
231
|
```bash
|
|
232
232
|
PR_BODY="${TMPDIR:-/tmp}/lcx-report-bug-pr-$(date +%Y%m%d-%H%M%S).md"
|
|
@@ -259,7 +259,7 @@ Stop and ask one narrow question only when the missing fact changes the issue ma
|
|
|
259
259
|
|
|
260
260
|
Do not file:
|
|
261
261
|
|
|
262
|
-
- a PR or pushed branch targeting `code-yeongyu/lazycodex` —
|
|
262
|
+
- a PR or pushed branch targeting `code-yeongyu/lazycodex` — send a fix PR to `code-yeongyu/oh-my-openagent` and keep any mirror issue short, always
|
|
263
263
|
- a vague issue without reproduction steps
|
|
264
264
|
- an issue that claims a root cause not supported by runtime evidence
|
|
265
265
|
- a duplicate when commenting on an existing issue is enough
|
|
@@ -8,4 +8,4 @@ interface:
|
|
|
8
8
|
- "omo-codex bug"
|
|
9
9
|
- "openai codex bug"
|
|
10
10
|
- "codex upstream issue"
|
|
11
|
-
default_prompt: "Use $lcx-report-bug to investigate this LazyCodex or Codex bug, compare LazyCodex evidence with sources under LAZYCODEX_SOURCE_ROOT or ${TMPDIR:-/tmp}/lazycodex-sources, choose the correct GitHub repo, and file an issue (or
|
|
11
|
+
default_prompt: "Use $lcx-report-bug to investigate this LazyCodex or Codex bug, compare LazyCodex evidence with sources under LAZYCODEX_SOURCE_ROOT or ${TMPDIR:-/tmp}/lazycodex-sources, choose the correct GitHub repo, and file an issue (or a PR on code-yeongyu/oh-my-openagent or openai/codex when the fix is ready — never a PR on the code-yeongyu/lazycodex mirror) with reproduction, root cause, fix guidance, and the lazycodex-generated label and footer."
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"version": "5.1.
|
|
4
|
-
"inputDigest": "sha256:
|
|
3
|
+
"version": "5.1.51",
|
|
4
|
+
"inputDigest": "sha256:39638ec3ebc26f2042f36d305d73e0414c185f68ab8cf5120a82774b425697ec",
|
|
5
5
|
"outputs": [
|
|
6
6
|
{
|
|
7
7
|
"path": "cli.d.ts",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
10
10
|
"timeout": 60,
|
|
11
|
-
"statusMessage": "(OmO 5.1.
|
|
11
|
+
"statusMessage": "(OmO 5.1.51) Checking LSP Diagnostics"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"type": "command",
|
|
22
22
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
23
23
|
"timeout": 5,
|
|
24
|
-
"statusMessage": "(OmO 5.1.
|
|
24
|
+
"statusMessage": "(OmO 5.1.51) Resetting LSP Diagnostics Cache"
|
|
25
25
|
}
|
|
26
26
|
]
|
|
27
27
|
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook session-start",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.1.
|
|
10
|
+
"statusMessage": "(OmO 5.1.51) Loading Project Rules"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"type": "command",
|
|
20
20
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
|
|
21
21
|
"timeout": 10,
|
|
22
|
-
"statusMessage": "(OmO 5.1.
|
|
22
|
+
"statusMessage": "(OmO 5.1.51) Loading Project Rules"
|
|
23
23
|
}
|
|
24
24
|
]
|
|
25
25
|
}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"type": "command",
|
|
33
33
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
34
34
|
"timeout": 10,
|
|
35
|
-
"statusMessage": "(OmO 5.1.
|
|
35
|
+
"statusMessage": "(OmO 5.1.51) Matching Project Rules"
|
|
36
36
|
}
|
|
37
37
|
]
|
|
38
38
|
}
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"type": "command",
|
|
46
46
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
47
47
|
"timeout": 10,
|
|
48
|
-
"statusMessage": "(OmO 5.1.
|
|
48
|
+
"statusMessage": "(OmO 5.1.51) Resetting Project Rule Cache"
|
|
49
49
|
}
|
|
50
50
|
]
|
|
51
51
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sisyphuslabs/codex-teammode",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.51",
|
|
4
4
|
"description": "Codex team-mode hook component that keeps background thread titles descriptive after create_thread.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": true,
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"devDependencies": {
|
|
18
18
|
"@vitest/coverage-v8": "5.0.1",
|
|
19
19
|
"@types/node": "^26.6.2",
|
|
20
|
-
"bun-types": "
|
|
20
|
+
"bun-types": "1.4.4",
|
|
21
21
|
"typescript": "^7.0.2",
|
|
22
22
|
"vitest": "5.0.1"
|
|
23
23
|
},
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Codex plugin component that emits a single anonymous daily-active event (`omo_codex_daily_active`) to PostHog whenever a Codex session starts.
|
|
4
4
|
|
|
5
|
-
The event is sent **at most once per UTC day per machine**.
|
|
5
|
+
The event is sent **at most once per UTC day per machine**. Its distinct id is `sha256` of a random install id created on the first send and stored as `install-id` in the telemetry state directory; nothing about the machine or user is used to build it. PostHog person profiles are explicitly disabled.
|
|
6
6
|
|
|
7
7
|
## Hook Wiring
|
|
8
8
|
|
|
@@ -33,7 +33,7 @@ The aggregate `plugin/hooks/hooks.json` mounts this hook alongside `rules` and `
|
|
|
33
33
|
A single PostHog `capture` call with:
|
|
34
34
|
|
|
35
35
|
- `event: "omo_codex_daily_active"`
|
|
36
|
-
- `distinctId: sha256(
|
|
36
|
+
- `distinctId: sha256(install id)`
|
|
37
37
|
- `properties`:
|
|
38
38
|
- `platform`, `product_name`, `package_name`, `package_version`
|
|
39
39
|
- `runtime` (`"node"`), `runtime_version`
|
|
@@ -464,14 +464,10 @@ function getTelemetryHost(env = process.env, defaultHost = DEFAULT_POSTHOG_HOST)
|
|
|
464
464
|
}
|
|
465
465
|
|
|
466
466
|
// ../../telemetry-core/src/machine-id.ts
|
|
467
|
-
import { createHash } from "node:crypto";
|
|
468
467
|
import os2 from "node:os";
|
|
469
468
|
function getDefaultTelemetryOsProvider() {
|
|
470
469
|
return os2;
|
|
471
470
|
}
|
|
472
|
-
function getTelemetryDistinctId(machineIdPrefix, osProvider = getDefaultTelemetryOsProvider()) {
|
|
473
|
-
return createHash("sha256").update(`${machineIdPrefix}${osProvider.hostname()}`).digest("hex");
|
|
474
|
-
}
|
|
475
471
|
|
|
476
472
|
// ../../telemetry-core/src/injected-client.ts
|
|
477
473
|
var NO_OP_CLIENT = {
|
|
@@ -9714,26 +9710,72 @@ function createDefaultPostHogTransport(apiKey, options) {
|
|
|
9714
9710
|
return new PostHogTelemetryTransport(apiKey, options);
|
|
9715
9711
|
}
|
|
9716
9712
|
|
|
9713
|
+
// ../../telemetry-core/src/install-id.ts
|
|
9714
|
+
import { createHash, randomBytes } from "node:crypto";
|
|
9715
|
+
import { mkdirSync as mkdirSync5, readFileSync as readFileSync3, writeFileSync as writeFileSync2 } from "node:fs";
|
|
9716
|
+
import { dirname as dirname3, join as join4 } from "node:path";
|
|
9717
|
+
var TELEMETRY_INSTALL_ID_FILE_NAME = "install-id";
|
|
9718
|
+
var INSTALL_ID_PATTERN = /^[0-9a-f]{64}$/;
|
|
9719
|
+
var fallbackInstallIds = new Map;
|
|
9720
|
+
function getTelemetryInstallDistinctId(stateDir) {
|
|
9721
|
+
return createHash("sha256").update(readOrCreateInstallId(join4(stateDir, TELEMETRY_INSTALL_ID_FILE_NAME))).digest("hex");
|
|
9722
|
+
}
|
|
9723
|
+
function readOrCreateInstallId(path) {
|
|
9724
|
+
const persisted = readInstallId(path);
|
|
9725
|
+
if (persisted !== undefined)
|
|
9726
|
+
return persisted;
|
|
9727
|
+
const installId = randomBytes(32).toString("hex");
|
|
9728
|
+
try {
|
|
9729
|
+
mkdirSync5(dirname3(path), { recursive: true });
|
|
9730
|
+
writeFileSync2(path, `${installId}
|
|
9731
|
+
`, { flag: "wx", mode: 384 });
|
|
9732
|
+
fallbackInstallIds.delete(path);
|
|
9733
|
+
return installId;
|
|
9734
|
+
} catch {
|
|
9735
|
+
const concurrentlyCreated = readInstallId(path);
|
|
9736
|
+
if (concurrentlyCreated !== undefined)
|
|
9737
|
+
return concurrentlyCreated;
|
|
9738
|
+
try {
|
|
9739
|
+
writeFileSync2(path, `${installId}
|
|
9740
|
+
`, { flag: "w", mode: 384 });
|
|
9741
|
+
fallbackInstallIds.delete(path);
|
|
9742
|
+
return installId;
|
|
9743
|
+
} catch {}
|
|
9744
|
+
const fallback = fallbackInstallIds.get(path);
|
|
9745
|
+
if (fallback !== undefined)
|
|
9746
|
+
return fallback;
|
|
9747
|
+
fallbackInstallIds.set(path, installId);
|
|
9748
|
+
return installId;
|
|
9749
|
+
}
|
|
9750
|
+
}
|
|
9751
|
+
function readInstallId(path) {
|
|
9752
|
+
try {
|
|
9753
|
+
const value = readFileSync3(path, "utf8").trim();
|
|
9754
|
+
return INSTALL_ID_PATTERN.test(value) ? value : undefined;
|
|
9755
|
+
} catch {
|
|
9756
|
+
return;
|
|
9757
|
+
}
|
|
9758
|
+
}
|
|
9759
|
+
|
|
9717
9760
|
// ../../telemetry-core/src/posthog-client.ts
|
|
9718
9761
|
function createTelemetryClient2(input) {
|
|
9719
9762
|
return createTelemetryClient({ ...input, transportFactory: input.transportFactory ?? createDefaultPostHogTransport });
|
|
9720
9763
|
}
|
|
9721
9764
|
|
|
9722
9765
|
// components/telemetry/src/product-identity.ts
|
|
9723
|
-
import { readFileSync as
|
|
9766
|
+
import { readFileSync as readFileSync4 } from "node:fs";
|
|
9724
9767
|
var PRODUCT_NAME = "omo-codex";
|
|
9725
9768
|
var PACKAGE_NAME = "@oh-my-opencode/omo-codex";
|
|
9726
9769
|
var CACHE_DIR_NAME = "omo-codex";
|
|
9727
9770
|
var EVENT_NAME = "omo_codex_daily_active";
|
|
9728
9771
|
var PRODUCT_ENV_PREFIX = "OMO_CODEX";
|
|
9729
|
-
var MACHINE_ID_PREFIX = "omo-codex:";
|
|
9730
9772
|
function isComponentPackageManifest(value) {
|
|
9731
9773
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
9732
9774
|
}
|
|
9733
9775
|
function readComponentVersionFromManifest() {
|
|
9734
9776
|
try {
|
|
9735
9777
|
const manifestUrl = new URL("../package.json", import.meta.url);
|
|
9736
|
-
const manifestText =
|
|
9778
|
+
const manifestText = readFileSync4(manifestUrl, "utf-8");
|
|
9737
9779
|
const parsed = JSON.parse(manifestText);
|
|
9738
9780
|
if (isComponentPackageManifest(parsed) && typeof parsed.version === "string") {
|
|
9739
9781
|
return parsed.version;
|
|
@@ -9756,7 +9798,6 @@ function createComponentTelemetryProductConfig(additionalProperties) {
|
|
|
9756
9798
|
defaultApiKey: DEFAULT_POSTHOG_API_KEY,
|
|
9757
9799
|
defaultHost: DEFAULT_POSTHOG_HOST,
|
|
9758
9800
|
eventName: EVENT_NAME,
|
|
9759
|
-
machineIdPrefix: MACHINE_ID_PREFIX,
|
|
9760
9801
|
packageName: PACKAGE_NAME,
|
|
9761
9802
|
packageVersion: getComponentVersion(),
|
|
9762
9803
|
platform: "omo-codex",
|
|
@@ -9835,14 +9876,14 @@ function createPluginPostHogClient(options = {}) {
|
|
|
9835
9876
|
}
|
|
9836
9877
|
const activityStateProvider = resolveActivityStateProvider(options);
|
|
9837
9878
|
return {
|
|
9838
|
-
trackActive: (
|
|
9879
|
+
trackActive: (reason) => {
|
|
9839
9880
|
const activityState = activityStateProvider();
|
|
9840
9881
|
if (!activityState.captureDaily) {
|
|
9841
9882
|
return;
|
|
9842
9883
|
}
|
|
9843
9884
|
client.trackActive({
|
|
9844
9885
|
dayUTC: activityState.dayUTC,
|
|
9845
|
-
distinctId,
|
|
9886
|
+
distinctId: getTelemetryInstallDistinctId(options.stateDir ?? getComponentTelemetryStateDir()),
|
|
9846
9887
|
reason
|
|
9847
9888
|
});
|
|
9848
9889
|
},
|
|
@@ -9854,9 +9895,6 @@ function createPluginPostHogClient(options = {}) {
|
|
|
9854
9895
|
async function createPluginPostHog() {
|
|
9855
9896
|
return createPluginPostHogClient();
|
|
9856
9897
|
}
|
|
9857
|
-
function getPostHogDistinctId() {
|
|
9858
|
-
return getTelemetryDistinctId(MACHINE_ID_PREFIX, getDefaultTelemetryOsProvider());
|
|
9859
|
-
}
|
|
9860
9898
|
|
|
9861
9899
|
// components/telemetry/src/codex-hook.ts
|
|
9862
9900
|
var SESSION_START_REASON = "session_start";
|
|
@@ -9870,7 +9908,6 @@ function writeHookDiagnostic(event, error, errorKind) {
|
|
|
9870
9908
|
}
|
|
9871
9909
|
async function runSessionStartHook(_input, options = {}) {
|
|
9872
9910
|
const createClient = options.createClient ?? createPluginPostHog;
|
|
9873
|
-
const getDistinctId = options.getDistinctId ?? getPostHogDistinctId;
|
|
9874
9911
|
let client;
|
|
9875
9912
|
try {
|
|
9876
9913
|
client = await createClient();
|
|
@@ -9879,7 +9916,7 @@ async function runSessionStartHook(_input, options = {}) {
|
|
|
9879
9916
|
return "";
|
|
9880
9917
|
}
|
|
9881
9918
|
try {
|
|
9882
|
-
client.trackActive(
|
|
9919
|
+
client.trackActive(SESSION_START_REASON);
|
|
9883
9920
|
} catch (error) {
|
|
9884
9921
|
writeHookDiagnostic("telemetry_capture_failed", error, error instanceof Error ? "error" : "non_error");
|
|
9885
9922
|
await safeShutdown(client);
|