gitextract_lpvc9c4x/ ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ ├── feature_request.yml │ │ └── general.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── ci.yml │ ├── cla.yml │ ├── lint-workflows.yml │ ├── publish-platform.yml │ ├── publish.yml │ └── sisyphus-agent.yml ├── .gitignore ├── .opencode/ │ ├── background-tasks.json │ ├── command/ │ │ ├── get-unpublished-changes.md │ │ ├── omomomo.md │ │ ├── publish.md │ │ └── remove-deadcode.md │ └── skills/ │ ├── github-triage/ │ │ ├── SKILL.md │ │ └── scripts/ │ │ └── gh_fetch.py │ ├── pre-publish-review/ │ │ └── SKILL.md │ ├── work-with-pr/ │ │ └── SKILL.md │ └── work-with-pr-workspace/ │ ├── evals/ │ │ └── evals.json │ └── iteration-1/ │ ├── benchmark.json │ ├── benchmark.md │ ├── eval-1/ │ │ ├── eval_metadata.json │ │ ├── with_skill/ │ │ │ ├── grading.json │ │ │ ├── outputs/ │ │ │ │ ├── code-changes.md │ │ │ │ ├── execution-plan.md │ │ │ │ ├── pr-description.md │ │ │ │ └── verification-strategy.md │ │ │ └── timing.json │ │ └── without_skill/ │ │ ├── grading.json │ │ ├── outputs/ │ │ │ ├── code-changes.md │ │ │ ├── execution-plan.md │ │ │ ├── pr-description.md │ │ │ └── verification-strategy.md │ │ └── timing.json │ ├── eval-2/ │ │ ├── eval_metadata.json │ │ ├── with_skill/ │ │ │ ├── grading.json │ │ │ ├── outputs/ │ │ │ │ ├── code-changes.md │ │ │ │ ├── execution-plan.md │ │ │ │ ├── pr-description.md │ │ │ │ └── verification-strategy.md │ │ │ └── timing.json │ │ └── without_skill/ │ │ ├── grading.json │ │ ├── outputs/ │ │ │ ├── code-changes.md │ │ │ ├── execution-plan.md │ │ │ ├── pr-description.md │ │ │ └── verification-strategy.md │ │ └── timing.json │ ├── eval-3/ │ │ ├── eval_metadata.json │ │ ├── with_skill/ │ │ │ ├── grading.json │ │ │ ├── outputs/ │ │ │ │ ├── code-changes.md │ │ │ │ ├── execution-plan.md │ │ │ │ ├── pr-description.md │ │ │ │ └── verification-strategy.md │ │ │ └── timing.json │ │ └── without_skill/ │ │ ├── grading.json │ │ ├── outputs/ │ │ │ ├── code-changes.md │ │ │ ├── execution-plan.md │ │ │ ├── pr-description.md │ │ │ └── verification-strategy.md │ │ └── timing.json │ ├── eval-4/ │ │ ├── eval_metadata.json │ │ ├── with_skill/ │ │ │ ├── grading.json │ │ │ ├── outputs/ │ │ │ │ ├── code-changes.md │ │ │ │ ├── execution-plan.md │ │ │ │ ├── pr-description.md │ │ │ │ └── verification-strategy.md │ │ │ └── timing.json │ │ └── without_skill/ │ │ ├── grading.json │ │ ├── outputs/ │ │ │ ├── code-changes.md │ │ │ ├── execution-plan.md │ │ │ ├── pr-description.md │ │ │ └── verification-strategy.md │ │ └── timing.json │ ├── eval-5/ │ │ ├── eval_metadata.json │ │ ├── with_skill/ │ │ │ ├── grading.json │ │ │ ├── outputs/ │ │ │ │ ├── code-changes.md │ │ │ │ ├── execution-plan.md │ │ │ │ ├── pr-description.md │ │ │ │ └── verification-strategy.md │ │ │ └── timing.json │ │ └── without_skill/ │ │ ├── grading.json │ │ ├── outputs/ │ │ │ ├── code-changes.md │ │ │ ├── execution-plan.md │ │ │ ├── pr-description.md │ │ │ └── verification-strategy.md │ │ └── timing.json │ └── review.html ├── AGENTS.md ├── CLA.md ├── CONTRIBUTING.md ├── FIX-BLOCKS.md ├── LICENSE.md ├── README.ja.md ├── README.ko.md ├── README.md ├── README.ru.md ├── README.zh-cn.md ├── assets/ │ └── oh-my-opencode.schema.json ├── bin/ │ ├── oh-my-opencode.js │ ├── platform.d.ts │ ├── platform.js │ └── platform.test.ts ├── bun-test.d.ts ├── bunfig.toml ├── docs/ │ ├── guide/ │ │ ├── agent-model-matching.md │ │ ├── installation.md │ │ ├── orchestration.md │ │ └── overview.md │ ├── manifesto.md │ ├── reference/ │ │ ├── cli.md │ │ ├── configuration.md │ │ └── features.md │ └── troubleshooting/ │ └── ollama.md ├── package.json ├── packages/ │ ├── darwin-arm64/ │ │ ├── bin/ │ │ │ └── .gitkeep │ │ └── package.json │ ├── darwin-x64/ │ │ ├── bin/ │ │ │ └── .gitkeep │ │ └── package.json │ ├── darwin-x64-baseline/ │ │ └── package.json │ ├── linux-arm64/ │ │ ├── bin/ │ │ │ └── .gitkeep │ │ └── package.json │ ├── linux-arm64-musl/ │ │ ├── bin/ │ │ │ └── .gitkeep │ │ └── package.json │ ├── linux-x64/ │ │ ├── bin/ │ │ │ └── .gitkeep │ │ └── package.json │ ├── linux-x64-baseline/ │ │ └── package.json │ ├── linux-x64-musl/ │ │ ├── bin/ │ │ │ └── .gitkeep │ │ └── package.json │ ├── linux-x64-musl-baseline/ │ │ └── package.json │ ├── windows-x64/ │ │ ├── bin/ │ │ │ └── .gitkeep │ │ └── package.json │ └── windows-x64-baseline/ │ └── package.json ├── postinstall.mjs ├── script/ │ ├── build-binaries.test.ts │ ├── build-binaries.ts │ ├── build-schema-document.ts │ ├── build-schema.test.ts │ ├── build-schema.ts │ ├── generate-changelog.ts │ └── publish.ts ├── signatures/ │ └── cla.json ├── src/ │ ├── AGENTS.md │ ├── agents/ │ │ ├── AGENTS.md │ │ ├── agent-builder.ts │ │ ├── anti-duplication.test.ts │ │ ├── atlas/ │ │ │ ├── agent.ts │ │ │ ├── atlas-prompt.test.ts │ │ │ ├── default.ts │ │ │ ├── gemini.ts │ │ │ ├── gpt.ts │ │ │ ├── index.ts │ │ │ ├── prompt-checkbox-enforcement.test.ts │ │ │ └── prompt-section-builder.ts │ │ ├── builtin-agents/ │ │ │ ├── agent-overrides.ts │ │ │ ├── atlas-agent.ts │ │ │ ├── available-skills.ts │ │ │ ├── environment-context.ts │ │ │ ├── general-agents.ts │ │ │ ├── hephaestus-agent.ts │ │ │ ├── model-resolution.ts │ │ │ ├── resolve-file-uri.test.ts │ │ │ ├── resolve-file-uri.ts │ │ │ └── sisyphus-agent.ts │ │ ├── builtin-agents.ts │ │ ├── custom-agent-summaries.ts │ │ ├── delegation-trust-prompt.test.ts │ │ ├── dynamic-agent-prompt-builder.test.ts │ │ ├── dynamic-agent-prompt-builder.ts │ │ ├── env-context.test.ts │ │ ├── env-context.ts │ │ ├── explore.ts │ │ ├── hephaestus/ │ │ │ ├── agent.test.ts │ │ │ ├── agent.ts │ │ │ ├── gpt-5-3-codex.ts │ │ │ ├── gpt-5-4.ts │ │ │ ├── gpt.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── librarian.ts │ │ ├── metis.ts │ │ ├── momus.test.ts │ │ ├── momus.ts │ │ ├── multimodal-looker.ts │ │ ├── oracle.ts │ │ ├── prometheus/ │ │ │ ├── behavioral-summary.ts │ │ │ ├── gemini.ts │ │ │ ├── gpt.ts │ │ │ ├── high-accuracy-mode.ts │ │ │ ├── identity-constraints.ts │ │ │ ├── index.ts │ │ │ ├── interview-mode.ts │ │ │ ├── plan-generation.ts │ │ │ ├── plan-template.ts │ │ │ └── system-prompt.ts │ │ ├── prometheus-prompt.test.ts │ │ ├── sisyphus/ │ │ │ ├── default.ts │ │ │ ├── gemini.ts │ │ │ ├── gpt-5-4.ts │ │ │ └── index.ts │ │ ├── sisyphus-junior/ │ │ │ ├── agent.ts │ │ │ ├── default.ts │ │ │ ├── gemini.ts │ │ │ ├── gpt-5-3-codex.ts │ │ │ ├── gpt-5-4.ts │ │ │ ├── gpt.ts │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── sisyphus.ts │ │ ├── tool-restrictions.test.ts │ │ ├── types.test.ts │ │ ├── types.ts │ │ └── utils.test.ts │ ├── cli/ │ │ ├── AGENTS.md │ │ ├── __snapshots__/ │ │ │ └── model-fallback.test.ts.snap │ │ ├── cli-installer.test.ts │ │ ├── cli-installer.ts │ │ ├── cli-program.ts │ │ ├── config-manager/ │ │ │ ├── AGENTS.md │ │ │ ├── add-plugin-to-opencode-config.ts │ │ │ ├── bun-install.test.ts │ │ │ ├── bun-install.ts │ │ │ ├── config-context.ts │ │ │ ├── deep-merge-record.ts │ │ │ ├── detect-current-config.ts │ │ │ ├── ensure-config-directory-exists.ts │ │ │ ├── format-error-with-suggestion.ts │ │ │ ├── generate-omo-config.ts │ │ │ ├── npm-dist-tags.ts │ │ │ ├── opencode-binary.ts │ │ │ ├── opencode-config-format.ts │ │ │ ├── parse-opencode-config-file.ts │ │ │ ├── plugin-detection.test.ts │ │ │ ├── plugin-name-with-version.ts │ │ │ ├── write-omo-config.test.ts │ │ │ └── write-omo-config.ts │ │ ├── config-manager.test.ts │ │ ├── config-manager.ts │ │ ├── doctor/ │ │ │ ├── checks/ │ │ │ │ ├── config.test.ts │ │ │ │ ├── config.ts │ │ │ │ ├── dependencies.test.ts │ │ │ │ ├── dependencies.ts │ │ │ │ ├── index.ts │ │ │ │ ├── model-resolution-cache.ts │ │ │ │ ├── model-resolution-config.ts │ │ │ │ ├── model-resolution-details.ts │ │ │ │ ├── model-resolution-effective-model.ts │ │ │ │ ├── model-resolution-types.ts │ │ │ │ ├── model-resolution-variant.ts │ │ │ │ ├── model-resolution.test.ts │ │ │ │ ├── model-resolution.ts │ │ │ │ ├── system-binary.ts │ │ │ │ ├── system-loaded-version.test.ts │ │ │ │ ├── system-loaded-version.ts │ │ │ │ ├── system-plugin.ts │ │ │ │ ├── system.test.ts │ │ │ │ ├── system.ts │ │ │ │ ├── tools-gh.ts │ │ │ │ ├── tools-lsp.ts │ │ │ │ ├── tools-mcp.ts │ │ │ │ └── tools.ts │ │ │ ├── constants.ts │ │ │ ├── format-default.test.ts │ │ │ ├── format-default.ts │ │ │ ├── format-shared.ts │ │ │ ├── format-status.ts │ │ │ ├── format-verbose.ts │ │ │ ├── formatter.test.ts │ │ │ ├── formatter.ts │ │ │ ├── index.ts │ │ │ ├── runner.test.ts │ │ │ ├── runner.ts │ │ │ └── types.ts │ │ ├── fallback-chain-resolution.ts │ │ ├── get-local-version/ │ │ │ ├── formatter.ts │ │ │ ├── get-local-version.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── index.test.ts │ │ ├── index.ts │ │ ├── install-validators.test.ts │ │ ├── install-validators.ts │ │ ├── install.test.ts │ │ ├── install.ts │ │ ├── mcp-oauth/ │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ ├── login.test.ts │ │ │ ├── login.ts │ │ │ ├── logout.test.ts │ │ │ ├── logout.ts │ │ │ ├── status.test.ts │ │ │ └── status.ts │ │ ├── model-fallback-requirements.test.ts │ │ ├── model-fallback-requirements.ts │ │ ├── model-fallback-types.ts │ │ ├── model-fallback.test.ts │ │ ├── model-fallback.ts │ │ ├── openai-only-model-catalog.test.ts │ │ ├── openai-only-model-catalog.ts │ │ ├── provider-availability.ts │ │ ├── provider-model-id-transform.test.ts │ │ ├── provider-model-id-transform.ts │ │ ├── run/ │ │ │ ├── AGENTS.md │ │ │ ├── agent-profile-colors.ts │ │ │ ├── agent-resolver.ts │ │ │ ├── completion-continuation.test.ts │ │ │ ├── completion-verbose-logging.test.ts │ │ │ ├── completion.test.ts │ │ │ ├── completion.ts │ │ │ ├── continuation-state-marker.test.ts │ │ │ ├── continuation-state.ts │ │ │ ├── display-chars.ts │ │ │ ├── event-formatting.ts │ │ │ ├── event-handlers.test.ts │ │ │ ├── event-handlers.ts │ │ │ ├── event-state.ts │ │ │ ├── event-stream-processor.ts │ │ │ ├── events.test.ts │ │ │ ├── events.ts │ │ │ ├── index.ts │ │ │ ├── integration.test.ts │ │ │ ├── json-output.test.ts │ │ │ ├── json-output.ts │ │ │ ├── message-part-delta.test.ts │ │ │ ├── model-resolver.test.ts │ │ │ ├── model-resolver.ts │ │ │ ├── on-complete-hook.test.ts │ │ │ ├── on-complete-hook.ts │ │ │ ├── opencode-binary-resolver.test.ts │ │ │ ├── opencode-binary-resolver.ts │ │ │ ├── output-renderer.ts │ │ │ ├── poll-for-completion.test.ts │ │ │ ├── poll-for-completion.ts │ │ │ ├── runner.test.ts │ │ │ ├── runner.ts │ │ │ ├── server-connection.test.ts │ │ │ ├── server-connection.ts │ │ │ ├── session-resolver.test.ts │ │ │ ├── session-resolver.ts │ │ │ ├── stdin-suppression.test.ts │ │ │ ├── stdin-suppression.ts │ │ │ ├── timestamp-output.test.ts │ │ │ ├── timestamp-output.ts │ │ │ ├── tool-input-preview.ts │ │ │ └── types.ts │ │ ├── tui-install-prompts.ts │ │ ├── tui-installer.ts │ │ └── types.ts │ ├── config/ │ │ ├── AGENTS.md │ │ ├── index.ts │ │ ├── schema/ │ │ │ ├── agent-names.ts │ │ │ ├── agent-overrides.ts │ │ │ ├── babysitting.ts │ │ │ ├── background-task-circuit-breaker.test.ts │ │ │ ├── background-task.test.ts │ │ │ ├── background-task.ts │ │ │ ├── browser-automation.ts │ │ │ ├── categories.ts │ │ │ ├── claude-code.ts │ │ │ ├── commands.ts │ │ │ ├── comment-checker.ts │ │ │ ├── dynamic-context-pruning.ts │ │ │ ├── experimental.ts │ │ │ ├── fallback-models.ts │ │ │ ├── git-env-prefix.ts │ │ │ ├── git-master.ts │ │ │ ├── hooks.ts │ │ │ ├── internal/ │ │ │ │ └── permission.ts │ │ │ ├── notification.ts │ │ │ ├── oh-my-opencode-config.ts │ │ │ ├── openclaw.ts │ │ │ ├── ralph-loop.ts │ │ │ ├── runtime-fallback.ts │ │ │ ├── sisyphus-agent.ts │ │ │ ├── sisyphus.ts │ │ │ ├── skills.ts │ │ │ ├── start-work.ts │ │ │ ├── tmux.ts │ │ │ └── websearch.ts │ │ ├── schema.test.ts │ │ └── schema.ts │ ├── create-hooks.ts │ ├── create-managers.ts │ ├── create-tools.ts │ ├── features/ │ │ ├── AGENTS.md │ │ ├── background-agent/ │ │ │ ├── AGENTS.md │ │ │ ├── background-task-notification-template.ts │ │ │ ├── cancel-task-cleanup.test.ts │ │ │ ├── compaction-aware-message-resolver.test.ts │ │ │ ├── compaction-aware-message-resolver.ts │ │ │ ├── concurrency.test.ts │ │ │ ├── concurrency.ts │ │ │ ├── constants.ts │ │ │ ├── default-message-staleness-timeout.test.ts │ │ │ ├── default-stale-timeout.test.ts │ │ │ ├── duration-formatter.ts │ │ │ ├── error-classifier.test.ts │ │ │ ├── error-classifier.ts │ │ │ ├── fallback-retry-handler.test.ts │ │ │ ├── fallback-retry-handler.ts │ │ │ ├── index.ts │ │ │ ├── loop-detector.test.ts │ │ │ ├── loop-detector.ts │ │ │ ├── manager-circuit-breaker.test.ts │ │ │ ├── manager-session-permission.test.ts │ │ │ ├── manager-shutdown-global-cleanup.test.ts │ │ │ ├── manager.polling.test.ts │ │ │ ├── manager.test.ts │ │ │ ├── manager.ts │ │ │ ├── opencode-client.ts │ │ │ ├── process-cleanup.test.ts │ │ │ ├── process-cleanup.ts │ │ │ ├── remove-task-toast-tracking.ts │ │ │ ├── session-idle-event-handler.test.ts │ │ │ ├── session-idle-event-handler.ts │ │ │ ├── session-status-classifier.test.ts │ │ │ ├── session-status-classifier.ts │ │ │ ├── spawner/ │ │ │ │ ├── parent-directory-resolver.test.ts │ │ │ │ └── parent-directory-resolver.ts │ │ │ ├── spawner.test.ts │ │ │ ├── spawner.ts │ │ │ ├── state.ts │ │ │ ├── subagent-spawn-limits.test.ts │ │ │ ├── subagent-spawn-limits.ts │ │ │ ├── task-completion-cleanup.test.ts │ │ │ ├── task-history-cleanup.test.ts │ │ │ ├── task-history.test.ts │ │ │ ├── task-history.ts │ │ │ ├── task-poller.test.ts │ │ │ ├── task-poller.ts │ │ │ └── types.ts │ │ ├── boulder-state/ │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── storage.test.ts │ │ │ ├── storage.ts │ │ │ ├── top-level-task.test.ts │ │ │ ├── top-level-task.ts │ │ │ └── types.ts │ │ ├── builtin-commands/ │ │ │ ├── commands.test.ts │ │ │ ├── commands.ts │ │ │ ├── index.ts │ │ │ ├── templates/ │ │ │ │ ├── handoff.ts │ │ │ │ ├── init-deep.ts │ │ │ │ ├── ralph-loop.ts │ │ │ │ ├── refactor.ts │ │ │ │ ├── start-work.ts │ │ │ │ ├── stop-continuation.test.ts │ │ │ │ └── stop-continuation.ts │ │ │ └── types.ts │ │ ├── builtin-skills/ │ │ │ ├── agent-browser/ │ │ │ │ └── SKILL.md │ │ │ ├── dev-browser/ │ │ │ │ ├── SKILL.md │ │ │ │ └── references/ │ │ │ │ ├── installation.md │ │ │ │ └── scraping.md │ │ │ ├── frontend-ui-ux/ │ │ │ │ └── SKILL.md │ │ │ ├── git-master/ │ │ │ │ └── SKILL.md │ │ │ ├── index.ts │ │ │ ├── skills/ │ │ │ │ ├── dev-browser.ts │ │ │ │ ├── frontend-ui-ux.ts │ │ │ │ ├── git-master-skill-metadata.ts │ │ │ │ ├── git-master.ts │ │ │ │ ├── index.ts │ │ │ │ ├── playwright-cli.ts │ │ │ │ └── playwright.ts │ │ │ ├── skills.test.ts │ │ │ ├── skills.ts │ │ │ └── types.ts │ │ ├── claude-code-agent-loader/ │ │ │ ├── claude-model-mapper.test.ts │ │ │ ├── claude-model-mapper.ts │ │ │ ├── index.ts │ │ │ ├── loader.ts │ │ │ └── types.ts │ │ ├── claude-code-command-loader/ │ │ │ ├── index.ts │ │ │ ├── loader.ts │ │ │ └── types.ts │ │ ├── claude-code-mcp-loader/ │ │ │ ├── env-expander.ts │ │ │ ├── index.ts │ │ │ ├── loader.test.ts │ │ │ ├── loader.ts │ │ │ ├── transformer.ts │ │ │ └── types.ts │ │ ├── claude-code-plugin-loader/ │ │ │ ├── agent-loader.ts │ │ │ ├── command-loader.ts │ │ │ ├── discovery.ts │ │ │ ├── hook-loader.ts │ │ │ ├── index.ts │ │ │ ├── loader.ts │ │ │ ├── mcp-server-loader.ts │ │ │ ├── plugin-path-resolver.ts │ │ │ ├── skill-loader.ts │ │ │ └── types.ts │ │ ├── claude-code-session-state/ │ │ │ ├── index.ts │ │ │ ├── state.test.ts │ │ │ └── state.ts │ │ ├── claude-tasks/ │ │ │ ├── AGENTS.md │ │ │ ├── session-storage.test.ts │ │ │ ├── session-storage.ts │ │ │ ├── storage.test.ts │ │ │ ├── storage.ts │ │ │ ├── types.test.ts │ │ │ └── types.ts │ │ ├── context-injector/ │ │ │ ├── collector.test.ts │ │ │ ├── collector.ts │ │ │ ├── index.ts │ │ │ ├── injector.test.ts │ │ │ ├── injector.ts │ │ │ └── types.ts │ │ ├── hook-message-injector/ │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── injector.test.ts │ │ │ ├── injector.ts │ │ │ └── types.ts │ │ ├── mcp-oauth/ │ │ │ ├── AGENTS.md │ │ │ ├── callback-server.test.ts │ │ │ ├── callback-server.ts │ │ │ ├── dcr.test.ts │ │ │ ├── dcr.ts │ │ │ ├── discovery.test.ts │ │ │ ├── discovery.ts │ │ │ ├── oauth-authorization-flow.ts │ │ │ ├── provider.test.ts │ │ │ ├── provider.ts │ │ │ ├── resource-indicator.test.ts │ │ │ ├── resource-indicator.ts │ │ │ ├── schema.test.ts │ │ │ ├── schema.ts │ │ │ ├── step-up.test.ts │ │ │ ├── step-up.ts │ │ │ ├── storage.test.ts │ │ │ └── storage.ts │ │ ├── opencode-skill-loader/ │ │ │ ├── AGENTS.md │ │ │ ├── agents-skills-global.test.ts │ │ │ ├── allowed-tools-parser.ts │ │ │ ├── async-loader.test.ts │ │ │ ├── async-loader.ts │ │ │ ├── blocking.test.ts │ │ │ ├── blocking.ts │ │ │ ├── config-source-discovery.test.ts │ │ │ ├── config-source-discovery.ts │ │ │ ├── discover-worker.ts │ │ │ ├── git-master-template-injection.test.ts │ │ │ ├── git-master-template-injection.ts │ │ │ ├── index.ts │ │ │ ├── loaded-skill-from-path.ts │ │ │ ├── loaded-skill-template-extractor.ts │ │ │ ├── loader.test.ts │ │ │ ├── loader.ts │ │ │ ├── merger/ │ │ │ │ ├── builtin-skill-converter.ts │ │ │ │ ├── config-skill-entry-loader.ts │ │ │ │ ├── scope-priority.ts │ │ │ │ ├── skill-definition-merger.ts │ │ │ │ └── skills-config-normalizer.ts │ │ │ ├── merger.test.ts │ │ │ ├── merger.ts │ │ │ ├── project-skill-tool-references.test.ts │ │ │ ├── skill-content.test.ts │ │ │ ├── skill-content.ts │ │ │ ├── skill-deduplication.ts │ │ │ ├── skill-definition-record.ts │ │ │ ├── skill-directory-loader.ts │ │ │ ├── skill-discovery.ts │ │ │ ├── skill-mcp-config.ts │ │ │ ├── skill-resolution-options.ts │ │ │ ├── skill-template-resolver.ts │ │ │ └── types.ts │ │ ├── run-continuation-state/ │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── storage.test.ts │ │ │ ├── storage.ts │ │ │ └── types.ts │ │ ├── skill-mcp-manager/ │ │ │ ├── cleanup.ts │ │ │ ├── connection-race.test.ts │ │ │ ├── connection-type.ts │ │ │ ├── connection.ts │ │ │ ├── disconnect-cleanup.test.ts │ │ │ ├── env-cleaner.test.ts │ │ │ ├── env-cleaner.ts │ │ │ ├── http-client.ts │ │ │ ├── index.ts │ │ │ ├── manager.test.ts │ │ │ ├── manager.ts │ │ │ ├── oauth-handler.ts │ │ │ ├── stdio-client.ts │ │ │ └── types.ts │ │ ├── task-toast-manager/ │ │ │ ├── index.ts │ │ │ ├── manager.test.ts │ │ │ ├── manager.ts │ │ │ └── types.ts │ │ ├── tmux-subagent/ │ │ │ ├── AGENTS.md │ │ │ ├── action-executor-core.ts │ │ │ ├── action-executor.test.ts │ │ │ ├── action-executor.ts │ │ │ ├── cleanup.ts │ │ │ ├── decision-engine.test.ts │ │ │ ├── decision-engine.ts │ │ │ ├── event-handlers.ts │ │ │ ├── grid-planning.ts │ │ │ ├── index.ts │ │ │ ├── layout-config.test.ts │ │ │ ├── manager.test.ts │ │ │ ├── manager.ts │ │ │ ├── oldest-agent-pane.ts │ │ │ ├── pane-split-availability.ts │ │ │ ├── pane-state-parser.test.ts │ │ │ ├── pane-state-parser.ts │ │ │ ├── pane-state-querier.test.ts │ │ │ ├── pane-state-querier.ts │ │ │ ├── polling-constants.ts │ │ │ ├── polling-manager.test.ts │ │ │ ├── polling-manager.ts │ │ │ ├── polling.ts │ │ │ ├── session-created-event.ts │ │ │ ├── session-created-handler.ts │ │ │ ├── session-deleted-handler.ts │ │ │ ├── session-message-count.ts │ │ │ ├── session-ready-waiter.ts │ │ │ ├── session-status-parser.ts │ │ │ ├── spawn-action-decider.ts │ │ │ ├── spawn-target-finder.ts │ │ │ ├── tmux-grid-constants.ts │ │ │ ├── tracked-session-state.ts │ │ │ ├── types.ts │ │ │ └── zombie-pane.test.ts │ │ └── tool-metadata-store/ │ │ ├── index.test.ts │ │ ├── index.ts │ │ └── store.ts │ ├── hooks/ │ │ ├── AGENTS.md │ │ ├── agent-usage-reminder/ │ │ │ ├── constants.ts │ │ │ ├── hook.ts │ │ │ ├── index.ts │ │ │ ├── storage.ts │ │ │ └── types.ts │ │ ├── anthropic-context-window-limit-recovery/ │ │ │ ├── AGENTS.md │ │ │ ├── aggressive-truncation-strategy.ts │ │ │ ├── client.ts │ │ │ ├── deduplication-recovery.ts │ │ │ ├── empty-content-recovery-sdk.test.ts │ │ │ ├── empty-content-recovery-sdk.ts │ │ │ ├── empty-content-recovery.ts │ │ │ ├── executor.test.ts │ │ │ ├── executor.ts │ │ │ ├── index.ts │ │ │ ├── message-builder.ts │ │ │ ├── message-storage-directory.ts │ │ │ ├── parser.test.ts │ │ │ ├── parser.ts │ │ │ ├── pruning-deduplication.test.ts │ │ │ ├── pruning-deduplication.ts │ │ │ ├── pruning-tool-output-truncation.ts │ │ │ ├── pruning-types.ts │ │ │ ├── recovery-deduplication.test.ts │ │ │ ├── recovery-hook.test.ts │ │ │ ├── recovery-hook.ts │ │ │ ├── recovery-strategy.ts │ │ │ ├── state.ts │ │ │ ├── storage-paths.ts │ │ │ ├── storage.test.ts │ │ │ ├── storage.ts │ │ │ ├── summarize-retry-strategy.test.ts │ │ │ ├── summarize-retry-strategy.ts │ │ │ ├── target-token-truncation.ts │ │ │ ├── tool-part-types.ts │ │ │ ├── tool-result-storage-sdk.ts │ │ │ ├── tool-result-storage.ts │ │ │ └── types.ts │ │ ├── anthropic-effort/ │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── atlas/ │ │ │ ├── AGENTS.md │ │ │ ├── atlas-hook.ts │ │ │ ├── boulder-continuation-injector.ts │ │ │ ├── boulder-session-lineage.ts │ │ │ ├── compaction-agent-filter.test.ts │ │ │ ├── event-handler.ts │ │ │ ├── final-wave-approval-gate-regression.test.ts │ │ │ ├── final-wave-approval-gate.test.ts │ │ │ ├── final-wave-approval-gate.ts │ │ │ ├── final-wave-plan-state.ts │ │ │ ├── hook-name.ts │ │ │ ├── idle-event-lineage.test.ts │ │ │ ├── idle-event.ts │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ ├── is-abort-error.ts │ │ │ ├── recent-model-resolver.ts │ │ │ ├── resolve-active-boulder-session.ts │ │ │ ├── session-last-agent.sqlite.test.ts │ │ │ ├── session-last-agent.ts │ │ │ ├── sisyphus-path.ts │ │ │ ├── subagent-session-id.test.ts │ │ │ ├── subagent-session-id.ts │ │ │ ├── system-reminder-templates.test.ts │ │ │ ├── system-reminder-templates.ts │ │ │ ├── tool-execute-after.ts │ │ │ ├── tool-execute-before.ts │ │ │ ├── tsconfig.json │ │ │ ├── types.ts │ │ │ ├── verification-reminders.test.ts │ │ │ ├── verification-reminders.ts │ │ │ └── write-edit-tool-policy.ts │ │ ├── auto-slash-command/ │ │ │ ├── auto-slash-command-leak.test.ts │ │ │ ├── constants.test.ts │ │ │ ├── constants.ts │ │ │ ├── detector.test.ts │ │ │ ├── detector.ts │ │ │ ├── executor-resolution.test.ts │ │ │ ├── executor.test.ts │ │ │ ├── executor.ts │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ ├── processed-command-store.ts │ │ │ └── types.ts │ │ ├── auto-update-checker/ │ │ │ ├── cache.test.ts │ │ │ ├── cache.ts │ │ │ ├── checker/ │ │ │ │ ├── cached-version.ts │ │ │ │ ├── check-for-update.ts │ │ │ │ ├── config-paths.ts │ │ │ │ ├── jsonc-strip.ts │ │ │ │ ├── latest-version.ts │ │ │ │ ├── local-dev-path.ts │ │ │ │ ├── local-dev-version.ts │ │ │ │ ├── package-json-locator.ts │ │ │ │ ├── pinned-version-updater.test.ts │ │ │ │ ├── pinned-version-updater.ts │ │ │ │ ├── plugin-entry.test.ts │ │ │ │ ├── plugin-entry.ts │ │ │ │ ├── sync-package-json.test.ts │ │ │ │ └── sync-package-json.ts │ │ │ ├── checker.test.ts │ │ │ ├── checker.ts │ │ │ ├── constants.test.ts │ │ │ ├── constants.ts │ │ │ ├── hook/ │ │ │ │ ├── background-update-check.test.ts │ │ │ │ ├── background-update-check.ts │ │ │ │ ├── config-errors-toast.ts │ │ │ │ ├── connected-providers-status.ts │ │ │ │ ├── model-cache-warning.ts │ │ │ │ ├── spinner-toast.ts │ │ │ │ ├── startup-toasts.ts │ │ │ │ ├── update-toasts.ts │ │ │ │ └── workspace-resolution.test.ts │ │ │ ├── hook.test.ts │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── version-channel.ts │ │ ├── background-notification/ │ │ │ ├── hook.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── category-skill-reminder/ │ │ │ ├── formatter.ts │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── claude-code-hooks/ │ │ │ ├── AGENTS.md │ │ │ ├── claude-code-hooks-hook.ts │ │ │ ├── config-loader.ts │ │ │ ├── config.ts │ │ │ ├── dispatch-hook.ts │ │ │ ├── execute-http-hook.test.ts │ │ │ ├── execute-http-hook.ts │ │ │ ├── handlers/ │ │ │ │ ├── chat-message-handler.ts │ │ │ │ ├── pre-compact-handler.ts │ │ │ │ ├── session-event-handler.ts │ │ │ │ ├── tool-execute-after-handler.test.ts │ │ │ │ ├── tool-execute-after-handler.ts │ │ │ │ └── tool-execute-before-handler.ts │ │ │ ├── index.ts │ │ │ ├── plugin-config.ts │ │ │ ├── post-tool-use.ts │ │ │ ├── pre-compact.ts │ │ │ ├── pre-tool-use.ts │ │ │ ├── session-hook-state.ts │ │ │ ├── stop.test.ts │ │ │ ├── stop.ts │ │ │ ├── todo.ts │ │ │ ├── tool-input-cache.ts │ │ │ ├── transcript.test.ts │ │ │ ├── transcript.ts │ │ │ ├── types.ts │ │ │ ├── user-prompt-submit.test.ts │ │ │ └── user-prompt-submit.ts │ │ ├── comment-checker/ │ │ │ ├── cli-runner.ts │ │ │ ├── cli.test.ts │ │ │ ├── cli.ts │ │ │ ├── downloader.ts │ │ │ ├── hook.apply-patch.test.ts │ │ │ ├── hook.ts │ │ │ ├── index.ts │ │ │ ├── pending-calls.test.ts │ │ │ ├── pending-calls.ts │ │ │ └── types.ts │ │ ├── compaction-context-injector/ │ │ │ ├── compaction-context-prompt.ts │ │ │ ├── constants.ts │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ ├── recovery-prompt-config.ts │ │ │ ├── recovery.test.ts │ │ │ ├── recovery.ts │ │ │ ├── session-id.ts │ │ │ ├── session-prompt-config-resolver.test.ts │ │ │ ├── session-prompt-config-resolver.ts │ │ │ ├── tail-monitor.ts │ │ │ ├── types.ts │ │ │ └── validated-model.ts │ │ ├── compaction-todo-preserver/ │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── context-window-monitor.model-context-limits.test.ts │ │ ├── context-window-monitor.test.ts │ │ ├── context-window-monitor.ts │ │ ├── delegate-task-retry/ │ │ │ ├── guidance.ts │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ └── patterns.ts │ │ ├── directory-agents-injector/ │ │ │ ├── constants.ts │ │ │ ├── finder.ts │ │ │ ├── hook.ts │ │ │ ├── index.ts │ │ │ ├── injector.test.ts │ │ │ ├── injector.ts │ │ │ └── storage.ts │ │ ├── directory-readme-injector/ │ │ │ ├── constants.ts │ │ │ ├── finder.ts │ │ │ ├── hook.ts │ │ │ ├── index.ts │ │ │ ├── injector.test.ts │ │ │ ├── injector.ts │ │ │ └── storage.ts │ │ ├── edit-error-recovery/ │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── empty-task-response-detector.ts │ │ ├── hashline-edit-diff-enhancer/ │ │ │ └── hook.ts │ │ ├── hashline-read-enhancer/ │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── interactive-bash-session/ │ │ │ ├── constants.ts │ │ │ ├── hook.ts │ │ │ ├── index.ts │ │ │ ├── interactive-bash-session-tracker.ts │ │ │ ├── parser.ts │ │ │ ├── state-manager.ts │ │ │ ├── storage.ts │ │ │ ├── tmux-command-parser.ts │ │ │ └── types.ts │ │ ├── json-error-recovery/ │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── keyword-detector/ │ │ │ ├── AGENTS.md │ │ │ ├── analyze/ │ │ │ │ ├── default.ts │ │ │ │ └── index.ts │ │ │ ├── constants.ts │ │ │ ├── detector.ts │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ ├── search/ │ │ │ │ ├── default.ts │ │ │ │ └── index.ts │ │ │ ├── types.ts │ │ │ ├── ultrawork/ │ │ │ │ ├── default.ts │ │ │ │ ├── gemini.ts │ │ │ │ ├── gpt.ts │ │ │ │ ├── index.ts │ │ │ │ ├── planner.ts │ │ │ │ └── source-detector.ts │ │ │ └── ultrawork-runtime-variant.test.ts │ │ ├── model-fallback/ │ │ │ ├── hook.test.ts │ │ │ └── hook.ts │ │ ├── no-hephaestus-non-gpt/ │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── no-sisyphus-gpt/ │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── non-interactive-env/ │ │ │ ├── constants.ts │ │ │ ├── detector.ts │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ ├── non-interactive-env-hook.ts │ │ │ └── types.ts │ │ ├── openclaw.test.ts │ │ ├── openclaw.ts │ │ ├── preemptive-compaction.aws-bedrock.test.ts │ │ ├── preemptive-compaction.context-limit-cache.test.ts │ │ ├── preemptive-compaction.test.ts │ │ ├── preemptive-compaction.ts │ │ ├── prometheus-md-only/ │ │ │ ├── agent-matcher.ts │ │ │ ├── agent-resolution.ts │ │ │ ├── constants.ts │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ └── path-policy.ts │ │ ├── question-label-truncator/ │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── ralph-loop/ │ │ │ ├── AGENTS.md │ │ │ ├── command-arguments.ts │ │ │ ├── completion-handler.ts │ │ │ ├── completion-promise-detector.test.ts │ │ │ ├── completion-promise-detector.ts │ │ │ ├── constants.ts │ │ │ ├── continuation-prompt-builder.ts │ │ │ ├── continuation-prompt-injector.ts │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ ├── iteration-continuation.ts │ │ │ ├── loop-session-recovery.ts │ │ │ ├── loop-state-controller.ts │ │ │ ├── message-storage-directory.ts │ │ │ ├── pending-verification-handler.ts │ │ │ ├── ralph-loop-event-handler.ts │ │ │ ├── ralph-loop-hook.ts │ │ │ ├── reset-strategy-race-condition.test.ts │ │ │ ├── session-event-handler.ts │ │ │ ├── session-reset-strategy.ts │ │ │ ├── storage.ts │ │ │ ├── types.ts │ │ │ ├── ulw-loop-verification.test.ts │ │ │ ├── verification-failure-handler.ts │ │ │ └── with-timeout.ts │ │ ├── read-image-resizer/ │ │ │ ├── hook.test.ts │ │ │ ├── hook.ts │ │ │ ├── image-dimensions.test.ts │ │ │ ├── image-dimensions.ts │ │ │ ├── image-resizer.test.ts │ │ │ ├── image-resizer.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── rules-injector/ │ │ │ ├── AGENTS.md │ │ │ ├── cache.ts │ │ │ ├── constants.ts │ │ │ ├── finder.test.ts │ │ │ ├── finder.ts │ │ │ ├── hook.ts │ │ │ ├── index.ts │ │ │ ├── injector.test.ts │ │ │ ├── injector.ts │ │ │ ├── matcher.ts │ │ │ ├── output-path.test.ts │ │ │ ├── output-path.ts │ │ │ ├── parser.test.ts │ │ │ ├── parser.ts │ │ │ ├── project-root-finder.ts │ │ │ ├── rule-distance.ts │ │ │ ├── rule-file-finder.ts │ │ │ ├── rule-file-scanner.ts │ │ │ ├── storage.ts │ │ │ └── types.ts │ │ ├── runtime-fallback/ │ │ │ ├── agent-resolver.ts │ │ │ ├── auto-retry.ts │ │ │ ├── chat-message-handler.ts │ │ │ ├── constants.ts │ │ │ ├── dispose.test.ts │ │ │ ├── error-classifier.test.ts │ │ │ ├── error-classifier.ts │ │ │ ├── event-handler.test.ts │ │ │ ├── event-handler.ts │ │ │ ├── fallback-bootstrap-model.ts │ │ │ ├── fallback-models.test.ts │ │ │ ├── fallback-models.ts │ │ │ ├── fallback-retry-dispatcher.ts │ │ │ ├── fallback-state.ts │ │ │ ├── hook-dispose-cleanup.test.ts │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ ├── last-user-retry-parts.ts │ │ │ ├── message-update-handler.test.ts │ │ │ ├── message-update-handler.ts │ │ │ ├── retry-model-payload.ts │ │ │ ├── session-messages.ts │ │ │ ├── session-status-handler.test.ts │ │ │ ├── session-status-handler.ts │ │ │ ├── success-retry-key-cleanup.test.ts │ │ │ ├── types.ts │ │ │ └── visible-assistant-response.ts │ │ ├── session-notification-content.test.ts │ │ ├── session-notification-content.ts │ │ ├── session-notification-formatting.ts │ │ ├── session-notification-input-needed.test.ts │ │ ├── session-notification-scheduler.ts │ │ ├── session-notification-sender.test.ts │ │ ├── session-notification-sender.ts │ │ ├── session-notification-utils.ts │ │ ├── session-notification.test.ts │ │ ├── session-notification.ts │ │ ├── session-recovery/ │ │ │ ├── AGENTS.md │ │ │ ├── constants.ts │ │ │ ├── detect-error-type.test.ts │ │ │ ├── detect-error-type.ts │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ ├── recover-empty-content-message-sdk.test.ts │ │ │ ├── recover-empty-content-message-sdk.ts │ │ │ ├── recover-thinking-block-order.ts │ │ │ ├── recover-thinking-disabled-violation.ts │ │ │ ├── recover-tool-result-missing.ts │ │ │ ├── recover-unavailable-tool.ts │ │ │ ├── resume.test.ts │ │ │ ├── resume.ts │ │ │ ├── storage/ │ │ │ │ ├── empty-messages.ts │ │ │ │ ├── empty-text.ts │ │ │ │ ├── message-dir.ts │ │ │ │ ├── messages-reader.ts │ │ │ │ ├── orphan-thinking-search.ts │ │ │ │ ├── part-content.ts │ │ │ │ ├── part-id.ts │ │ │ │ ├── parts-reader.ts │ │ │ │ ├── readers-from-sdk.test.ts │ │ │ │ ├── text-part-injector.ts │ │ │ │ ├── thinking-block-search.ts │ │ │ │ ├── thinking-prepend.ts │ │ │ │ └── thinking-strip.ts │ │ │ ├── storage.ts │ │ │ └── types.ts │ │ ├── session-todo-status.ts │ │ ├── shared/ │ │ │ └── compaction-model-resolver.ts │ │ ├── sisyphus-junior-notepad/ │ │ │ ├── constants.ts │ │ │ ├── hook.ts │ │ │ └── index.ts │ │ ├── start-work/ │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ ├── parse-user-request.test.ts │ │ │ ├── parse-user-request.ts │ │ │ ├── start-work-hook.ts │ │ │ ├── worktree-detector.test.ts │ │ │ └── worktree-detector.ts │ │ ├── stop-continuation-guard/ │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── task-reminder/ │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── task-resume-info/ │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── tasks-todowrite-disabler/ │ │ │ ├── constants.ts │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── think-mode/ │ │ │ ├── detector.ts │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ ├── switcher.test.ts │ │ │ ├── switcher.ts │ │ │ └── types.ts │ │ ├── thinking-block-validator/ │ │ │ ├── hook.ts │ │ │ └── index.ts │ │ ├── todo-continuation-enforcer/ │ │ │ ├── AGENTS.md │ │ │ ├── abort-detection.ts │ │ │ ├── compaction-guard.ts │ │ │ ├── constants.ts │ │ │ ├── continuation-injection.test.ts │ │ │ ├── continuation-injection.ts │ │ │ ├── countdown.ts │ │ │ ├── dispose.test.ts │ │ │ ├── handler.ts │ │ │ ├── idle-event.ts │ │ │ ├── index.ts │ │ │ ├── message-directory.ts │ │ │ ├── non-idle-events.ts │ │ │ ├── pending-question-detection.test.ts │ │ │ ├── pending-question-detection.ts │ │ │ ├── resolve-message-info.ts │ │ │ ├── session-state.regression.test.ts │ │ │ ├── session-state.test.ts │ │ │ ├── session-state.ts │ │ │ ├── stagnation-detection.test.ts │ │ │ ├── stagnation-detection.ts │ │ │ ├── todo-continuation-enforcer.test.ts │ │ │ ├── todo.ts │ │ │ └── types.ts │ │ ├── todo-description-override/ │ │ │ ├── description.ts │ │ │ ├── hook.ts │ │ │ ├── index.test.ts │ │ │ └── index.ts │ │ ├── tool-output-truncator.test.ts │ │ ├── tool-output-truncator.ts │ │ ├── unstable-agent-babysitter/ │ │ │ ├── index.test.ts │ │ │ ├── index.ts │ │ │ ├── task-message-analyzer.ts │ │ │ └── unstable-agent-babysitter-hook.ts │ │ └── write-existing-file-guard/ │ │ ├── hook.ts │ │ ├── index.test.ts │ │ └── index.ts │ ├── index.compaction-model-agnostic.static.test.ts │ ├── index.test.ts │ ├── index.ts │ ├── mcp/ │ │ ├── AGENTS.md │ │ ├── context7.ts │ │ ├── grep-app.ts │ │ ├── index.test.ts │ │ ├── index.ts │ │ ├── types.ts │ │ ├── websearch.test.ts │ │ └── websearch.ts │ ├── openclaw/ │ │ ├── __tests__/ │ │ │ ├── config.test.ts │ │ │ ├── dispatcher.test.ts │ │ │ └── tmux.test.ts │ │ ├── config.ts │ │ ├── daemon.ts │ │ ├── dispatcher.ts │ │ ├── index.ts │ │ ├── reply-listener.ts │ │ ├── session-registry.ts │ │ ├── tmux.ts │ │ └── types.ts │ ├── plugin/ │ │ ├── AGENTS.md │ │ ├── available-categories.ts │ │ ├── chat-headers.test.ts │ │ ├── chat-headers.ts │ │ ├── chat-message.test.ts │ │ ├── chat-message.ts │ │ ├── chat-params.test.ts │ │ ├── chat-params.ts │ │ ├── event-compaction-agent.test.ts │ │ ├── event.model-fallback.test.ts │ │ ├── event.test.ts │ │ ├── event.ts │ │ ├── hooks/ │ │ │ ├── create-continuation-hooks.ts │ │ │ ├── create-core-hooks.ts │ │ │ ├── create-session-hooks.test.ts │ │ │ ├── create-session-hooks.ts │ │ │ ├── create-skill-hooks.ts │ │ │ ├── create-tool-guard-hooks.ts │ │ │ └── create-transform-hooks.ts │ │ ├── messages-transform.ts │ │ ├── normalize-tool-arg-schemas.test.ts │ │ ├── normalize-tool-arg-schemas.ts │ │ ├── recent-synthetic-idles.test.ts │ │ ├── recent-synthetic-idles.ts │ │ ├── session-agent-resolver.test.ts │ │ ├── session-agent-resolver.ts │ │ ├── session-status-normalizer.test.ts │ │ ├── session-status-normalizer.ts │ │ ├── skill-context.test.ts │ │ ├── skill-context.ts │ │ ├── system-transform.ts │ │ ├── tool-execute-after.test.ts │ │ ├── tool-execute-after.ts │ │ ├── tool-execute-before-session-notification.test.ts │ │ ├── tool-execute-before.test.ts │ │ ├── tool-execute-before.ts │ │ ├── tool-execute-before.ulw-loop.test.ts │ │ ├── tool-registry.ts │ │ ├── types.ts │ │ ├── ultrawork-db-model-override.test.ts │ │ ├── ultrawork-db-model-override.ts │ │ ├── ultrawork-model-override.test.ts │ │ ├── ultrawork-model-override.ts │ │ ├── ultrawork-variant-availability.test.ts │ │ ├── ultrawork-variant-availability.ts │ │ └── unstable-agent-babysitter.ts │ ├── plugin-config.test.ts │ ├── plugin-config.ts │ ├── plugin-dispose.test.ts │ ├── plugin-dispose.ts │ ├── plugin-handlers/ │ │ ├── AGENTS.md │ │ ├── agent-config-handler.test.ts │ │ ├── agent-config-handler.ts │ │ ├── agent-key-remapper.test.ts │ │ ├── agent-key-remapper.ts │ │ ├── agent-override-protection.ts │ │ ├── agent-priority-order.ts │ │ ├── category-config-resolver.ts │ │ ├── command-config-handler.ts │ │ ├── config-handler-formatter.test.ts │ │ ├── config-handler.test.ts │ │ ├── config-handler.ts │ │ ├── index.ts │ │ ├── mcp-config-handler.test.ts │ │ ├── mcp-config-handler.ts │ │ ├── plan-model-inheritance.test.ts │ │ ├── plan-model-inheritance.ts │ │ ├── plugin-components-loader.ts │ │ ├── prometheus-agent-config-builder.ts │ │ ├── provider-config-handler.test.ts │ │ ├── provider-config-handler.ts │ │ ├── tool-config-handler.test.ts │ │ └── tool-config-handler.ts │ ├── plugin-interface.ts │ ├── plugin-state.ts │ ├── shared/ │ │ ├── AGENTS.md │ │ ├── agent-config-integration.test.ts │ │ ├── agent-display-names.test.ts │ │ ├── agent-display-names.ts │ │ ├── agent-tool-restrictions.ts │ │ ├── agent-variant.test.ts │ │ ├── agent-variant.ts │ │ ├── binary-downloader.ts │ │ ├── claude-config-dir.test.ts │ │ ├── claude-config-dir.ts │ │ ├── command-executor/ │ │ │ ├── embedded-commands.ts │ │ │ ├── execute-command.ts │ │ │ ├── execute-hook-command.ts │ │ │ ├── home-directory.ts │ │ │ ├── resolve-commands-in-text.ts │ │ │ └── shell-path.ts │ │ ├── command-executor.ts │ │ ├── compaction-agent-config-checkpoint.ts │ │ ├── config-errors.ts │ │ ├── connected-providers-cache.test.ts │ │ ├── connected-providers-cache.ts │ │ ├── context-limit-resolver.test.ts │ │ ├── context-limit-resolver.ts │ │ ├── data-path.ts │ │ ├── deep-merge.test.ts │ │ ├── deep-merge.ts │ │ ├── disabled-tools.ts │ │ ├── dynamic-truncator.test.ts │ │ ├── dynamic-truncator.ts │ │ ├── external-plugin-detector.test.ts │ │ ├── external-plugin-detector.ts │ │ ├── fallback-chain-from-models.test.ts │ │ ├── fallback-chain-from-models.ts │ │ ├── fallback-model-availability.ts │ │ ├── file-reference-resolver.ts │ │ ├── file-utils.test.ts │ │ ├── file-utils.ts │ │ ├── first-message-variant.test.ts │ │ ├── first-message-variant.ts │ │ ├── frontmatter.test.ts │ │ ├── frontmatter.ts │ │ ├── git-worktree/ │ │ │ ├── collect-git-diff-stats.test.ts │ │ │ ├── collect-git-diff-stats.ts │ │ │ ├── format-file-changes.ts │ │ │ ├── git-worktree.test.ts │ │ │ ├── index.ts │ │ │ ├── parse-diff-numstat.ts │ │ │ ├── parse-status-porcelain-line.test.ts │ │ │ ├── parse-status-porcelain-line.ts │ │ │ ├── parse-status-porcelain.ts │ │ │ └── types.ts │ │ ├── hook-disabled.ts │ │ ├── index.ts │ │ ├── internal-initiator-marker.ts │ │ ├── jsonc-parser.test.ts │ │ ├── jsonc-parser.ts │ │ ├── logger.ts │ │ ├── merge-categories.test.ts │ │ ├── merge-categories.ts │ │ ├── migration/ │ │ │ ├── agent-category.ts │ │ │ ├── agent-names.ts │ │ │ ├── config-migration.ts │ │ │ ├── hook-names.ts │ │ │ └── model-versions.ts │ │ ├── migration.test.ts │ │ ├── migration.ts │ │ ├── model-availability.test.ts │ │ ├── model-availability.ts │ │ ├── model-error-classifier.test.ts │ │ ├── model-error-classifier.ts │ │ ├── model-format-normalizer.test.ts │ │ ├── model-format-normalizer.ts │ │ ├── model-normalization.test.ts │ │ ├── model-normalization.ts │ │ ├── model-requirements.test.ts │ │ ├── model-requirements.ts │ │ ├── model-resolution-pipeline.test.ts │ │ ├── model-resolution-pipeline.ts │ │ ├── model-resolution-types.ts │ │ ├── model-resolver.test.ts │ │ ├── model-resolver.ts │ │ ├── model-sanitizer.ts │ │ ├── model-suggestion-retry.test.ts │ │ ├── model-suggestion-retry.ts │ │ ├── normalize-sdk-response.test.ts │ │ ├── normalize-sdk-response.ts │ │ ├── opencode-command-dirs.test.ts │ │ ├── opencode-command-dirs.ts │ │ ├── opencode-config-dir-types.ts │ │ ├── opencode-config-dir.test.ts │ │ ├── opencode-config-dir.ts │ │ ├── opencode-http-api.test.ts │ │ ├── opencode-http-api.ts │ │ ├── opencode-message-dir.test.ts │ │ ├── opencode-message-dir.ts │ │ ├── opencode-server-auth.test.ts │ │ ├── opencode-server-auth.ts │ │ ├── opencode-storage-detection.test.ts │ │ ├── opencode-storage-detection.ts │ │ ├── opencode-storage-paths.ts │ │ ├── opencode-version.test.ts │ │ ├── opencode-version.ts │ │ ├── pattern-matcher.test.ts │ │ ├── pattern-matcher.ts │ │ ├── permission-compat.test.ts │ │ ├── permission-compat.ts │ │ ├── plugin-command-discovery.test.ts │ │ ├── plugin-command-discovery.ts │ │ ├── plugin-identity.test.ts │ │ ├── plugin-identity.ts │ │ ├── port-utils.test.ts │ │ ├── port-utils.ts │ │ ├── prompt-timeout-context.ts │ │ ├── prompt-tools.test.ts │ │ ├── prompt-tools.ts │ │ ├── provider-model-id-transform.ts │ │ ├── question-denied-session-permission.ts │ │ ├── record-type-guard.ts │ │ ├── retry-status-utils.ts │ │ ├── safe-create-hook.test.ts │ │ ├── safe-create-hook.ts │ │ ├── session-category-registry.ts │ │ ├── session-cursor.test.ts │ │ ├── session-cursor.ts │ │ ├── session-directory-resolver.test.ts │ │ ├── session-directory-resolver.ts │ │ ├── session-injected-paths.ts │ │ ├── session-model-state.test.ts │ │ ├── session-model-state.ts │ │ ├── session-tools-store.test.ts │ │ ├── session-tools-store.ts │ │ ├── session-utils.ts │ │ ├── shell-env.test.ts │ │ ├── shell-env.ts │ │ ├── skill-path-resolver.test.ts │ │ ├── skill-path-resolver.ts │ │ ├── snake-case.ts │ │ ├── spawn-with-windows-hide.ts │ │ ├── system-directive.test.ts │ │ ├── system-directive.ts │ │ ├── tmux/ │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── tmux-utils/ │ │ │ │ ├── environment.ts │ │ │ │ ├── layout.test.ts │ │ │ │ ├── layout.ts │ │ │ │ ├── pane-close.ts │ │ │ │ ├── pane-dimensions.ts │ │ │ │ ├── pane-replace.ts │ │ │ │ ├── pane-spawn.test.ts │ │ │ │ ├── pane-spawn.ts │ │ │ │ └── server-health.ts │ │ │ ├── tmux-utils.test.ts │ │ │ ├── tmux-utils.ts │ │ │ └── types.ts │ │ ├── tool-name.test.ts │ │ ├── tool-name.ts │ │ ├── truncate-description.test.ts │ │ ├── truncate-description.ts │ │ ├── vision-capable-models-cache.ts │ │ └── zip-extractor.ts │ └── tools/ │ ├── AGENTS.md │ ├── ast-grep/ │ │ ├── cli-binary-path-resolution.ts │ │ ├── cli.ts │ │ ├── constants.ts │ │ ├── downloader.ts │ │ ├── environment-check.ts │ │ ├── index.ts │ │ ├── language-support.ts │ │ ├── process-output-timeout.ts │ │ ├── result-formatter.ts │ │ ├── sg-cli-path.ts │ │ ├── sg-compact-json-output.ts │ │ ├── tools.ts │ │ └── types.ts │ ├── background-task/ │ │ ├── AGENTS.md │ │ ├── clients.ts │ │ ├── constants.ts │ │ ├── create-background-cancel.ts │ │ ├── create-background-output.blocking.test.ts │ │ ├── create-background-output.metadata.test.ts │ │ ├── create-background-output.ts │ │ ├── create-background-task.metadata.test.ts │ │ ├── create-background-task.test.ts │ │ ├── create-background-task.ts │ │ ├── delay.ts │ │ ├── full-session-format.ts │ │ ├── index.ts │ │ ├── message-dir.ts │ │ ├── session-messages.ts │ │ ├── task-result-format.ts │ │ ├── task-status-format.ts │ │ ├── time-format.ts │ │ ├── tools.test.ts │ │ ├── tools.ts │ │ ├── truncate-text.ts │ │ └── types.ts │ ├── call-omo-agent/ │ │ ├── AGENTS.md │ │ ├── background-agent-executor.test.ts │ │ ├── background-agent-executor.ts │ │ ├── background-executor.test.ts │ │ ├── background-executor.ts │ │ ├── completion-poller.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── message-dir.ts │ │ ├── message-processor.ts │ │ ├── message-storage-directory.ts │ │ ├── reused-sync-session-delete-cleanup.test.ts │ │ ├── session-creator.test.ts │ │ ├── session-creator.ts │ │ ├── subagent-session-creator.test.ts │ │ ├── subagent-session-creator.ts │ │ ├── sync-executor-leak.test.ts │ │ ├── sync-executor.test.ts │ │ ├── sync-executor.ts │ │ ├── tool-context-with-metadata.ts │ │ ├── tools.test.ts │ │ ├── tools.ts │ │ └── types.ts │ ├── delegate-task/ │ │ ├── AGENTS.md │ │ ├── available-models.ts │ │ ├── background-continuation.test.ts │ │ ├── background-continuation.ts │ │ ├── background-task.test.ts │ │ ├── background-task.ts │ │ ├── cancel-unstable-agent-task.ts │ │ ├── categories.ts │ │ ├── category-resolver.test.ts │ │ ├── category-resolver.ts │ │ ├── constants.ts │ │ ├── error-formatting.ts │ │ ├── executor-types.ts │ │ ├── executor.ts │ │ ├── index.ts │ │ ├── metadata-await.test.ts │ │ ├── metadata-model-unification.test.ts │ │ ├── model-selection.test.ts │ │ ├── model-selection.ts │ │ ├── model-string-parser.ts │ │ ├── parent-context-resolver.ts │ │ ├── prompt-builder.ts │ │ ├── sisyphus-junior-agent.ts │ │ ├── skill-resolver.ts │ │ ├── subagent-resolver.test.ts │ │ ├── subagent-resolver.ts │ │ ├── sync-continuation-deps.ts │ │ ├── sync-continuation.test.ts │ │ ├── sync-continuation.ts │ │ ├── sync-poll-timeout.test.ts │ │ ├── sync-prompt-sender.test.ts │ │ ├── sync-prompt-sender.ts │ │ ├── sync-result-fetcher.test.ts │ │ ├── sync-result-fetcher.ts │ │ ├── sync-session-creator.test.ts │ │ ├── sync-session-creator.ts │ │ ├── sync-session-poller.test.ts │ │ ├── sync-session-poller.ts │ │ ├── sync-task-deps.ts │ │ ├── sync-task.test.ts │ │ ├── sync-task.ts │ │ ├── time-formatter.ts │ │ ├── timing.test.ts │ │ ├── timing.ts │ │ ├── token-limiter.test.ts │ │ ├── token-limiter.ts │ │ ├── tools.test.ts │ │ ├── tools.ts │ │ ├── types.ts │ │ ├── unstable-agent-cleanup.test.ts │ │ ├── unstable-agent-permission.test.ts │ │ ├── unstable-agent-task.test.ts │ │ ├── unstable-agent-task.ts │ │ └── unstable-agent-timeout.test.ts │ ├── glob/ │ │ ├── cli.test.ts │ │ ├── cli.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── result-formatter.ts │ │ ├── tools.ts │ │ └── types.ts │ ├── grep/ │ │ ├── cli.ts │ │ ├── constants.ts │ │ ├── downloader.test.ts │ │ ├── downloader.ts │ │ ├── index.ts │ │ ├── result-formatter.test.ts │ │ ├── result-formatter.ts │ │ ├── tools.ts │ │ └── types.ts │ ├── hashline-edit/ │ │ ├── AGENTS.md │ │ ├── autocorrect-replacement-lines.ts │ │ ├── constants.ts │ │ ├── diff-utils.test.ts │ │ ├── diff-utils.ts │ │ ├── edit-deduplication.ts │ │ ├── edit-operation-primitives.ts │ │ ├── edit-operations.test.ts │ │ ├── edit-operations.ts │ │ ├── edit-ordering.ts │ │ ├── edit-text-normalization.ts │ │ ├── file-text-canonicalization.ts │ │ ├── hash-computation.test.ts │ │ ├── hash-computation.ts │ │ ├── hashline-chunk-formatter.ts │ │ ├── hashline-edit-diff.ts │ │ ├── hashline-edit-executor.ts │ │ ├── index.ts │ │ ├── normalize-edits.test.ts │ │ ├── normalize-edits.ts │ │ ├── tool-description.ts │ │ ├── tools.test.ts │ │ ├── tools.ts │ │ ├── types.ts │ │ ├── validation.test.ts │ │ └── validation.ts │ ├── index.ts │ ├── interactive-bash/ │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── tmux-path-resolver.ts │ │ └── tools.ts │ ├── look-at/ │ │ ├── assistant-message-extractor.ts │ │ ├── constants.ts │ │ ├── image-converter.test.ts │ │ ├── image-converter.ts │ │ ├── index.ts │ │ ├── look-at-arguments.ts │ │ ├── mime-type-inference.test.ts │ │ ├── mime-type-inference.ts │ │ ├── multimodal-agent-metadata.test.ts │ │ ├── multimodal-agent-metadata.ts │ │ ├── multimodal-fallback-chain.test.ts │ │ ├── multimodal-fallback-chain.ts │ │ ├── session-poller.test.ts │ │ ├── session-poller.ts │ │ ├── tools.test.ts │ │ ├── tools.ts │ │ └── types.ts │ ├── lsp/ │ │ ├── AGENTS.md │ │ ├── client.test.ts │ │ ├── client.ts │ │ ├── config.test.ts │ │ ├── config.ts │ │ ├── constants.ts │ │ ├── diagnostics-tool.ts │ │ ├── directory-diagnostics.test.ts │ │ ├── directory-diagnostics.ts │ │ ├── find-references-tool.ts │ │ ├── goto-definition-tool.ts │ │ ├── index.ts │ │ ├── language-config.ts │ │ ├── language-mappings.ts │ │ ├── lsp-client-connection.ts │ │ ├── lsp-client-transport.ts │ │ ├── lsp-client-wrapper.ts │ │ ├── lsp-client.ts │ │ ├── lsp-formatters.ts │ │ ├── lsp-manager-process-cleanup.ts │ │ ├── lsp-manager-temp-directory-cleanup.ts │ │ ├── lsp-process.test.ts │ │ ├── lsp-process.ts │ │ ├── lsp-server.ts │ │ ├── rename-tools.ts │ │ ├── server-config-loader.test.ts │ │ ├── server-config-loader.ts │ │ ├── server-definitions.ts │ │ ├── server-installation.ts │ │ ├── server-path-bases.ts │ │ ├── server-resolution.ts │ │ ├── symbols-tool.ts │ │ ├── tools.ts │ │ ├── types.ts │ │ ├── utils.test.ts │ │ └── workspace-edit.ts │ ├── session-manager/ │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── session-formatter.ts │ │ ├── storage.test.ts │ │ ├── storage.ts │ │ ├── tools.test.ts │ │ ├── tools.ts │ │ ├── types.ts │ │ └── utils.test.ts │ ├── shared/ │ │ └── semaphore.ts │ ├── skill/ │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── tools.test.ts │ │ ├── tools.ts │ │ └── types.ts │ ├── skill-mcp/ │ │ ├── builtin-mcp-hint.test.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── tools.test.ts │ │ ├── tools.ts │ │ └── types.ts │ ├── slashcommand/ │ │ ├── command-discovery.test.ts │ │ ├── command-discovery.ts │ │ ├── command-output-formatter.test.ts │ │ ├── command-output-formatter.ts │ │ ├── execution-compatibility.test.ts │ │ ├── index.test.ts │ │ ├── index.ts │ │ └── types.ts │ └── task/ │ ├── index.ts │ ├── task-create.test.ts │ ├── task-create.ts │ ├── task-get.test.ts │ ├── task-get.ts │ ├── task-list.test.ts │ ├── task-list.ts │ ├── task-update.test.ts │ ├── task-update.ts │ ├── todo-sync.test.ts │ ├── todo-sync.ts │ ├── types.test.ts │ └── types.ts ├── test-setup.ts ├── tests/ │ └── hashline/ │ ├── headless.ts │ ├── package.json │ ├── test-edge-cases.ts │ ├── test-edit-ops.ts │ └── test-multi-model.ts ├── tsconfig.json └── uvscripts/ └── gh_fetch.py