oh-my-opencode 4.7.5 → 4.8.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/.agents/command/get-unpublished-changes.md +35 -6
- package/.agents/command/omomomo.md +1 -1
- package/.agents/command/publish.md +13 -0
- package/.agents/command/security-research.md +0 -1
- package/.agents/skills/get-unpublished-changes/SKILL.md +21 -5
- package/.agents/skills/omomomo/SKILL.md +1 -2
- package/.agents/skills/opencode-qa/scripts/export-roundtrip.sh +57 -19
- package/.agents/skills/opencode-qa/scripts/lib/common.sh +19 -7
- package/.agents/skills/opencode-qa/scripts/sse-hook-probe.sh +3 -0
- package/.agents/skills/opencode-qa/scripts/tui-smoke.sh +1 -1
- package/.agents/skills/pre-publish-review/SKILL.md +24 -4
- package/.agents/skills/publish/SKILL.md +13 -0
- package/.agents/skills/remove-deadcode/SKILL.md +0 -1
- package/.agents/skills/security-research/SKILL.md +0 -1
- package/.agents/skills/work-with-pr-workspace/iteration-1/eval-3/with_skill/outputs/code-changes.md +1 -1
- package/.agents/skills/work-with-pr-workspace/iteration-1/eval-3/without_skill/outputs/code-changes.md +2 -2
- package/.agents/skills/work-with-pr-workspace/iteration-1/review.html +1 -1
- package/.opencode/command/get-unpublished-changes.md +35 -6
- package/.opencode/command/omomomo.md +1 -1
- package/.opencode/command/publish.md +13 -0
- package/.opencode/command/security-research.md +0 -1
- package/.opencode/skills/pre-publish-review/SKILL.md +24 -4
- package/.opencode/skills/work-with-pr-workspace/iteration-1/eval-3/with_skill/outputs/code-changes.md +1 -1
- package/.opencode/skills/work-with-pr-workspace/iteration-1/eval-3/without_skill/outputs/code-changes.md +2 -2
- package/.opencode/skills/work-with-pr-workspace/iteration-1/review.html +1 -1
- package/README.ja.md +7 -7
- package/README.ko.md +9 -7
- package/README.md +14 -8
- package/README.ru.md +5 -5
- package/README.zh-cn.md +7 -7
- package/bin/oh-my-opencode.js +24 -1
- package/bin/oh-my-opencode.test.ts +79 -20
- package/dist/agents/hephaestus/agent.d.ts +1 -1
- package/dist/agents/kimi-tool-loop-guard.d.ts +1 -0
- package/dist/agents/momus.d.ts +1 -1
- package/dist/agents/sisyphus-agent-config.d.ts +4 -0
- package/dist/agents/sisyphus-agent-factory.d.ts +6 -0
- package/dist/agents/sisyphus-dynamic-prompt-builder.d.ts +2 -0
- package/dist/agents/sisyphus-dynamic-prompt-execution.d.ts +2 -0
- package/dist/agents/sisyphus-dynamic-prompt-exploration.d.ts +2 -0
- package/dist/agents/sisyphus-dynamic-prompt-role.d.ts +2 -0
- package/dist/agents/sisyphus-dynamic-prompt-sections.d.ts +18 -0
- package/dist/agents/sisyphus-dynamic-prompt-style.d.ts +2 -0
- package/dist/agents/sisyphus-dynamic-prompt.d.ts +3 -0
- package/dist/agents/sisyphus-gemini-fallback-overrides.d.ts +1 -0
- package/dist/agents/sisyphus-junior/agent.d.ts +1 -1
- package/dist/agents/sisyphus-junior/index.d.ts +0 -1
- package/dist/agents/sisyphus.d.ts +1 -6
- package/dist/agents/types.d.ts +14 -3
- package/dist/cli/cli-program.d.ts +3 -0
- package/dist/cli/doctor/checks/codex.d.ts +11 -0
- package/dist/cli/doctor/checks/dependencies.d.ts +1 -0
- package/dist/cli/doctor/checks/index.d.ts +3 -0
- package/dist/cli/doctor/checks/system.d.ts +4 -0
- package/dist/cli/doctor/constants.d.ts +1 -0
- package/dist/cli/doctor/doctor-target.d.ts +2 -0
- package/dist/cli/doctor/index.d.ts +1 -0
- package/dist/cli/doctor/types.d.ts +26 -0
- package/dist/cli/index.js +4466 -2212
- package/dist/cli/install-codex/codex-cache-bins.d.ts +21 -0
- package/dist/cli/install-codex/codex-cache-fs.d.ts +3 -0
- package/dist/cli/install-codex/codex-cache-install.d.ts +13 -0
- package/dist/cli/install-codex/codex-cache-mcp-manifest.d.ts +2 -0
- package/dist/cli/install-codex/codex-cache-prune.d.ts +10 -0
- package/dist/cli/install-codex/codex-cache.d.ts +4 -32
- package/dist/cli/install-codex/codex-cached-marketplace-manifest.d.ts +6 -0
- package/dist/cli/install-codex/codex-config-agents.d.ts +3 -0
- package/dist/cli/install-codex/codex-config-features.d.ts +1 -0
- package/dist/cli/install-codex/codex-config-marketplaces.d.ts +6 -0
- package/dist/cli/install-codex/codex-config-plugins.d.ts +8 -0
- package/dist/cli/install-codex/codex-config-toml-sections.d.ts +9 -0
- package/dist/cli/install-codex/codex-multi-agent-v2-config.d.ts +11 -0
- package/dist/cli/install-codex/codex-process.d.ts +5 -0
- package/dist/cli/install-codex/index.d.ts +1 -1
- package/dist/cli/install-codex/lazycodex-version-stamp.d.ts +19 -0
- package/dist/cli/install-codex/link-cached-plugin-agents.d.ts +4 -0
- package/dist/cli/install-validators.d.ts +3 -0
- package/dist/cli/model-fallback-types.d.ts +3 -0
- package/dist/cli/run/event-handlers.d.ts +4 -11
- package/dist/cli/run/event-message-handlers.d.ts +5 -0
- package/dist/cli/run/event-session-handlers.d.ts +5 -0
- package/dist/cli/run/event-session-ids.d.ts +24 -0
- package/dist/cli/run/event-think-block.d.ts +3 -0
- package/dist/cli/run/event-toast-handlers.d.ts +3 -0
- package/dist/cli/run/event-tool-handlers.d.ts +4 -0
- package/dist/cli/run/event-tool-output.d.ts +2 -0
- package/dist/cli/run/on-complete-hook.d.ts +8 -1
- package/dist/cli/run/opencode-binary-resolver.d.ts +2 -1
- package/dist/cli/run/runnable-agent-resolver.d.ts +11 -0
- package/dist/cli/runtime-commands.d.ts +2 -0
- package/dist/cli/sparkshell-appserver-websocket.d.ts +4 -0
- package/dist/cli/sparkshell-appserver.d.ts +16 -0
- package/dist/cli/sparkshell-parse.d.ts +21 -0
- package/dist/cli/sparkshell.d.ts +26 -0
- package/dist/cli/types.d.ts +9 -0
- package/dist/config/schema/claude-code.d.ts +1 -0
- package/dist/config/schema/hooks.d.ts +1 -0
- package/dist/config/schema/oh-my-opencode-config.d.ts +1 -0
- package/dist/create-hooks.d.ts +1 -0
- package/dist/features/background-agent/concurrency.d.ts +6 -1
- package/dist/features/background-agent/constants.d.ts +1 -0
- package/dist/features/background-agent/empty-assistant-turn.d.ts +7 -0
- package/dist/features/background-agent/manager.d.ts +12 -0
- package/dist/features/background-agent/message-updated-parent-wake-output.d.ts +1 -0
- package/dist/features/background-agent/parent-wake-dedupe.d.ts +2 -0
- package/dist/features/background-agent/parent-wake-dispatched-tracker.d.ts +21 -0
- package/dist/features/background-agent/parent-wake-flush-runner.d.ts +24 -0
- package/dist/features/background-agent/parent-wake-history-state.d.ts +5 -0
- package/dist/features/background-agent/parent-wake-notifier-types.d.ts +50 -0
- package/dist/features/background-agent/parent-wake-notifier.d.ts +8 -50
- package/dist/features/background-agent/parent-wake-pending-queue.d.ts +22 -0
- package/dist/features/background-agent/parent-wake-prompt-dispatch.d.ts +19 -0
- package/dist/features/background-agent/parent-wake-session-history.d.ts +73 -0
- package/dist/features/background-agent/parent-wake-session-inspector.d.ts +35 -0
- package/dist/features/background-agent/parent-wake-timer-handle.d.ts +5 -0
- package/dist/features/background-agent/parent-wake-window-recovery.d.ts +13 -0
- package/dist/features/background-agent/process-cleanup.d.ts +2 -0
- package/dist/features/background-agent/process-cleanup.test-helpers.d.ts +3 -0
- package/dist/features/background-agent/session-stream-activity.d.ts +6 -0
- package/dist/features/background-agent/spawner/fallback-agent.d.ts +5 -0
- package/dist/features/background-agent/spawner/task-prompt-body.d.ts +34 -0
- package/dist/features/background-agent/spawner/task-record.d.ts +2 -0
- package/dist/features/background-agent/spawner.d.ts +2 -5
- package/dist/features/builtin-commands/templates/refactor-sections/codemap-and-tests.d.ts +1 -0
- package/dist/features/builtin-commands/templates/refactor-sections/intro-and-analysis.d.ts +1 -0
- package/dist/features/builtin-commands/templates/refactor-sections/plan-and-execution.d.ts +1 -0
- package/dist/features/builtin-commands/templates/refactor-sections/team-mode-addendum.d.ts +1 -0
- package/dist/features/builtin-commands/templates/refactor-sections/verification-and-tooling.d.ts +1 -0
- package/dist/features/builtin-commands/templates/refactor.d.ts +2 -2
- package/dist/features/builtin-skills/skills/agent-browser-skill.d.ts +2 -0
- package/dist/features/builtin-skills/skills/agent-browser-template.d.ts +2 -0
- package/dist/features/builtin-skills/skills/git-master-sections/commit-atomic-planning.d.ts +1 -0
- package/dist/features/builtin-skills/skills/git-master-sections/commit-context-analysis.d.ts +1 -0
- package/dist/features/builtin-skills/skills/git-master-sections/commit-execution-verification.d.ts +1 -0
- package/dist/features/builtin-skills/skills/git-master-sections/commit-workflow.d.ts +1 -1
- package/dist/features/builtin-skills/skills/index.d.ts +1 -0
- package/dist/features/builtin-skills/skills/playwright-mcp-skill.d.ts +2 -0
- package/dist/features/builtin-skills/skills/playwright.d.ts +2 -3
- package/dist/features/builtin-skills/skills/visual-qa.d.ts +2 -0
- package/dist/features/claude-code-agent-loader/agent-definitions-loader.d.ts +2 -2
- package/dist/features/claude-code-agent-loader/claude-model-mapper.d.ts +1 -1
- package/dist/features/claude-code-agent-loader/loader.d.ts +2 -2
- package/dist/features/claude-code-plugin-loader/agent-loader.d.ts +1 -1
- package/dist/features/claude-code-plugin-loader/discovery-core.d.ts +2 -0
- package/dist/features/claude-code-plugin-loader/discovery-paths.d.ts +3 -0
- package/dist/features/claude-code-plugin-loader/discovery.d.ts +3 -4
- package/dist/features/claude-code-plugin-loader/install-path-resolver.d.ts +1 -0
- package/dist/features/claude-code-plugin-loader/installed-plugin-database.d.ts +3 -0
- package/dist/features/claude-code-plugin-loader/loaded-plugin.d.ts +2 -0
- package/dist/features/claude-code-plugin-loader/plugin-key.d.ts +1 -0
- package/dist/features/claude-code-plugin-loader/plugin-manifest.d.ts +4 -0
- package/dist/features/claude-code-plugin-loader/plugin-settings.d.ts +3 -0
- package/dist/features/claude-code-plugin-loader/types.d.ts +1 -0
- package/dist/features/hook-message-injector/context-resolver.d.ts +6 -0
- package/dist/features/hook-message-injector/id-generation.d.ts +2 -0
- package/dist/features/hook-message-injector/index.d.ts +1 -1
- package/dist/features/hook-message-injector/injector.d.ts +7 -69
- package/dist/features/hook-message-injector/json-message-lookup.d.ts +3 -0
- package/dist/features/hook-message-injector/message-directory.d.ts +1 -0
- package/dist/features/hook-message-injector/message-injection.d.ts +2 -0
- package/dist/features/hook-message-injector/sdk-message-context.d.ts +6 -0
- package/dist/features/hook-message-injector/sdk-message-lookup.d.ts +28 -0
- package/dist/features/hook-message-injector/types.d.ts +9 -0
- package/dist/features/mcp-oauth/callback-server.d.ts +10 -2
- package/dist/features/opencode-runtime-skills/source-server.d.ts +1 -0
- package/dist/features/skill-mcp-manager/http-client.d.ts +2 -0
- package/dist/features/team-mode/deps.d.ts +8 -1
- package/dist/features/team-mode/team-layout-tmux/layout.d.ts +2 -0
- package/dist/features/team-mode/team-mailbox/send.d.ts +3 -0
- package/dist/features/team-mode/team-registry/paths.d.ts +17 -2
- package/dist/features/team-mode/team-runtime/shutdown.d.ts +1 -1
- package/dist/features/team-mode/team-runtime/unresolved-team-members.d.ts +3 -0
- package/dist/features/team-mode/team-state-store/active-resume.d.ts +5 -0
- package/dist/features/team-mode/team-state-store/creating-resume.d.ts +4 -0
- package/dist/features/team-mode/team-state-store/deleting-resume.d.ts +4 -0
- package/dist/features/team-mode/team-state-store/error-normalization.d.ts +2 -0
- package/dist/features/team-mode/team-state-store/reservation-reconciliation.d.ts +4 -0
- package/dist/features/team-mode/team-state-store/resume-report.d.ts +7 -0
- package/dist/features/team-mode/team-state-store/resume.d.ts +2 -7
- package/dist/features/team-mode/team-state-store/runtime-cleanup.d.ts +4 -0
- package/dist/features/team-mode/team-state-store/session-liveness.d.ts +9 -0
- package/dist/features/team-mode/team-state-store/worker-resume-status.d.ts +9 -0
- package/dist/features/team-mode/tools/lifecycle-create-tool.d.ts +17 -0
- package/dist/features/team-mode/tools/lifecycle-inline-spec.d.ts +19 -0
- package/dist/features/team-mode/tools/lifecycle-participant.d.ts +25 -0
- package/dist/features/team-mode/tools/lifecycle-shutdown-tools.d.ts +18 -0
- package/dist/features/team-mode/tools/lifecycle-test-fixture.d.ts +3 -3
- package/dist/features/team-mode/tools/lifecycle.d.ts +3 -37
- package/dist/features/team-mode/tools/messaging-live-delivery-client.d.ts +25 -0
- package/dist/features/team-mode/tools/messaging-live-delivery-recipient.d.ts +19 -0
- package/dist/features/team-mode/tools/messaging-live-delivery-reservation.d.ts +10 -0
- package/dist/features/team-mode/tools/messaging-live-delivery-state.d.ts +5 -0
- package/dist/features/team-mode/tools/messaging-live-delivery.d.ts +6 -0
- package/dist/features/team-mode/tools/messaging-runtime.d.ts +17 -0
- package/dist/features/team-mode/tools/messaging.d.ts +4 -29
- package/dist/features/tmux-subagent/manager.d.ts +20 -1
- package/dist/features/tmux-subagent/session-created-handler.d.ts +4 -0
- package/dist/features/tmux-subagent/types.d.ts +1 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/message-builder.d.ts +1 -1
- package/dist/hooks/atlas/idle-completion-nudge.d.ts +10 -0
- package/dist/hooks/atlas/idle-constants.d.ts +4 -0
- package/dist/hooks/atlas/idle-continuation.d.ts +23 -0
- package/dist/hooks/atlas/idle-session-eligibility.d.ts +8 -0
- package/dist/hooks/atlas/tool-execute-after-direct-work.d.ts +9 -0
- package/dist/hooks/atlas/tool-execute-after-plan-tasks.d.ts +3 -0
- package/dist/hooks/atlas/tool-execute-after-subagent-completion.d.ts +14 -0
- package/dist/hooks/auto-update-checker/hook/background-update-check.d.ts +6 -0
- package/dist/hooks/auto-update-checker/hook/ignore-toast-error.d.ts +1 -0
- package/dist/hooks/hephaestus-agents-md-injector/hook.d.ts +37 -0
- package/dist/hooks/hephaestus-agents-md-injector/index.d.ts +1 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/json-error-recovery/hook.d.ts +1 -1
- package/dist/hooks/ralph-loop/command-arguments.d.ts +1 -0
- package/dist/hooks/ralph-loop/event-handler-activity.d.ts +10 -0
- package/dist/hooks/ralph-loop/event-handler-completion.d.ts +9 -0
- package/dist/hooks/ralph-loop/event-handler-continuation.d.ts +16 -0
- package/dist/hooks/ralph-loop/event-handler-feedback.d.ts +16 -0
- package/dist/hooks/ralph-loop/event-handler-idle.d.ts +15 -0
- package/dist/hooks/ralph-loop/event-handler-impl.d.ts +10 -0
- package/dist/hooks/ralph-loop/event-handler-runtime-error.d.ts +4 -0
- package/dist/hooks/ralph-loop/event-handler-types.d.ts +20 -0
- package/dist/hooks/ralph-loop/loop-state-controller.d.ts +1 -0
- package/dist/hooks/ralph-loop/ralph-loop-event-handler.d.ts +4 -24
- package/dist/hooks/ralph-loop/ralph-loop-hook.d.ts +1 -0
- package/dist/hooks/read-image-resizer/png-chunks.d.ts +6 -0
- package/dist/hooks/read-image-resizer/png-constants.d.ts +1 -0
- package/dist/hooks/read-image-resizer/png-crc.d.ts +1 -0
- package/dist/hooks/read-image-resizer/png-decoder.d.ts +1 -0
- package/dist/hooks/read-image-resizer/png-encoder.d.ts +1 -0
- package/dist/hooks/read-image-resizer/png-filters.d.ts +1 -0
- package/dist/hooks/read-image-resizer/png-ihdr.d.ts +11 -0
- package/dist/hooks/read-image-resizer/png-nearest-neighbor.d.ts +1 -0
- package/dist/hooks/rules-injector/injection-output.d.ts +2 -0
- package/dist/hooks/rules-injector/injection-processor.d.ts +22 -0
- package/dist/hooks/rules-injector/injection-types.d.ts +43 -0
- package/dist/hooks/rules-injector/injector.d.ts +3 -47
- package/dist/hooks/rules-injector/match-decision-cache.d.ts +4 -0
- package/dist/hooks/rules-injector/parsed-rule-cache.d.ts +11 -0
- package/dist/hooks/rules-injector/path-resolution.d.ts +1 -0
- package/dist/hooks/rules-injector/rule-match-reason.d.ts +12 -0
- package/dist/hooks/rules-injector/transcript-hydration.d.ts +13 -2
- package/dist/hooks/runtime-fallback/auto-retry-abort.d.ts +2 -0
- package/dist/hooks/runtime-fallback/auto-retry-agent-context.d.ts +2 -0
- package/dist/hooks/runtime-fallback/auto-retry-cleanup.d.ts +2 -0
- package/dist/hooks/runtime-fallback/auto-retry-dispatch.d.ts +2 -0
- package/dist/hooks/runtime-fallback/auto-retry-metadata.d.ts +9 -0
- package/dist/hooks/runtime-fallback/auto-retry-timeout.d.ts +5 -0
- package/dist/hooks/runtime-fallback/fallback-bootstrap-model.d.ts +1 -1
- package/dist/hooks/runtime-fallback/fallback-state.d.ts +4 -1
- package/dist/hooks/runtime-fallback/normalize-model.d.ts +12 -0
- package/dist/hooks/session-notification-linux.d.ts +3 -0
- package/dist/hooks/session-notification-log.d.ts +2 -0
- package/dist/hooks/session-notification-macos.d.ts +3 -0
- package/dist/hooks/session-notification-platform.d.ts +3 -0
- package/dist/hooks/session-notification-runner.d.ts +9 -0
- package/dist/hooks/session-notification-send.d.ts +3 -0
- package/dist/hooks/session-notification-sender.d.ts +5 -6
- package/dist/hooks/session-notification-sound.d.ts +3 -0
- package/dist/hooks/session-notification-windows.d.ts +3 -0
- package/dist/hooks/session-recovery/error-recovery.d.ts +4 -0
- package/dist/hooks/session-recovery/hook-types.d.ts +22 -0
- package/dist/hooks/session-recovery/hook.d.ts +2 -19
- package/dist/hooks/session-recovery/interrupted-tool-results.d.ts +3 -0
- package/dist/hooks/session-recovery/message-state.d.ts +4 -0
- package/dist/hooks/session-recovery/storage/thinking-strip.d.ts +7 -1
- package/dist/hooks/start-work/context-info-builder.d.ts +9 -9
- package/dist/hooks/start-work/context-info-formatters.d.ts +21 -0
- package/dist/hooks/start-work/explicit-plan-context.d.ts +9 -0
- package/dist/hooks/start-work/plan-discovery-context.d.ts +25 -0
- package/dist/hooks/start-work/plan-selection.d.ts +4 -0
- package/dist/hooks/start-work/work-initializer.d.ts +17 -0
- package/dist/hooks/tool-pair-validator/hook.d.ts +1 -37
- package/dist/hooks/tool-pair-validator/message-transform.d.ts +2 -0
- package/dist/hooks/tool-pair-validator/tool-part-ids.d.ts +6 -0
- package/dist/hooks/tool-pair-validator/tool-result-repair.d.ts +4 -0
- package/dist/hooks/tool-pair-validator/types.d.ts +36 -0
- package/dist/index.js +12708 -9988
- package/dist/oh-my-opencode.schema.json +4 -0
- package/dist/openclaw/reply-listener-poll-loop.d.ts +3 -0
- package/dist/openclaw/reply-listener-signature.d.ts +2 -0
- package/dist/openclaw/reply-listener-sleep.d.ts +1 -0
- package/dist/openclaw/reply-listener-start.d.ts +9 -0
- package/dist/openclaw/reply-listener-status.d.ts +4 -0
- package/dist/openclaw/reply-listener-stop.d.ts +7 -0
- package/dist/openclaw/reply-listener.d.ts +5 -18
- package/dist/openclaw/session-registry-lock.d.ts +2 -0
- package/dist/openclaw/session-registry-paths.d.ts +9 -0
- package/dist/openclaw/session-registry-storage.d.ts +4 -0
- package/dist/openclaw/session-registry-types.d.ts +11 -0
- package/dist/openclaw/session-registry.d.ts +2 -11
- package/dist/plugin/chat-message/loop-commands.d.ts +9 -0
- package/dist/plugin/chat-message/model-cache-warning.d.ts +12 -0
- package/dist/plugin/chat-message/prompt-text.d.ts +2 -0
- package/dist/plugin/chat-message/session-model.d.ts +4 -0
- package/dist/plugin/chat-message/start-work-message.d.ts +5 -0
- package/dist/plugin/chat-message/types.d.ts +67 -0
- package/dist/plugin/chat-message.d.ts +3 -24
- package/dist/plugin/event-error-utils.d.ts +14 -0
- package/dist/plugin/event-hook-dispatcher.d.ts +5 -0
- package/dist/plugin/event-model-fallback-state.d.ts +30 -0
- package/dist/plugin/event-model-fallback.d.ts +39 -0
- package/dist/plugin/event-session-lifecycle.d.ts +49 -0
- package/dist/plugin/event-session-recovery.d.ts +9 -0
- package/dist/plugin/event-team-handlers.d.ts +13 -0
- package/dist/plugin/event-types.d.ts +78 -0
- package/dist/plugin/event.d.ts +3 -12
- package/dist/plugin/hooks/create-core-hooks.d.ts +1 -0
- package/dist/plugin/hooks/create-session-hooks.d.ts +2 -1
- package/dist/plugin/hooks/model-fallback-title-updater.d.ts +8 -0
- package/dist/plugin/session-compacting.d.ts +4 -1
- package/dist/plugin/system-transform.d.ts +1 -1
- package/dist/plugin/tool-execute-after.d.ts +2 -0
- package/dist/plugin/tool-registry-core-tools.d.ts +15 -0
- package/dist/plugin/tool-registry-factories.d.ts +36 -0
- package/dist/plugin/tool-registry-gated-tools.d.ts +16 -0
- package/dist/plugin/tool-registry-team-tools.d.ts +14 -0
- package/dist/plugin/tool-registry-trimming.d.ts +2 -0
- package/dist/plugin/tool-registry.d.ts +3 -38
- package/dist/plugin/ultrawork-db-model-override.d.ts +1 -1
- package/dist/plugin-config/agent-order-warnings.d.ts +1 -0
- package/dist/plugin-config/config-merger.d.ts +2 -0
- package/dist/plugin-config/layered-config-loader.d.ts +2 -0
- package/dist/plugin-config/single-config-loader.d.ts +4 -0
- package/dist/plugin-config.d.ts +3 -5
- package/dist/plugin-handlers/agent-config-assembly.d.ts +19 -0
- package/dist/plugin-handlers/agent-config-finalizer.d.ts +4 -0
- package/dist/plugin-handlers/agent-config-handler.d.ts +2 -11
- package/dist/plugin-handlers/agent-config-types.d.ts +30 -0
- package/dist/plugin-handlers/agent-skill-discovery.d.ts +3 -0
- package/dist/plugin-handlers/agent-source-loader.d.ts +2 -0
- package/dist/plugin-handlers/hook-config-handler.d.ts +0 -3
- package/dist/shared/context-window-usage.d.ts +7 -0
- package/dist/shared/dynamic-truncator-types.d.ts +17 -0
- package/dist/shared/dynamic-truncator.d.ts +8 -23
- package/dist/shared/migration/migrations-sidecar.d.ts +2 -2
- package/dist/shared/migration/model-versions.d.ts +7 -4
- package/dist/shared/model-availability.d.ts +1 -1
- package/dist/shared/opencode-version.d.ts +2 -2
- package/dist/shared/sparkshell-awareness.d.ts +5 -0
- package/dist/shared/spawn-with-windows-hide.d.ts +2 -0
- package/dist/shared/token-limit-truncator.d.ts +2 -0
- package/dist/testing/module-mock-lifecycle.d.ts +8 -0
- package/dist/tools/delegate-task/openai-categories.d.ts +0 -1
- package/dist/tools/delegate-task/subagent-agent-match.d.ts +3 -0
- package/dist/tools/delegate-task/subagent-model-resolution.d.ts +4 -0
- package/dist/tools/delegate-task/subagent-request-preflight.d.ts +3 -0
- package/dist/tools/delegate-task/subagent-resolution-types.d.ts +32 -0
- package/dist/tools/delegate-task/subagent-resolver.d.ts +3 -12
- package/dist/tools/delegate-task/sync-completion-message.d.ts +20 -0
- package/dist/tools/delegate-task/sync-poll-error-recovery.d.ts +1 -0
- package/dist/tools/delegate-task/sync-session-lifecycle.d.ts +12 -0
- package/dist/tools/delegate-task/sync-session-poller.d.ts +2 -0
- package/dist/tools/delegate-task/sync-spawn-reservation.d.ts +10 -0
- package/dist/tools/delegate-task/sync-task-metadata.d.ts +11 -0
- package/dist/tools/delegate-task/sync-task-runner.d.ts +30 -0
- package/dist/tools/delegate-task/sync-task.d.ts +2 -1
- package/dist/tools/hashline-edit/formatter-trigger.d.ts +2 -2
- package/package.json +15 -14
- package/packages/git-bash-mcp/dist/cli.js +29 -12
- package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.d.ts +1 -1
- package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.js +1 -1
- package/packages/lsp-tools-mcp/dist/lsp/config-loader.js +95 -30
- package/packages/lsp-tools-mcp/dist/lsp/server-installation.d.ts +1 -2
- package/packages/lsp-tools-mcp/dist/lsp/server-installation.js +1 -11
- package/packages/lsp-tools-mcp/dist/lsp/transport.d.ts +1 -0
- package/packages/lsp-tools-mcp/dist/lsp/transport.js +5 -10
- package/packages/lsp-tools-mcp/dist/lsp/workspace-edit.d.ts +4 -1
- package/packages/lsp-tools-mcp/dist/lsp/workspace-edit.js +84 -23
- package/packages/lsp-tools-mcp/dist/missing-dependency-result.d.ts +2 -0
- package/packages/lsp-tools-mcp/dist/missing-dependency-result.js +14 -0
- package/packages/lsp-tools-mcp/dist/tools.js +64 -80
- package/packages/lsp-tools-mcp/package.json +4 -4
- package/packages/omo-codex/lazycodex-repository/.github/workflows/pr-source-guidance.yml +36 -0
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/README.md +3 -1
- package/packages/omo-codex/plugin/components/comment-checker/src/apply-patch.ts +188 -0
- package/packages/omo-codex/plugin/components/comment-checker/src/core-values.ts +1 -0
- package/packages/omo-codex/plugin/components/comment-checker/src/core.ts +15 -361
- package/packages/omo-codex/plugin/components/comment-checker/src/hook-input.ts +19 -0
- package/packages/omo-codex/plugin/components/comment-checker/src/record.ts +11 -0
- package/packages/omo-codex/plugin/components/comment-checker/src/request-extractor.ts +102 -0
- package/packages/omo-codex/plugin/components/comment-checker/src/types.ts +51 -0
- package/packages/omo-codex/plugin/components/comment-checker/test/codex-hook.test.ts +145 -0
- package/packages/omo-codex/plugin/components/comment-checker/test/core.test.ts +200 -0
- package/packages/omo-codex/plugin/components/lsp/CHANGELOG.md +2 -2
- package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus.md +11 -5
- package/packages/omo-codex/plugin/components/rules/src/hook-output.ts +11 -1
- package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +0 -1
- package/packages/omo-codex/plugin/components/rules/src/rules/constants.ts +1 -4
- package/packages/omo-codex/plugin/components/rules/src/rules/engine-dynamic-cache.ts +87 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/engine-dynamic-loader.ts +94 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/engine-loader.ts +84 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/engine-paths.ts +103 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/engine-static-loader.ts +43 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/engine-types.ts +45 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/engine.ts +8 -419
- package/packages/omo-codex/plugin/components/rules/src/rules/formatter.ts +39 -13
- package/packages/omo-codex/plugin/components/rules/src/rules/parser-frontmatter.ts +39 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/parser-yaml.ts +271 -0
- package/packages/omo-codex/plugin/components/rules/src/rules/parser.ts +3 -294
- package/packages/omo-codex/plugin/components/rules/src/rules/truncator.ts +17 -0
- package/packages/omo-codex/plugin/components/rules/src/sparkshell-awareness.ts +57 -0
- package/packages/omo-codex/plugin/components/rules/src/static-injection.ts +13 -2
- package/packages/omo-codex/plugin/components/rules/src/transcript-rule-filter.ts +17 -0
- package/packages/omo-codex/plugin/components/rules/test/bundled-rules-priority.test.ts +2 -1
- package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +26 -11
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-context-pressure.test.ts +104 -138
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +5 -2
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +12 -5
- package/packages/omo-codex/plugin/components/rules/test/codex-hook.test.ts +10 -4
- package/packages/omo-codex/plugin/components/rules/test/engine.test.ts +65 -3
- package/packages/omo-codex/plugin/components/rules/test/formatter.test.ts +67 -2
- package/packages/omo-codex/plugin/components/rules/test/hook-output.test.ts +16 -0
- package/packages/omo-codex/plugin/components/rules/test/parser.test.ts +153 -0
- package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +12 -0
- package/packages/omo-codex/plugin/components/rules/test/sparkshell-awareness.test.ts +236 -0
- package/packages/omo-codex/plugin/components/rules/test/tool-paths.test.ts +28 -50
- package/packages/omo-codex/plugin/components/rules/test/windows-git-bash-bundled-rule.test.ts +6 -3
- package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +13 -6
- package/packages/omo-codex/plugin/components/start-work-continuation/src/codex-hook.ts +21 -0
- package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +64 -2
- package/packages/omo-codex/plugin/components/telemetry/README.md +11 -1
- package/packages/omo-codex/plugin/components/telemetry/biome.json +12 -0
- package/packages/omo-codex/plugin/components/telemetry/src/codex-hook.ts +30 -3
- package/packages/omo-codex/plugin/components/telemetry/src/diagnostics.ts +154 -0
- package/packages/omo-codex/plugin/components/telemetry/src/posthog-activity-state.ts +18 -2
- package/packages/omo-codex/plugin/components/telemetry/src/posthog.ts +36 -4
- package/packages/omo-codex/plugin/components/telemetry/test/codex-hook-diagnostics.test.ts +115 -0
- package/packages/omo-codex/plugin/components/telemetry/test/codex-hook.test.ts +16 -25
- package/packages/omo-codex/plugin/components/telemetry/test/diagnostics.test.ts +119 -0
- package/packages/omo-codex/plugin/components/ultrawork/AGENTS.md +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/README.md +5 -5
- package/packages/omo-codex/plugin/components/ultrawork/agents/codex-ultrawork-reviewer.toml +2 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/explorer.toml +1 -0
- package/packages/omo-codex/plugin/components/ultrawork/agents/metis.toml +0 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/momus.toml +0 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +1 -2
- package/packages/omo-codex/plugin/components/ultrawork/directive.md +97 -32
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +65 -0
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/agents/openai.yaml +7 -0
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +131 -0
- package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +38 -10
- package/packages/omo-codex/plugin/components/ultrawork/test/directive-contract.test.ts +18 -0
- package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +47 -0
- 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 +12 -8
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +28 -21
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +2 -3
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +7 -7
- package/packages/omo-codex/plugin/components/ulw-loop/src/command-types.ts +36 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/constants.ts +64 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/domain-types.ts +98 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/plan-crud.ts +17 -2
- package/packages/omo-codex/plugin/components/ulw-loop/src/runtime.ts +22 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/steering-types.ts +69 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/types.ts +5 -277
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-commands.test.ts +35 -13
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-complete-goals.test.ts +52 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-steering.test.ts +67 -111
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +31 -2
- package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +46 -9
- package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +20 -29
- package/packages/omo-codex/plugin/model-catalog.json +5 -11
- package/packages/omo-codex/plugin/package-lock.json +1 -1
- package/packages/omo-codex/plugin/scripts/auto-update-state.mjs +78 -0
- package/packages/omo-codex/plugin/scripts/auto-update.mjs +166 -76
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/catalog.mjs +71 -0
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/config-paths.mjs +44 -0
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/multi-agent-v2-guard.mjs +40 -0
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/root-settings.mjs +74 -0
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/state.mjs +29 -0
- package/packages/omo-codex/plugin/scripts/migrate-codex-config.mjs +33 -204
- package/packages/omo-codex/plugin/scripts/spawn-command.mjs +11 -0
- package/packages/omo-codex/plugin/scripts/sync-hook-status-messages.mjs +23 -9
- package/packages/omo-codex/plugin/scripts/sync-skills.mjs +131 -28
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/04-oracle-triple.md +3 -3
- package/packages/omo-codex/plugin/skills/git-master/SKILL.md +100 -0
- package/packages/omo-codex/plugin/skills/git-master/agents/openai.yaml +13 -0
- package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +9 -7
- package/packages/omo-codex/plugin/skills/lcx-contribute-bug-fix/SKILL.md +176 -0
- package/packages/omo-codex/plugin/skills/lcx-contribute-bug-fix/agents/openai.yaml +12 -0
- package/packages/omo-codex/plugin/skills/lcx-contribute-bug-fix/scripts/create-pr-body.mjs +107 -0
- package/packages/omo-codex/plugin/skills/lcx-report-bug/SKILL.md +119 -14
- package/packages/omo-codex/plugin/skills/lcx-report-bug/agents/openai.yaml +4 -2
- package/packages/omo-codex/plugin/skills/programming/references/go/concurrency.md +2 -2
- package/packages/omo-codex/plugin/skills/programming/references/python/async-anyio.md +6 -6
- package/packages/omo-codex/plugin/skills/programming/references/python/pydantic-ai.md +12 -12
- package/packages/omo-codex/plugin/skills/programming/references/typescript/backend-hono.md +7 -7
- package/packages/omo-codex/plugin/skills/refactor/SKILL.md +13 -11
- package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +10 -8
- package/packages/omo-codex/plugin/skills/review-work/SKILL.md +68 -33
- package/packages/omo-codex/plugin/skills/start-work/SKILL.md +86 -22
- package/packages/omo-codex/plugin/skills/ultraresearch/SKILL.md +770 -0
- package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +12 -8
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +28 -21
- package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +45 -379
- package/packages/omo-codex/plugin/skills/ulw-plan/agents/openai.yaml +7 -0
- package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +131 -0
- package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +237 -0
- package/packages/omo-codex/plugin/skills/visual-qa/scripts/ansi.ts +17 -0
- package/packages/omo-codex/plugin/skills/visual-qa/scripts/cli.ts +82 -0
- package/packages/omo-codex/plugin/skills/visual-qa/scripts/east-asian-width.ts +72 -0
- package/packages/omo-codex/plugin/skills/visual-qa/scripts/image-diff.ts +109 -0
- package/packages/omo-codex/plugin/skills/visual-qa/scripts/png-crc.ts +27 -0
- package/packages/omo-codex/plugin/skills/visual-qa/scripts/png-decode.ts +206 -0
- package/packages/omo-codex/plugin/skills/visual-qa/scripts/png-synth.ts +57 -0
- package/packages/omo-codex/plugin/skills/visual-qa/scripts/tui-grid.ts +88 -0
- package/packages/omo-codex/plugin/skills/visual-qa/scripts/types.ts +54 -0
- package/packages/omo-codex/plugin/test/aggregate-agents.test.mjs +55 -0
- package/packages/omo-codex/plugin/test/aggregate-build.test.mjs +38 -0
- package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +164 -0
- package/packages/omo-codex/plugin/test/aggregate-manifest.test.mjs +73 -0
- package/packages/omo-codex/plugin/test/aggregate-mcp.test.mjs +69 -0
- package/packages/omo-codex/plugin/test/aggregate-model-catalog.test.mjs +53 -0
- package/packages/omo-codex/plugin/test/aggregate-plugin-fixture.mjs +83 -0
- package/packages/omo-codex/plugin/test/aggregate-skills.test.mjs +67 -0
- package/packages/omo-codex/plugin/test/aggregate.test.mjs +2 -514
- package/packages/omo-codex/plugin/test/auto-update-state-persistence.test.mjs +36 -0
- package/packages/omo-codex/plugin/test/auto-update.test.mjs +191 -29
- package/packages/omo-codex/plugin/test/component-bin-names.test.mjs +1 -1
- package/packages/omo-codex/plugin/test/global-review-debug-gate.test.mjs +29 -0
- package/packages/omo-codex/plugin/test/hook-status-message.test.mjs +23 -10
- package/packages/omo-codex/plugin/test/lcx-bug-skills.test.mjs +81 -0
- package/packages/omo-codex/plugin/test/lcx-contribute-bug-fix-template.test.mjs +91 -0
- package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +244 -9
- package/packages/omo-codex/plugin/test/node-install-surface.test.mjs +0 -19
- package/packages/omo-codex/plugin/test/start-work-skill.test.mjs +107 -0
- package/packages/omo-codex/plugin/test/subagent-guidance.test.mjs +82 -7
- package/packages/omo-codex/plugin/test/sync-hook-status-messages.test.mjs +58 -6
- package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +152 -0
- package/packages/omo-codex/plugin/test/sync-skills.test.mjs +158 -50
- package/packages/omo-codex/plugin/test/ulw-plan-skill.test.mjs +43 -0
- package/packages/omo-codex/scripts/install/agent-source-roots.mjs +13 -0
- package/packages/omo-codex/scripts/install/agents.mjs +84 -14
- package/packages/omo-codex/scripts/install/bin-links.mjs +239 -0
- package/packages/omo-codex/scripts/install/cache.mjs +152 -108
- package/packages/omo-codex/scripts/install/cached-marketplace-manifest.mjs +21 -0
- package/packages/omo-codex/scripts/install/cli-args.mjs +39 -2
- package/packages/omo-codex/scripts/install/config.mjs +9 -5
- package/packages/omo-codex/scripts/install/lazycodex-version-stamp.mjs +102 -0
- package/packages/omo-codex/scripts/install/legacy-bins.mjs +9 -1
- package/packages/omo-codex/scripts/install/model-catalog.mjs +9 -1
- package/packages/omo-codex/scripts/install/multi-agent-v2-config.mjs +12 -10
- package/packages/omo-codex/scripts/install/process.mjs +3 -1
- package/packages/omo-codex/scripts/install/project-local-cleanup.mjs +0 -1
- package/packages/omo-codex/scripts/install/snapshot.mjs +0 -1
- package/packages/omo-codex/scripts/install-agent-links.test.mjs +205 -11
- package/packages/omo-codex/scripts/install-bin-links.test.mjs +123 -1
- package/packages/omo-codex/scripts/install-cache-copy.test.mjs +129 -5
- package/packages/omo-codex/scripts/install-cli-args.test.mjs +82 -1
- package/packages/omo-codex/scripts/install-config-preservation.test.mjs +43 -0
- package/packages/omo-codex/scripts/install-config-reasoning.test.mjs +14 -1
- package/packages/omo-codex/scripts/install-config.test.mjs +49 -1
- package/packages/omo-codex/scripts/install-lazycodex-version-stamp.test.mjs +84 -0
- package/packages/omo-codex/scripts/install-local-entrypoint.test.mjs +51 -0
- package/packages/omo-codex/scripts/install-local.mjs +42 -40
- package/packages/omo-codex/scripts/install-local.test.mjs +17 -241
- package/packages/omo-codex/scripts/install-marketplace-cache.test.mjs +162 -0
- package/packages/omo-codex/scripts/install-packaged-local.test.mjs +10 -6
- package/packages/omo-codex/scripts/install-project-local-cleanup.test.mjs +73 -2
- package/packages/omo-codex/scripts/sync-telemetry-component.mjs +1 -0
- package/packages/shared-skills/skills/debugging/references/methodology/04-oracle-triple.md +3 -3
- package/packages/shared-skills/skills/git-master/SKILL.md +100 -0
- package/packages/shared-skills/skills/git-master/agents/openai.yaml +13 -0
- package/packages/shared-skills/skills/lcx-contribute-bug-fix/SKILL.md +176 -0
- package/packages/shared-skills/skills/lcx-contribute-bug-fix/agents/openai.yaml +12 -0
- package/packages/shared-skills/skills/lcx-contribute-bug-fix/scripts/create-pr-body.mjs +107 -0
- package/packages/shared-skills/skills/lcx-report-bug/SKILL.md +119 -14
- package/packages/shared-skills/skills/lcx-report-bug/agents/openai.yaml +4 -2
- package/packages/shared-skills/skills/programming/references/go/concurrency.md +2 -2
- package/packages/shared-skills/skills/programming/references/python/async-anyio.md +6 -6
- package/packages/shared-skills/skills/programming/references/python/pydantic-ai.md +12 -12
- package/packages/shared-skills/skills/programming/references/typescript/backend-hono.md +7 -7
- package/packages/shared-skills/skills/refactor/SKILL.md +4 -4
- package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +1 -1
- package/packages/shared-skills/skills/review-work/SKILL.md +55 -33
- package/packages/shared-skills/skills/start-work/SKILL.md +76 -19
- package/packages/shared-skills/skills/ultraresearch/SKILL.md +770 -0
- package/packages/shared-skills/skills/visual-qa/SKILL.md +219 -0
- package/packages/shared-skills/skills/visual-qa/scripts/ansi.test.ts +45 -0
- package/packages/shared-skills/skills/visual-qa/scripts/ansi.ts +17 -0
- package/packages/shared-skills/skills/visual-qa/scripts/cli.test.ts +73 -0
- package/packages/shared-skills/skills/visual-qa/scripts/cli.ts +82 -0
- package/packages/shared-skills/skills/visual-qa/scripts/east-asian-width.test.ts +60 -0
- package/packages/shared-skills/skills/visual-qa/scripts/east-asian-width.ts +72 -0
- package/packages/shared-skills/skills/visual-qa/scripts/image-diff.test.ts +70 -0
- package/packages/shared-skills/skills/visual-qa/scripts/image-diff.ts +109 -0
- package/packages/shared-skills/skills/visual-qa/scripts/png-crc.ts +27 -0
- package/packages/shared-skills/skills/visual-qa/scripts/png-decode.test.ts +44 -0
- package/packages/shared-skills/skills/visual-qa/scripts/png-decode.ts +206 -0
- package/packages/shared-skills/skills/visual-qa/scripts/png-synth.ts +57 -0
- package/packages/shared-skills/skills/visual-qa/scripts/skill-prompt-contract.test.ts +83 -0
- package/packages/shared-skills/skills/visual-qa/scripts/tui-grid.test.ts +57 -0
- package/packages/shared-skills/skills/visual-qa/scripts/tui-grid.ts +88 -0
- package/packages/shared-skills/skills/visual-qa/scripts/types.ts +54 -0
- package/postinstall.mjs +24 -1
- package/dist/agents/custom-agent-summaries.d.ts +0 -8
- package/dist/agents/hephaestus/gpt-5-3-codex.d.ts +0 -20
- package/dist/agents/prometheus/gemini.d.ts +0 -1
- package/dist/agents/prometheus/gpt.d.ts +0 -1
- package/dist/agents/sisyphus-junior/gpt-5-3-codex.d.ts +0 -8
- package/dist/features/background-agent/session-route.d.ts +0 -12
- package/dist/features/background-agent/spawner/parent-directory-resolver.d.ts +0 -6
- package/dist/features/background-agent/state.d.ts +0 -35
- package/dist/features/claude-tasks/session-storage.d.ts +0 -9
- package/dist/features/mcp-oauth/resource-indicator.d.ts +0 -2
- package/dist/features/mcp-oauth/schema.d.ts +0 -6
- package/dist/features/opencode-skill-loader/async-loader.d.ts +0 -6
- package/dist/features/opencode-skill-loader/blocking.d.ts +0 -2
- package/dist/features/opencode-skill-loader/discover-worker.d.ts +0 -1
- package/dist/hooks/session-recovery/recover-empty-content-message-sdk.d.ts +0 -13
- package/dist/shared/bun-hash-shim.d.ts +0 -1
- package/dist/tools/delegate-task/resolve-call-id.d.ts +0 -2
- package/packages/shared-skills/skills/ulw-plan/SKILL.md +0 -383
- /package/packages/lsp-tools-mcp/dist/lsp/{utils.d.ts → startup-failure.d.ts} +0 -0
- /package/packages/lsp-tools-mcp/dist/lsp/{utils.js → startup-failure.js} +0 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: git-master
|
|
3
|
+
description: "MUST USE whenever a task needs a commit or git-history investigation. Covers atomic commits, staging, commit-message style, rebase, squash, fixup/autosquash, blame, bisect, reflog, git log -S/-G, and questions like who wrote this or when was this added. Do not use for ordinary code edits unless the user asks for git work."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Git Master
|
|
7
|
+
|
|
8
|
+
Use this skill when the user asks you to operate on Git history or answer a Git-history question. Be exact, conservative, and evidence-led. Read the repository state before you infer anything.
|
|
9
|
+
|
|
10
|
+
## Mode Gate
|
|
11
|
+
|
|
12
|
+
Classify the request first:
|
|
13
|
+
|
|
14
|
+
- `COMMIT`: stage and commit local changes.
|
|
15
|
+
- `REBASE`: rebase, squash, fixup, autosquash, reorder, split, or otherwise rewrite branch history.
|
|
16
|
+
- `HISTORY`: answer when, where, who, why, or which commit changed something.
|
|
17
|
+
- `STATUS`: inspect branch, diff, or working-tree state without changing it.
|
|
18
|
+
|
|
19
|
+
Do not commit, rebase, push, force-push, reset, stash-pop, or delete anything unless the user explicitly asked for that operation. If the request is only investigative, report findings and stop.
|
|
20
|
+
|
|
21
|
+
## Ground Truth
|
|
22
|
+
|
|
23
|
+
Gather independent facts in parallel when the tools allow it:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
git status --short
|
|
27
|
+
git diff --stat
|
|
28
|
+
git diff --staged --stat
|
|
29
|
+
git branch --show-current
|
|
30
|
+
git log -30 --oneline
|
|
31
|
+
git log -30 --pretty=format:%s
|
|
32
|
+
git rev-parse --abbrev-ref @{upstream}
|
|
33
|
+
git merge-base HEAD origin/main
|
|
34
|
+
git merge-base HEAD origin/master
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Missing upstream or missing `main`/`master` is normal. Fall back to the best available branch or report the missing fact. Never treat a failed lookup as proof.
|
|
38
|
+
|
|
39
|
+
## Commit Mode
|
|
40
|
+
|
|
41
|
+
Commit only the user's requested changes. Preserve unrelated dirty work.
|
|
42
|
+
|
|
43
|
+
1. Detect message style from recent history. Use the dominant local pattern, language, and casing. Do not default to Conventional Commits unless the repo uses them.
|
|
44
|
+
2. Inspect the full diff, not only filenames. Separate unrelated user edits from the requested commit.
|
|
45
|
+
3. Build atomic groups by behavior, module, and revertability. Keep implementation and its direct tests together.
|
|
46
|
+
4. Prefer multiple commits for unrelated concerns. A single commit is acceptable only when the changed files form one indivisible behavior or the user explicitly asks for one commit.
|
|
47
|
+
5. Stage by path or hunk so each commit contains only its atomic group.
|
|
48
|
+
6. Before each commit, verify `git diff --staged --stat` and enough staged diff to prove the group is right.
|
|
49
|
+
7. Commit with the detected style. After each commit, verify `git log -1 --oneline`.
|
|
50
|
+
|
|
51
|
+
Grouping rules:
|
|
52
|
+
|
|
53
|
+
- Split different features, modules, generated artifacts, config, docs, and test-only changes unless they are inseparable.
|
|
54
|
+
- Keep generated files with the source change that produced them when omitting them would leave the repo inconsistent.
|
|
55
|
+
- Never hide failing or unrelated changes inside a broad commit.
|
|
56
|
+
|
|
57
|
+
Final report: list commit hashes, messages, and any remaining uncommitted files.
|
|
58
|
+
|
|
59
|
+
## Rebase Mode
|
|
60
|
+
|
|
61
|
+
History rewriting is a shared-impact operation.
|
|
62
|
+
|
|
63
|
+
- Never rebase or rewrite `main`, `master`, `dev`, release branches, or a protected branch unless the user explicitly named that exact operation.
|
|
64
|
+
- If commits may already be pushed, ask before force-pushing. Use `--force-with-lease`, never plain `--force`.
|
|
65
|
+
- If the worktree is dirty, preserve it intentionally before rebasing. Do not stash-pop over conflicts without checking what changed.
|
|
66
|
+
- For fixups, prefer `git commit --fixup=<hash>` followed by `GIT_SEQUENCE_EDITOR=: git rebase -i --autosquash <base>`.
|
|
67
|
+
- For conflicts, read the conflicting files and resolve by intent. Do not choose ours/theirs blindly.
|
|
68
|
+
- If a rebase goes wrong, use `git rebase --abort` first. Use reflog only after explaining the recovery path.
|
|
69
|
+
|
|
70
|
+
After rewriting, run the relevant tests or at least the project's cheapest smoke check, then show the new branch log from base to HEAD.
|
|
71
|
+
|
|
72
|
+
## History Mode
|
|
73
|
+
|
|
74
|
+
Choose the Git tool by the question:
|
|
75
|
+
|
|
76
|
+
- `git log -S "text"`: when the count of an exact string changed.
|
|
77
|
+
- `git log -G "regex"`: when diffs touched lines matching a pattern.
|
|
78
|
+
- `git blame -L start,end -- file`: who last changed specific lines.
|
|
79
|
+
- `git log --follow -- file`: history across renames for one file.
|
|
80
|
+
- `git show <hash>`: inspect the commit that appears relevant.
|
|
81
|
+
- `git bisect`: find the first bad commit when there is a deterministic pass/fail command and known good/bad bounds.
|
|
82
|
+
- `git reflog`: recover or explain recent local history movement.
|
|
83
|
+
|
|
84
|
+
Always cite the exact command evidence in the answer: commit hash, subject, file path, and line or diff context when relevant. If the evidence is ambiguous, say what remains unproven.
|
|
85
|
+
|
|
86
|
+
## Safety Checks
|
|
87
|
+
|
|
88
|
+
Before any write to Git history:
|
|
89
|
+
|
|
90
|
+
- Current branch is known.
|
|
91
|
+
- Dirty work is accounted for.
|
|
92
|
+
- Upstream/pushed status is known or explicitly unknown.
|
|
93
|
+
- The operation matches the user's request.
|
|
94
|
+
- Recovery path is known (`rebase --abort`, reflog hash, or untouched worktree).
|
|
95
|
+
|
|
96
|
+
Before finishing:
|
|
97
|
+
|
|
98
|
+
- Run the most relevant verification available for the changed behavior or history operation.
|
|
99
|
+
- Report commands that passed and any command you could not run.
|
|
100
|
+
- Leave the worktree state explicit.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "git-master (omo)"
|
|
3
|
+
short_description: "Atomic Git commits, history surgery, and source archaeology"
|
|
4
|
+
search_terms:
|
|
5
|
+
- "git-master"
|
|
6
|
+
- "git commit"
|
|
7
|
+
- "atomic commit"
|
|
8
|
+
- "rebase"
|
|
9
|
+
- "squash"
|
|
10
|
+
- "git blame"
|
|
11
|
+
- "git bisect"
|
|
12
|
+
- "history search"
|
|
13
|
+
default_prompt: "Use $git-master to inspect the repository state, preserve unrelated work, and handle the requested Git operation with atomic grouping, history safety checks, and evidence-backed verification."
|
|
@@ -8,15 +8,17 @@ This skill may include examples copied from the OpenCode harness. In Codex, do n
|
|
|
8
8
|
|
|
9
9
|
| OpenCode example | Codex tool to use |
|
|
10
10
|
| --- | --- |
|
|
11
|
-
| `call_omo_agent(subagent_type="explore", ...)` | `spawn_agent(
|
|
12
|
-
| `call_omo_agent(subagent_type="librarian", ...)` | `spawn_agent(
|
|
13
|
-
| `task(subagent_type="plan", ...)` | `spawn_agent(
|
|
14
|
-
| `task(subagent_type="oracle", ...)` for final verification | `spawn_agent(
|
|
15
|
-
| `task(category="...", ...)` for implementation or QA | `spawn_agent(
|
|
16
|
-
| `background_output(task_id="...")` | `wait_agent(...)`
|
|
11
|
+
| `call_omo_agent(subagent_type="explore", ...)` | `spawn_agent({"task_name":"...","message":"TASK: act as an explorer. ...","fork_turns":"none"})` |
|
|
12
|
+
| `call_omo_agent(subagent_type="librarian", ...)` | `spawn_agent({"task_name":"...","message":"TASK: act as a librarian. ...","fork_turns":"none"})` |
|
|
13
|
+
| `task(subagent_type="plan", ...)` | `spawn_agent({"task_name":"...","message":"TASK: act as a planning agent. ...","fork_turns":"none"})` |
|
|
14
|
+
| `task(subagent_type="oracle", ...)` for final verification | `spawn_agent({"task_name":"...","message":"TASK: act as a rigorous reviewer. ...","fork_turns":"none"})` |
|
|
15
|
+
| `task(category="...", ...)` for implementation or QA | `spawn_agent({"task_name":"...","message":"TASK: act as an implementation or QA worker. ...","fork_turns":"none"})` |
|
|
16
|
+
| `background_output(task_id="...")` | `wait_agent(...)` for mailbox signals; after a timeout, run one `list_agents` check for the named child if reassurance is needed |
|
|
17
17
|
| `team_*(...)` | Use Codex native subagents plus `send_message`, `followup_task`, `wait_agent`, and `close_agent` |
|
|
18
18
|
|
|
19
|
-
Codex full-history forks inherit
|
|
19
|
+
Codex full-history forks inherit parent context, so role-specific behavior must be described in a self-contained `message` and usually should use a non-full-history fork mode such as `fork_turns="none"`. Include any required conversation context, files, diffs, constraints, and requested skill names directly in the spawned agent's `message`. If a code block below conflicts with this section, this section wins.
|
|
20
|
+
|
|
21
|
+
For work likely to exceed one wait cycle, require the child to send `WORKING: <task> - <current phase>` before long passes and `BLOCKED: <reason>` only when progress stops. A `wait_agent` timeout only means no new mailbox update arrived. Treat a running child or latest `WORKING:` message as alive. Do not use `list_agents` as a polling loop. Fallback only when the child is completed without the deliverable, ack-only after followup, explicitly `BLOCKED:`, or no longer running.
|
|
20
22
|
|
|
21
23
|
# /init-deep
|
|
22
24
|
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lcx-contribute-bug-fix
|
|
3
|
+
description: "Contribute a verified bug-fix PR for LazyCodex, lazycodex-ai, omo-codex, bundled Codex skills, or upstream Codex CLI bugs. 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
|
+
metadata:
|
|
5
|
+
short-description: Contribute verified LazyCodex or Codex bug-fix PRs
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# lcx-contribute-bug-fix
|
|
9
|
+
|
|
10
|
+
Use this skill to debug a concrete LazyCodex or Codex defect, implement the smallest correct fix in a fresh temporary workspace, and open a GitHub PR. Work in English, keep the PR body short, and support every claim with runtime or source evidence.
|
|
11
|
+
|
|
12
|
+
Route ownership the same way as `$lcx-report-bug`:
|
|
13
|
+
|
|
14
|
+
- `code-yeongyu/lazycodex` for LazyCodex, lazycodex-ai, omo-codex, bundled skills, hooks, MCP wiring, installer behavior, marketplace sync, docs, or packaging.
|
|
15
|
+
- `openai/codex` for upstream Codex CLI bugs that reproduce without LazyCodex or come from Codex core behavior.
|
|
16
|
+
|
|
17
|
+
## Required Outcome
|
|
18
|
+
|
|
19
|
+
Create a PR that includes:
|
|
20
|
+
|
|
21
|
+
- a focused branch from a fresh `/tmp` clone/worktree
|
|
22
|
+
- reproduction logs from before the fix
|
|
23
|
+
- the smallest implementation that fixes the defect
|
|
24
|
+
- verification logs from after the fix
|
|
25
|
+
- apply `lazycodex-generated` when label management is available
|
|
26
|
+
- the required LazyCodex footer tag `Tag: lazycodex-generated`
|
|
27
|
+
- cleanup of temporary worktrees and clones
|
|
28
|
+
|
|
29
|
+
## Required Workflow
|
|
30
|
+
|
|
31
|
+
1. Read the user's bug report and identify the affected surface.
|
|
32
|
+
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.
|
|
33
|
+
3. Decide the target repository. If ownership is close, compare against upstream Codex source under `/tmp/openai-codex-source` before choosing.
|
|
34
|
+
4. Create a fresh temporary clone and branch. 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.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
TARGET_REPO="code-yeongyu/lazycodex" # or openai/codex
|
|
38
|
+
WORK_ROOT="$(mktemp -d /tmp/lazycodex-fix-XXXXXX)"
|
|
39
|
+
gh repo clone "$TARGET_REPO" "$WORK_ROOT/repo" -- --depth=1
|
|
40
|
+
cd "$WORK_ROOT/repo"
|
|
41
|
+
BASE_BRANCH="$(git remote show origin | sed -n '/HEAD branch/s/.*: //p')"
|
|
42
|
+
git fetch origin "$BASE_BRANCH" --depth=1
|
|
43
|
+
BRANCH_NAME="lazycodex/bug-fix-<short-slug>"
|
|
44
|
+
git worktree add "$WORK_ROOT/worktree" -b "$BRANCH_NAME" "origin/$BASE_BRANCH"
|
|
45
|
+
cd "$WORK_ROOT/worktree"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
If `gh` cannot clone, use `git clone --depth=1 "https://github.com/$TARGET_REPO" "$WORK_ROOT/repo"` and continue with the same worktree flow.
|
|
49
|
+
|
|
50
|
+
5. Reproduce the bug in the worktree through the real surface. Save exact command output to `/tmp/lazycodex-fix-<short-slug>-repro.log`.
|
|
51
|
+
6. Write or update a failing regression test before production changes. Confirm it fails for the bug, not for a missing fixture or typo.
|
|
52
|
+
7. Implement the smallest correct fix. Avoid refactors unless the fix cannot be made safely without one.
|
|
53
|
+
8. Run the regression test, adjacent tests, and the smallest real-surface QA command that proves the user-visible behavior changed.
|
|
54
|
+
9. Commit the verified fix before pushing. Inspect the status first so the PR cannot be empty or stale:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
git status --short
|
|
58
|
+
git add -A
|
|
59
|
+
git commit -m "fix: <short bug-fix summary>"
|
|
60
|
+
git log --oneline "origin/$BASE_BRANCH..HEAD"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
10. Generate the PR body with `scripts/create-pr-body.mjs`.
|
|
64
|
+
11. Ensure the generated label exists when the target repo allows label management. Keep the footer tag even when label creation is unavailable:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
LABEL_ARGS=()
|
|
68
|
+
if gh label create lazycodex-generated --repo "$TARGET_REPO" --color "7C3AED" --description "Created by LazyCodex" --force; then
|
|
69
|
+
LABEL_ARGS=(--label lazycodex-generated)
|
|
70
|
+
else
|
|
71
|
+
echo "Label management unavailable for $TARGET_REPO; keeping the footer tag only."
|
|
72
|
+
fi
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
12. Push to a writable remote, then create the PR. For upstream `openai/codex`, fork first and use the fork as the head repository:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
PUSH_REMOTE="origin"
|
|
79
|
+
PR_HEAD="$BRANCH_NAME"
|
|
80
|
+
if [ "$TARGET_REPO" = "openai/codex" ]; then
|
|
81
|
+
gh repo fork "$TARGET_REPO" --remote --remote-name fork
|
|
82
|
+
PUSH_REMOTE="fork"
|
|
83
|
+
GH_USER="$(gh api user --jq .login)"
|
|
84
|
+
PR_HEAD="$GH_USER:$BRANCH_NAME"
|
|
85
|
+
fi
|
|
86
|
+
|
|
87
|
+
git push -u "$PUSH_REMOTE" "$BRANCH_NAME"
|
|
88
|
+
gh pr create --repo "$TARGET_REPO" --base "$BASE_BRANCH" --head "$PR_HEAD" --title "<short fix title>" "${LABEL_ARGS[@]}" --body-file "$PR_BODY"
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
13. Clean up:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
cd /
|
|
95
|
+
git -C "$WORK_ROOT/repo" worktree remove "$WORK_ROOT/worktree"
|
|
96
|
+
find "$WORK_ROOT" -mindepth 1 -maxdepth 1 -exec rm -r -- {} +
|
|
97
|
+
rmdir "$WORK_ROOT"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Return the PR URL, the reproduction command, the verification command, and the cleanup receipt.
|
|
101
|
+
|
|
102
|
+
## PR Body Generator
|
|
103
|
+
|
|
104
|
+
Use the bundled script to generate the PR body. Create a JSON file with this shape:
|
|
105
|
+
|
|
106
|
+
```json
|
|
107
|
+
{
|
|
108
|
+
"title": "Fix short user-visible failure",
|
|
109
|
+
"targetRepository": "code-yeongyu/lazycodex",
|
|
110
|
+
"problem": "What is broken for the user.",
|
|
111
|
+
"reproductionLogs": "Exact failing command, log excerpt, or trace.",
|
|
112
|
+
"approach": "What changed and why this is the smallest correct fix.",
|
|
113
|
+
"confidence": "Why the diagnosis and fix are strongly supported.",
|
|
114
|
+
"risks": "Risk level and what could regress.",
|
|
115
|
+
"userVisibleBehaviorChanges": "What changes for the user after the PR.",
|
|
116
|
+
"verification": ["failing test before fix", "passing test after fix", "manual QA command"]
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Run:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
PR_INPUT="/tmp/lazycodex-fix-<short-slug>-pr.json"
|
|
124
|
+
PR_BODY="/tmp/lazycodex-fix-<short-slug>-pr.md"
|
|
125
|
+
node "<skill-root>/scripts/create-pr-body.mjs" "$PR_INPUT" "$PR_BODY"
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## PR Body Template
|
|
129
|
+
|
|
130
|
+
The generated body must follow this structure:
|
|
131
|
+
|
|
132
|
+
```markdown
|
|
133
|
+
## Problem Situation
|
|
134
|
+
[What failed for the user.]
|
|
135
|
+
|
|
136
|
+
## Reproduction Logs
|
|
137
|
+
[Exact failing command and relevant log excerpt.]
|
|
138
|
+
|
|
139
|
+
## Approach
|
|
140
|
+
[What changed and why.]
|
|
141
|
+
|
|
142
|
+
## Why I Am Confident
|
|
143
|
+
[Evidence that proves the root cause and fix.]
|
|
144
|
+
|
|
145
|
+
## Risks
|
|
146
|
+
[Risk level and possible regressions.]
|
|
147
|
+
|
|
148
|
+
## User-Visible Behavior Changes
|
|
149
|
+
[What users experience after this PR.]
|
|
150
|
+
|
|
151
|
+
## Verification
|
|
152
|
+
- [RED test output or repro before the fix]
|
|
153
|
+
- [GREEN test output after the fix]
|
|
154
|
+
- [Manual QA command and result]
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
This PR was debugged, implemented, and created with [LazyCodex](https://github.com/code-yeongyu/lazycodex).
|
|
158
|
+
Tag: lazycodex-generated
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Stop Conditions
|
|
162
|
+
|
|
163
|
+
Stop and ask one narrow question only when:
|
|
164
|
+
|
|
165
|
+
- the bug cannot be reproduced from available information
|
|
166
|
+
- target repository ownership remains ambiguous after comparing LazyCodex and upstream Codex evidence
|
|
167
|
+
- authentication is missing for pushing or creating the PR
|
|
168
|
+
- the fix requires a product decision rather than a technical correction
|
|
169
|
+
|
|
170
|
+
Do not open:
|
|
171
|
+
|
|
172
|
+
- a PR without a failing-before and passing-after test
|
|
173
|
+
- a PR without a real-surface QA command
|
|
174
|
+
- a PR without the `Tag: lazycodex-generated` footer
|
|
175
|
+
- a vague fix that does not identify the root cause
|
|
176
|
+
- a broad refactor disguised as a bug fix
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "lcx-contribute-bug-fix (omo)"
|
|
3
|
+
short_description: "Contribute verified LazyCodex or Codex bug-fix PRs"
|
|
4
|
+
search_terms:
|
|
5
|
+
- "lcx-contribute-bug-fix"
|
|
6
|
+
- "contribute a bug fix"
|
|
7
|
+
- "contribute to fix bug"
|
|
8
|
+
- "fix bug pr"
|
|
9
|
+
- "lazycodex fix"
|
|
10
|
+
- "omo-codex bug fix"
|
|
11
|
+
- "codex bug fix pr"
|
|
12
|
+
default_prompt: "Use $lcx-contribute-bug-fix to debug this LazyCodex or Codex bug, work from a fresh /tmp clone and worktree, implement the smallest verified fix, generate the PR body, apply the lazycodex-generated label, open the PR, and clean up."
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
3
|
+
import { pathToFileURL } from "node:url";
|
|
4
|
+
|
|
5
|
+
const REQUIRED_STRING_FIELDS = [
|
|
6
|
+
"title",
|
|
7
|
+
"targetRepository",
|
|
8
|
+
"problem",
|
|
9
|
+
"reproductionLogs",
|
|
10
|
+
"approach",
|
|
11
|
+
"confidence",
|
|
12
|
+
"risks",
|
|
13
|
+
"userVisibleBehaviorChanges",
|
|
14
|
+
];
|
|
15
|
+
|
|
16
|
+
function requireRecord(value) {
|
|
17
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
18
|
+
throw new Error("input must be a JSON object");
|
|
19
|
+
}
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function requireStringField(record, field) {
|
|
24
|
+
const value = record[field];
|
|
25
|
+
if (typeof value !== "string" || value.trim() === "") {
|
|
26
|
+
throw new Error(`${field} must be a non-empty string`);
|
|
27
|
+
}
|
|
28
|
+
return value.trim();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function requireVerification(record) {
|
|
32
|
+
const value = record.verification;
|
|
33
|
+
if (!Array.isArray(value) || value.length === 0) {
|
|
34
|
+
throw new Error("verification must be a non-empty string array");
|
|
35
|
+
}
|
|
36
|
+
return value.map((entry, index) => {
|
|
37
|
+
if (typeof entry !== "string" || entry.trim() === "") {
|
|
38
|
+
throw new Error(`verification[${index}] must be a non-empty string`);
|
|
39
|
+
}
|
|
40
|
+
return entry.trim();
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function parseInput(value) {
|
|
45
|
+
const record = requireRecord(value);
|
|
46
|
+
const strings = Object.fromEntries(REQUIRED_STRING_FIELDS.map((field) => [field, requireStringField(record, field)]));
|
|
47
|
+
return {
|
|
48
|
+
title: strings.title,
|
|
49
|
+
targetRepository: strings.targetRepository,
|
|
50
|
+
problem: strings.problem,
|
|
51
|
+
reproductionLogs: strings.reproductionLogs,
|
|
52
|
+
approach: strings.approach,
|
|
53
|
+
confidence: strings.confidence,
|
|
54
|
+
risks: strings.risks,
|
|
55
|
+
userVisibleBehaviorChanges: strings.userVisibleBehaviorChanges,
|
|
56
|
+
verification: requireVerification(record),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function bulletList(items) {
|
|
61
|
+
return items.map((item) => `- ${item}`).join("\n");
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export function createLazyCodexBugFixPrBody(value) {
|
|
65
|
+
const input = parseInput(value);
|
|
66
|
+
return `## Problem Situation
|
|
67
|
+
${input.problem}
|
|
68
|
+
|
|
69
|
+
## Reproduction Logs
|
|
70
|
+
${input.reproductionLogs}
|
|
71
|
+
|
|
72
|
+
## Approach
|
|
73
|
+
${input.approach}
|
|
74
|
+
|
|
75
|
+
## Why I Am Confident
|
|
76
|
+
${input.confidence}
|
|
77
|
+
|
|
78
|
+
## Risks
|
|
79
|
+
${input.risks}
|
|
80
|
+
|
|
81
|
+
## User-Visible Behavior Changes
|
|
82
|
+
${input.userVisibleBehaviorChanges}
|
|
83
|
+
|
|
84
|
+
## Verification
|
|
85
|
+
${bulletList(input.verification)}
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
This PR was debugged, implemented, and created with [LazyCodex](https://github.com/code-yeongyu/lazycodex).
|
|
89
|
+
Tag: lazycodex-generated
|
|
90
|
+
`;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
async function main() {
|
|
94
|
+
const [, , inputPath, outputPath] = process.argv;
|
|
95
|
+
if (typeof inputPath !== "string" || inputPath.trim() === "") {
|
|
96
|
+
throw new Error("usage: create-pr-body.mjs <input.json> <output.md>");
|
|
97
|
+
}
|
|
98
|
+
if (typeof outputPath !== "string" || outputPath.trim() === "") {
|
|
99
|
+
throw new Error("usage: create-pr-body.mjs <input.json> <output.md>");
|
|
100
|
+
}
|
|
101
|
+
const parsed = JSON.parse(await readFile(inputPath, "utf8"));
|
|
102
|
+
await writeFile(outputPath, createLazyCodexBugFixPrBody(parsed), "utf8");
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
|
|
106
|
+
await main();
|
|
107
|
+
}
|
|
@@ -1,21 +1,25 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lcx-report-bug
|
|
3
|
-
description: "Create a high-signal
|
|
3
|
+
description: "Create a high-signal bug issue or PR in the repo that owns the defect. Use this whenever the user asks to report, file, open, or triage a LazyCodex, lazycodex-ai, omo-codex, Codex plugin, or upstream Codex CLI bug, especially when they need source-backed root cause, reproduction steps, fix guidance, and GitHub routing."
|
|
4
4
|
metadata:
|
|
5
|
-
short-description:
|
|
5
|
+
short-description: Route LazyCodex or Codex bugs with source evidence
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# lcx-report-bug
|
|
9
9
|
|
|
10
|
-
You are a LazyCodex bug reporter. Produce one useful GitHub issue in English
|
|
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
|
+
|
|
12
|
+
- `code-yeongyu/lazycodex` for LazyCodex, lazycodex-ai, omo-codex, marketplace, bundled skill, hook, MCP, installer, or packaging bugs.
|
|
13
|
+
- `openai/codex` for upstream Codex CLI bugs that reproduce without LazyCodex or are caused by Codex core behavior.
|
|
11
14
|
|
|
12
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.
|
|
13
16
|
|
|
14
17
|
## Goal
|
|
15
18
|
|
|
16
|
-
Create or prepare a GitHub issue that includes:
|
|
19
|
+
Create or prepare a GitHub issue or PR that includes:
|
|
17
20
|
|
|
18
21
|
- clear title
|
|
22
|
+
- target repository decision
|
|
19
23
|
- environment
|
|
20
24
|
- reproducible steps
|
|
21
25
|
- expected behavior
|
|
@@ -23,24 +27,66 @@ Create or prepare a GitHub issue that includes:
|
|
|
23
27
|
- confirmed or strongly evidenced root cause
|
|
24
28
|
- fix approach, including files or components likely involved
|
|
25
29
|
- verification plan
|
|
30
|
+
- `lazycodex-generated` label and footer tag
|
|
26
31
|
|
|
27
32
|
## Required Workflow
|
|
28
33
|
|
|
29
34
|
1. Read the user's bug report and identify the affected surface: LazyCodex installer, Codex plugin, skill, hook, MCP, CLI alias, GitHub marketplace sync, or web/docs.
|
|
30
35
|
2. Invoke `$omo:debugging` for the investigation. If Codex exposes only unqualified skill names in the current session, invoke `$debugging` and state that it is the OMO debugging skill.
|
|
31
|
-
3.
|
|
36
|
+
3. Materialize upstream Codex source under `/tmp` before deciding ownership:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
CODEX_SRC="/tmp/openai-codex-source"
|
|
40
|
+
if [ ! -d "$CODEX_SRC/.git" ]; then
|
|
41
|
+
gh repo clone openai/codex "$CODEX_SRC" -- --depth=1
|
|
42
|
+
else
|
|
43
|
+
git -C "$CODEX_SRC" fetch --depth=1 origin
|
|
44
|
+
fi
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
If `gh` is unavailable, use `git clone --depth=1 https://github.com/openai/codex "$CODEX_SRC"`.
|
|
48
|
+
4. Follow the debugging skill far enough to gather runtime evidence:
|
|
32
49
|
- form at least three plausible hypotheses
|
|
33
50
|
- run the smallest reproduction that exercises the real surface
|
|
34
51
|
- confirm the root cause by observing the failing state
|
|
35
52
|
- identify the minimal fix path or maintainer action
|
|
36
|
-
|
|
53
|
+
5. Compare local LazyCodex evidence with `/tmp/openai-codex-source` before choosing the target repo. Cite exact files, commands, logs, or source paths that support the routing decision.
|
|
54
|
+
6. Choose the target repo:
|
|
55
|
+
- 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.
|
|
56
|
+
- 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.
|
|
57
|
+
- If ownership remains ambiguous after evidence gathering, do not guess. Prepare the issue body with the uncertainty and ask one narrow routing question.
|
|
58
|
+
7. Search for an existing issue in the selected repo before creating a new one. Search the other repo too when the ownership boundary is close:
|
|
37
59
|
|
|
38
60
|
```bash
|
|
39
|
-
|
|
61
|
+
TARGET_REPO="code-yeongyu/lazycodex" # or openai/codex
|
|
62
|
+
gh issue list --repo "$TARGET_REPO" --search "<short error or symptom>" --state open
|
|
40
63
|
```
|
|
41
64
|
|
|
42
|
-
|
|
43
|
-
|
|
65
|
+
8. If a matching open issue exists, add a comment with the new evidence instead of creating a duplicate.
|
|
66
|
+
9. Ensure the generated label exists in repositories you control:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
LABEL_ARGS=()
|
|
70
|
+
if gh label create lazycodex-generated --repo "$TARGET_REPO" --color "7C3AED" --description "Created by LazyCodex" --force; then
|
|
71
|
+
LABEL_ARGS=(--label lazycodex-generated)
|
|
72
|
+
else
|
|
73
|
+
echo "Label management unavailable for $TARGET_REPO; keeping the footer tag only."
|
|
74
|
+
fi
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
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.
|
|
78
|
+
10. If no matching issue exists, create the issue with `gh` and apply the `lazycodex-generated` label.
|
|
79
|
+
11. Create a PR only when the user asked for a PR, the fix is already implemented on a branch, or the smallest correct fix can be safely made in the selected repo. Apply the `lazycodex-generated` label to every PR created by this skill. Otherwise create an issue with fix guidance.
|
|
80
|
+
|
|
81
|
+
## Required Label And Footer
|
|
82
|
+
|
|
83
|
+
Every issue body, evidence comment, and PR body created by this skill must use the GitHub label `lazycodex-generated` when the artifact supports labels. It must also end with this footer. Do not put content after it.
|
|
84
|
+
|
|
85
|
+
```markdown
|
|
86
|
+
---
|
|
87
|
+
This issue or PR was generated by LazyCodex.
|
|
88
|
+
Tag: lazycodex-generated
|
|
89
|
+
```
|
|
44
90
|
|
|
45
91
|
## Issue Body Template
|
|
46
92
|
|
|
@@ -57,6 +103,12 @@ Write the issue body in English and keep it direct:
|
|
|
57
103
|
- Install method:
|
|
58
104
|
- Relevant config:
|
|
59
105
|
|
|
106
|
+
## Repository Decision
|
|
107
|
+
- Target repository:
|
|
108
|
+
- Why this belongs there:
|
|
109
|
+
- LazyCodex evidence:
|
|
110
|
+
- Upstream Codex source evidence from `/tmp/openai-codex-source`:
|
|
111
|
+
|
|
60
112
|
## Reproduction
|
|
61
113
|
1. [Exact command or UI action]
|
|
62
114
|
2. [Exact next step]
|
|
@@ -81,6 +133,40 @@ Write the issue body in English and keep it direct:
|
|
|
81
133
|
- [Check that reproduces the original failure]
|
|
82
134
|
- [Check that proves the fix]
|
|
83
135
|
- [Regression check for adjacent LazyCodex/Codex plugin behavior]
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
This issue or PR was generated by LazyCodex.
|
|
139
|
+
Tag: lazycodex-generated
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## PR Body Template
|
|
143
|
+
|
|
144
|
+
Use this when a PR is the right artifact:
|
|
145
|
+
|
|
146
|
+
```markdown
|
|
147
|
+
## Summary
|
|
148
|
+
[One or two sentences describing the fix and the user-visible failure it resolves.]
|
|
149
|
+
|
|
150
|
+
## Repository Decision
|
|
151
|
+
- Target repository:
|
|
152
|
+
- Why this belongs there:
|
|
153
|
+
- LazyCodex evidence:
|
|
154
|
+
- Upstream Codex source evidence from `/tmp/openai-codex-source`:
|
|
155
|
+
|
|
156
|
+
## Root Cause
|
|
157
|
+
[Confirmed cause. Cite runtime evidence and source paths.]
|
|
158
|
+
|
|
159
|
+
## Fix
|
|
160
|
+
[What changed and why.]
|
|
161
|
+
|
|
162
|
+
## Verification
|
|
163
|
+
- [Check that reproduced the original failure before the fix]
|
|
164
|
+
- [Check that passes after the fix]
|
|
165
|
+
- [Regression check for adjacent behavior]
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
This issue or PR was generated by LazyCodex.
|
|
169
|
+
Tag: lazycodex-generated
|
|
84
170
|
```
|
|
85
171
|
|
|
86
172
|
## GitHub Creation Path
|
|
@@ -90,18 +176,35 @@ Prefer `gh`:
|
|
|
90
176
|
```bash
|
|
91
177
|
ISSUE_BODY="/tmp/lcx-report-bug-$(date +%Y%m%d-%H%M%S).md"
|
|
92
178
|
$EDITOR "$ISSUE_BODY"
|
|
93
|
-
gh issue create --repo
|
|
179
|
+
gh issue create --repo "$TARGET_REPO" --title "<clear title>" "${LABEL_ARGS[@]}" --body-file "$ISSUE_BODY"
|
|
94
180
|
```
|
|
95
181
|
|
|
96
182
|
If `$EDITOR` is not usable, write the file with the available file-editing tool, then run the same `gh issue create` command.
|
|
97
183
|
|
|
98
|
-
|
|
184
|
+
For an existing issue:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
COMMENT_BODY="/tmp/lcx-report-bug-comment-$(date +%Y%m%d-%H%M%S).md"
|
|
188
|
+
gh issue comment "<issue-number>" --repo "$TARGET_REPO" --body-file "$COMMENT_BODY"
|
|
189
|
+
if [ "${#LABEL_ARGS[@]}" -gt 0 ]; then
|
|
190
|
+
gh issue edit "<issue-number>" --repo "$TARGET_REPO" --add-label lazycodex-generated
|
|
191
|
+
fi
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
For a PR from a branch pushed to the selected repo or fork:
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
PR_BODY="/tmp/lcx-report-bug-pr-$(date +%Y%m%d-%H%M%S).md"
|
|
198
|
+
gh pr create --repo "$TARGET_REPO" --title "<clear title>" "${LABEL_ARGS[@]}" --body-file "$PR_BODY"
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
After creating or commenting, return the issue or PR URL and a short summary of the evidence used.
|
|
99
202
|
|
|
100
203
|
## Browser use fallback
|
|
101
204
|
|
|
102
205
|
If `gh` is unavailable, unauthenticated, or blocked, use Browser Use against the real GitHub page:
|
|
103
206
|
|
|
104
|
-
1. Open `https://github.com/code-yeongyu/lazycodex/issues/new`.
|
|
207
|
+
1. Open the new issue page for the selected repo: `https://github.com/code-yeongyu/lazycodex/issues/new` or `https://github.com/openai/codex/issues/new`.
|
|
105
208
|
2. Fill the title and body from the template.
|
|
106
209
|
3. Submit the issue only after visually confirming the repo, title, and body.
|
|
107
210
|
4. Capture the resulting issue URL.
|
|
@@ -110,7 +213,7 @@ If `gh` is unavailable, unauthenticated, or blocked, use Browser Use against the
|
|
|
110
213
|
|
|
111
214
|
If Browser Use is unavailable but a desktop browser is open and authenticated, use Computer Use:
|
|
112
215
|
|
|
113
|
-
1. Navigate to `https://github.com/code-yeongyu/lazycodex/issues/new`.
|
|
216
|
+
1. Navigate to the new issue page for the selected repo: `https://github.com/code-yeongyu/lazycodex/issues/new` or `https://github.com/openai/codex/issues/new`.
|
|
114
217
|
2. Fill the title and body.
|
|
115
218
|
3. Verify the target repository and final text before submission.
|
|
116
219
|
4. Submit and capture the issue URL.
|
|
@@ -124,4 +227,6 @@ Do not file:
|
|
|
124
227
|
- a vague issue without reproduction steps
|
|
125
228
|
- an issue that claims a root cause not supported by runtime evidence
|
|
126
229
|
- a duplicate when commenting on an existing issue is enough
|
|
127
|
-
-
|
|
230
|
+
- an upstream Codex issue without checking `/tmp/openai-codex-source`
|
|
231
|
+
- a LazyCodex issue when the bug is proven to reproduce in clean upstream Codex
|
|
232
|
+
- a fix PR without a concrete branch, implemented fix, and verification result
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "lcx-report-bug (omo)"
|
|
3
|
-
short_description: "
|
|
3
|
+
short_description: "Route LazyCodex or Codex bugs with source evidence"
|
|
4
4
|
search_terms:
|
|
5
5
|
- "lcx-report-bug"
|
|
6
6
|
- "lazycodex bug"
|
|
7
7
|
- "lazycodex issue"
|
|
8
8
|
- "omo-codex bug"
|
|
9
|
-
|
|
9
|
+
- "openai codex bug"
|
|
10
|
+
- "codex upstream issue"
|
|
11
|
+
default_prompt: "Use $lcx-report-bug to investigate this LazyCodex or Codex bug, compare LazyCodex evidence with /tmp openai/codex source, choose the correct GitHub repo, and file an issue or PR with reproduction, root cause, fix guidance, and the lazycodex-generated label and footer."
|