@heidi-dang/oh-my-opencode 3.12.4 → 3.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -367
- package/dist/agents/atlas/agent.d.ts +1 -1
- package/dist/agents/atlas/default.d.ts +1 -1
- package/dist/agents/atlas/gemini.d.ts +1 -1
- package/dist/agents/atlas/gpt.d.ts +1 -1
- package/dist/agents/atlas/prompt-section-builder.d.ts +1 -1
- package/dist/agents/builtin-agents/atlas-agent.d.ts +4 -1
- package/dist/agents/builtin-agents/available-skills.d.ts +1 -1
- package/dist/agents/builtin-agents/general-agents.d.ts +4 -1
- package/dist/agents/builtin-agents/hephaestus-agent.d.ts +5 -1
- package/dist/agents/builtin-agents/model-resolution.d.ts +2 -0
- package/dist/agents/builtin-agents/resolve-file-uri.test.d.ts +1 -0
- package/dist/agents/builtin-agents/sisyphus-agent.d.ts +4 -1
- package/dist/agents/builtin-agents.d.ts +3 -3
- package/dist/agents/chat.d.ts +7 -0
- package/dist/agents/dynamic-agent-prompt-builder.test.d.ts +1 -0
- package/dist/agents/env-context.test.d.ts +1 -0
- package/dist/agents/hephaestus/agent.d.ts +19 -0
- package/dist/agents/hephaestus/agent.test.d.ts +1 -0
- package/dist/agents/hephaestus/gpt-5-3-codex.d.ts +21 -0
- package/dist/agents/hephaestus/gpt-5-4.d.ts +3 -0
- package/dist/agents/hephaestus/gpt.d.ts +3 -0
- package/dist/agents/hephaestus/index.d.ts +2 -0
- package/dist/agents/hephaestus.d.ts +1 -1
- package/dist/agents/index.d.ts +1 -1
- package/dist/agents/metis.d.ts +1 -1
- package/dist/agents/momus.d.ts +1 -1
- package/dist/agents/momus.test.d.ts +1 -0
- package/dist/agents/prometheus-prompt.test.d.ts +1 -0
- package/dist/agents/prompts/agent-role.d.ts +2 -0
- package/dist/agents/prompts/anti-patterns.d.ts +2 -0
- package/dist/agents/prompts/base-system.d.ts +1 -0
- package/dist/agents/prompts/execution-rules.d.ts +2 -0
- package/dist/agents/prompts/hard-blocks.d.ts +2 -0
- package/dist/agents/prompts/index.d.ts +6 -0
- package/dist/agents/{dynamic-agent-prompt-builder.d.ts → prompts/orchestration.d.ts} +2 -23
- package/dist/agents/prompts/skill-context.d.ts +2 -0
- package/dist/agents/runtime/action-validator.d.ts +31 -0
- package/dist/agents/runtime/agent-logger.d.ts +15 -0
- package/dist/agents/runtime/loop-guard.d.ts +2 -0
- package/dist/agents/runtime/verify-action.d.ts +58 -0
- package/dist/agents/sisyphus/default.d.ts +9 -0
- package/dist/agents/sisyphus/gemini.d.ts +20 -0
- package/dist/agents/sisyphus/gpt-5-4.d.ts +16 -0
- package/dist/agents/sisyphus/index.d.ts +11 -0
- package/dist/agents/sisyphus-junior/index.test.d.ts +1 -0
- package/dist/agents/sisyphus.d.ts +1 -1
- package/dist/agents/tool-restrictions.test.d.ts +1 -0
- package/dist/agents/types.d.ts +24 -6
- package/dist/agents/types.test.d.ts +1 -0
- package/dist/agents/utils.test.d.ts +1 -0
- package/dist/cli/cli-installer.test.d.ts +1 -0
- package/dist/cli/config-manager/write-omo-config.test.d.ts +1 -0
- package/dist/cli/config-manager.test.d.ts +1 -0
- package/dist/cli/doctor/checks/config.test.d.ts +1 -0
- package/dist/cli/doctor/checks/dependencies.test.d.ts +1 -0
- package/dist/cli/doctor/checks/edit-atomicity.d.ts +5 -0
- package/dist/cli/doctor/checks/issue-resolution.d.ts +7 -0
- package/dist/cli/doctor/checks/model-resolution.test.d.ts +1 -0
- package/dist/cli/doctor/checks/plan-compiler.d.ts +8 -0
- package/dist/cli/doctor/checks/progress.d.ts +8 -0
- package/dist/cli/doctor/checks/run-state-watchdog.d.ts +2 -0
- package/dist/cli/doctor/checks/system-loaded-version.test.d.ts +1 -0
- package/dist/cli/doctor/checks/system.test.d.ts +1 -0
- package/dist/cli/doctor/checks/tool-contract.d.ts +8 -0
- package/dist/cli/doctor/checks/tool-metadata.d.ts +2 -0
- package/dist/cli/doctor/constants.d.ts +3 -0
- package/dist/cli/doctor/format-default.test.d.ts +1 -0
- package/dist/cli/doctor/formatter.test.d.ts +1 -0
- package/dist/cli/doctor/runner.test.d.ts +1 -0
- package/dist/cli/doctor/types.d.ts +3 -0
- package/dist/cli/index.js +2542 -214
- package/dist/cli/index.test.d.ts +1 -0
- package/dist/cli/install.test.d.ts +1 -0
- package/dist/cli/mcp-oauth/index.test.d.ts +1 -0
- package/dist/cli/mcp-oauth/login.test.d.ts +1 -0
- package/dist/cli/mcp-oauth/logout.test.d.ts +1 -0
- package/dist/cli/mcp-oauth/status.test.d.ts +1 -0
- package/dist/cli/model-fallback.test.d.ts +1 -0
- package/dist/cli/provider-model-id-transform.test.d.ts +1 -0
- package/dist/cli/run/completion-continuation.test.d.ts +1 -0
- package/dist/cli/run/completion-verbose-logging.test.d.ts +1 -0
- package/dist/cli/run/completion.test.d.ts +1 -0
- package/dist/cli/run/continuation-state-marker.test.d.ts +1 -0
- package/dist/cli/run/event-handlers.test.d.ts +1 -0
- package/dist/cli/run/events.test.d.ts +1 -0
- package/dist/cli/run/integration.test.d.ts +1 -0
- package/dist/cli/run/json-output.test.d.ts +1 -0
- package/dist/cli/run/message-part-delta.test.d.ts +1 -0
- package/dist/cli/run/on-complete-hook.test.d.ts +1 -0
- package/dist/cli/run/opencode-binary-resolver.test.d.ts +1 -0
- package/dist/cli/run/poll-for-completion.test.d.ts +1 -0
- package/dist/cli/run/runner.test.d.ts +1 -0
- package/dist/cli/run/server-connection.test.d.ts +1 -0
- package/dist/cli/run/session-resolver.test.d.ts +1 -0
- package/dist/cli/run/stdin-suppression.test.d.ts +1 -0
- package/dist/cli/run/timestamp-output.test.d.ts +1 -0
- package/dist/config/schema/agent-names.d.ts +6 -3
- package/dist/config/schema/agent-overrides.d.ts +150 -30
- package/dist/config/schema/background-task.test.d.ts +1 -0
- package/dist/config/schema/categories.d.ts +21 -3
- package/dist/config/schema/categories.test.d.ts +1 -0
- package/dist/config/schema/fallback-models.d.ts +11 -1
- package/dist/config/schema/hooks.d.ts +7 -0
- package/dist/config/schema/oh-my-opencode-config.d.ts +151 -29
- package/dist/config/schema.test.d.ts +1 -0
- package/dist/create-hooks.d.ts +11 -1
- package/dist/create-managers.d.ts +2 -0
- package/dist/create-tools.d.ts +1 -1
- package/dist/features/background-agent/compaction-aware-message-resolver.test.d.ts +1 -0
- package/dist/features/background-agent/concurrency.test.d.ts +1 -0
- package/dist/features/background-agent/error-classifier.test.d.ts +1 -0
- package/dist/features/background-agent/fallback-retry-handler.test.d.ts +1 -0
- package/dist/features/background-agent/manager.d.ts +13 -0
- package/dist/features/background-agent/manager.polling.test.d.ts +1 -0
- package/dist/features/background-agent/manager.test.d.ts +1 -0
- package/dist/features/background-agent/process-cleanup.test.d.ts +1 -0
- package/dist/features/background-agent/session-idle-event-handler.test.d.ts +1 -0
- package/dist/features/background-agent/spawner/parent-directory-resolver.test.d.ts +1 -0
- package/dist/features/background-agent/spawner.test.d.ts +1 -0
- package/dist/features/background-agent/task-history.test.d.ts +1 -0
- package/dist/features/background-agent/task-poller.test.d.ts +1 -0
- package/dist/features/background-agent/types.d.ts +9 -4
- package/dist/features/boulder-state/storage.test.d.ts +1 -0
- package/dist/features/builtin-commands/commands.test.d.ts +1 -0
- package/dist/features/builtin-commands/templates/stop-continuation.test.d.ts +1 -0
- package/dist/features/builtin-skills/skills/git/git-commit.d.ts +2 -0
- package/dist/features/builtin-skills/skills/git/git-history.d.ts +1 -0
- package/dist/features/builtin-skills/skills/git/git-push-pr.d.ts +1 -0
- package/dist/features/builtin-skills/skills/git/git-rebase.d.ts +1 -0
- package/dist/features/builtin-skills/skills/git/git-shared.d.ts +2 -0
- package/dist/features/builtin-skills/skills.test.d.ts +1 -0
- package/dist/features/claude-code-mcp-loader/loader.test.d.ts +1 -0
- package/dist/features/claude-code-session-state/state.d.ts +4 -0
- package/dist/features/claude-code-session-state/state.test.d.ts +1 -0
- package/dist/features/claude-tasks/session-storage.test.d.ts +1 -0
- package/dist/features/claude-tasks/storage.test.d.ts +1 -0
- package/dist/features/claude-tasks/types.test.d.ts +1 -0
- package/dist/features/context-injector/collector.test.d.ts +1 -0
- package/dist/features/context-injector/injector.test.d.ts +1 -0
- package/dist/features/hook-message-injector/injector.d.ts +2 -0
- package/dist/features/hook-message-injector/injector.test.d.ts +1 -0
- package/dist/features/issue-resolution/state.d.ts +12 -0
- package/dist/features/issue-resolution/tests/integration.test.d.ts +1 -0
- package/dist/features/mcp-oauth/callback-server.test.d.ts +1 -0
- package/dist/features/mcp-oauth/dcr.test.d.ts +1 -0
- package/dist/features/mcp-oauth/discovery.test.d.ts +1 -0
- package/dist/features/mcp-oauth/provider.test.d.ts +1 -0
- package/dist/features/mcp-oauth/resource-indicator.test.d.ts +1 -0
- package/dist/features/mcp-oauth/schema.test.d.ts +1 -0
- package/dist/features/mcp-oauth/step-up.test.d.ts +1 -0
- package/dist/features/mcp-oauth/storage.test.d.ts +1 -0
- package/dist/features/opencode-skill-loader/agents-skills-global.test.d.ts +1 -0
- package/dist/features/opencode-skill-loader/async-loader.test.d.ts +1 -0
- package/dist/features/opencode-skill-loader/blocking.test.d.ts +1 -0
- package/dist/features/opencode-skill-loader/config-source-discovery.test.d.ts +1 -0
- package/dist/features/opencode-skill-loader/loader.test.d.ts +1 -0
- package/dist/features/opencode-skill-loader/merger.test.d.ts +1 -0
- package/dist/features/opencode-skill-loader/skill-content.test.d.ts +1 -0
- package/dist/features/pr-state/storage.d.ts +10 -0
- package/dist/features/run-continuation-state/storage.test.d.ts +1 -0
- package/dist/features/run-state-watchdog/index.d.ts +1 -0
- package/dist/features/run-state-watchdog/manager.d.ts +31 -0
- package/dist/features/run-state-watchdog/manager.test.d.ts +1 -0
- package/dist/features/run-state-watchdog/reconnect.test.d.ts +1 -0
- package/dist/features/skill-mcp-manager/env-cleaner.test.d.ts +1 -0
- package/dist/features/skill-mcp-manager/manager.test.d.ts +1 -0
- package/dist/features/task-toast-manager/manager.d.ts +9 -0
- package/dist/features/task-toast-manager/manager.test.d.ts +1 -0
- package/dist/features/task-toast-manager/types.d.ts +5 -0
- package/dist/features/tmux-subagent/action-executor.test.d.ts +1 -0
- package/dist/features/tmux-subagent/decision-engine.test.d.ts +1 -0
- package/dist/features/tmux-subagent/layout-config.test.d.ts +1 -0
- package/dist/features/tmux-subagent/manager.test.d.ts +1 -0
- package/dist/features/tmux-subagent/polling-manager.test.d.ts +1 -0
- package/dist/features/tool-metadata-store/index.test.d.ts +1 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/empty-content-recovery-sdk.test.d.ts +1 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/executor.test.d.ts +1 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/parser.test.d.ts +1 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/pruning-deduplication.test.d.ts +1 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/recovery-deduplication.test.d.ts +1 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/recovery-hook.test.d.ts +1 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/storage.test.d.ts +1 -0
- package/dist/hooks/anthropic-context-window-limit-recovery/summarize-retry-strategy.test.d.ts +1 -0
- package/dist/hooks/anthropic-effort/index.test.d.ts +1 -0
- package/dist/hooks/atlas/index.test.d.ts +1 -0
- package/dist/hooks/auto-slash-command/constants.test.d.ts +1 -0
- package/dist/hooks/auto-slash-command/detector.test.d.ts +1 -0
- package/dist/hooks/auto-slash-command/executor.test.d.ts +1 -0
- package/dist/hooks/auto-slash-command/index.test.d.ts +1 -0
- package/dist/hooks/auto-update-checker/checker/pinned-version-updater.test.d.ts +1 -0
- package/dist/hooks/auto-update-checker/checker/plugin-entry.test.d.ts +1 -0
- package/dist/hooks/auto-update-checker/checker.test.d.ts +1 -0
- package/dist/hooks/auto-update-checker/hook/background-update-check.test.d.ts +1 -0
- package/dist/hooks/auto-update-checker/hook.test.d.ts +1 -0
- package/dist/hooks/auto-update-checker/index.test.d.ts +1 -0
- package/dist/hooks/category-skill-reminder/formatter.d.ts +1 -1
- package/dist/hooks/category-skill-reminder/hook.d.ts +1 -1
- package/dist/hooks/category-skill-reminder/index.test.d.ts +1 -0
- package/dist/hooks/claude-code-hooks/execute-http-hook.test.d.ts +1 -0
- package/dist/hooks/claude-code-hooks/stop.test.d.ts +1 -0
- package/dist/hooks/claude-code-hooks/transcript.test.d.ts +1 -0
- package/dist/hooks/claude-code-hooks/user-prompt-submit.test.d.ts +1 -0
- package/dist/hooks/comment-checker/cli.test.d.ts +1 -0
- package/dist/hooks/comment-checker/hook.apply-patch.test.d.ts +1 -0
- package/dist/hooks/comment-checker/pending-calls.test.d.ts +1 -0
- package/dist/hooks/compaction-context-injector/index.test.d.ts +1 -0
- package/dist/hooks/compaction-todo-preserver/index.test.d.ts +1 -0
- package/dist/hooks/context-window-monitor.test.d.ts +1 -0
- package/dist/hooks/delegate-task-retry/index.test.d.ts +1 -0
- package/dist/hooks/directory-agents-injector/injector.test.d.ts +1 -0
- package/dist/hooks/directory-readme-injector/injector.test.d.ts +1 -0
- package/dist/hooks/edit-error-recovery/hook.d.ts +2 -1
- package/dist/hooks/edit-error-recovery/index.test.d.ts +1 -0
- package/dist/hooks/edit-safeguard/hook.d.ts +2 -0
- package/dist/hooks/execution-journal/hook.d.ts +19 -0
- package/dist/hooks/execution-journal/index.d.ts +1 -0
- package/dist/hooks/hashline-read-enhancer/index.test.d.ts +1 -0
- package/dist/hooks/index.d.ts +11 -3
- package/dist/hooks/json-error-recovery/index.test.d.ts +1 -0
- package/dist/hooks/keyword-detector/constants.d.ts +1 -0
- package/dist/hooks/keyword-detector/detector.d.ts +1 -1
- package/dist/hooks/keyword-detector/index.test.d.ts +1 -0
- package/dist/hooks/keyword-detector/issue.d.ts +2 -0
- package/dist/hooks/model-fallback/hook.test.d.ts +1 -0
- package/dist/hooks/no-hephaestus-non-gpt/index.test.d.ts +1 -0
- package/dist/hooks/no-sisyphus-gpt/index.test.d.ts +1 -0
- package/dist/hooks/non-interactive-env/index.test.d.ts +1 -0
- package/dist/hooks/plan-enforcement/hook.d.ts +29 -0
- package/dist/hooks/plan-enforcement/hook.test.d.ts +1 -0
- package/dist/hooks/plan-enforcement/index.d.ts +1 -0
- package/dist/hooks/preemptive-compaction.test.d.ts +1 -0
- package/dist/hooks/prometheus-md-only/index.test.d.ts +1 -0
- package/dist/hooks/question-label-truncator/index.test.d.ts +1 -0
- package/dist/hooks/ralph-loop/completion-handler.d.ts +14 -0
- package/dist/hooks/ralph-loop/completion-promise-detector.d.ts +1 -1
- package/dist/hooks/ralph-loop/completion-promise-detector.test.d.ts +1 -0
- package/dist/hooks/ralph-loop/constants.d.ts +1 -0
- package/dist/hooks/ralph-loop/index.test.d.ts +1 -0
- package/dist/hooks/ralph-loop/loop-state-controller.d.ts +2 -0
- package/dist/hooks/ralph-loop/ralph-loop-event-handler.d.ts +2 -0
- package/dist/hooks/ralph-loop/reset-strategy-race-condition.test.d.ts +1 -0
- package/dist/hooks/ralph-loop/session-event-handler.d.ts +12 -0
- package/dist/hooks/ralph-loop/types.d.ts +5 -1
- package/dist/hooks/ralph-loop/ulw-loop-verification.test.d.ts +1 -0
- package/dist/hooks/read-image-resizer/hook.test.d.ts +1 -0
- package/dist/hooks/read-image-resizer/image-dimensions.test.d.ts +1 -0
- package/dist/hooks/read-image-resizer/image-resizer.test.d.ts +1 -0
- package/dist/hooks/rules-injector/finder.test.d.ts +1 -0
- package/dist/hooks/rules-injector/injector.test.d.ts +1 -0
- package/dist/hooks/rules-injector/output-path.test.d.ts +1 -0
- package/dist/hooks/rules-injector/parser.test.d.ts +1 -0
- package/dist/hooks/run-state-watchdog/hook.d.ts +5 -0
- package/dist/hooks/run-state-watchdog/index.d.ts +1 -0
- package/dist/hooks/runtime-enforcement/hook.d.ts +10 -0
- package/dist/hooks/runtime-enforcement/hook.test.d.ts +1 -0
- package/dist/hooks/runtime-enforcement/index.d.ts +1 -0
- package/dist/hooks/runtime-enforcement/synthetic-injection.test.d.ts +1 -0
- package/dist/hooks/runtime-fallback/index.test.d.ts +1 -0
- package/dist/hooks/semantic-loop-guard/hook.d.ts +10 -0
- package/dist/hooks/semantic-loop-guard/hook.test.d.ts +1 -0
- package/dist/hooks/semantic-loop-guard/index.d.ts +1 -0
- package/dist/hooks/session-notification-input-needed.test.d.ts +1 -0
- package/dist/hooks/session-notification.test.d.ts +1 -0
- package/dist/hooks/session-recovery/detect-error-type.test.d.ts +1 -0
- package/dist/hooks/session-recovery/index.test.d.ts +1 -0
- package/dist/hooks/session-recovery/recover-empty-content-message-sdk.test.d.ts +1 -0
- package/dist/hooks/session-recovery/resume.test.d.ts +1 -0
- package/dist/hooks/session-recovery/storage/readers-from-sdk.test.d.ts +1 -0
- package/dist/hooks/start-work/index.test.d.ts +1 -0
- package/dist/hooks/start-work/parse-user-request.test.d.ts +1 -0
- package/dist/hooks/start-work/worktree-detector.test.d.ts +1 -0
- package/dist/hooks/stop-continuation-guard/index.test.d.ts +1 -0
- package/dist/hooks/task-reminder/index.test.d.ts +1 -0
- package/dist/hooks/task-resume-info/index.test.d.ts +1 -0
- package/dist/hooks/tasks-todowrite-disabler/index.test.d.ts +1 -0
- package/dist/hooks/think-mode/index.test.d.ts +1 -0
- package/dist/hooks/think-mode/switcher.test.d.ts +1 -0
- package/dist/hooks/todo-continuation-enforcer/continuation-injection.test.d.ts +1 -0
- package/dist/hooks/todo-continuation-enforcer/pending-question-detection.test.d.ts +1 -0
- package/dist/hooks/todo-continuation-enforcer/todo-continuation-enforcer.test.d.ts +1 -0
- package/dist/hooks/tool-contract/hook.d.ts +19 -0
- package/dist/hooks/tool-contract/hook.test.d.ts +1 -0
- package/dist/hooks/tool-contract/index.d.ts +1 -0
- package/dist/hooks/tool-output-truncator.test.d.ts +1 -0
- package/dist/hooks/unstable-agent-babysitter/index.test.d.ts +1 -0
- package/dist/hooks/write-existing-file-guard/index.test.d.ts +1 -0
- package/dist/hooks/xai-usage-patch/hook.d.ts +20 -0
- package/dist/hooks/xai-usage-patch/hook.test.d.ts +1 -0
- package/dist/index.compaction-model-agnostic.static.test.d.ts +1 -0
- package/dist/index.js +4980 -14453
- package/dist/index.test.d.ts +1 -0
- package/dist/mcp/index.test.d.ts +1 -0
- package/dist/mcp/websearch.test.d.ts +1 -0
- package/dist/oh-my-opencode.schema.json +622 -15
- package/dist/plugin/available-categories.d.ts +1 -1
- package/dist/plugin/chat-headers.test.d.ts +1 -0
- package/dist/plugin/chat-message.test.d.ts +1 -0
- package/dist/plugin/chat-params.test.d.ts +1 -0
- package/dist/plugin/event.model-fallback.test.d.ts +1 -0
- package/dist/plugin/event.test.d.ts +1 -0
- package/dist/plugin/hooks/create-core-hooks.d.ts +10 -0
- package/dist/plugin/hooks/create-session-hooks.d.ts +4 -1
- package/dist/plugin/hooks/create-skill-hooks.d.ts +1 -1
- package/dist/plugin/hooks/create-tool-guard-hooks.d.ts +7 -1
- package/dist/plugin/recent-synthetic-idles.test.d.ts +1 -0
- package/dist/plugin/session-agent-resolver.test.d.ts +1 -0
- package/dist/plugin/session-status-normalizer.test.d.ts +1 -0
- package/dist/plugin/skill-context.d.ts +1 -1
- package/dist/plugin/tool-execute-before-session-notification.test.d.ts +1 -0
- package/dist/plugin/tool-execute-before.test.d.ts +1 -0
- package/dist/plugin/tool-normalization.test.d.ts +1 -0
- package/dist/plugin/tool-registry.d.ts +1 -1
- package/dist/plugin/truth-model-integration.test.d.ts +1 -0
- package/dist/plugin/ultrawork-db-model-override.test.d.ts +1 -0
- package/dist/plugin/ultrawork-model-override.test.d.ts +1 -0
- package/dist/plugin-config.test.d.ts +1 -0
- package/dist/plugin-handlers/agent-key-remapper.test.d.ts +1 -0
- package/dist/plugin-handlers/config-handler-formatter.test.d.ts +1 -0
- package/dist/plugin-handlers/config-handler.test.d.ts +1 -0
- package/dist/plugin-handlers/mcp-config-handler.test.d.ts +1 -0
- package/dist/plugin-handlers/plan-model-inheritance.test.d.ts +1 -0
- package/dist/plugin-handlers/prometheus-agent-config-builder.d.ts +3 -2
- package/dist/plugin-handlers/tool-config-handler.test.d.ts +1 -0
- package/dist/runtime/journal.d.ts +33 -0
- package/dist/runtime/plan-compiler.d.ts +20 -0
- package/dist/runtime/plan-compiler.test.d.ts +1 -0
- package/dist/runtime/startup-validation.d.ts +7 -0
- package/dist/runtime/state-ledger.d.ts +52 -0
- package/dist/runtime/tools/complete-task.d.ts +4 -0
- package/dist/runtime/tools/fs-safe.contract.test.d.ts +1 -0
- package/dist/runtime/tools/fs-safe.d.ts +1 -0
- package/dist/runtime/tools/gh-safe.d.ts +1 -0
- package/dist/runtime/tools/git-safe.d.ts +1 -0
- package/dist/runtime/tools/index.d.ts +8 -0
- package/dist/runtime/tools/plan.d.ts +3 -0
- package/dist/runtime/tools/query-ledger.d.ts +3 -0
- package/dist/runtime/tools/registry.d.ts +8 -0
- package/dist/runtime/tools/report-issue-verification.d.ts +1 -0
- package/dist/runtime/tools/verify.d.ts +1 -0
- package/dist/runtime/truth-model.test.d.ts +1 -0
- package/dist/runtime/vcs-detection.test.d.ts +1 -0
- package/dist/shared/active-task-storage.d.ts +15 -0
- package/dist/shared/agent-config-integration.test.d.ts +1 -0
- package/dist/shared/agent-display-names.test.d.ts +1 -0
- package/dist/shared/agent-variant.test.d.ts +1 -0
- package/dist/shared/claude-config-dir.test.d.ts +1 -0
- package/dist/shared/connected-providers-cache.test.d.ts +1 -0
- package/dist/shared/deep-merge.test.d.ts +1 -0
- package/dist/shared/dynamic-truncator.test.d.ts +1 -0
- package/dist/shared/external-plugin-detector.test.d.ts +1 -0
- package/dist/shared/file-utils.test.d.ts +1 -0
- package/dist/shared/first-message-variant.test.d.ts +1 -0
- package/dist/shared/frontmatter.test.d.ts +1 -0
- package/dist/shared/git-worktree/collect-git-diff-stats.test.d.ts +1 -0
- package/dist/shared/git-worktree/git-worktree.test.d.ts +1 -0
- package/dist/shared/git-worktree/parse-status-porcelain-line.test.d.ts +1 -0
- package/dist/shared/index.d.ts +2 -0
- package/dist/shared/jsonc-parser.test.d.ts +1 -0
- package/dist/shared/merge-categories.test.d.ts +1 -0
- package/dist/shared/migration.test.d.ts +1 -0
- package/dist/shared/model-availability.d.ts +6 -0
- package/dist/shared/model-availability.test.d.ts +1 -0
- package/dist/shared/model-error-classifier.d.ts +5 -0
- package/dist/shared/model-error-classifier.test.d.ts +1 -0
- package/dist/shared/model-format-normalizer.test.d.ts +1 -0
- package/dist/shared/model-normalization.test.d.ts +1 -0
- package/dist/shared/model-requirements.d.ts +6 -0
- package/dist/shared/model-requirements.test.d.ts +1 -0
- package/dist/shared/model-resolution-acceptance.test.d.ts +1 -0
- package/dist/shared/model-resolution-pipeline.d.ts +5 -1
- package/dist/shared/model-resolution-pipeline.test.d.ts +1 -0
- package/dist/shared/model-resolution-tracker.d.ts +17 -0
- package/dist/shared/model-resolution-types.d.ts +7 -1
- package/dist/shared/model-resolver.d.ts +10 -3
- package/dist/shared/model-resolver.test.d.ts +1 -0
- package/dist/shared/model-suggestion-retry.test.d.ts +1 -0
- package/dist/shared/normalize-sdk-response.test.d.ts +1 -0
- package/dist/shared/opencode-config-dir.test.d.ts +1 -0
- package/dist/shared/opencode-http-api.test.d.ts +1 -0
- package/dist/shared/opencode-message-dir.test.d.ts +1 -0
- package/dist/shared/opencode-server-auth.test.d.ts +1 -0
- package/dist/shared/opencode-storage-detection.test.d.ts +1 -0
- package/dist/shared/opencode-version.test.d.ts +1 -0
- package/dist/shared/pattern-matcher.test.d.ts +1 -0
- package/dist/shared/permission-compat.test.d.ts +1 -0
- package/dist/shared/plugin-command-discovery.test.d.ts +1 -0
- package/dist/shared/port-utils.test.d.ts +1 -0
- package/dist/shared/prompt-tools.test.d.ts +1 -0
- package/dist/shared/read-permission-tracker.d.ts +15 -0
- package/dist/shared/safe-create-hook.test.d.ts +1 -0
- package/dist/shared/session-cursor.test.d.ts +1 -0
- package/dist/shared/session-directory-resolver.test.d.ts +1 -0
- package/dist/shared/session-model-state.test.d.ts +1 -0
- package/dist/shared/session-tools-store.test.d.ts +1 -0
- package/dist/shared/shell-env.test.d.ts +1 -0
- package/dist/shared/skill-path-resolver.test.d.ts +1 -0
- package/dist/shared/system-directive.test.d.ts +1 -0
- package/dist/shared/tmux/tmux-utils/layout.test.d.ts +1 -0
- package/dist/shared/tmux/tmux-utils.test.d.ts +1 -0
- package/dist/shared/tool-name.test.d.ts +1 -0
- package/dist/shared/truncate-description.test.d.ts +1 -0
- package/dist/shared/verify-task-completion.d.ts +1 -0
- package/dist/tools/background-task/create-background-output.blocking.test.d.ts +1 -0
- package/dist/tools/background-task/create-background-task.test.d.ts +1 -0
- package/dist/tools/background-task/tools.test.d.ts +1 -0
- package/dist/tools/call-omo-agent/background-agent-executor.test.d.ts +1 -0
- package/dist/tools/call-omo-agent/background-executor.test.d.ts +1 -0
- package/dist/tools/call-omo-agent/session-creator.test.d.ts +1 -0
- package/dist/tools/call-omo-agent/subagent-session-creator.test.d.ts +1 -0
- package/dist/tools/call-omo-agent/sync-executor.test.d.ts +1 -0
- package/dist/tools/call-omo-agent/tools.test.d.ts +1 -0
- package/dist/tools/delegate-task/background-continuation.test.d.ts +1 -0
- package/dist/tools/delegate-task/background-task.d.ts +1 -1
- package/dist/tools/delegate-task/background-task.test.d.ts +1 -0
- package/dist/tools/delegate-task/category-resolver.d.ts +1 -0
- package/dist/tools/delegate-task/category-resolver.test.d.ts +1 -0
- package/dist/tools/delegate-task/constants.d.ts +1 -1
- package/dist/tools/delegate-task/metadata-await.test.d.ts +1 -0
- package/dist/tools/delegate-task/metadata-model-unification.test.d.ts +1 -0
- package/dist/tools/delegate-task/model-selection.d.ts +2 -0
- package/dist/tools/delegate-task/subagent-resolver.d.ts +2 -1
- package/dist/tools/delegate-task/subagent-resolver.test.d.ts +1 -0
- package/dist/tools/delegate-task/sync-continuation.test.d.ts +1 -0
- package/dist/tools/delegate-task/sync-poll-timeout.test.d.ts +1 -0
- package/dist/tools/delegate-task/sync-prompt-sender.d.ts +1 -0
- package/dist/tools/delegate-task/sync-prompt-sender.test.d.ts +1 -0
- package/dist/tools/delegate-task/sync-result-fetcher.test.d.ts +1 -0
- package/dist/tools/delegate-task/sync-session-poller.test.d.ts +1 -0
- package/dist/tools/delegate-task/sync-task.d.ts +1 -1
- package/dist/tools/delegate-task/sync-task.test.d.ts +1 -0
- package/dist/tools/delegate-task/timing.test.d.ts +1 -0
- package/dist/tools/delegate-task/token-limiter.test.d.ts +1 -0
- package/dist/tools/delegate-task/tools.test.d.ts +1 -0
- package/dist/tools/delegate-task/types.d.ts +1 -1
- package/dist/tools/delegate-task/unstable-agent-task.test.d.ts +1 -0
- package/dist/tools/delegate-task/unstable-agent-timeout.test.d.ts +1 -0
- package/dist/tools/glob/cli.test.d.ts +1 -0
- package/dist/tools/grep/downloader.test.d.ts +1 -0
- package/dist/tools/grep/result-formatter.test.d.ts +1 -0
- package/dist/tools/hashline-edit/diff-utils.test.d.ts +1 -0
- package/dist/tools/hashline-edit/edit-operations.test.d.ts +1 -0
- package/dist/tools/hashline-edit/edit-text-normalization.test.d.ts +1 -0
- package/dist/tools/hashline-edit/hash-computation.test.d.ts +1 -0
- package/dist/tools/hashline-edit/normalize-edits.test.d.ts +1 -0
- package/dist/tools/hashline-edit/tools.test.d.ts +1 -0
- package/dist/tools/hashline-edit/validation.test.d.ts +1 -0
- package/dist/tools/look-at/create-look-at-error-handling.test.d.ts +1 -0
- package/dist/tools/look-at/create-look-at-image-data.test.d.ts +1 -0
- package/dist/tools/look-at/create-look-at-model-passthrough.test.d.ts +1 -0
- package/dist/tools/look-at/create-look-at-sync-prompt.test.d.ts +1 -0
- package/dist/tools/look-at/create-look-at-unhandled-error.test.d.ts +1 -0
- package/dist/tools/look-at/image-converter.test.d.ts +1 -0
- package/dist/tools/look-at/mime-type-inference.test.d.ts +1 -0
- package/dist/tools/look-at/normalize-args.test.d.ts +1 -0
- package/dist/tools/look-at/session-poller.test.d.ts +1 -0
- package/dist/tools/look-at/tools.test.d.ts +7 -0
- package/dist/tools/look-at/validate-args.test.d.ts +1 -0
- package/dist/tools/lsp/client.test.d.ts +1 -0
- package/dist/tools/lsp/config.test.d.ts +1 -0
- package/dist/tools/lsp/lsp-client-wrapper.d.ts +3 -0
- package/dist/tools/lsp/lsp-process.test.d.ts +1 -0
- package/dist/tools/lsp/server-config-loader.test.d.ts +1 -0
- package/dist/tools/lsp/utils.test.d.ts +1 -0
- package/dist/tools/session-manager/storage.test.d.ts +1 -0
- package/dist/tools/session-manager/tools.test.d.ts +1 -0
- package/dist/tools/session-manager/utils.test.d.ts +1 -0
- package/dist/tools/skill/tools.test.agent-restriction.d.ts +1 -0
- package/dist/tools/skill/tools.test.d.ts +1 -0
- package/dist/tools/skill/tools.test.description.d.ts +1 -0
- package/dist/tools/skill/tools.test.mcp-schema.d.ts +1 -0
- package/dist/tools/skill/tools.test.ordering.d.ts +1 -0
- package/dist/tools/skill/tools.test.utils.d.ts +10 -0
- package/dist/tools/skill-mcp/builtin-mcp-hint.test.d.ts +1 -0
- package/dist/tools/skill-mcp/tools.test.d.ts +1 -0
- package/dist/tools/slashcommand/command-discovery.test.d.ts +1 -0
- package/dist/tools/slashcommand/command-output-formatter.test.d.ts +1 -0
- package/dist/tools/slashcommand/index.test.d.ts +1 -0
- package/dist/tools/task/task-create-input.test.d.ts +1 -0
- package/dist/tools/task/task-create.test.d.ts +1 -0
- package/dist/tools/task/task-delete-input.test.d.ts +1 -0
- package/dist/tools/task/task-get-input.test.d.ts +1 -0
- package/dist/tools/task/task-get.test.d.ts +1 -0
- package/dist/tools/task/task-list-input.test.d.ts +1 -0
- package/dist/tools/task/task-list.test.d.ts +1 -0
- package/dist/tools/task/task-schema-core.test.d.ts +1 -0
- package/dist/tools/task/task-schema-fields.test.d.ts +1 -0
- package/dist/tools/task/task-status.test.d.ts +1 -0
- package/dist/tools/task/task-update-input.test.d.ts +1 -0
- package/dist/tools/task/task-update.test.d.ts +1 -0
- package/dist/tools/task/todo-sync-all-fetch.test.d.ts +1 -0
- package/dist/tools/task/todo-sync-all-write.test.d.ts +1 -0
- package/dist/tools/task/todo-sync-sync.test.d.ts +1 -0
- package/dist/tools/task/todo-sync-update.test.d.ts +1 -0
- package/dist/tools/task/todo-sync.test.d.ts +1 -0
- package/dist/utils/context-trimmer.d.ts +21 -0
- package/dist/utils/safety-tool-result.d.ts +31 -0
- package/dist/utils/tool-contract-wrapper.d.ts +10 -0
- package/package.json +17 -16
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -48,12 +48,25 @@ export declare class BackgroundManager {
|
|
|
48
48
|
enableParentSessionNotifications?: boolean;
|
|
49
49
|
});
|
|
50
50
|
launch(input: LaunchInput): Promise<BackgroundTask>;
|
|
51
|
+
private persistActiveTasks;
|
|
51
52
|
private processKey;
|
|
52
53
|
private startTask;
|
|
53
54
|
getTask(id: string): BackgroundTask | undefined;
|
|
54
55
|
getTasksByParentSession(sessionID: string): BackgroundTask[];
|
|
55
56
|
getAllDescendantTasks(sessionID: string): BackgroundTask[];
|
|
56
57
|
findBySession(sessionID: string): BackgroundTask | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Checks if a session has any running or pending sub-tasks (recursively).
|
|
60
|
+
*/
|
|
61
|
+
hasActiveDescendants(sessionID: string): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Returns the total count of running or pending sub-tasks for a session (recursively).
|
|
64
|
+
*/
|
|
65
|
+
getActiveDescendantCount(sessionID: string): number;
|
|
66
|
+
/**
|
|
67
|
+
* Returns the descriptions of all active sub-tasks for a session (recursively).
|
|
68
|
+
*/
|
|
69
|
+
getActiveDescendantDescriptions(sessionID: string): string[];
|
|
57
70
|
private getConcurrencyKeyFromInput;
|
|
58
71
|
/**
|
|
59
72
|
* Track a task created elsewhere (e.g., from task) for notification tracking.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -6,6 +6,9 @@ export interface TaskProgress {
|
|
|
6
6
|
lastUpdate: Date;
|
|
7
7
|
lastMessage?: string;
|
|
8
8
|
lastMessageAt?: Date;
|
|
9
|
+
phase?: string;
|
|
10
|
+
percent?: number;
|
|
11
|
+
message?: string;
|
|
9
12
|
}
|
|
10
13
|
export interface BackgroundTask {
|
|
11
14
|
id: string;
|
|
@@ -47,10 +50,10 @@ export interface BackgroundTask {
|
|
|
47
50
|
isUnstableAgent?: boolean;
|
|
48
51
|
/** Category used for this task (e.g., 'quick', 'visual-engineering') */
|
|
49
52
|
category?: string;
|
|
50
|
-
/**
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
|
|
53
|
+
/** Explicit fallback model to use if the primary model fails */
|
|
54
|
+
fallbackModel?: string;
|
|
55
|
+
/** Files affected by this task (collected from sub-agent session) */
|
|
56
|
+
affectedFiles?: string[];
|
|
54
57
|
}
|
|
55
58
|
export interface LaunchInput {
|
|
56
59
|
description: string;
|
|
@@ -71,6 +74,7 @@ export interface LaunchInput {
|
|
|
71
74
|
};
|
|
72
75
|
/** Fallback chain for runtime retry on model errors */
|
|
73
76
|
fallbackChain?: FallbackEntry[];
|
|
77
|
+
fallbackModel?: string;
|
|
74
78
|
isUnstableAgent?: boolean;
|
|
75
79
|
skills?: string[];
|
|
76
80
|
skillContent?: string;
|
|
@@ -87,4 +91,5 @@ export interface ResumeInput {
|
|
|
87
91
|
};
|
|
88
92
|
parentAgent?: string;
|
|
89
93
|
parentTools?: Record<string, boolean>;
|
|
94
|
+
fallbackModel?: string;
|
|
90
95
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const GIT_COMMIT_PHASES = "\n## PHASE 0: Parallel Context Gathering (MANDATORY FIRST STEP)\n\n<parallel_analysis>\n**Execute ALL of the following commands IN PARALLEL to minimize latency:**\n\n\\`\\`\\`bash\n# Group 1: Current state\ngit status\ngit diff --staged --stat\ngit diff --stat\n\n# Group 2: History context \ngit log -30 --oneline\ngit log -30 --pretty=format:\"%s\"\n\n# Group 3: Branch context\ngit branch --show-current\ngit merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null\ngit rev-parse --abbrev-ref @{upstream} 2>/dev/null || echo \"NO_UPSTREAM\"\ngit log --oneline $(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null)..HEAD 2>/dev/null\n\\`\\`\\`\n\n**Capture these data points simultaneously:**\n1. What files changed (staged vs unstaged)\n2. Recent 30 commit messages for style detection\n3. Branch position relative to main/master\n4. Whether branch has upstream tracking\n5. Commits that would go in PR (local only)\n</parallel_analysis>\n\n---\n\n## PHASE 1: Style Detection (BLOCKING - MUST OUTPUT BEFORE PROCEEDING)\n\n<style_detection>\n**THIS PHASE HAS MANDATORY OUTPUT** - You MUST print the analysis result before moving to Phase 2.\n\n### 1.1 Language Detection\n\n\\`\\`\\`\nCount from git log -30:\n- Korean characters: N commits\n- English only: M commits\n- Mixed: K commits\n\nDECISION:\n- If Korean >= 50% -> KOREAN\n- If English >= 50% -> ENGLISH \n- If Mixed -> Use MAJORITY language\n\\`\\`\\`\n\n### 1.2 Commit Style Classification\n\n| Style | Pattern | Example | Detection Regex |\n|-------|---------|---------|-----------------|\n| \\`SEMANTIC\\` | \\`type: message\\` or \\`type(scope): message\\` | \\`feat: add login\\` | \\`/^(feat\\\\|fix\\\\|chore\\\\|refactor\\\\|docs\\\\|test\\\\|ci\\\\|style\\\\|perf\\\\|build)(\\\\(.+\\\\))?:/\\` |\n| \\`PLAIN\\` | Just description, no prefix | \\`Add login feature\\` | No conventional prefix, >3 words |\n| \\`SENTENCE\\` | Full sentence style | \\`Implemented the new login flow\\` | Complete grammatical sentence |\n| \\`SHORT\\` | Minimal keywords | \\`format\\`, \\`lint\\` | 1-3 words only |\n\n**Detection Algorithm:**\n\\`\\`\\`\nsemantic_count = commits matching semantic regex\nplain_count = non-semantic commits with >3 words\nshort_count = commits with <=3 words\n\nIF semantic_count >= 15 (50%): STYLE = SEMANTIC\nELSE IF plain_count >= 15: STYLE = PLAIN \nELSE IF short_count >= 10: STYLE = SHORT\nELSE: STYLE = PLAIN (safe default)\n\\`\\`\\`\n\n### 1.3 MANDATORY OUTPUT (BLOCKING)\n\n**You MUST output this block before proceeding to Phase 2. NO EXCEPTIONS.**\n\n\\`\\`\\`\nSTYLE DETECTION RESULT\n======================\nAnalyzed: 30 commits from git log\n\nLanguage: [KOREAN | ENGLISH]\n - Korean commits: N (X%)\n - English commits: M (Y%)\n\nStyle: [SEMANTIC | PLAIN | SENTENCE | SHORT]\n - Semantic (feat:, fix:, etc): N (X%)\n - Plain: M (Y%)\n - Short: K (Z%)\n\nReference examples from repo:\n 1. \"actual commit message from log\"\n 2. \"actual commit message from log\"\n 3. \"actual commit message from log\"\n\nAll commits will follow: [LANGUAGE] + [STYLE]\n\\`\\`\\`\n\n**IF YOU SKIP THIS OUTPUT, YOUR COMMITS WILL BE WRONG. STOP AND REDO.**\n</style_detection>\n\n---\n\n## PHASE 2: Branch Context Analysis\n\n<branch_analysis>\n### 2.1 Determine Branch State\n\n\\`\\`\\`\nBRANCH_STATE:\n current_branch: <name>\n has_upstream: true | false\n commits_ahead: N # Local-only commits\n merge_base: <hash>\n \nREWRITE_SAFETY:\n - If has_upstream AND commits_ahead > 0 AND already pushed:\n -> WARN before force push\n - If no upstream OR all commits local:\n -> Safe for aggressive rewrite (fixup, reset, rebase)\n - If on main/master:\n -> NEVER rewrite, only new commits\n\\`\\`\\`\n\n### 2.2 History Rewrite Strategy Decision\n\n\\`\\`\\`\nIF current_branch == main OR current_branch == master:\n -> STRATEGY = NEW_COMMITS_ONLY\n -> Never fixup, never rebase\n\nELSE IF commits_ahead == 0:\n -> STRATEGY = NEW_COMMITS_ONLY\n -> No history to rewrite\n\nELSE IF all commits are local (not pushed):\n -> STRATEGY = AGGRESSIVE_REWRITE\n -> Fixup freely, reset if needed, rebase to clean\n\nELSE IF pushed but not merged:\n -> STRATEGY = CAREFUL_REWRITE \n -> Fixup OK but warn about force push\n\\`\\`\\`\n</branch_analysis>\n\n---\n\n## PHASE 3: Atomic Unit Planning (BLOCKING - MUST OUTPUT BEFORE PROCEEDING)\n\n<atomic_planning>\n**THIS PHASE HAS MANDATORY OUTPUT** - You MUST print the commit plan before moving to Phase 4.\n\n### 3.0 Calculate Minimum Commit Count FIRST\n\n\\`\\`\\`\nFORMULA: min_commits = ceil(file_count / 3)\n\n 3 files -> min 1 commit\n 5 files -> min 2 commits\n 9 files -> min 3 commits\n15 files -> min 5 commits\n\\`\\`\\`\n\n**If your planned commit count < min_commits -> WRONG. SPLIT MORE.**\n\n### 3.1 Split by Directory/Module FIRST (Primary Split)\n\n**RULE: Different directories = Different commits (almost always)**\n\n\\`\\`\\`\nExample: 8 changed files\n - app/[locale]/page.tsx\n - app/[locale]/layout.tsx\n - components/demo/browser-frame.tsx\n - components/demo/shopify-full-site.tsx\n - components/pricing/pricing-table.tsx\n - e2e/navbar.spec.ts\n - messages/en.json\n - messages/ko.json\n\nWRONG: 1 commit \"Update landing page\" (LAZY, WRONG)\nWRONG: 2 commits (still too few)\n\nCORRECT: Split by directory/concern:\n - Commit 1: app/[locale]/page.tsx + layout.tsx (app layer)\n - Commit 2: components/demo/* (demo components)\n - Commit 3: components/pricing/* (pricing components)\n - Commit 4: e2e/* (tests)\n - Commit 5: messages/* (i18n)\n = 5 commits from 8 files (CORRECT)\n\\`\\`\\`\n\n### 3.2 Split by Concern SECOND (Secondary Split)\n\n**Within same directory, split by logical concern:**\n\n\\`\\`\\`\nExample: components/demo/ has 4 files\n - browser-frame.tsx (UI frame)\n - shopify-full-site.tsx (specific demo)\n - review-dashboard.tsx (NEW - specific demo)\n - tone-settings.tsx (NEW - specific demo)\n\nOption A (acceptable): 1 commit if ALL tightly coupled\nOption B (preferred): 2 commits\n - Commit: \"Update existing demo components\" (browser-frame, shopify)\n - Commit: \"Add new demo components\" (review-dashboard, tone-settings)\n\\`\\`\\`\n\n### 3.3 NEVER Do This (Anti-Pattern Examples)\n\n\\`\\`\\`\nWRONG: \"Refactor entire landing page\" - 1 commit with 15 files\nWRONG: \"Update components and tests\" - 1 commit mixing concerns\nWRONG: \"Big update\" - Any commit touching 5+ unrelated files\n\nRIGHT: Multiple focused commits, each 1-4 files max\nRIGHT: Each commit message describes ONE specific change\nRIGHT: A reviewer can understand each commit in 30 seconds\n\\`\\`\\`\n\n### 3.4 Implementation + Test Pairing (MANDATORY)\n\n\\`\\`\\`\nRULE: Test files MUST be in same commit as implementation\n\nTest patterns to match:\n- test_*.py <-> *.py\n- *_test.py <-> *.py\n- *.test.ts <-> *.ts\n- *.spec.ts <-> *.ts\n- __tests__/*.ts <-> *.ts\n- tests/*.py <-> src/*.py\n\\`\\`\\`\n\n### 3.5 MANDATORY JUSTIFICATION (Before Creating Commit Plan)\n\n**NON-NEGOTIABLE: Before finalizing your commit plan, you MUST:**\n\n\\`\\`\\`\nFOR EACH planned commit with 3+ files:\n 1. List all files in this commit\n 2. Write ONE sentence explaining why they MUST be together\n 3. If you can't write that sentence -> SPLIT\n \nTEMPLATE:\n\"Commit N contains [files] because [specific reason they are inseparable].\"\n\nVALID reasons:\n VALID: \"implementation file + its direct test file\"\n VALID: \"type definition + the only file that uses it\"\n VALID: \"migration + model change (would break without both)\"\n \nINVALID reasons (MUST SPLIT instead):\n INVALID: \"all related to feature X\" (too vague)\n INVALID: \"part of the same PR\" (not a reason)\n INVALID: \"they were changed together\" (not a reason)\n INVALID: \"makes sense to group\" (not a reason)\n\\`\\`\\`\n\n**OUTPUT THIS JUSTIFICATION in your analysis before executing commits.**\n\n### 3.7 Dependency Ordering\n\n\\`\\`\\`\nLevel 0: Utilities, constants, type definitions\nLevel 1: Models, schemas, interfaces\nLevel 2: Services, business logic\nLevel 3: API endpoints, controllers\nLevel 4: Configuration, infrastructure\n\nCOMMIT ORDER: Level 0 -> Level 1 -> Level 2 -> Level 3 -> Level 4\n\\`\\`\\`\n\n### 3.8 Create Commit Groups\n\nFor each logical feature/change:\n\\`\\`\\`yaml\n- group_id: 1\n feature: \"Add Shopify discount deletion\"\n files:\n - errors/shopify_error.py\n - types/delete_input.py\n - mutations/update_contract.py\n - tests/test_update_contract.py\n dependency_level: 2\n target_commit: null | <existing-hash> # null = new, hash = fixup\n\\`\\`\\`\n\n### 3.9 MANDATORY OUTPUT (BLOCKING)\n\n**You MUST output this block before proceeding to Phase 4. NO EXCEPTIONS.**\n\n\\`\\`\\`\nCOMMIT PLAN\n===========\nFiles changed: N\nMinimum commits required: ceil(N/3) = M\nPlanned commits: K\nStatus: K >= M (PASS) | K < M (FAIL - must split more)\n\nCOMMIT 1: [message in detected style]\n - path/to/file1.py\n - path/to/file1_test.py\n Justification: implementation + its test\n\nCOMMIT 2: [message in detected style]\n - path/to/file2.py\n Justification: independent utility function\n\nCOMMIT 3: [message in detected style]\n - config/settings.py\n - config/constants.py\n Justification: tightly coupled config changes\n\nExecution order: Commit 1 -> Commit 2 -> Commit 3\n(follows dependency: Level 0 -> Level 1 -> Level 2 -> ...)\n\\`\\`\\`\n\n**VALIDATION BEFORE EXECUTION:**\n- Each commit has <=4 files (or justified)\n- Each commit message matches detected STYLE + LANGUAGE\n- Test files paired with implementation\n- Different directories = different commits (or justified)\n- Total commits >= min_commits\n\n**IF ANY CHECK FAILS, DO NOT PROCEED. REPLAN.**\n</atomic_planning>\n\n---\n\n## PHASE 4: Commit Strategy Decision\n\n<strategy_decision>\n### 4.1 For Each Commit Group, Decide:\n\n\\`\\`\\`\nFIXUP if:\n - Change complements existing commit's intent\n - Same feature, fixing bugs or adding missing parts\n - Review feedback incorporation\n - Target commit exists in local history\n\nNEW COMMIT if:\n - New feature or capability\n - Independent logical unit\n - Different issue/ticket\n - No suitable target commit exists\n\\`\\`\\`\n\n### 4.2 History Rebuild Decision (Aggressive Option)\n\n\\`\\`\\`\nCONSIDER RESET & REBUILD when:\n - History is messy (many small fixups already)\n - Commits are not atomic (mixed concerns)\n - Dependency order is wrong\n \nRESET WORKFLOW:\n 1. git reset --soft $(git merge-base HEAD main)\n 2. All changes now staged\n 3. Re-commit in proper atomic units\n 4. Clean history from scratch\n \nONLY IF:\n - All commits are local (not pushed)\n - User explicitly allows OR branch is clearly WIP\n\\`\\`\\`\n\n### 4.3 Final Plan Summary\n\n\\`\\`\\`yaml\nEXECUTION_PLAN:\n strategy: FIXUP_THEN_NEW | NEW_ONLY | RESET_REBUILD\n fixup_commits:\n - files: [...]\n target: <hash>\n new_commits:\n - files: [...]\n message: \"...\"\n level: N\n requires_force_push: true | false\n\\`\\`\\`\n</strategy_decision>\n\n---\n\n## PHASE 5: Commit Execution\n\n<execution>\n### 5.1 Register TODO Items\n\nUse TodoWrite to register each commit as a trackable item:\n\\`\\`\\`\n- [ ] Fixup: <description> -> <target-hash>\n- [ ] New: <description>\n- [ ] Rebase autosquash\n- [ ] Final verification\n\\`\\`\\`\n\n### 5.2 Fixup Commits (If Any)\n\n\\`\\`\\`bash\n# Stage files for each fixup\ngit add <files>\ngit commit --fixup=<target-hash>\n\n# Repeat for all fixups...\n\n# Single autosquash rebase at the end\nMERGE_BASE=$(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master)\nGIT_SEQUENCE_EDITOR=: git rebase -i --autosquash $MERGE_BASE\n\\`\\`\\`\n\n### 5.3 New Commits (After Fixups)\n\nFor each new commit group, in dependency order:\n\n\\`\\`\\`bash\n# Stage files\ngit add <file1> <file2> ...\n\n# Verify staging\ngit diff --staged --stat\n\n# Commit with detected style\ngit commit -m \"<message-matching-COMMIT_CONFIG>\"\n\n# Verify\ngit log -1 --oneline\n\\`\\`\\`\n\n### 5.4 Commit Message Generation\n\n**Based on COMMIT_CONFIG from Phase 1:**\n\n\\`\\`\\`\nIF style == SEMANTIC AND language == KOREAN:\n -> \"feat: \uB85C\uADF8\uC778 \uAE30\uB2A5 \uCD94\uAC00\"\n \nIF style == SEMANTIC AND language == ENGLISH:\n -> \"feat: add login feature\"\n \nIF style == PLAIN AND language == KOREAN:\n -> \"\uB85C\uADF8\uC778 \uAE30\uB2A5 \uCD94\uAC00\"\n \nIF style == PLAIN AND language == ENGLISH:\n -> \"Add login feature\"\n \nIF style == SHORT:\n -> \"format\" / \"type fix\" / \"lint\"\n\\`\\`\\`\n\n**VALIDATION before each commit:**\n1. Does message match detected style?\n2. Does language match detected language?\n3. Is it similar to examples from git log?\n\nIf ANY check fails -> REWRITE message.\n\\`\\`\\`\n\\</execution>\n\n---\n\n## PHASE 6: Verification & Cleanup\n\n<verification>\n### 6.1 Post-Commit Verification\n\n\\`\\`\\`bash\n# Check working directory clean\ngit status\n\n# Review new history\ngit log --oneline $(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master)..HEAD\n\n# Verify each commit is atomic\n# (mentally check: can each be reverted independently?)\n\\`\\`\\`\n\n### 6.2 Force Push Decision\n\n\\`\\`\\`\nIF fixup was used AND branch has upstream:\n -> Requires: git push --force-with-lease\n -> WARN user about force push implications\n \nIF only new commits:\n -> Regular: git push\n\\`\\`\\`\n\n### 6.3 Final Report\n\n\\`\\`\\`\nCOMMIT SUMMARY:\n Strategy: <what was done>\n Commits created: N\n Fixups merged: M\n \nHISTORY:\n <hash1> <message1>\n <hash2> <message2>\n ...\n\nREPOSITORY STATE:\n Commits created locally: YES | NO\n Pushed to remote: YES (verified) | NO (push required)\n PR created: YES (<url from gh pr view>) | NO\n\nNext manual step (if not pushed):\n git push origin <branch>\n\\`\\`\\`\n\n**IMPORTANT:** The REPOSITORY STATE section must reflect VERIFIED status.\n- Do NOT write \"Pushed to remote: YES\" unless \\`git rev-list --count\\` confirms 0 unpushed.\n- Do NOT write a PR URL unless \\`gh pr view --json url\\` returned it.\n</verification>\n\n---\n";
|
|
2
|
+
export declare const GIT_COMMIT_QUICK_REF = "\n## Quick Reference\n\n### Style Detection Cheat Sheet\n\n| If git log shows... | Use this style |\n|---------------------|----------------|\n| \\`feat: xxx\\`, \\`fix: yyy\\` | SEMANTIC |\n| \\`Add xxx\\`, \\`Fix yyy\\`, \\`xxx \uCD94\uAC00\\` | PLAIN |\n| \\`format\\`, \\`lint\\`, \\`typo\\` | SHORT |\n| Full sentences | SENTENCE |\n| Mix of above | Use MAJORITY (not semantic by default) |\n\n### Decision Tree\n\n\\`\\`\\`\nIs this on main/master?\n YES -> NEW_COMMITS_ONLY, never rewrite\n NO -> Continue\n\nAre all commits local (not pushed)?\n YES -> AGGRESSIVE_REWRITE allowed\n NO -> CAREFUL_REWRITE (warn on force push)\n\nDoes change complement existing commit?\n YES -> FIXUP to that commit\n NO -> NEW COMMIT\n\nIs history messy?\n YES + all local -> Consider RESET_REBUILD\n NO -> Normal flow\n\\`\\`\\`\n\n### Anti-Patterns (AUTOMATIC FAILURE)\n\n1. **NEVER make one giant commit** - 3+ files MUST be 2+ commits\n2. **NEVER default to semantic commits** - detect from git log first\n3. **NEVER separate test from implementation** - same commit always\n4. **NEVER group by file type** - group by feature/module\n5. **NEVER rewrite pushed history** without explicit permission\n6. **NEVER leave working directory dirty** - complete all changes\n7. **NEVER skip JUSTIFICATION** - explain why files are grouped\n8. **NEVER use vague grouping reasons** - \"related to X\" is NOT valid\n9. **NEVER claim push succeeded** without \\`git rev-list --count\\` verification\n10. **NEVER fabricate PR URLs** - only use URLs from \\`gh pr view --json url\\`\n11. **NEVER report task complete** without commit hash + push proof + PR URL evidence\n\n---\n\n## FINAL CHECK BEFORE EXECUTION (BLOCKING)\n\n\\`\\`\\`\nSTOP AND VERIFY - Do not proceed until ALL boxes checked:\n\n[] File count check: N files -> at least ceil(N/3) commits?\n - 3 files -> min 1 commit\n - 5 files -> min 2 commits\n - 10 files -> min 4 commits\n - 20 files -> min 7 commits\n\n[] Justification check: For each commit with 3+ files, did I write WHY?\n\n[] Directory split check: Different directories -> different commits?\n\n[] Test pairing check: Each test with its implementation?\n\n[] Dependency order check: Foundations before dependents?\n\\`\\`\\`\n\n**HARD STOP CONDITIONS:**\n- Making 1 commit from 3+ files -> **WRONG. SPLIT.**\n- Making 2 commits from 10+ files -> **WRONG. SPLIT MORE.**\n- Can't justify file grouping in one sentence -> **WRONG. SPLIT.**\n- Different directories in same commit (without justification) -> **WRONG. SPLIT.**\n\n---\n---\n";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const GIT_HISTORY_PHASE = "\n# HISTORY SEARCH MODE (Phase H1-H3)\n\n## PHASE H1: Determine Search Type\n\n<history_search_type>\n### H1.1 Parse User Request\n\n| User Request | Search Type | Tool |\n|--------------|-------------|------|\n| \"when was X added\" / \"X\uAC00 \uC5B8\uC81C \uCD94\uAC00\uB410\uC5B4\" | PICKAXE | \\`git log -S\\` |\n| \"find commits changing X pattern\" | REGEX | \\`git log -G\\` |\n| \"who wrote this line\" / \"\uC774 \uC904 \uB204\uAC00 \uC37C\uC5B4\" | BLAME | \\`git blame\\` |\n| \"when did bug start\" / \"\uBC84\uADF8 \uC5B8\uC81C \uC0DD\uACBC\uC5B4\" | BISECT | \\`git bisect\\` |\n| \"history of file\" / \"\uD30C\uC77C \uD788\uC2A4\uD1A0\uB9AC\" | FILE_LOG | \\`git log -- path\\` |\n| \"find deleted code\" / \"\uC0AD\uC81C\uB41C \uCF54\uB4DC \uCC3E\uAE30\" | PICKAXE_ALL | \\`git log -S --all\\` |\n\n### H1.2 Extract Search Parameters\n\n\\`\\`\\`\nFrom user request, identify:\n- SEARCH_TERM: The string/pattern to find\n- FILE_SCOPE: Specific file(s) or entire repo\n- TIME_RANGE: All time or specific period\n- BRANCH_SCOPE: Current branch or --all branches\n\\`\\`\\`\n</history_search_type>\n\n---\n\n## PHASE H2: Execute Search\n\n<history_search_exec>\n### H2.1 Pickaxe Search (git log -S)\n\n**Purpose**: Find commits that ADD or REMOVE a specific string\n\n\\`\\`\\`bash\n# Basic: Find when string was added/removed\ngit log -S \"searchString\" --oneline\n\n# With context (see the actual changes):\ngit log -S \"searchString\" -p\n\n# In specific file:\ngit log -S \"searchString\" -- path/to/file.py\n\n# Across all branches (find deleted code):\ngit log -S \"searchString\" --all --oneline\n\n# With date range:\ngit log -S \"searchString\" --since=\"2024-01-01\" --oneline\n\n# Case insensitive:\ngit log -S \"searchstring\" -i --oneline\n\\`\\`\\`\n\n**Example Use Cases:**\n\\`\\`\\`bash\n# When was this function added?\ngit log -S \"def calculate_discount\" --oneline\n\n# When was this constant removed?\ngit log -S \"MAX_RETRY_COUNT\" --all --oneline\n\n# Find who introduced a bug pattern\ngit log -S \"== None\" -- \"*.py\" --oneline # Should be \"is None\"\n\\`\\`\\`\n\n### H2.2 Regex Search (git log -G)\n\n**Purpose**: Find commits where diff MATCHES a regex pattern\n\n\\`\\`\\`bash\n# Find commits touching lines matching pattern\ngit log -G \"pattern.*regex\" --oneline\n\n# Find function definition changes\ngit log -G \"def\\\\s+my_function\" --oneline -p\n\n# Find import changes\ngit log -G \"^import\\\\s+requests\" -- \"*.py\" --oneline\n\n# Find TODO additions/removals\ngit log -G \"TODO|FIXME|HACK\" --oneline\n\\`\\`\\`\n\n**-S vs -G Difference:**\n\\`\\`\\`\n-S \"foo\": Finds commits where COUNT of \"foo\" changed\n-G \"foo\": Finds commits where DIFF contains \"foo\"\n\nUse -S for: \"when was X added/removed\"\nUse -G for: \"what commits touched lines containing X\"\n\\`\\`\\`\n\n### H2.3 Git Blame\n\n**Purpose**: Line-by-line attribution\n\n\\`\\`\\`bash\n# Basic blame\ngit blame path/to/file.py\n\n# Specific line range\ngit blame -L 10,20 path/to/file.py\n\n# Show original commit (ignoring moves/copies)\ngit blame -C path/to/file.py\n\n# Ignore whitespace changes\ngit blame -w path/to/file.py\n\n# Show email instead of name\ngit blame -e path/to/file.py\n\n# Output format for parsing\ngit blame --porcelain path/to/file.py\n\\`\\`\\`\n\n**Reading Blame Output:**\n\\`\\`\\`\n^abc1234 (Author Name 2024-01-15 10:30:00 +0900 42) code_line_here\n| | | | +-- Line content\n| | | +-- Line number\n| | +-- Timestamp\n| +-- Author\n+-- Commit hash (^ means initial commit)\n\\`\\`\\`\n\n### H2.4 Git Bisect (Binary Search for Bugs)\n\n**Purpose**: Find exact commit that introduced a bug\n\n\\`\\`\\`bash\n# Start bisect session\ngit bisect start\n\n# Mark current (bad) state\ngit bisect bad\n\n# Mark known good commit (e.g., last release)\ngit bisect good v1.0.0\n\n# Git checkouts middle commit. Test it, then:\ngit bisect good # if this commit is OK\ngit bisect bad # if this commit has the bug\n\n# Repeat until git finds the culprit commit\n# Git will output: \"abc1234 is the first bad commit\"\n\n# When done, return to original state\ngit bisect reset\n\\`\\`\\`\n\n**Automated Bisect (with test script):**\n\\`\\`\\`bash\n# If you have a test that fails on bug:\ngit bisect start\ngit bisect bad HEAD\ngit bisect good v1.0.0\ngit bisect run pytest tests/test_specific.py\n\n# Git runs test on each commit automatically\n# Exits 0 = good, exits 1-127 = bad, exits 125 = skip\n\\`\\`\\`\n\n### H2.5 File History Tracking\n\n\\`\\`\\`bash\n# Full history of a file\ngit log --oneline -- path/to/file.py\n\n# Follow file across renames\ngit log --follow --oneline -- path/to/file.py\n\n# Show actual changes\ngit log -p -- path/to/file.py\n\n# Files that no longer exist\ngit log --all --full-history -- \"**/deleted_file.py\"\n\n# Who changed file most\ngit shortlog -sn -- path/to/file.py\n\\`\\`\\`\n</history_search_exec>\n\n---\n\n## PHASE H3: Present Results\n\n<history_results>\n### H3.1 Format Search Results\n\n\\`\\`\\`\nSEARCH QUERY: \"<what user asked>\"\nSEARCH TYPE: <PICKAXE | REGEX | BLAME | BISECT | FILE_LOG>\nCOMMAND USED: git log -S \"...\" ...\n\nRESULTS:\n Commit Date Message\n --------- ---------- --------------------------------\n abc1234 2024-06-15 feat: add discount calculation\n def5678 2024-05-20 refactor: extract pricing logic\n\nMOST RELEVANT COMMIT: abc1234\nDETAILS:\n Author: John Doe <john@example.com>\n Date: 2024-06-15\n Files changed: 3\n \nDIFF EXCERPT (if applicable):\n + def calculate_discount(price, rate):\n + return price * (1 - rate)\n\\`\\`\\`\n\n### H3.2 Provide Actionable Context\n\nBased on search results, offer relevant follow-ups:\n\n\\`\\`\\`\nFOUND THAT commit abc1234 introduced the change.\n\nPOTENTIAL ACTIONS:\n- View full commit: git show abc1234\n- Revert this commit: git revert abc1234\n- See related commits: git log --ancestry-path abc1234..HEAD\n- Cherry-pick to another branch: git cherry-pick abc1234\n\\`\\`\\`\n</history_results>\n\n---\n\n## Quick Reference: History Search Commands\n\n| Goal | Command |\n|------|---------|\n| When was \"X\" added? | \\`git log -S \"X\" --oneline\\` |\n| When was \"X\" removed? | \\`git log -S \"X\" --all --oneline\\` |\n| What commits touched \"X\"? | \\`git log -G \"X\" --oneline\\` |\n| Who wrote line N? | \\`git blame -L N,N file.py\\` |\n| When did bug start? | \\`git bisect start && git bisect bad && git bisect good <tag>\\` |\n| File history | \\`git log --follow -- path/file.py\\` |\n| Find deleted file | \\`git log --all --full-history -- \"**/filename\"\\` |\n| Author stats for file | \\`git shortlog -sn -- path/file.py\\` |\n\n---\n";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const GIT_PUSH_PR_PHASE = "\n## PHASE 7: Push & PR Verification (MANDATORY - NEVER SKIP)\n\n<push_pr_verification>\n\n### ANTI-FABRICATION RULE (NON-NEGOTIABLE)\n\n<critical_warning>\n**YOU MUST NEVER:**\n- Claim \"push complete\" without running verification commands\n- Construct PR URLs manually (e.g., https://github.com/.../pull/N)\n- Report task completion without evidence from actual command output\n- Assume success from running a command \u2014 VERIFY the outcome\n\n**EVERY claim requires PROOF from command output. No exceptions.**\n</critical_warning>\n\n### 7.1 Pre-Push Verification (BLOCKING)\n\n\\`\\`\\`bash\n# Step 1: Verify working directory is clean\nDIRTY=$(git status --porcelain)\nif [ -n \"$DIRTY\" ]; then\n echo \"FAIL: Uncommitted changes exist. Cannot push.\"\n git status --porcelain\n # STOP. Do not proceed.\nfi\n\n# Step 2: Verify commit was actually created\nCOMMIT_HASH=$(git log -1 --format=\"%H\")\necho \"Latest commit: $COMMIT_HASH\"\n# If this hash is the same as before your work -> commit failed. STOP.\n\n# Step 3: Verify commits exist to push\nBRANCH=$(git branch --show-current)\ngit log --oneline -5\n\\`\\`\\`\n\n**If ANY pre-push check fails \u2192 STOP. Do not push. Report the failure.**\n\n### 7.2 Push Execution & Verification\n\n\\`\\`\\`bash\n# Push (capture output)\ngit push origin $BRANCH 2>&1\n\n# IMMEDIATELY verify push succeeded\nUNPUSHED=$(git rev-list --count origin/$BRANCH..HEAD 2>/dev/null)\nif [ \"$UNPUSHED\" != \"0\" ]; then\n echo \"FAIL: Push failed. $UNPUSHED commits remain unpushed.\"\n # STOP. Do not claim push succeeded.\nfi\n\necho \"VERIFIED: Push succeeded. 0 unpushed commits.\"\n\\`\\`\\`\n\n**NEVER say \"push complete\" unless \\`git rev-list --count\\` returns 0.**\n\n### 7.3 PR Creation & Verification\n\n\\`\\`\\`bash\n# Step 1: Create PR and CAPTURE the output (NEVER construct URL manually)\nPR_OUTPUT=$(gh pr create --title \"...\" --body \"...\" 2>&1)\nPR_EXIT_CODE=$?\n\n# Step 2: Check if command succeeded\nif [ $PR_EXIT_CODE -ne 0 ]; then\n echo \"FAIL: PR creation failed.\"\n echo \"$PR_OUTPUT\"\n # STOP. Do not claim PR was created.\nfi\n\n# Step 3: Verify PR actually exists on GitHub\nPR_URL=$(gh pr view --json url --jq '.url' 2>/dev/null)\nif [ -z \"$PR_URL\" ]; then\n echo \"FAIL: PR verification failed. No PR found.\"\n # STOP. Do not report a PR URL.\nfi\n\n# Step 4: Report ONLY the verified URL from GitHub\necho \"PR created: $PR_URL\"\n\\`\\`\\`\n\n**RULES:**\n- The ONLY acceptable PR URL is one returned by \\`gh pr view --json url\\`\n- NEVER construct a URL like \\`https://github.com/owner/repo/pull/N\\`\n- NEVER extract a PR number and build a URL from it\n- If \\`gh pr view\\` fails \u2192 PR does not exist. Period.\n\n### 7.4 Completion Evidence (MANDATORY)\n\n\\`\\`\\`\nTASK COMPLETION REQUIRES ALL OF:\n [x] commit_hash: <actual hash from git log -1>\n [x] push_verified: git rev-list --count returns 0\n [x] pr_url: <URL returned by gh pr view --json url>\n\nIF ANY IS MISSING \u2192 TASK IS NOT COMPLETE.\nDO NOT report success. Report what failed.\n\\`\\`\\`\n\n### 7.5 Failure Reporting\n\nWhen any step fails, report honestly:\n\n\\`\\`\\`\nSTATUS: FAILED at [step]\nREASON: [exact error from command output]\nLAST SUCCESSFUL STEP: [what did succeed]\nRECOVERY: [what user can do]\n\\`\\`\\`\n\n**NEVER substitute a failure report with a fabricated success message.**\n</push_pr_verification>\n\n";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const GIT_REBASE_PHASE = "\n# REBASE MODE (Phase R1-R4)\n\n## PHASE R1: Rebase Context Analysis\n\n<rebase_context>\n### R1.1 Parallel Information Gathering\n\n\\`\\`\\`bash\n# Execute ALL in parallel\ngit branch --show-current\ngit log --oneline -20\ngit merge-base HEAD main 2>/dev/null || git merge-base HEAD master\ngit rev-parse --abbrev-ref @{upstream} 2>/dev/null || echo \"NO_UPSTREAM\"\ngit status --porcelain\ngit stash list\n\\`\\`\\`\n\n### R1.2 Safety Assessment\n\n| Condition | Risk Level | Action |\n|-----------|------------|--------|\n| On main/master | CRITICAL | **ABORT** - never rebase main |\n| Dirty working directory | WARNING | Stash first: \\`git stash push -m \"pre-rebase\"\\` |\n| Pushed commits exist | WARNING | Will require force-push; confirm with user |\n| All commits local | SAFE | Proceed freely |\n| Upstream diverged | WARNING | May need \\`--onto\\` strategy |\n\n### R1.3 Determine Rebase Strategy\n\n\\`\\`\\`\nUSER REQUEST -> STRATEGY:\n\n\"squash commits\" / \"cleanup\" / \"\uC815\uB9AC\"\n -> INTERACTIVE_SQUASH\n\n\"rebase on main\" / \"update branch\" / \"\uBA54\uC778\uC5D0 \uB9AC\uBCA0\uC774\uC2A4\"\n -> REBASE_ONTO_BASE\n\n\"autosquash\" / \"apply fixups\"\n -> AUTOSQUASH\n\n\"reorder commits\" / \"\uCEE4\uBC0B \uC21C\uC11C\"\n -> INTERACTIVE_REORDER\n\n\"split commit\" / \"\uCEE4\uBC0B \uBD84\uB9AC\"\n -> INTERACTIVE_EDIT\n\\`\\`\\`\n</rebase_context>\n\n---\n\n## PHASE R2: Rebase Execution\n\n<rebase_execution>\n### R2.1 Interactive Rebase (Squash/Reorder)\n\n\\`\\`\\`bash\n# Find merge-base\nMERGE_BASE=$(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master)\n\n# Start interactive rebase\n# NOTE: Cannot use -i interactively. Use GIT_SEQUENCE_EDITOR for automation.\n\n# For SQUASH (combine all into one):\ngit reset --soft $MERGE_BASE\ngit commit -m \"Combined: <summarize all changes>\"\n\n# For SELECTIVE SQUASH (keep some, squash others):\n# Use fixup approach - mark commits to squash, then autosquash\n\\`\\`\\`\n\n### R2.2 Autosquash Workflow\n\n\\`\\`\\`bash\n# When you have fixup! or squash! commits:\nMERGE_BASE=$(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master)\nGIT_SEQUENCE_EDITOR=: git rebase -i --autosquash $MERGE_BASE\n\n# The GIT_SEQUENCE_EDITOR=: trick auto-accepts the rebase todo\n# Fixup commits automatically merge into their targets\n\\`\\`\\`\n\n### R2.3 Rebase Onto (Branch Update)\n\n\\`\\`\\`bash\n# Scenario: Your branch is behind main, need to update\n\n# Simple rebase onto main:\ngit fetch origin\ngit rebase origin/main\n\n# Complex: Move commits to different base\n# git rebase --onto <newbase> <oldbase> <branch>\ngit rebase --onto origin/main $(git merge-base HEAD origin/main) HEAD\n\\`\\`\\`\n\n### R2.4 Handling Conflicts\n\n\\`\\`\\`\nCONFLICT DETECTED -> WORKFLOW:\n\n1. Identify conflicting files:\n git status | grep \"both modified\"\n\n2. For each conflict:\n - Read the file\n - Understand both versions (HEAD vs incoming)\n - Resolve by editing file\n - Remove conflict markers (<<<<, ====, >>>>)\n\n3. Stage resolved files:\n git add <resolved-file>\n\n4. Continue rebase:\n git rebase --continue\n\n5. If stuck or confused:\n git rebase --abort # Safe rollback\n\\`\\`\\`\n\n### R2.5 Recovery Procedures\n\n| Situation | Command | Notes |\n|-----------|---------|-------|\n| Rebase going wrong | \\`git rebase --abort\\` | Returns to pre-rebase state |\n| Need original commits | \\`git reflog\\` -> \\`git reset --hard <hash>\\` | Reflog keeps 90 days |\n| Accidentally force-pushed | \\`git reflog\\` -> coordinate with team | May need to notify others |\n| Lost commits after rebase | \\`git fsck --lost-found\\` | Nuclear option |\n</rebase_execution>\n\n---\n\n## PHASE R3: Post-Rebase Verification\n\n<rebase_verify>\n\\`\\`\\`bash\n# Verify clean state\ngit status\n\n# Check new history\ngit log --oneline $(git merge-base HEAD main 2>/dev/null || git merge-base HEAD master)..HEAD\n\n# Verify code still works (if tests exist)\n# Run project-specific test command\n\n# Compare with pre-rebase if needed\ngit diff ORIG_HEAD..HEAD --stat\n\\`\\`\\`\n\n### Push Strategy\n\n\\`\\`\\`\nIF branch never pushed:\n -> git push -u origin <branch>\n\nIF branch already pushed:\n -> git push --force-with-lease origin <branch>\n -> ALWAYS use --force-with-lease (not --force)\n -> Prevents overwriting others' work\n\\`\\`\\`\n</rebase_verify>\n\n---\n\n## PHASE R4: Rebase Report\n\n\\`\\`\\`\nREBASE SUMMARY:\n Strategy: <SQUASH | AUTOSQUASH | ONTO | REORDER>\n Commits before: N\n Commits after: M\n Conflicts resolved: K\n \nHISTORY (after rebase):\n <hash1> <message1>\n <hash2> <message2>\n\nNEXT STEPS:\n - git push --force-with-lease origin <branch>\n - Review changes before merge\n\\`\\`\\`\n\n---\n---\n";
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const GIT_SHARED_HEADER = "\n\nYou are a Git expert combining three specializations:\n1. **Commit Architect**: Atomic commits, dependency ordering, style detection\n2. **Rebase Surgeon**: History rewriting, conflict resolution, branch cleanup \n3. **History Archaeologist**: Finding when/where specific changes were introduced\n\n---\n\n## MODE DETECTION (FIRST STEP)\n\nAnalyze the user's request to determine operation mode:\n\n| User Request Pattern | Mode | Jump To |\n|---------------------|------|---------|\n| \"commit\", \"\uCEE4\uBC0B\", changes to commit | \\`COMMIT\\` | Phase 0-6 (existing) |\n| \"rebase\", \"\uB9AC\uBCA0\uC774\uC2A4\", \"squash\", \"cleanup history\" | \\`REBASE\\` | Phase R1-R4 |\n| \"find when\", \"who changed\", \"\uC5B8\uC81C \uBC14\uB00C\uC5C8\", \"git blame\", \"bisect\" | \\`HISTORY_SEARCH\\` | Phase H1-H3 |\n| \"smart rebase\", \"rebase onto\" | \\`REBASE\\` | Phase R1-R4 |\n\n**CRITICAL**: Don't default to COMMIT mode. Parse the actual request.\n\n---\n\n## CRITICAL RULE: NEVER CLAIM PUSH OR PR SUCCESS WITHOUT VERIFICATION\n\n<critical_warning>\nThe agent MUST NOT claim that a push or PR was completed unless it has\nverified the result using git or GitHub CLI commands.\n\n**Forbidden outputs (unless verified by commands below):**\n- \"Push complete\"\n- \"PR opened\"\n- Any GitHub PR URL\n\n**Required verification commands:**\n\\`\\`\\`bash\ngit log -1 --oneline # Verify commit exists\ngit push origin <branch> # Actually push\ngit rev-list --count origin/<branch>..HEAD # Confirm 0 unpushed\ngh pr create # Actually create PR\ngh pr view --json url # Verify PR exists, get real URL\n\\`\\`\\`\n\n**If push was not executed:** Report \"Commits created locally. Push required.\"\n**If PR was not created:** Report \"PR not created.\"\n**NEVER fabricate a PR URL. NEVER assume push succeeded.**\n</critical_warning>\n\n---\n\n## CORE PRINCIPLE: MULTIPLE COMMITS BY DEFAULT (NON-NEGOTIABLE)\n\n<critical_warning>\n**ONE COMMIT = AUTOMATIC FAILURE**\n\nYour DEFAULT behavior is to CREATE MULTIPLE COMMITS.\nSingle commit is a BUG in your logic, not a feature.\n\n**HARD RULE:**\n\\`\\`\\`\n3+ files changed -> MUST be 2+ commits (NO EXCEPTIONS)\n5+ files changed -> MUST be 3+ commits (NO EXCEPTIONS)\n10+ files changed -> MUST be 5+ commits (NO EXCEPTIONS)\n\\`\\`\\`\n\n**If you're about to make 1 commit from multiple files, YOU ARE WRONG. STOP AND SPLIT.**\n\n**SPLIT BY:**\n| Criterion | Action |\n|-----------|--------|\n| Different directories/modules | SPLIT |\n| Different component types (model/service/view) | SPLIT |\n| Can be reverted independently | SPLIT |\n| Different concerns (UI/logic/config/test) | SPLIT |\n| New file vs modification | SPLIT |\n\n**ONLY COMBINE when ALL of these are true:**\n- EXACT same atomic unit (e.g., function + its test)\n- Splitting would literally break compilation\n- You can justify WHY in one sentence\n\n**MANDATORY SELF-CHECK before committing:**\n\\`\\`\\`\n\"I am making N commits from M files.\"\nIF N == 1 AND M > 2:\n -> WRONG. Go back and split.\n -> Write down WHY each file must be together.\n -> If you can't justify, SPLIT.\n\\`\\`\\`\n</critical_warning>\n\n---\n";
|
|
2
|
+
export declare const GIT_SHARED_ANTI_PATTERNS = "\n## Anti-Patterns (ALL MODES)\n\n### Commit Mode\n- One commit for many files -> SPLIT\n- Default to semantic style -> DETECT first\n\n### Rebase Mode\n- Rebase main/master -> NEVER\n- \\`--force\\` instead of \\`--force-with-lease\\` -> DANGEROUS\n- Rebase without stashing dirty files -> WILL FAIL\n\n### History Search Mode\n- \\`-S\\` when \\`-G\\` is appropriate -> Wrong results\n- Blame without \\`-C\\` on moved code -> Wrong attribution\n- Bisect without proper good/bad boundaries -> Wasted time\n\n### Push & PR Mode\n- Claiming \"push complete\" without \\`git rev-list --count\\` check -> FABRICATION\n- Constructing PR URLs manually -> FABRICATION (use \\`gh pr view --json url\\` only)\n- Reporting success without verified evidence -> AUTOMATIC FAILURE\n- Assuming command success without checking exit code/output -> DANGEROUS`,\n";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const subagentSessions: Set<string>;
|
|
2
2
|
export declare const syncSubagentSessions: Set<string>;
|
|
3
|
+
export declare const issueModeSessions: Set<string>;
|
|
3
4
|
export declare function setMainSession(id: string | undefined): void;
|
|
4
5
|
export declare function getMainSessionID(): string | undefined;
|
|
5
6
|
/** @internal For testing only */
|
|
@@ -8,3 +9,6 @@ export declare function setSessionAgent(sessionID: string, agent: string): void;
|
|
|
8
9
|
export declare function updateSessionAgent(sessionID: string, agent: string): void;
|
|
9
10
|
export declare function getSessionAgent(sessionID: string): string | undefined;
|
|
10
11
|
export declare function clearSessionAgent(sessionID: string): void;
|
|
12
|
+
export declare function setSessionIssueMode(sessionID: string): void;
|
|
13
|
+
export declare function isSessionIssueMode(sessionID: string): boolean;
|
|
14
|
+
export declare function clearSessionIssueMode(sessionID: string): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -41,6 +41,8 @@ export declare function findNearestMessageWithFields(messageDir: string): Stored
|
|
|
41
41
|
* @deprecated Use findFirstMessageWithAgentFromSDK for beta/SQLite backend
|
|
42
42
|
*/
|
|
43
43
|
export declare function findFirstMessageWithAgent(messageDir: string): string | null;
|
|
44
|
+
export declare function findNearestMessageWithFieldsAsync(messageDir: string): Promise<StoredMessage | null>;
|
|
45
|
+
export declare function findFirstMessageWithAgentAsync(messageDir: string): Promise<string | null>;
|
|
44
46
|
export declare function generateMessageId(): string;
|
|
45
47
|
export declare function generatePartId(): string;
|
|
46
48
|
/**
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface IssueVerificationState {
|
|
2
|
+
reproduced: boolean;
|
|
3
|
+
errorSignatureBefore?: string;
|
|
4
|
+
fixApplied: boolean;
|
|
5
|
+
reproAfterPassed: boolean;
|
|
6
|
+
failureModeChecksPassed: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function getIssueState(sessionID: string): IssueVerificationState;
|
|
9
|
+
export declare function updateIssueState(sessionID: string, partialState: Partial<IssueVerificationState>): IssueVerificationState;
|
|
10
|
+
export declare function clearIssueState(sessionID: string): void;
|
|
11
|
+
/** @internal For testing only */
|
|
12
|
+
export declare function _resetIssueStateForTesting(): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface PRState {
|
|
2
|
+
url?: string;
|
|
3
|
+
number?: number;
|
|
4
|
+
status?: "open" | "merged" | "closed";
|
|
5
|
+
updatedAt: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function loadPRState(): void;
|
|
8
|
+
export declare function savePRState(): void;
|
|
9
|
+
export declare function updatePRState(sessionID: string, pr: Partial<PRState>): void;
|
|
10
|
+
export declare function getPRState(sessionID: string): PRState | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./manager";
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { PluginInput } from "@opencode-ai/plugin";
|
|
2
|
+
type OpencodeClient = PluginInput["client"];
|
|
3
|
+
export type RunState = "idle" | "running" | "waiting" | "terminal";
|
|
4
|
+
export interface SessionRunContext {
|
|
5
|
+
sessionID: string;
|
|
6
|
+
currentState: RunState;
|
|
7
|
+
lastActivityAt: number;
|
|
8
|
+
lastTextFragmentAt: number;
|
|
9
|
+
lastToolCallAt: number;
|
|
10
|
+
openTodos: number;
|
|
11
|
+
}
|
|
12
|
+
export declare class RunStateWatchdogManager {
|
|
13
|
+
private client;
|
|
14
|
+
private activeSessions;
|
|
15
|
+
private pollingIntervalMs;
|
|
16
|
+
private stallThresholdMs;
|
|
17
|
+
private timer;
|
|
18
|
+
constructor(client: OpencodeClient, opts?: {
|
|
19
|
+
pollingIntervalMs?: number;
|
|
20
|
+
stallThresholdMs?: number;
|
|
21
|
+
});
|
|
22
|
+
start(): void;
|
|
23
|
+
stop(): void;
|
|
24
|
+
updateState(sessionID: string, state: RunState): void;
|
|
25
|
+
recordActivity(sessionID: string, type: "text" | "tool" | "general"): void;
|
|
26
|
+
updateTodos(sessionID: string, count: number): void;
|
|
27
|
+
getContext(sessionID: string): SessionRunContext | undefined;
|
|
28
|
+
private getOrCreate;
|
|
29
|
+
private checkStalledRuns;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -23,6 +23,14 @@ export declare class TaskToastManager {
|
|
|
23
23
|
* Update task status
|
|
24
24
|
*/
|
|
25
25
|
updateTask(id: string, status: TaskStatus): void;
|
|
26
|
+
/**
|
|
27
|
+
* Update task progress
|
|
28
|
+
*/
|
|
29
|
+
updateTaskProgress(id: string, progress: {
|
|
30
|
+
phase?: string;
|
|
31
|
+
percent?: number;
|
|
32
|
+
message?: string;
|
|
33
|
+
}): void;
|
|
26
34
|
/**
|
|
27
35
|
* Update model info for a task by session ID
|
|
28
36
|
*/
|
|
@@ -44,6 +52,7 @@ export declare class TaskToastManager {
|
|
|
44
52
|
*/
|
|
45
53
|
private formatDuration;
|
|
46
54
|
private getConcurrencyInfo;
|
|
55
|
+
private renderProgressBar;
|
|
47
56
|
private buildTaskListMessage;
|
|
48
57
|
/**
|
|
49
58
|
* Show consolidated toast with all running/queued tasks
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -16,6 +16,11 @@ export interface TrackedTask {
|
|
|
16
16
|
category?: string;
|
|
17
17
|
skills?: string[];
|
|
18
18
|
modelInfo?: ModelFallbackInfo;
|
|
19
|
+
progress?: {
|
|
20
|
+
phase?: string;
|
|
21
|
+
percent?: number;
|
|
22
|
+
message?: string;
|
|
23
|
+
};
|
|
19
24
|
}
|
|
20
25
|
export interface TaskToastOptions {
|
|
21
26
|
title: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/hooks/anthropic-context-window-limit-recovery/empty-content-recovery-sdk.test.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { AvailableSkill } from "../../agents/
|
|
1
|
+
import type { AvailableSkill } from "../../agents/types";
|
|
2
2
|
export declare function buildReminderMessage(availableSkills: AvailableSkill[]): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|