Full Code of Yeachan-Heo/oh-my-claudecode for AI

main fae376508355 cached
2859 files
21.9 MB
5.9M tokens
17568 symbols
2 requests
Copy disabled (too large) Download .txt
Showing preview only (23,517K chars total). Download the full file to get everything.
Repository: Yeachan-Heo/oh-my-claudecode
Branch: main
Commit: fae376508355
Files: 2859
Total size: 21.9 MB

Directory structure:
gitextract_ti569df2/

├── .claude-plugin/
│   ├── marketplace.json
│   └── plugin.json
├── .eslintignore
├── .gitattributes
├── .github/
│   ├── CLAUDE.md
│   ├── FUNDING.yml
│   ├── SPONSOR_TIERS.md
│   ├── release-notes.md
│   └── workflows/
│       ├── auto-label.yml
│       ├── ci.yml
│       ├── cleanup.yml
│       ├── pr-check.yml
│       ├── release.yml
│       └── stale.yml
├── .gitignore
├── .mcp.json
├── .npmignore
├── AGENTS.md
├── CHANGELOG.md
├── CLAUDE.md
├── LICENSE
├── README.de.md
├── README.es.md
├── README.fr.md
├── README.it.md
├── README.ja.md
├── README.ko.md
├── README.md
├── README.pt.md
├── README.ru.md
├── README.tr.md
├── README.vi.md
├── README.zh.md
├── agents/
│   ├── analyst.md
│   ├── architect.md
│   ├── code-reviewer.md
│   ├── code-simplifier.md
│   ├── critic.md
│   ├── debugger.md
│   ├── designer.md
│   ├── document-specialist.md
│   ├── executor.md
│   ├── explore.md
│   ├── git-master.md
│   ├── planner.md
│   ├── qa-tester.md
│   ├── scientist.md
│   ├── security-reviewer.md
│   ├── test-engineer.md
│   ├── tracer.md
│   ├── verifier.md
│   └── writer.md
├── benchmark/
│   ├── .gitignore
│   ├── Dockerfile
│   ├── README.md
│   ├── analyze_failures.py
│   ├── compare_results.py
│   ├── docker-compose.yml
│   ├── entrypoint.sh
│   ├── evaluate.py
│   ├── predictions/
│   │   ├── omc/
│   │   │   ├── checkpoint.json
│   │   │   └── stats.json
│   │   └── vanilla/
│   │       ├── checkpoint.json
│   │       ├── predictions.jsonl
│   │       └── stats.json
│   ├── quick_test.sh
│   ├── requirements.txt
│   ├── results/
│   │   └── README.md
│   ├── run_benchmark.py
│   ├── run_full_comparison.sh
│   ├── run_omc.sh
│   ├── run_vanilla.sh
│   └── setup.sh
├── benchmarks/
│   ├── baselines/
│   │   └── 2026-03-08-consolidation.json
│   ├── code-reviewer/
│   │   ├── fixtures/
│   │   │   └── code/
│   │   │       ├── code-payment-refund.md
│   │   │       ├── code-retry-handler.md
│   │   │       └── code-sql-injection.md
│   │   ├── ground-truth/
│   │   │   ├── code-payment-refund.json
│   │   │   ├── code-retry-handler.json
│   │   │   └── code-sql-injection.json
│   │   ├── prompts/
│   │   │   └── quality-reviewer.md
│   │   └── run-benchmark.ts
│   ├── debugger/
│   │   ├── fixtures/
│   │   │   └── bugs/
│   │   │       ├── bug-redis-intermittent.md
│   │   │       ├── bug-ts-build-errors.md
│   │   │       └── bug-undefined-map.md
│   │   ├── ground-truth/
│   │   │   ├── bug-redis-intermittent.json
│   │   │   ├── bug-ts-build-errors.json
│   │   │   └── bug-undefined-map.json
│   │   ├── prompts/
│   │   │   └── build-fixer.md
│   │   └── run-benchmark.ts
│   ├── executor/
│   │   ├── fixtures/
│   │   │   └── tasks/
│   │   │       ├── task-add-timestamp.md
│   │   │       ├── task-input-validation.md
│   │   │       └── task-notification-refactor.md
│   │   ├── ground-truth/
│   │   │   ├── task-add-timestamp.json
│   │   │   ├── task-input-validation.json
│   │   │   └── task-notification-refactor.json
│   │   ├── prompts/
│   │   │   └── deep-executor.md
│   │   └── run-benchmark.ts
│   ├── harsh-critic/
│   │   ├── README.md
│   │   ├── SCORING_MATCH_CALIBRATION.md
│   │   ├── fixtures/
│   │   │   ├── analysis/
│   │   │   │   ├── analysis-incident-review.md
│   │   │   │   └── analysis-perf-report.md
│   │   │   ├── code/
│   │   │   │   ├── code-payment-handler.ts
│   │   │   │   ├── code-session-manager.ts
│   │   │   │   └── code-utils-clean.ts
│   │   │   └── plans/
│   │   │       ├── plan-api-refactor.md
│   │   │       ├── plan-auth-migration.md
│   │   │       └── plan-clean-baseline.md
│   │   ├── ground-truth/
│   │   │   ├── analysis-incident-review.json
│   │   │   ├── analysis-perf-report.json
│   │   │   ├── code-payment-handler.json
│   │   │   ├── code-session-manager.json
│   │   │   ├── code-utils-clean.json
│   │   │   ├── plan-api-refactor.json
│   │   │   ├── plan-auth-migration.json
│   │   │   └── plan-clean-baseline.json
│   │   ├── prompts/
│   │   │   └── harsh-critic.md
│   │   ├── run-benchmark.ts
│   │   ├── scoring/
│   │   │   ├── __tests__/
│   │   │   │   ├── parser.test.ts
│   │   │   │   └── scorer.test.ts
│   │   │   ├── parser.ts
│   │   │   ├── reporter.ts
│   │   │   ├── scorer.ts
│   │   │   └── types.ts
│   │   └── vitest.config.ts
│   ├── run-all.ts
│   └── shared/
│       ├── parser.ts
│       ├── reporter.ts
│       ├── runner.ts
│       ├── scorer.ts
│       └── types.ts
├── bridge/
│   ├── cli.cjs
│   ├── gyoshu_bridge.py
│   ├── mcp-server.cjs
│   ├── run-mcp-server.sh
│   ├── runtime-cli.cjs
│   ├── team-bridge.cjs
│   ├── team-mcp.cjs
│   └── team.js
├── dist/
│   ├── __tests__/
│   │   ├── agent-boundary-guidance.test.d.ts
│   │   ├── agent-boundary-guidance.test.js
│   │   ├── agent-registry.test.d.ts
│   │   ├── agent-registry.test.js
│   │   ├── auto-slash-aliases.test.d.ts
│   │   ├── auto-slash-aliases.test.js
│   │   ├── auto-update.test.d.ts
│   │   ├── auto-update.test.js
│   │   ├── auto-upgrade-prompt.test.d.ts
│   │   ├── auto-upgrade-prompt.test.js
│   │   ├── bash-history.test.d.ts
│   │   ├── bash-history.test.js
│   │   ├── bedrock-lm-suffix-hook.test.d.ts
│   │   ├── bedrock-lm-suffix-hook.test.js
│   │   ├── bedrock-model-routing.test.d.ts
│   │   ├── bedrock-model-routing.test.js
│   │   ├── cleanup-validation.test.d.ts
│   │   ├── cleanup-validation.test.js
│   │   ├── cli-config-stop-callback.test.d.ts
│   │   ├── cli-config-stop-callback.test.js
│   │   ├── cli-interop-flags.test.d.ts
│   │   ├── cli-interop-flags.test.js
│   │   ├── cli-notify-profile.test.d.ts
│   │   ├── cli-notify-profile.test.js
│   │   ├── cli-win32-warning.test.d.ts
│   │   ├── cli-win32-warning.test.js
│   │   ├── compact-denylist.test.d.ts
│   │   ├── compact-denylist.test.js
│   │   ├── config-force-inherit-env.test.d.ts
│   │   ├── config-force-inherit-env.test.js
│   │   ├── consensus-execution-handoff.test.d.ts
│   │   ├── consensus-execution-handoff.test.js
│   │   ├── consolidation-contracts.test.d.ts
│   │   ├── consolidation-contracts.test.js
│   │   ├── context-guard-stop.test.d.ts
│   │   ├── context-guard-stop.test.js
│   │   ├── context-safety.test.d.ts
│   │   ├── context-safety.test.js
│   │   ├── daemon-module-path.test.d.ts
│   │   ├── daemon-module-path.test.js
│   │   ├── deep-interview-provider-options.test.d.ts
│   │   ├── deep-interview-provider-options.test.js
│   │   ├── delegation-enforcement-levels.test.d.ts
│   │   ├── delegation-enforcement-levels.test.js
│   │   ├── delegation-enforcer-integration.test.d.ts
│   │   ├── delegation-enforcer-integration.test.js
│   │   ├── delegation-enforcer.test.d.ts
│   │   ├── delegation-enforcer.test.js
│   │   ├── directory-context-injector.test.d.ts
│   │   ├── directory-context-injector.test.js
│   │   ├── disable-tools.test.d.ts
│   │   ├── disable-tools.test.js
│   │   ├── doctor-conflicts.test.d.ts
│   │   ├── doctor-conflicts.test.js
│   │   ├── featured-contributors-generator.test.d.ts
│   │   ├── featured-contributors-generator.test.js
│   │   ├── file-lock.test.d.ts
│   │   ├── file-lock.test.js
│   │   ├── helpers/
│   │   │   ├── prompt-test-helpers.d.ts
│   │   │   └── prompt-test-helpers.js
│   │   ├── hooks/
│   │   │   ├── learner/
│   │   │   │   ├── bridge.test.d.ts
│   │   │   │   ├── bridge.test.js
│   │   │   │   ├── parser.test.d.ts
│   │   │   │   ├── parser.test.js
│   │   │   │   ├── transliteration-map.test.d.ts
│   │   │   │   └── transliteration-map.test.js
│   │   │   ├── plugin-patterns.test.d.ts
│   │   │   └── plugin-patterns.test.js
│   │   ├── hooks-command-escaping.test.d.ts
│   │   ├── hooks-command-escaping.test.js
│   │   ├── hooks.test.d.ts
│   │   ├── hooks.test.js
│   │   ├── hud/
│   │   │   ├── call-counts.test.d.ts
│   │   │   ├── call-counts.test.js
│   │   │   ├── context-warning.test.d.ts
│   │   │   ├── context-warning.test.js
│   │   │   ├── context.test.d.ts
│   │   │   ├── context.test.js
│   │   │   ├── custom-rate-provider.test.d.ts
│   │   │   ├── custom-rate-provider.test.js
│   │   │   ├── cwd.test.d.ts
│   │   │   ├── cwd.test.js
│   │   │   ├── defaults.test.d.ts
│   │   │   ├── defaults.test.js
│   │   │   ├── git.test.d.ts
│   │   │   ├── git.test.js
│   │   │   ├── limits-error.test.d.ts
│   │   │   ├── limits-error.test.js
│   │   │   ├── max-width.test.d.ts
│   │   │   ├── max-width.test.js
│   │   │   ├── mission-board-state.test.d.ts
│   │   │   ├── mission-board-state.test.js
│   │   │   ├── mission-board.test.d.ts
│   │   │   ├── mission-board.test.js
│   │   │   ├── model.test.d.ts
│   │   │   ├── model.test.js
│   │   │   ├── omc-state.test.d.ts
│   │   │   ├── omc-state.test.js
│   │   │   ├── prompt-time.test.d.ts
│   │   │   ├── prompt-time.test.js
│   │   │   ├── rate-limits-error.test.d.ts
│   │   │   ├── rate-limits-error.test.js
│   │   │   ├── render-rate-limits-priority.test.d.ts
│   │   │   ├── render-rate-limits-priority.test.js
│   │   │   ├── render.test.d.ts
│   │   │   ├── render.test.js
│   │   │   ├── sanitize.test.d.ts
│   │   │   ├── sanitize.test.js
│   │   │   ├── skills.test.d.ts
│   │   │   ├── skills.test.js
│   │   │   ├── stale-indicator.test.d.ts
│   │   │   ├── stale-indicator.test.js
│   │   │   ├── state.test.d.ts
│   │   │   ├── state.test.js
│   │   │   ├── stdin.test.d.ts
│   │   │   ├── stdin.test.js
│   │   │   ├── thinking.test.d.ts
│   │   │   ├── thinking.test.js
│   │   │   ├── token-usage.test.d.ts
│   │   │   ├── token-usage.test.js
│   │   │   ├── usage-api-lock.test.d.ts
│   │   │   ├── usage-api-lock.test.js
│   │   │   ├── usage-api-stale.test.d.ts
│   │   │   ├── usage-api-stale.test.js
│   │   │   ├── usage-api.test.d.ts
│   │   │   ├── usage-api.test.js
│   │   │   ├── version-display.test.d.ts
│   │   │   ├── version-display.test.js
│   │   │   ├── watch-mode-init.test.d.ts
│   │   │   ├── watch-mode-init.test.js
│   │   │   ├── windows-platform.test.d.ts
│   │   │   └── windows-platform.test.js
│   │   ├── hud-agents.test.d.ts
│   │   ├── hud-agents.test.js
│   │   ├── hud-api-key-source.test.d.ts
│   │   ├── hud-api-key-source.test.js
│   │   ├── hud-build-guidance.test.d.ts
│   │   ├── hud-build-guidance.test.js
│   │   ├── hud-marketplace-resolution.test.d.ts
│   │   ├── hud-marketplace-resolution.test.js
│   │   ├── hud-windows.test.d.ts
│   │   ├── hud-windows.test.js
│   │   ├── installer-hooks-merge.test.d.ts
│   │   ├── installer-hooks-merge.test.js
│   │   ├── installer-hud-skip.test.d.ts
│   │   ├── installer-hud-skip.test.js
│   │   ├── installer-mcp-config.test.d.ts
│   │   ├── installer-mcp-config.test.js
│   │   ├── installer-omc-reference.test.d.ts
│   │   ├── installer-omc-reference.test.js
│   │   ├── installer-plugin-agents.test.d.ts
│   │   ├── installer-plugin-agents.test.js
│   │   ├── installer-version-guard.test.d.ts
│   │   ├── installer-version-guard.test.js
│   │   ├── installer.test.d.ts
│   │   ├── installer.test.js
│   │   ├── job-management-sqlite.test.d.ts
│   │   ├── job-management-sqlite.test.js
│   │   ├── job-management.test.d.ts
│   │   ├── job-management.test.js
│   │   ├── job-state-db.test.d.ts
│   │   ├── job-state-db.test.js
│   │   ├── learner/
│   │   │   ├── auto-learner.test.d.ts
│   │   │   ├── auto-learner.test.js
│   │   │   ├── matcher.test.d.ts
│   │   │   └── matcher.test.js
│   │   ├── live-data.test.d.ts
│   │   ├── live-data.test.js
│   │   ├── load-agent-prompt.test.d.ts
│   │   ├── load-agent-prompt.test.js
│   │   ├── lsp-servers.test.d.ts
│   │   ├── lsp-servers.test.js
│   │   ├── mcp-default-config.test.d.ts
│   │   ├── mcp-default-config.test.js
│   │   ├── mnemosyne/
│   │   │   ├── config.test.d.ts
│   │   │   ├── config.test.js
│   │   │   ├── detector.test.d.ts
│   │   │   ├── detector.test.js
│   │   │   ├── finder.test.d.ts
│   │   │   ├── finder.test.js
│   │   │   ├── loader.test.d.ts
│   │   │   ├── loader.test.js
│   │   │   ├── parser.test.d.ts
│   │   │   ├── parser.test.js
│   │   │   ├── validator.test.d.ts
│   │   │   └── validator.test.js
│   │   ├── model-routing.test.d.ts
│   │   ├── model-routing.test.js
│   │   ├── non-claude-provider-detection.test.d.ts
│   │   ├── non-claude-provider-detection.test.js
│   │   ├── notepad.test.d.ts
│   │   ├── notepad.test.js
│   │   ├── omc-cli-rendering.test.d.ts
│   │   ├── omc-cli-rendering.test.js
│   │   ├── omc-tools-contract.test.d.ts
│   │   ├── omc-tools-contract.test.js
│   │   ├── omc-tools-server-interop.test.d.ts
│   │   ├── omc-tools-server-interop.test.js
│   │   ├── omc-tools-server.test.d.ts
│   │   ├── omc-tools-server.test.js
│   │   ├── package-dir-resolution-regression.test.d.ts
│   │   ├── package-dir-resolution-regression.test.js
│   │   ├── permission-enforcement.test.d.ts
│   │   ├── permission-enforcement.test.js
│   │   ├── pipeline-orchestrator.test.d.ts
│   │   ├── pipeline-orchestrator.test.js
│   │   ├── plugin-setup-deps.test.d.ts
│   │   ├── plugin-setup-deps.test.js
│   │   ├── pre-compact-cwd.test.d.ts
│   │   ├── pre-compact-cwd.test.js
│   │   ├── pre-tool-enforcer.test.d.ts
│   │   ├── pre-tool-enforcer.test.js
│   │   ├── project-memory-merge.test.d.ts
│   │   ├── project-memory-merge.test.js
│   │   ├── prompt-injection.test.d.ts
│   │   ├── prompt-injection.test.js
│   │   ├── protected-mode-regressions.test.d.ts
│   │   ├── protected-mode-regressions.test.js
│   │   ├── providers/
│   │   │   ├── azure-devops.test.d.ts
│   │   │   ├── azure-devops.test.js
│   │   │   ├── bitbucket.test.d.ts
│   │   │   ├── bitbucket.test.js
│   │   │   ├── detection.test.d.ts
│   │   │   ├── detection.test.js
│   │   │   ├── gitea.test.d.ts
│   │   │   ├── gitea.test.js
│   │   │   ├── github.test.d.ts
│   │   │   ├── github.test.js
│   │   │   ├── gitlab.test.d.ts
│   │   │   └── gitlab.test.js
│   │   ├── purge-stale-cache.test.d.ts
│   │   ├── purge-stale-cache.test.js
│   │   ├── ralph-prd-mandatory.test.d.ts
│   │   ├── ralph-prd-mandatory.test.js
│   │   ├── ralph-prd.test.d.ts
│   │   ├── ralph-prd.test.js
│   │   ├── ralph-progress.test.d.ts
│   │   ├── ralph-progress.test.js
│   │   ├── rate-limit-wait/
│   │   │   ├── daemon-bootstrap.test.d.ts
│   │   │   ├── daemon-bootstrap.test.js
│   │   │   ├── daemon.test.d.ts
│   │   │   ├── daemon.test.js
│   │   │   ├── integration.test.d.ts
│   │   │   ├── integration.test.js
│   │   │   ├── rate-limit-monitor.test.d.ts
│   │   │   ├── rate-limit-monitor.test.js
│   │   │   ├── tmux-detector.test.d.ts
│   │   │   └── tmux-detector.test.js
│   │   ├── resolve-node.test.d.ts
│   │   ├── resolve-node.test.js
│   │   ├── resolve-transcript-path.test.d.ts
│   │   ├── resolve-transcript-path.test.js
│   │   ├── routing-force-inherit.test.d.ts
│   │   ├── routing-force-inherit.test.js
│   │   ├── run-cjs-graceful-fallback.test.d.ts
│   │   ├── run-cjs-graceful-fallback.test.js
│   │   ├── session-history-search.test.d.ts
│   │   ├── session-history-search.test.js
│   │   ├── session-start-cache-cleanup.test.d.ts
│   │   ├── session-start-cache-cleanup.test.js
│   │   ├── session-start-script-context.test.d.ts
│   │   ├── session-start-script-context.test.js
│   │   ├── setup-claude-md-script.test.d.ts
│   │   ├── setup-claude-md-script.test.js
│   │   ├── shared-memory-concurrency.test.d.ts
│   │   ├── shared-memory-concurrency.test.js
│   │   ├── shared-memory.test.d.ts
│   │   ├── shared-memory.test.js
│   │   ├── skills.test.d.ts
│   │   ├── skills.test.js
│   │   ├── slack-socket.test.d.ts
│   │   ├── slack-socket.test.js
│   │   ├── smoke-pipeline-edge.test.d.ts
│   │   ├── smoke-pipeline-edge.test.js
│   │   ├── smoke-slack-and-state.test.d.ts
│   │   ├── smoke-slack-and-state.test.js
│   │   ├── ssrf-guard.test.d.ts
│   │   ├── ssrf-guard.test.js
│   │   ├── standalone-server.test.d.ts
│   │   ├── standalone-server.test.js
│   │   ├── task-continuation.test.d.ts
│   │   ├── task-continuation.test.js
│   │   ├── team-server-validation.test.d.ts
│   │   ├── team-server-validation.test.js
│   │   ├── tier0-contracts.test.d.ts
│   │   ├── tier0-contracts.test.js
│   │   ├── tier0-docs-consistency.test.d.ts
│   │   ├── tier0-docs-consistency.test.js
│   │   ├── tools/
│   │   │   ├── skills-tools.test.d.ts
│   │   │   ├── skills-tools.test.js
│   │   │   ├── trace-tools.test.d.ts
│   │   │   └── trace-tools.test.js
│   │   ├── types.test.d.ts
│   │   ├── types.test.js
│   │   ├── version-helper.test.d.ts
│   │   ├── version-helper.test.js
│   │   ├── visual-verdict-skill.test.d.ts
│   │   └── visual-verdict-skill.test.js
│   ├── agents/
│   │   ├── analyst.d.ts
│   │   ├── analyst.js
│   │   ├── architect.d.ts
│   │   ├── architect.js
│   │   ├── critic.d.ts
│   │   ├── critic.js
│   │   ├── definitions.d.ts
│   │   ├── definitions.js
│   │   ├── designer.d.ts
│   │   ├── designer.js
│   │   ├── document-specialist.d.ts
│   │   ├── document-specialist.js
│   │   ├── executor.d.ts
│   │   ├── executor.js
│   │   ├── explore.d.ts
│   │   ├── explore.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── planner.d.ts
│   │   ├── planner.js
│   │   ├── prompt-helpers.d.ts
│   │   ├── prompt-helpers.js
│   │   ├── prompt-sections/
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── qa-tester.d.ts
│   │   ├── qa-tester.js
│   │   ├── scientist.d.ts
│   │   ├── scientist.js
│   │   ├── tracer.d.ts
│   │   ├── tracer.js
│   │   ├── types.d.ts
│   │   ├── types.js
│   │   ├── utils.d.ts
│   │   ├── utils.js
│   │   ├── writer.d.ts
│   │   └── writer.js
│   ├── autoresearch/
│   │   ├── __tests__/
│   │   │   ├── contracts.test.d.ts
│   │   │   ├── contracts.test.js
│   │   │   ├── runtime-parity-extra.test.d.ts
│   │   │   ├── runtime-parity-extra.test.js
│   │   │   ├── runtime.test.d.ts
│   │   │   ├── runtime.test.js
│   │   │   ├── setup-contract.test.d.ts
│   │   │   └── setup-contract.test.js
│   │   ├── contracts.d.ts
│   │   ├── contracts.js
│   │   ├── runtime.d.ts
│   │   ├── runtime.js
│   │   ├── setup-contract.d.ts
│   │   └── setup-contract.js
│   ├── cli/
│   │   ├── __tests__/
│   │   │   ├── ask.test.d.ts
│   │   │   ├── ask.test.js
│   │   │   ├── autoresearch-guided.test.d.ts
│   │   │   ├── autoresearch-guided.test.js
│   │   │   ├── autoresearch-intake.test.d.ts
│   │   │   ├── autoresearch-intake.test.js
│   │   │   ├── autoresearch-setup-session.test.d.ts
│   │   │   ├── autoresearch-setup-session.test.js
│   │   │   ├── autoresearch.test.d.ts
│   │   │   ├── autoresearch.test.js
│   │   │   ├── cli-boot.test.d.ts
│   │   │   ├── cli-boot.test.js
│   │   │   ├── hud-watch.test.d.ts
│   │   │   ├── hud-watch.test.js
│   │   │   ├── launch.test.d.ts
│   │   │   ├── launch.test.js
│   │   │   ├── session-search-help.test.d.ts
│   │   │   ├── session-search-help.test.js
│   │   │   ├── session-search.test.d.ts
│   │   │   ├── session-search.test.js
│   │   │   ├── team-command-branding.test.d.ts
│   │   │   ├── team-command-branding.test.js
│   │   │   ├── team-help.test.d.ts
│   │   │   ├── team-help.test.js
│   │   │   ├── team-runtime-boundary.test.d.ts
│   │   │   ├── team-runtime-boundary.test.js
│   │   │   ├── team.test.d.ts
│   │   │   ├── team.test.js
│   │   │   ├── teleport-help.test.d.ts
│   │   │   ├── teleport-help.test.js
│   │   │   ├── tmux-utils.test.d.ts
│   │   │   └── tmux-utils.test.js
│   │   ├── ask.d.ts
│   │   ├── ask.js
│   │   ├── autoresearch-guided.d.ts
│   │   ├── autoresearch-guided.js
│   │   ├── autoresearch-intake.d.ts
│   │   ├── autoresearch-intake.js
│   │   ├── autoresearch-setup-session.d.ts
│   │   ├── autoresearch-setup-session.js
│   │   ├── autoresearch.d.ts
│   │   ├── autoresearch.js
│   │   ├── commands/
│   │   │   ├── __tests__/
│   │   │   │   ├── team.test.d.ts
│   │   │   │   ├── team.test.js
│   │   │   │   ├── teleport.test.d.ts
│   │   │   │   └── teleport.test.js
│   │   │   ├── doctor-conflicts.d.ts
│   │   │   ├── doctor-conflicts.js
│   │   │   ├── ralphthon.d.ts
│   │   │   ├── ralphthon.js
│   │   │   ├── session-search.d.ts
│   │   │   ├── session-search.js
│   │   │   ├── team.d.ts
│   │   │   ├── team.js
│   │   │   ├── teleport.d.ts
│   │   │   ├── teleport.js
│   │   │   ├── wait.d.ts
│   │   │   └── wait.js
│   │   ├── hud-watch.d.ts
│   │   ├── hud-watch.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── interop.d.ts
│   │   ├── interop.js
│   │   ├── launch.d.ts
│   │   ├── launch.js
│   │   ├── team.d.ts
│   │   ├── team.js
│   │   ├── tmux-utils.d.ts
│   │   ├── tmux-utils.js
│   │   ├── utils/
│   │   │   ├── formatting.d.ts
│   │   │   └── formatting.js
│   │   ├── win32-warning.d.ts
│   │   └── win32-warning.js
│   ├── commands/
│   │   ├── index.d.ts
│   │   └── index.js
│   ├── config/
│   │   ├── __tests__/
│   │   │   ├── loader.test.d.ts
│   │   │   ├── loader.test.js
│   │   │   ├── models.test.d.ts
│   │   │   ├── models.test.js
│   │   │   ├── plan-output.test.d.ts
│   │   │   ├── plan-output.test.js
│   │   │   ├── test-helpers.d.ts
│   │   │   └── test-helpers.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── loader.d.ts
│   │   ├── loader.js
│   │   ├── models.d.ts
│   │   ├── models.js
│   │   ├── plan-output.d.ts
│   │   └── plan-output.js
│   ├── constants/
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── names.d.ts
│   │   └── names.js
│   ├── features/
│   │   ├── auto-update.d.ts
│   │   ├── auto-update.js
│   │   ├── background-agent/
│   │   │   ├── concurrency.d.ts
│   │   │   ├── concurrency.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── manager.d.ts
│   │   │   ├── manager.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── background-tasks.d.ts
│   │   ├── background-tasks.js
│   │   ├── boulder-state/
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── storage.d.ts
│   │   │   ├── storage.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── builtin-skills/
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── runtime-guidance.d.ts
│   │   │   ├── runtime-guidance.js
│   │   │   ├── skills.d.ts
│   │   │   ├── skills.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── context-injector/
│   │   │   ├── collector.d.ts
│   │   │   ├── collector.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── injector.d.ts
│   │   │   ├── injector.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── continuation-enforcement.d.ts
│   │   ├── continuation-enforcement.js
│   │   ├── delegation-categories/
│   │   │   ├── __tests__/
│   │   │   │   ├── index.test.d.ts
│   │   │   │   └── index.test.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── test-categories.d.ts
│   │   │   ├── test-categories.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── delegation-enforcer.d.ts
│   │   ├── delegation-enforcer.js
│   │   ├── delegation-routing/
│   │   │   ├── __tests__/
│   │   │   │   ├── resolver.test.d.ts
│   │   │   │   └── resolver.test.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── resolver.d.ts
│   │   │   ├── resolver.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── magic-keywords.d.ts
│   │   ├── magic-keywords.js
│   │   ├── model-routing/
│   │   │   ├── __tests__/
│   │   │   │   ├── index.test.d.ts
│   │   │   │   └── index.test.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── prompts/
│   │   │   │   ├── haiku.d.ts
│   │   │   │   ├── haiku.js
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.js
│   │   │   │   ├── opus.d.ts
│   │   │   │   ├── opus.js
│   │   │   │   ├── sonnet.d.ts
│   │   │   │   └── sonnet.js
│   │   │   ├── router.d.ts
│   │   │   ├── router.js
│   │   │   ├── rules.d.ts
│   │   │   ├── rules.js
│   │   │   ├── scorer.d.ts
│   │   │   ├── scorer.js
│   │   │   ├── signals.d.ts
│   │   │   ├── signals.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── notepad-wisdom/
│   │   │   ├── extractor.d.ts
│   │   │   ├── extractor.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── rate-limit-wait/
│   │   │   ├── daemon.d.ts
│   │   │   ├── daemon.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── rate-limit-monitor.d.ts
│   │   │   ├── rate-limit-monitor.js
│   │   │   ├── tmux-detector.d.ts
│   │   │   ├── tmux-detector.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── session-history-search/
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── state-manager/
│   │   │   ├── __tests__/
│   │   │   │   ├── cache.test.d.ts
│   │   │   │   └── cache.test.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── task-decomposer/
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   └── verification/
│   │       ├── index.d.ts
│   │       ├── index.js
│   │       ├── types.d.ts
│   │       └── types.js
│   ├── hooks/
│   │   ├── __tests__/
│   │   │   ├── askuserquestion-lifecycle.test.d.ts
│   │   │   ├── askuserquestion-lifecycle.test.js
│   │   │   ├── background-process-guard.test.d.ts
│   │   │   ├── background-process-guard.test.js
│   │   │   ├── bridge-openclaw.test.d.ts
│   │   │   ├── bridge-openclaw.test.js
│   │   │   ├── bridge-pkill.test.d.ts
│   │   │   ├── bridge-pkill.test.js
│   │   │   ├── bridge-routing.test.d.ts
│   │   │   ├── bridge-routing.test.js
│   │   │   ├── bridge-security.test.d.ts
│   │   │   ├── bridge-security.test.js
│   │   │   ├── bridge-team-worker-guard.test.d.ts
│   │   │   ├── bridge-team-worker-guard.test.js
│   │   │   ├── bridge.test.d.ts
│   │   │   ├── bridge.test.js
│   │   │   ├── codebase-map.test.d.ts
│   │   │   ├── codebase-map.test.js
│   │   │   ├── compaction-concurrency.test.d.ts
│   │   │   ├── compaction-concurrency.test.js
│   │   │   ├── stop-hook-openclaw-cooldown.test.d.ts
│   │   │   └── stop-hook-openclaw-cooldown.test.js
│   │   ├── agent-usage-reminder/
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── storage.d.ts
│   │   │   ├── storage.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── agents-overlay.d.ts
│   │   ├── agents-overlay.js
│   │   ├── auto-slash-command/
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── detector.d.ts
│   │   │   ├── detector.js
│   │   │   ├── executor.d.ts
│   │   │   ├── executor.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── live-data.d.ts
│   │   │   ├── live-data.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── autopilot/
│   │   │   ├── __tests__/
│   │   │   │   ├── cancel.test.d.ts
│   │   │   │   ├── cancel.test.js
│   │   │   │   ├── pipeline.test.d.ts
│   │   │   │   ├── pipeline.test.js
│   │   │   │   ├── prompts.test.d.ts
│   │   │   │   ├── prompts.test.js
│   │   │   │   ├── state.test.d.ts
│   │   │   │   ├── state.test.js
│   │   │   │   ├── summary.test.d.ts
│   │   │   │   ├── summary.test.js
│   │   │   │   ├── transition.test.d.ts
│   │   │   │   ├── transition.test.js
│   │   │   │   ├── transitions.test.d.ts
│   │   │   │   ├── transitions.test.js
│   │   │   │   ├── validation.test.d.ts
│   │   │   │   └── validation.test.js
│   │   │   ├── adapters/
│   │   │   │   ├── execution-adapter.d.ts
│   │   │   │   ├── execution-adapter.js
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.js
│   │   │   │   ├── qa-adapter.d.ts
│   │   │   │   ├── qa-adapter.js
│   │   │   │   ├── ralph-adapter.d.ts
│   │   │   │   ├── ralph-adapter.js
│   │   │   │   ├── ralplan-adapter.d.ts
│   │   │   │   └── ralplan-adapter.js
│   │   │   ├── cancel.d.ts
│   │   │   ├── cancel.js
│   │   │   ├── enforcement.d.ts
│   │   │   ├── enforcement.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── pipeline-types.d.ts
│   │   │   ├── pipeline-types.js
│   │   │   ├── pipeline.d.ts
│   │   │   ├── pipeline.js
│   │   │   ├── prompts.d.ts
│   │   │   ├── prompts.js
│   │   │   ├── state.d.ts
│   │   │   ├── state.js
│   │   │   ├── transition-helper.d.ts
│   │   │   ├── transition-helper.js
│   │   │   ├── types.d.ts
│   │   │   ├── types.js
│   │   │   ├── validation.d.ts
│   │   │   └── validation.js
│   │   ├── background-notification/
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── beads-context/
│   │   │   ├── __tests__/
│   │   │   │   ├── index.test.d.ts
│   │   │   │   └── index.test.js
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── bridge-normalize.d.ts
│   │   ├── bridge-normalize.js
│   │   ├── bridge.d.ts
│   │   ├── bridge.js
│   │   ├── code-simplifier/
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── codebase-map.d.ts
│   │   ├── codebase-map.js
│   │   ├── comment-checker/
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── filters.d.ts
│   │   │   ├── filters.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── directory-readme-injector/
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── storage.d.ts
│   │   │   ├── storage.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── empty-message-sanitizer/
│   │   │   ├── __tests__/
│   │   │   │   ├── index.test.d.ts
│   │   │   │   └── index.test.js
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── factcheck/
│   │   │   ├── __tests__/
│   │   │   │   ├── factcheck.test.d.ts
│   │   │   │   ├── factcheck.test.js
│   │   │   │   ├── sentinel-gate.test.d.ts
│   │   │   │   ├── sentinel-gate.test.js
│   │   │   │   ├── sentinel.test.d.ts
│   │   │   │   └── sentinel.test.js
│   │   │   ├── checks.d.ts
│   │   │   ├── checks.js
│   │   │   ├── config.d.ts
│   │   │   ├── config.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── sentinel.d.ts
│   │   │   ├── sentinel.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── keyword-detector/
│   │   │   ├── __tests__/
│   │   │   │   ├── index.test.d.ts
│   │   │   │   └── index.test.js
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── learner/
│   │   │   ├── auto-invoke.d.ts
│   │   │   ├── auto-invoke.js
│   │   │   ├── auto-learner.d.ts
│   │   │   ├── auto-learner.js
│   │   │   ├── bridge.d.ts
│   │   │   ├── bridge.js
│   │   │   ├── config.d.ts
│   │   │   ├── config.js
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── detection-hook.d.ts
│   │   │   ├── detection-hook.js
│   │   │   ├── detector.d.ts
│   │   │   ├── detector.js
│   │   │   ├── finder.d.ts
│   │   │   ├── finder.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── loader.d.ts
│   │   │   ├── loader.js
│   │   │   ├── matcher.d.ts
│   │   │   ├── matcher.js
│   │   │   ├── parser.d.ts
│   │   │   ├── parser.js
│   │   │   ├── promotion.d.ts
│   │   │   ├── promotion.js
│   │   │   ├── transliteration-map.d.ts
│   │   │   ├── transliteration-map.js
│   │   │   ├── types.d.ts
│   │   │   ├── types.js
│   │   │   ├── validator.d.ts
│   │   │   ├── validator.js
│   │   │   ├── writer.d.ts
│   │   │   └── writer.js
│   │   ├── mode-registry/
│   │   │   ├── __tests__/
│   │   │   │   ├── session-isolation.test.d.ts
│   │   │   │   └── session-isolation.test.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── non-interactive-env/
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── detector.d.ts
│   │   │   ├── detector.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── index.test.d.ts
│   │   │   ├── index.test.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── notepad/
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── omc-orchestrator/
│   │   │   ├── audit.d.ts
│   │   │   ├── audit.js
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── permission-handler/
│   │   │   ├── __tests__/
│   │   │   │   ├── index.test.d.ts
│   │   │   │   └── index.test.js
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── persistent-mode/
│   │   │   ├── __tests__/
│   │   │   │   ├── cancel-race.test.d.ts
│   │   │   │   ├── cancel-race.test.js
│   │   │   │   ├── error-handling.test.d.ts
│   │   │   │   ├── error-handling.test.js
│   │   │   │   ├── idle-cooldown.test.d.ts
│   │   │   │   ├── idle-cooldown.test.js
│   │   │   │   ├── ralph-max-iteration.test.d.ts
│   │   │   │   ├── ralph-max-iteration.test.js
│   │   │   │   ├── ralph-verification-flow.test.d.ts
│   │   │   │   ├── ralph-verification-flow.test.js
│   │   │   │   ├── rate-limit-stop.test.d.ts
│   │   │   │   ├── rate-limit-stop.test.js
│   │   │   │   ├── skill-state-stop.test.d.ts
│   │   │   │   ├── skill-state-stop.test.js
│   │   │   │   ├── team-ralplan-stop.test.d.ts
│   │   │   │   ├── team-ralplan-stop.test.js
│   │   │   │   ├── tool-error.test.d.ts
│   │   │   │   └── tool-error.test.js
│   │   │   ├── idle-cooldown.test.d.ts
│   │   │   ├── idle-cooldown.test.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── session-isolation.test.d.ts
│   │   │   ├── session-isolation.test.js
│   │   │   ├── stop-hook-blocking.test.d.ts
│   │   │   └── stop-hook-blocking.test.js
│   │   ├── plugin-patterns/
│   │   │   ├── __tests__/
│   │   │   │   ├── index.test.d.ts
│   │   │   │   └── index.test.js
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── pre-compact/
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── preemptive-compaction/
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── project-memory/
│   │   │   ├── __tests__/
│   │   │   │   ├── detector.test.d.ts
│   │   │   │   ├── detector.test.js
│   │   │   │   ├── formatter.test.d.ts
│   │   │   │   ├── formatter.test.js
│   │   │   │   ├── integration.test.d.ts
│   │   │   │   ├── integration.test.js
│   │   │   │   ├── learner.test.d.ts
│   │   │   │   ├── learner.test.js
│   │   │   │   ├── pre-compact.test.d.ts
│   │   │   │   ├── pre-compact.test.js
│   │   │   │   ├── storage.test.d.ts
│   │   │   │   └── storage.test.js
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── detector.d.ts
│   │   │   ├── detector.js
│   │   │   ├── directive-detector.d.ts
│   │   │   ├── directive-detector.js
│   │   │   ├── directory-mapper.d.ts
│   │   │   ├── directory-mapper.js
│   │   │   ├── formatter.d.ts
│   │   │   ├── formatter.js
│   │   │   ├── hot-path-tracker.d.ts
│   │   │   ├── hot-path-tracker.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── learner.d.ts
│   │   │   ├── learner.js
│   │   │   ├── pre-compact.d.ts
│   │   │   ├── pre-compact.js
│   │   │   ├── storage.d.ts
│   │   │   ├── storage.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── ralph/
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── loop.d.ts
│   │   │   ├── loop.js
│   │   │   ├── prd.d.ts
│   │   │   ├── prd.js
│   │   │   ├── progress.d.ts
│   │   │   ├── progress.js
│   │   │   ├── verifier.d.ts
│   │   │   └── verifier.js
│   │   ├── recovery/
│   │   │   ├── __tests__/
│   │   │   │   ├── storage.test.d.ts
│   │   │   │   └── storage.test.js
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── context-window.d.ts
│   │   │   ├── context-window.js
│   │   │   ├── edit-error.d.ts
│   │   │   ├── edit-error.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── session-recovery.d.ts
│   │   │   ├── session-recovery.js
│   │   │   ├── storage.d.ts
│   │   │   ├── storage.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── rules-injector/
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── finder.d.ts
│   │   │   ├── finder.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── matcher.d.ts
│   │   │   ├── matcher.js
│   │   │   ├── parser.d.ts
│   │   │   ├── parser.js
│   │   │   ├── storage.d.ts
│   │   │   ├── storage.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── session-end/
│   │   │   ├── __tests__/
│   │   │   │   ├── callbacks.test.d.ts
│   │   │   │   ├── callbacks.test.js
│   │   │   │   ├── duplicate-notifications.test.d.ts
│   │   │   │   ├── duplicate-notifications.test.js
│   │   │   │   ├── mode-state-cleanup.test.d.ts
│   │   │   │   ├── mode-state-cleanup.test.js
│   │   │   │   ├── openclaw-session-end.test.d.ts
│   │   │   │   ├── openclaw-session-end.test.js
│   │   │   │   ├── python-repl-cleanup.test.d.ts
│   │   │   │   ├── python-repl-cleanup.test.js
│   │   │   │   ├── session-duration.test.d.ts
│   │   │   │   ├── session-duration.test.js
│   │   │   │   ├── session-end-bridge-cleanup.test.d.ts
│   │   │   │   ├── session-end-bridge-cleanup.test.js
│   │   │   │   ├── session-end-timeout.test.d.ts
│   │   │   │   ├── session-end-timeout.test.js
│   │   │   │   ├── subdirectory-cwd.test.d.ts
│   │   │   │   ├── subdirectory-cwd.test.js
│   │   │   │   ├── team-cleanup.test.d.ts
│   │   │   │   └── team-cleanup.test.js
│   │   │   ├── callbacks.d.ts
│   │   │   ├── callbacks.js
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── setup/
│   │   │   ├── __tests__/
│   │   │   │   ├── prune.test.d.ts
│   │   │   │   ├── prune.test.js
│   │   │   │   ├── windows-patch.test.d.ts
│   │   │   │   └── windows-patch.test.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── skill-bridge.cjs
│   │   ├── skill-state/
│   │   │   ├── __tests__/
│   │   │   │   ├── skill-state.test.d.ts
│   │   │   │   └── skill-state.test.js
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── subagent-tracker/
│   │   │   ├── __tests__/
│   │   │   │   ├── flow-tracer.test.d.ts
│   │   │   │   ├── flow-tracer.test.js
│   │   │   │   ├── flush-race.test.d.ts
│   │   │   │   ├── flush-race.test.js
│   │   │   │   ├── index.test.d.ts
│   │   │   │   ├── index.test.js
│   │   │   │   ├── session-replay.test.d.ts
│   │   │   │   └── session-replay.test.js
│   │   │   ├── flow-tracer.d.ts
│   │   │   ├── flow-tracer.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── session-replay.d.ts
│   │   │   └── session-replay.js
│   │   ├── task-size-detector/
│   │   │   ├── __tests__/
│   │   │   │   ├── index.test.d.ts
│   │   │   │   └── index.test.js
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── team-dispatch-hook.d.ts
│   │   ├── team-dispatch-hook.js
│   │   ├── team-leader-nudge-hook.d.ts
│   │   ├── team-leader-nudge-hook.js
│   │   ├── team-pipeline/
│   │   │   ├── __tests__/
│   │   │   │   ├── transitions.test.d.ts
│   │   │   │   └── transitions.test.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── state.d.ts
│   │   │   ├── state.js
│   │   │   ├── transitions.d.ts
│   │   │   ├── transitions.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── team-worker-hook.d.ts
│   │   ├── team-worker-hook.js
│   │   ├── think-mode/
│   │   │   ├── __tests__/
│   │   │   │   ├── index.test.d.ts
│   │   │   │   └── index.test.js
│   │   │   ├── detector.d.ts
│   │   │   ├── detector.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── switcher.d.ts
│   │   │   ├── switcher.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── thinking-block-validator/
│   │   │   ├── __tests__/
│   │   │   │   ├── index.test.d.ts
│   │   │   │   └── index.test.js
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── todo-continuation/
│   │   │   ├── __tests__/
│   │   │   │   ├── isAuthenticationError.test.d.ts
│   │   │   │   ├── isAuthenticationError.test.js
│   │   │   │   ├── isRateLimitStop.test.d.ts
│   │   │   │   ├── isRateLimitStop.test.js
│   │   │   │   ├── isUserAbort.test.d.ts
│   │   │   │   └── isUserAbort.test.js
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── ultraqa/
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   └── ultrawork/
│   │       ├── index.d.ts
│   │       ├── index.js
│   │       ├── session-isolation.test.d.ts
│   │       └── session-isolation.test.js
│   ├── hud/
│   │   ├── background-cleanup.d.ts
│   │   ├── background-cleanup.js
│   │   ├── background-tasks.d.ts
│   │   ├── background-tasks.js
│   │   ├── colors.d.ts
│   │   ├── colors.js
│   │   ├── custom-rate-provider.d.ts
│   │   ├── custom-rate-provider.js
│   │   ├── elements/
│   │   │   ├── agents.d.ts
│   │   │   ├── agents.js
│   │   │   ├── api-key-source.d.ts
│   │   │   ├── api-key-source.js
│   │   │   ├── autopilot.d.ts
│   │   │   ├── autopilot.js
│   │   │   ├── background.d.ts
│   │   │   ├── background.js
│   │   │   ├── call-counts.d.ts
│   │   │   ├── call-counts.js
│   │   │   ├── context-warning.d.ts
│   │   │   ├── context-warning.js
│   │   │   ├── context.d.ts
│   │   │   ├── context.js
│   │   │   ├── cwd.d.ts
│   │   │   ├── cwd.js
│   │   │   ├── git.d.ts
│   │   │   ├── git.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── limits.d.ts
│   │   │   ├── limits.js
│   │   │   ├── mission-board.d.ts
│   │   │   ├── mission-board.js
│   │   │   ├── model.d.ts
│   │   │   ├── model.js
│   │   │   ├── permission.d.ts
│   │   │   ├── permission.js
│   │   │   ├── prd.d.ts
│   │   │   ├── prd.js
│   │   │   ├── prompt-time.d.ts
│   │   │   ├── prompt-time.js
│   │   │   ├── ralph.d.ts
│   │   │   ├── ralph.js
│   │   │   ├── session-summary.d.ts
│   │   │   ├── session-summary.js
│   │   │   ├── session.d.ts
│   │   │   ├── session.js
│   │   │   ├── skills.d.ts
│   │   │   ├── skills.js
│   │   │   ├── thinking.d.ts
│   │   │   ├── thinking.js
│   │   │   ├── todos.d.ts
│   │   │   ├── todos.js
│   │   │   ├── token-usage.d.ts
│   │   │   └── token-usage.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── mission-board.d.ts
│   │   ├── mission-board.js
│   │   ├── omc-state.d.ts
│   │   ├── omc-state.js
│   │   ├── render.d.ts
│   │   ├── render.js
│   │   ├── sanitize.d.ts
│   │   ├── sanitize.js
│   │   ├── state.d.ts
│   │   ├── state.js
│   │   ├── stdin.d.ts
│   │   ├── stdin.js
│   │   ├── transcript.d.ts
│   │   ├── transcript.js
│   │   ├── types.d.ts
│   │   ├── types.js
│   │   ├── usage-api.d.ts
│   │   └── usage-api.js
│   ├── index.d.ts
│   ├── index.js
│   ├── installer/
│   │   ├── __tests__/
│   │   │   ├── claude-md-merge.test.d.ts
│   │   │   ├── claude-md-merge.test.js
│   │   │   ├── hook-templates.test.d.ts
│   │   │   ├── hook-templates.test.js
│   │   │   ├── mcp-registry.test.d.ts
│   │   │   ├── mcp-registry.test.js
│   │   │   ├── safe-installer.test.d.ts
│   │   │   ├── safe-installer.test.js
│   │   │   ├── session-start-template.test.d.ts
│   │   │   └── session-start-template.test.js
│   │   ├── hooks.d.ts
│   │   ├── hooks.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── mcp-registry.d.ts
│   │   └── mcp-registry.js
│   ├── interop/
│   │   ├── __tests__/
│   │   │   ├── mcp-bridge.test.d.ts
│   │   │   └── mcp-bridge.test.js
│   │   ├── mcp-bridge.d.ts
│   │   ├── mcp-bridge.js
│   │   ├── omx-team-state.d.ts
│   │   ├── omx-team-state.js
│   │   ├── shared-state.d.ts
│   │   └── shared-state.js
│   ├── lib/
│   │   ├── __tests__/
│   │   │   ├── mode-state-io.test.d.ts
│   │   │   ├── mode-state-io.test.js
│   │   │   ├── payload-limits.test.d.ts
│   │   │   ├── payload-limits.test.js
│   │   │   ├── swallowed-error.test.d.ts
│   │   │   ├── swallowed-error.test.js
│   │   │   ├── worktree-paths.test.d.ts
│   │   │   └── worktree-paths.test.js
│   │   ├── atomic-write.d.ts
│   │   ├── atomic-write.js
│   │   ├── featured-contributors.d.ts
│   │   ├── featured-contributors.js
│   │   ├── file-lock.d.ts
│   │   ├── file-lock.js
│   │   ├── job-state-db.d.ts
│   │   ├── job-state-db.js
│   │   ├── mode-names.d.ts
│   │   ├── mode-names.js
│   │   ├── mode-state-io.d.ts
│   │   ├── mode-state-io.js
│   │   ├── payload-limits.d.ts
│   │   ├── payload-limits.js
│   │   ├── project-memory-merge.d.ts
│   │   ├── project-memory-merge.js
│   │   ├── session-isolation.d.ts
│   │   ├── session-isolation.js
│   │   ├── shared-memory.d.ts
│   │   ├── shared-memory.js
│   │   ├── swallowed-error.d.ts
│   │   ├── swallowed-error.js
│   │   ├── version.d.ts
│   │   ├── version.js
│   │   ├── worktree-paths.d.ts
│   │   └── worktree-paths.js
│   ├── mcp/
│   │   ├── __tests__/
│   │   │   ├── prompt-injection.test.d.ts
│   │   │   ├── prompt-injection.test.js
│   │   │   ├── standalone-shutdown.test.d.ts
│   │   │   ├── standalone-shutdown.test.js
│   │   │   ├── team-cleanup.test.d.ts
│   │   │   ├── team-cleanup.test.js
│   │   │   ├── team-server-artifact-convergence.test.d.ts
│   │   │   └── team-server-artifact-convergence.test.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── job-management.d.ts
│   │   ├── job-management.js
│   │   ├── mcp-config.d.ts
│   │   ├── mcp-config.js
│   │   ├── omc-tools-server.d.ts
│   │   ├── omc-tools-server.js
│   │   ├── prompt-injection.d.ts
│   │   ├── prompt-injection.js
│   │   ├── prompt-persistence.d.ts
│   │   ├── prompt-persistence.js
│   │   ├── servers.d.ts
│   │   ├── servers.js
│   │   ├── standalone-server.d.ts
│   │   ├── standalone-server.js
│   │   ├── standalone-shutdown.d.ts
│   │   ├── standalone-shutdown.js
│   │   ├── team-job-convergence.d.ts
│   │   ├── team-job-convergence.js
│   │   ├── team-server.d.ts
│   │   └── team-server.js
│   ├── notifications/
│   │   ├── __tests__/
│   │   │   ├── config-merge.test.d.ts
│   │   │   ├── config-merge.test.js
│   │   │   ├── config.test.d.ts
│   │   │   ├── config.test.js
│   │   │   ├── custom-integration.test.d.ts
│   │   │   ├── custom-integration.test.js
│   │   │   ├── dispatcher.test.d.ts
│   │   │   ├── dispatcher.test.js
│   │   │   ├── formatter.test.d.ts
│   │   │   ├── formatter.test.js
│   │   │   ├── hook-config.test.d.ts
│   │   │   ├── hook-config.test.js
│   │   │   ├── notify-registry-integration.test.d.ts
│   │   │   ├── notify-registry-integration.test.js
│   │   │   ├── platform-gating.test.d.ts
│   │   │   ├── platform-gating.test.js
│   │   │   ├── profiles.test.d.ts
│   │   │   ├── profiles.test.js
│   │   │   ├── redact.test.d.ts
│   │   │   ├── redact.test.js
│   │   │   ├── reply-config.test.d.ts
│   │   │   ├── reply-config.test.js
│   │   │   ├── reply-listener.test.d.ts
│   │   │   ├── reply-listener.test.js
│   │   │   ├── session-registry.test.d.ts
│   │   │   ├── session-registry.test.js
│   │   │   ├── slack-socket.test.d.ts
│   │   │   ├── slack-socket.test.js
│   │   │   ├── template-engine.test.d.ts
│   │   │   ├── template-engine.test.js
│   │   │   ├── tmux.test.d.ts
│   │   │   ├── tmux.test.js
│   │   │   ├── verbosity.test.d.ts
│   │   │   └── verbosity.test.js
│   │   ├── config.d.ts
│   │   ├── config.js
│   │   ├── dispatcher.d.ts
│   │   ├── dispatcher.js
│   │   ├── formatter.d.ts
│   │   ├── formatter.js
│   │   ├── hook-config-types.d.ts
│   │   ├── hook-config-types.js
│   │   ├── hook-config.d.ts
│   │   ├── hook-config.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── presets.d.ts
│   │   ├── presets.js
│   │   ├── redact.d.ts
│   │   ├── redact.js
│   │   ├── reply-listener.d.ts
│   │   ├── reply-listener.js
│   │   ├── session-registry.d.ts
│   │   ├── session-registry.js
│   │   ├── slack-socket.d.ts
│   │   ├── slack-socket.js
│   │   ├── template-engine.d.ts
│   │   ├── template-engine.js
│   │   ├── template-variables.d.ts
│   │   ├── template-variables.js
│   │   ├── tmux.d.ts
│   │   ├── tmux.js
│   │   ├── types.d.ts
│   │   ├── types.js
│   │   ├── validation.d.ts
│   │   └── validation.js
│   ├── openclaw/
│   │   ├── __tests__/
│   │   │   ├── config.test.d.ts
│   │   │   ├── config.test.js
│   │   │   ├── dispatcher.test.d.ts
│   │   │   ├── dispatcher.test.js
│   │   │   ├── index.test.d.ts
│   │   │   ├── index.test.js
│   │   │   ├── signal.test.d.ts
│   │   │   └── signal.test.js
│   │   ├── config.d.ts
│   │   ├── config.js
│   │   ├── dispatcher.d.ts
│   │   ├── dispatcher.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── signal.d.ts
│   │   ├── signal.js
│   │   ├── types.d.ts
│   │   └── types.js
│   ├── planning/
│   │   ├── __tests__/
│   │   │   ├── artifacts.test.d.ts
│   │   │   └── artifacts.test.js
│   │   ├── artifacts.d.ts
│   │   └── artifacts.js
│   ├── platform/
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── process-utils.d.ts
│   │   └── process-utils.js
│   ├── providers/
│   │   ├── azure-devops.d.ts
│   │   ├── azure-devops.js
│   │   ├── bitbucket.d.ts
│   │   ├── bitbucket.js
│   │   ├── gitea.d.ts
│   │   ├── gitea.js
│   │   ├── github.d.ts
│   │   ├── github.js
│   │   ├── gitlab.d.ts
│   │   ├── gitlab.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── types.d.ts
│   │   └── types.js
│   ├── ralphthon/
│   │   ├── __tests__/
│   │   │   ├── cli.test.d.ts
│   │   │   ├── cli.test.js
│   │   │   ├── orchestrator.test.d.ts
│   │   │   ├── orchestrator.test.js
│   │   │   ├── prd.test.d.ts
│   │   │   └── prd.test.js
│   │   ├── deep-interview-prompt.d.ts
│   │   ├── deep-interview-prompt.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── orchestrator.d.ts
│   │   ├── orchestrator.js
│   │   ├── prd.d.ts
│   │   ├── prd.js
│   │   ├── types.d.ts
│   │   └── types.js
│   ├── shared/
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── types.d.ts
│   │   └── types.js
│   ├── skills/
│   │   └── __tests__/
│   │       ├── mingw-escape.test.d.ts
│   │       └── mingw-escape.test.js
│   ├── team/
│   │   ├── __tests__/
│   │   │   ├── activity-log.test.d.ts
│   │   │   ├── activity-log.test.js
│   │   │   ├── allocation-policy.test.d.ts
│   │   │   ├── allocation-policy.test.js
│   │   │   ├── api-interop.cleanup.test.d.ts
│   │   │   ├── api-interop.cleanup.test.js
│   │   │   ├── api-interop.command-dialect.test.d.ts
│   │   │   ├── api-interop.command-dialect.test.js
│   │   │   ├── api-interop.compatibility.test.d.ts
│   │   │   ├── api-interop.compatibility.test.js
│   │   │   ├── api-interop.cwd-resolution.test.d.ts
│   │   │   ├── api-interop.cwd-resolution.test.js
│   │   │   ├── api-interop.dispatch.test.d.ts
│   │   │   ├── api-interop.dispatch.test.js
│   │   │   ├── audit-log.test.d.ts
│   │   │   ├── audit-log.test.js
│   │   │   ├── auto-cleanup.test.d.ts
│   │   │   ├── auto-cleanup.test.js
│   │   │   ├── bridge-entry.guardrails.test.d.ts
│   │   │   ├── bridge-entry.guardrails.test.js
│   │   │   ├── bridge-entry.test.d.ts
│   │   │   ├── bridge-entry.test.js
│   │   │   ├── bridge-integration.test.d.ts
│   │   │   ├── bridge-integration.test.js
│   │   │   ├── capabilities.test.d.ts
│   │   │   ├── capabilities.test.js
│   │   │   ├── capture-file-snapshot.test.d.ts
│   │   │   ├── capture-file-snapshot.test.js
│   │   │   ├── cli-detection.test.d.ts
│   │   │   ├── cli-detection.test.js
│   │   │   ├── edge-cases.test.d.ts
│   │   │   ├── edge-cases.test.js
│   │   │   ├── events.swallowed-error.test.d.ts
│   │   │   ├── events.swallowed-error.test.js
│   │   │   ├── followup-planner.test.d.ts
│   │   │   ├── followup-planner.test.js
│   │   │   ├── fs-utils.test.d.ts
│   │   │   ├── fs-utils.test.js
│   │   │   ├── git-worktree.test.d.ts
│   │   │   ├── git-worktree.test.js
│   │   │   ├── governance-enforcement.test.d.ts
│   │   │   ├── governance-enforcement.test.js
│   │   │   ├── governance.test.d.ts
│   │   │   ├── governance.test.js
│   │   │   ├── heartbeat.test.d.ts
│   │   │   ├── heartbeat.test.js
│   │   │   ├── idle-nudge.test.d.ts
│   │   │   ├── idle-nudge.test.js
│   │   │   ├── inbox-outbox.test.d.ts
│   │   │   ├── inbox-outbox.test.js
│   │   │   ├── index.compat-exports.test.d.ts
│   │   │   ├── index.compat-exports.test.js
│   │   │   ├── leader-nudge-guidance.test.d.ts
│   │   │   ├── leader-nudge-guidance.test.js
│   │   │   ├── lifecycle-profile.test.d.ts
│   │   │   ├── lifecycle-profile.test.js
│   │   │   ├── mcp-team-bridge.spawn-args.test.d.ts
│   │   │   ├── mcp-team-bridge.spawn-args.test.js
│   │   │   ├── mcp-team-bridge.usage.test.d.ts
│   │   │   ├── mcp-team-bridge.usage.test.js
│   │   │   ├── merge-coordinator.test.d.ts
│   │   │   ├── merge-coordinator.test.js
│   │   │   ├── message-router.test.d.ts
│   │   │   ├── message-router.test.js
│   │   │   ├── model-contract.test.d.ts
│   │   │   ├── model-contract.test.js
│   │   │   ├── outbox-reader.test.d.ts
│   │   │   ├── outbox-reader.test.js
│   │   │   ├── permissions.test.d.ts
│   │   │   ├── permissions.test.js
│   │   │   ├── phase-controller.test.d.ts
│   │   │   ├── phase-controller.test.js
│   │   │   ├── phase1-foundation.test.d.ts
│   │   │   ├── phase1-foundation.test.js
│   │   │   ├── prompt-sanitization.test.d.ts
│   │   │   ├── prompt-sanitization.test.js
│   │   │   ├── role-router.test.d.ts
│   │   │   ├── role-router.test.js
│   │   │   ├── runtime-assign.test.d.ts
│   │   │   ├── runtime-assign.test.js
│   │   │   ├── runtime-cli.test.d.ts
│   │   │   ├── runtime-cli.test.js
│   │   │   ├── runtime-done-recovery.test.d.ts
│   │   │   ├── runtime-done-recovery.test.js
│   │   │   ├── runtime-prompt-mode.test.d.ts
│   │   │   ├── runtime-prompt-mode.test.js
│   │   │   ├── runtime-v2.dispatch.test.d.ts
│   │   │   ├── runtime-v2.dispatch.test.js
│   │   │   ├── runtime-v2.feature-flag.test.d.ts
│   │   │   ├── runtime-v2.feature-flag.test.js
│   │   │   ├── runtime-v2.monitor.test.d.ts
│   │   │   ├── runtime-v2.monitor.test.js
│   │   │   ├── runtime-v2.shutdown-pane-cleanup.test.d.ts
│   │   │   ├── runtime-v2.shutdown-pane-cleanup.test.js
│   │   │   ├── runtime-v2.shutdown.test.d.ts
│   │   │   ├── runtime-v2.shutdown.test.js
│   │   │   ├── runtime-watchdog-retry.test.d.ts
│   │   │   ├── runtime-watchdog-retry.test.js
│   │   │   ├── runtime.test.d.ts
│   │   │   ├── runtime.test.js
│   │   │   ├── scaling.test.d.ts
│   │   │   ├── scaling.test.js
│   │   │   ├── shell-affinity.test.d.ts
│   │   │   ├── shell-affinity.test.js
│   │   │   ├── state-paths.test.d.ts
│   │   │   ├── state-paths.test.js
│   │   │   ├── summary-report.test.d.ts
│   │   │   ├── summary-report.test.js
│   │   │   ├── task-file-ops.test.d.ts
│   │   │   ├── task-file-ops.test.js
│   │   │   ├── task-router.test.d.ts
│   │   │   ├── task-router.test.js
│   │   │   ├── team-leader-nudge-hook.logging.test.d.ts
│   │   │   ├── team-leader-nudge-hook.logging.test.js
│   │   │   ├── team-leader-nudge-hook.test.d.ts
│   │   │   ├── team-leader-nudge-hook.test.js
│   │   │   ├── team-name.test.d.ts
│   │   │   ├── team-name.test.js
│   │   │   ├── team-registration.test.d.ts
│   │   │   ├── team-registration.test.js
│   │   │   ├── team-status.test.d.ts
│   │   │   ├── team-status.test.js
│   │   │   ├── tmux-comm.test.d.ts
│   │   │   ├── tmux-comm.test.js
│   │   │   ├── tmux-session.create-team.test.d.ts
│   │   │   ├── tmux-session.create-team.test.js
│   │   │   ├── tmux-session.kill-team-session.test.d.ts
│   │   │   ├── tmux-session.kill-team-session.test.js
│   │   │   ├── tmux-session.spawn.test.d.ts
│   │   │   ├── tmux-session.spawn.test.js
│   │   │   ├── tmux-session.test.d.ts
│   │   │   ├── tmux-session.test.js
│   │   │   ├── unified-team.test.d.ts
│   │   │   ├── unified-team.test.js
│   │   │   ├── usage-tracker.test.d.ts
│   │   │   ├── usage-tracker.test.js
│   │   │   ├── worker-bootstrap.test.d.ts
│   │   │   ├── worker-bootstrap.test.js
│   │   │   ├── worker-canonicalization.test.d.ts
│   │   │   ├── worker-canonicalization.test.js
│   │   │   ├── worker-health.test.d.ts
│   │   │   ├── worker-health.test.js
│   │   │   ├── worker-restart.test.d.ts
│   │   │   └── worker-restart.test.js
│   │   ├── activity-log.d.ts
│   │   ├── activity-log.js
│   │   ├── allocation-policy.d.ts
│   │   ├── allocation-policy.js
│   │   ├── api-interop.d.ts
│   │   ├── api-interop.js
│   │   ├── audit-log.d.ts
│   │   ├── audit-log.js
│   │   ├── bridge-entry.d.ts
│   │   ├── bridge-entry.js
│   │   ├── capabilities.d.ts
│   │   ├── capabilities.js
│   │   ├── cli-detection.d.ts
│   │   ├── cli-detection.js
│   │   ├── contracts.d.ts
│   │   ├── contracts.js
│   │   ├── dispatch-queue.d.ts
│   │   ├── dispatch-queue.js
│   │   ├── events.d.ts
│   │   ├── events.js
│   │   ├── followup-planner.d.ts
│   │   ├── followup-planner.js
│   │   ├── fs-utils.d.ts
│   │   ├── fs-utils.js
│   │   ├── git-worktree.d.ts
│   │   ├── git-worktree.js
│   │   ├── governance.d.ts
│   │   ├── governance.js
│   │   ├── heartbeat.d.ts
│   │   ├── heartbeat.js
│   │   ├── idle-nudge.d.ts
│   │   ├── idle-nudge.js
│   │   ├── inbox-outbox.d.ts
│   │   ├── inbox-outbox.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── layout-stabilizer.d.ts
│   │   ├── layout-stabilizer.js
│   │   ├── leader-nudge-guidance.d.ts
│   │   ├── leader-nudge-guidance.js
│   │   ├── mcp-comm.d.ts
│   │   ├── mcp-comm.js
│   │   ├── mcp-team-bridge.d.ts
│   │   ├── mcp-team-bridge.js
│   │   ├── merge-coordinator.d.ts
│   │   ├── merge-coordinator.js
│   │   ├── message-router.d.ts
│   │   ├── message-router.js
│   │   ├── model-contract.d.ts
│   │   ├── model-contract.js
│   │   ├── monitor.d.ts
│   │   ├── monitor.js
│   │   ├── outbox-reader.d.ts
│   │   ├── outbox-reader.js
│   │   ├── permissions.d.ts
│   │   ├── permissions.js
│   │   ├── phase-controller.d.ts
│   │   ├── phase-controller.js
│   │   ├── role-router.d.ts
│   │   ├── role-router.js
│   │   ├── runtime-cli.d.ts
│   │   ├── runtime-cli.js
│   │   ├── runtime-v2.d.ts
│   │   ├── runtime-v2.js
│   │   ├── runtime.d.ts
│   │   ├── runtime.js
│   │   ├── scaling.d.ts
│   │   ├── scaling.js
│   │   ├── sentinel-gate.d.ts
│   │   ├── sentinel-gate.js
│   │   ├── state/
│   │   │   ├── tasks.d.ts
│   │   │   └── tasks.js
│   │   ├── state-paths.d.ts
│   │   ├── state-paths.js
│   │   ├── summary-report.d.ts
│   │   ├── summary-report.js
│   │   ├── task-file-ops.d.ts
│   │   ├── task-file-ops.js
│   │   ├── task-router.d.ts
│   │   ├── task-router.js
│   │   ├── team-name.d.ts
│   │   ├── team-name.js
│   │   ├── team-ops.d.ts
│   │   ├── team-ops.js
│   │   ├── team-registration.d.ts
│   │   ├── team-registration.js
│   │   ├── team-status.d.ts
│   │   ├── team-status.js
│   │   ├── tmux-comm.d.ts
│   │   ├── tmux-comm.js
│   │   ├── tmux-session.d.ts
│   │   ├── tmux-session.js
│   │   ├── types.d.ts
│   │   ├── types.js
│   │   ├── unified-team.d.ts
│   │   ├── unified-team.js
│   │   ├── usage-tracker.d.ts
│   │   ├── usage-tracker.js
│   │   ├── worker-bootstrap.d.ts
│   │   ├── worker-bootstrap.js
│   │   ├── worker-canonicalization.d.ts
│   │   ├── worker-canonicalization.js
│   │   ├── worker-health.d.ts
│   │   ├── worker-health.js
│   │   ├── worker-restart.d.ts
│   │   └── worker-restart.js
│   ├── tools/
│   │   ├── __tests__/
│   │   │   ├── cancel-integration.test.d.ts
│   │   │   ├── cancel-integration.test.js
│   │   │   ├── deepinit-manifest.test.d.ts
│   │   │   ├── deepinit-manifest.test.js
│   │   │   ├── memory-tools.test.d.ts
│   │   │   ├── memory-tools.test.js
│   │   │   ├── schema-conversion.test.d.ts
│   │   │   ├── schema-conversion.test.js
│   │   │   ├── state-tools.test.d.ts
│   │   │   └── state-tools.test.js
│   │   ├── ast-tools.d.ts
│   │   ├── ast-tools.js
│   │   ├── deepinit-manifest.d.ts
│   │   ├── deepinit-manifest.js
│   │   ├── diagnostics/
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── lsp-aggregator.d.ts
│   │   │   ├── lsp-aggregator.js
│   │   │   ├── tsc-runner.d.ts
│   │   │   └── tsc-runner.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── lsp/
│   │   │   ├── __tests__/
│   │   │   │   ├── client-devcontainer.test.d.ts
│   │   │   │   ├── client-devcontainer.test.js
│   │   │   │   ├── client-eviction.test.d.ts
│   │   │   │   ├── client-eviction.test.js
│   │   │   │   ├── client-handle-data.test.d.ts
│   │   │   │   ├── client-handle-data.test.js
│   │   │   │   ├── client-singleton.test.d.ts
│   │   │   │   ├── client-singleton.test.js
│   │   │   │   ├── client-timeout-env.test.d.ts
│   │   │   │   ├── client-timeout-env.test.js
│   │   │   │   ├── client-win32-spawn.test.d.ts
│   │   │   │   ├── client-win32-spawn.test.js
│   │   │   │   ├── devcontainer.test.d.ts
│   │   │   │   └── devcontainer.test.js
│   │   │   ├── client.d.ts
│   │   │   ├── client.js
│   │   │   ├── devcontainer.d.ts
│   │   │   ├── devcontainer.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── servers.d.ts
│   │   │   ├── servers.js
│   │   │   ├── utils.d.ts
│   │   │   └── utils.js
│   │   ├── lsp-tools.d.ts
│   │   ├── lsp-tools.js
│   │   ├── memory-tools.d.ts
│   │   ├── memory-tools.js
│   │   ├── notepad-tools.d.ts
│   │   ├── notepad-tools.js
│   │   ├── python-repl/
│   │   │   ├── __tests__/
│   │   │   │   ├── bridge-manager-cleanup.test.d.ts
│   │   │   │   ├── bridge-manager-cleanup.test.js
│   │   │   │   ├── tcp-fallback.test.d.ts
│   │   │   │   └── tcp-fallback.test.js
│   │   │   ├── bridge-manager.d.ts
│   │   │   ├── bridge-manager.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── paths.d.ts
│   │   │   ├── paths.js
│   │   │   ├── session-lock.d.ts
│   │   │   ├── session-lock.js
│   │   │   ├── socket-client.d.ts
│   │   │   ├── socket-client.js
│   │   │   ├── tool.d.ts
│   │   │   ├── tool.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── resume-session.d.ts
│   │   ├── resume-session.js
│   │   ├── session-history-tools.d.ts
│   │   ├── session-history-tools.js
│   │   ├── shared-memory-tools.d.ts
│   │   ├── shared-memory-tools.js
│   │   ├── skills-tools.d.ts
│   │   ├── skills-tools.js
│   │   ├── state-tools.d.ts
│   │   ├── state-tools.js
│   │   ├── trace-tools.d.ts
│   │   ├── trace-tools.js
│   │   ├── types.d.ts
│   │   └── types.js
│   ├── utils/
│   │   ├── __tests__/
│   │   │   ├── frontmatter.test.d.ts
│   │   │   ├── frontmatter.test.js
│   │   │   ├── paths.test.d.ts
│   │   │   ├── paths.test.js
│   │   │   ├── string-width.test.d.ts
│   │   │   └── string-width.test.js
│   │   ├── config-dir.d.ts
│   │   ├── config-dir.js
│   │   ├── daemon-module-path.d.ts
│   │   ├── daemon-module-path.js
│   │   ├── frontmatter.d.ts
│   │   ├── frontmatter.js
│   │   ├── jsonc.d.ts
│   │   ├── jsonc.js
│   │   ├── omc-cli-rendering.d.ts
│   │   ├── omc-cli-rendering.js
│   │   ├── paths.d.ts
│   │   ├── paths.js
│   │   ├── resolve-node.d.ts
│   │   ├── resolve-node.js
│   │   ├── skill-pipeline.d.ts
│   │   ├── skill-pipeline.js
│   │   ├── skill-resources.d.ts
│   │   ├── skill-resources.js
│   │   ├── ssrf-guard.d.ts
│   │   ├── ssrf-guard.js
│   │   ├── string-width.d.ts
│   │   └── string-width.js
│   └── verification/
│       ├── tier-selector.d.ts
│       ├── tier-selector.js
│       ├── tier-selector.test.d.ts
│       └── tier-selector.test.js
├── docs/
│   ├── AGENTS.md
│   ├── ANALYTICS-SYSTEM.md
│   ├── ARCHITECTURE.md
│   ├── CJK-IME-KNOWN-ISSUES.md
│   ├── CLAUDE.md
│   ├── COMPATIBILITY.md
│   ├── DELEGATION-ENFORCER.md
│   ├── FEATURES.md
│   ├── LOCAL_PLUGIN_INSTALL.md
│   ├── MIGRATION.md
│   ├── OPENCLAW-ROUTING.md
│   ├── PERFORMANCE-MONITORING.md
│   ├── REFERENCE.md
│   ├── SYNC-SYSTEM.md
│   ├── TIERED_AGENTS_V2.md
│   ├── agent-templates/
│   │   ├── README.md
│   │   ├── base-agent.md
│   │   └── tier-instructions.md
│   ├── design/
│   │   ├── CONSOLIDATION_PHASE3_ROADMAP.md
│   │   ├── SKILLS_2_0_ADAPTATION.md
│   │   ├── SKILL_AUDIT_1445.md
│   │   └── project-session-manager.md
│   ├── ko/
│   │   ├── ARCHITECTURE.md
│   │   ├── FEATURES.md
│   │   ├── MIGRATION.md
│   │   └── REFERENCE.md
│   ├── partials/
│   │   ├── agent-tiers.md
│   │   ├── features.md
│   │   ├── mode-hierarchy.md
│   │   ├── mode-selection-guide.md
│   │   └── verification-tiers.md
│   └── shared/
│       ├── agent-tiers.md
│       ├── features.md
│       ├── mode-hierarchy.md
│       ├── mode-selection-guide.md
│       └── verification-tiers.md
├── eslint.config.js
├── examples/
│   ├── advanced-usage.ts
│   ├── basic-usage.ts
│   ├── delegation-enforcer-demo.ts
│   └── hooks.json
├── hooks/
│   └── hooks.json
├── missions/
│   ├── enhance-omc-performance/
│   │   ├── mission.md
│   │   └── sandbox.md
│   ├── optimize-omc/
│   │   ├── mission.md
│   │   └── sandbox.md
│   ├── optimize-performance/
│   │   ├── mission.md
│   │   └── sandbox.md
│   └── prove-reliability-by-finding-and-fixing-flaky-te/
│       ├── mission.md
│       └── sandbox.md
├── package.json
├── research/
│   └── hephaestus-vs-deep-executor-comparison.md
├── scripts/
│   ├── build-bridge-entry.mjs
│   ├── build-cli.mjs
│   ├── build-mcp-server.mjs
│   ├── build-runtime-cli.mjs
│   ├── build-skill-bridge.mjs
│   ├── build-team-server.mjs
│   ├── cleanup-orphans.mjs
│   ├── code-simplifier.mjs
│   ├── compose-docs.mjs
│   ├── context-guard-stop.mjs
│   ├── context-safety.mjs
│   ├── demo-team.mjs
│   ├── eval-autoresearch-json.mjs
│   ├── eval-autoresearch-timed-json.mjs
│   ├── find-node.sh
│   ├── generate-featured-contributors.ts
│   ├── keyword-detector.mjs
│   ├── lib/
│   │   ├── atomic-write.mjs
│   │   └── stdin.mjs
│   ├── openclaw-gateway-demo.mjs
│   ├── permission-handler.mjs
│   ├── persistent-mode.cjs
│   ├── persistent-mode.mjs
│   ├── plugin-setup.mjs
│   ├── post-tool-use-failure.mjs
│   ├── post-tool-verifier.mjs
│   ├── pre-compact.mjs
│   ├── pre-tool-enforcer.mjs
│   ├── project-memory-posttool.mjs
│   ├── project-memory-precompact.mjs
│   ├── project-memory-session.mjs
│   ├── qa-tests/
│   │   └── test-custom-integration.mjs
│   ├── release.ts
│   ├── run-provider-advisor.js
│   ├── run.cjs
│   ├── session-end.mjs
│   ├── session-start.mjs
│   ├── session-summary.mjs
│   ├── setup-claude-md.sh
│   ├── setup-init.mjs
│   ├── setup-maintenance.mjs
│   ├── setup-progress.sh
│   ├── skill-injector.mjs
│   ├── status.mjs
│   ├── subagent-tracker.mjs
│   ├── sync-metadata.ts
│   ├── sync-version.sh
│   ├── test-max-attempts.ts
│   ├── test-mutual-exclusion.ts
│   ├── test-notepad-integration.ts
│   ├── test-pr25.sh
│   ├── test-remember-tags.ts
│   ├── test-session-injection.ts
│   ├── uninstall.sh
│   └── verify-deliverables.mjs
├── seminar/
│   ├── demos/
│   │   ├── README.md
│   │   ├── demo-0-live-audience.md
│   │   ├── demo-1-autopilot.md
│   │   ├── demo-2-ultrawork.md
│   │   ├── demo-3-pipeline.md
│   │   ├── demo-4-planning.md
│   │   └── demo-5-ralph.md
│   ├── notes.md
│   ├── quickref.md
│   ├── screenshots/
│   │   └── README.md
│   └── slides.md
├── shellmark/
│   └── sessions/
│       └── 20260310T014715888Z/
│           ├── events/
│           │   ├── 000001.meta.json
│           │   ├── 000001.raw.txt
│           │   └── 000001.summary.md
│           ├── indexes/
│           │   ├── by_status.jsonl
│           │   └── by_time.jsonl
│           └── manifest.json
├── skills/
│   ├── AGENTS.md
│   ├── ai-slop-cleaner/
│   │   └── SKILL.md
│   ├── ask/
│   │   └── SKILL.md
│   ├── autopilot/
│   │   └── SKILL.md
│   ├── cancel/
│   │   └── SKILL.md
│   ├── ccg/
│   │   └── SKILL.md
│   ├── configure-notifications/
│   │   └── SKILL.md
│   ├── deep-dive/
│   │   └── SKILL.md
│   ├── deep-interview/
│   │   └── SKILL.md
│   ├── deepinit/
│   │   └── SKILL.md
│   ├── external-context/
│   │   └── SKILL.md
│   ├── hud/
│   │   └── SKILL.md
│   ├── learner/
│   │   └── SKILL.md
│   ├── mcp-setup/
│   │   └── SKILL.md
│   ├── omc-doctor/
│   │   └── SKILL.md
│   ├── omc-reference/
│   │   └── SKILL.md
│   ├── omc-setup/
│   │   ├── SKILL.md
│   │   └── phases/
│   │       ├── 01-install-claude-md.md
│   │       ├── 02-configure.md
│   │       ├── 03-integrations.md
│   │       └── 04-welcome.md
│   ├── omc-teams/
│   │   └── SKILL.md
│   ├── plan/
│   │   └── SKILL.md
│   ├── project-session-manager/
│   │   ├── SKILL.md
│   │   ├── lib/
│   │   │   ├── config.sh
│   │   │   ├── parse.sh
│   │   │   ├── providers/
│   │   │   │   ├── azure-devops.sh
│   │   │   │   ├── bitbucket.sh
│   │   │   │   ├── gitea.sh
│   │   │   │   ├── github.sh
│   │   │   │   ├── gitlab.sh
│   │   │   │   ├── interface.sh
│   │   │   │   └── jira.sh
│   │   │   ├── session.sh
│   │   │   ├── tmux.sh
│   │   │   └── worktree.sh
│   │   ├── psm.sh
│   │   └── templates/
│   │       ├── feature.md
│   │       ├── issue-fix.md
│   │       ├── pr-review.md
│   │       └── projects.json
│   ├── ralph/
│   │   └── SKILL.md
│   ├── ralplan/
│   │   └── SKILL.md
│   ├── release/
│   │   └── SKILL.md
│   ├── sciomc/
│   │   └── SKILL.md
│   ├── setup/
│   │   └── SKILL.md
│   ├── skill/
│   │   └── SKILL.md
│   ├── team/
│   │   └── SKILL.md
│   ├── trace/
│   │   └── SKILL.md
│   ├── ultraqa/
│   │   └── SKILL.md
│   ├── ultrawork/
│   │   └── SKILL.md
│   ├── visual-verdict/
│   │   └── SKILL.md
│   └── writer-memory/
│       ├── SKILL.md
│       ├── lib/
│       │   ├── character-tracker.ts
│       │   ├── memory-manager.ts
│       │   ├── relationship-graph.ts
│       │   ├── scene-organizer.ts
│       │   └── synopsis-builder.ts
│       └── templates/
│           └── synopsis-template.md
├── src/
│   ├── AGENTS.md
│   ├── __tests__/
│   │   ├── agent-boundary-guidance.test.ts
│   │   ├── agent-registry.test.ts
│   │   ├── auto-slash-aliases.test.ts
│   │   ├── auto-update.test.ts
│   │   ├── auto-upgrade-prompt.test.ts
│   │   ├── background-cleanup-directory.test.ts
│   │   ├── bash-history.test.ts
│   │   ├── bedrock-lm-suffix-hook.test.ts
│   │   ├── bedrock-model-routing.test.ts
│   │   ├── cleanup-validation.test.ts
│   │   ├── cli-config-stop-callback.test.ts
│   │   ├── cli-interop-flags.test.ts
│   │   ├── cli-notify-profile.test.ts
│   │   ├── cli-win32-warning.test.ts
│   │   ├── compact-denylist.test.ts
│   │   ├── config-force-inherit-env.test.ts
│   │   ├── consensus-execution-handoff.test.ts
│   │   ├── consolidation-contracts.test.ts
│   │   ├── context-guard-stop.test.ts
│   │   ├── context-safety.test.ts
│   │   ├── daemon-module-path.test.ts
│   │   ├── deep-interview-provider-options.test.ts
│   │   ├── delegation-enforcement-levels.test.ts
│   │   ├── delegation-enforcer-integration.test.ts
│   │   ├── delegation-enforcer.test.ts
│   │   ├── directory-context-injector.test.ts
│   │   ├── disable-tools.test.ts
│   │   ├── doctor-conflicts.test.ts
│   │   ├── featured-contributors-generator.test.ts
│   │   ├── file-lock.test.ts
│   │   ├── fixtures/
│   │   │   └── sample-transcript.jsonl
│   │   ├── helpers/
│   │   │   └── prompt-test-helpers.ts
│   │   ├── hooks/
│   │   │   ├── learner/
│   │   │   │   ├── bridge.test.ts
│   │   │   │   ├── parser.test.ts
│   │   │   │   └── transliteration-map.test.ts
│   │   │   └── plugin-patterns.test.ts
│   │   ├── hooks-command-escaping.test.ts
│   │   ├── hooks.test.ts
│   │   ├── hud/
│   │   │   ├── background-tasks.test.ts
│   │   │   ├── call-counts.test.ts
│   │   │   ├── context-warning.test.ts
│   │   │   ├── context.test.ts
│   │   │   ├── custom-rate-provider.test.ts
│   │   │   ├── cwd.test.ts
│   │   │   ├── defaults.test.ts
│   │   │   ├── git.test.ts
│   │   │   ├── limits-error.test.ts
│   │   │   ├── max-width.test.ts
│   │   │   ├── mission-board-state.test.ts
│   │   │   ├── mission-board.test.ts
│   │   │   ├── model.test.ts
│   │   │   ├── omc-state.test.ts
│   │   │   ├── prompt-time.test.ts
│   │   │   ├── rate-limits-error.test.ts
│   │   │   ├── render-rate-limits-priority.test.ts
│   │   │   ├── render.test.ts
│   │   │   ├── sanitize.test.ts
│   │   │   ├── skills.test.ts
│   │   │   ├── stale-indicator.test.ts
│   │   │   ├── state.test.ts
│   │   │   ├── stdin.test.ts
│   │   │   ├── thinking.test.ts
│   │   │   ├── token-usage.test.ts
│   │   │   ├── usage-api-lock.test.ts
│   │   │   ├── usage-api-stale.test.ts
│   │   │   ├── usage-api.test.ts
│   │   │   ├── version-display.test.ts
│   │   │   ├── watch-mode-init.test.ts
│   │   │   └── windows-platform.test.ts
│   │   ├── hud-agents.test.ts
│   │   ├── hud-api-key-source.test.ts
│   │   ├── hud-build-guidance.test.ts
│   │   ├── hud-marketplace-resolution.test.ts
│   │   ├── hud-windows.test.ts
│   │   ├── installer-hooks-merge.test.ts
│   │   ├── installer-hud-skip.test.ts
│   │   ├── installer-mcp-config.test.ts
│   │   ├── installer-omc-reference.test.ts
│   │   ├── installer-plugin-agents.test.ts
│   │   ├── installer-version-guard.test.ts
│   │   ├── installer.test.ts
│   │   ├── job-management-sqlite.test.ts
│   │   ├── job-management.test.ts
│   │   ├── job-state-db.test.ts
│   │   ├── jobid-collision-safety.test.ts
│   │   ├── learner/
│   │   │   ├── auto-learner.test.ts
│   │   │   └── matcher.test.ts
│   │   ├── live-data.test.ts
│   │   ├── load-agent-prompt.test.ts
│   │   ├── lsp-servers.test.ts
│   │   ├── mcp-comm-inbox-dedup.test.ts
│   │   ├── mcp-default-config.test.ts
│   │   ├── mnemosyne/
│   │   │   ├── config.test.ts
│   │   │   ├── detector.test.ts
│   │   │   ├── finder.test.ts
│   │   │   ├── loader.test.ts
│   │   │   ├── parser.test.ts
│   │   │   └── validator.test.ts
│   │   ├── mode-names-ralplan.test.ts
│   │   ├── model-routing-esm.test.ts
│   │   ├── model-routing.test.ts
│   │   ├── non-claude-provider-detection.test.ts
│   │   ├── notepad.test.ts
│   │   ├── omc-cli-rendering.test.ts
│   │   ├── omc-tools-contract.test.ts
│   │   ├── omc-tools-server-interop.test.ts
│   │   ├── omc-tools-server.test.ts
│   │   ├── outbox-reader-partial-lines.test.ts
│   │   ├── package-dir-resolution-regression.test.ts
│   │   ├── permission-enforcement.test.ts
│   │   ├── pipeline-orchestrator.test.ts
│   │   ├── pipeline-signal-regex-escape.test.ts
│   │   ├── plugin-setup-deps.test.ts
│   │   ├── plugin-setup-devpaths.test.ts
│   │   ├── post-tool-verifier.test.mjs
│   │   ├── pre-compact-cwd.test.ts
│   │   ├── pre-tool-enforcer.test.ts
│   │   ├── project-memory-merge.test.ts
│   │   ├── prompt-injection.test.ts
│   │   ├── protected-mode-regressions.test.ts
│   │   ├── providers/
│   │   │   ├── azure-devops.test.ts
│   │   │   ├── bitbucket.test.ts
│   │   │   ├── detection.test.ts
│   │   │   ├── gitea.test.ts
│   │   │   ├── github.test.ts
│   │   │   └── gitlab.test.ts
│   │   ├── purge-stale-cache.test.ts
│   │   ├── ralph-prd-mandatory.test.ts
│   │   ├── ralph-prd.test.ts
│   │   ├── ralph-progress.test.ts
│   │   ├── rate-limit-wait/
│   │   │   ├── daemon-bootstrap.test.ts
│   │   │   ├── daemon.test.ts
│   │   │   ├── integration.test.ts
│   │   │   ├── rate-limit-monitor.test.ts
│   │   │   └── tmux-detector.test.ts
│   │   ├── repo-slug-dots.test.ts
│   │   ├── resolve-node.test.ts
│   │   ├── resolve-transcript-path.test.ts
│   │   ├── routing-force-inherit.test.ts
│   │   ├── run-cjs-graceful-fallback.test.ts
│   │   ├── runtime-task-orphan.test.ts
│   │   ├── session-history-search.test.ts
│   │   ├── session-start-cache-cleanup.test.ts
│   │   ├── session-start-script-context.test.ts
│   │   ├── session-start-timeout-cleanup.test.ts
│   │   ├── session-summary-pid-tracking.test.ts
│   │   ├── setup-claude-md-script.test.ts
│   │   ├── shared-memory-concurrency.test.ts
│   │   ├── shared-memory.test.ts
│   │   ├── shared-state-locking.test.ts
│   │   ├── skills.test.ts
│   │   ├── slack-fallback-removal.test.ts
│   │   ├── slack-socket.test.ts
│   │   ├── smoke-pipeline-edge.test.ts
│   │   ├── smoke-slack-and-state.test.ts
│   │   ├── ssrf-guard.test.ts
│   │   ├── standalone-server.test.ts
│   │   ├── task-continuation.test.ts
│   │   ├── team-ops-task-locking.test.ts
│   │   ├── team-server-validation.test.ts
│   │   ├── team-status-failed-count.test.ts
│   │   ├── team-status-tmux-provider.test.ts
│   │   ├── tier0-contracts.test.ts
│   │   ├── tier0-docs-consistency.test.ts
│   │   ├── tools/
│   │   │   ├── ast-tools.test.ts
│   │   │   ├── skills-tools.test.ts
│   │   │   └── trace-tools.test.ts
│   │   ├── types.test.ts
│   │   ├── version-helper.test.ts
│   │   ├── visual-verdict-skill.test.ts
│   │   ├── webhook-timeout-cleanup.test.ts
│   │   └── worktree-metadata-locking.test.ts
│   ├── agents/
│   │   ├── AGENTS.md
│   │   ├── analyst.ts
│   │   ├── architect.ts
│   │   ├── critic.ts
│   │   ├── definitions.ts
│   │   ├── designer.ts
│   │   ├── document-specialist.ts
│   │   ├── executor.ts
│   │   ├── explore.ts
│   │   ├── index.ts
│   │   ├── planner.ts
│   │   ├── prompt-helpers.ts
│   │   ├── prompt-sections/
│   │   │   └── index.ts
│   │   ├── qa-tester.ts
│   │   ├── scientist.ts
│   │   ├── templates/
│   │   │   ├── exploration-template.md
│   │   │   └── implementation-template.md
│   │   ├── tracer.ts
│   │   ├── types.ts
│   │   ├── utils.ts
│   │   └── writer.ts
│   ├── autoresearch/
│   │   ├── __tests__/
│   │   │   ├── contracts.test.ts
│   │   │   ├── runtime-parity-extra.test.ts
│   │   │   ├── runtime.test.ts
│   │   │   └── setup-contract.test.ts
│   │   ├── contracts.ts
│   │   ├── runtime.ts
│   │   └── setup-contract.ts
│   ├── cli/
│   │   ├── __tests__/
│   │   │   ├── ask.test.ts
│   │   │   ├── autoresearch-guided.test.ts
│   │   │   ├── autoresearch-intake.test.ts
│   │   │   ├── autoresearch-setup-session.test.ts
│   │   │   ├── autoresearch.test.ts
│   │   │   ├── cli-boot.test.ts
│   │   │   ├── hud-watch.test.ts
│   │   │   ├── launch.test.ts
│   │   │   ├── session-search-help.test.ts
│   │   │   ├── session-search.test.ts
│   │   │   ├── team-command-branding.test.ts
│   │   │   ├── team-help.test.ts
│   │   │   ├── team-runtime-boundary.test.ts
│   │   │   ├── team.test.ts
│   │   │   ├── teleport-help.test.ts
│   │   │   └── tmux-utils.test.ts
│   │   ├── ask.ts
│   │   ├── autoresearch-guided.ts
│   │   ├── autoresearch-intake.ts
│   │   ├── autoresearch-setup-session.ts
│   │   ├── autoresearch.ts
│   │   ├── commands/
│   │   │   ├── __tests__/
│   │   │   │   ├── team.test.ts
│   │   │   │   └── teleport.test.ts
│   │   │   ├── doctor-conflicts.ts
│   │   │   ├── ralphthon.ts
│   │   │   ├── session-search.ts
│   │   │   ├── team.ts
│   │   │   ├── teleport.ts
│   │   │   └── wait.ts
│   │   ├── hud-watch.ts
│   │   ├── index.ts
│   │   ├── interop.ts
│   │   ├── launch.ts
│   │   ├── team.ts
│   │   ├── tmux-utils.ts
│   │   ├── utils/
│   │   │   └── formatting.ts
│   │   └── win32-warning.ts
│   ├── commands/
│   │   └── index.ts
│   ├── config/
│   │   ├── __tests__/
│   │   │   ├── loader.test.ts
│   │   │   ├── models.test.ts
│   │   │   ├── plan-output.test.ts
│   │   │   └── test-helpers.ts
│   │   ├── index.ts
│   │   ├── loader.ts
│   │   ├── models.ts
│   │   └── plan-output.ts
│   ├── constants/
│   │   ├── index.ts
│   │   └── names.ts
│   ├── features/
│   │   ├── AGENTS.md
│   │   ├── auto-update.ts
│   │   ├── background-agent/
│   │   │   ├── concurrency.ts
│   │   │   ├── index.ts
│   │   │   ├── manager.ts
│   │   │   └── types.ts
│   │   ├── background-tasks.ts
│   │   ├── boulder-state/
│   │   │   ├── constants.ts
│   │   │   ├── index.ts
│   │   │   ├── storage.ts
│   │   │   └── types.ts
│   │   ├── builtin-skills/
│   │   │   ├── index.ts
│   │   │   ├── runtime-guidance.ts
│   │   │   ├── skills.ts
│   │   │   └── types.ts
│   │   ├── context-injector/
│   │   │   ├── collector.ts
│   │   │   ├── index.ts
│   │   │   ├── injector.ts
│   │   │   └── types.ts
│   │   ├── continuation-enforcement.ts
│   │   ├── delegation-categories/
│   │   │   ├── INTEGRATION.md
│   │   │   ├── README.md
│   │   │   ├── __tests__/
│   │   │   │   └── index.test.ts
│   │   │   ├── index.ts
│   │   │   ├── test-categories.ts
│   │   │   └── types.ts
│   │   ├── delegation-enforcer.ts
│   │   ├── delegation-routing/
│   │   │   ├── __tests__/
│   │   │   │   └── resolver.test.ts
│   │   │   ├── index.ts
│   │   │   ├── resolver.ts
│   │   │   └── types.ts
│   │   ├── index.ts
│   │   ├── magic-keywords.ts
│   │   ├── model-routing/
│   │   │   ├── __tests__/
│   │   │   │   └── index.test.ts
│   │   │   ├── index.ts
│   │   │   ├── prompts/
│   │   │   │   ├── haiku.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── opus.ts
│   │   │   │   └── sonnet.ts
│   │   │   ├── router.ts
│   │   │   ├── rules.ts
│   │   │   ├── scorer.ts
│   │   │   ├── signals.ts
│   │   │   └── types.ts
│   │   ├── notepad-wisdom/
│   │   │   ├── extractor.ts
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── rate-limit-wait/
│   │   │   ├── daemon.ts
│   │   │   ├── index.ts
│   │   │   ├── rate-limit-monitor.ts
│   │   │   ├── tmux-detector.ts
│   │   │   └── types.ts
│   │   ├── session-history-search/
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── state-manager/
│   │   │   ├── __tests__/
│   │   │   │   └── cache.test.ts
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── task-decomposer/
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   └── verification/
│   │       ├── README.md
│   │       ├── index.ts
│   │       └── types.ts
│   ├── hooks/
│   │   ├── AGENTS.md
│   │   ├── __tests__/
│   │   │   ├── askuserquestion-lifecycle.test.ts
│   │   │   ├── background-process-guard.test.ts
│   │   │   ├── bridge-openclaw.test.ts
│   │   │   ├── bridge-pkill.test.ts
│   │   │   ├── bridge-routing.test.ts
│   │   │   ├── bridge-security.test.ts
│   │   │   ├── bridge-team-worker-guard.test.ts
│   │   │   ├── bridge.test.ts
│   │   │   ├── codebase-map.test.ts
│   │   │   ├── compaction-concurrency.test.ts
│   │   │   ├── stop-hook-openclaw-cooldown.test.ts
│   │   │   └── team-worker-heartbeat.test.ts
│   │   ├── agent-usage-reminder/
│   │   │   ├── constants.ts
│   │   │   ├── index.ts
│   │   │   ├── storage.ts
│   │   │   └── types.ts
│   │   ├── agents-overlay.ts
│   │   ├── auto-slash-command/
│   │   │   ├── constants.ts
│   │   │   ├── detector.ts
│   │   │   ├── executor.ts
│   │   │   ├── index.ts
│   │   │   ├── live-data.ts
│   │   │   └── types.ts
│   │   ├── autopilot/
│   │   │   ├── __tests__/
│   │   │   │   ├── cancel.test.ts
│   │   │   │   ├── pipeline.test.ts
│   │   │   │   ├── prompts.test.ts
│   │   │   │   ├── state.test.ts
│   │   │   │   ├── summary.test.ts
│   │   │   │   ├── transition.test.ts
│   │   │   │   ├── transitions.test.ts
│   │   │   │   └── validation.test.ts
│   │   │   ├── adapters/
│   │   │   │   ├── execution-adapter.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── qa-adapter.ts
│   │   │   │   ├── ralph-adapter.ts
│   │   │   │   └── ralplan-adapter.ts
│   │   │   ├── cancel.ts
│   │   │   ├── enforcement.ts
│   │   │   ├── index.ts
│   │   │   ├── pipeline-types.ts
│   │   │   ├── pipeline.ts
│   │   │   ├── prompts.ts
│   │   │   ├── state.ts
│   │   │   ├── transition-helper.ts
│   │   │   ├── types.ts
│   │   │   └── validation.ts
│   │   ├── background-notification/
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── beads-context/
│   │   │   ├── __tests__/
│   │   │   │   └── index.test.ts
│   │   │   ├── constants.ts
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── bridge-normalize.ts
│   │   ├── bridge.ts
│   │   ├── code-simplifier/
│   │   │   └── index.ts
│   │   ├── codebase-map.ts
│   │   ├── comment-checker/
│   │   │   ├── constants.ts
│   │   │   ├── filters.ts
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── directory-readme-injector/
│   │   │   ├── constants.ts
│   │   │   ├── index.ts
│   │   │   ├── storage.ts
│   │   │   └── types.ts
│   │   ├── empty-message-sanitizer/
│   │   │   ├── __tests__/
│   │   │   │   └── index.test.ts
│   │   │   ├── constants.ts
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── factcheck/
│   │   │   ├── __tests__/
│   │   │   │   ├── factcheck.test.ts
│   │   │   │   ├── sentinel-gate.test.ts
│   │   │   │   └── sentinel.test.ts
│   │   │   ├── checks.ts
│   │   │   ├── config.ts
│   │   │   ├── index.ts
│   │   │   ├── sentinel.ts
│   │   │   └── types.ts
│   │   ├── index.ts
│   │   ├── keyword-detector/
│   │   │   ├── __tests__/
│   │   │   │   └── index.test.ts
│   │   │   └── index.ts
│   │   ├── learner/
│   │   │   ├── auto-invoke.ts
│   │   │   ├── auto-learner.ts
│   │   │   ├── bridge.ts
│   │   │   ├── config.ts
│   │   │   ├── constants.ts
│   │   │   ├── detection-hook.ts
│   │   │   ├── detector.ts
│   │   │   ├── finder.ts
│   │   │   ├── index.ts
│   │   │   ├── loader.ts
│   │   │   ├── matcher.ts
│   │   │   ├── parser.ts
│   │   │   ├── promotion.ts
│   │   │   ├── transliteration-map.ts
│   │   │   ├── types.ts
│   │   │   ├── validator.ts
│   │   │   └── writer.ts
│   │   ├── mode-registry/
│   │   │   ├── __tests__/
│   │   │   │   └── session-isolation.test.ts
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── non-interactive-env/
│   │   │   ├── constants.ts
│   │   │   ├── detector.ts
│   │   │   ├── index.test.ts
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── notepad/
│   │   │   └── index.ts
│   │   ├── omc-orchestrator/
│   │   │   ├── audit.ts
│   │   │   ├── constants.ts
│   │   │   └── index.ts
│   │   ├── permission-handler/
│   │   │   ├── __tests__/
│   │   │   │   └── index.test.ts
│   │   │   └── index.ts
│   │   ├── persistent-mode/
│   │   │   ├── __tests__/
│   │   │   │   ├── cancel-race.test.ts
│   │   │   │   ├── error-handling.test.ts
│   │   │   │   ├── idle-cooldown.test.ts
│   │   │   │   ├── ralph-max-iteration.test.ts
│   │   │   │   ├── ralph-verification-flow.test.ts
│   │   │   │   ├── rate-limit-stop.test.ts
│   │   │   │   ├── skill-state-stop.test.ts
│   │   │   │   ├── team-ralplan-stop.test.ts
│   │   │   │   └── tool-error.test.ts
│   │   │   ├── idle-cooldown.test.ts
│   │   │   ├── index.ts
│   │   │   ├── session-isolation.test.ts
│   │   │   └── stop-hook-blocking.test.ts
│   │   ├── plugin-patterns/
│   │   │   ├── __tests__/
│   │   │   │   └── index.test.ts
│   │   │   └── index.ts
│   │   ├── pre-compact/
│   │   │   └── index.ts
│   │   ├── preemptive-compaction/
│   │   │   ├── constants.ts
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── project-memory/
│   │   │   ├── __tests__/
│   │   │   │   ├── detector.test.ts
│   │   │   │   ├── formatter.test.ts
│   │   │   │   ├── integration.test.ts
│   │   │   │   ├── learner.test.ts
│   │   │   │   ├── pre-compact.test.ts
│   │   │   │   └── storage.test.ts
│   │   │   ├── constants.ts
│   │   │   ├── detector.ts
│   │   │   ├── directive-detector.ts
│   │   │   ├── directory-mapper.ts
│   │   │   ├── formatter.ts
│   │   │   ├── hot-path-tracker.ts
│   │   │   ├── index.ts
│   │   │   ├── learner.ts
│   │   │   ├── pre-compact.ts
│   │   │   ├── storage.ts
│   │   │   └── types.ts
│   │   ├── ralph/
│   │   │   ├── index.ts
│   │   │   ├── loop.ts
│   │   │   ├── prd.ts
│   │   │   ├── progress.ts
│   │   │   └── verifier.ts
│   │   ├── recovery/
│   │   │   ├── __tests__/
│   │   │   │   └── storage.test.ts
│   │   │   ├── constants.ts
│   │   │   ├── context-window.ts
│   │   │   ├── edit-error.ts
│   │   │   ├── index.ts
│   │   │   ├── session-recovery.ts
│   │   │   ├── storage.ts
│   │   │   └── types.ts
│   │   ├── rules-injector/
│   │   │   ├── constants.ts
│   │   │   ├── finder.ts
│   │   │   ├── index.ts
│   │   │   ├── matcher.ts
│   │   │   ├── parser.ts
│   │   │   ├── storage.ts
│   │   │   └── types.ts
│   │   ├── session-end/
│   │   │   ├── __tests__/
│   │   │   │   ├── callbacks.test.ts
│   │   │   │   ├── duplicate-notifications.test.ts
│   │   │   │   ├── mode-state-cleanup.test.ts
│   │   │   │   ├── openclaw-session-end.test.ts
│   │   │   │   ├── python-repl-cleanup.test.ts
│   │   │   │   ├── session-duration.test.ts
│   │   │   │   ├── session-end-bridge-cleanup.test.ts
│   │   │   │   ├── session-end-timeout.test.ts
│   │   │   │   ├── subdirectory-cwd.test.ts
│   │   │   │   └── team-cleanup.test.ts
│   │   │   ├── callbacks.ts
│   │   │   └── index.ts
│   │   ├── setup/
│   │   │   ├── README.md
│   │   │   ├── __tests__/
│   │   │   │   ├── prune.test.ts
│   │   │   │   └── windows-patch.test.ts
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── skill-state/
│   │   │   ├── __tests__/
│   │   │   │   └── skill-state.test.ts
│   │   │   └── index.ts
│   │   ├── subagent-tracker/
│   │   │   ├── __tests__/
│   │   │   │   ├── flow-tracer.test.ts
│   │   │   │   ├── flush-race.test.ts
│   │   │   │   ├── index.test.ts
│   │   │   │   └── session-replay.test.ts
│   │   │   ├── flow-tracer.ts
│   │   │   ├── index.ts
│   │   │   └── session-replay.ts
│   │   ├── task-size-detector/
│   │   │   ├── __tests__/
│   │   │   │   └── index.test.ts
│   │   │   └── index.ts
│   │   ├── team-dispatch-hook.ts
│   │   ├── team-leader-nudge-hook.ts
│   │   ├── team-pipeline/
│   │   │   ├── __tests__/
│   │   │   │   └── transitions.test.ts
│   │   │   ├── index.ts
│   │   │   ├── state.ts
│   │   │   ├── transitions.ts
│   │   │   └── types.ts
│   │   ├── team-worker-hook.ts
│   │   ├── think-mode/
│   │   │   ├── __tests__/
│   │   │   │   └── index.test.ts
│   │   │   ├── detector.ts
│   │   │   ├── index.ts
│   │   │   ├── switcher.ts
│   │   │   └── types.ts
│   │   ├── thinking-block-validator/
│   │   │   ├── __tests__/
│   │   │   │   └── index.test.ts
│   │   │   ├── constants.ts
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── todo-continuation/
│   │   │   ├── __tests__/
│   │   │   │   ├── isAuthenticationError.test.ts
│   │   │   │   ├── isRateLimitStop.test.ts
│   │   │   │   └── isUserAbort.test.ts
│   │   │   └── index.ts
│   │   ├── ultraqa/
│   │   │   └── index.ts
│   │   └── ultrawork/
│   │       ├── index.ts
│   │       └── session-isolation.test.ts
│   ├── hud/
│   │   ├── background-cleanup.ts
│   │   ├── background-tasks.ts
│   │   ├── colors.ts
│   │   ├── custom-rate-provider.ts
│   │   ├── elements/
│   │   │   ├── agents.ts
│   │   │   ├── api-key-source.ts
│   │   │   ├── autopilot.ts
│   │   │   ├── background.ts
│   │   │   ├── call-counts.ts
│   │   │   ├── context-warning.ts
│   │   │   ├── context.ts
│   │   │   ├── cwd.ts
│   │   │   ├── git.ts
│   │   │   ├── index.ts
│   │   │   ├── limits.ts
│   │   │   ├── mission-board.ts
│   │   │   ├── model.ts
│   │   │   ├── permission.ts
│   │   │   ├── prd.ts
│   │   │   ├── prompt-time.ts
│   │   │   ├── ralph.ts
│   │   │   ├── session-summary.ts
│   │   │   ├── session.ts
│   │   │   ├── skills.ts
│   │   │   ├── thinking.ts
│   │   │   ├── todos.ts
│   │   │   └── token-usage.ts
│   │   ├── index.ts
│   │   ├── mission-board.ts
│   │   ├── omc-state.ts
│   │   ├── render.ts
│   │   ├── sanitize.ts
│   │   ├── state.ts
│   │   ├── stdin.ts
│   │   ├── transcript.ts
│   │   ├── types.ts
│   │   └── usage-api.ts
│   ├── index.ts
│   ├── installer/
│   │   ├── __tests__/
│   │   │   ├── claude-md-merge.test.ts
│   │   │   ├── hook-templates.test.ts
│   │   │   ├── mcp-registry.test.ts
│   │   │   ├── safe-installer.test.ts
│   │   │   └── session-start-template.test.ts
│   │   ├── hooks.ts
│   │   ├── index.ts
│   │   └── mcp-registry.ts
│   ├── interop/
│   │   ├── __tests__/
│   │   │   └── mcp-bridge.test.ts
│   │   ├── mcp-bridge.ts
│   │   ├── omx-team-state.ts
│   │   └── shared-state.ts
│   ├── lib/
│   │   ├── __tests__/
│   │   │   ├── mode-state-io.test.ts
│   │   │   ├── payload-limits.test.ts
│   │   │   ├── swallowed-error.test.ts
│   │   │   └── worktree-paths.test.ts
│   │   ├── atomic-write.ts
│   │   ├── featured-contributors.ts
│   │   ├── file-lock.ts
│   │   ├── job-state-db.ts
│   │   ├── mode-names.ts
│   │   ├── mode-state-io.ts
│   │   ├── payload-limits.ts
│   │   ├── project-memory-merge.ts
│   │   ├── session-isolation.ts
│   │   ├── shared-memory.ts
│   │   ├── swallowed-error.ts
│   │   ├── version.ts
│   │   └── worktree-paths.ts
│   ├── mcp/
│   │   ├── __tests__/
│   │   │   ├── prompt-injection.test.ts
│   │   │   ├── standalone-shutdown.test.ts
│   │   │   ├── team-cleanup.test.ts
│   │   │   └── team-server-artifact-convergence.test.ts
│   │   ├── index.ts
│   │   ├── job-management.ts
│   │   ├── mcp-config.ts
│   │   ├── omc-tools-server.ts
│   │   ├── prompt-injection.ts
│   │   ├── prompt-persistence.ts
│   │   ├── servers.ts
│   │   ├── standalone-server.ts
│   │   ├── standalone-shutdown.ts
│   │   ├── team-job-convergence.ts
│   │   └── team-server.ts
│   ├── notifications/
│   │   ├── __tests__/
│   │   │   ├── config-merge.test.ts
│   │   │   ├── config.test.ts
│   │   │   ├── custom-integration.test.ts
│   │   │   ├── dispatcher.test.ts
│   │   │   ├── formatter.test.ts
│   │   │   ├── hook-config.test.ts
│   │   │   ├── notify-registry-integration.test.ts
│   │   │   ├── platform-gating.test.ts
│   │   │   ├── profiles.test.ts
│   │   │   ├── redact.test.ts
│   │   │   ├── reply-config.test.ts
│   │   │   ├── reply-listener.test.ts
│   │   │   ├── session-registry.test.ts
│   │   │   ├── slack-socket.test.ts
│   │   │   ├── template-engine.test.ts
│   │   │   ├── tmux.test.ts
│   │   │   └── verbosity.test.ts
│   │   ├── config.ts
│   │   ├── dispatcher.ts
│   │   ├── formatter.ts
│   │   ├── hook-config-types.ts
│   │   ├── hook-config.ts
│   │   ├── index.ts
│   │   ├── presets.ts
│   │   ├── redact.ts
│   │   ├── reply-listener.ts
│   │   ├── session-registry.ts
│   │   ├── slack-socket.ts
│   │   ├── template-engine.ts
│   │   ├── template-variables.ts
│   │   ├── tmux.ts
│   │   ├── types.ts
│   │   └── validation.ts
│   ├── openclaw/
│   │   ├── __tests__/
│   │   │   ├── config.test.ts
│   │   │   ├── dispatcher.test.ts
│   │   │   ├── index.test.ts
│   │   │   └── signal.test.ts
│   │   ├── config.ts
│   │   ├── dispatcher.ts
│   │   ├── index.ts
│   │   ├── signal.ts
│   │   └── types.ts
│   ├── planning/
│   │   ├── __tests__/
│   │   │   └── artifacts.test.ts
│   │   └── artifacts.ts
│   ├── platform/
│   │   ├── index.ts
│   │   └── process-utils.ts
│   ├── providers/
│   │   ├── azure-devops.ts
│   │   ├── bitbucket.ts
│   │   ├── gitea.ts
│   │   ├── github.ts
│   │   ├── gitlab.ts
│   │   ├── index.ts
│   │   └── types.ts
│   ├── ralphthon/
│   │   ├── __tests__/
│   │   │   ├── cli.test.ts
│   │   │   ├── orchestrator.test.ts
│   │   │   └── prd.test.ts
│   │   ├── deep-interview-prompt.ts
│   │   ├── index.ts
│   │   ├── orchestrator.ts
│   │   ├── prd.ts
│   │   └── types.ts
│   ├── shared/
│   │   ├── index.ts
│   │   └── types.ts
│   ├── skills/
│   │   └── __tests__/
│   │       └── mingw-escape.test.ts
│   ├── team/
│   │   ├── __tests__/
│   │   │   ├── activity-log.test.ts
│   │   │   ├── allocation-policy.test.ts
│   │   │   ├── api-interop.cleanup.test.ts
│   │   │   ├── api-interop.command-dialect.test.ts
│   │   │   ├── api-interop.compatibility.test.ts
│   │   │   ├── api-interop.cwd-resolution.test.ts
│   │   │   ├── api-interop.dispatch.test.ts
│   │   │   ├── audit-log.test.ts
│   │   │   ├── auto-cleanup.test.ts
│   │   │   ├── bridge-entry.guardrails.test.ts
│   │   │   ├── bridge-entry.test.ts
│   │   │   ├── bridge-integration.test.ts
│   │   │   ├── capabilities.test.ts
│   │   │   ├── capture-file-snapshot.test.ts
│   │   │   ├── cli-detection.test.ts
│   │   │   ├── edge-cases.test.ts
│   │   │   ├── events.swallowed-error.test.ts
│   │   │   ├── followup-planner.test.ts
│   │   │   ├── fs-utils.test.ts
│   │   │   ├── git-worktree.test.ts
│   │   │   ├── governance-enforcement.test.ts
│   │   │   ├── governance.test.ts
│   │   │   ├── heartbeat.test.ts
│   │   │   ├── idle-nudge.test.ts
│   │   │   ├── inbox-outbox.test.ts
│   │   │   ├── index.compat-exports.test.ts
│   │   │   ├── leader-nudge-guidance.test.ts
│   │   │   ├── lifecycle-profile.test.ts
│   │   │   ├── mcp-team-bridge.spawn-args.test.ts
│   │   │   ├── mcp-team-bridge.usage.test.ts
│   │   │   ├── merge-coordinator.test.ts
│   │   │   ├── message-router.test.ts
│   │   │   ├── model-contract.test.ts
│   │   │   ├── outbox-reader.test.ts
│   │   │   ├── permissions.test.ts
│   │   │   ├── phase-controller.test.ts
│   │   │   ├── phase1-foundation.test.ts
│   │   │   ├── prompt-sanitization.test.ts
│   │   │   ├── role-router.test.ts
│   │   │   ├── runtime-assign.test.ts
│   │   │   ├── runtime-cli.test.ts
│   │   │   ├── runtime-done-recovery.test.ts
│   │   │   ├── runtime-prompt-mode.test.ts
│   │   │   ├── runtime-v2.dispatch.test.ts
│   │   │   ├── runtime-v2.feature-flag.test.ts
│   │   │   ├── runtime-v2.monitor.test.ts
│   │   │   ├── runtime-v2.shutdown-pane-cleanup.test.ts
│   │   │   ├── runtime-v2.shutdown.test.ts
│   │   │   ├── runtime-watchdog-retry.test.ts
│   │   │   ├── runtime.test.ts
│   │   │   ├── scaling.test.ts
│   │   │   ├── shell-affinity.test.ts
│   │   │   ├── state-paths.test.ts
│   │   │   ├── summary-report.test.ts
│   │   │   ├── task-file-ops.test.ts
│   │   │   ├── task-router.test.ts
│   │   │   ├── team-leader-nudge-hook.logging.test.ts
│   │   │   ├── team-leader-nudge-hook.test.ts
│   │   │   ├── team-name.test.ts
│   │   │   ├── team-registration.test.ts
│   │   │   ├── team-status.test.ts
│   │   │   ├── tmux-comm.test.ts
│   │   │   ├── tmux-session.create-team.test.ts
│   │   │   ├── tmux-session.kill-team-session.test.ts
│   │   │   ├── tmux-session.spawn.test.ts
│   │   │   ├── tmux-session.test.ts
│   │   │   ├── unified-team.test.ts
│   │   │   ├── usage-tracker.test.ts
│   │   │   ├── worker-bootstrap.test.ts
│   │   │   ├── worker-canonicalization.test.ts
│   │   │   ├── worker-health.test.ts
│   │   │   └── worker-restart.test.ts
│   │   ├── activity-log.ts
│   │   ├── allocation-policy.ts
│   │   ├── api-interop.ts
│   │   ├── audit-log.ts
│   │   ├── bridge-entry.ts
│   │   ├── capabilities.ts
│   │   ├── cli-detection.ts
│   │   ├── contracts.ts
│   │   ├── dispatch-queue.ts
│   │   ├── events.ts
│   │   ├── followup-planner.ts
│   │   ├── fs-utils.ts
│   │   ├── git-worktree.ts
│   │   ├── governance.ts
│   │   ├── heartbeat.ts
│   │   ├── idle-nudge.ts
│   │   ├── inbox-outbox.ts
│   │   ├── index.ts
│   │   ├── layout-stabilizer.ts
│   │   ├── leader-nudge-guidance.ts
│   │   ├── mcp-comm.ts
│   │   ├── mcp-team-bridge.ts
│   │   ├── merge-coordinator.ts
│   │   ├── message-router.ts
│   │   ├── model-contract.ts
│   │   ├── monitor.ts
│   │   ├── outbox-reader.ts
│   │   ├── permissions.ts
│   │   ├── phase-controller.ts
│   │   ├── role-router.ts
│   │   ├── runtime-cli.ts
│   │   ├── runtime-v2.ts
│   │   ├── runtime.ts
│   │   ├── scaling.ts
│   │   ├── sentinel-gate.ts
│   │   ├── state/
│   │   │   └── tasks.ts
│   │   ├── state-paths.ts
│   │   ├── summary-report.ts
│   │   ├── task-file-ops.ts
│   │   ├── task-router.ts
│   │   ├── team-name.ts
│   │   ├── team-ops.ts
│   │   ├── team-registration.ts
│   │   ├── team-status.ts
│   │   ├── tmux-comm.ts
│   │   ├── tmux-session.ts
│   │   ├── types.ts
│   │   ├── unified-team.ts
│   │   ├── usage-tracker.ts
│   │   ├── worker-bootstrap.ts
│   │   ├── worker-canonicalization.ts
│   │   ├── worker-health.ts
│   │   └── worker-restart.ts
│   ├── tools/
│   │   ├── AGENTS.md
│   │   ├── __tests__/
│   │   │   ├── cancel-integration.test.ts
│   │   │   ├── deepinit-manifest.test.ts
│   │   │   ├── memory-tools.test.ts
│   │   │   ├── schema-conversion.test.ts
│   │   │   └── state-tools.test.ts
│   │   ├── ast-tools.ts
│   │   ├── deepinit-manifest.ts
│   │   ├── diagnostics/
│   │   │   ├── AGENTS.md
│   │   │   ├── index.ts
│   │   │   ├── lsp-aggregator.ts
│   │   │   └── tsc-runner.ts
│   │   ├── index.ts
│   │   ├── lsp/
│   │   │   ├── AGENTS.md
│   │   │   ├── __tests__/
│   │   │   │   ├── client-devcontainer.test.ts
│   │   │   │   ├── client-eviction.test.ts
│   │   │   │   ├── client-handle-data.test.ts
│   │   │   │   ├── client-singleton.test.ts
│   │   │   │   ├── client-timeout-env.test.ts
│   │   │   │   ├── client-win32-spawn.test.ts
│   │   │   │   └── devcontainer.test.ts
│   │   │   ├── client.ts
│   │   │   ├── devcontainer.ts
│   │   │   ├── index.ts
│   │   │   ├── servers.ts
│   │   │   └── utils.ts
│   │   ├── lsp-tools.ts
│   │   ├── memory-tools.ts
│   │   ├── notepad-tools.ts
│   │   ├── python-repl/
│   │   │   ├── __tests__/
│   │   │   │   ├── bridge-manager-cleanup.test.ts
│   │   │   │   └── tcp-fallback.test.ts
│   │   │   ├── bridge-manager.ts
│   │   │   ├── index.ts
│   │   │   ├── paths.ts
│   │   │   ├── session-lock.ts
│   │   │   ├── socket-client.ts
│   │   │   ├── tool.ts
│   │   │   └── types.ts
│   │   ├── resume-session.ts
│   │   ├── session-history-tools.ts
│   │   ├── shared-memory-tools.ts
│   │   ├── skills-tools.ts
│   │   ├── state-tools.ts
│   │   ├── trace-tools.ts
│   │   └── types.ts
│   ├── types/
│   │   └── safe-regex.d.ts
│   ├── utils/
│   │   ├── __tests__/
│   │   │   ├── frontmatter.test.ts
│   │   │   ├── paths.test.ts
│   │   │   └── string-width.test.ts
│   │   ├── config-dir.ts
│   │   ├── daemon-module-path.ts
│   │   ├── frontmatter.ts
│   │   ├── jsonc.ts
│   │   ├── omc-cli-rendering.ts
│   │   ├── paths.ts
│   │   ├── resolve-node.ts
│   │   ├── skill-pipeline.ts
│   │   ├── skill-resources.ts
│   │   ├── ssrf-guard.ts
│   │   └── string-width.ts
│   └── verification/
│       ├── tier-selector.test.ts
│       └── tier-selector.ts
├── templates/
│   ├── deliverables.json
│   ├── hooks/
│   │   ├── code-simplifier.mjs
│   │   ├── keyword-detector.mjs
│   │   ├── lib/
│   │   │   ├── atomic-write.mjs
│   │   │   └── stdin.mjs
│   │   ├── persistent-mode.mjs
│   │   ├── post-tool-use-failure.mjs
│   │   ├── post-tool-use.mjs
│   │   ├── pre-tool-use.mjs
│   │   ├── session-start.mjs
│   │   └── stop-continuation.mjs
│   └── rules/
│       ├── README.md
│       ├── coding-style.md
│       ├── git-workflow.md
│       ├── karpathy-guidelines.md
│       ├── performance.md
│       ├── security.md
│       └── testing.md
├── tests/
│   └── fixtures/
│       └── typescript-pnpm/
│           ├── package.json
│           └── tsconfig.json
├── tsconfig.json
├── typos.toml
└── vitest.config.ts

================================================
FILE CONTENTS
================================================

================================================
FILE: .claude-plugin/marketplace.json
================================================
{
  "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
  "name": "omc",
  "description": "Claude Code native multi-agent orchestration - intelligent model routing, 28 agents, 32 skills",
  "owner": {
    "name": "Yeachan Heo",
    "email": "hurrc04@gmail.com"
  },
  "plugins": [
    {
      "name": "oh-my-claudecode",
      "description": "Claude Code native multi-agent orchestration with intelligent model routing, 28 agent variants, and 32 powerful skills. Zero learning curve. Maximum power.",
      "version": "4.9.3",
      "author": {
        "name": "Yeachan Heo",
        "email": "hurrc04@gmail.com"
      },
      "source": "./",
      "category": "productivity",
      "homepage": "https://github.com/Yeachan-Heo/oh-my-claudecode",
      "tags": [
        "multi-agent",
        "orchestration",
        "delegation",
        "todo-management",
        "ultrawork"
      ]
    }
  ],
  "version": "4.9.3"
}


================================================
FILE: .claude-plugin/plugin.json
================================================
{
  "name": "oh-my-claudecode",
  "version": "4.9.3",
  "description": "Multi-agent orchestration system for Claude Code",
  "author": {
    "name": "oh-my-claudecode contributors"
  },
  "repository": "https://github.com/Yeachan-Heo/oh-my-claudecode",
  "homepage": "https://github.com/Yeachan-Heo/oh-my-claudecode",
  "license": "MIT",
  "keywords": [
    "claude-code",
    "plugin",
    "multi-agent",
    "orchestration",
    "automation"
  ],
  "skills": "./skills/",
  "mcpServers": "./.mcp.json"
}


================================================
FILE: .eslintignore
================================================
src/__tests__/benchmark-scoring.test.ts


================================================
FILE: .gitattributes
================================================
# Default to auto (Git decides based on content)
* text=auto eol=lf

# Force LF for scripts and source files
*.sh text eol=lf
*.bash text eol=lf
*.mjs text eol=lf
*.js text eol=lf
*.ts text eol=lf
*.json text eol=lf
*.md text eol=lf
*.yml text eol=lf
*.yaml text eol=lf

# Force CRLF for Windows-specific files (if any exist)
*.bat text eol=crlf
*.cmd text eol=crlf
*.ps1 text eol=crlf

# Build output (hide from diffs, treat as generated)
dist/** linguist-generated=true
dist/**/*.js linguist-generated=true
dist/**/*.cjs linguist-generated=true
dist/**/*.d.ts linguist-generated=true

# Binary files (no conversion)
*.png binary
*.jpg binary
*.gif binary
*.ico binary


================================================
FILE: .github/CLAUDE.md
================================================
<!-- OMC:START -->
<!-- OMC:VERSION:4.8.2 -->

# oh-my-claudecode - Intelligent Multi-Agent Orchestration

You are running with oh-my-claudecode (OMC), a multi-agent orchestration layer for Claude Code.
Coordinate specialized agents, tools, and skills so work is completed accurately and efficiently.

<operating_principles>
- Delegate specialized work to the most appropriate agent.
- Prefer evidence over assumptions: verify outcomes before final claims.
- Choose the lightest-weight path that preserves quality.
- Consult official docs before implementing with SDKs/frameworks/APIs.
</operating_principles>

<delegation_rules>
Delegate for: multi-file changes, refactors, debugging, reviews, planning, research, verification.
Work directly for: trivial ops, small clarifications, single commands.
Route code to `executor` (use `model=opus` for complex work). Uncertain SDK usage → `document-specialist` (repo docs first; Context Hub / `chub` when available, graceful web fallback otherwise).
</delegation_rules>

<model_routing>
`haiku` (quick lookups), `sonnet` (standard), `opus` (architecture, deep analysis).
Direct writes OK for: `~/.claude/**`, `.omc/**`, `.claude/**`, `CLAUDE.md`, `AGENTS.md`.
</model_routing>

<agent_catalog>
Prefix: `oh-my-claudecode:`. See `agents/*.md` for full prompts.

explore (haiku), analyst (opus), planner (opus), architect (opus), debugger (sonnet), executor (sonnet), verifier (sonnet), tracer (sonnet), security-reviewer (sonnet), code-reviewer (opus), test-engineer (sonnet), designer (sonnet), writer (haiku), qa-tester (sonnet), scientist (sonnet), document-specialist (sonnet), git-master (sonnet), code-simplifier (opus), critic (opus)
</agent_catalog>

<tools>
External AI: `/team N:executor "task"`, `omc team N:codex|gemini "..."`, `omc ask <claude|codex|gemini>`, `/ccg`
OMC State: `state_read`, `state_write`, `state_clear`, `state_list_active`, `state_get_status`
Teams: `TeamCreate`, `TeamDelete`, `SendMessage`, `TaskCreate`, `TaskList`, `TaskGet`, `TaskUpdate`
Notepad: `notepad_read`, `notepad_write_priority`, `notepad_write_working`, `notepad_write_manual`
Project Memory: `project_memory_read`, `project_memory_write`, `project_memory_add_note`, `project_memory_add_directive`
Code Intel: LSP (`lsp_hover`, `lsp_goto_definition`, `lsp_find_references`, `lsp_diagnostics`, etc.), AST (`ast_grep_search`, `ast_grep_replace`), `python_repl`
</tools>

<skills>
Invoke via `/oh-my-claudecode:<name>`. Trigger patterns auto-detect keywords.

Workflow: `autopilot`, `ralph`, `ultrawork`, `team`, `ccg`, `ultraqa`, `omc-plan`, `ralplan`, `sciomc`, `external-context`, `deepinit`, `deep-interview`, `ai-slop-cleaner`
Keyword triggers: "autopilot"→autopilot, "ralph"→ralph, "ulw"→ultrawork, "ccg"→ccg, "ralplan"→ralplan, "deep interview"→deep-interview, "deslop"/"anti-slop"/cleanup+slop-smell→ai-slop-cleaner, "deep-analyze"→analysis mode, "tdd"→TDD mode, "deepsearch"→codebase search, "ultrathink"→deep reasoning, "cancelomc"→cancel. Team orchestration is explicit via `/team`.
Utilities: `ask-codex`, `ask-gemini`, `cancel`, `note`, `learner`, `omc-setup`, `mcp-setup`, `hud`, `omc-doctor`, `omc-help`, `trace`, `release`, `project-session-manager`, `skill`, `writer-memory`, `ralph-init`, `configure-notifications`, `learn-about-omc` (`trace` is the evidence-driven tracing lane)
</skills>

<team_pipeline>
Stages: `team-plan` → `team-prd` → `team-exec` → `team-verify` → `team-fix` (loop).
Fix loop bounded by max attempts. `team ralph` links both modes.
</team_pipeline>

<verification>
Verify before claiming completion. Size appropriately: small→haiku, standard→sonnet, large/security→opus.
If verification fails, keep iterating.
</verification>

<execution_protocols>
Broad requests: explore first, then plan. 2+ independent tasks in parallel. `run_in_background` for builds/tests.
Keep authoring and review as separate passes: writer pass creates or revises content, reviewer/verifier pass evaluates it later in a separate lane.
Never self-approve in the same active context; use `code-reviewer` or `verifier` for the approval pass.
Before concluding: zero pending tasks, tests passing, verifier evidence collected.
</execution_protocols>

<commit_protocol>
Use git trailers to preserve decision context in every commit message.
Format: conventional commit subject line, optional body, then structured trailers.

Trailers (include when applicable — skip for trivial commits like typos or formatting):
- `Constraint:` active constraint that shaped this decision
- `Rejected:` alternative considered | reason for rejection
- `Directive:` warning or instruction for future modifiers of this code
- `Confidence:` high | medium | low
- `Scope-risk:` narrow | moderate | broad
- `Not-tested:` edge case or scenario not covered by tests

Example:
```
fix(auth): prevent silent session drops during long-running ops

Auth service returns inconsistent status codes on token expiry,
so the interceptor catches all 4xx and triggers inline refresh.

Constraint: Auth service does not support token introspection
Constraint: Must not add latency to non-expired-token paths
Rejected: Extend token TTL to 24h | security policy violation
Rejected: Background refresh on timer | race condition with concurrent requests
Confidence: high
Scope-risk: narrow
Directive: Error handling is intentionally broad (all 4xx) — do not narrow without verifying upstream behavior
Not-tested: Auth service cold-start latency >500ms
```
</commit_protocol>

<hooks_and_context>
Hooks inject `<system-reminder>` tags. Key patterns: `hook success: Success` (proceed), `[MAGIC KEYWORD: ...]` (invoke skill), `The boulder never stops` (ralph/ultrawork active).
Persistence: `<remember>` (7 days), `<remember priority>` (permanent).
Kill switches: `DISABLE_OMC`, `OMC_SKIP_HOOKS` (comma-separated).
</hooks_and_context>

<cancellation>
`/oh-my-claudecode:cancel` ends execution modes. Cancel when done+verified or blocked. Don't cancel if work incomplete.
</cancellation>

<worktree_paths>
State: `.omc/state/`, `.omc/state/sessions/{sessionId}/`, `.omc/notepad.md`, `.omc/project-memory.json`, `.omc/plans/`, `.omc/research/`, `.omc/logs/`
</worktree_paths>

## Setup

Say "setup omc" or run `/oh-my-claudecode:omc-setup`.

<!-- OMC:END -->


================================================
FILE: .github/FUNDING.yml
================================================
# GitHub Sponsors configuration
github: [Yeachan-Heo]

# Other platforms (uncomment when ready)
# ko_fi: your_username
# buy_me_a_coffee: your_username
# open_collective: oh-my-claudecode


================================================
FILE: .github/SPONSOR_TIERS.md
================================================
# Sponsor Tiers

## 🌟 Individual Supporter - $5/month
**Help keep OMC free and open source**

- 💖 Sponsor badge on your profile
- 🙏 Name in SPONSORS.md
- ✨ My eternal gratitude

## 🚀 Power User - $20/month
**For professionals who rely on OMC daily**

Everything in Individual, plus:
- 🎯 Priority issue triage
- 💬 Direct Discord/Telegram access
- 🗳️ Vote on feature priorities

## 🏢 Team - $100/month
**For companies using OMC in production**

Everything in Power User, plus:
- 📋 Influence roadmap
- 🛠️ Early access to features
- 🏷️ Company logo in README
- 💼 Priority support (24h response)

## 🌈 Enterprise - $500/month
**Dedicated support for mission-critical workflows**

Everything in Team, plus:
- 👨‍💻 1:1 consulting sessions (2h/month)
- 🔧 Custom integration help
- 📊 Usage analytics & optimization
- 🚨 Direct line for emergencies

---

**Not ready to sponsor yet?**
- ⭐ Star the repo
- 🐛 Report bugs
- 💡 Request features
- 📝 Contribute code

Every contribution matters! 🦞


================================================
FILE: .github/release-notes.md
================================================
## Install / Upgrade

```bash
npm i -g oh-my-claude-sisyphus@{{VERSION}}
```

> **Package naming note:** the repo, plugin, and commands are branded **oh-my-claudecode**, but the published npm package name remains [`oh-my-claude-sisyphus`](https://www.npmjs.com/package/oh-my-claude-sisyphus).


================================================
FILE: .github/workflows/auto-label.yml
================================================
name: Auto Label Issues

on:
  issues:
    types: [opened]

permissions:
  issues: write

jobs:
  label:
    runs-on: ubuntu-latest
    steps:
      - name: Auto-label based on title/body
        uses: actions/github-script@v7
        with:
          script: |
            const issue = context.payload.issue;
            const title = issue.title.toLowerCase();
            const body = (issue.body || '').toLowerCase();
            const labels = [];

            // Bug detection
            if (title.includes('bug') || title.includes('error') || title.includes('crash') ||
                title.includes('broken') || title.includes('fail') || title.includes('not working')) {
              labels.push('bug');
            }

            // Feature request detection
            if (title.includes('feature') || title.includes('request') || title.includes('add') ||
                title.includes('enhancement') || title.includes('suggestion') || title.includes('would be nice')) {
              labels.push('enhancement');
            }

            // Question detection
            if (title.includes('how') || title.includes('?') || title.includes('question') ||
                title.includes('help') || title.includes('confused')) {
              labels.push('question');
            }

            // Documentation issues
            if (title.includes('doc') || title.includes('readme') || title.includes('typo')) {
              labels.push('documentation');
            }

            // Installation issues
            if (title.includes('install') || title.includes('setup') || title.includes('plugin')) {
              labels.push('installation');
            }

            // Agent-related
            if (body.includes('agent') || body.includes('architect') || body.includes('omc') ||
                body.includes('planner') || body.includes('ultrawork') || body.includes('chillwork')) {
              labels.push('agents');
            }

            // Apply labels if any matched
            if (labels.length > 0) {
              await github.rest.issues.addLabels({
                owner: context.repo.owner,
                repo: context.repo.repo,
                issue_number: issue.number,
                labels: labels
              });
              console.log(`Added labels: ${labels.join(', ')}`);
            }


================================================
FILE: .github/workflows/ci.yml
================================================
name: CI

on:
  push:
    branches: [main, dev]
  pull_request:
    branches: [main, dev]
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  lint-and-typecheck:
    name: Lint & Type Check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Type check
        run: npx tsc --noEmit

      - name: Lint
        run: npm run lint --if-present

  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Run tests
        run: npm test -- --run

  build:
    name: Build
    runs-on: ubuntu-latest
    needs: [lint-and-typecheck, test]
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Build
        run: npm run build

      - name: Check dist size
        run: |
          DIST_SIZE=$(du -sm dist | cut -f1)
          echo "📦 Dist size: ${DIST_SIZE}MB"
          if [ "$DIST_SIZE" -gt 50 ]; then
            echo "⚠️ Warning: dist folder is larger than 50MB!"
          fi

      - name: Upload build artifacts
        uses: actions/upload-artifact@v4
        with:
          name: dist
          path: dist/
          retention-days: 7

  version-check:
    name: Version Consistency Check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Check version consistency
        run: |
          PKG_VERSION=$(node -p "require('./package.json').version")
          PLUGIN_VERSION=$(node -p "require('./.claude-plugin/plugin.json').version")
          MARKET_VERSION=$(node -p "require('./.claude-plugin/marketplace.json').version")
          
          echo "package.json:              $PKG_VERSION"
          echo ".claude-plugin/plugin.json: $PLUGIN_VERSION"
          echo ".claude-plugin/marketplace.json: $MARKET_VERSION"
          
          if [ "$PKG_VERSION" != "$PLUGIN_VERSION" ] || [ "$PKG_VERSION" != "$MARKET_VERSION" ]; then
            echo ""
            echo "❌ Version mismatch!"
            echo "  package.json: $PKG_VERSION"
            echo "  plugin.json:  $PLUGIN_VERSION"
            echo "  marketplace.json: $MARKET_VERSION"
            echo ""
            echo "All three files must have the same version."
            exit 1
          fi
          
          echo "✅ All versions match: $PKG_VERSION"

  npm-pack-test:
    name: npm pack + install test
    runs-on: ubuntu-latest
    needs: build
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'

      - name: Install dependencies
        run: npm ci

      - name: Build
        run: npm run build

      - name: npm pack test
        run: |
          echo "📦 Creating tarball..."
          npm pack
          
          TARBALL=$(ls -t oh-my-claude-sisyphus-*.tgz | head -1)
          echo "📦 Tarball: $TARBALL"
          
          echo "📦 Testing global install from tarball..."
          npm install -g ./$TARBALL
          
          echo "🔍 Checking omc command..."
          which omc
          
          echo "🔍 Testing omc --version..."
          omc --version
          
          VERSION_OUTPUT=$(omc --version 2>&1)
          if [ $? -ne 0 ]; then
            echo "❌ omc --version failed!"
            echo "$VERSION_OUTPUT"
            exit 1
          fi
          
          echo "✅ omc --version: $VERSION_OUTPUT"
          
          echo "🔍 Testing omc --help..."
          omc --help
          
          HELP_OUTPUT=$(omc --help 2>&1)
          if [ $? -ne 0 ]; then
            echo "❌ omc --help failed!"
            echo "$HELP_OUTPUT"
            exit 1
          fi
          
          echo "✅ npm pack + install test passed!"


================================================
FILE: .github/workflows/cleanup.yml
================================================
name: Cleanup

on:
  schedule:
    # Run weekly on Sunday at 00:00 UTC
    - cron: '0 0 * * 0'
  workflow_dispatch:

permissions:
  actions: write
  contents: read

jobs:
  cleanup-artifacts:
    name: Cleanup Old Artifacts
    runs-on: ubuntu-latest
    steps:
      - name: Delete old artifacts
        uses: actions/github-script@v7
        with:
          script: |
            const { data: artifacts } = await github.rest.actions.listArtifactsForRepo({
              owner: context.repo.owner,
              repo: context.repo.repo,
              per_page: 100
            });

            const cutoffDate = new Date();
            cutoffDate.setDate(cutoffDate.getDate() - 30);

            let deleted = 0;
            for (const artifact of artifacts.artifacts) {
              const createdAt = new Date(artifact.created_at);
              if (createdAt < cutoffDate) {
                await github.rest.actions.deleteArtifact({
                  owner: context.repo.owner,
                  repo: context.repo.repo,
                  artifact_id: artifact.id
                });
                deleted++;
                console.log(`Deleted: ${artifact.name} (${artifact.created_at})`);
              }
            }

            console.log(`Cleaned up ${deleted} old artifacts`);

  cleanup-caches:
    name: Cleanup Old Caches
    runs-on: ubuntu-latest
    steps:
      - name: Cleanup caches
        uses: actions/github-script@v7
        with:
          script: |
            const { data: caches } = await github.rest.actions.getActionsCacheList({
              owner: context.repo.owner,
              repo: context.repo.repo,
              per_page: 100
            });

            const cutoffDate = new Date();
            cutoffDate.setDate(cutoffDate.getDate() - 14);

            let deleted = 0;
            for (const cache of caches.actions_caches || []) {
              const lastUsed = new Date(cache.last_accessed_at);
              if (lastUsed < cutoffDate) {
                await github.rest.actions.deleteActionsCacheById({
                  owner: context.repo.owner,
                  repo: context.repo.repo,
                  cache_id: cache.id
                });
                deleted++;
                console.log(`Deleted cache: ${cache.key}`);
              }
            }

            console.log(`Cleaned up ${deleted} old caches`);


================================================
FILE: .github/workflows/pr-check.yml
================================================
name: PR Check

on:
  pull_request:
    types: [opened, synchronize, reopened]
  workflow_dispatch:

permissions:
  contents: read
  pull-requests: write

jobs:
  size-check:
    name: Size Check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Check PR size
        uses: actions/github-script@v7
        with:
          script: |
            const { data: files } = await github.rest.pulls.listFiles({
              owner: context.repo.owner,
              repo: context.repo.repo,
              pull_number: context.issue.number
            });

            const additions = files.reduce((acc, f) => acc + f.additions, 0);
            const deletions = files.reduce((acc, f) => acc + f.deletions, 0);
            const changedFiles = files.length;

            let sizeLabel = 'size/S';
            if (additions + deletions > 1000) sizeLabel = 'size/XL';
            else if (additions + deletions > 500) sizeLabel = 'size/L';
            else if (additions + deletions > 100) sizeLabel = 'size/M';

            const isFork = context.payload.pull_request.head.repo.full_name !== context.payload.repository.full_name;

            if (!isFork) {
              // Add size label
              await github.rest.issues.addLabels({
                owner: context.repo.owner,
                repo: context.repo.repo,
                issue_number: context.issue.number,
                labels: [sizeLabel]
              });

              // Comment if PR is too large
              if (additions + deletions > 1000) {
                await github.rest.issues.createComment({
                  owner: context.repo.owner,
                  repo: context.repo.repo,
                  issue_number: context.issue.number,
                  body: `⚠️ **Large PR Alert**\n\nThis PR has ${additions} additions and ${deletions} deletions across ${changedFiles} files.\n\nConsider breaking it into smaller PRs for easier review.`
                });
              }
            } else {
              core.notice(`Fork PR - skipping label/comment (no write permission). Size: ${sizeLabel}`);
            }

            console.log(`PR Stats: +${additions} -${deletions} (${changedFiles} files) → ${sizeLabel}`);

  draft-check:
    name: Draft PR Check
    runs-on: ubuntu-latest
    steps:
      - name: Check if PR is draft
        uses: actions/github-script@v7
        with:
          script: |
            const pr = context.payload.pull_request;
            if (pr.draft) {
              core.notice('This is a draft PR - CI will run but merge is blocked');
            }


================================================
FILE: .github/workflows/release.yml
================================================
name: Release

on:
  push:
    tags:
      - 'v*'

permissions:
  contents: write

jobs:
  release:
    name: Create GitHub Release
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'
          registry-url: 'https://registry.npmjs.org'

      - name: Install dependencies
        run: npm ci

      - name: Build
        run: npm run build

      - name: Run tests
        run: npm test -- --run

      - name: Publish to npm
        run: |
          VERSION=$(node -p "require('./package.json').version")
          if npm view oh-my-claude-sisyphus@$VERSION version 2>/dev/null; then
            echo "::warning::Version $VERSION already published to npm, skipping publish"
          else
            npm publish --access public
          fi
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

      - name: Generate release notes
        run: |
          VERSION="${GITHUB_REF_NAME#v}"
          # Run release.ts in dry-run to generate fresh release-body.md
          # without modifying any files (version already bumped)
          npx tsx scripts/release.ts "$VERSION" --dry-run 2>/dev/null || true
          if [ -f .github/release-body.md ]; then
            echo "Using freshly generated release-body.md"
            cp .github/release-body.md release-notes.md
          else
            echo "Falling back to GitHub auto-generated notes"
            echo "## oh-my-claudecode v${VERSION}" > release-notes.md
            echo "" >> release-notes.md
            echo "### Install / Update" >> release-notes.md
            echo '```bash' >> release-notes.md
            echo "npm install -g oh-my-claude-sisyphus@${VERSION}" >> release-notes.md
            echo '```' >> release-notes.md
          fi

      - name: Create GitHub Release
        uses: softprops/action-gh-release@v1
        with:
          body_path: release-notes.md
          generate_release_notes: true
          draft: false
          prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') || contains(github.ref, 'rc') }}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/stale.yml
================================================
name: Manage Stale Issues

on:
  schedule:
    # Run daily at midnight UTC
    - cron: '0 0 * * *'
  workflow_dispatch:

permissions:
  issues: write
  pull-requests: write

jobs:
  stale:
    runs-on: ubuntu-latest
    steps:
      - name: Mark and close stale issues
        uses: actions/stale@v9
        with:
          # Issue configuration
          stale-issue-message: |
            This issue has been automatically marked as stale because it has not had recent activity.

            It will be closed in 14 days if no further activity occurs.

            If this is still relevant:
            - Comment to keep it open
            - Add the `pinned` label to prevent auto-closing

            Thank you for contributing to oh-my-claudecode!

          close-issue-message: |
            This issue has been automatically closed due to inactivity.

            Feel free to reopen if the issue persists. For installation help, try running `/doctor` after installing.

          # PR configuration
          stale-pr-message: |
            This PR has been automatically marked as stale because it has not had recent activity.

            It will be closed in 14 days if no further activity occurs.

          close-pr-message: |
            This PR has been automatically closed due to inactivity.

            Feel free to reopen when ready to continue.

          # Timing
          days-before-stale: 30
          days-before-close: 14

          # Labels
          stale-issue-label: stale
          stale-pr-label: stale

          # Exempt labels - issues/PRs with these labels won't be marked stale
          exempt-issue-labels: 'pinned,security,bug,enhancement'
          exempt-pr-labels: 'pinned,work-in-progress'

          # Only process issues, not PRs by default (PRs need more careful handling)
          only-labels: ''

          # Limit operations per run
          operations-per-run: 30


================================================
FILE: .gitignore
================================================
node_modules/
*.log
.DS_Store
.omc/
.omc/
.idea/
.claude/

# Windows reserved names (prevent accidental creation)
nul
NUL
.omx/
.env

# Local root-level script output
/done.json
/farewell.txt
benchmarks/harsh-critic/results/
benchmarks/harsh-critic/scoring/*.js
benchmarks/harsh-critic/scoring/*.d.ts
benchmarks/harsh-critic/scoring/*.js.map
benchmarks/harsh-critic/scoring/*.d.ts.map
.tmp/

# Release body is generated dynamically — never commit stale copies
.github/release-body.md


================================================
FILE: .mcp.json
================================================
{
  "mcpServers": {
    "t": {
      "command": "node",
      "args": ["${CLAUDE_PLUGIN_ROOT}/bridge/mcp-server.cjs"]
    }
  }
}


================================================
FILE: .npmignore
================================================
# Source files (compiled to dist/)
src/

# Examples
examples/

# Config files
tsconfig.json
.eslintrc*
.prettierrc*

# Git
.git/
.gitignore

# Development
node_modules/
*.log
.env*

# TypeScript source (keep .d.ts)
*.ts
!*.d.ts

# Plans and notes
.claude/


================================================
FILE: AGENTS.md
================================================
# oh-my-claudecode - Intelligent Multi-Agent Orchestration

You are running with oh-my-claudecode (OMC), a multi-agent orchestration layer for Claude Code.
Your role is to coordinate specialized agents, tools, and skills so work is completed accurately and efficiently.

<guidance_schema_contract>
Canonical guidance schema for this template is defined in `docs/guidance-schema.md`.

Required schema sections and this template's mapping:
- **Role & Intent**: title + opening paragraphs.
- **Operating Principles**: `<operating_principles>`.
- **Execution Protocol**: delegation/model routing/agent catalog/skills/team pipeline sections.
- **Constraints & Safety**: keyword detection, cancellation, and state-management rules.
- **Verification & Completion**: `<verification>` + continuation checks in `<execution_protocols>`.
- **Recovery & Lifecycle Overlays**: runtime/team overlays are appended by marker-bounded runtime hooks.

Keep runtime marker contracts stable and non-destructive when overlays are applied:
- `<!-- OMX:RUNTIME:START --> ... <!-- OMX:RUNTIME:END -->`
- `<!-- OMX:TEAM:WORKER:START --> ... <!-- OMX:TEAM:WORKER:END -->`
</guidance_schema_contract>

<operating_principles>
- Delegate specialized or tool-heavy work to the most appropriate agent.
- Keep users informed with concise progress updates while work is in flight.
- Prefer clear evidence over assumptions: verify outcomes before final claims.
- Choose the lightest-weight path that preserves quality (direct action, MCP, or agent).
- Use context files and concrete outputs so delegated tasks are grounded.
- Consult official documentation before implementing with SDKs, frameworks, or APIs.
- For cleanup or refactor work, write a cleanup plan before modifying code.
- Prefer deletion over addition when the same behavior can be preserved.
- Reuse existing utilities and patterns before introducing new ones.
- Do not add new dependencies unless the user explicitly requests or approves them.
- Keep diffs small, reversible, and easy to review.
</operating_principles>

<working_agreements>
## Working agreements
- Write a cleanup plan before modifying code.
- Prefer deletion over addition.
- Reuse existing utilities and patterns first.
- No new dependencies without an explicit request.
- Keep diffs small and reversible.
- Run lint, typecheck, tests, and static analysis after changes.
- Final reports must include changed files, simplifications made, and remaining risks.
</working_agreements>

---

<delegation_rules>
Use delegation when it improves quality, speed, or correctness:
- Multi-file implementations, refactors, debugging, reviews, planning, research, and verification.
- Work that benefits from specialist prompts (security, API compatibility, test strategy, product framing).
- Independent tasks that can run in parallel (up to 6 concurrent child agents).

Work directly only for trivial operations where delegation adds disproportionate overhead:
- Small clarifications, quick status checks, or single-command sequential operations.

For substantive code changes, delegate to `executor` (default for both standard and complex implementation work).
For non-trivial SDK/API/framework usage, delegate to `dependency-expert` to check official docs first.
</delegation_rules>

<child_agent_protocol>
Claude Code spawns child agents via the `spawn_agent` tool (requires `multi_agent = true`).
To inject role-specific behavior, the parent MUST read the role prompt and pass it in the spawned agent message.

Delegation steps:
1. Decide which agent role to delegate to (e.g., `architect`, `executor`, `debugger`)
2. Read the role prompt: `~/.codex/prompts/{role}.md`
3. Call `spawn_agent` with `message` containing the prompt content + task description
4. The child agent receives full role context and executes the task independently

Parallel delegation (up to 6 concurrent):
```
spawn_agent(message: "<architect prompt>\n\nTask: Review the auth module")
spawn_agent(message: "<executor prompt>\n\nTask: Add input validation to login")
spawn_agent(message: "<test-engineer prompt>\n\nTask: Write tests for the auth changes")
```

Each child agent:
- Receives its role-specific prompt (from ~/.codex/prompts/)
- Inherits AGENTS.md context (via child_agents_md feature flag)
- Runs in an isolated context with its own tool access
- Returns results to the parent when complete

Key constraints:
- Max 6 concurrent child agents
- Each child has its own context window (not shared with parent)
- Parent must read prompt file BEFORE calling spawn_agent
- Child agents can access skills ($name) but should focus on their assigned role
</child_agent_protocol>

<invocation_conventions>
Claude Code uses these prefixes for custom commands:
- `/prompts:name` — invoke a custom prompt (e.g., `/prompts:architect "review auth module"`)
- `$name` — invoke a skill (e.g., `$ralph "fix all tests"`, `$autopilot "build REST API"`)
- `/skills` — browse available skills interactively

Agent prompts (in `~/.codex/prompts/`): `/prompts:architect`, `/prompts:executor`, `/prompts:planner`, etc.
Workflow skills (in `~/.agents/skills/`): `$ralph`, `$autopilot`, `$plan`, `$ralplan`, `$team`, etc.
</invocation_conventions>

<model_routing>
Match agent role to task complexity:
- **Low complexity** (quick lookups, narrow checks): `explore`, `style-reviewer`, `writer`
- **Standard** (implementation, debugging, reviews): `executor`, `debugger`, `test-engineer`
- **High complexity** (architecture, deep analysis, complex refactors): `architect`, `executor`, `critic`

For interactive use: `/prompts:name` (e.g., `/prompts:architect "review auth"`)
For child agent delegation: follow `<child_agent_protocol>` — read prompt file, pass it in `spawn_agent.message`
For workflow skills: `$name` (e.g., `$ralph "fix all tests"`)
</model_routing>

---

<agent_catalog>
Use `/prompts:name` to invoke specialized agents (Claude Code custom prompt syntax).

Build/Analysis Lane:
- `/prompts:explore`: Fast codebase search, file/symbol mapping
- `/prompts:analyst`: Requirements clarity, acceptance criteria, hidden constraints
- `/prompts:planner`: Task sequencing, execution plans, risk flags
- `/prompts:architect`: System design, boundaries, interfaces, long-horizon tradeoffs
- `/prompts:debugger`: Root-cause analysis, regression isolation, failure diagnosis
- `/prompts:executor`: Code implementation, refactoring, feature work
- `/prompts:verifier`: Completion evidence, claim validation, test adequacy

Review Lane:
- `/prompts:style-reviewer`: Formatting, naming, idioms, lint conventions
- `/prompts:code-reviewer`: Comprehensive review — logic defects, maintainability, anti-patterns, style, performance
- `/prompts:api-reviewer`: API contracts, versioning, backward compatibility
- `/prompts:security-reviewer`: Vulnerabilities, trust boundaries, authn/authz
- `/prompts:performance-reviewer`: Hotspots, complexity, memory/latency optimization

Domain Specialists:
- `/prompts:dependency-expert`: External SDK/API/package evaluation
- `/prompts:test-engineer`: Test strategy, coverage, flaky-test hardening
- `/prompts:quality-strategist`: Quality strategy, release readiness, risk assessment
- `/prompts:debugger`: Build/toolchain/type failures, root-cause analysis
- `/prompts:designer`: UX/UI architecture, interaction design
- `/prompts:writer`: Docs, migration notes, user guidance
- `/prompts:qa-tester`: Interactive CLI/service runtime validation
- `/prompts:git-master`: Commit strategy, history hygiene
- `/prompts:researcher`: External documentation and reference research

Product Lane:
- `/prompts:product-manager`: Problem framing, personas/JTBD, PRDs
- `/prompts:ux-researcher`: Heuristic audits, usability, accessibility
- `/prompts:information-architect`: Taxonomy, navigation, findability
- `/prompts:product-analyst`: Product metrics, funnel analysis, experiments

Coordination:
- `/prompts:critic`: Plan/design critical challenge
- `/prompts:vision`: Image/screenshot/diagram analysis
</agent_catalog>

---

<keyword_detection>
When the user's message contains a magic keyword, activate the corresponding skill IMMEDIATELY.
Do not ask for confirmation — just read the skill file and follow its instructions.

| Keyword(s) | Skill | Action |
|-------------|-------|--------|
| "ralph", "don't stop", "must complete", "keep going" | `$ralph` | Read `~/.agents/skills/ralph/SKILL.md`, execute persistence loop |
| "autopilot", "build me", "I want a" | `$autopilot` | Read `~/.agents/skills/autopilot/SKILL.md`, execute autonomous pipeline |
| "ultrawork", "ulw", "parallel" | `$ultrawork` | Read `~/.agents/skills/ultrawork/SKILL.md`, execute parallel agents |
| "plan this", "plan the", "let's plan" | `$plan` | Read `~/.agents/skills/plan/SKILL.md`, start planning workflow |
| "interview", "deep interview", "gather requirements", "interview me", "don't assume", "ouroboros" | `$deep-interview` | Read `~/.agents/skills/deep-interview/SKILL.md`, run Ouroboros-inspired Socratic ambiguity-gated interview workflow |
| "ralplan", "consensus plan" | `$ralplan` | Read `~/.agents/skills/ralplan/SKILL.md`, start consensus planning with RALPLAN-DR structured deliberation (short by default, `--deliberate` for high-risk) |
| "ecomode", "eco", "budget" | `$ecomode` | Read `~/.agents/skills/ecomode/SKILL.md`, enable token-efficient mode |
| "cancel", "stop", "abort" | `$cancel` | Read `~/.agents/skills/cancel/SKILL.md`, cancel active modes |
| "tdd", "test first" | keyword mode | Inject TDD-mode guidance and favor test-first execution with `test-engineer` when appropriate |
| "cleanup", "deslop", "anti-slop" | `$ai-slop-cleaner` | Read `~/.agents/skills/ai-slop-cleaner/SKILL.md`, plan and clean AI-generated slop with separate writer/reviewer passes |
| "web-clone", "clone site", "clone website", "copy webpage" | `$web-clone` | Read `~/.agents/skills/web-clone/SKILL.md`, start website cloning pipeline |

Detection rules:
- Keywords are case-insensitive and match anywhere in the user's message
- If multiple keywords match, use the most specific (longest match)
- Conflict resolution: explicit `$name` invocation overrides keyword detection
- The rest of the user's message (after keyword extraction) becomes the task description

Ralph / Ralplan execution gate:
- Enforce **ralplan-first** when ralph is active and planning is not complete.
- Planning is complete only after both `.omc/plans/prd-*.md` and `.omc/plans/test-spec-*.md` exist.
- Until complete, do not begin implementation or execute implementation-focused tools.
</keyword_detection>

---

<skills>
Skills are workflow commands. Invoke via `$name` (e.g., `$ralph`) or browse with `/skills`.

Workflow Skills:
- `autopilot`: Full autonomous execution from idea to working code
- `ralph`: Self-referential persistence loop with verification
- `ultrawork`: Maximum parallelism with parallel agent orchestration
- `visual-verdict`: Structured visual QA verdict loop for screenshot/reference comparisons
- `web-clone`: URL-driven website cloning with visual + functional verification
- `ecomode`: Token-efficient execution using lightweight models
- `team`: N coordinated agents on shared task list
- `ultraqa`: QA cycling -- test, verify, fix, repeat
- `plan`: Strategic planning with optional RALPLAN-DR consensus mode
- `deep-interview`: Socratic deep interview with Ouroboros-inspired mathematical ambiguity gating before execution
- `ralplan`: Iterative consensus planning with RALPLAN-DR structured deliberation (planner + architect + critic); supports `--deliberate` for high-risk work
- `ai-slop-cleaner`: Regression-safe cleanup workflow for duplicate code, dead code, needless abstractions, and boundary violations; supports `--review` for reviewer-only passes

Agent Shortcuts:
- `analyze` -> debugger: Investigation and root-cause analysis
- `deepsearch` -> explore: Thorough codebase search
- `tdd` -> test-engineer: Test-driven development workflow
- `build-fix` -> debugger: Build error resolution
- `code-review` -> code-reviewer: Comprehensive code review
- `security-review` -> security-reviewer: Security audit
- `frontend-ui-ux` -> designer: UI component and styling work
- `git-master` -> git-master: Git commit and history management

Utilities:
- `cancel`: Cancel active execution modes
- `note`: Save notes for session persistence
- `doctor`: Diagnose installation issues
- `help`: Usage guidance
- `trace`: Show agent flow timeline
</skills>

---

<team_compositions>
Common agent workflows for typical scenarios:

Feature Development:
  analyst -> planner -> executor -> test-engineer -> code-reviewer -> verifier

Anti-Slop Cleanup:
  planner -> test-engineer -> executor -> code-reviewer -> verifier

Bug Investigation:
  explore + debugger + executor + test-engineer + verifier

Code Review:
  style-reviewer + code-reviewer + api-reviewer + security-reviewer

Product Discovery:
  product-manager + ux-researcher + product-analyst + designer

UX Audit:
  ux-researcher + information-architect + designer + product-analyst
</team_compositions>

---

<team_pipeline>
Team is the default multi-agent orchestrator. It uses a canonical staged pipeline:

`team-plan -> team-prd -> team-exec -> team-verify -> team-fix (loop)`

Stage transitions:
- `team-plan` -> `team-prd`: planning/decomposition complete
- `team-prd` -> `team-exec`: acceptance criteria and scope are explicit
- `team-exec` -> `team-verify`: all execution tasks reach terminal states
- `team-verify` -> `team-fix` | `complete` | `failed`: verification decides next step
- `team-fix` -> `team-exec` | `team-verify` | `complete` | `failed`: fixes feed back into execution

The `team-fix` loop is bounded by max attempts; exceeding the bound transitions to `failed`.
Terminal states: `complete`, `failed`, `cancelled`.
Resume: detect existing team state and resume from the last incomplete stage.
</team_pipeline>

---

<team_model_resolution>
Team/Swarm worker startup currently uses one shared `agentType` and one shared launch-arg set for all workers in a team run.

For Claude worker model selection, apply this precedence (highest to lowest):
1. Explicit `--model` already present in worker launch args
2. Direct provider model env (`ANTHROPIC_MODEL` / `CLAUDE_MODEL`)
3. Provider tier envs (`CLAUDE_CODE_BEDROCK_SONNET_MODEL`, `ANTHROPIC_DEFAULT_SONNET_MODEL`)
4. OMC tier env (`OMC_MODEL_MEDIUM`)
5. Otherwise let Claude Code use its default model

Model flag normalization contract:
- Accept both `--model <value>` and `--model=<value>`
- Remove duplicates/conflicts
- Emit exactly one final canonical model flag: `--model <value>`
- Preserve unrelated worker launch args
</team_model_resolution>

---

<verification>
Verify before claiming completion. The goal is evidence-backed confidence, not ceremony.

Sizing guidance:
- Small changes (<5 files, <100 lines): lightweight verifier
- Standard changes: standard verifier
- Large or security/architectural changes (>20 files): thorough verifier

Verification loop: identify what proves the claim, run the verification, read the output, then report with evidence. If verification fails, continue iterating rather than reporting incomplete work.
</verification>

<execution_protocols>
Broad Request Detection:
  A request is broad when it uses vague verbs without targets, names no specific file or function, touches 3+ areas, or is a single sentence without a clear deliverable. When detected: explore first, optionally consult architect, then plan.

Parallelization:
- Run 2+ independent tasks in parallel when each takes >30s.
- Run dependent tasks sequentially.
- Use background execution for installs, builds, and tests.
- Prefer Team mode as the primary parallel execution surface. Use ad hoc parallelism only when Team overhead is disproportionate to the task.

Anti-slop workflow:
- For cleanup/refactor/deslop requests, write a cleanup plan before editing code.
- Lock behavior with regression tests first when practical.
- Execute cleanup in small passes: dead code, duplication, naming/error handling, then tests.
- Use separate writer/reviewer passes for cleanup work: implementation first, independent review second.
- Never let the same pass both author and approve high-impact cleanup without an explicit independent review step.
- Minimum quality gates for meaningful cleanup are lint -> typecheck -> unit/integration tests -> static/security scan when available.

Visual iteration gate:
- For visual tasks (reference image(s) + generated screenshot), run `$visual-verdict` every iteration before the next edit.
- Persist visual verdict JSON in `.omc/state/{scope}/ralph-progress.json` with both numeric (`score`, threshold pass/fail) and qualitative (`reasoning`, `differences`, `suggestions`, `next_actions`) feedback.

Continuation:
  Before concluding, confirm: zero pending tasks, all features working, tests passing, zero errors, verification evidence collected. If any item is unchecked, continue working.

Ralph planning gate:
  If ralph is active, verify PRD + test spec artifacts exist before any implementation work/tool execution. If missing, stay in planning and create them first (ralplan-first).
</execution_protocols>

<cancellation>
Use the `cancel` skill to end execution modes. This clears state files and stops active loops.

When to cancel:
- All tasks are done and verified: invoke cancel.
- Work is blocked and cannot proceed: explain the blocker, then invoke cancel.
- User says "stop": invoke cancel immediately.

When not to cancel:
- Work is still incomplete: continue working.
- A single subtask failed but others can continue: fix and retry.
</cancellation>

---

<state_management>
oh-my-claudecode uses the `.omc/` directory for persistent state:
- `.omc/state/` -- Mode state files (JSON)
- `.omc/notepad.md` -- Session-persistent notes
- `.omc/project-memory.json` -- Cross-session project knowledge
- `.omc/plans/` -- Planning documents
- `.omc/logs/` -- Audit logs

Tools are available via MCP when configured (`omc setup` registers all servers):

State & Memory:
- `state_read`, `state_write`, `state_clear`, `state_list_active`, `state_get_status`
- `project_memory_read`, `project_memory_write`, `project_memory_add_note`, `project_memory_add_directive`
- `notepad_read`, `notepad_write_priority`, `notepad_write_working`, `notepad_write_manual`, `notepad_prune`, `notepad_stats`

Code Intelligence:
- `lsp_diagnostics` -- type errors for a single file (tsc --noEmit)
- `lsp_diagnostics_directory` -- project-wide type checking
- `lsp_document_symbols` -- function/class/variable outline for a file
- `lsp_workspace_symbols` -- search symbols by name across the workspace
- `lsp_hover` -- type info at a position (regex-based approximation)
- `lsp_find_references` -- find all references to a symbol (grep-based)
- `lsp_servers` -- list available diagnostic backends
- `ast_grep_search` -- structural code pattern search (requires ast-grep CLI)
- `ast_grep_replace` -- structural code transformation (dryRun=true by default)

Trace:
- `trace_timeline` -- chronological agent turn + mode event timeline
- `trace_summary` -- aggregate statistics (turn counts, timing, token usage)

Mode lifecycle requirements:
- On mode start, call `state_write` with `mode`, `active: true`, `started_at`, and mode-specific fields.
- On phase/iteration transitions, call `state_write` with updated `current_phase` / `iteration` and mode-specific progress fields.
- On completion, call `state_write` with `active: false`, terminal `current_phase`, and `completed_at`.
- On cancel/abort cleanup, call `state_clear(mode="<mode>")`.

Recommended mode fields:
- `ralph`: `active`, `iteration`, `max_iterations`, `current_phase`, `started_at`, `completed_at`
- `autopilot`: `active`, `current_phase` (`expansion|planning|execution|qa|validation|complete`), `started_at`, `completed_at`
- `ultrawork`: `active`, `reinforcement_count`, `started_at`
- `team`: `active`, `current_phase` (`team-plan|team-prd|team-exec|team-verify|team-fix|complete`), `agent_count`, `team_name`
- `ecomode`: `active`
- `ultraqa`: `active`, `current_phase`, `iteration`, `started_at`, `completed_at`
</state_management>

---

## Setup

Run `omc setup` to install all components. Run `omc doctor` to verify installation.

---

## Review guidelines

- Flag breaking changes to public API or CLI interfaces as P0.
- Verify error handling on all async operations (missing try/catch, unhandled rejections).
- Check for hardcoded secrets, tokens, or credentials — flag as P0.
- Ensure new dependencies are justified and not duplicating existing functionality.
- TypeScript: verify proper type annotations, no unsafe `any` without justification.
- Test coverage: flag new logic paths that lack corresponding tests.
- Configuration changes must be backward-compatible or include migration notes.
- MCP tool definitions must validate inputs and handle timeouts gracefully.
- Agent orchestration changes: verify state machine transitions are complete and recoverable.


================================================
FILE: CHANGELOG.md
================================================
# oh-my-claudecode v4.9.0: Team reliability, autoresearch setup, and safety hardening

## Release Notes

Release 4.9.0 focuses on **team/runtime reliability**, **autoresearch onboarding and launch flow improvements**, and **safety hardening** across keyword/regex-sensitive paths and background process cleanup.

### Highlights

- **feat(team): harden shutdown cleanup for split-pane workers** — strengthens cleanup when pane metadata drifts and improves cmux-compatible team launches. (#1752, #1750, #1743)
- **feat(autoresearch): improve setup and launch flow** — adds guided intake, launch-from-interview artifacts, and zero-learning-curve Claude session setup. (#1740, #1734, #1723, #1693)
- **fix(safety): harden regex- and state-sensitive paths** — filters informational keyword-detector queries, avoids risky regex behavior, and reduces stale state interactions. (#1737, #1741)
- **fix(runtime): clean up orphaned background processes** — reduces lingering bridge/MCP child processes and related runtime residue. (#1724)

### Team & Runtime Reliability

- **fix(team): ensure shutdown removes split-pane workers after metadata drift** — improves team shutdown cleanup reliability. (#1752)
- **fix(team): support team mode launches from cmux surfaces** — expands compatibility for cmux-driven flows. (#1750)
- **fix(cli): skip tmux wrapping in cmux terminals** — prevents orphaned/incorrect nested session behavior. (#1743)
- **fix(bridge): clean up orphaned bridge and MCP child processes** — hardens runtime cleanup behavior. (#1724)

### Autoresearch Improvements

- **feat(autoresearch): launch from interview artifacts** — enables smoother launch flow from planning artifacts. (#1740)
- **fix(autoresearch): port intake flow from OMX and clean up setup path** — improves guided intake reliability. (#1734)
- **feat: add zero-learning-curve autoresearch setup flow** — simplifies Claude session setup for lightweight use. (#1723)
- **feat(autoresearch): backport autoresearch from OMX to OMC (Phase 1)** — expands the autoresearch surface. (#1693)

### Safety & Correctness

- **fix(keyword-detector): skip informational queries and clear legacy state** — reduces false activations and stale-state issues. (#1737)
- **fix: prevent skill-active-state collision between OMC and project custom skills** — improves reload/sync safety around active state handling. (#1741)
- **fix(planning): remove unnecessary global flag from module-level regex** — avoids unsafe regex statefulness in planning-related flows.
- **fix(team): pass Bedrock/Vertex model IDs to workers without normalization** — preserves provider-specific identifiers. (#1697)

### Workflow & Platform

- **feat: add mandatory deslop pass to ralph workflow** — improves cleanup discipline in execution flows. (#1736)
- **feat(docs): add Lore commit knowledge protocol to CLAUDE.md template** — formalizes commit knowledge capture. (#1733)
- **feat(deepinit): add manifest-based incremental deepinit tool** — extends onboarding/setup capabilities. (#1719)
- **feat(skill): add deep-dive skill (trace -> deep-interview pipeline)** — adds a new investigation workflow. (#1681)

### Install / Update

```bash
npm install -g oh-my-claude-sisyphus@4.9.0
```

Or reinstall the plugin:

```bash
claude /install-plugin oh-my-claudecode
```

**Full Changelog**: https://github.com/Yeachan-Heo/oh-my-claudecode/compare/v4.8.2...v4.9.0


================================================
FILE: CLAUDE.md
================================================
<!-- OMC:START -->
<!-- OMC:VERSION:4.9.1 -->

# oh-my-claudecode - Intelligent Multi-Agent Orchestration

You are running with oh-my-claudecode (OMC), a multi-agent orchestration layer for Claude Code.
Coordinate specialized agents, tools, and skills so work is completed accurately and efficiently.

<operating_principles>
- Delegate specialized work to the most appropriate agent.
- Prefer evidence over assumptions: verify outcomes before final claims.
- Choose the lightest-weight path that preserves quality.
- Consult official docs before implementing with SDKs/frameworks/APIs.
</operating_principles>

<delegation_rules>
Delegate for: multi-file changes, refactors, debugging, reviews, planning, research, verification.
Work directly for: trivial ops, small clarifications, single commands.
Route code to `executor` (use `model=opus` for complex work). Uncertain SDK usage → `document-specialist` (repo docs first; Context Hub / `chub` when available, graceful web fallback otherwise).
</delegation_rules>

<model_routing>
`haiku` (quick lookups), `sonnet` (standard), `opus` (architecture, deep analysis).
Direct writes OK for: `~/.claude/**`, `.omc/**`, `.claude/**`, `CLAUDE.md`, `AGENTS.md`.
</model_routing>

<agent_catalog>
Prefix: `oh-my-claudecode:`. See `agents/*.md` for full prompts.

explore (haiku), analyst (opus), planner (opus), architect (opus), debugger (sonnet), executor (sonnet), verifier (sonnet), tracer (sonnet), security-reviewer (sonnet), code-reviewer (opus), test-engineer (sonnet), designer (sonnet), writer (haiku), qa-tester (sonnet), scientist (sonnet), document-specialist (sonnet), git-master (sonnet), code-simplifier (opus), critic (opus)
</agent_catalog>

<tools>
External AI: `/team N:executor "task"`, `omc team N:codex|gemini "..."`, `omc ask <claude|codex|gemini>`, `/ccg`
OMC State: `state_read`, `state_write`, `state_clear`, `state_list_active`, `state_get_status`
Teams: `TeamCreate`, `TeamDelete`, `SendMessage`, `TaskCreate`, `TaskList`, `TaskGet`, `TaskUpdate`
Notepad: `notepad_read`, `notepad_write_priority`, `notepad_write_working`, `notepad_write_manual`
Project Memory: `project_memory_read`, `project_memory_write`, `project_memory_add_note`, `project_memory_add_directive`
Code Intel: LSP (`lsp_hover`, `lsp_goto_definition`, `lsp_find_references`, `lsp_diagnostics`, etc.), AST (`ast_grep_search`, `ast_grep_replace`), `python_repl`
</tools>

<skills>
Invoke via `/oh-my-claudecode:<name>`. Trigger patterns auto-detect keywords.

Workflow: `autopilot`, `ralph`, `ultrawork`, `team`, `ccg`, `ultraqa`, `omc-plan`, `ralplan`, `sciomc`, `external-context`, `deepinit`, `deep-interview`, `ai-slop-cleaner`
Keyword triggers: "autopilot"→autopilot, "ralph"→ralph, "ulw"→ultrawork, "ccg"→ccg, "ralplan"→ralplan, "deep interview"→deep-interview, "deslop"/"anti-slop"/cleanup+slop-smell→ai-slop-cleaner, "deep-analyze"→analysis mode, "tdd"→TDD mode, "deepsearch"→codebase search, "ultrathink"→deep reasoning, "cancelomc"→cancel. Team orchestration is explicit via `/team`.
Utilities: `ask-codex`, `ask-gemini`, `cancel`, `note`, `learner`, `omc-setup`, `mcp-setup`, `hud`, `omc-doctor`, `omc-help`, `trace`, `release`, `project-session-manager`, `skill`, `writer-memory`, `ralph-init`, `configure-notifications`, `learn-about-omc` (`trace` is the evidence-driven tracing lane)
</skills>

<team_pipeline>
Stages: `team-plan` → `team-prd` → `team-exec` → `team-verify` → `team-fix` (loop).
Fix loop bounded by max attempts. `team ralph` links both modes.
</team_pipeline>

<verification>
Verify before claiming completion. Size appropriately: small→haiku, standard→sonnet, large/security→opus.
If verification fails, keep iterating.
</verification>

<execution_protocols>
Broad requests: explore first, then plan. 2+ independent tasks in parallel. `run_in_background` for builds/tests.
Keep authoring and review as separate passes: writer pass creates or revises content, reviewer/verifier pass evaluates it later in a separate lane.
Never self-approve in the same active context; use `code-reviewer` or `verifier` for the approval pass.
Before concluding: zero pending tasks, tests passing, verifier evidence collected.
</execution_protocols>

<commit_protocol>
Use git trailers to preserve decision context in every commit message.
Format: conventional commit subject line, optional body, then structured trailers.

Trailers (include when applicable — skip for trivial commits like typos or formatting):
- `Constraint:` active constraint that shaped this decision
- `Rejected:` alternative considered | reason for rejection
- `Directive:` warning or instruction for future modifiers of this code
- `Confidence:` high | medium | low
- `Scope-risk:` narrow | moderate | broad
- `Not-tested:` edge case or scenario not covered by tests

Example:
```
fix(auth): prevent silent session drops during long-running ops

Auth service returns inconsistent status codes on token expiry,
so the interceptor catches all 4xx and triggers inline refresh.

Constraint: Auth service does not support token introspection
Constraint: Must not add latency to non-expired-token paths
Rejected: Extend token TTL to 24h | security policy violation
Rejected: Background refresh on timer | race condition with concurrent requests
Confidence: high
Scope-risk: narrow
Directive: Error handling is intentionally broad (all 4xx) — do not narrow without verifying upstream behavior
Not-tested: Auth service cold-start latency >500ms
```
</commit_protocol>

<hooks_and_context>
Hooks inject `<system-reminder>` tags. Key patterns: `hook success: Success` (proceed), `[MAGIC KEYWORD: ...]` (invoke skill), `The boulder never stops` (ralph/ultrawork active).
Persistence: `<remember>` (7 days), `<remember priority>` (permanent).
Kill switches: `DISABLE_OMC`, `OMC_SKIP_HOOKS` (comma-separated).
</hooks_and_context>

<cancellation>
`/oh-my-claudecode:cancel` ends execution modes. Cancel when done+verified or blocked. Don't cancel if work incomplete.
</cancellation>

<worktree_paths>
State: `.omc/state/`, `.omc/state/sessions/{sessionId}/`, `.omc/notepad.md`, `.omc/project-memory.json`, `.omc/plans/`, `.omc/research/`, `.omc/logs/`
</worktree_paths>

## Setup

Say "setup omc" or run `/oh-my-claudecode:omc-setup`.

<!-- OMC:END -->


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2025 Yeachan Heo

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.de.md
================================================
[English](README.md) | [한국어](README.ko.md) | [中文](README.zh.md) | [日本語](README.ja.md) | [Español](README.es.md) | [Tiếng Việt](README.vi.md) | [Português](README.pt.md) | [Русский](README.ru.md) | [Türkçe](README.tr.md) | Deutsch | [Français](README.fr.md) | [Italiano](README.it.md)

# oh-my-claudecode

[![npm version](https://img.shields.io/npm/v/oh-my-claude-sisyphus?color=cb3837)](https://www.npmjs.com/package/oh-my-claude-sisyphus)
[![npm downloads](https://img.shields.io/npm/dm/oh-my-claude-sisyphus?color=blue)](https://www.npmjs.com/package/oh-my-claude-sisyphus)
[![GitHub stars](https://img.shields.io/github/stars/Yeachan-Heo/oh-my-claudecode?style=flat&color=yellow)](https://github.com/Yeachan-Heo/oh-my-claudecode/stargazers)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
[![Sponsor](https://img.shields.io/badge/Sponsor-❤️-red?style=flat&logo=github)](https://github.com/sponsors/Yeachan-Heo)
[![Discord](https://img.shields.io/discord/1452487457085063218?color=5865F2&logo=discord&logoColor=white&label=Discord)](https://discord.gg/PUwSMR9XNk)

**Multi-Agenten-Orchestrierung für Claude Code. Null Lernkurve.**

_Lernen Sie nicht Claude Code. Nutzen Sie einfach OMC._

[Loslegen](#schnellstart) • [Dokumentation](https://yeachan-heo.github.io/oh-my-claudecode-website) • [Migrationsleitfaden](docs/MIGRATION.md)

---

## Schnellstart

**Schritt 1: Installation**

```bash
/plugin marketplace add https://github.com/Yeachan-Heo/oh-my-claudecode
/plugin install oh-my-claudecode
```

**Schritt 2: Einrichtung**

```bash
/oh-my-claudecode:omc-setup
```

**Schritt 3: Etwas bauen**

```
autopilot: build a REST API for managing tasks
```

Das war's. Alles andere passiert automatisch.

## Team Mode (Empfohlen)

Ab **v4.1.7** ist **Team** die kanonische Orchestrierungsoberfläche in OMC. Legacy-Einstiegspunkte wie **swarm** und **ultrapilot** werden weiterhin unterstützt, **leiten aber im Hintergrund an Team weiter**.

```bash
/oh-my-claudecode:team 3:executor "fix all TypeScript errors"
```

Team läuft als gestufte Pipeline:

`team-plan → team-prd → team-exec → team-verify → team-fix (loop)`

Aktivieren Sie Claude Code native Teams in `~/.claude/settings.json`:

```json
{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}
```

> Wenn Teams deaktiviert sind, warnt OMC Sie und fällt auf Ausführung ohne Team zurück, wenn möglich.

> **Hinweis: Paketbenennung** — Das Projekt nutzt die Marke **oh-my-claudecode** (Repo, Plugin, Befehle), aber das npm-Paket wird als [`oh-my-claude-sisyphus`](https://www.npmjs.com/package/oh-my-claude-sisyphus) veröffentlicht. Wenn Sie die CLI-Tools über npm/bun installieren, verwenden Sie `npm install -g oh-my-claude-sisyphus`.

### Aktualisierung

```bash
# 1. Plugin aktualisieren
/plugin install oh-my-claudecode

# 2. Setup erneut ausführen, um Konfiguration zu aktualisieren
/oh-my-claudecode:omc-setup
```

Bei Problemen nach der Aktualisierung leeren Sie den alten Plugin-Cache:

```bash
/oh-my-claudecode:omc-doctor
```

<h1 align="center">Ihr Claude hat gerade Superkräfte erhalten.</h1>

<p align="center">
  <img src="assets/omc-character.jpg" alt="oh-my-claudecode" width="400" />
</p>

---

## Warum oh-my-claudecode?

- **Keine Konfiguration nötig** — Funktioniert sofort mit intelligenten Standardwerten
- **Team-first-Orchestrierung** — Team ist die kanonische Multi-Agenten-Oberfläche (swarm/ultrapilot sind Kompatibilitätsfassaden)
- **Natürliche Sprachschnittstelle** — Keine Befehle auswendig lernen, beschreiben Sie einfach, was Sie wollen
- **Automatische Parallelisierung** — Komplexe Aufgaben werden auf spezialisierte Agenten verteilt
- **Beharrliche Ausführung** — Gibt nicht auf, bis die Arbeit verifiziert und abgeschlossen ist
- **Kostenoptimierung** — Intelligentes Model-Routing spart 30-50% an Tokens
- **Aus Erfahrung lernen** — Extrahiert und wiederverwendet automatisch Problemlösungsmuster
- **Echtzeit-Sichtbarkeit** — HUD statusline zeigt, was im Hintergrund passiert

---

## Funktionen

### Orchestrierungsmodi

Mehrere Strategien für verschiedene Anwendungsfälle — von Team-gestützter Orchestrierung bis token-effizientem Refactoring. [Mehr erfahren →](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#execution-modes)

| Modus                             | Beschreibung                                                                               | Verwendung                                                                           |
| --------------------------------- | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ |
| **Team (empfohlen)**              | Kanonische gestufte Pipeline (`team-plan → team-prd → team-exec → team-verify → team-fix`) | Koordinierte Agenten mit gemeinsamer Aufgabenliste                                   |
| **Autopilot**                     | Autonome Ausführung (einzelner Leitagent)                                                  | End-to-End-Feature-Arbeit mit minimalem Aufwand                                      |
| **Ultrawork**                     | Maximale Parallelität (ohne Team)                                                          | Parallele Fixes/Refactorings, wenn Team nicht nötig ist                              |
| **Ralph**                         | Beharrlicher Modus mit Verify/Fix-Schleifen                                                | Aufgaben, die vollständig abgeschlossen werden müssen (keine stillen Teilergebnisse) |
| **Ecomode**                       | Token-effizientes Routing                                                                  | Budget-bewusste Iteration                                                            |
| **Pipeline**                      | Sequentielle, gestufte Verarbeitung                                                        | Mehrstufige Transformationen mit strikter Reihenfolge                                |
| **Swarm / Ultrapilot (veraltet)** | Kompatibilitätsfassaden, die an **Team** weiterleiten                                      | Bestehende Workflows und ältere Dokumentation                                        |

### Intelligente Orchestrierung

- **32 spezialisierte Agenten** für Architektur, Forschung, Design, Tests, Data Science
- **Intelligentes Model-Routing** — Haiku für einfache Aufgaben, Opus für komplexes Reasoning
- **Automatische Delegation** — Immer der richtige Agent für die richtige Aufgabe

### Entwicklererfahrung

- **Magische Schlüsselwörter** — `ralph`, `ulw`, `eco`, `plan` für explizite Steuerung
- **HUD statusline** — Echtzeit-Orchestrierungsmetriken in Ihrer Statusleiste
- **Skill-Lernen** — Wiederverwendbare Muster aus Ihren Sitzungen extrahieren
- **Analytik & Kostenverfolgung** — Token-Nutzung über alle Sitzungen verstehen

### Benutzerdefinierte Skills

Einmal lernen, für immer wiederverwenden. OMC extrahiert hart erarbeitetes Debugging-Wissen in portable Skill-Dateien, die bei Bedarf automatisch injiziert werden.

| | Projektbereich | Benutzerbereich |
|---|---|---|
| **Pfad** | `.omc/skills/` | `~/.omc/skills/` |
| **Geteilt mit** | Team (versionskontrolliert) | Alle Ihre Projekte |
| **Priorität** | Höher (überschreibt Benutzerbereich) | Niedriger (Fallback) |

```yaml
# .omc/skills/fix-proxy-crash.md
---
name: Fix Proxy Crash
description: aiohttp proxy crashes on ClientDisconnectedError
triggers: ["proxy", "aiohttp", "disconnected"]
source: extracted
---
Umschließen Sie den Handler bei server.py:42 mit try/except ClientDisconnectedError...
```

**Skill-Verwaltung:** `/skill list | add | remove | edit | search`
**Auto-Lernen:** `/learner` extrahiert wiederverwendbare Muster mit strengen Qualitätskriterien
**Auto-Injektion:** Passende Skills werden automatisch in den Kontext geladen — kein manueller Aufruf nötig

[Vollständige Feature-Liste →](docs/REFERENCE.md)

---

## Magische Schlüsselwörter

Optionale Abkürzungen für Power-User. Natürliche Sprache funktioniert auch ohne sie.

| Schlüsselwort | Effekt                                           | Beispiel                                                        |
| ------------- | ------------------------------------------------ | --------------------------------------------------------------- |
| `team`        | Kanonische Team-Orchestrierung                   | `/oh-my-claudecode:team 3:executor "fix all TypeScript errors"` |
| `autopilot`   | Vollständig autonome Ausführung                  | `autopilot: build a todo app`                                   |
| `ralph`       | Beharrlichkeitsmodus                             | `ralph: refactor auth`                                          |
| `ulw`         | Maximale Parallelität                            | `ulw fix all errors`                                            |
| `eco`         | Token-effiziente Ausführung                      | `eco: migrate database`                                         |
| `plan`        | Planungsinterview                                | `plan the API`                                                  |
| `ralplan`     | Iterativer Planungskonsens                       | `ralplan this feature`                                          |
| `swarm`       | Veraltetes Schlüsselwort (leitet an Team weiter) | `swarm 5 agents: fix lint errors`                               |
| `ultrapilot`  | Veraltetes Schlüsselwort (leitet an Team weiter) | `ultrapilot: build a fullstack app`                             |

**Hinweise:**

- **ralph beinhaltet ultrawork**: Wenn Sie den ralph-Modus aktivieren, beinhaltet er automatisch die parallele Ausführung von ultrawork.
- Die Syntax `swarm N agents` wird weiterhin für die Agentenanzahl-Extraktion erkannt, aber die Laufzeitumgebung basiert in v4.1.7+ auf Team.

## Hilfsprogramme

### Rate Limit Wartezeit

Automatische Wiederaufnahme von Claude Code Sitzungen, wenn Rate Limits zurückgesetzt werden.

```bash
omc wait          # Status prüfen, Anleitung erhalten
omc wait --start  # Auto-Resume-Daemon aktivieren
omc wait --stop   # Daemon deaktivieren
```

**Voraussetzung:** tmux (für Sitzungserkennung)

### Benachrichtigungs-Tags (Telegram/Discord)

Sie können konfigurieren, wer getaggt wird, wenn Stop-Callbacks Sitzungszusammenfassungen senden.

```bash
# Tag-Liste festlegen/ersetzen
omc config-stop-callback telegram --enable --token <bot_token> --chat <chat_id> --tag-list "@alice,bob"
omc config-stop-callback discord --enable --webhook <url> --tag-list "@here,123456789012345678,role:987654321098765432"

# Inkrementelle Aktualisierungen
omc config-stop-callback telegram --add-tag charlie
omc config-stop-callback discord --remove-tag @here
omc config-stop-callback discord --clear-tags
```

Tag-Verhalten:

- Telegram: `alice` wird zu `@alice` normalisiert
- Discord: unterstützt `@here`, `@everyone`, numerische Benutzer-IDs und `role:<id>`
- `file`-Callbacks ignorieren Tag-Optionen

### OpenClaw-Integration

Leiten Sie Claude Code Session-Ereignisse an ein [OpenClaw](https://openclaw.ai/)-Gateway weiter, um automatisierte Antworten und Workflows über Ihren OpenClaw-Agenten zu ermöglichen.

**Schnelle Einrichtung (empfohlen):**

```bash
/oh-my-claudecode:configure-notifications
# → Bei der Abfrage "openclaw" eingeben → "OpenClaw Gateway" wählen
```

**Manuelle Einrichtung:** Erstellen Sie `~/.claude/omc_config.openclaw.json`:

```json
{
  "enabled": true,
  "gateways": {
    "my-gateway": {
      "url": "https://your-gateway.example.com/wake",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" },
      "method": "POST",
      "timeout": 10000
    }
  },
  "hooks": {
    "session-start": { "gateway": "my-gateway", "instruction": "Session started for {{projectName}}", "enabled": true },
    "stop":          { "gateway": "my-gateway", "instruction": "Session stopping for {{projectName}}", "enabled": true }
  }
}
```

**Umgebungsvariablen:**

| Variable | Beschreibung |
|----------|-------------|
| `OMC_OPENCLAW=1` | OpenClaw aktivieren |
| `OMC_OPENCLAW_DEBUG=1` | Debug-Protokollierung aktivieren |
| `OMC_OPENCLAW_CONFIG=/path/to/config.json` | Konfigurationsdatei-Pfad überschreiben |

**Unterstützte Hook-Ereignisse (6 aktive in bridge.ts):**

| Ereignis | Auslöser | Wichtige Template-Variablen |
|----------|----------|----------------------------|
| `session-start` | Session beginnt | `{{sessionId}}`, `{{projectName}}`, `{{projectPath}}` |
| `stop` | Claude-Antwort abgeschlossen | `{{sessionId}}`, `{{projectName}}` |
| `keyword-detector` | Bei jeder Prompt-Übermittlung | `{{prompt}}`, `{{sessionId}}` |
| `ask-user-question` | Claude fordert Benutzereingabe an | `{{question}}`, `{{sessionId}}` |
| `pre-tool-use` | Vor Tool-Aufruf (hohe Frequenz) | `{{toolName}}`, `{{sessionId}}` |
| `post-tool-use` | Nach Tool-Aufruf (hohe Frequenz) | `{{toolName}}`, `{{sessionId}}` |

**Reply-Channel-Umgebungsvariablen:**

| Variable | Beschreibung |
|----------|-------------|
| `OPENCLAW_REPLY_CHANNEL` | Antwortkanal (z.B. `discord`) |
| `OPENCLAW_REPLY_TARGET` | Kanal-ID |
| `OPENCLAW_REPLY_THREAD` | Thread-ID |

Siehe `scripts/openclaw-gateway-demo.mjs` für ein Referenz-Gateway, das OpenClaw-Payloads über ClawdBot an Discord weiterleitet.

---

## Dokumentation

- **[Vollständige Referenz](docs/REFERENCE.md)** — Umfassende Feature-Dokumentation
- **[Performance-Monitoring](docs/PERFORMANCE-MONITORING.md)** — Agentenverfolgung, Debugging und Optimierung
- **[Website](https://yeachan-heo.github.io/oh-my-claudecode-website)** — Interaktive Anleitungen und Beispiele
- **[Migrationsleitfaden](docs/MIGRATION.md)** — Upgrade von v2.x
- **[Architektur](docs/ARCHITECTURE.md)** — Wie es unter der Haube funktioniert

---

## Voraussetzungen

- [Claude Code](https://docs.anthropic.com/claude-code) CLI
- Claude Max/Pro-Abonnement ODER Anthropic API-Schlüssel

### Optional: Multi-AI-Orchestrierung

OMC kann optional externe AI-Anbieter für Kreuzvalidierung und Design-Konsistenz orchestrieren. Diese sind **nicht erforderlich** — OMC funktioniert vollständig ohne sie.

| Anbieter                                                  | Installation                        | Was es ermöglicht                                |
| --------------------------------------------------------- | ----------------------------------- | ------------------------------------------------ |
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | `npm install -g @google/gemini-cli` | Design-Review, UI-Konsistenz (1M Token Kontext)  |
| [Codex CLI](https://github.com/openai/codex)              | `npm install -g @openai/codex`      | Architekturvalidierung, Code-Review-Gegenprüfung |

**Kosten:** 3 Pro-Pläne (Claude + Gemini + ChatGPT) decken alles für ca. $60/Monat ab.

---

## Lizenz

MIT

---

<div align="center">

**Inspiriert von:** [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) • [claude-hud](https://github.com/ryanjoachim/claude-hud) • [Superpowers](https://github.com/NexTechFusion/Superpowers) • [everything-claude-code](https://github.com/affaan-m/everything-claude-code)

**Null Lernkurve. Maximale Leistung.**

</div>

## Star History

[![Star History Chart](https://api.star-history.com/svg?repos=Yeachan-Heo/oh-my-claudecode&type=date&legend=top-left)](https://www.star-history.com/#Yeachan-Heo/oh-my-claudecode&type=date&legend=top-left)

## 💖 Dieses Projekt unterstützen

Wenn Oh-My-ClaudeCode Ihren Workflow verbessert, erwägen Sie ein Sponsoring:

[![Sponsor on GitHub](https://img.shields.io/badge/Sponsor-❤️-red?style=for-the-badge&logo=github)](https://github.com/sponsors/Yeachan-Heo)

### Warum sponsern?

- Aktive Entwicklung aufrechterhalten
- Prioritäts-Support für Sponsoren
- Einfluss auf Roadmap & Features
- Freie und Open-Source-Wartung unterstützen

### Andere Möglichkeiten zu helfen

- ⭐ Dem Repository einen Stern geben
- 🐛 Fehler melden
- 💡 Features vorschlagen
- 📝 Code beitragen


================================================
FILE: README.es.md
================================================
[English](README.md) | [한국어](README.ko.md) | [中文](README.zh.md) | [日本語](README.ja.md) | Español | [Tiếng Việt](README.vi.md) | [Português](README.pt.md)

# oh-my-claudecode

[![npm version](https://img.shields.io/npm/v/oh-my-claude-sisyphus?color=cb3837)](https://www.npmjs.com/package/oh-my-claude-sisyphus)
[![npm downloads](https://img.shields.io/npm/dm/oh-my-claude-sisyphus?color=blue)](https://www.npmjs.com/package/oh-my-claude-sisyphus)
[![GitHub stars](https://img.shields.io/github/stars/Yeachan-Heo/oh-my-claudecode?style=flat&color=yellow)](https://github.com/Yeachan-Heo/oh-my-claudecode/stargazers)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
[![Sponsor](https://img.shields.io/badge/Sponsor-❤️-red?style=flat&logo=github)](https://github.com/sponsors/Yeachan-Heo)
[![Discord](https://img.shields.io/discord/1452487457085063218?color=5865F2&logo=discord&logoColor=white&label=Discord)](https://discord.gg/PUwSMR9XNk)

> **Para usuarios de Codex:** Consulta [oh-my-codex](https://github.com/Yeachan-Heo/oh-my-codex) — la misma experiencia de orquestación para OpenAI Codex CLI.

**Orquestación multi-agente para Claude Code. Curva de aprendizaje cero.**

*No aprendas Claude Code. Solo usa OMC.*

[Comenzar](#inicio-rápido) • [Documentación](https://yeachan-heo.github.io/oh-my-claudecode-website) • [Referencia CLI](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#cli-reference) • [Flujos de Trabajo](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#workflows) • [Guía de Migración](docs/MIGRATION.md)

---

## Inicio Rápido

**Paso 1: Instalar**
```bash
/plugin marketplace add https://github.com/Yeachan-Heo/oh-my-claudecode
/plugin install oh-my-claudecode
```

**Paso 2: Configurar**
```bash
/omc-setup
```

**Paso 3: Construye algo**
```
autopilot: build a REST API for managing tasks
```

Eso es todo. Todo lo demás es automático.

### ¿No sabes por dónde empezar?

Si no tienes claros los requisitos, tienes una idea vaga, o quieres microgestionar el diseño:

```
/deep-interview "I want to build a task management app"
```

La entrevista profunda usa preguntas socráticas para clarificar tu pensamiento antes de escribir cualquier código. Expone suposiciones ocultas y mide la claridad a través de dimensiones ponderadas, asegurando que sepas exactamente qué construir antes de que comience la ejecución.

## Modo Team (Recomendado)

A partir de **v4.1.7**, **Team** es la superficie canónica de orquestación en OMC. Los puntos de entrada legados como **swarm** y **ultrapilot** siguen siendo compatibles, pero ahora **enrutan a Team internamente**.

```bash
/team 3:executor "fix all TypeScript errors"
```

Team se ejecuta como un pipeline por etapas:

`team-plan → team-prd → team-exec → team-verify → team-fix (loop)`

Habilita los equipos nativos de Claude Code en `~/.claude/settings.json`:

```json
{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}
```

> Si los equipos están desactivados, OMC te avisará y hará fallback a ejecución sin Team cuando sea posible.

### Trabajadores CLI tmux — Codex & Gemini (v4.4.0+)

**v4.4.0 elimina los servidores MCP de Codex/Gemini** (proveedores `x`, `g`). Usa `/omc-teams` para lanzar procesos CLI reales en paneles divididos de tmux:

```bash
/omc-teams 2:codex   "review auth module for security issues"
/omc-teams 2:gemini  "redesign UI components for accessibility"
/omc-teams 1:claude  "implement the payment flow"
```

Para trabajo mixto de Codex + Gemini en un solo comando, usa la habilidad **`/ccg`**:

```bash
/ccg Review this PR — architecture (Codex) and UI components (Gemini)
```

| Habilidad | Trabajadores | Mejor Para |
|-------|---------|----------|
| `/omc-teams N:codex` | N paneles Codex CLI | Revisión de código, análisis de seguridad, arquitectura |
| `/omc-teams N:gemini` | N paneles Gemini CLI | Diseño UI/UX, docs, tareas de gran contexto |
| `/omc-teams N:claude` | N paneles Claude CLI | Tareas generales via Claude CLI en tmux |
| `/ccg` | 1 Codex + 1 Gemini | Orquestación tri-modelo en paralelo |

Los trabajadores se inician bajo demanda y terminan cuando su tarea se completa — sin uso de recursos en espera. Requiere las CLIs `codex` / `gemini` instaladas y una sesión tmux activa.

> **Nota: Nombre del paquete** — El proyecto usa la marca **oh-my-claudecode** (repositorio, plugin, comandos), pero el paquete npm se publica como [`oh-my-claude-sisyphus`](https://www.npmjs.com/package/oh-my-claude-sisyphus). Si instalas las herramientas CLI via npm/bun, usa `npm install -g oh-my-claude-sisyphus`.

### Actualizar

```bash
# 1. Actualizar el clon del marketplace
/plugin marketplace update omc

# 2. Volver a ejecutar el setup para actualizar la configuracion
/omc-setup
```

> **Nota:** Si la actualizacion automatica del marketplace no esta activada, debes ejecutar manualmente `/plugin marketplace update omc` para sincronizar la ultima version antes de ejecutar el setup.

Si experimentas problemas despues de actualizar, limpia la cache antigua del plugin:

```bash
/omc-doctor
```

<h1 align="center">Tu Claude acaba de recibir esteroides.</h1>

<p align="center">
  <img src="assets/omc-character.jpg" alt="oh-my-claudecode" width="400" />
</p>

---

## ¿Por qué oh-my-claudecode?

- **Cero configuración requerida** - Funciona inmediatamente con valores predeterminados inteligentes
- **Orquestación Team-first** - Team es la superficie canónica multiagente (swarm/ultrapilot son fachadas de compatibilidad)
- **Interfaz de lenguaje natural** - Sin comandos que memorizar, solo describe lo que quieres
- **Paralelización automática** - Tareas complejas distribuidas entre agentes especializados
- **Ejecución persistente** - No se rendirá hasta que el trabajo esté verificado y completo
- **Optimización de costos** - Enrutamiento inteligente de modelos ahorra 30-50% en tokens
- **Aprende de la experiencia** - Extrae y reutiliza automáticamente patrones de resolución de problemas
- **Visibilidad en tiempo real** - Barra de estado HUD muestra lo que está sucediendo internamente

---

## Características

### Modos de Ejecución
Múltiples estrategias para diferentes casos de uso - desde construcciones completamente autónomas hasta refactorización eficiente en tokens. [Aprende más →](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#execution-modes)

| Modo | Característica | Usar Para |
|------|---------|---------|
| **Team (recomendado)** | Pipeline por etapas | Agentes Claude coordinados en una lista de tareas compartida |
| **omc-teams** | Trabajadores CLI tmux | Tareas Codex/Gemini CLI; se inician bajo demanda, terminan al completar |
| **ccg** | Tri-modelo en paralelo | Codex (analítico) + Gemini (diseño), Claude sintetiza |
| **Autopilot** | Ejecución autónoma | Trabajo de feature end-to-end con mínima ceremonia |
| **Ultrawork** | Máximo paralelismo | Correcciones/refactorizaciones en ráfaga cuando Team no es necesario |
| **Ralph** | Modo persistente | Tareas que deben completarse totalmente |
| **Pipeline** | Procesamiento secuencial | Transformaciones multi-etapa con ordenación estricta |
| **Swarm / Ultrapilot (legado)** | Enrutan a Team | Flujos de trabajo existentes y documentación antigua |

### Orquestación Inteligente

- **32 agentes especializados** para arquitectura, investigación, diseño, pruebas, ciencia de datos
- **Enrutamiento inteligente de modelos** - Haiku para tareas simples, Opus para razonamiento complejo
- **Delegación automática** - El agente correcto para el trabajo, siempre

### Experiencia de Desarrollo

- **Palabras clave mágicas** - `ralph`, `ulw`, `plan` para control explícito
- **Barra de estado HUD** - Métricas de orquestación en tiempo real en tu barra de estado
- **Aprendizaje de habilidades** - Extrae patrones reutilizables de tus sesiones
- **Análisis y seguimiento de costos** - Comprende el uso de tokens en todas las sesiones

### Habilidades Personalizadas

Aprende una vez, reutiliza para siempre. OMC extrae conocimiento valioso de depuración en archivos de habilidades portátiles que se inyectan automáticamente cuando son relevantes.

| | Alcance de Proyecto | Alcance de Usuario |
|---|---|---|
| **Ruta** | `.omc/skills/` | `~/.omc/skills/` |
| **Compartido con** | Equipo (controlado por versiones) | Todos tus proyectos |
| **Prioridad** | Mayor (anula el alcance de usuario) | Menor (respaldo) |

```yaml
# .omc/skills/fix-proxy-crash.md
---
name: Fix Proxy Crash
description: aiohttp proxy crashes on ClientDisconnectedError
triggers: ["proxy", "aiohttp", "disconnected"]
source: extracted
---
Envuelve el handler en server.py:42 con try/except ClientDisconnectedError...
```

**Gestión de habilidades:** `/skill list | add | remove | edit | search`
**Auto-aprendizaje:** `/learner` extrae patrones reutilizables con estrictos criterios de calidad
**Auto-inyección:** Las habilidades coincidentes se cargan en el contexto automáticamente — sin necesidad de invocación manual

[Lista completa de características →](docs/REFERENCE.md)

---

## Palabras Clave Mágicas

Atajos opcionales para usuarios avanzados. El lenguaje natural funciona bien sin ellas.

| Palabra Clave | Efecto | Ejemplo |
|---------|--------|---------|
| `team` | Orquestación canónica con Team | `/team 3:executor "fix all TypeScript errors"` |
| `omc-teams` | Trabajadores CLI tmux (codex/gemini/claude) | `/omc-teams 2:codex "security review"` |
| `ccg` | Orquestación tri-modelo Codex+Gemini | `/ccg review this PR` |
| `autopilot` | Ejecución completamente autónoma | `autopilot: build a todo app` |
| `ralph` | Modo persistencia | `ralph: refactor auth` |
| `ulw` | Máximo paralelismo | `ulw fix all errors` |
| `plan` | Entrevista de planificación | `plan the API` |
| `ralplan` | Consenso de planificación iterativa | `ralplan this feature` |
| `deep-interview` | Clarificación socrática de requisitos | `deep-interview "vague idea"` |
| `swarm` | **Obsoleto** — usa `team` en su lugar | `swarm 5 agents: fix lint errors` |
| `ultrapilot` | **Obsoleto** — usa `team` en su lugar | `ultrapilot: build a fullstack app` |

**Notas:**
- **ralph incluye ultrawork:** Cuando activas el modo ralph, automáticamente incluye la ejecución paralela de ultrawork. No es necesario combinar palabras clave.
- La sintaxis `swarm N agents` aún se reconoce para extraer el recuento de agentes, pero el runtime está respaldado por Team en v4.1.7+.

---

## Utilidades

### Espera de Límite de Tasa

Reanuda automáticamente sesiones de Claude Code cuando se reinician los límites de tasa.

```bash
omc wait          # Verificar estado, obtener orientación
omc wait --start  # Habilitar demonio de reanudación automática
omc wait --stop   # Deshabilitar demonio
```

**Requiere:** tmux (para detección de sesión)

### Etiquetas de notificación (Telegram/Discord/Slack)

Puedes configurar a quién etiquetar cuando los callbacks de stop envían el resumen de sesión.

```bash
# Definir/reemplazar lista de etiquetas
omc config-stop-callback telegram --enable --token <bot_token> --chat <chat_id> --tag-list "@alice,bob"
omc config-stop-callback discord --enable --webhook <url> --tag-list "@here,123456789012345678,role:987654321098765432"
omc config-stop-callback slack --enable --webhook <url> --tag-list "<!here>,<@U1234567890>"

# Actualizaciones incrementales
omc config-stop-callback telegram --add-tag charlie
omc config-stop-callback discord --remove-tag @here
omc config-stop-callback discord --clear-tags
```

Comportamiento de etiquetas:
- Telegram: `alice` se normaliza a `@alice`
- Discord: soporta `@here`, `@everyone`, IDs numéricos de usuario y `role:<id>`
- Slack: soporta `<@MEMBER_ID>`, `<!channel>`, `<!here>`, `<!everyone>`, `<!subteam^GROUP_ID>`
- El callback `file` ignora las opciones de etiquetas

### Integración con OpenClaw

Reenvía eventos de sesión de Claude Code a un gateway de [OpenClaw](https://openclaw.ai/) para habilitar respuestas automatizadas y flujos de trabajo a través de tu agente OpenClaw.

**Configuración rápida (recomendado):**

```bash
/oh-my-claudecode:configure-notifications
# → Escribe "openclaw" cuando se te solicite → elige "OpenClaw Gateway"
```

**Configuración manual:** crea `~/.claude/omc_config.openclaw.json`:

```json
{
  "enabled": true,
  "gateways": {
    "my-gateway": {
      "url": "https://your-gateway.example.com/wake",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" },
      "method": "POST",
      "timeout": 10000
    }
  },
  "hooks": {
    "session-start": { "gateway": "my-gateway", "instruction": "Session started for {{projectName}}", "enabled": true },
    "stop":          { "gateway": "my-gateway", "instruction": "Session stopping for {{projectName}}", "enabled": true }
  }
}
```

**Variables de entorno:**

| Variable | Descripción |
|----------|-------------|
| `OMC_OPENCLAW=1` | Habilitar OpenClaw |
| `OMC_OPENCLAW_DEBUG=1` | Habilitar registro de depuración |
| `OMC_OPENCLAW_CONFIG=/path/to/config.json` | Ruta alternativa del archivo de configuración |

**Eventos de hook soportados (6 activos en bridge.ts):**

| Evento | Disparador | Variables de plantilla principales |
|--------|-----------|-----------------------------------|
| `session-start` | La sesión comienza | `{{sessionId}}`, `{{projectName}}`, `{{projectPath}}` |
| `stop` | La respuesta de Claude se completa | `{{sessionId}}`, `{{projectName}}` |
| `keyword-detector` | Cada envío de prompt | `{{prompt}}`, `{{sessionId}}` |
| `ask-user-question` | Claude solicita entrada del usuario | `{{question}}`, `{{sessionId}}` |
| `pre-tool-use` | Antes de la invocación de herramienta (alta frecuencia) | `{{toolName}}`, `{{sessionId}}` |
| `post-tool-use` | Después de la invocación de herramienta (alta frecuencia) | `{{toolName}}`, `{{sessionId}}` |

**Variables de entorno del canal de respuesta:**

| Variable | Descripción |
|----------|-------------|
| `OPENCLAW_REPLY_CHANNEL` | Canal de respuesta (ej. `discord`) |
| `OPENCLAW_REPLY_TARGET` | ID del canal |
| `OPENCLAW_REPLY_THREAD` | ID del hilo |

Consulta `scripts/openclaw-gateway-demo.mjs` para un gateway de referencia que retransmite payloads de OpenClaw a Discord a través de ClawdBot.

---

## Documentación

- **[Referencia Completa](docs/REFERENCE.md)** - Documentación completa de características
- **[Referencia CLI](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#cli-reference)** - Todos los comandos, flags y herramientas de `omc`
- **[Guía de Notificaciones](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#notifications)** - Configuración de Discord, Telegram, Slack y webhooks
- **[Flujos de Trabajo Recomendados](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#workflows)** - Cadenas de habilidades probadas para tareas comunes
- **[Notas de Versión](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#release-notes)** - Novedades en cada versión
- **[Sitio Web](https://yeachan-heo.github.io/oh-my-claudecode-website)** - Guías interactivas y ejemplos
- **[Guía de Migración](docs/MIGRATION.md)** - Actualización desde v2.x
- **[Arquitectura](docs/ARCHITECTURE.md)** - Cómo funciona internamente
- **[Monitoreo de Rendimiento](docs/PERFORMANCE-MONITORING.md)** - Seguimiento de agentes, depuración y optimización

---

## Requisitos

- CLI de [Claude Code](https://docs.anthropic.com/claude-code)
- Suscripción Claude Max/Pro O clave API de Anthropic

### Opcional: Orquestación Multi-IA

OMC puede opcionalmente orquestar proveedores de IA externos para validación cruzada y consistencia de diseño. **No son necesarios** — OMC funciona completamente sin ellos.

| Proveedor | Instalación | Qué habilita |
|-----------|-------------|--------------|
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | `npm install -g @google/gemini-cli` | Revisión de diseño, consistencia UI (contexto de 1M tokens) |
| [Codex CLI](https://github.com/openai/codex) | `npm install -g @openai/codex` | Validación de arquitectura, verificación cruzada de código |

**Costo:** 3 planes Pro (Claude + Gemini + ChatGPT) cubren todo por ~$60/mes.

---

## Licencia

MIT

---

<div align="center">

**Inspirado por:** [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) • [claude-hud](https://github.com/ryanjoachim/claude-hud) • [Superpowers](https://github.com/obra/superpowers) • [everything-claude-code](https://github.com/affaan-m/everything-claude-code) • [Ouroboros](https://github.com/Q00/ouroboros)

**Curva de aprendizaje cero. Poder máximo.**

</div>

## Historial de Estrellas

[![Star History Chart](https://api.star-history.com/svg?repos=Yeachan-Heo/oh-my-claudecode&type=date&legend=top-left)](https://www.star-history.com/#Yeachan-Heo/oh-my-claudecode&type=date&legend=top-left)

## 💖 Apoya Este Proyecto

Si Oh-My-ClaudeCode ayuda a tu flujo de trabajo, considera patrocinar:

[![Sponsor on GitHub](https://img.shields.io/badge/Sponsor-❤️-red?style=for-the-badge&logo=github)](https://github.com/sponsors/Yeachan-Heo)

### ¿Por qué patrocinar?

- Mantener el desarrollo activo
- Soporte prioritario para patrocinadores
- Influir en la hoja de ruta y características
- Ayudar a mantener el software gratuito y de código abierto

### Otras formas de ayudar

- ⭐ Dale una estrella al repositorio
- 🐛 Reporta errores
- 💡 Sugiere características
- 📝 Contribuye código


================================================
FILE: README.fr.md
================================================
[English](README.md) | [한국어](README.ko.md) | [中文](README.zh.md) | [日本語](README.ja.md) | [Español](README.es.md) | [Tiếng Việt](README.vi.md) | [Português](README.pt.md) | [Русский](README.ru.md) | [Türkçe](README.tr.md) | [Deutsch](README.de.md) | Français | [Italiano](README.it.md)

# oh-my-claudecode

[![npm version](https://img.shields.io/npm/v/oh-my-claude-sisyphus?color=cb3837)](https://www.npmjs.com/package/oh-my-claude-sisyphus)
[![npm downloads](https://img.shields.io/npm/dm/oh-my-claude-sisyphus?color=blue)](https://www.npmjs.com/package/oh-my-claude-sisyphus)
[![GitHub stars](https://img.shields.io/github/stars/Yeachan-Heo/oh-my-claudecode?style=flat&color=yellow)](https://github.com/Yeachan-Heo/oh-my-claudecode/stargazers)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
[![Sponsor](https://img.shields.io/badge/Sponsor-❤️-red?style=flat&logo=github)](https://github.com/sponsors/Yeachan-Heo)
[![Discord](https://img.shields.io/discord/1452487457085063218?color=5865F2&logo=discord&logoColor=white&label=Discord)](https://discord.gg/PUwSMR9XNk)

**Orchestration multi-agents pour Claude Code. Aucune courbe d'apprentissage.**

_N'apprenez pas Claude Code. Utilisez simplement OMC._

[Démarrer](#démarrage-rapide) • [Documentation](https://yeachan-heo.github.io/oh-my-claudecode-website) • [Guide de migration](docs/MIGRATION.md)

---

## Démarrage rapide

**Étape 1 : Installation**

```bash
/plugin marketplace add https://github.com/Yeachan-Heo/oh-my-claudecode
/plugin install oh-my-claudecode
```

**Étape 2 : Configuration**

```bash
/oh-my-claudecode:omc-setup
```

**Étape 3 : Construisez quelque chose**

```
autopilot: build a REST API for managing tasks
```

C'est tout. Le reste est automatique.

## Team Mode (Recommandé)

À partir de la **v4.1.7**, **Team** est la surface d'orchestration canonique dans OMC. Les anciens points d'entrée comme **swarm** et **ultrapilot** sont toujours supportés, mais **redirigent désormais vers Team en coulisses**.

```bash
/oh-my-claudecode:team 3:executor "fix all TypeScript errors"
```

Team fonctionne comme un pipeline par étapes :

`team-plan → team-prd → team-exec → team-verify → team-fix (loop)`

Activez les teams natifs de Claude Code dans `~/.claude/settings.json` :

```json
{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}
```

> Si les teams sont désactivés, OMC vous avertira et basculera vers une exécution sans Team lorsque possible.

> **Note : Nom du package** — Le projet utilise la marque **oh-my-claudecode** (repo, plugin, commandes), mais le package npm est publié sous le nom [`oh-my-claude-sisyphus`](https://www.npmjs.com/package/oh-my-claude-sisyphus). Si vous installez les outils CLI via npm/bun, utilisez `npm install -g oh-my-claude-sisyphus`.

### Mise à jour

```bash
# 1. Mettre à jour le plugin
/plugin install oh-my-claudecode

# 2. Relancer le setup pour actualiser la configuration
/oh-my-claudecode:omc-setup
```

Si vous rencontrez des problèmes après la mise à jour, videz l'ancien cache du plugin :

```bash
/oh-my-claudecode:omc-doctor
```

<h1 align="center">Votre Claude vient de recevoir des super-pouvoirs.</h1>

<p align="center">
  <img src="assets/omc-character.jpg" alt="oh-my-claudecode" width="400" />
</p>

---

## Pourquoi oh-my-claudecode ?

- **Aucune configuration requise** — Fonctionne directement avec des valeurs par défaut intelligentes
- **Orchestration team-first** — Team est la surface multi-agents canonique (swarm/ultrapilot sont des façades de compatibilité)
- **Interface en langage naturel** — Aucune commande à mémoriser, décrivez simplement ce que vous voulez
- **Parallélisation automatique** — Les tâches complexes sont distribuées entre des agents spécialisés
- **Exécution persistante** — N'abandonne pas tant que le travail n'est pas vérifié et terminé
- **Optimisation des coûts** — Le routage intelligent des modèles économise 30 à 50 % sur les tokens
- **Apprentissage par l'expérience** — Extrait et réutilise automatiquement les patterns de résolution de problèmes
- **Visibilité en temps réel** — La HUD statusline montre ce qui se passe en coulisses

---

## Fonctionnalités

### Modes d'orchestration

Plusieurs stratégies pour différents cas d'utilisation — de l'orchestration Team au refactoring économe en tokens. [En savoir plus →](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#execution-modes)

| Mode                            | Description                                                                                 | Utilisation                                                                      |
| ------------------------------- | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| **Team (recommandé)**           | Pipeline canonique par étapes (`team-plan → team-prd → team-exec → team-verify → team-fix`) | Agents coordonnés travaillant sur une liste de tâches partagée                   |
| **Autopilot**                   | Exécution autonome (un seul agent leader)                                                   | Développement de fonctionnalités de bout en bout avec un minimum de cérémonie    |
| **Ultrawork**                   | Parallélisme maximal (sans Team)                                                            | Corrections/refactorings parallèles en rafale quand Team n'est pas nécessaire    |
| **Ralph**                       | Mode persistant avec boucles verify/fix                                                     | Tâches devant être entièrement complétées (pas de résultats partiels silencieux) |
| **Ecomode**                     | Routage économe en tokens                                                                   | Itération soucieuse du budget                                                    |
| **Pipeline**                    | Traitement séquentiel par étapes                                                            | Transformations multi-étapes avec un ordre strict                                |
| **Swarm / Ultrapilot (ancien)** | Façades de compatibilité redirigeant vers **Team**                                          | Workflows existants et ancienne documentation                                    |

### Orchestration intelligente

- **32 agents spécialisés** pour l'architecture, la recherche, le design, les tests, la data science
- **Routage intelligent des modèles** — Haiku pour les tâches simples, Opus pour le raisonnement complexe
- **Délégation automatique** — Le bon agent pour le bon travail, à chaque fois

### Expérience développeur

- **Mots-clés magiques** — `ralph`, `ulw`, `eco`, `plan` pour un contrôle explicite
- **HUD statusline** — Métriques d'orchestration en temps réel dans votre barre d'état
- **Apprentissage de compétences** — Extraction de patterns réutilisables depuis vos sessions
- **Analytique et suivi des coûts** — Compréhension de l'utilisation des tokens sur toutes les sessions

### Compétences Personnalisées

Apprenez une fois, réutilisez à jamais. OMC extrait les connaissances durement acquises lors du débogage en fichiers de compétences portables qui s'injectent automatiquement quand pertinent.

| | Portée Projet | Portée Utilisateur |
|---|---|---|
| **Chemin** | `.omc/skills/` | `~/.omc/skills/` |
| **Partagé avec** | Équipe (versionné) | Tous vos projets |
| **Priorité** | Haute (écrase la portée utilisateur) | Basse (repli) |

```yaml
# .omc/skills/fix-proxy-crash.md
---
name: Fix Proxy Crash
description: aiohttp proxy crashes on ClientDisconnectedError
triggers: ["proxy", "aiohttp", "disconnected"]
source: extracted
---
Enveloppez le handler à server.py:42 dans try/except ClientDisconnectedError...
```

**Gestion des compétences :** `/skill list | add | remove | edit | search`
**Auto-apprentissage :** `/learner` extrait des patterns réutilisables avec des critères de qualité stricts
**Auto-injection :** Les compétences correspondantes se chargent automatiquement dans le contexte — aucun rappel manuel nécessaire

[Liste complète des fonctionnalités →](docs/REFERENCE.md)

---

## Mots-clés magiques

Raccourcis optionnels pour les utilisateurs avancés. Le langage naturel fonctionne très bien sans eux.

| Mot-clé      | Effet                               | Exemple                                                         |
| ------------ | ----------------------------------- | --------------------------------------------------------------- |
| `team`       | Orchestration Team canonique        | `/oh-my-claudecode:team 3:executor "fix all TypeScript errors"` |
| `autopilot`  | Exécution entièrement autonome      | `autopilot: build a todo app`                                   |
| `ralph`      | Mode persistant                     | `ralph: refactor auth`                                          |
| `ulw`        | Parallélisme maximal                | `ulw fix all errors`                                            |
| `eco`        | Exécution économe en tokens         | `eco: migrate database`                                         |
| `plan`       | Entretien de planification          | `plan the API`                                                  |
| `ralplan`    | Consensus de planification itératif | `ralplan this feature`                                          |
| `swarm`      | Ancien mot-clé (redirige vers Team) | `swarm 5 agents: fix lint errors`                               |
| `ultrapilot` | Ancien mot-clé (redirige vers Team) | `ultrapilot: build a fullstack app`                             |

**Notes :**

- **ralph inclut ultrawork** : lorsque vous activez le mode ralph, il inclut automatiquement l'exécution parallèle d'ultrawork.
- La syntaxe `swarm N agents` est toujours reconnue pour l'extraction du nombre d'agents, mais le runtime est basé sur Team dans v4.1.7+.

## Utilitaires

### Attente de rate limit

Reprise automatique des sessions Claude Code lorsque les rate limits sont réinitialisés.

```bash
omc wait          # Vérifier le statut, obtenir des conseils
omc wait --start  # Activer le daemon de reprise automatique
omc wait --stop   # Désactiver le daemon
```

**Prérequis :** tmux (pour la détection de session)

### Tags de notification (Telegram/Discord)

Vous pouvez configurer qui est mentionné lorsque les callbacks d'arrêt envoient des résumés de session.

```bash
# Définir/remplacer la liste des tags
omc config-stop-callback telegram --enable --token <bot_token> --chat <chat_id> --tag-list "@alice,bob"
omc config-stop-callback discord --enable --webhook <url> --tag-list "@here,123456789012345678,role:987654321098765432"

# Mises à jour incrémentales
omc config-stop-callback telegram --add-tag charlie
omc config-stop-callback discord --remove-tag @here
omc config-stop-callback discord --clear-tags
```

Comportement des tags :

- Telegram : `alice` est normalisé en `@alice`
- Discord : supporte `@here`, `@everyone`, les IDs utilisateur numériques et `role:<id>`
- Les callbacks de type `file` ignorent les options de tags

### Intégration OpenClaw

Transmettez les événements de session Claude Code vers une passerelle [OpenClaw](https://openclaw.ai/) pour activer des réponses automatisées et des workflows via votre agent OpenClaw.

**Configuration rapide (recommandé) :**

```bash
/oh-my-claudecode:configure-notifications
# → Tapez "openclaw" quand demandé → choisir "OpenClaw Gateway"
```

**Configuration manuelle :** créez `~/.claude/omc_config.openclaw.json` :

```json
{
  "enabled": true,
  "gateways": {
    "my-gateway": {
      "url": "https://your-gateway.example.com/wake",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" },
      "method": "POST",
      "timeout": 10000
    }
  },
  "hooks": {
    "session-start": { "gateway": "my-gateway", "instruction": "Session started for {{projectName}}", "enabled": true },
    "stop":          { "gateway": "my-gateway", "instruction": "Session stopping for {{projectName}}", "enabled": true }
  }
}
```

**Variables d'environnement :**

| Variable | Description |
|----------|-------------|
| `OMC_OPENCLAW=1` | Activer OpenClaw |
| `OMC_OPENCLAW_DEBUG=1` | Activer la journalisation de débogage |
| `OMC_OPENCLAW_CONFIG=/path/to/config.json` | Chemin alternatif du fichier de configuration |

**Événements hook pris en charge (6 actifs dans bridge.ts) :**

| Événement | Déclencheur | Variables de template principales |
|-----------|------------|----------------------------------|
| `session-start` | La session démarre | `{{sessionId}}`, `{{projectName}}`, `{{projectPath}}` |
| `stop` | La réponse de Claude est terminée | `{{sessionId}}`, `{{projectName}}` |
| `keyword-detector` | À chaque soumission de prompt | `{{prompt}}`, `{{sessionId}}` |
| `ask-user-question` | Claude demande une saisie utilisateur | `{{question}}`, `{{sessionId}}` |
| `pre-tool-use` | Avant l'invocation d'outil (fréquence élevée) | `{{toolName}}`, `{{sessionId}}` |
| `post-tool-use` | Après l'invocation d'outil (fréquence élevée) | `{{toolName}}`, `{{sessionId}}` |

**Variables d'environnement du canal de réponse :**

| Variable | Description |
|----------|-------------|
| `OPENCLAW_REPLY_CHANNEL` | Canal de réponse (ex. `discord`) |
| `OPENCLAW_REPLY_TARGET` | ID du canal |
| `OPENCLAW_REPLY_THREAD` | ID du thread |

Voir `scripts/openclaw-gateway-demo.mjs` pour un gateway de référence qui relaie les payloads OpenClaw vers Discord via ClawdBot.

---

## Documentation

- **[Référence complète](docs/REFERENCE.md)** — Documentation complète des fonctionnalités
- **[Monitoring de performance](docs/PERFORMANCE-MONITORING.md)** — Suivi des agents, débogage et optimisation
- **[Site web](https://yeachan-heo.github.io/oh-my-claudecode-website)** — Guides interactifs et exemples
- **[Guide de migration](docs/MIGRATION.md)** — Mise à jour depuis v2.x
- **[Architecture](docs/ARCHITECTURE.md)** — Comment ça fonctionne en coulisses

---

## Prérequis

- [Claude Code](https://docs.anthropic.com/claude-code) CLI
- Abonnement Claude Max/Pro OU clé API Anthropic

### Optionnel : Orchestration Multi-AI

OMC peut optionnellement orchestrer des fournisseurs d'IA externes pour la validation croisée et la cohérence du design. Ils ne sont **pas requis** — OMC fonctionne pleinement sans eux.

| Fournisseur                                               | Installation                        | Ce que ça apporte                                              |
| --------------------------------------------------------- | ----------------------------------- | -------------------------------------------------------------- |
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | `npm install -g @google/gemini-cli` | Revue de design, cohérence UI (contexte de 1M tokens)          |
| [Codex CLI](https://github.com/openai/codex)              | `npm install -g @openai/codex`      | Validation d'architecture, vérification croisée de code review |

**Coût :** 3 plans Pro (Claude + Gemini + ChatGPT) couvrent tout pour environ 60 $/mois.

---

## Licence

MIT

---

<div align="center">

**Inspiré par :** [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) • [claude-hud](https://github.com/ryanjoachim/claude-hud) • [Superpowers](https://github.com/NexTechFusion/Superpowers) • [everything-claude-code](https://github.com/affaan-m/everything-claude-code)

**Aucune courbe d'apprentissage. Puissance maximale.**

</div>

## Star History

[![Star History Chart](https://api.star-history.com/svg?repos=Yeachan-Heo/oh-my-claudecode&type=date&legend=top-left)](https://www.star-history.com/#Yeachan-Heo/oh-my-claudecode&type=date&legend=top-left)

## 💖 Soutenir ce projet

Si Oh-My-ClaudeCode améliore votre workflow, envisagez de devenir sponsor :

[![Sponsor on GitHub](https://img.shields.io/badge/Sponsor-❤️-red?style=for-the-badge&logo=github)](https://github.com/sponsors/Yeachan-Heo)

### Pourquoi sponsoriser ?

- Maintenir le développement actif
- Support prioritaire pour les sponsors
- Influencer la roadmap et les fonctionnalités
- Aider à maintenir le logiciel libre et open source

### Autres façons d'aider

- ⭐ Mettre une étoile au dépôt
- 🐛 Signaler des bugs
- 💡 Suggérer des fonctionnalités
- 📝 Contribuer au code


================================================
FILE: README.it.md
================================================
[English](README.md) | [한국어](README.ko.md) | [中文](README.zh.md) | [日本語](README.ja.md) | [Español](README.es.md) | [Tiếng Việt](README.vi.md) | [Português](README.pt.md) | [Русский](README.ru.md) | [Türkçe](README.tr.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | Italiano

# oh-my-claudecode

[![npm version](https://img.shields.io/npm/v/oh-my-claude-sisyphus?color=cb3837)](https://www.npmjs.com/package/oh-my-claude-sisyphus)
[![npm downloads](https://img.shields.io/npm/dm/oh-my-claude-sisyphus?color=blue)](https://www.npmjs.com/package/oh-my-claude-sisyphus)
[![GitHub stars](https://img.shields.io/github/stars/Yeachan-Heo/oh-my-claudecode?style=flat&color=yellow)](https://github.com/Yeachan-Heo/oh-my-claudecode/stargazers)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
[![Sponsor](https://img.shields.io/badge/Sponsor-❤️-red?style=flat&logo=github)](https://github.com/sponsors/Yeachan-Heo)
[![Discord](https://img.shields.io/discord/1452487457085063218?color=5865F2&logo=discord&logoColor=white&label=Discord)](https://discord.gg/PUwSMR9XNk)

**Orchestrazione multi-agente per Claude Code. Zero curva di apprendimento.**

_Non imparare Claude Code. Usa semplicemente OMC._

[Inizia](#avvio-rapido) • [Documentazione](https://yeachan-heo.github.io/oh-my-claudecode-website) • [Guida alla migrazione](docs/MIGRATION.md)

---

## Avvio rapido

**Passo 1: Installazione**

```bash
/plugin marketplace add https://github.com/Yeachan-Heo/oh-my-claudecode
/plugin install oh-my-claudecode
```

**Passo 2: Configurazione**

```bash
/oh-my-claudecode:omc-setup
```

**Passo 3: Costruisci qualcosa**

```
autopilot: build a REST API for managing tasks
```

Tutto qui. Il resto è automatico.

## Team Mode (Consigliato)

A partire dalla **v4.1.7**, **Team** è la superficie di orchestrazione canonica in OMC. I punti di ingresso legacy come **swarm** e **ultrapilot** sono ancora supportati, ma ora **vengono instradati a Team dietro le quinte**.

```bash
/oh-my-claudecode:team 3:executor "fix all TypeScript errors"
```

Team funziona come una pipeline a stadi:

`team-plan → team-prd → team-exec → team-verify → team-fix (loop)`

Abilita i team nativi di Claude Code in `~/.claude/settings.json`:

```json
{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}
```

> Se i team sono disabilitati, OMC ti avviserà e passerà all'esecuzione senza Team quando possibile.

> **Nota: Nome del pacchetto** — Il progetto utilizza il brand **oh-my-claudecode** (repo, plugin, comandi), ma il pacchetto npm è pubblicato come [`oh-my-claude-sisyphus`](https://www.npmjs.com/package/oh-my-claude-sisyphus). Se installi gli strumenti CLI tramite npm/bun, usa `npm install -g oh-my-claude-sisyphus`.

### Aggiornamento

```bash
# 1. Aggiorna il plugin
/plugin install oh-my-claudecode

# 2. Riesegui il setup per aggiornare la configurazione
/oh-my-claudecode:omc-setup
```

Se riscontri problemi dopo l'aggiornamento, svuota la vecchia cache del plugin:

```bash
/oh-my-claudecode:omc-doctor
```

<h1 align="center">Il tuo Claude ha appena ricevuto dei superpoteri.</h1>

<p align="center">
  <img src="assets/omc-character.jpg" alt="oh-my-claudecode" width="400" />
</p>

---

## Perché oh-my-claudecode?

- **Nessuna configurazione richiesta** — Funziona immediatamente con impostazioni predefinite intelligenti
- **Orchestrazione team-first** — Team è la superficie multi-agente canonica (swarm/ultrapilot sono facciate di compatibilità)
- **Interfaccia in linguaggio naturale** — Nessun comando da memorizzare, descrivi semplicemente ciò che vuoi
- **Parallelizzazione automatica** — Le attività complesse vengono distribuite tra agenti specializzati
- **Esecuzione persistente** — Non si arrende finché il lavoro non è verificato e completato
- **Ottimizzazione dei costi** — Il routing intelligente dei modelli risparmia dal 30 al 50% sui token
- **Apprendimento dall'esperienza** — Estrae e riutilizza automaticamente i pattern di risoluzione dei problemi
- **Visibilità in tempo reale** — La HUD statusline mostra cosa succede dietro le quinte

---

## Funzionalità

### Modalità di orchestrazione

Strategie multiple per diversi casi d'uso — dall'orchestrazione basata su Team al refactoring efficiente in termini di token. [Scopri di più →](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#execution-modes)

| Modalità                        | Descrizione                                                                             | Utilizzo                                                                                 |
| ------------------------------- | --------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| **Team (consigliato)**          | Pipeline canonica a stadi (`team-plan → team-prd → team-exec → team-verify → team-fix`) | Agenti coordinati che lavorano su una lista di attività condivisa                        |
| **Autopilot**                   | Esecuzione autonoma (singolo agente leader)                                             | Sviluppo di funzionalità end-to-end con cerimonia minima                                 |
| **Ultrawork**                   | Parallelismo massimo (senza Team)                                                       | Correzioni/refactoring paralleli in burst quando Team non è necessario                   |
| **Ralph**                       | Modalità persistente con cicli verify/fix                                               | Attività che devono essere completate interamente (nessun risultato parziale silenzioso) |
| **Ecomode**                     | Routing efficiente in termini di token                                                  | Iterazione attenta al budget                                                             |
| **Pipeline**                    | Elaborazione sequenziale a stadi                                                        | Trasformazioni multi-step con ordine rigoroso                                            |
| **Swarm / Ultrapilot (legacy)** | Facciate di compatibilità che instradano a **Team**                                     | Workflow esistenti e documentazione precedente                                           |

### Orchestrazione intelligente

- **32 agenti specializzati** per architettura, ricerca, design, test, data science
- **Routing intelligente dei modelli** — Haiku per attività semplici, Opus per ragionamento complesso
- **Delega automatica** — L'agente giusto per il lavoro giusto, ogni volta

### Esperienza sviluppatore

- **Parole chiave magiche** — `ralph`, `ulw`, `eco`, `plan` per un controllo esplicito
- **HUD statusline** — Metriche di orchestrazione in tempo reale nella barra di stato
- **Apprendimento delle competenze** — Estrazione di pattern riutilizzabili dalle sessioni
- **Analisi e tracciamento dei costi** — Comprensione dell'utilizzo dei token su tutte le sessioni

### Competenze Personalizzate

Impara una volta, riutilizza per sempre. OMC estrae le conoscenze di debug duramente acquisite in file di competenze portabili che si iniettano automaticamente quando pertinenti.

| | Ambito Progetto | Ambito Utente |
|---|---|---|
| **Percorso** | `.omc/skills/` | `~/.omc/skills/` |
| **Condiviso con** | Team (versionato) | Tutti i tuoi progetti |
| **Priorità** | Più alta (sovrascrive l'ambito utente) | Più bassa (fallback) |

```yaml
# .omc/skills/fix-proxy-crash.md
---
name: Fix Proxy Crash
description: aiohttp proxy crashes on ClientDisconnectedError
triggers: ["proxy", "aiohttp", "disconnected"]
source: extracted
---
Avvolgi l'handler in server.py:42 con try/except ClientDisconnectedError...
```

**Gestione competenze:** `/skill list | add | remove | edit | search`
**Auto-apprendimento:** `/learner` estrae pattern riutilizzabili con criteri di qualità rigorosi
**Auto-iniezione:** Le competenze corrispondenti si caricano automaticamente nel contesto — nessuna chiamata manuale necessaria

[Lista completa delle funzionalità →](docs/REFERENCE.md)

---

## Parole chiave magiche

Scorciatoie opzionali per utenti avanzati. Il linguaggio naturale funziona bene anche senza di esse.

| Parola chiave | Effetto                                   | Esempio                                                         |
| ------------- | ----------------------------------------- | --------------------------------------------------------------- |
| `team`        | Orchestrazione Team canonica              | `/oh-my-claudecode:team 3:executor "fix all TypeScript errors"` |
| `autopilot`   | Esecuzione completamente autonoma         | `autopilot: build a todo app`                                   |
| `ralph`       | Modalità persistente                      | `ralph: refactor auth`                                          |
| `ulw`         | Parallelismo massimo                      | `ulw fix all errors`                                            |
| `eco`         | Esecuzione efficiente in termini di token | `eco: migrate database`                                         |
| `plan`        | Intervista di pianificazione              | `plan the API`                                                  |
| `ralplan`     | Consenso di pianificazione iterativo      | `ralplan this feature`                                          |
| `swarm`       | Parola chiave legacy (instrada a Team)    | `swarm 5 agents: fix lint errors`                               |
| `ultrapilot`  | Parola chiave legacy (instrada a Team)    | `ultrapilot: build a fullstack app`                             |

**Note:**

- **ralph include ultrawork**: quando attivi la modalità ralph, include automaticamente l'esecuzione parallela di ultrawork.
- La sintassi `swarm N agents` è ancora riconosciuta per l'estrazione del numero di agenti, ma il runtime è basato su Team nella v4.1.7+.

## Utilità

### Attesa rate limit

Riprendi automaticamente le sessioni Claude Code quando i rate limit vengono ripristinati.

```bash
omc wait          # Controlla lo stato, ottieni indicazioni
omc wait --start  # Abilita il daemon di ripristino automatico
omc wait --stop   # Disabilita il daemon
```

**Requisiti:** tmux (per il rilevamento della sessione)

### Tag di notifica (Telegram/Discord)

Puoi configurare chi viene taggato quando i callback di stop inviano i riepiloghi della sessione.

```bash
# Imposta/sostituisci la lista dei tag
omc config-stop-callback telegram --enable --token <bot_token> --chat <chat_id> --tag-list "@alice,bob"
omc config-stop-callback discord --enable --webhook <url> --tag-list "@here,123456789012345678,role:987654321098765432"

# Aggiornamenti incrementali
omc config-stop-callback telegram --add-tag charlie
omc config-stop-callback discord --remove-tag @here
omc config-stop-callback discord --clear-tags
```

Comportamento dei tag:

- Telegram: `alice` viene normalizzato in `@alice`
- Discord: supporta `@here`, `@everyone`, ID utente numerici e `role:<id>`
- I callback di tipo `file` ignorano le opzioni dei tag

### Integrazione OpenClaw

Inoltra gli eventi di sessione di Claude Code a un gateway [OpenClaw](https://openclaw.ai/) per abilitare risposte automatizzate e workflow tramite il tuo agente OpenClaw.

**Configurazione rapida (consigliato):**

```bash
/oh-my-claudecode:configure-notifications
# → Digita "openclaw" quando richiesto → scegli "OpenClaw Gateway"
```

**Configurazione manuale:** crea `~/.claude/omc_config.openclaw.json`:

```json
{
  "enabled": true,
  "gateways": {
    "my-gateway": {
      "url": "https://your-gateway.example.com/wake",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" },
      "method": "POST",
      "timeout": 10000
    }
  },
  "hooks": {
    "session-start": { "gateway": "my-gateway", "instruction": "Session started for {{projectName}}", "enabled": true },
    "stop":          { "gateway": "my-gateway", "instruction": "Session stopping for {{projectName}}", "enabled": true }
  }
}
```

**Variabili d'ambiente:**

| Variabile | Descrizione |
|-----------|-------------|
| `OMC_OPENCLAW=1` | Abilita OpenClaw |
| `OMC_OPENCLAW_DEBUG=1` | Abilita il logging di debug |
| `OMC_OPENCLAW_CONFIG=/path/to/config.json` | Percorso alternativo del file di configurazione |

**Eventi hook supportati (6 attivi in bridge.ts):**

| Evento | Trigger | Variabili template principali |
|--------|---------|-------------------------------|
| `session-start` | La sessione inizia | `{{sessionId}}`, `{{projectName}}`, `{{projectPath}}` |
| `stop` | La risposta di Claude è completata | `{{sessionId}}`, `{{projectName}}` |
| `keyword-detector` | A ogni invio di prompt | `{{prompt}}`, `{{sessionId}}` |
| `ask-user-question` | Claude richiede input dall'utente | `{{question}}`, `{{sessionId}}` |
| `pre-tool-use` | Prima dell'invocazione dello strumento (alta frequenza) | `{{toolName}}`, `{{sessionId}}` |
| `post-tool-use` | Dopo l'invocazione dello strumento (alta frequenza) | `{{toolName}}`, `{{sessionId}}` |

**Variabili d'ambiente del canale di risposta:**

| Variabile | Descrizione |
|-----------|-------------|
| `OPENCLAW_REPLY_CHANNEL` | Canale di risposta (es. `discord`) |
| `OPENCLAW_REPLY_TARGET` | ID del canale |
| `OPENCLAW_REPLY_THREAD` | ID del thread |

Vedi `scripts/openclaw-gateway-demo.mjs` per un gateway di riferimento che inoltra i payload OpenClaw a Discord tramite ClawdBot.

---

## Documentazione

- **[Riferimento completo](docs/REFERENCE.md)** — Documentazione completa delle funzionalità
- **[Monitoraggio delle prestazioni](docs/PERFORMANCE-MONITORING.md)** — Tracciamento degli agenti, debugging e ottimizzazione
- **[Sito web](https://yeachan-heo.github.io/oh-my-claudecode-website)** — Guide interattive ed esempi
- **[Guida alla migrazione](docs/MIGRATION.md)** — Aggiornamento dalla v2.x
- **[Architettura](docs/ARCHITECTURE.md)** — Come funziona dietro le quinte

---

## Requisiti

- [Claude Code](https://docs.anthropic.com/claude-code) CLI
- Abbonamento Claude Max/Pro OPPURE chiave API Anthropic

### Opzionale: Orchestrazione Multi-AI

OMC può opzionalmente orchestrare provider AI esterni per la validazione incrociata e la coerenza del design. Non sono **richiesti** — OMC funziona completamente senza di essi.

| Provider                                                  | Installazione                       | Cosa abilita                                                         |
| --------------------------------------------------------- | ----------------------------------- | -------------------------------------------------------------------- |
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | `npm install -g @google/gemini-cli` | Revisione del design, coerenza UI (contesto di 1M token)             |
| [Codex CLI](https://github.com/openai/codex)              | `npm install -g @openai/codex`      | Validazione dell'architettura, verifica incrociata della code review |

**Costo:** 3 piani Pro (Claude + Gemini + ChatGPT) coprono tutto per circa $60/mese.

---

## Licenza

MIT

---

<div align="center">

**Ispirato da:** [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) • [claude-hud](https://github.com/ryanjoachim/claude-hud) • [Superpowers](https://github.com/NexTechFusion/Superpowers) • [everything-claude-code](https://github.com/affaan-m/everything-claude-code)

**Zero curva di apprendimento. Potenza massima.**

</div>

## Star History

[![Star History Chart](https://api.star-history.com/svg?repos=Yeachan-Heo/oh-my-claudecode&type=date&legend=top-left)](https://www.star-history.com/#Yeachan-Heo/oh-my-claudecode&type=date&legend=top-left)

## 💖 Supporta questo progetto

Se Oh-My-ClaudeCode migliora il tuo workflow, considera di diventare sponsor:

[![Sponsor on GitHub](https://img.shields.io/badge/Sponsor-❤️-red?style=for-the-badge&logo=github)](https://github.com/sponsors/Yeachan-Heo)

### Perché sponsorizzare?

- Mantenere lo sviluppo attivo
- Supporto prioritario per gli sponsor
- Influenzare la roadmap e le funzionalità
- Contribuire a mantenere il software libero e open source

### Altri modi per aiutare

- ⭐ Metti una stella al repository
- 🐛 Segnala bug
- 💡 Suggerisci funzionalità
- 📝 Contribuisci al codice


================================================
FILE: README.ja.md
================================================
[English](README.md) | [한국어](README.ko.md) | [中文](README.zh.md) | 日本語 | [Español](README.es.md) | [Tiếng Việt](README.vi.md) | [Português](README.pt.md)

# oh-my-claudecode

[![npm version](https://img.shields.io/npm/v/oh-my-claude-sisyphus?color=cb3837)](https://www.npmjs.com/package/oh-my-claude-sisyphus)
[![npm downloads](https://img.shields.io/npm/dm/oh-my-claude-sisyphus?color=blue)](https://www.npmjs.com/package/oh-my-claude-sisyphus)
[![GitHub stars](https://img.shields.io/github/stars/Yeachan-Heo/oh-my-claudecode?style=flat&color=yellow)](https://github.com/Yeachan-Heo/oh-my-claudecode/stargazers)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
[![Sponsor](https://img.shields.io/badge/Sponsor-❤️-red?style=flat&logo=github)](https://github.com/sponsors/Yeachan-Heo)
[![Discord](https://img.shields.io/discord/1452487457085063218?color=5865F2&logo=discord&logoColor=white&label=Discord)](https://discord.gg/PUwSMR9XNk)

> **Codex ユーザーの方へ:** [oh-my-codex](https://github.com/Yeachan-Heo/oh-my-codex) をチェックしてください — OpenAI Codex CLI 向けの同じオーケストレーション体験を提供します。

**Claude Code のためのマルチエージェント・オーケストレーション。学習コストゼロ。**

*Claude Code を学ぶ必要はありません。OMC を使うだけ。*

[はじめる](#クイックスタート) • [ドキュメント](https://yeachan-heo.github.io/oh-my-claudecode-website) • [CLI リファレンス](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#cli-reference) • [ワークフロー](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#workflows) • [移行ガイド](docs/MIGRATION.md)

---

## クイックスタート

**ステップ 1: インストール**
```bash
/plugin marketplace add https://github.com/Yeachan-Heo/oh-my-claudecode
/plugin install oh-my-claudecode
```

**ステップ 2: セットアップ**
```bash
/omc-setup
```

**ステップ 3: 何か作ってみる**
```
autopilot: build a REST API for managing tasks
```

以上です。あとは自動で進みます。

### 何から始めればいいかわからない?

要件が不明確だったり、漠然としたアイデアしかなかったり、設計を細かくコントロールしたい場合:

```
/deep-interview "I want to build a task management app"
```

ディープインタビューはソクラテス式質問法を使い、コードを書く前に思考を明確にします。隠れた前提を明らかにし、加重次元で明確さを測定することで、実行開始前に何を構築すべきかを正確に把握できます。

## Team モード(推奨)

**v4.1.7** から **Team** が OMC の標準オーケストレーション方式です。**swarm** や **ultrapilot** などのレガシーエントリポイントは引き続きサポートされていますが、**内部的に Team にルーティング**されます。

```bash
/team 3:executor "fix all TypeScript errors"
```

Team はステージ型パイプラインで実行されます:

`team-plan → team-prd → team-exec → team-verify → team-fix (loop)`

`~/.claude/settings.json` で Claude Code ネイティブチームを有効化:

```json
{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}
```

> チームが無効の場合、OMC は警告を表示し、可能な場合は Team なしの実行にフォールバックします。

### tmux CLI ワーカー — Codex & Gemini (v4.4.0+)

**v4.4.0 で Codex/Gemini MCP サーバー**(`x`、`g` プロバイダー)が**削除されます**。代わりに `/omc-teams` を使って tmux 分割ペインで実際の CLI プロセスを起動してください:

```bash
/omc-teams 2:codex   "review auth module for security issues"
/omc-teams 2:gemini  "redesign UI components for accessibility"
/omc-teams 1:claude  "implement the payment flow"
```

Codex + Gemini を一つのコマンドで使うには **`/ccg`** スキルを使います:

```bash
/ccg Review this PR — architecture (Codex) and UI components (Gemini)
```

| スキル | ワーカー | 最適用途 |
|-------|---------|----------|
| `/omc-teams N:codex` | N 個の Codex CLI ペイン | コードレビュー、セキュリティ解析、アーキテクチャ |
| `/omc-teams N:gemini` | N 個の Gemini CLI ペイン | UI/UX デザイン、ドキュメント、大規模コンテキスト |
| `/omc-teams N:claude` | N 個の Claude CLI ペイン | tmux で Claude CLI を使う汎用タスク |
| `/ccg` | Codex 1 個 + Gemini 1 個 | 並列トライモデルオーケストレーション |

ワーカーはオンデマンドで起動し、タスク完了後に終了します — アイドルリソースの無駄なし。`codex` / `gemini` CLI のインストールとアクティブな tmux セッションが必要です。

> **注意: パッケージ名について** — プロジェクトのブランド名は **oh-my-claudecode**(リポジトリ、プラグイン、コマンド)ですが、npmパッケージは [`oh-my-claude-sisyphus`](https://www.npmjs.com/package/oh-my-claude-sisyphus) として公開されています。npm/bunでCLIツールをインストールする場合は `npm install -g oh-my-claude-sisyphus` を使用してください。

### アップデート

```bash
# 1. マーケットプレイスクローンを更新
/plugin marketplace update omc

# 2. セットアップを再実行して設定を更新
/omc-setup
```

> **注意:** マーケットプレイスの自動更新が有効になっていない場合は、セットアップ実行前に `/plugin marketplace update omc` を手動で実行して最新バージョンを同期する必要があります。

更新後に問題が発生した場合は、古いプラグインキャッシュをクリアしてください:

```bash
/omc-doctor
```

<h1 align="center">あなたの Claude がステロイド級にパワーアップ。</h1>

<p align="center">
  <img src="assets/omc-character.jpg" alt="oh-my-claudecode" width="400" />
</p>

---

## なぜ oh-my-claudecode なのか?

- **設定不要** - 賢いデフォルト設定ですぐに使える
- **Team ファースト・オーケストレーション** - Team が標準マルチエージェントサーフェス(swarm/ultrapilot は互換性ファサード)
- **自然言語インターフェース** - コマンドを覚える必要なし、やりたいことを話すだけ
- **自動並列化** - 複雑なタスクを専門エージェントに自動分散
- **粘り強い実行** - 検証完了まで諦めない
- **コスト最適化** - スマートなモデルルーティングでトークンを30〜50%節約
- **経験から学習** - 問題解決パターンを自動抽出して再利用
- **リアルタイム可視化** - HUD ステータスラインで裏側の動きが見える

---

## 機能

### 実行モード
用途に応じた複数の戦略 - 完全自律ビルドからトークン効率の良いリファクタリングまで。[詳しくはこちら →](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#execution-modes)

| モード | 特徴 | 用途 |
|------|---------|------|
| **Team(推奨)** | ステージ型パイプライン | 共有タスクリストで協力する Claude エージェント |
| **omc-teams** | tmux CLI ワーカー | Codex/Gemini CLI タスク; オンデマンド起動、完了後終了 |
| **ccg** | トライモデル並列 | Codex(分析)+ Gemini(デザイン)、Claude が統合 |
| **Autopilot** | 自律実行 | 最小限のセレモニーで end-to-end 機能開発 |
| **Ultrawork** | 最大並列 | Team 不要な並列修正/リファクタリング |
| **Ralph** | 粘り強いモード | 完全に完了させるべきタスク |
| **Pipeline** | 逐次処理 | 厳密な順序が必要な多段階変換 |
| **Swarm / Ultrapilot(レガシー)** | Team へルーティング | 既存ワークフローと古いドキュメント |

### インテリジェント・オーケストレーション

- **32の専門エージェント** - アーキテクチャ、リサーチ、デザイン、テスト、データサイエンス対応
- **スマートモデルルーティング** - シンプルなタスクは Haiku、複雑な推論は Opus
- **自動委譲** - 常に適材適所

### 開発者体験

- **マジックキーワード** - `ralph`、`ulw`、`plan` で明示的制御
- **HUD ステータスライン** - ステータスバーでリアルタイムのオーケストレーション指標を表示
- **スキル学習** - セッションから再利用可能なパターンを抽出
- **分析とコスト追跡** - 全セッションのトークン使用状況を把握

### カスタムスキル

一度学んだことを永遠に再利用。OMC はデバッグで得た実践的な知識をポータブルなスキルファイルに抽出し、関連する場面で自動的に注入します。

| | プロジェクトスコープ | ユーザースコープ |
|---|---|---|
| **パス** | `.omc/skills/` | `~/.omc/skills/` |
| **共有先** | チーム(バージョン管理対象) | すべてのプロジェクトで利用可能 |
| **優先度** | 高(ユーザースコープを上書き) | 低(フォールバック) |

```yaml
# .omc/skills/fix-proxy-crash.md
---
name: Fix Proxy Crash
description: aiohttp proxy crashes on ClientDisconnectedError
triggers: ["proxy", "aiohttp", "disconnected"]
source: extracted
---
server.py:42 のハンドラーを try/except ClientDisconnectedError で囲んでください...
```

**スキル管理:** `/skill list | add | remove | edit | search`
**自動学習:** `/learner` が厳格な品質基準で再利用可能なパターンを抽出します
**自動注入:** マッチするスキルが自動的にコンテキストに読み込まれます — 手動呼び出し不要

[全機能リスト →](docs/REFERENCE.md)

---

## マジックキーワード

パワーユーザー向けのオプション・ショートカット。自然言語でも問題なく動作します。

| キーワード | 効果 | 例 |
|---------|-----|-----|
| `team` | 標準 Team オーケストレーション | `/team 3:executor "fix all TypeScript errors"` |
| `omc-teams` | tmux CLI ワーカー (codex/gemini/claude) | `/omc-teams 2:codex "security review"` |
| `ccg` | トライモデル Codex+Gemini オーケストレーション | `/ccg review this PR` |
| `autopilot` | 完全自律実行 | `autopilot: build a todo app` |
| `ralph` | 粘り強いモード | `ralph: refactor auth` |
| `ulw` | 最大並列化 | `ulw fix all errors` |
| `plan` | 計画インタビュー | `plan the API` |
| `ralplan` | 反復的計画合意形成 | `ralplan this feature` |
| `deep-interview` | ソクラテス式の要件明確化 | `deep-interview "vague idea"` |
| `swarm` | **非推奨** — 代わりに `team` を使用 | `swarm 5 agents: fix lint errors` |
| `ultrapilot` | **非推奨** — 代わりに `team` を使用 | `ultrapilot: build a fullstack app` |

**注意:**
- **ralph は ultrawork を含む:** ralph モードを有効にすると、ultrawork の並列実行が自動的に含まれます。キーワードを組み合わせる必要はありません。
- `swarm N agents` 構文はエージェント数抽出のために引き続き認識されますが、v4.1.7+ ではランタイムは Team ベースです。

---

## ユーティリティ

### レート制限待機

レート制限がリセットされたら Claude Code セッションを自動再開。

```bash
omc wait          # ステータス確認とガイダンス取得
omc wait --start  # 自動再開デーモンを有効化
omc wait --stop   # デーモンを無効化
```

**必要なもの:** tmux (セッション検出用)

### 通知タグ設定 (Telegram/Discord/Slack)

stop コールバックがセッション要約を送るときに、誰をタグ付けするか設定できます。

```bash
# タグ一覧を設定/置換
omc config-stop-callback telegram --enable --token <bot_token> --chat <chat_id> --tag-list "@alice,bob"
omc config-stop-callback discord --enable --webhook <url> --tag-list "@here,123456789012345678,role:987654321098765432"
omc config-stop-callback slack --enable --webhook <url> --tag-list "<!here>,<@U1234567890>"

# 追加・削除・クリア
omc config-stop-callback telegram --add-tag charlie
omc config-stop-callback discord --remove-tag @here
omc config-stop-callback discord --clear-tags
```

タグの挙動:
- Telegram: `alice` は `@alice` に正規化
- Discord: `@here`、`@everyone`、数値ユーザーID、`role:<id>` をサポート
- Slack: `<@MEMBER_ID>`、`<!channel>`、`<!here>`、`<!everyone>`、`<!subteam^GROUP_ID>` をサポート
- `file` コールバックはタグオプションを無視

### OpenClaw 連携

Claude Code セッションイベントを [OpenClaw](https://openclaw.ai/) ゲートウェイに転送し、OpenClaw エージェントを通じた自動応答とワークフローを実現します。

**クイックセットアップ(推奨):**

```bash
/oh-my-claudecode:configure-notifications
# → プロンプトで "openclaw" と入力 → "OpenClaw Gateway" を選択
```

**手動セットアップ:** `~/.claude/omc_config.openclaw.json` を作成します:

```json
{
  "enabled": true,
  "gateways": {
    "my-gateway": {
      "url": "https://your-gateway.example.com/wake",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" },
      "method": "POST",
      "timeout": 10000
    }
  },
  "hooks": {
    "session-start": { "gateway": "my-gateway", "instruction": "Session started for {{projectName}}", "enabled": true },
    "stop":          { "gateway": "my-gateway", "instruction": "Session stopping for {{projectName}}", "enabled": true }
  }
}
```

**環境変数:**

| 変数 | 説明 |
|------|------|
| `OMC_OPENCLAW=1` | OpenClaw を有効化 |
| `OMC_OPENCLAW_DEBUG=1` | デバッグログを有効化 |
| `OMC_OPENCLAW_CONFIG=/path/to/config.json` | 設定ファイルパスを変更 |

**サポートされるフックイベント(bridge.ts で 6 つがアクティブ):**

| イベント | トリガー | 主要テンプレート変数 |
|---------|---------|-------------------|
| `session-start` | セッション開始時 | `{{sessionId}}`, `{{projectName}}`, `{{projectPath}}` |
| `stop` | Claude のレスポンス完了時 | `{{sessionId}}`, `{{projectName}}` |
| `keyword-detector` | プロンプト送信ごと | `{{prompt}}`, `{{sessionId}}` |
| `ask-user-question` | Claude がユーザー入力を要求した時 | `{{question}}`, `{{sessionId}}` |
| `pre-tool-use` | ツール呼び出し前(高頻度) | `{{toolName}}`, `{{sessionId}}` |
| `post-tool-use` | ツール呼び出し後(高頻度) | `{{toolName}}`, `{{sessionId}}` |

**Reply Channel 環境変数:**

| 変数 | 説明 |
|------|------|
| `OPENCLAW_REPLY_CHANNEL` | 応答チャンネル(例: `discord`) |
| `OPENCLAW_REPLY_TARGET` | チャンネル ID |
| `OPENCLAW_REPLY_THREAD` | スレッド ID |

OpenClaw ペイロードを ClawdBot 経由で Discord にリレーするリファレンスゲートウェイについては `scripts/openclaw-gateway-demo.mjs` を参照してください。

---

## ドキュメント

- **[完全リファレンス](docs/REFERENCE.md)** - 全機能の詳細ドキュメント
- **[CLI リファレンス](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#cli-reference)** - すべての `omc` コマンド、フラグ、ツール
- **[通知ガイド](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#notifications)** - Discord、Telegram、Slack、webhook のセットアップ
- **[推奨ワークフロー](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#workflows)** - 一般的なタスクのための実績あるスキルチェーン
- **[リリースノート](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#release-notes)** - 各バージョンの新機能
- **[ウェブサイト](https://yeachan-heo.github.io/oh-my-claudecode-website)** - インタラクティブガイドと例
- **[移行ガイド](docs/MIGRATION.md)** - v2.x からのアップグレード
- **[アーキテクチャ](docs/ARCHITECTURE.md)** - 内部の仕組み
- **[パフォーマンス監視](docs/PERFORMANCE-MONITORING.md)** - エージェント追跡、デバッグ、最適化

---

## 動作環境

- [Claude Code](https://docs.anthropic.com/claude-code) CLI
- Claude Max/Pro サブスクリプション または Anthropic API キー

### オプション:マルチ AI オーケストレーション

OMC はクロスバリデーションとデザイン一貫性のために、外部 AI プロバイダーをオプションで活用できます。**必須ではありません** — これらがなくても OMC は完全に動作します。

| プロバイダー | インストール | 機能 |
|-------------|-------------|------|
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | `npm install -g @google/gemini-cli` | デザインレビュー、UI 一貫性(1M トークンコンテキスト)|
| [Codex CLI](https://github.com/openai/codex) | `npm install -g @openai/codex` | アーキテクチャ検証、コードレビュークロスチェック |

**コスト:** 3つの Pro プラン(Claude + Gemini + ChatGPT)で月額約 $60 ですべてをカバーできます。

---

## ライセンス

MIT

---

<div align="center">

**インスピレーション元:** [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) • [claude-hud](https://github.com/ryanjoachim/claude-hud) • [Superpowers](https://github.com/obra/superpowers) • [everything-claude-code](https://github.com/affaan-m/everything-claude-code) • [Ouroboros](https://github.com/Q00/ouroboros)

**学習コストゼロ。最大パワー。**

</div>

## Star History

[![Star History Chart](https://api.star-history.com/svg?repos=Yeachan-Heo/oh-my-claudecode&type=date&legend=top-left)](https://www.star-history.com/#Yeachan-Heo/oh-my-claudecode&type=date&legend=top-left)

## 💖 このプロジェクトを支援

Oh-My-ClaudeCode があなたのワークフローに役立っているなら、スポンサーをご検討ください:

[![Sponsor on GitHub](https://img.shields.io/badge/Sponsor-❤️-red?style=for-the-badge&logo=github)](https://github.com/sponsors/Yeachan-Heo)

### スポンサーになる理由は?

- 開発を活発に保つ
- スポンサー向け優先サポート
- ロードマップと機能に影響力
- 無料オープンソースの維持を支援

### その他の協力方法

- ⭐ リポジトリにスター
- 🐛 バグ報告
- 💡 機能提案
- 📝 コード貢献


================================================
FILE: README.ko.md
================================================
[English](README.md) | 한국어 | [中文](README.zh.md) | [日本語](README.ja.md) | [Español](README.es.md) | [Tiếng Việt](README.vi.md) | [Português](README.pt.md)

# oh-my-claudecode

[![npm version](https://img.shields.io/npm/v/oh-my-claude-sisyphus?color=cb3837)](https://www.npmjs.com/package/oh-my-claude-sisyphus)
[![npm downloads](https://img.shields.io/npm/dm/oh-my-claude-sisyphus?color=blue)](https://www.npmjs.com/package/oh-my-claude-sisyphus)
[![GitHub stars](https://img.shields.io/github/stars/Yeachan-Heo/oh-my-claudecode?style=flat&color=yellow)](https://github.com/Yeachan-Heo/oh-my-claudecode/stargazers)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
[![Sponsor](https://img.shields.io/badge/Sponsor-❤️-red?style=flat&logo=github)](https://github.com/sponsors/Yeachan-Heo)
[![Discord](https://img.shields.io/discord/1452487457085063218?color=5865F2&logo=discord&logoColor=white&label=Discord)](https://discord.gg/PUwSMR9XNk)

> **Codex 사용자분들께:** [oh-my-codex](https://github.com/Yeachan-Heo/oh-my-codex)를 확인해보세요 — OpenAI Codex CLI를 위한 동일한 오케스트레이션 경험을 제공합니다.

**Claude Code를 위한 멀티 에이전트 오케스트레이션. 학습 곡선 제로.**

*Claude Code를 배우지 마세요. 그냥 OMC를 쓰세요.*

[시작하기](#빠른-시작) • [문서](https://yeachan-heo.github.io/oh-my-claudecode-website) • [CLI 레퍼런스](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#cli-reference) • [워크플로우](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#workflows) • [마이그레이션 가이드](docs/MIGRATION.md)

---

## 빠른 시작

**Step 1: 설치**
```bash
/plugin marketplace add https://github.com/Yeachan-Heo/oh-my-claudecode
/plugin install oh-my-claudecode
```

**Step 2: 설정**
```bash
/omc-setup
```

**Step 3: 무언가 만들기**
```
autopilot: build a REST API for managing tasks
```

끝입니다. 나머지는 모두 자동입니다.

### 어디서 시작해야 할지 모르겠다면?

요구사항이 불확실하거나, 막연한 아이디어만 있거나, 설계를 세밀하게 관리하고 싶다면:

```
/deep-interview "I want to build a task management app"
```

딥 인터뷰는 소크라테스식 질문법을 사용하여 코드를 작성하기 전에 사고를 명확하게 합니다. 숨겨진 가정을 드러내고 가중치 기반 차원으로 명확성을 측정하여, 실행 시작 전에 무엇을 만들어야 하는지 정확히 알 수 있게 합니다.

## Team Mode (권장)

**v4.1.7**부터 **Team**이 OMC의 표준 오케스트레이션 방식입니다. 레거시 `swarm` 키워드/스킬은 제거되었으니 `team`을 직접 사용하세요.

```bash
/team 3:executor "fix all TypeScript errors"
```

Team은 단계별 파이프라인으로 실행됩니다:

`team-plan → team-prd → team-exec → team-verify → team-fix (loop)`

`~/.claude/settings.json`에서 Claude Code 네이티브 팀을 활성화하세요:

```json
{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}
```

> 팀이 비활성화된 경우 OMC가 경고를 표시하고 가능한 경우 팀 없이 실행으로 폴백합니다.

### tmux CLI 워커 — Codex & Gemini (v4.4.0+)

**v4.4.0에서 Codex/Gemini MCP 서버**(`x`, `g` 프로바이더)가 **제거됩니다**. CLI 우선 Team 런타임(`omc team ...`)으로 tmux 분할 창에서 실제 CLI 프로세스를 실행하세요:

```bash
omc team 2:codex "review auth module for security issues"
omc team 2:gemini "redesign UI components for accessibility"
omc team 1:claude "implement the payment flow"
omc team status auth-review
omc team shutdown auth-review
```

`/omc-teams`는 레거시 호환 스킬로 유지되며, 현재는 내부적으로 `omc team ...`으로 라우팅됩니다.

하나의 명령으로 Codex + Gemini 작업을 처리하려면 **`/ccg`** 스킬을 사용하세요:

```bash
/ccg Review this PR — architecture (Codex) and UI components (Gemini)
```

| 실행 표면 | 워커 | 최적 용도 |
|-------|---------|----------|
| `omc team N:codex "..."` | N개 Codex CLI 창 | 코드 리뷰, 보안 분석, 아키텍처 |
| `omc team N:gemini "..."` | N개 Gemini CLI 창 | UI/UX 디자인, 문서, 대용량 컨텍스트 |
| `omc team N:claude "..."` | N개 Claude CLI 창 | tmux에서 Claude CLI를 통한 일반 작업 |
| `/ccg` | ask-codex + ask-gemini | Codex+Gemini 조언을 Claude가 통합 |

워커는 요청 시 생성되고 작업 완료 후 종료됩니다 — 유휴 리소스 낭비 없음. `codex` / `gemini` CLI가 설치되어 있고 활성 tmux 세션이 필요합니다.

> **참고: 패키지 이름** — 프로젝트 브랜드명은 **oh-my-claudecode** (저장소, 플러그인, 명령어)이지만, npm 패키지는 [`oh-my-claude-sisyphus`](https://www.npmjs.com/package/oh-my-claude-sisyphus)로 배포됩니다. npm/bun으로 CLI 도구를 설치할 때는 `npm install -g oh-my-claude-sisyphus`를 사용하세요.

### 업데이트

```bash
# 1. 마켓플레이스 클론 업데이트
/plugin marketplace update omc

# 2. 셋업을 다시 실행하여 설정 갱신
/omc-setup
```

> **참고:** 마켓플레이스 auto-update가 활성화되어 있지 않은 경우, 셋업 실행 전에 `/plugin marketplace update omc`를 수동으로 실행하여 최신 버전을 동기화해야 합니다.

업데이트 후 문제가 발생하면, 이전 플러그인 캐시를 정리하세요:

```bash
/omc-doctor
```

<h1 align="center">당신의 Claude가 스테로이드를 맞았습니다.</h1>

<p align="center">
  <img src="assets/omc-character.jpg" alt="oh-my-claudecode" width="400" />
</p>

---

## 왜 oh-my-claudecode인가?

- **설정 불필요** - 똑똑한 기본값으로 바로 작동합니다
- **Team 우선 오케스트레이션** - Team은 표준 멀티 에이전트 인터페이스입니다 (swarm/ultrapilot은 호환성 파사드)
- **자연어 인터페이스** - 외울 명령어 없이, 원하는 것만 설명하세요
- **자동 병렬화** - 복잡한 작업을 전문 에이전트들에게 분산합니다
- **지속적 실행** - 작업이 완전히 검증될 때까지 포기하지 않습니다
- **비용 최적화** - 똑똑한 모델 라우팅으로 토큰을 30-50% 절약합니다
- **경험으로부터 학습** - 문제 해결 패턴을 자동으로 추출하고 재사용합니다
- **실시간 가시성** - HUD 상태바에서 내부에서 무슨 일이 일어나는지 확인하세요

---

## 기능

### 실행 모드
다양한 사용 사례를 위한 여러 전략 - 완전 자율 빌드부터 토큰 효율적인 리팩토링까지. [자세히 보기 →](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#execution-modes)

| 모드 | 특징 | 용도 |
|------|---------|---------|
| **Team (권장)** | 단계별 파이프라인 | 공유 작업 목록에서 협력하는 Claude 에이전트 |
| **omc team (CLI)** | tmux CLI 워커 | Codex/Gemini CLI 작업; 요청 시 실행, 완료 후 종료 |
| **ccg** | 트라이-모델 병렬 | Codex(분석) + Gemini(디자인), Claude가 통합 |
| **Autopilot** | 자율 실행 | 최소한의 설정으로 end-to-end 기능 개발 |
| **Ultrawork** | 최대 병렬 | Team이 필요 없는 병렬 수정/리팩토링 |
| **Ralph** | 지속 모드 | 완전히 완료되어야 하는 작업 |
| **Pipeline** | 순차 처리 | 엄격한 순서가 필요한 다단계 변환 |
| **Swarm / Ultrapilot (레거시)** | Team으로 라우팅 | 기존 워크플로우와 이전 문서 |

### 지능형 오케스트레이션

- **32개의 전문 에이전트** - 아키텍처, 연구, 디자인, 테스팅, 데이터 사이언스
- **똑똑한 모델 라우팅** - 간단한 작업엔 Haiku, 복잡한 추론엔 Opus
- **자동 위임** - 매번 작업에 맞는 올바른 에이전트 선택

### 개발자 경험

- **매직 키워드** - 명시적 제어를 위한 `ralph`, `ulw`, `team`
- **HUD 상태바** - 상태바에서 실시간 오케스트레이션 메트릭 확인
- **스킬 학습** - 세션에서 재사용 가능한 패턴 추출
- **분석 및 비용 추적** - 모든 세션의 토큰 사용량 이해

### 커스텀 스킬

한 번 배운 것을 영원히 재사용합니다. OMC는 디버깅 과정에서 얻은 실전 지식을 이식 가능한 스킬 파일로 추출하고, 관련 상황에서 자동으로 주입합니다.

| | 프로젝트 스코프 | 사용자 스코프 |
|---|---|---|
| **경로** | `.omc/skills/` | `~/.omc/skills/` |
| **공유 대상** | 팀 (버전 관리됨) | 모든 프로젝트에서 사용 |
| **우선순위** | 높음 (사용자 스코프를 오버라이드) | 낮음 (폴백) |

```yaml
# .omc/skills/fix-proxy-crash.md
---
name: Fix Proxy Crash
description: aiohttp proxy crashes on ClientDisconnectedError
triggers: ["proxy", "aiohttp", "disconnected"]
source: extracted
---
server.py:42의 핸들러를 try/except ClientDisconnectedError로 감싸세요...
```

**스킬 관리:** `/skill list | add | remove | edit | search`
**자동 학습:** `/learner`가 엄격한 품질 기준으로 재사용 가능한 패턴을 추출합니다
**자동 주입:** 매칭되는 스킬이 컨텍스트에 자동으로 로드됩니다 — 수동 호출 불필요

[전체 기능 목록 →](docs/REFERENCE.md)

---

## 매직 키워드

파워 유저를 위한 선택적 단축키. 자연어도 잘 작동합니다.

| 키워드 | 효과 | 예시 |
|---------|--------|---------|
| `team` | 표준 Team 오케스트레이션 | `/team 3:executor "fix all TypeScript errors"` |
| `omc team` | tmux CLI 워커 (codex/gemini/claude) | `omc team 2:codex "security review"` |
| `ccg` | 트라이-모델 Codex+Gemini 오케스트레이션 | `/ccg review this PR` |
| `autopilot` | 완전 자율 실행 | `autopilot: build a todo app` |
| `ralph` | 지속 모드 | `ralph: refactor auth` |
| `ulw` | 최대 병렬화 | `ulw fix all errors` |
| `plan` | 계획 인터뷰 | `plan the API` |
| `ralplan` | 반복적 계획 합의 | `ralplan this feature` |
| `deep-interview` | 소크라테스식 요구사항 명확화 | `deep-interview "vague idea"` |
| `swarm` | **지원 종료** — `team`을 사용하세요 | `swarm 5 agents: fix lint errors` |
| `ultrapilot` | **지원 종료** — `team`을 사용하세요 | `ultrapilot: build a fullstack app` |

**참고:**
- **ralph는 ultrawork를 포함합니다:** ralph 모드를 활성화하면 자동으로 ultrawork의 병렬 실행이 포함됩니다. 키워드를 결합할 필요가 없습니다.
- `/omc-teams`는 레거시 호환 경로로 남아 있으며 내부적으로 `omc team ...`으로 라우팅됩니다.
- `swarm N agents` 구문은 에이전트 수 추출을 위해 여전히 인식되지만, v4.1.7+에서 런타임은 Team 기반입니다.

---

## 유틸리티

### Rate Limit Wait

속도 제한이 리셋될 때 Claude Code 세션을 자동 재개합니다.

```bash
omc wait          # 상태 확인, 가이드 받기
omc wait --start  # 자동 재개 데몬 활성화
omc wait --stop   # 데몬 비활성화
```

**요구사항:** tmux (세션 감지용)

### 알림 태그 설정 (Telegram/Discord/Slack)

stop 콜백이 세션 요약을 보낼 때 태그할 대상을 설정할 수 있습니다.

```bash
# 태그 목록 설정/교체
omc config-stop-callback telegram --enable --token <bot_token> --chat <chat_id> --tag-list "@alice,bob"
omc config-stop-callback discord --enable --webhook <url> --tag-list "@here,123456789012345678,role:987654321098765432"
omc config-stop-callback slack --enable --webhook <url> --tag-list "<!here>,<@U1234567890>"

# 점진적 수정
omc config-stop-callback telegram --add-tag charlie
omc config-stop-callback discord --remove-tag @here
omc config-stop-callback discord --clear-tags
```

태그 동작:
- Telegram: `alice`는 `@alice`로 정규화됩니다
- Discord: `@here`, `@everyone`, 숫자 사용자 ID, `role:<id>` 지원
- Slack: `<@MEMBER_ID>`, `<!channel>`, `<!here>`, `<!everyone>`, `<!subteam^GROUP_ID>` 지원
- `file` 콜백은 태그 옵션을 무시합니다

### OpenClaw 연동

Claude Code 세션 이벤트를 [OpenClaw](https://openclaw.ai/) 게이트웨이로 전달하여 OpenClaw 에이전트를 통한 자동화된 응답 및 워크플로우를 구성할 수 있습니다.

**빠른 설정 (권장):**

```bash
/oh-my-claudecode:configure-notifications
# → 프롬프트에서 "openclaw" 입력 → "OpenClaw Gateway" 선택
```

**수동 설정:** `~/.claude/omc_config.openclaw.json` 파일을 생성합니다:

```json
{
  "enabled": true,
  "gateways": {
    "my-gateway": {
      "url": "https://your-gateway.example.com/wake",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" },
      "method": "POST",
      "timeout": 10000
    }
  },
  "hooks": {
    "session-start": { "gateway": "my-gateway", "instruction": "Session started for {{projectName}}", "enabled": true },
    "stop":          { "gateway": "my-gateway", "instruction": "Session stopping for {{projectName}}", "enabled": true }
  }
}
```

**환경 변수:**

| 변수 | 설명 |
|------|------|
| `OMC_OPENCLAW=1` | OpenClaw 활성화 |
| `OMC_OPENCLAW_DEBUG=1` | 디버그 로그 활성화 |
| `OMC_OPENCLAW_CONFIG=/path/to/config.json` | 설정 파일 경로 변경 |

**지원되는 훅 이벤트 (bridge.ts에서 6개 활성):**

| 이벤트 | 트리거 시점 | 주요 템플릿 변수 |
|--------|------------|-----------------|
| `session-start` | 세션 시작 시 | `{{sessionId}}`, `{{projectName}}`, `{{projectPath}}` |
| `stop` | Claude 응답 완료 시 | `{{sessionId}}`, `{{projectName}}` |
| `keyword-detector` | 프롬프트 제출마다 | `{{prompt}}`, `{{sessionId}}` |
| `ask-user-question` | Claude가 사용자 입력 요청 시 | `{{question}}`, `{{sessionId}}` |
| `pre-tool-use` | 툴 호출 전 (빈도 높음) | `{{toolName}}`, `{{sessionId}}` |
| `post-tool-use` | 툴 호출 후 (빈도 높음) | `{{toolName}}`, `{{sessionId}}` |

**Reply Channel 환경 변수:**

| 변수 | 설명 |
|------|------|
| `OPENCLAW_REPLY_CHANNEL` | 응답 채널 (예: `discord`) |
| `OPENCLAW_REPLY_TARGET` | 채널 ID |
| `OPENCLAW_REPLY_THREAD` | 스레드 ID |

OpenClaw 페이로드를 ClawdBot을 통해 Discord에 전달하는 레퍼런스 게이트웨이는 `scripts/openclaw-gateway-demo.mjs`를 참고하세요.

---

## 문서

- **[전체 레퍼런스](docs/REFERENCE.md)** - 완전한 기능 문서
- **[CLI 레퍼런스](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#cli-reference)** - 모든 `omc` 명령어, 플래그 및 도구
- **[알림 가이드](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#notifications)** - Discord, Telegram, Slack 및 webhook 설정
- **[추천 워크플로우](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#workflows)** - 일반 작업을 위한 검증된 스킬 체인
- **[릴리스 노트](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#release-notes)** - 각 버전의 새로운 기능
- **[웹사이트](https://yeachan-heo.github.io/oh-my-claudecode-website)** - 인터랙티브 가이드와 예제
- **[마이그레이션 가이드](docs/MIGRATION.md)** - v2.x에서 업그레이드
- **[아키텍처](docs/ARCHITECTURE.md)** - 내부 작동 원리
- **[성능 모니터링](docs/PERFORMANCE-MONITORING.md)** - 에이전트 추적, 디버깅 및 최적화

---

## 요구사항

- [Claude Code](https://docs.anthropic.com/claude-code) CLI
- Claude Max/Pro 구독 또는 Anthropic API 키

### 선택사항: 멀티 AI 오케스트레이션

OMC는 교차 검증과 디자인 일관성을 위해 외부 AI 제공자를 선택적으로 활용할 수 있습니다. **필수가 아닙니다** — OMC는 이것들 없이도 완벽하게 작동합니다.

| 제공자 | 설치 | 활용 |
|--------|------|------|
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | `npm install -g @google/gemini-cli` | 디자인 리뷰, UI 일관성 (1M 토큰 컨텍스트) |
| [Codex CLI](https://github.com/openai/codex) | `npm install -g @openai/codex` | 아키텍처 검증, 코드 리뷰 교차 확인 |

**비용:** 3개 Pro 플랜 (Claude + Gemini + ChatGPT)으로 월 ~$60에 모든 것을 커버합니다.

---

## 라이선스

MIT

---

<div align="center">

**영감을 받은 프로젝트:** [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) • [claude-hud](https://github.com/ryanjoachim/claude-hud) • [Superpowers](https://github.com/obra/superpowers) • [everything-claude-code](https://github.com/affaan-m/everything-claude-code) • [Ouroboros](https://github.com/Q00/ouroboros)

**학습 곡선 제로. 최대 파워.**

</div>

## Star History

[![Star History Chart](https://api.star-history.com/svg?repos=Yeachan-Heo/oh-my-claudecode&type=date&legend=top-left)](https://www.star-history.com/#Yeachan-Heo/oh-my-claudecode&type=date&legend=top-left)

## 💖 이 프로젝트 후원하기

Oh-My-ClaudeCode가 당신의 워크플로우에 도움이 된다면, 후원을 고려해주세요:

[![Sponsor on GitHub](https://img.shields.io/badge/Sponsor-❤️-red?style=for-the-badge&logo=github)](https://github.com/sponsors/Yeachan-Heo)

### 왜 후원해야 하나요?

- 활발한 개발 유지
- 후원자를 위한 우선 지원
- 로드맵 및 기능에 영향력 행사
- 무료 오픈소스 유지 지원

### 다른 도움 방법

- ⭐ 리포지토리에 Star 주기
- 🐛 버그 리포트
- 💡 기능 제안
- 📝 코드 기여


================================================
FILE: README.md
================================================
English | [한국어](README.ko.md) | [中文](README.zh.md) | [日本語](README.ja.md) | [Español](README.es.md) | [Tiếng Việt](README.vi.md) | [Português](README.pt.md)

# oh-my-claudecode

[![npm version](https://img.shields.io/npm/v/oh-my-claude-sisyphus?color=cb3837)](https://www.npmjs.com/package/oh-my-claude-sisyphus)
[![npm downloads](https://img.shields.io/npm/dm/oh-my-claude-sisyphus?color=blue)](https://www.npmjs.com/package/oh-my-claude-sisyphus)
[![GitHub stars](https://img.shields.io/github/stars/Yeachan-Heo/oh-my-claudecode?style=flat&color=yellow)](https://github.com/Yeachan-Heo/oh-my-claudecode/stargazers)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
[![Sponsor](https://img.shields.io/badge/Sponsor-❤️-red?style=flat&logo=github)](https://github.com/sponsors/Yeachan-Heo)
[![Discord](https://img.shields.io/discord/1452487457085063218?color=5865F2&logo=discord&logoColor=white&label=Discord)](https://discord.gg/PUwSMR9XNk)

> **For Codex users:** Check out [oh-my-codex](https://github.com/Yeachan-Heo/oh-my-codex) — the same orchestration experience for OpenAI Codex CLI.

**Multi-agent orchestration for Claude Code. Zero learning curve.**

_Don't learn Claude Code. Just use OMC._

[Get Started](#quick-start) • [Documentation](https://yeachan-heo.github.io/oh-my-claudecode-website) • [CLI Reference](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#cli-reference) • [Workflows](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#workflows) • [Migration Guide](docs/MIGRATION.md) • [Discord](https://discord.gg/PUwSMR9XNk)

---

## Quick Start

**Step 1: Install**

Marketplace/plugin install (recommended for most Claude Code users):

```bash
/plugin marketplace add https://github.com/Yeachan-Heo/oh-my-claudecode
/plugin install oh-my-claudecode
```

If you prefer the npm CLI/runtime path instead of the marketplace flow:

```bash
npm i -g oh-my-claude-sisyphus@latest
```

**Step 2: Setup**

```bash
/setup
/omc-setup
```

**Step 3: Build something**

```
autopilot: build a REST API for managing tasks
```

That's it. Everything else is automatic.

### Not Sure Where to Start?

If you're uncertain about requirements, have a vague idea, or want to micromanage the design:

```
/deep-interview "I want to build a task management app"
```

The deep interview uses Socratic questioning to clarify your thinking before any code is written. It exposes hidden assumptions and measures clarity across weighted dimensions, ensuring you know exactly what to build before execution begins.

## Team Mode (Recommended)

Starting in **v4.1.7**, **Team** is the canonical orchestration surface in OMC. The legacy `swarm` keyword/skill has been removed; use `team` directly.

```bash
/team 3:executor "fix all TypeScript errors"
```

Team runs as a staged pipeline:

`team-plan → team-prd → team-exec → team-verify → team-fix (loop)`

Enable Claude Code native teams in `~/.claude/settings.json`:

```json
{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}
```

> If teams are disabled, OMC will warn you and fall back to non-team execution where possible.

### tmux CLI Workers — Codex & Gemini (v4.4.0+)

**v4.4.0 removes the Codex/Gemini MCP servers** (`x`, `g` providers). Use the CLI-first Team runtime (`omc team ...`) to spawn real tmux worker panes:

```bash
omc team 2:codex "review auth module for security issues"
omc team 2:gemini "redesign UI components for accessibility"
omc team 1:claude "implement the payment flow"
omc team status auth-review
omc team shutdown auth-review
```

`/omc-teams` remains as a legacy compatibility skill and now routes to `omc team ...`.

For mixed Codex + Gemini work in one command, use the **`/ccg`** skill (routes via `/ask codex` + `/ask gemini`, then Claude synthesizes):

```bash
/ccg Review this PR — architecture (Codex) and UI components (Gemini)
```

| Surface                   | Workers            | Best For                                     |
| ------------------------- | ------------------ | -------------------------------------------- |
| `omc team N:codex "..."`  | N Codex CLI panes  | Code review, security analysis, architecture |
| `omc team N:gemini "..."` | N Gemini CLI panes | UI/UX design, docs, large-context tasks      |
| `omc team N:claude "..."` | N Claude CLI panes | General tasks via Claude CLI in tmux         |
| `/ccg`                    | /ask codex + /ask gemini | Tri-model advisor synthesis           |

Workers spawn on-demand and die when their task completes — no idle resource usage. Requires `codex` / `gemini` CLIs installed and an active tmux session.

> **Note: Package naming** — The project is branded as **oh-my-claudecode** (repo, plugin, commands), but the npm package is published as [`oh-my-claude-sisyphus`](https://www.npmjs.com/package/oh-my-claude-sisyphus). If you install or upgrade the CLI tools via npm/bun, use `npm i -g oh-my-claude-sisyphus@latest`.

### Updating

If you installed OMC via npm, upgrade with the published package name:

```bash
npm i -g oh-my-claude-sisyphus@latest
```

> **Package naming note:** the repo, plugin, and commands are branded **oh-my-claudecode**, but the published npm package name remains `oh-my-claude-sisyphus`.

If you installed OMC via the Claude Code marketplace/plugin flow, update with:

```bash
# 1. Update the marketplace clone
/plugin marketplace update omc

# 2. Re-run setup to refresh configuration
/setup
```

If you are developing from a local checkout or git worktree, update the checkout first, then re-run setup from that worktree so the active runtime matches the code you are testing.

> **Note:** If marketplace auto-update is not enabled, you must manually run `/plugin marketplace update omc` to sync the latest version before running setup.

If you experience issues after updating, clear the old plugin cache:

```bash
/omc-doctor
```

<h1 align="center">Your Claude Just Have been Steroided.</h1>

<p align="center">
  <img src="assets/omc-character.jpg" alt="oh-my-claudecode" width="400" />
</p>

---

## Why oh-my-claudecode?

- **Zero configuration required** - Works out of the box with intelligent defaults
- **Team-first orchestration** - Team is the canonical multi-agent surface
- **Natural language interface** - No commands to memorize, just describe what you want
- **Automatic parallelization** - Complex tasks distributed across specialized agents
- **Persistent execution** - Won't give up until the job is verified complete
- **Cost optimization** - Smart model routing saves 30-50% on tokens
- **Learn from experience** - Automatically extracts and reuses problem-solving patterns
- **Real-time visibility** - HUD statusline shows what's happening under the hood

---

## Features

### Orchestration Modes

Multiple strategies for different use cases — from Team-backed orchestration to token-efficient refactoring. [Learn more →](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#execution-modes)

| Mode                    | What it is                                                                              | Use For                                                |
| ----------------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| **Team (recommended)**  | Canonical staged pipeline (`team-plan → team-prd → team-exec → team-verify → team-fix`) | Coordinated Claude agents on a shared task list        |
| **omc team (CLI)**      | tmux CLI workers — real `claude`/`codex`/`gemini` processes in split-panes              | Codex/Gemini CLI tasks; on-demand spawn, die when done |
| **ccg**                 | Tri-model advisors via `/ask codex` + `/ask gemini`, Claude synthesizes                   | Mixed backend+UI work needing both Codex and Gemini    |
| **Autopilot**           | Autonomous execution (single lead agent)                                                | End-to-end feature work with minimal ceremony          |
| **Ultrawork**           | Maximum parallelism (non-team)                                                          | Burst parallel fixes/refactors where Team isn't needed |
| **Ralph**               | Persistent mode with verify/fix loops                                                   | Tasks that must complete fully (no silent partials)    |
| **Pipeline**            | Sequential, staged processing                                                           | Multi-step transformations with strict ordering        |
| **Ultrapilot (legacy)** | Deprecated compatibility mode (autopilot pipeline alias)                                | Existing workflows and older docs                      |

### Intelligent Orchestration

- **32 specialized agents** for architecture, research, design, testing, data science
- **Smart model routing** - Haiku for simple tasks, Opus for complex reasoning
- **Automatic delegation** - Right agent for the job, every time

### Developer Experience

- **Magic keywords** - `ralph`, `ulw`, `ralplan`; Team stays explicit via `/team`
- **HUD statusline** - Real-time orchestration metrics in your status bar
- **Skill learning** - Extract reusable patterns from your sessions
- **Analytics & cost tracking** - Understand token usage across all sessions

### Custom Skills

Learn once, reuse forever. OMC extracts hard-won debugging knowledge into portable skill files that auto-inject when relevant.

| | Project Scope | User Scope |
|---|---|---|
| **Path** | `.omc/skills/` | `~/.omc/skills/` |
| **Shared with** | Team (version-controlled) | All your projects |
| **Priority** | Higher (overrides user) | Lower (fallback) |

```yaml
# .omc/skills/fix-proxy-crash.md
---
name: Fix Proxy Crash
description: aiohttp proxy crashes on ClientDisconnectedError
triggers: ["proxy", "aiohttp", "disconnected"]
source: extracted
---
Wrap handler at server.py:42 in try/except ClientDisconnectedError...
```

**Manage skills:** `/skill list | add | remove | edit | search`
**Auto-learn:** `/learner` extracts reusable patterns with strict quality gates
**Auto-inject:** Matching skills load into context automatically — no manual recall needed

[Full feature list →](docs/REFERENCE.md)

---

## Magic Keywords

Optional shortcuts for power users. Natural language works fine without them. Team mode is explicit: use `/team ...` or `omc team ...` rather than a keyword trigger.

| Keyword                | Effect                                 | Example                                        |
| ---------------------- | -------------------------------------- | ---------------------------------------------- |
| `team`                 | Canonical Team orchestration           | `/team 3:executor "fix all TypeScript errors"` |
| `omc team`             | tmux CLI workers (codex/gemini/claude) | `omc team 2:codex "security review"`           |
| `ccg`                  | `/ask codex` + `/ask gemini` synthesis | `/ccg review this PR`                          |
| `autopilot`            | Full autonomous execution              | `autopilot: build a todo app`                  |
| `ralph`                | Persistence mode                       | `ralph: refactor auth`                         |
| `ulw`                  | Maximum parallelism                    | `ulw fix all errors`                           |
| `ralplan`              | Iterative planning consensus           | `ralplan this feature`                         |
| `deep-interview`       | Socratic requirements clarification    | `deep-interview "vague idea"`                  |
| `deepsearch`           | Codebase-focused search routing        | `deepsearch for auth middleware`               |
| `ultrathink`           | Deep reasoning mode                    | `ultrathink about this architecture`           |
| `cancelomc`, `stopomc` | Stop active OMC modes                  | `stopomc`                                      |

**Notes:**

- **ralph includes ultrawork**: when you activate ralph mode, it automatically includes ultrawork's parallel execution.
- `swarm` compatibility alias has been removed; migrate existing prompts to `/team` syntax.
- `plan this` / `plan the` keyword triggers were removed; use `ralplan` or explicit `/oh-my-claudecode:omc-plan`.

## Utilities

### Provider Advisor (`omc ask`)

Run local provider CLIs and save a markdown artifact under `.omc/artifacts/ask/`:

```bash
omc ask claude "review this migration plan"
omc ask codex --prompt "identify architecture risks"
omc ask gemini --prompt "propose UI polish ideas"
omc ask claude --agent-prompt executor --prompt "draft implementation steps"
```

Canonical env vars:

- `OMC_ASK_ADVISOR_SCRIPT`
- `OMC_ASK_ORIGINAL_TASK`

Phase-1 aliases `OMX_ASK_ADVISOR_SCRIPT` and `OMX_ASK_ORIGINAL_TASK` are accepted with deprecation warnings.

### Rate Limit Wait

Auto-resume Claude Code sessions when rate limits reset.

```bash
omc wait          # Check status, get guidance
omc wait --start  # Enable auto-resume daemon
omc wait --stop   # Disable daemon
```

**Requires:** tmux (for session detection)

### Monitoring & Observability

Use the HUD for live observability and the current session/replay artifacts for post-session inspection:

- HUD preset: `/oh-my-claudecode:hud setup` then use a supported preset such as `"omcHud": { "preset": "focused" }`
- Session summaries: `.omc/sessions/*.json`
- Replay logs: `.omc/state/agent-replay-*.jsonl`
- Live HUD rendering: `omc hud`

### Notification Tags (Telegram/Discord/Slack)

You can configure who gets tagged when stop callbacks send session summaries.

```bash
# Set/replace tag list
omc config-stop-callback telegram --enable --token <bot_token> --chat <chat_id> --tag-list "@alice,bob"
omc config-stop-callback discord --enable --webhook <url> --tag-list "@here,123456789012345678,role:987654321098765432"
omc config-stop-callback slack --enable --webhook <url> --tag-list "<!here>,<@U1234567890>"

# Incremental updates
omc config-stop-callback telegram --add-tag charlie
omc config-stop-callback discord --remove-tag @here
omc config-stop-callback discord --clear-tags
```

Tag behavior:

- Telegram: `alice` becomes `@alice`
- Discord: supports `@here`, `@everyone`, numeric user IDs, and `role:<id>`
- Slack: supports `<@MEMBER_ID>`, `<!channel>`, `<!here>`, `<!everyone>`, `<!subteam^GROUP_ID>`
- `file` callbacks ignore tag options

### OpenClaw Integration

Forward Claude Code session events to an [OpenClaw](https://openclaw.ai/) gateway to enable automated responses and workflows via your OpenClaw agent.

**Quick setup (recommended):**

```bash
/oh-my-claudecode:configure-notifications
# → When prompted, type "openclaw" → choose "OpenClaw Gateway"
```

**Manual setup:** create `~/.claude/omc_config.openclaw.json`:

```json
{
  "enabled": true,
  "gateways": {
    "my-gateway": {
      "url": "https://your-gateway.example.com/wake",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" },
      "method": "POST",
      "timeout": 10000
    }
  },
  "hooks": {
    "session-start": { "gateway": "my-gateway", "instruction": "Session started for {{projectName}}", "enabled": true },
    "stop":          { "gateway": "my-gateway", "instruction": "Session stopping for {{projectName}}", "enabled": true }
  }
}
```

**Environment variables:**

| Variable | Description |
|----------|-------------|
| `OMC_OPENCLAW=1` | Enable OpenClaw |
| `OMC_OPENCLAW_DEBUG=1` | Enable debug logging |
| `OMC_OPENCLAW_CONFIG=/path/to/config.json` | Override config file path |

**Supported hook events (6 active in bridge.ts):**

| Event | Trigger | Key template variables |
|-------|---------|----------------------|
| `session-start` | Session begins | `{{sessionId}}`, `{{projectName}}`, `{{projectPath}}` |
| `stop` | Claude response completes | `{{sessionId}}`, `{{projectName}}` |
| `keyword-detector` | Every prompt submission | `{{prompt}}`, `{{sessionId}}` |
| `ask-user-question` | Claude requests user input | `{{question}}`, `{{sessionId}}` |
| `pre-tool-use` | Before tool invocation (high frequency) | `{{toolName}}`, `{{sessionId}}` |
| `post-tool-use` | After tool invocation (high frequency) | `{{toolName}}`, `{{sessionId}}` |

**Reply channel environment variables:**

| Variable | Description |
|----------|-------------|
| `OPENCLAW_REPLY_CHANNEL` | Reply channel (e.g. `discord`) |
| `OPENCLAW_REPLY_TARGET` | Channel ID |
| `OPENCLAW_REPLY_THREAD` | Thread ID |

See `scripts/openclaw-gateway-demo.mjs` for a reference gateway that relays OpenClaw payloads to Discord via ClawdBot.

---

## Documentation

- **[Full Reference](docs/REFERENCE.md)** - Complete feature documentation
- **[CLI Reference](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#cli-reference)** - All `omc` commands, flags, and tools
- **[Notifications Guide](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#notifications)** - Discord, Telegram, Slack, and webhook setup
- **[Recommended Workflows](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#workflows)** - Battle-tested skill chains for common tasks
- **[Release Notes](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#release-notes)** - What's new in each version
- **[Website](https://yeachan-heo.github.io/oh-my-claudecode-website)** - Interactive guides and examples
- **[Migration Guide](docs/MIGRATION.md)** - Upgrade from v2.x
- **[Architecture](docs/ARCHITECTURE.md)** - How it works under the hood
- **[Performance Monitoring](docs/PERFORMANCE-MONITORING.md)** - Agent tracking, debugging, and optimization

---

## Requirements

- [Claude Code](https://docs.anthropic.com/claude-code) CLI
- Claude Max/Pro subscription OR Anthropic API key

### Platform & tmux

OMC features like `omc team` and rate-limit detection require **tmux**:

| Platform       | tmux provider                                            | Install                |
| -------------- | -------------------------------------------------------- | ---------------------- |
| macOS          | [tmux](https://github.com/tmux/tmux)                    | `brew install tmux`    |
| Ubuntu/Debian  | tmux                                                     | `sudo apt install tmux`|
| Fedora         | tmux                                                     | `sudo dnf install tmux`|
| Arch           | tmux                                                     | `sudo pacman -S tmux`  |
| Windows        | [psmux](https://github.com/marlocarlo/psmux) (native)   | `winget install psmux` |
| Windows (WSL2) | tmux (inside WSL)                                        | `sudo apt install tmux`|

> **Windows users:** [psmux](https://github.com/marlocarlo/psmux) provides a native `tmux` binary for Windows with 76 tmux-compatible commands. No WSL required.

### Optional: Multi-AI Orchestration

OMC can optionally orchestrate external AI providers for cross-validation and design consistency. These are **not required** — OMC works fully without them.

| Provider                                                  | Install                             | What it enables                                  |
| --------------------------------------------------------- | ----------------------------------- | ------------------------------------------------ |
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | `npm install -g @google/gemini-cli` | Design review, UI consistency (1M token context) |
| [Codex CLI](https://github.com/openai/codex)              | `npm install -g @openai/codex`      | Architecture validation, code review cross-check |

**Cost:** 3 Pro plans (Claude + Gemini + ChatGPT) cover everything for ~$60/month.

---

## License

MIT

---

<div align="center">

**Inspired by:** [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) • [claude-hud](https://github.com/ryanjoachim/claude-hud) • [Superpowers](https://github.com/obra/superpowers) • [everything-claude-code](https://github.com/affaan-m/everything-claude-code) • [Ouroboros](https://github.com/Q00/ouroboros)

**Zero learning curve. Maximum power.**

</div>

<!-- OMC:FEATURED-CONTRIBUTORS:START -->
## Featured by OmC Contributors

Top personal non-fork, non-archived repos from all-time OMC contributors (100+ GitHub stars).

- [@Yeachan-Heo](https://github.com/Yeachan-Heo) — [oh-my-claudecode](https://github.com/Yeachan-Heo/oh-my-claudecode) (⭐ 11k)
- [@junhoyeo](https://github.com/junhoyeo) — [tokscale](https://github.com/junhoyeo/tokscale) (⭐ 1.3k)
- [@psmux](https://github.com/psmux) — [psmux](https://github.com/psmux/psmux) (⭐ 695)
- [@BowTiedSwan](https://github.com/BowTiedSwan) — [buildflow](https://github.com/BowTiedSwan/buildflow) (⭐ 284)
- [@alohays](https://github.com/alohays) — [awesome-visual-representation-learning-with-transformers](https://github.com/alohays/awesome-visual-representation-learning-with-transformers) (⭐ 268)
- [@jcwleo](https://github.com/jcwleo) — [random-network-distillation-pytorch](https://github.com/jcwleo/random-network-distillation-pytorch) (⭐ 260)
- [@emgeee](https://github.com/emgeee) — [mean-tutorial](https://github.com/emgeee/mean-tutorial) (⭐ 200)
- [@anduinnn](https://github.com/anduinnn) — [HiFiNi-Auto-CheckIn](https://github.com/anduinnn/HiFiNi-Auto-CheckIn) (⭐ 172)
- [@Znuff](https://github.com/Znuff) — [consolas-powerline](https://github.com/Znuff/consolas-powerline) (⭐ 145)
- [@shaun0927](https://github.com/shaun0927) — [openchrome](https://github.com/shaun0927/openchrome) (⭐ 144)

<!-- OMC:FEATURED-CONTRIBUTORS:END -->

## Star History

[![Star History Chart](https://api.star-history.com/svg?repos=Yeachan-Heo/oh-my-claudecode&type=date&legend=top-left)](https://www.star-history.com/#Yeachan-Heo/oh-my-claudecode&type=date&legend=top-left)

## 💖 Support This Project

If Oh-My-ClaudeCode helps your workflow, consider sponsoring:

[![Sponsor on GitHub](https://img.shields.io/badge/Sponsor-❤️-red?style=for-the-badge&logo=github)](https://github.com/sponsors/Yeachan-Heo)

### Why sponsor?

- Keep development active
- Priority support for sponsors
- Influence roadmap & features
- Help maintain free & open source

### Other ways to help

- ⭐ Star the repo
- 🐛 Report bugs
- 💡 Suggest features
- 📝 Contribute code


================================================
FILE: README.pt.md
================================================
[English](README.md) | [한국어](README.ko.md) | [中文](README.zh.md) | [日本語](README.ja.md) | [Español](README.es.md) | [Tiếng Việt](README.vi.md) | Português

# oh-my-claudecode

[![npm version](https://img.shields.io/npm/v/oh-my-claude-sisyphus?color=cb3837)](https://www.npmjs.com/package/oh-my-claude-sisyphus)
[![npm downloads](https://img.shields.io/npm/dm/oh-my-claude-sisyphus?color=blue)](https://www.npmjs.com/package/oh-my-claude-sisyphus)
[![GitHub stars](https://img.shields.io/github/stars/Yeachan-Heo/oh-my-claudecode?style=flat&color=yellow)](https://github.com/Yeachan-Heo/oh-my-claudecode/stargazers)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
[![Sponsor](https://img.shields.io/badge/Sponsor-❤️-red?style=flat&logo=github)](https://github.com/sponsors/Yeachan-Heo)
[![Discord](https://img.shields.io/discord/1452487457085063218?color=5865F2&logo=discord&logoColor=white&label=Discord)](https://discord.gg/PUwSMR9XNk)

> **Para usuários do Codex:** Confira [oh-my-codex](https://github.com/Yeachan-Heo/oh-my-codex) — a mesma experiência de orquestração para o OpenAI Codex CLI.

**Orquestração multiagente para Claude Code. Curva de aprendizado zero.**

*Não aprenda Claude Code. Só use OMC.*

[Começar Rápido](#início-rápido) • [Documentação](https://yeachan-heo.github.io/oh-my-claudecode-website) • [Referência CLI](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#cli-reference) • [Workflows](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#workflows) • [Guia de Migração](docs/MIGRATION.md)

---

## Início Rápido

**Passo 1: Instale**
```bash
/plugin marketplace add https://github.com/Yeachan-Heo/oh-my-claudecode
/plugin install oh-my-claudecode
```

**Passo 2: Configure**
```bash
/omc-setup
```

**Passo 3: Crie algo**
```
autopilot: build a REST API for managing tasks
```

É isso. Todo o resto é automático.

### Não sabe por onde começar?

Se você não tem certeza sobre os requisitos, tem uma ideia vaga, ou quer microgerenciar o design:

```
/deep-interview "I want to build a task management app"
```

A entrevista profunda usa questionamento socrático para esclarecer seu pensamento antes de escrever qualquer código. Ela expõe suposições ocultas e mede a clareza por dimensões ponderadas, garantindo que você saiba exatamente o que construir antes da execução começar.

## Modo Team (Recomendado)

A partir da **v4.1.7**, o **Team** é a superfície canônica de orquestração no OMC. Entrypoints legados como **swarm** e **ultrapilot** continuam com suporte, mas agora **roteiam para Team por baixo dos panos**.

```bash
/team 3:executor "fix all TypeScript errors"
```

O Team roda como um pipeline em estágios:

`team-plan → team-prd → team-exec → team-verify → team-fix (loop)`

Ative os times nativos do Claude Code em `~/.claude/settings.json`:

```json
{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}
```

> Se os times estiverem desativados, o OMC vai avisar você e fazer fallback para execução sem Team quando possível.

### Trabalhadores CLI tmux — Codex & Gemini (v4.4.0+)

**v4.4.0 remove os servidores MCP de Codex/Gemini** (provedores `x`, `g`). Use `/omc-teams` para lançar processos CLI reais em painéis divididos do tmux:

```bash
/omc-teams 2:codex   "review auth module for security issues"
/omc-teams 2:gemini  "redesign UI components for accessibility"
/omc-teams 1:claude  "implement the payment flow"
```

Para trabalho misto de Codex + Gemini em um único comando, use a skill **`/ccg`**:

```bash
/ccg Review this PR — architecture (Codex) and UI components (Gemini)
```

| Skill | Trabalhadores | Melhor Para |
|-------|---------|----------|
| `/omc-teams N:codex` | N painéis Codex CLI | Revisão de código, análise de segurança, arquitetura |
| `/omc-teams N:gemini` | N painéis Gemini CLI | Design UI/UX, docs, tarefas de grande contexto |
| `/omc-teams N:claude` | N painéis Claude CLI | Tarefas gerais via Claude CLI no tmux |
| `/ccg` | 1 Codex + 1 Gemini | Orquestração tri-modelo em paralelo |

Trabalhadores são iniciados sob demanda e encerrados quando a tarefa é concluída — sem uso ocioso de recursos. Requer as CLIs `codex` / `gemini` instaladas e uma sessão tmux ativa.

> **Observação: Nome do pacote** — O projeto usa a marca **oh-my-claudecode** (repo, plugin, comandos), mas o pacote npm é publicado como [`oh-my-claude-sisyphus`](https://www.npmjs.com/package/oh-my-claude-sisyphus). Se você instalar as ferramentas de CLI via npm/bun, use `npm install -g oh-my-claude-sisyphus`.

### Atualizando

```bash
# 1. Atualize o clone do marketplace
/plugin marketplace update omc

# 2. Execute o setup novamente para atualizar a configuração
/omc-setup
```

> **Observação:** Se a atualização automática do marketplace não estiver habilitada, você precisa executar manualmente `/plugin marketplace update omc` para sincronizar a versão mais recente antes de executar o setup.

Se você tiver problemas depois de atualizar, limpe o cache antigo do plugin:

```bash
/omc-doctor
```

<h1 align="center">Seu Claude acabou de tomar esteroides.</h1>

<p align="center">
  <img src="assets/omc-character.jpg" alt="oh-my-claudecode" width="400" />
</p>

---

## Por que oh-my-claudecode?

- **Configuração zero** - Funciona de cara com padrões inteligentes
- **Orquestração team-first** - Team é a superfície canônica multiagente (swarm/ultrapilot são fachadas de compatibilidade)
- **Interface em linguagem natural** - Sem comandos para decorar, é só descrever o que você quer
- **Paralelização automática** - Tarefas complexas distribuídas entre agentes especializados
- **Execução persistente** - Não desiste até o trabalho ser verificado como concluído
- **Otimização de custo** - Roteamento inteligente de modelos economiza de 30% a 50% em tokens
- **Aprende com a experiência** - Extrai e reutiliza automaticamente padrões de resolução de problemas
- **Visibilidade em tempo real** - A HUD statusline mostra o que está acontecendo por baixo dos panos

---

## Recursos

### Modos de Orquestração
Múltiplas estratégias para diferentes casos de uso — da orquestração com Team até refatoração com eficiência de tokens. [Saiba mais →](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#execution-modes)

| Modo | O que é | Usar para |
|------|---------|-----------|
| **Team (recommended)** | Pipeline canônico em estágios (`team-plan → team-prd → team-exec → team-verify → team-fix`) | Agentes coordenados trabalhando em uma lista de tarefas compartilhada |
| **omc-teams** | Trabalhadores CLI tmux — processos reais `claude`/`codex`/`gemini` em painéis divididos | Tarefas Codex/Gemini CLI; criados sob demanda, encerrados ao terminar |
| **ccg** | Tri-modelo: Codex (analítico) + Gemini (design) em paralelo, Claude sintetiza | Trabalho misto de backend+UI que precisa de Codex e Gemini |
| **Autopilot** | Execução autônoma (um único agente líder) | Trabalho de feature ponta a ponta com cerimônia mínima |
| **Ultrawork** | Paralelismo máximo (sem Team) | Rajadas de correções/refatorações paralelas quando Team não é necessário |
| **Ralph** | Modo persistente com loops de verify/fix | Tarefas que precisam ser concluídas por completo (sem parciais silenciosos) |
| **Pipeline** | Processamento sequencial por estágios | Transformações em múltiplas etapas com ordenação rigorosa |
| **Swarm / Ultrapilot (legacy)** | Fachadas de compatibilidade que roteiam para **Team** | Workflows existentes e documentação antiga |

### Orquestração Inteligente

- **32 agentes especializados** para arquitetura, pesquisa, design, testes e ciência de dados
- **Roteamento inteligente de modelos** - Haiku para tarefas simples, Opus para raciocínio complexo
- **Delegação automática** - O agente certo para o trabalho, sempre

### Experiência do Desenvolvedor

- **Magic keywords** - `ralph`, `ulw`, `plan` para controle explícito
- **HUD statusline** - Métricas de orquestração em tempo real na sua barra de status
- **Aprendizado de skills** - Extraia padrões reutilizáveis das suas sessões
- **Analytics e rastreamento de custos** - Entenda o uso de tokens em todas as sessões

### Skills Personalizadas

Aprenda uma vez, reutilize para sempre. O OMC extrai conhecimento valioso de depuração em arquivos de skills portáteis que são auto-injetados quando relevantes.

| | Escopo de Projeto | Escopo de Usuário |
|---|---|---|
| **Caminho** | `.omc/skills/` | `~/.omc/skills/` |
| **Compartilhado com** | Equipe (versionado) | Todos os seus projetos |
| **Prioridade** | Maior (sobrescreve escopo de usuário) | Menor (fallback) |

```yaml
# .omc/skills/fix-proxy-crash.md
---
name: Fix Proxy Crash
description: aiohttp proxy crashes on ClientDisconnectedError
triggers: ["proxy", "aiohttp", "disconnected"]
source: extracted
---
Envolva o handler em server.py:42 com try/except ClientDisconnectedError...
```

**Gerenciamento de skills:** `/skill list | add | remove | edit | search`
**Auto-aprendizado:** `/learner` extrai padrões reutilizáveis com critérios de qualidade rigorosos
**Auto-injeção:** Skills correspondentes são carregadas no contexto automaticamente — sem necessidade de chamada manual

[Lista completa de recursos →](docs/REFERENCE.md)

---

## Magic Keywords

Atalhos opcionais para usuários avançados. Linguagem natural funciona bem sem eles.

| Palavra-chave | Efeito | Exemplo |
|---------------|--------|---------|
| `team` | Orquestração canônica com Team | `/team 3:executor "fix all TypeScript errors"` |
| `omc-teams` | Trabalhadores CLI tmux (codex/gemini/claude) | `/omc-teams 2:codex "security review"` |
| `ccg` | Orquestação tri-modelo Codex+Gemini | `/ccg review this PR` |
| `autopilot` | Execução autônoma completa | `autopilot: build a todo app` |
| `ralph` | Modo persistente | `ralph: refactor auth` |
| `ulw` | Paralelismo máximo | `ulw fix all errors` |
| `plan` | Entrevista de planejamento | `plan the API` |
| `ralplan` | Consenso de planejamento iterativo | `ralplan this feature` |
| `deep-interview` | Esclarecimento socrático de requisitos | `deep-interview "vague idea"` |
| `swarm` | **Descontinuado** — use `team` em vez disso | `swarm 5 agents: fix lint errors` |
| `ultrapilot` | **Descontinuado** — use `team` em vez disso | `ultrapilot: build a fullstack app` |

**Notas:**
- **ralph inclui ultrawork**: quando você ativa o modo ralph, ele inclui automaticamente a execução paralela do ultrawork.
- A sintaxe `swarm N agents` ainda é reconhecida para extração da contagem de agentes, mas o runtime é baseado em Team na v4.1.7+.

## Utilitários

### Espera de Rate Limit

Retoma automaticamente sessões do Claude Code quando os rate limits são resetados.

```bash
omc wait          # Check status, get guidance
omc wait --start  # Enable auto-resume daemon
omc wait --stop   # Disable daemon
```

**Requer:** tmux (para detecção de sessão)

### Tags de Notificação (Telegram/Discord/Slack)

Você pode configurar quem recebe tag quando callbacks de parada enviam resumos de sessão.

```bash
# Set/replace tag list
omc config-stop-callback telegram --enable --token <bot_token> --chat <chat_id> --tag-list "@alice,bob"
omc config-stop-callback discord --enable --webhook <url> --tag-list "@here,123456789012345678,role:987654321098765432"
omc config-stop-callback slack --enable --webhook <url> --tag-list "<!here>,<@U1234567890>"

# Incremental updates
omc config-stop-callback telegram --add-tag charlie
omc config-stop-callback discord --remove-tag @here
omc config-stop-callback discord --clear-tags
```

Comportamento das tags:
- Telegram: `alice` vira `@alice`
- Discord: suporta `@here`, `@everyone`, IDs numéricos de usuário e `role:<id>`
- Slack: suporta `<@MEMBER_ID>`, `<!channel>`, `<!here>`, `<!everyone>`, `<!subteam^GROUP_ID>`
- callbacks de `file` ignoram opções de tag

### Integração com OpenClaw

Encaminhe eventos de sessão do Claude Code para um gateway do [OpenClaw](https://openclaw.ai/) para habilitar respostas automatizadas e workflows através do seu agente OpenClaw.

**Configuração rápida (recomendado):**

```bash
/oh-my-claudecode:configure-notifications
# → Digite "openclaw" quando solicitado → escolha "OpenClaw Gateway"
```

**Configuração manual:** crie `~/.claude/omc_config.openclaw.json`:

```json
{
  "enabled": true,
  "gateways": {
    "my-gateway": {
      "url": "https://your-gateway.example.com/wake",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" },
      "method": "POST",
      "timeout": 10000
    }
  },
  "hooks": {
    "session-start": { "gateway": "my-gateway", "instruction": "Session started for {{projectName}}", "enabled": true },
    "stop":          { "gateway": "my-gateway", "instruction": "Session stopping for {{projectName}}", "enabled": true }
  }
}
```

**Variáveis de ambiente:**

| Variável | Descrição |
|----------|-----------|
| `OMC_OPENCLAW=1` | Habilitar OpenClaw |
| `OMC_OPENCLAW_DEBUG=1` | Habilitar logs de depuração |
| `OMC_OPENCLAW_CONFIG=/path/to/config.json` | Caminho alternativo do arquivo de configuração |

**Eventos de hook suportados (6 ativos em bridge.ts):**

| Evento | Gatilho | Variáveis de template principais |
|--------|---------|----------------------------------|
| `session-start` | Sessão inicia | `{{sessionId}}`, `{{projectName}}`, `{{projectPath}}` |
| `stop` | Resposta do Claude concluída | `{{sessionId}}`, `{{projectName}}` |
| `keyword-detector` | A cada envio de prompt | `{{prompt}}`, `{{sessionId}}` |
| `ask-user-question` | Claude solicita input do usuário | `{{question}}`, `{{sessionId}}` |
| `pre-tool-use` | Antes da invocação de ferramenta (alta frequência) | `{{toolName}}`, `{{sessionId}}` |
| `post-tool-use` | Após a invocação de ferramenta (alta frequência) | `{{toolName}}`, `{{sessionId}}` |

**Variáveis de ambiente do canal de resposta:**

| Variável | Descrição |
|----------|-----------|
| `OPENCLAW_REPLY_CHANNEL` | Canal de resposta (ex. `discord`) |
| `OPENCLAW_REPLY_TARGET` | ID do canal |
| `OPENCLAW_REPLY_THREAD` | ID da thread |

Veja `scripts/openclaw-gateway-demo.mjs` para um gateway de referência que retransmite payloads OpenClaw para o Discord via ClawdBot.

---

## Documentação

- **[Referência Completa](docs/REFERENCE.md)** - Documentação completa de recursos
- **[Referência CLI](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#cli-reference)** - Todos os comandos, flags e ferramentas do `omc`
- **[Guia de Notificações](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#notifications)** - Configuração de Discord, Telegram, Slack e webhooks
- **[Workflows Recomendados](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#workflows)** - Cadeias de skills testadas em batalha para tarefas comuns
- **[Notas de Lançamento](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#release-notes)** - Novidades em cada versão
- **[Website](https://yeachan-heo.github.io/oh-my-claudecode-website)** - Guias interativos e exemplos
- **[Guia de Migração](docs/MIGRATION.md)** - Upgrade a partir da v2.x
- **[Arquitetura](docs/ARCHITECTURE.md)** - Como funciona por baixo dos panos
- **[Monitoramento de Performance](docs/PERFORMANCE-MONITORING.md)** - Rastreamento de agentes, debugging e otimização

---

## Requisitos

- [Claude Code](https://docs.anthropic.com/claude-code) CLI
- Assinatura Claude Max/Pro OU chave de API da Anthropic

### Opcional: Orquestração Multi-AI

O OMC pode opcionalmente orquestrar provedores externos de IA para validação cruzada e consistência de design. Eles **não são obrigatórios** — o OMC funciona completamente sem eles.

| Provedor | Instalação | O que habilita |
|----------|------------|----------------|
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | `npm install -g @google/gemini-cli` | Revisão de design, consistência de UI (contexto de 1M tokens) |
| [Codex CLI](https://github.com/openai/codex) | `npm install -g @openai/codex` | Validação de arquitetura, checagem cruzada de code review |

**Custo:** 3 planos Pro (Claude + Gemini + ChatGPT) cobrem tudo por cerca de US$60/mês.

---

## Licença

MIT

---

<div align="center">

**Inspirado por:** [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) • [claude-hud](https://github.com/ryanjoachim/claude-hud) • [Superpowers](https://github.com/obra/superpowers) • [everything-claude-code](https://github.com/affaan-m/everything-claude-code) • [Ouroboros](https://github.com/Q00/ouroboros)

**Curva de aprendizado zero. Poder máximo.**

</div>

## Histórico de Stars

[![Star History Chart](https://api.star-history.com/svg?repos=Yeachan-Heo/oh-my-claudecode&type=date&legend=top-left)](https://www.star-history.com/#Yeachan-Heo/oh-my-claudecode&type=date&legend=top-left)

## 💖 Apoie Este Projeto

Se o Oh-My-ClaudeCode ajuda no seu fluxo de trabalho, considere patrocinar:

[![Sponsor on GitHub](https://img.shields.io/badge/Sponsor-❤️-red?style=for-the-badge&logo=github)](https://github.com/sponsors/Yeachan-Heo)

### Por que patrocinar?

- Manter o desenvolvimento ativo
- Suporte prioritário para patrocinadores
- Influenciar o roadmap e os recursos
- Ajudar a manter o projeto livre e de código aberto

### Outras formas de ajudar

- ⭐ Dar star no repositório
- 🐛 Reportar bugs
- 💡 Sugerir recursos
- 📝 Contribuir com código


================================================
FILE: README.ru.md
================================================
[English](README.md) | [한국어](README.ko.md) | [中文](README.zh.md) | [日本語](README.ja.md) | [Español](README.es.md) | [Tiếng Việt](README.vi.md) | [Português](README.pt.md) | Русский | [Türkçe](README.tr.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Italiano](README.it.md)

# oh-my-claudecode

[![npm version](https://img.shields.io/npm/v/oh-my-claude-sisyphus?color=cb3837)](https://www.npmjs.com/package/oh-my-claude-sisyphus)
[![npm downloads](https://img.shields.io/npm/dm/oh-my-claude-sisyphus?color=blue)](https://www.npmjs.com/package/oh-my-claude-sisyphus)
[![GitHub stars](https://img.shields.io/github/stars/Yeachan-Heo/oh-my-claudecode?style=flat&color=yellow)](https://github.com/Yeachan-Heo/oh-my-claudecode/stargazers)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
[![Sponsor](https://img.shields.io/badge/Sponsor-❤️-red?style=flat&logo=github)](https://github.com/sponsors/Yeachan-Heo)
[![Discord](https://img.shields.io/discord/1452487457085063218?color=5865F2&logo=discord&logoColor=white&label=Discord)](https://discord.gg/PUwSMR9XNk)

**Мультиагентная оркестрация для Claude Code. Нулевой порог вхождения.**

_Не изучайте Claude Code. Просто используйте OMC._

[Начать](#быстрый-старт) • [Документация](https://yeachan-heo.github.io/oh-my-claudecode-website) • [Руководство по миграции](docs/MIGRATION.md)

---

## Быстрый старт

**Шаг 1: Установка**

```bash
/plugin marketplace add https://github.com/Yeachan-Heo/oh-my-claudecode
/plugin install oh-my-claudecode
```

**Шаг 2: Настройка**

```bash
/oh-my-claudecode:omc-setup
```

**Шаг 3: Создайте что-нибудь**

```
autopilot: build a REST API for managing tasks
```

Вот и всё. Всё остальное происходит автоматически.

## Team Mode (Рекомендуется)

Начиная с **v4.1.7**, **Team** — это каноническая поверхность оркестрации в OMC. Устаревшие точки входа, такие как **swarm** и **ultrapilot**, по-прежнему поддерживаются, но теперь **направляются в Team под капотом**.

```bash
/oh-my-claudecode:team 3:executor "fix all TypeScript errors"
```

Team работает как поэтапный pipeline:

`team-plan → team-prd → team-exec → team-verify → team-fix (loop)`

Включите нативные команды Claude Code в `~/.claude/settings.json`:

```json
{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}
```

> Если teams отключены, OMC предупредит вас и переключится на выполнение без Team, если это возможно.

> **Примечание: Название пакета** — Проект использует бренд **oh-my-claudecode** (репозиторий, плагин, команды), но npm-пакет публикуется как [`oh-my-claude-sisyphus`](https://www.npmjs.com/package/oh-my-claude-sisyphus). Если вы устанавливаете CLI-инструменты через npm/bun, используйте `npm install -g oh-my-claude-sisyphus`.

### Обновление

```bash
# 1. Обновите плагин
/plugin install oh-my-claudecode

# 2. Перезапустите setup для обновления конфигурации
/oh-my-claudecode:omc-setup
```

Если после обновления возникли проблемы, очистите старый кэш плагина:

```bash
/oh-my-claudecode:omc-doctor
```

<h1 align="center">Ваш Claude только что получил суперсилу.</h1>

<p align="center">
  <img src="assets/omc-character.jpg" alt="oh-my-claudecode" width="400" />
</p>

---

## Почему oh-my-claudecode?

- **Настройка не требуется** — Работает сразу из коробки с умными значениями по умолчанию
- **Team-first оркестрация** — Team является каноническим мультиагентным интерфейсом (swarm/ultrapilot — фасады совместимости)
- **Интерфейс на естественном языке** — Не нужно запоминать команды, просто описывайте, что вам нужно
- **Автоматическая параллелизация** — Сложные задачи распределяются между специализированными агентами
- **Настойчивое выполнение** — Не сдаётся, пока работа не будет проверена и завершена
- **Оптимизация затрат** — Умная маршрутизация моделей экономит 30-50% токенов
- **Обучение на опыте** — Автоматически извлекает и переиспользует паттерны решения задач
- **Видимость в реальном времени** — HUD statusline показывает, что происходит под капотом

---

## Возможности

### Режимы оркестрации

Множество стратегий для разных сценариев — от оркестрации через Team до рефакторинга с экономией токенов. [Подробнее →](https://yeachan-heo.github.io/oh-my-claudecode-website/docs.html#execution-modes)

| Режим                               | Описание                                                                                      | Применение                                                                        |
| ----------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| **Team (рекомендуется)**            | Канонический поэтапный pipeline (`team-plan → team-prd → team-exec → team-verify → team-fix`) | Координированные агенты, работающие над общим списком задач                       |
| **Autopilot**                       | Автономное выполнение (один ведущий агент)                                                    | Сквозная разработка фич с минимальной церемонией                                  |
| **Ultrawork**                       | Максимальный параллелизм (без Team)                                                           | Параллельные исправления/рефакторинг, когда Team не нужен                         |
| **Ralph**                           | Режим настойчивости с циклами verify/fix                                                      | Задачи, которые должны быть полностью завершены (без тихих частичных результатов) |
| **Ecomode**                         | Токен-эффективная маршрутизация                                                               | Бюджетно-ориентированная итерация                                                 |
| **Pipeline**                        | Последовательная поэтапная обработка                                                          | Многоступенчатые трансформации со строгим порядком                                |
| **Swarm / Ultrapilot (устаревшие)** | Фасады совместимости, направляющие в **Team**                                                 | Существующие рабочие процессы и старая документация                               |

### Интеллектуальная оркестрация

- **32 специализированных агента** для архитектуры, исследований, дизайна, тестирования, data science
- **Умная маршрутизация моделей** — Haiku для простых задач, Opus для сложных рассуждений
- **Автоматическое делегирование** — Правильный агент для правильной задачи, каждый раз

### Опыт разработчика

- **Магические ключевые слова** — `ralph`, `ulw`, `eco`, `plan` для явного управления
- **HUD statusline** — Метрики оркестрации в реальном времени в строке состояния
- **Обучение навыкам** — Извлечение переиспользуемых паттернов из сессий
- **Аналитика и отслеживание затрат** — Понимание использования токенов по всем сессиям

### Пользовательские навыки

Выучите один раз — используйте всегда. OMC извлекает ценные знания отладки в портативные файлы навыков, которые автоматически внедряются при необходимости.

| | Область проекта | Область пользователя |
|---|---|---|
| **Путь** | `.omc/skills/` | `~/.omc/skills/` |
| **Доступно** | Команде (под контролем версий) | Всем вашим 
Download .txt
gitextract_ti569df2/

├── .claude-plugin/
│   ├── marketplace.json
│   └── plugin.json
├── .eslintignore
├── .gitattributes
├── .github/
│   ├── CLAUDE.md
│   ├── FUNDING.yml
│   ├── SPONSOR_TIERS.md
│   ├── release-notes.md
│   └── workflows/
│       ├── auto-label.yml
│       ├── ci.yml
│       ├── cleanup.yml
│       ├── pr-check.yml
│       ├── release.yml
│       └── stale.yml
├── .gitignore
├── .mcp.json
├── .npmignore
├── AGENTS.md
├── CHANGELOG.md
├── CLAUDE.md
├── LICENSE
├── README.de.md
├── README.es.md
├── README.fr.md
├── README.it.md
├── README.ja.md
├── README.ko.md
├── README.md
├── README.pt.md
├── README.ru.md
├── README.tr.md
├── README.vi.md
├── README.zh.md
├── agents/
│   ├── analyst.md
│   ├── architect.md
│   ├── code-reviewer.md
│   ├── code-simplifier.md
│   ├── critic.md
│   ├── debugger.md
│   ├── designer.md
│   ├── document-specialist.md
│   ├── executor.md
│   ├── explore.md
│   ├── git-master.md
│   ├── planner.md
│   ├── qa-tester.md
│   ├── scientist.md
│   ├── security-reviewer.md
│   ├── test-engineer.md
│   ├── tracer.md
│   ├── verifier.md
│   └── writer.md
├── benchmark/
│   ├── .gitignore
│   ├── Dockerfile
│   ├── README.md
│   ├── analyze_failures.py
│   ├── compare_results.py
│   ├── docker-compose.yml
│   ├── entrypoint.sh
│   ├── evaluate.py
│   ├── predictions/
│   │   ├── omc/
│   │   │   ├── checkpoint.json
│   │   │   └── stats.json
│   │   └── vanilla/
│   │       ├── checkpoint.json
│   │       ├── predictions.jsonl
│   │       └── stats.json
│   ├── quick_test.sh
│   ├── requirements.txt
│   ├── results/
│   │   └── README.md
│   ├── run_benchmark.py
│   ├── run_full_comparison.sh
│   ├── run_omc.sh
│   ├── run_vanilla.sh
│   └── setup.sh
├── benchmarks/
│   ├── baselines/
│   │   └── 2026-03-08-consolidation.json
│   ├── code-reviewer/
│   │   ├── fixtures/
│   │   │   └── code/
│   │   │       ├── code-payment-refund.md
│   │   │       ├── code-retry-handler.md
│   │   │       └── code-sql-injection.md
│   │   ├── ground-truth/
│   │   │   ├── code-payment-refund.json
│   │   │   ├── code-retry-handler.json
│   │   │   └── code-sql-injection.json
│   │   ├── prompts/
│   │   │   └── quality-reviewer.md
│   │   └── run-benchmark.ts
│   ├── debugger/
│   │   ├── fixtures/
│   │   │   └── bugs/
│   │   │       ├── bug-redis-intermittent.md
│   │   │       ├── bug-ts-build-errors.md
│   │   │       └── bug-undefined-map.md
│   │   ├── ground-truth/
│   │   │   ├── bug-redis-intermittent.json
│   │   │   ├── bug-ts-build-errors.json
│   │   │   └── bug-undefined-map.json
│   │   ├── prompts/
│   │   │   └── build-fixer.md
│   │   └── run-benchmark.ts
│   ├── executor/
│   │   ├── fixtures/
│   │   │   └── tasks/
│   │   │       ├── task-add-timestamp.md
│   │   │       ├── task-input-validation.md
│   │   │       └── task-notification-refactor.md
│   │   ├── ground-truth/
│   │   │   ├── task-add-timestamp.json
│   │   │   ├── task-input-validation.json
│   │   │   └── task-notification-refactor.json
│   │   ├── prompts/
│   │   │   └── deep-executor.md
│   │   └── run-benchmark.ts
│   ├── harsh-critic/
│   │   ├── README.md
│   │   ├── SCORING_MATCH_CALIBRATION.md
│   │   ├── fixtures/
│   │   │   ├── analysis/
│   │   │   │   ├── analysis-incident-review.md
│   │   │   │   └── analysis-perf-report.md
│   │   │   ├── code/
│   │   │   │   ├── code-payment-handler.ts
│   │   │   │   ├── code-session-manager.ts
│   │   │   │   └── code-utils-clean.ts
│   │   │   └── plans/
│   │   │       ├── plan-api-refactor.md
│   │   │       ├── plan-auth-migration.md
│   │   │       └── plan-clean-baseline.md
│   │   ├── ground-truth/
│   │   │   ├── analysis-incident-review.json
│   │   │   ├── analysis-perf-report.json
│   │   │   ├── code-payment-handler.json
│   │   │   ├── code-session-manager.json
│   │   │   ├── code-utils-clean.json
│   │   │   ├── plan-api-refactor.json
│   │   │   ├── plan-auth-migration.json
│   │   │   └── plan-clean-baseline.json
│   │   ├── prompts/
│   │   │   └── harsh-critic.md
│   │   ├── run-benchmark.ts
│   │   ├── scoring/
│   │   │   ├── __tests__/
│   │   │   │   ├── parser.test.ts
│   │   │   │   └── scorer.test.ts
│   │   │   ├── parser.ts
│   │   │   ├── reporter.ts
│   │   │   ├── scorer.ts
│   │   │   └── types.ts
│   │   └── vitest.config.ts
│   ├── run-all.ts
│   └── shared/
│       ├── parser.ts
│       ├── reporter.ts
│       ├── runner.ts
│       ├── scorer.ts
│       └── types.ts
├── bridge/
│   ├── cli.cjs
│   ├── gyoshu_bridge.py
│   ├── mcp-server.cjs
│   ├── run-mcp-server.sh
│   ├── runtime-cli.cjs
│   ├── team-bridge.cjs
│   ├── team-mcp.cjs
│   └── team.js
├── dist/
│   ├── __tests__/
│   │   ├── agent-boundary-guidance.test.d.ts
│   │   ├── agent-boundary-guidance.test.js
│   │   ├── agent-registry.test.d.ts
│   │   ├── agent-registry.test.js
│   │   ├── auto-slash-aliases.test.d.ts
│   │   ├── auto-slash-aliases.test.js
│   │   ├── auto-update.test.d.ts
│   │   ├── auto-update.test.js
│   │   ├── auto-upgrade-prompt.test.d.ts
│   │   ├── auto-upgrade-prompt.test.js
│   │   ├── bash-history.test.d.ts
│   │   ├── bash-history.test.js
│   │   ├── bedrock-lm-suffix-hook.test.d.ts
│   │   ├── bedrock-lm-suffix-hook.test.js
│   │   ├── bedrock-model-routing.test.d.ts
│   │   ├── bedrock-model-routing.test.js
│   │   ├── cleanup-validation.test.d.ts
│   │   ├── cleanup-validation.test.js
│   │   ├── cli-config-stop-callback.test.d.ts
│   │   ├── cli-config-stop-callback.test.js
│   │   ├── cli-interop-flags.test.d.ts
│   │   ├── cli-interop-flags.test.js
│   │   ├── cli-notify-profile.test.d.ts
│   │   ├── cli-notify-profile.test.js
│   │   ├── cli-win32-warning.test.d.ts
│   │   ├── cli-win32-warning.test.js
│   │   ├── compact-denylist.test.d.ts
│   │   ├── compact-denylist.test.js
│   │   ├── config-force-inherit-env.test.d.ts
│   │   ├── config-force-inherit-env.test.js
│   │   ├── consensus-execution-handoff.test.d.ts
│   │   ├── consensus-execution-handoff.test.js
│   │   ├── consolidation-contracts.test.d.ts
│   │   ├── consolidation-contracts.test.js
│   │   ├── context-guard-stop.test.d.ts
│   │   ├── context-guard-stop.test.js
│   │   ├── context-safety.test.d.ts
│   │   ├── context-safety.test.js
│   │   ├── daemon-module-path.test.d.ts
│   │   ├── daemon-module-path.test.js
│   │   ├── deep-interview-provider-options.test.d.ts
│   │   ├── deep-interview-provider-options.test.js
│   │   ├── delegation-enforcement-levels.test.d.ts
│   │   ├── delegation-enforcement-levels.test.js
│   │   ├── delegation-enforcer-integration.test.d.ts
│   │   ├── delegation-enforcer-integration.test.js
│   │   ├── delegation-enforcer.test.d.ts
│   │   ├── delegation-enforcer.test.js
│   │   ├── directory-context-injector.test.d.ts
│   │   ├── directory-context-injector.test.js
│   │   ├── disable-tools.test.d.ts
│   │   ├── disable-tools.test.js
│   │   ├── doctor-conflicts.test.d.ts
│   │   ├── doctor-conflicts.test.js
│   │   ├── featured-contributors-generator.test.d.ts
│   │   ├── featured-contributors-generator.test.js
│   │   ├── file-lock.test.d.ts
│   │   ├── file-lock.test.js
│   │   ├── helpers/
│   │   │   ├── prompt-test-helpers.d.ts
│   │   │   └── prompt-test-helpers.js
│   │   ├── hooks/
│   │   │   ├── learner/
│   │   │   │   ├── bridge.test.d.ts
│   │   │   │   ├── bridge.test.js
│   │   │   │   ├── parser.test.d.ts
│   │   │   │   ├── parser.test.js
│   │   │   │   ├── transliteration-map.test.d.ts
│   │   │   │   └── transliteration-map.test.js
│   │   │   ├── plugin-patterns.test.d.ts
│   │   │   └── plugin-patterns.test.js
│   │   ├── hooks-command-escaping.test.d.ts
│   │   ├── hooks-command-escaping.test.js
│   │   ├── hooks.test.d.ts
│   │   ├── hooks.test.js
│   │   ├── hud/
│   │   │   ├── call-counts.test.d.ts
│   │   │   ├── call-counts.test.js
│   │   │   ├── context-warning.test.d.ts
│   │   │   ├── context-warning.test.js
│   │   │   ├── context.test.d.ts
│   │   │   ├── context.test.js
│   │   │   ├── custom-rate-provider.test.d.ts
│   │   │   ├── custom-rate-provider.test.js
│   │   │   ├── cwd.test.d.ts
│   │   │   ├── cwd.test.js
│   │   │   ├── defaults.test.d.ts
│   │   │   ├── defaults.test.js
│   │   │   ├── git.test.d.ts
│   │   │   ├── git.test.js
│   │   │   ├── limits-error.test.d.ts
│   │   │   ├── limits-error.test.js
│   │   │   ├── max-width.test.d.ts
│   │   │   ├── max-width.test.js
│   │   │   ├── mission-board-state.test.d.ts
│   │   │   ├── mission-board-state.test.js
│   │   │   ├── mission-board.test.d.ts
│   │   │   ├── mission-board.test.js
│   │   │   ├── model.test.d.ts
│   │   │   ├── model.test.js
│   │   │   ├── omc-state.test.d.ts
│   │   │   ├── omc-state.test.js
│   │   │   ├── prompt-time.test.d.ts
│   │   │   ├── prompt-time.test.js
│   │   │   ├── rate-limits-error.test.d.ts
│   │   │   ├── rate-limits-error.test.js
│   │   │   ├── render-rate-limits-priority.test.d.ts
│   │   │   ├── render-rate-limits-priority.test.js
│   │   │   ├── render.test.d.ts
│   │   │   ├── render.test.js
│   │   │   ├── sanitize.test.d.ts
│   │   │   ├── sanitize.test.js
│   │   │   ├── skills.test.d.ts
│   │   │   ├── skills.test.js
│   │   │   ├── stale-indicator.test.d.ts
│   │   │   ├── stale-indicator.test.js
│   │   │   ├── state.test.d.ts
│   │   │   ├── state.test.js
│   │   │   ├── stdin.test.d.ts
│   │   │   ├── stdin.test.js
│   │   │   ├── thinking.test.d.ts
│   │   │   ├── thinking.test.js
│   │   │   ├── token-usage.test.d.ts
│   │   │   ├── token-usage.test.js
│   │   │   ├── usage-api-lock.test.d.ts
│   │   │   ├── usage-api-lock.test.js
│   │   │   ├── usage-api-stale.test.d.ts
│   │   │   ├── usage-api-stale.test.js
│   │   │   ├── usage-api.test.d.ts
│   │   │   ├── usage-api.test.js
│   │   │   ├── version-display.test.d.ts
│   │   │   ├── version-display.test.js
│   │   │   ├── watch-mode-init.test.d.ts
│   │   │   ├── watch-mode-init.test.js
│   │   │   ├── windows-platform.test.d.ts
│   │   │   └── windows-platform.test.js
│   │   ├── hud-agents.test.d.ts
│   │   ├── hud-agents.test.js
│   │   ├── hud-api-key-source.test.d.ts
│   │   ├── hud-api-key-source.test.js
│   │   ├── hud-build-guidance.test.d.ts
│   │   ├── hud-build-guidance.test.js
│   │   ├── hud-marketplace-resolution.test.d.ts
│   │   ├── hud-marketplace-resolution.test.js
│   │   ├── hud-windows.test.d.ts
│   │   ├── hud-windows.test.js
│   │   ├── installer-hooks-merge.test.d.ts
│   │   ├── installer-hooks-merge.test.js
│   │   ├── installer-hud-skip.test.d.ts
│   │   ├── installer-hud-skip.test.js
│   │   ├── installer-mcp-config.test.d.ts
│   │   ├── installer-mcp-config.test.js
│   │   ├── installer-omc-reference.test.d.ts
│   │   ├── installer-omc-reference.test.js
│   │   ├── installer-plugin-agents.test.d.ts
│   │   ├── installer-plugin-agents.test.js
│   │   ├── installer-version-guard.test.d.ts
│   │   ├── installer-version-guard.test.js
│   │   ├── installer.test.d.ts
│   │   ├── installer.test.js
│   │   ├── job-management-sqlite.test.d.ts
│   │   ├── job-management-sqlite.test.js
│   │   ├── job-management.test.d.ts
│   │   ├── job-management.test.js
│   │   ├── job-state-db.test.d.ts
│   │   ├── job-state-db.test.js
│   │   ├── learner/
│   │   │   ├── auto-learner.test.d.ts
│   │   │   ├── auto-learner.test.js
│   │   │   ├── matcher.test.d.ts
│   │   │   └── matcher.test.js
│   │   ├── live-data.test.d.ts
│   │   ├── live-data.test.js
│   │   ├── load-agent-prompt.test.d.ts
│   │   ├── load-agent-prompt.test.js
│   │   ├── lsp-servers.test.d.ts
│   │   ├── lsp-servers.test.js
│   │   ├── mcp-default-config.test.d.ts
│   │   ├── mcp-default-config.test.js
│   │   ├── mnemosyne/
│   │   │   ├── config.test.d.ts
│   │   │   ├── config.test.js
│   │   │   ├── detector.test.d.ts
│   │   │   ├── detector.test.js
│   │   │   ├── finder.test.d.ts
│   │   │   ├── finder.test.js
│   │   │   ├── loader.test.d.ts
│   │   │   ├── loader.test.js
│   │   │   ├── parser.test.d.ts
│   │   │   ├── parser.test.js
│   │   │   ├── validator.test.d.ts
│   │   │   └── validator.test.js
│   │   ├── model-routing.test.d.ts
│   │   ├── model-routing.test.js
│   │   ├── non-claude-provider-detection.test.d.ts
│   │   ├── non-claude-provider-detection.test.js
│   │   ├── notepad.test.d.ts
│   │   ├── notepad.test.js
│   │   ├── omc-cli-rendering.test.d.ts
│   │   ├── omc-cli-rendering.test.js
│   │   ├── omc-tools-contract.test.d.ts
│   │   ├── omc-tools-contract.test.js
│   │   ├── omc-tools-server-interop.test.d.ts
│   │   ├── omc-tools-server-interop.test.js
│   │   ├── omc-tools-server.test.d.ts
│   │   ├── omc-tools-server.test.js
│   │   ├── package-dir-resolution-regression.test.d.ts
│   │   ├── package-dir-resolution-regression.test.js
│   │   ├── permission-enforcement.test.d.ts
│   │   ├── permission-enforcement.test.js
│   │   ├── pipeline-orchestrator.test.d.ts
│   │   ├── pipeline-orchestrator.test.js
│   │   ├── plugin-setup-deps.test.d.ts
│   │   ├── plugin-setup-deps.test.js
│   │   ├── pre-compact-cwd.test.d.ts
│   │   ├── pre-compact-cwd.test.js
│   │   ├── pre-tool-enforcer.test.d.ts
│   │   ├── pre-tool-enforcer.test.js
│   │   ├── project-memory-merge.test.d.ts
│   │   ├── project-memory-merge.test.js
│   │   ├── prompt-injection.test.d.ts
│   │   ├── prompt-injection.test.js
│   │   ├── protected-mode-regressions.test.d.ts
│   │   ├── protected-mode-regressions.test.js
│   │   ├── providers/
│   │   │   ├── azure-devops.test.d.ts
│   │   │   ├── azure-devops.test.js
│   │   │   ├── bitbucket.test.d.ts
│   │   │   ├── bitbucket.test.js
│   │   │   ├── detection.test.d.ts
│   │   │   ├── detection.test.js
│   │   │   ├── gitea.test.d.ts
│   │   │   ├── gitea.test.js
│   │   │   ├── github.test.d.ts
│   │   │   ├── github.test.js
│   │   │   ├── gitlab.test.d.ts
│   │   │   └── gitlab.test.js
│   │   ├── purge-stale-cache.test.d.ts
│   │   ├── purge-stale-cache.test.js
│   │   ├── ralph-prd-mandatory.test.d.ts
│   │   ├── ralph-prd-mandatory.test.js
│   │   ├── ralph-prd.test.d.ts
│   │   ├── ralph-prd.test.js
│   │   ├── ralph-progress.test.d.ts
│   │   ├── ralph-progress.test.js
│   │   ├── rate-limit-wait/
│   │   │   ├── daemon-bootstrap.test.d.ts
│   │   │   ├── daemon-bootstrap.test.js
│   │   │   ├── daemon.test.d.ts
│   │   │   ├── daemon.test.js
│   │   │   ├── integration.test.d.ts
│   │   │   ├── integration.test.js
│   │   │   ├── rate-limit-monitor.test.d.ts
│   │   │   ├── rate-limit-monitor.test.js
│   │   │   ├── tmux-detector.test.d.ts
│   │   │   └── tmux-detector.test.js
│   │   ├── resolve-node.test.d.ts
│   │   ├── resolve-node.test.js
│   │   ├── resolve-transcript-path.test.d.ts
│   │   ├── resolve-transcript-path.test.js
│   │   ├── routing-force-inherit.test.d.ts
│   │   ├── routing-force-inherit.test.js
│   │   ├── run-cjs-graceful-fallback.test.d.ts
│   │   ├── run-cjs-graceful-fallback.test.js
│   │   ├── session-history-search.test.d.ts
│   │   ├── session-history-search.test.js
│   │   ├── session-start-cache-cleanup.test.d.ts
│   │   ├── session-start-cache-cleanup.test.js
│   │   ├── session-start-script-context.test.d.ts
│   │   ├── session-start-script-context.test.js
│   │   ├── setup-claude-md-script.test.d.ts
│   │   ├── setup-claude-md-script.test.js
│   │   ├── shared-memory-concurrency.test.d.ts
│   │   ├── shared-memory-concurrency.test.js
│   │   ├── shared-memory.test.d.ts
│   │   ├── shared-memory.test.js
│   │   ├── skills.test.d.ts
│   │   ├── skills.test.js
│   │   ├── slack-socket.test.d.ts
│   │   ├── slack-socket.test.js
│   │   ├── smoke-pipeline-edge.test.d.ts
│   │   ├── smoke-pipeline-edge.test.js
│   │   ├── smoke-slack-and-state.test.d.ts
│   │   ├── smoke-slack-and-state.test.js
│   │   ├── ssrf-guard.test.d.ts
│   │   ├── ssrf-guard.test.js
│   │   ├── standalone-server.test.d.ts
│   │   ├── standalone-server.test.js
│   │   ├── task-continuation.test.d.ts
│   │   ├── task-continuation.test.js
│   │   ├── team-server-validation.test.d.ts
│   │   ├── team-server-validation.test.js
│   │   ├── tier0-contracts.test.d.ts
│   │   ├── tier0-contracts.test.js
│   │   ├── tier0-docs-consistency.test.d.ts
│   │   ├── tier0-docs-consistency.test.js
│   │   ├── tools/
│   │   │   ├── skills-tools.test.d.ts
│   │   │   ├── skills-tools.test.js
│   │   │   ├── trace-tools.test.d.ts
│   │   │   └── trace-tools.test.js
│   │   ├── types.test.d.ts
│   │   ├── types.test.js
│   │   ├── version-helper.test.d.ts
│   │   ├── version-helper.test.js
│   │   ├── visual-verdict-skill.test.d.ts
│   │   └── visual-verdict-skill.test.js
│   ├── agents/
│   │   ├── analyst.d.ts
│   │   ├── analyst.js
│   │   ├── architect.d.ts
│   │   ├── architect.js
│   │   ├── critic.d.ts
│   │   ├── critic.js
│   │   ├── definitions.d.ts
│   │   ├── definitions.js
│   │   ├── designer.d.ts
│   │   ├── designer.js
│   │   ├── document-specialist.d.ts
│   │   ├── document-specialist.js
│   │   ├── executor.d.ts
│   │   ├── executor.js
│   │   ├── explore.d.ts
│   │   ├── explore.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── planner.d.ts
│   │   ├── planner.js
│   │   ├── prompt-helpers.d.ts
│   │   ├── prompt-helpers.js
│   │   ├── prompt-sections/
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── qa-tester.d.ts
│   │   ├── qa-tester.js
│   │   ├── scientist.d.ts
│   │   ├── scientist.js
│   │   ├── tracer.d.ts
│   │   ├── tracer.js
│   │   ├── types.d.ts
│   │   ├── types.js
│   │   ├── utils.d.ts
│   │   ├── utils.js
│   │   ├── writer.d.ts
│   │   └── writer.js
│   ├── autoresearch/
│   │   ├── __tests__/
│   │   │   ├── contracts.test.d.ts
│   │   │   ├── contracts.test.js
│   │   │   ├── runtime-parity-extra.test.d.ts
│   │   │   ├── runtime-parity-extra.test.js
│   │   │   ├── runtime.test.d.ts
│   │   │   ├── runtime.test.js
│   │   │   ├── setup-contract.test.d.ts
│   │   │   └── setup-contract.test.js
│   │   ├── contracts.d.ts
│   │   ├── contracts.js
│   │   ├── runtime.d.ts
│   │   ├── runtime.js
│   │   ├── setup-contract.d.ts
│   │   └── setup-contract.js
│   ├── cli/
│   │   ├── __tests__/
│   │   │   ├── ask.test.d.ts
│   │   │   ├── ask.test.js
│   │   │   ├── autoresearch-guided.test.d.ts
│   │   │   ├── autoresearch-guided.test.js
│   │   │   ├── autoresearch-intake.test.d.ts
│   │   │   ├── autoresearch-intake.test.js
│   │   │   ├── autoresearch-setup-session.test.d.ts
│   │   │   ├── autoresearch-setup-session.test.js
│   │   │   ├── autoresearch.test.d.ts
│   │   │   ├── autoresearch.test.js
│   │   │   ├── cli-boot.test.d.ts
│   │   │   ├── cli-boot.test.js
│   │   │   ├── hud-watch.test.d.ts
│   │   │   ├── hud-watch.test.js
│   │   │   ├── launch.test.d.ts
│   │   │   ├── launch.test.js
│   │   │   ├── session-search-help.test.d.ts
│   │   │   ├── session-search-help.test.js
│   │   │   ├── session-search.test.d.ts
│   │   │   ├── session-search.test.js
│   │   │   ├── team-command-branding.test.d.ts
│   │   │   ├── team-command-branding.test.js
│   │   │   ├── team-help.test.d.ts
│   │   │   ├── team-help.test.js
│   │   │   ├── team-runtime-boundary.test.d.ts
│   │   │   ├── team-runtime-boundary.test.js
│   │   │   ├── team.test.d.ts
│   │   │   ├── team.test.js
│   │   │   ├── teleport-help.test.d.ts
│   │   │   ├── teleport-help.test.js
│   │   │   ├── tmux-utils.test.d.ts
│   │   │   └── tmux-utils.test.js
│   │   ├── ask.d.ts
│   │   ├── ask.js
│   │   ├── autoresearch-guided.d.ts
│   │   ├── autoresearch-guided.js
│   │   ├── autoresearch-intake.d.ts
│   │   ├── autoresearch-intake.js
│   │   ├── autoresearch-setup-session.d.ts
│   │   ├── autoresearch-setup-session.js
│   │   ├── autoresearch.d.ts
│   │   ├── autoresearch.js
│   │   ├── commands/
│   │   │   ├── __tests__/
│   │   │   │   ├── team.test.d.ts
│   │   │   │   ├── team.test.js
│   │   │   │   ├── teleport.test.d.ts
│   │   │   │   └── teleport.test.js
│   │   │   ├── doctor-conflicts.d.ts
│   │   │   ├── doctor-conflicts.js
│   │   │   ├── ralphthon.d.ts
│   │   │   ├── ralphthon.js
│   │   │   ├── session-search.d.ts
│   │   │   ├── session-search.js
│   │   │   ├── team.d.ts
│   │   │   ├── team.js
│   │   │   ├── teleport.d.ts
│   │   │   ├── teleport.js
│   │   │   ├── wait.d.ts
│   │   │   └── wait.js
│   │   ├── hud-watch.d.ts
│   │   ├── hud-watch.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── interop.d.ts
│   │   ├── interop.js
│   │   ├── launch.d.ts
│   │   ├── launch.js
│   │   ├── team.d.ts
│   │   ├── team.js
│   │   ├── tmux-utils.d.ts
│   │   ├── tmux-utils.js
│   │   ├── utils/
│   │   │   ├── formatting.d.ts
│   │   │   └── formatting.js
│   │   ├── win32-warning.d.ts
│   │   └── win32-warning.js
│   ├── commands/
│   │   ├── index.d.ts
│   │   └── index.js
│   ├── config/
│   │   ├── __tests__/
│   │   │   ├── loader.test.d.ts
│   │   │   ├── loader.test.js
│   │   │   ├── models.test.d.ts
│   │   │   ├── models.test.js
│   │   │   ├── plan-output.test.d.ts
│   │   │   ├── plan-output.test.js
│   │   │   ├── test-helpers.d.ts
│   │   │   └── test-helpers.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── loader.d.ts
│   │   ├── loader.js
│   │   ├── models.d.ts
│   │   ├── models.js
│   │   ├── plan-output.d.ts
│   │   └── plan-output.js
│   ├── constants/
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── names.d.ts
│   │   └── names.js
│   ├── features/
│   │   ├── auto-update.d.ts
│   │   ├── auto-update.js
│   │   ├── background-agent/
│   │   │   ├── concurrency.d.ts
│   │   │   ├── concurrency.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── manager.d.ts
│   │   │   ├── manager.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── background-tasks.d.ts
│   │   ├── background-tasks.js
│   │   ├── boulder-state/
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── storage.d.ts
│   │   │   ├── storage.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── builtin-skills/
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── runtime-guidance.d.ts
│   │   │   ├── runtime-guidance.js
│   │   │   ├── skills.d.ts
│   │   │   ├── skills.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── context-injector/
│   │   │   ├── collector.d.ts
│   │   │   ├── collector.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── injector.d.ts
│   │   │   ├── injector.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── continuation-enforcement.d.ts
│   │   ├── continuation-enforcement.js
│   │   ├── delegation-categories/
│   │   │   ├── __tests__/
│   │   │   │   ├── index.test.d.ts
│   │   │   │   └── index.test.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── test-categories.d.ts
│   │   │   ├── test-categories.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── delegation-enforcer.d.ts
│   │   ├── delegation-enforcer.js
│   │   ├── delegation-routing/
│   │   │   ├── __tests__/
│   │   │   │   ├── resolver.test.d.ts
│   │   │   │   └── resolver.test.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── resolver.d.ts
│   │   │   ├── resolver.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── magic-keywords.d.ts
│   │   ├── magic-keywords.js
│   │   ├── model-routing/
│   │   │   ├── __tests__/
│   │   │   │   ├── index.test.d.ts
│   │   │   │   └── index.test.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── prompts/
│   │   │   │   ├── haiku.d.ts
│   │   │   │   ├── haiku.js
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.js
│   │   │   │   ├── opus.d.ts
│   │   │   │   ├── opus.js
│   │   │   │   ├── sonnet.d.ts
│   │   │   │   └── sonnet.js
│   │   │   ├── router.d.ts
│   │   │   ├── router.js
│   │   │   ├── rules.d.ts
│   │   │   ├── rules.js
│   │   │   ├── scorer.d.ts
│   │   │   ├── scorer.js
│   │   │   ├── signals.d.ts
│   │   │   ├── signals.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── notepad-wisdom/
│   │   │   ├── extractor.d.ts
│   │   │   ├── extractor.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── rate-limit-wait/
│   │   │   ├── daemon.d.ts
│   │   │   ├── daemon.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── rate-limit-monitor.d.ts
│   │   │   ├── rate-limit-monitor.js
│   │   │   ├── tmux-detector.d.ts
│   │   │   ├── tmux-detector.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── session-history-search/
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── state-manager/
│   │   │   ├── __tests__/
│   │   │   │   ├── cache.test.d.ts
│   │   │   │   └── cache.test.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── task-decomposer/
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   └── verification/
│   │       ├── index.d.ts
│   │       ├── index.js
│   │       ├── types.d.ts
│   │       └── types.js
│   ├── hooks/
│   │   ├── __tests__/
│   │   │   ├── askuserquestion-lifecycle.test.d.ts
│   │   │   ├── askuserquestion-lifecycle.test.js
│   │   │   ├── background-process-guard.test.d.ts
│   │   │   ├── background-process-guard.test.js
│   │   │   ├── bridge-openclaw.test.d.ts
│   │   │   ├── bridge-openclaw.test.js
│   │   │   ├── bridge-pkill.test.d.ts
│   │   │   ├── bridge-pkill.test.js
│   │   │   ├── bridge-routing.test.d.ts
│   │   │   ├── bridge-routing.test.js
│   │   │   ├── bridge-security.test.d.ts
│   │   │   ├── bridge-security.test.js
│   │   │   ├── bridge-team-worker-guard.test.d.ts
│   │   │   ├── bridge-team-worker-guard.test.js
│   │   │   ├── bridge.test.d.ts
│   │   │   ├── bridge.test.js
│   │   │   ├── codebase-map.test.d.ts
│   │   │   ├── codebase-map.test.js
│   │   │   ├── compaction-concurrency.test.d.ts
│   │   │   ├── compaction-concurrency.test.js
│   │   │   ├── stop-hook-openclaw-cooldown.test.d.ts
│   │   │   └── stop-hook-openclaw-cooldown.test.js
│   │   ├── agent-usage-reminder/
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── storage.d.ts
│   │   │   ├── storage.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── agents-overlay.d.ts
│   │   ├── agents-overlay.js
│   │   ├── auto-slash-command/
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── detector.d.ts
│   │   │   ├── detector.js
│   │   │   ├── executor.d.ts
│   │   │   ├── executor.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── live-data.d.ts
│   │   │   ├── live-data.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── autopilot/
│   │   │   ├── __tests__/
│   │   │   │   ├── cancel.test.d.ts
│   │   │   │   ├── cancel.test.js
│   │   │   │   ├── pipeline.test.d.ts
│   │   │   │   ├── pipeline.test.js
│   │   │   │   ├── prompts.test.d.ts
│   │   │   │   ├── prompts.test.js
│   │   │   │   ├── state.test.d.ts
│   │   │   │   ├── state.test.js
│   │   │   │   ├── summary.test.d.ts
│   │   │   │   ├── summary.test.js
│   │   │   │   ├── transition.test.d.ts
│   │   │   │   ├── transition.test.js
│   │   │   │   ├── transitions.test.d.ts
│   │   │   │   ├── transitions.test.js
│   │   │   │   ├── validation.test.d.ts
│   │   │   │   └── validation.test.js
│   │   │   ├── adapters/
│   │   │   │   ├── execution-adapter.d.ts
│   │   │   │   ├── execution-adapter.js
│   │   │   │   ├── index.d.ts
│   │   │   │   ├── index.js
│   │   │   │   ├── qa-adapter.d.ts
│   │   │   │   ├── qa-adapter.js
│   │   │   │   ├── ralph-adapter.d.ts
│   │   │   │   ├── ralph-adapter.js
│   │   │   │   ├── ralplan-adapter.d.ts
│   │   │   │   └── ralplan-adapter.js
│   │   │   ├── cancel.d.ts
│   │   │   ├── cancel.js
│   │   │   ├── enforcement.d.ts
│   │   │   ├── enforcement.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── pipeline-types.d.ts
│   │   │   ├── pipeline-types.js
│   │   │   ├── pipeline.d.ts
│   │   │   ├── pipeline.js
│   │   │   ├── prompts.d.ts
│   │   │   ├── prompts.js
│   │   │   ├── state.d.ts
│   │   │   ├── state.js
│   │   │   ├── transition-helper.d.ts
│   │   │   ├── transition-helper.js
│   │   │   ├── types.d.ts
│   │   │   ├── types.js
│   │   │   ├── validation.d.ts
│   │   │   └── validation.js
│   │   ├── background-notification/
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── beads-context/
│   │   │   ├── __tests__/
│   │   │   │   ├── index.test.d.ts
│   │   │   │   └── index.test.js
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── bridge-normalize.d.ts
│   │   ├── bridge-normalize.js
│   │   ├── bridge.d.ts
│   │   ├── bridge.js
│   │   ├── code-simplifier/
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── codebase-map.d.ts
│   │   ├── codebase-map.js
│   │   ├── comment-checker/
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── filters.d.ts
│   │   │   ├── filters.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── directory-readme-injector/
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── storage.d.ts
│   │   │   ├── storage.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── empty-message-sanitizer/
│   │   │   ├── __tests__/
│   │   │   │   ├── index.test.d.ts
│   │   │   │   └── index.test.js
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── factcheck/
│   │   │   ├── __tests__/
│   │   │   │   ├── factcheck.test.d.ts
│   │   │   │   ├── factcheck.test.js
│   │   │   │   ├── sentinel-gate.test.d.ts
│   │   │   │   ├── sentinel-gate.test.js
│   │   │   │   ├── sentinel.test.d.ts
│   │   │   │   └── sentinel.test.js
│   │   │   ├── checks.d.ts
│   │   │   ├── checks.js
│   │   │   ├── config.d.ts
│   │   │   ├── config.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── sentinel.d.ts
│   │   │   ├── sentinel.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── keyword-detector/
│   │   │   ├── __tests__/
│   │   │   │   ├── index.test.d.ts
│   │   │   │   └── index.test.js
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── learner/
│   │   │   ├── auto-invoke.d.ts
│   │   │   ├── auto-invoke.js
│   │   │   ├── auto-learner.d.ts
│   │   │   ├── auto-learner.js
│   │   │   ├── bridge.d.ts
│   │   │   ├── bridge.js
│   │   │   ├── config.d.ts
│   │   │   ├── config.js
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── detection-hook.d.ts
│   │   │   ├── detection-hook.js
│   │   │   ├── detector.d.ts
│   │   │   ├── detector.js
│   │   │   ├── finder.d.ts
│   │   │   ├── finder.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── loader.d.ts
│   │   │   ├── loader.js
│   │   │   ├── matcher.d.ts
│   │   │   ├── matcher.js
│   │   │   ├── parser.d.ts
│   │   │   ├── parser.js
│   │   │   ├── promotion.d.ts
│   │   │   ├── promotion.js
│   │   │   ├── transliteration-map.d.ts
│   │   │   ├── transliteration-map.js
│   │   │   ├── types.d.ts
│   │   │   ├── types.js
│   │   │   ├── validator.d.ts
│   │   │   ├── validator.js
│   │   │   ├── writer.d.ts
│   │   │   └── writer.js
│   │   ├── mode-registry/
│   │   │   ├── __tests__/
│   │   │   │   ├── session-isolation.test.d.ts
│   │   │   │   └── session-isolation.test.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── non-interactive-env/
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── detector.d.ts
│   │   │   ├── detector.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── index.test.d.ts
│   │   │   ├── index.test.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── notepad/
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── omc-orchestrator/
│   │   │   ├── audit.d.ts
│   │   │   ├── audit.js
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── permission-handler/
│   │   │   ├── __tests__/
│   │   │   │   ├── index.test.d.ts
│   │   │   │   └── index.test.js
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── persistent-mode/
│   │   │   ├── __tests__/
│   │   │   │   ├── cancel-race.test.d.ts
│   │   │   │   ├── cancel-race.test.js
│   │   │   │   ├── error-handling.test.d.ts
│   │   │   │   ├── error-handling.test.js
│   │   │   │   ├── idle-cooldown.test.d.ts
│   │   │   │   ├── idle-cooldown.test.js
│   │   │   │   ├── ralph-max-iteration.test.d.ts
│   │   │   │   ├── ralph-max-iteration.test.js
│   │   │   │   ├── ralph-verification-flow.test.d.ts
│   │   │   │   ├── ralph-verification-flow.test.js
│   │   │   │   ├── rate-limit-stop.test.d.ts
│   │   │   │   ├── rate-limit-stop.test.js
│   │   │   │   ├── skill-state-stop.test.d.ts
│   │   │   │   ├── skill-state-stop.test.js
│   │   │   │   ├── team-ralplan-stop.test.d.ts
│   │   │   │   ├── team-ralplan-stop.test.js
│   │   │   │   ├── tool-error.test.d.ts
│   │   │   │   └── tool-error.test.js
│   │   │   ├── idle-cooldown.test.d.ts
│   │   │   ├── idle-cooldown.test.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── session-isolation.test.d.ts
│   │   │   ├── session-isolation.test.js
│   │   │   ├── stop-hook-blocking.test.d.ts
│   │   │   └── stop-hook-blocking.test.js
│   │   ├── plugin-patterns/
│   │   │   ├── __tests__/
│   │   │   │   ├── index.test.d.ts
│   │   │   │   └── index.test.js
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── pre-compact/
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── preemptive-compaction/
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── project-memory/
│   │   │   ├── __tests__/
│   │   │   │   ├── detector.test.d.ts
│   │   │   │   ├── detector.test.js
│   │   │   │   ├── formatter.test.d.ts
│   │   │   │   ├── formatter.test.js
│   │   │   │   ├── integration.test.d.ts
│   │   │   │   ├── integration.test.js
│   │   │   │   ├── learner.test.d.ts
│   │   │   │   ├── learner.test.js
│   │   │   │   ├── pre-compact.test.d.ts
│   │   │   │   ├── pre-compact.test.js
│   │   │   │   ├── storage.test.d.ts
│   │   │   │   └── storage.test.js
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── detector.d.ts
│   │   │   ├── detector.js
│   │   │   ├── directive-detector.d.ts
│   │   │   ├── directive-detector.js
│   │   │   ├── directory-mapper.d.ts
│   │   │   ├── directory-mapper.js
│   │   │   ├── formatter.d.ts
│   │   │   ├── formatter.js
│   │   │   ├── hot-path-tracker.d.ts
│   │   │   ├── hot-path-tracker.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── learner.d.ts
│   │   │   ├── learner.js
│   │   │   ├── pre-compact.d.ts
│   │   │   ├── pre-compact.js
│   │   │   ├── storage.d.ts
│   │   │   ├── storage.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── ralph/
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── loop.d.ts
│   │   │   ├── loop.js
│   │   │   ├── prd.d.ts
│   │   │   ├── prd.js
│   │   │   ├── progress.d.ts
│   │   │   ├── progress.js
│   │   │   ├── verifier.d.ts
│   │   │   └── verifier.js
│   │   ├── recovery/
│   │   │   ├── __tests__/
│   │   │   │   ├── storage.test.d.ts
│   │   │   │   └── storage.test.js
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── context-window.d.ts
│   │   │   ├── context-window.js
│   │   │   ├── edit-error.d.ts
│   │   │   ├── edit-error.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── session-recovery.d.ts
│   │   │   ├── session-recovery.js
│   │   │   ├── storage.d.ts
│   │   │   ├── storage.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── rules-injector/
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── finder.d.ts
│   │   │   ├── finder.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── matcher.d.ts
│   │   │   ├── matcher.js
│   │   │   ├── parser.d.ts
│   │   │   ├── parser.js
│   │   │   ├── storage.d.ts
│   │   │   ├── storage.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── session-end/
│   │   │   ├── __tests__/
│   │   │   │   ├── callbacks.test.d.ts
│   │   │   │   ├── callbacks.test.js
│   │   │   │   ├── duplicate-notifications.test.d.ts
│   │   │   │   ├── duplicate-notifications.test.js
│   │   │   │   ├── mode-state-cleanup.test.d.ts
│   │   │   │   ├── mode-state-cleanup.test.js
│   │   │   │   ├── openclaw-session-end.test.d.ts
│   │   │   │   ├── openclaw-session-end.test.js
│   │   │   │   ├── python-repl-cleanup.test.d.ts
│   │   │   │   ├── python-repl-cleanup.test.js
│   │   │   │   ├── session-duration.test.d.ts
│   │   │   │   ├── session-duration.test.js
│   │   │   │   ├── session-end-bridge-cleanup.test.d.ts
│   │   │   │   ├── session-end-bridge-cleanup.test.js
│   │   │   │   ├── session-end-timeout.test.d.ts
│   │   │   │   ├── session-end-timeout.test.js
│   │   │   │   ├── subdirectory-cwd.test.d.ts
│   │   │   │   ├── subdirectory-cwd.test.js
│   │   │   │   ├── team-cleanup.test.d.ts
│   │   │   │   └── team-cleanup.test.js
│   │   │   ├── callbacks.d.ts
│   │   │   ├── callbacks.js
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── setup/
│   │   │   ├── __tests__/
│   │   │   │   ├── prune.test.d.ts
│   │   │   │   ├── prune.test.js
│   │   │   │   ├── windows-patch.test.d.ts
│   │   │   │   └── windows-patch.test.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── skill-bridge.cjs
│   │   ├── skill-state/
│   │   │   ├── __tests__/
│   │   │   │   ├── skill-state.test.d.ts
│   │   │   │   └── skill-state.test.js
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── subagent-tracker/
│   │   │   ├── __tests__/
│   │   │   │   ├── flow-tracer.test.d.ts
│   │   │   │   ├── flow-tracer.test.js
│   │   │   │   ├── flush-race.test.d.ts
│   │   │   │   ├── flush-race.test.js
│   │   │   │   ├── index.test.d.ts
│   │   │   │   ├── index.test.js
│   │   │   │   ├── session-replay.test.d.ts
│   │   │   │   └── session-replay.test.js
│   │   │   ├── flow-tracer.d.ts
│   │   │   ├── flow-tracer.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── session-replay.d.ts
│   │   │   └── session-replay.js
│   │   ├── task-size-detector/
│   │   │   ├── __tests__/
│   │   │   │   ├── index.test.d.ts
│   │   │   │   └── index.test.js
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── team-dispatch-hook.d.ts
│   │   ├── team-dispatch-hook.js
│   │   ├── team-leader-nudge-hook.d.ts
│   │   ├── team-leader-nudge-hook.js
│   │   ├── team-pipeline/
│   │   │   ├── __tests__/
│   │   │   │   ├── transitions.test.d.ts
│   │   │   │   └── transitions.test.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── state.d.ts
│   │   │   ├── state.js
│   │   │   ├── transitions.d.ts
│   │   │   ├── transitions.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── team-worker-hook.d.ts
│   │   ├── team-worker-hook.js
│   │   ├── think-mode/
│   │   │   ├── __tests__/
│   │   │   │   ├── index.test.d.ts
│   │   │   │   └── index.test.js
│   │   │   ├── detector.d.ts
│   │   │   ├── detector.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── switcher.d.ts
│   │   │   ├── switcher.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── thinking-block-validator/
│   │   │   ├── __tests__/
│   │   │   │   ├── index.test.d.ts
│   │   │   │   └── index.test.js
│   │   │   ├── constants.d.ts
│   │   │   ├── constants.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── todo-continuation/
│   │   │   ├── __tests__/
│   │   │   │   ├── isAuthenticationError.test.d.ts
│   │   │   │   ├── isAuthenticationError.test.js
│   │   │   │   ├── isRateLimitStop.test.d.ts
│   │   │   │   ├── isRateLimitStop.test.js
│   │   │   │   ├── isUserAbort.test.d.ts
│   │   │   │   └── isUserAbort.test.js
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   ├── ultraqa/
│   │   │   ├── index.d.ts
│   │   │   └── index.js
│   │   └── ultrawork/
│   │       ├── index.d.ts
│   │       ├── index.js
│   │       ├── session-isolation.test.d.ts
│   │       └── session-isolation.test.js
│   ├── hud/
│   │   ├── background-cleanup.d.ts
│   │   ├── background-cleanup.js
│   │   ├── background-tasks.d.ts
│   │   ├── background-tasks.js
│   │   ├── colors.d.ts
│   │   ├── colors.js
│   │   ├── custom-rate-provider.d.ts
│   │   ├── custom-rate-provider.js
│   │   ├── elements/
│   │   │   ├── agents.d.ts
│   │   │   ├── agents.js
│   │   │   ├── api-key-source.d.ts
│   │   │   ├── api-key-source.js
│   │   │   ├── autopilot.d.ts
│   │   │   ├── autopilot.js
│   │   │   ├── background.d.ts
│   │   │   ├── background.js
│   │   │   ├── call-counts.d.ts
│   │   │   ├── call-counts.js
│   │   │   ├── context-warning.d.ts
│   │   │   ├── context-warning.js
│   │   │   ├── context.d.ts
│   │   │   ├── context.js
│   │   │   ├── cwd.d.ts
│   │   │   ├── cwd.js
│   │   │   ├── git.d.ts
│   │   │   ├── git.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── limits.d.ts
│   │   │   ├── limits.js
│   │   │   ├── mission-board.d.ts
│   │   │   ├── mission-board.js
│   │   │   ├── model.d.ts
│   │   │   ├── model.js
│   │   │   ├── permission.d.ts
│   │   │   ├── permission.js
│   │   │   ├── prd.d.ts
│   │   │   ├── prd.js
│   │   │   ├── prompt-time.d.ts
│   │   │   ├── prompt-time.js
│   │   │   ├── ralph.d.ts
│   │   │   ├── ralph.js
│   │   │   ├── session-summary.d.ts
│   │   │   ├── session-summary.js
│   │   │   ├── session.d.ts
│   │   │   ├── session.js
│   │   │   ├── skills.d.ts
│   │   │   ├── skills.js
│   │   │   ├── thinking.d.ts
│   │   │   ├── thinking.js
│   │   │   ├── todos.d.ts
│   │   │   ├── todos.js
│   │   │   ├── token-usage.d.ts
│   │   │   └── token-usage.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── mission-board.d.ts
│   │   ├── mission-board.js
│   │   ├── omc-state.d.ts
│   │   ├── omc-state.js
│   │   ├── render.d.ts
│   │   ├── render.js
│   │   ├── sanitize.d.ts
│   │   ├── sanitize.js
│   │   ├── state.d.ts
│   │   ├── state.js
│   │   ├── stdin.d.ts
│   │   ├── stdin.js
│   │   ├── transcript.d.ts
│   │   ├── transcript.js
│   │   ├── types.d.ts
│   │   ├── types.js
│   │   ├── usage-api.d.ts
│   │   └── usage-api.js
│   ├── index.d.ts
│   ├── index.js
│   ├── installer/
│   │   ├── __tests__/
│   │   │   ├── claude-md-merge.test.d.ts
│   │   │   ├── claude-md-merge.test.js
│   │   │   ├── hook-templates.test.d.ts
│   │   │   ├── hook-templates.test.js
│   │   │   ├── mcp-registry.test.d.ts
│   │   │   ├── mcp-registry.test.js
│   │   │   ├── safe-installer.test.d.ts
│   │   │   ├── safe-installer.test.js
│   │   │   ├── session-start-template.test.d.ts
│   │   │   └── session-start-template.test.js
│   │   ├── hooks.d.ts
│   │   ├── hooks.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── mcp-registry.d.ts
│   │   └── mcp-registry.js
│   ├── interop/
│   │   ├── __tests__/
│   │   │   ├── mcp-bridge.test.d.ts
│   │   │   └── mcp-bridge.test.js
│   │   ├── mcp-bridge.d.ts
│   │   ├── mcp-bridge.js
│   │   ├── omx-team-state.d.ts
│   │   ├── omx-team-state.js
│   │   ├── shared-state.d.ts
│   │   └── shared-state.js
│   ├── lib/
│   │   ├── __tests__/
│   │   │   ├── mode-state-io.test.d.ts
│   │   │   ├── mode-state-io.test.js
│   │   │   ├── payload-limits.test.d.ts
│   │   │   ├── payload-limits.test.js
│   │   │   ├── swallowed-error.test.d.ts
│   │   │   ├── swallowed-error.test.js
│   │   │   ├── worktree-paths.test.d.ts
│   │   │   └── worktree-paths.test.js
│   │   ├── atomic-write.d.ts
│   │   ├── atomic-write.js
│   │   ├── featured-contributors.d.ts
│   │   ├── featured-contributors.js
│   │   ├── file-lock.d.ts
│   │   ├── file-lock.js
│   │   ├── job-state-db.d.ts
│   │   ├── job-state-db.js
│   │   ├── mode-names.d.ts
│   │   ├── mode-names.js
│   │   ├── mode-state-io.d.ts
│   │   ├── mode-state-io.js
│   │   ├── payload-limits.d.ts
│   │   ├── payload-limits.js
│   │   ├── project-memory-merge.d.ts
│   │   ├── project-memory-merge.js
│   │   ├── session-isolation.d.ts
│   │   ├── session-isolation.js
│   │   ├── shared-memory.d.ts
│   │   ├── shared-memory.js
│   │   ├── swallowed-error.d.ts
│   │   ├── swallowed-error.js
│   │   ├── version.d.ts
│   │   ├── version.js
│   │   ├── worktree-paths.d.ts
│   │   └── worktree-paths.js
│   ├── mcp/
│   │   ├── __tests__/
│   │   │   ├── prompt-injection.test.d.ts
│   │   │   ├── prompt-injection.test.js
│   │   │   ├── standalone-shutdown.test.d.ts
│   │   │   ├── standalone-shutdown.test.js
│   │   │   ├── team-cleanup.test.d.ts
│   │   │   ├── team-cleanup.test.js
│   │   │   ├── team-server-artifact-convergence.test.d.ts
│   │   │   └── team-server-artifact-convergence.test.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── job-management.d.ts
│   │   ├── job-management.js
│   │   ├── mcp-config.d.ts
│   │   ├── mcp-config.js
│   │   ├── omc-tools-server.d.ts
│   │   ├── omc-tools-server.js
│   │   ├── prompt-injection.d.ts
│   │   ├── prompt-injection.js
│   │   ├── prompt-persistence.d.ts
│   │   ├── prompt-persistence.js
│   │   ├── servers.d.ts
│   │   ├── servers.js
│   │   ├── standalone-server.d.ts
│   │   ├── standalone-server.js
│   │   ├── standalone-shutdown.d.ts
│   │   ├── standalone-shutdown.js
│   │   ├── team-job-convergence.d.ts
│   │   ├── team-job-convergence.js
│   │   ├── team-server.d.ts
│   │   └── team-server.js
│   ├── notifications/
│   │   ├── __tests__/
│   │   │   ├── config-merge.test.d.ts
│   │   │   ├── config-merge.test.js
│   │   │   ├── config.test.d.ts
│   │   │   ├── config.test.js
│   │   │   ├── custom-integration.test.d.ts
│   │   │   ├── custom-integration.test.js
│   │   │   ├── dispatcher.test.d.ts
│   │   │   ├── dispatcher.test.js
│   │   │   ├── formatter.test.d.ts
│   │   │   ├── formatter.test.js
│   │   │   ├── hook-config.test.d.ts
│   │   │   ├── hook-config.test.js
│   │   │   ├── notify-registry-integration.test.d.ts
│   │   │   ├── notify-registry-integration.test.js
│   │   │   ├── platform-gating.test.d.ts
│   │   │   ├── platform-gating.test.js
│   │   │   ├── profiles.test.d.ts
│   │   │   ├── profiles.test.js
│   │   │   ├── redact.test.d.ts
│   │   │   ├── redact.test.js
│   │   │   ├── reply-config.test.d.ts
│   │   │   ├── reply-config.test.js
│   │   │   ├── reply-listener.test.d.ts
│   │   │   ├── reply-listener.test.js
│   │   │   ├── session-registry.test.d.ts
│   │   │   ├── session-registry.test.js
│   │   │   ├── slack-socket.test.d.ts
│   │   │   ├── slack-socket.test.js
│   │   │   ├── template-engine.test.d.ts
│   │   │   ├── template-engine.test.js
│   │   │   ├── tmux.test.d.ts
│   │   │   ├── tmux.test.js
│   │   │   ├── verbosity.test.d.ts
│   │   │   └── verbosity.test.js
│   │   ├── config.d.ts
│   │   ├── config.js
│   │   ├── dispatcher.d.ts
│   │   ├── dispatcher.js
│   │   ├── formatter.d.ts
│   │   ├── formatter.js
│   │   ├── hook-config-types.d.ts
│   │   ├── hook-config-types.js
│   │   ├── hook-config.d.ts
│   │   ├── hook-config.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── presets.d.ts
│   │   ├── presets.js
│   │   ├── redact.d.ts
│   │   ├── redact.js
│   │   ├── reply-listener.d.ts
│   │   ├── reply-listener.js
│   │   ├── session-registry.d.ts
│   │   ├── session-registry.js
│   │   ├── slack-socket.d.ts
│   │   ├── slack-socket.js
│   │   ├── template-engine.d.ts
│   │   ├── template-engine.js
│   │   ├── template-variables.d.ts
│   │   ├── template-variables.js
│   │   ├── tmux.d.ts
│   │   ├── tmux.js
│   │   ├── types.d.ts
│   │   ├── types.js
│   │   ├── validation.d.ts
│   │   └── validation.js
│   ├── openclaw/
│   │   ├── __tests__/
│   │   │   ├── config.test.d.ts
│   │   │   ├── config.test.js
│   │   │   ├── dispatcher.test.d.ts
│   │   │   ├── dispatcher.test.js
│   │   │   ├── index.test.d.ts
│   │   │   ├── index.test.js
│   │   │   ├── signal.test.d.ts
│   │   │   └── signal.test.js
│   │   ├── config.d.ts
│   │   ├── config.js
│   │   ├── dispatcher.d.ts
│   │   ├── dispatcher.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── signal.d.ts
│   │   ├── signal.js
│   │   ├── types.d.ts
│   │   └── types.js
│   ├── planning/
│   │   ├── __tests__/
│   │   │   ├── artifacts.test.d.ts
│   │   │   └── artifacts.test.js
│   │   ├── artifacts.d.ts
│   │   └── artifacts.js
│   ├── platform/
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── process-utils.d.ts
│   │   └── process-utils.js
│   ├── providers/
│   │   ├── azure-devops.d.ts
│   │   ├── azure-devops.js
│   │   ├── bitbucket.d.ts
│   │   ├── bitbucket.js
│   │   ├── gitea.d.ts
│   │   ├── gitea.js
│   │   ├── github.d.ts
│   │   ├── github.js
│   │   ├── gitlab.d.ts
│   │   ├── gitlab.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── types.d.ts
│   │   └── types.js
│   ├── ralphthon/
│   │   ├── __tests__/
│   │   │   ├── cli.test.d.ts
│   │   │   ├── cli.test.js
│   │   │   ├── orchestrator.test.d.ts
│   │   │   ├── orchestrator.test.js
│   │   │   ├── prd.test.d.ts
│   │   │   └── prd.test.js
│   │   ├── deep-interview-prompt.d.ts
│   │   ├── deep-interview-prompt.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── orchestrator.d.ts
│   │   ├── orchestrator.js
│   │   ├── prd.d.ts
│   │   ├── prd.js
│   │   ├── types.d.ts
│   │   └── types.js
│   ├── shared/
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── types.d.ts
│   │   └── types.js
│   ├── skills/
│   │   └── __tests__/
│   │       ├── mingw-escape.test.d.ts
│   │       └── mingw-escape.test.js
│   ├── team/
│   │   ├── __tests__/
│   │   │   ├── activity-log.test.d.ts
│   │   │   ├── activity-log.test.js
│   │   │   ├── allocation-policy.test.d.ts
│   │   │   ├── allocation-policy.test.js
│   │   │   ├── api-interop.cleanup.test.d.ts
│   │   │   ├── api-interop.cleanup.test.js
│   │   │   ├── api-interop.command-dialect.test.d.ts
│   │   │   ├── api-interop.command-dialect.test.js
│   │   │   ├── api-interop.compatibility.test.d.ts
│   │   │   ├── api-interop.compatibility.test.js
│   │   │   ├── api-interop.cwd-resolution.test.d.ts
│   │   │   ├── api-interop.cwd-resolution.test.js
│   │   │   ├── api-interop.dispatch.test.d.ts
│   │   │   ├── api-interop.dispatch.test.js
│   │   │   ├── audit-log.test.d.ts
│   │   │   ├── audit-log.test.js
│   │   │   ├── auto-cleanup.test.d.ts
│   │   │   ├── auto-cleanup.test.js
│   │   │   ├── bridge-entry.guardrails.test.d.ts
│   │   │   ├── bridge-entry.guardrails.test.js
│   │   │   ├── bridge-entry.test.d.ts
│   │   │   ├── bridge-entry.test.js
│   │   │   ├── bridge-integration.test.d.ts
│   │   │   ├── bridge-integration.test.js
│   │   │   ├── capabilities.test.d.ts
│   │   │   ├── capabilities.test.js
│   │   │   ├── capture-file-snapshot.test.d.ts
│   │   │   ├── capture-file-snapshot.test.js
│   │   │   ├── cli-detection.test.d.ts
│   │   │   ├── cli-detection.test.js
│   │   │   ├── edge-cases.test.d.ts
│   │   │   ├── edge-cases.test.js
│   │   │   ├── events.swallowed-error.test.d.ts
│   │   │   ├── events.swallowed-error.test.js
│   │   │   ├── followup-planner.test.d.ts
│   │   │   ├── followup-planner.test.js
│   │   │   ├── fs-utils.test.d.ts
│   │   │   ├── fs-utils.test.js
│   │   │   ├── git-worktree.test.d.ts
│   │   │   ├── git-worktree.test.js
│   │   │   ├── governance-enforcement.test.d.ts
│   │   │   ├── governance-enforcement.test.js
│   │   │   ├── governance.test.d.ts
│   │   │   ├── governance.test.js
│   │   │   ├── heartbeat.test.d.ts
│   │   │   ├── heartbeat.test.js
│   │   │   ├── idle-nudge.test.d.ts
│   │   │   ├── idle-nudge.test.js
│   │   │   ├── inbox-outbox.test.d.ts
│   │   │   ├── inbox-outbox.test.js
│   │   │   ├── index.compat-exports.test.d.ts
│   │   │   ├── index.compat-exports.test.js
│   │   │   ├── leader-nudge-guidance.test.d.ts
│   │   │   ├── leader-nudge-guidance.test.js
│   │   │   ├── lifecycle-profile.test.d.ts
│   │   │   ├── lifecycle-profile.test.js
│   │   │   ├── mcp-team-bridge.spawn-args.test.d.ts
│   │   │   ├── mcp-team-bridge.spawn-args.test.js
│   │   │   ├── mcp-team-bridge.usage.test.d.ts
│   │   │   ├── mcp-team-bridge.usage.test.js
│   │   │   ├── merge-coordinator.test.d.ts
│   │   │   ├── merge-coordinator.test.js
│   │   │   ├── message-router.test.d.ts
│   │   │   ├── message-router.test.js
│   │   │   ├── model-contract.test.d.ts
│   │   │   ├── model-contract.test.js
│   │   │   ├── outbox-reader.test.d.ts
│   │   │   ├── outbox-reader.test.js
│   │   │   ├── permissions.test.d.ts
│   │   │   ├── permissions.test.js
│   │   │   ├── phase-controller.test.d.ts
│   │   │   ├── phase-controller.test.js
│   │   │   ├── phase1-foundation.test.d.ts
│   │   │   ├── phase1-foundation.test.js
│   │   │   ├── prompt-sanitization.test.d.ts
│   │   │   ├── prompt-sanitization.test.js
│   │   │   ├── role-router.test.d.ts
│   │   │   ├── role-router.test.js
│   │   │   ├── runtime-assign.test.d.ts
│   │   │   ├── runtime-assign.test.js
│   │   │   ├── runtime-cli.test.d.ts
│   │   │   ├── runtime-cli.test.js
│   │   │   ├── runtime-done-recovery.test.d.ts
│   │   │   ├── runtime-done-recovery.test.js
│   │   │   ├── runtime-prompt-mode.test.d.ts
│   │   │   ├── runtime-prompt-mode.test.js
│   │   │   ├── runtime-v2.dispatch.test.d.ts
│   │   │   ├── runtime-v2.dispatch.test.js
│   │   │   ├── runtime-v2.feature-flag.test.d.ts
│   │   │   ├── runtime-v2.feature-flag.test.js
│   │   │   ├── runtime-v2.monitor.test.d.ts
│   │   │   ├── runtime-v2.monitor.test.js
│   │   │   ├── runtime-v2.shutdown-pane-cleanup.test.d.ts
│   │   │   ├── runtime-v2.shutdown-pane-cleanup.test.js
│   │   │   ├── runtime-v2.shutdown.test.d.ts
│   │   │   ├── runtime-v2.shutdown.test.js
│   │   │   ├── runtime-watchdog-retry.test.d.ts
│   │   │   ├── runtime-watchdog-retry.test.js
│   │   │   ├── runtime.test.d.ts
│   │   │   ├── runtime.test.js
│   │   │   ├── scaling.test.d.ts
│   │   │   ├── scaling.test.js
│   │   │   ├── shell-affinity.test.d.ts
│   │   │   ├── shell-affinity.test.js
│   │   │   ├── state-paths.test.d.ts
│   │   │   ├── state-paths.test.js
│   │   │   ├── summary-report.test.d.ts
│   │   │   ├── summary-report.test.js
│   │   │   ├── task-file-ops.test.d.ts
│   │   │   ├── task-file-ops.test.js
│   │   │   ├── task-router.test.d.ts
│   │   │   ├── task-router.test.js
│   │   │   ├── team-leader-nudge-hook.logging.test.d.ts
│   │   │   ├── team-leader-nudge-hook.logging.test.js
│   │   │   ├── team-leader-nudge-hook.test.d.ts
│   │   │   ├── team-leader-nudge-hook.test.js
│   │   │   ├── team-name.test.d.ts
│   │   │   ├── team-name.test.js
│   │   │   ├── team-registration.test.d.ts
│   │   │   ├── team-registration.test.js
│   │   │   ├── team-status.test.d.ts
│   │   │   ├── team-status.test.js
│   │   │   ├── tmux-comm.test.d.ts
│   │   │   ├── tmux-comm.test.js
│   │   │   ├── tmux-session.create-team.test.d.ts
│   │   │   ├── tmux-session.create-team.test.js
│   │   │   ├── tmux-session.kill-team-session.test.d.ts
│   │   │   ├── tmux-session.kill-team-session.test.js
│   │   │   ├── tmux-session.spawn.test.d.ts
│   │   │   ├── tmux-session.spawn.test.js
│   │   │   ├── tmux-session.test.d.ts
│   │   │   ├── tmux-session.test.js
│   │   │   ├── unified-team.test.d.ts
│   │   │   ├── unified-team.test.js
│   │   │   ├── usage-tracker.test.d.ts
│   │   │   ├── usage-tracker.test.js
│   │   │   ├── worker-bootstrap.test.d.ts
│   │   │   ├── worker-bootstrap.test.js
│   │   │   ├── worker-canonicalization.test.d.ts
│   │   │   ├── worker-canonicalization.test.js
│   │   │   ├── worker-health.test.d.ts
│   │   │   ├── worker-health.test.js
│   │   │   ├── worker-restart.test.d.ts
│   │   │   └── worker-restart.test.js
│   │   ├── activity-log.d.ts
│   │   ├── activity-log.js
│   │   ├── allocation-policy.d.ts
│   │   ├── allocation-policy.js
│   │   ├── api-interop.d.ts
│   │   ├── api-interop.js
│   │   ├── audit-log.d.ts
│   │   ├── audit-log.js
│   │   ├── bridge-entry.d.ts
│   │   ├── bridge-entry.js
│   │   ├── capabilities.d.ts
│   │   ├── capabilities.js
│   │   ├── cli-detection.d.ts
│   │   ├── cli-detection.js
│   │   ├── contracts.d.ts
│   │   ├── contracts.js
│   │   ├── dispatch-queue.d.ts
│   │   ├── dispatch-queue.js
│   │   ├── events.d.ts
│   │   ├── events.js
│   │   ├── followup-planner.d.ts
│   │   ├── followup-planner.js
│   │   ├── fs-utils.d.ts
│   │   ├── fs-utils.js
│   │   ├── git-worktree.d.ts
│   │   ├── git-worktree.js
│   │   ├── governance.d.ts
│   │   ├── governance.js
│   │   ├── heartbeat.d.ts
│   │   ├── heartbeat.js
│   │   ├── idle-nudge.d.ts
│   │   ├── idle-nudge.js
│   │   ├── inbox-outbox.d.ts
│   │   ├── inbox-outbox.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── layout-stabilizer.d.ts
│   │   ├── layout-stabilizer.js
│   │   ├── leader-nudge-guidance.d.ts
│   │   ├── leader-nudge-guidance.js
│   │   ├── mcp-comm.d.ts
│   │   ├── mcp-comm.js
│   │   ├── mcp-team-bridge.d.ts
│   │   ├── mcp-team-bridge.js
│   │   ├── merge-coordinator.d.ts
│   │   ├── merge-coordinator.js
│   │   ├── message-router.d.ts
│   │   ├── message-router.js
│   │   ├── model-contract.d.ts
│   │   ├── model-contract.js
│   │   ├── monitor.d.ts
│   │   ├── monitor.js
│   │   ├── outbox-reader.d.ts
│   │   ├── outbox-reader.js
│   │   ├── permissions.d.ts
│   │   ├── permissions.js
│   │   ├── phase-controller.d.ts
│   │   ├── phase-controller.js
│   │   ├── role-router.d.ts
│   │   ├── role-router.js
│   │   ├── runtime-cli.d.ts
│   │   ├── runtime-cli.js
│   │   ├── runtime-v2.d.ts
│   │   ├── runtime-v2.js
│   │   ├── runtime.d.ts
│   │   ├── runtime.js
│   │   ├── scaling.d.ts
│   │   ├── scaling.js
│   │   ├── sentinel-gate.d.ts
│   │   ├── sentinel-gate.js
│   │   ├── state/
│   │   │   ├── tasks.d.ts
│   │   │   └── tasks.js
│   │   ├── state-paths.d.ts
│   │   ├── state-paths.js
│   │   ├── summary-report.d.ts
│   │   ├── summary-report.js
│   │   ├── task-file-ops.d.ts
│   │   ├── task-file-ops.js
│   │   ├── task-router.d.ts
│   │   ├── task-router.js
│   │   ├── team-name.d.ts
│   │   ├── team-name.js
│   │   ├── team-ops.d.ts
│   │   ├── team-ops.js
│   │   ├── team-registration.d.ts
│   │   ├── team-registration.js
│   │   ├── team-status.d.ts
│   │   ├── team-status.js
│   │   ├── tmux-comm.d.ts
│   │   ├── tmux-comm.js
│   │   ├── tmux-session.d.ts
│   │   ├── tmux-session.js
│   │   ├── types.d.ts
│   │   ├── types.js
│   │   ├── unified-team.d.ts
│   │   ├── unified-team.js
│   │   ├── usage-tracker.d.ts
│   │   ├── usage-tracker.js
│   │   ├── worker-bootstrap.d.ts
│   │   ├── worker-bootstrap.js
│   │   ├── worker-canonicalization.d.ts
│   │   ├── worker-canonicalization.js
│   │   ├── worker-health.d.ts
│   │   ├── worker-health.js
│   │   ├── worker-restart.d.ts
│   │   └── worker-restart.js
│   ├── tools/
│   │   ├── __tests__/
│   │   │   ├── cancel-integration.test.d.ts
│   │   │   ├── cancel-integration.test.js
│   │   │   ├── deepinit-manifest.test.d.ts
│   │   │   ├── deepinit-manifest.test.js
│   │   │   ├── memory-tools.test.d.ts
│   │   │   ├── memory-tools.test.js
│   │   │   ├── schema-conversion.test.d.ts
│   │   │   ├── schema-conversion.test.js
│   │   │   ├── state-tools.test.d.ts
│   │   │   └── state-tools.test.js
│   │   ├── ast-tools.d.ts
│   │   ├── ast-tools.js
│   │   ├── deepinit-manifest.d.ts
│   │   ├── deepinit-manifest.js
│   │   ├── diagnostics/
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── lsp-aggregator.d.ts
│   │   │   ├── lsp-aggregator.js
│   │   │   ├── tsc-runner.d.ts
│   │   │   └── tsc-runner.js
│   │   ├── index.d.ts
│   │   ├── index.js
│   │   ├── lsp/
│   │   │   ├── __tests__/
│   │   │   │   ├── client-devcontainer.test.d.ts
│   │   │   │   ├── client-devcontainer.test.js
│   │   │   │   ├── client-eviction.test.d.ts
│   │   │   │   ├── client-eviction.test.js
│   │   │   │   ├── client-handle-data.test.d.ts
│   │   │   │   ├── client-handle-data.test.js
│   │   │   │   ├── client-singleton.test.d.ts
│   │   │   │   ├── client-singleton.test.js
│   │   │   │   ├── client-timeout-env.test.d.ts
│   │   │   │   ├── client-timeout-env.test.js
│   │   │   │   ├── client-win32-spawn.test.d.ts
│   │   │   │   ├── client-win32-spawn.test.js
│   │   │   │   ├── devcontainer.test.d.ts
│   │   │   │   └── devcontainer.test.js
│   │   │   ├── client.d.ts
│   │   │   ├── client.js
│   │   │   ├── devcontainer.d.ts
│   │   │   ├── devcontainer.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── servers.d.ts
│   │   │   ├── servers.js
│   │   │   ├── utils.d.ts
│   │   │   └── utils.js
│   │   ├── lsp-tools.d.ts
│   │   ├── lsp-tools.js
│   │   ├── memory-tools.d.ts
│   │   ├── memory-tools.js
│   │   ├── notepad-tools.d.ts
│   │   ├── notepad-tools.js
│   │   ├── python-repl/
│   │   │   ├── __tests__/
│   │   │   │   ├── bridge-manager-cleanup.test.d.ts
│   │   │   │   ├── bridge-manager-cleanup.test.js
│   │   │   │   ├── tcp-fallback.test.d.ts
│   │   │   │   └── tcp-fallback.test.js
│   │   │   ├── bridge-manager.d.ts
│   │   │   ├── bridge-manager.js
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   ├── paths.d.ts
│   │   │   ├── paths.js
│   │   │   ├── session-lock.d.ts
│   │   │   ├── session-lock.js
│   │   │   ├── socket-client.d.ts
│   │   │   ├── socket-client.js
│   │   │   ├── tool.d.ts
│   │   │   ├── tool.js
│   │   │   ├── types.d.ts
│   │   │   └── types.js
│   │   ├── resume-session.d.ts
│   │   ├── resume-session.js
│   │   ├── session-history-tools.d.ts
│   │   ├── session-history-tools.js
│   │   ├── shared-memory-tools.d.ts
│   │   ├── shared-memory-tools.js
│   │   ├── skills-tools.d.ts
│   │   ├── skills-tools.js
│   │   ├── state-tools.d.ts
│   │   ├── state-tools.js
│   │   ├── trace-tools.d.ts
│   │   ├── trace-tools.js
│   │   ├── types.d.ts
│   │   └── types.js
│   ├── utils/
│   │   ├── __tests__/
│   │   │   ├── frontmatter.test.d.ts
│   │   │   ├── frontmatter.test.js
│   │   │   ├── paths.test.d.ts
│   │   │   ├── paths.test.js
│   │   │   ├── string-width.test.d.ts
│   │   │   └── string-width.test.js
│   │   ├── config-dir.d.ts
│   │   ├── config-dir.js
│   │   ├── daemon-module-path.d.ts
│   │   ├── daemon-module-path.js
│   │   ├── frontmatter.d.ts
│   │   ├── frontmatter.js
│   │   ├── jsonc.d.ts
│   │   ├── jsonc.js
│   │   ├── omc-cli-rendering.d.ts
│   │   ├── omc-cli-rendering.js
│   │   ├── paths.d.ts
│   │   ├── paths.js
│   │   ├── resolve-node.d.ts
│   │   ├── resolve-node.js
│   │   ├── skill-pipeline.d.ts
│   │   ├── skill-pipeline.js
│   │   ├── skill-resources.d.ts
│   │   ├── skill-resources.js
│   │   ├── ssrf-guard.d.ts
│   │   ├── ssrf-guard.js
│   │   ├── string-width.d.ts
│   │   └── string-width.js
│   └── verification/
│       ├── tier-selector.d.ts
│       ├── tier-selector.js
│       ├── tier-selector.test.d.ts
│       └── tier-selector.test.js
├── docs/
│   ├── AGENTS.md
│   ├── ANALYTICS-SYSTEM.md
│   ├── ARCHITECTURE.md
│   ├── CJK-IME-KNOWN-ISSUES.md
│   ├── CLAUDE.md
│   ├── COMPATIBILITY.md
│   ├── DELEGATION-ENFORCER.md
│   ├── FEATURES.md
│   ├── LOCAL_PLUGIN_INSTALL.md
│   ├── MIGRATION.md
│   ├── OPENCLAW-ROUTING.md
│   ├── PERFORMANCE-MONITORING.md
│   ├── REFERENCE.md
│   ├── SYNC-SYSTEM.md
│   ├── TIERED_AGENTS_V2.md
│   ├── agent-templates/
│   │   ├── README.md
│   │   ├── base-agent.md
│   │   └── tier-instructions.md
│   ├── design/
│   │   ├── CONSOLIDATION_PHASE3_ROADMAP.md
│   │   ├── SKILLS_2_0_ADAPTATION.md
│   │   ├── SKILL_AUDIT_1445.md
│   │   └── project-session-manager.md
│   ├── ko/
│   │   ├── ARCHITECTURE.md
│   │   ├── FEATURES.md
│   │   ├── MIGRATION.md
│   │   └── REFERENCE.md
│   ├── partials/
│   │   ├── agent-tiers.md
│   │   ├── features.md
│   │   ├── mode-hierarchy.md
│   │   ├── mode-selection-guide.md
│   │   └── verification-tiers.md
│   └── shared/
│       ├── agent-tiers.md
│       ├── features.md
│       ├── mode-hierarchy.md
│       ├── mode-selection-guide.md
│       └── verification-tiers.md
├── eslint.config.js
├── examples/
│   ├── advanced-usage.ts
│   ├── basic-usage.ts
│   ├── delegation-enforcer-demo.ts
│   └── hooks.json
├── hooks/
│   └── hooks.json
├── missions/
│   ├── enhance-omc-performance/
│   │   ├── mission.md
│   │   └── sandbox.md
│   ├── optimize-omc/
│   │   ├── mission.md
│   │   └── sandbox.md
│   ├── optimize-performance/
│   │   ├── mission.md
│   │   └── sandbox.md
│   └── prove-reliability-by-finding-and-fixing-flaky-te/
│       ├── mission.md
│       └── sandbox.md
├── package.json
├── research/
│   └── hephaestus-vs-deep-executor-comparison.md
├── scripts/
│   ├── build-bridge-entry.mjs
│   ├── build-cli.mjs
│   ├── build-mcp-server.mjs
│   ├── build-runtime-cli.mjs
│   ├── build-skill-bridge.mjs
│   ├── build-team-server.mjs
│   ├── cleanup-orphans.mjs
│   ├── code-simplifier.mjs
│   ├── compose-docs.mjs
│   ├── context-guard-stop.mjs
│   ├── context-safety.mjs
│   ├── demo-team.mjs
│   ├── eval-autoresearch-json.mjs
│   ├── eval-autoresearch-timed-json.mjs
│   ├── find-node.sh
│   ├── generate-featured-contributors.ts
│   ├── keyword-detector.mjs
│   ├── lib/
│   │   ├── atomic-write.mjs
│   │   └── stdin.mjs
│   ├── openclaw-gateway-demo.mjs
│   ├── permission-handler.mjs
│   ├── persistent-mode.cjs
│   ├── persistent-mode.mjs
│   ├── plugin-setup.mjs
│   ├── post-tool-use-failure.mjs
│   ├── post-tool-verifier.mjs
│   ├── pre-compact.mjs
│   ├── pre-tool-enforcer.mjs
│   ├── project-memory-posttool.mjs
│   ├── project-memory-precompact.mjs
│   ├── project-memory-session.mjs
│   ├── qa-tests/
│   │   └── test-custom-integration.mjs
│   ├── release.ts
│   ├── run-provider-advisor.js
│   ├── run.cjs
│   ├── session-end.mjs
│   ├── session-start.mjs
│   ├── session-summary.mjs
│   ├── setup-claude-md.sh
│   ├── setup-init.mjs
│   ├── setup-maintenance.mjs
│   ├── setup-progress.sh
│   ├── skill-injector.mjs
│   ├── status.mjs
│   ├── subagent-tracker.mjs
│   ├── sync-metadata.ts
│   ├── sync-version.sh
│   ├── test-max-attempts.ts
│   ├── test-mutual-exclusion.ts
│   ├── test-notepad-integration.ts
│   ├── test-pr25.sh
│   ├── test-remember-tags.ts
│   ├── test-session-injection.ts
│   ├── uninstall.sh
│   └── verify-deliverables.mjs
├── seminar/
│   ├── demos/
│   │   ├── README.md
│   │   ├── demo-0-live-audience.md
│   │   ├── demo-1-autopilot.md
│   │   ├── demo-2-ultrawork.md
│   │   ├── demo-3-pipeline.md
│   │   ├── demo-4-planning.md
│   │   └── demo-5-ralph.md
│   ├── notes.md
│   ├── quickref.md
│   ├── screenshots/
│   │   └── README.md
│   └── slides.md
├── shellmark/
│   └── sessions/
│       └── 20260310T014715888Z/
│           ├── events/
│           │   ├── 000001.meta.json
│           │   ├── 000001.raw.txt
│           │   └── 000001.summary.md
│           ├── indexes/
│           │   ├── by_status.jsonl
│           │   └── by_time.jsonl
│           └── manifest.json
├── skills/
│   ├── AGENTS.md
│   ├── ai-slop-cleaner/
│   │   └── SKILL.md
│   ├── ask/
│   │   └── SKILL.md
│   ├── autopilot/
│   │   └── SKILL.md
│   ├── cancel/
│   │   └── SKILL.md
│   ├── ccg/
│   │   └── SKILL.md
│   ├── configure-notifications/
│   │   └── SKILL.md
│   ├── deep-dive/
│   │   └── SKILL.md
│   ├── deep-interview/
│   │   └── SKILL.md
│   ├── deepinit/
│   │   └── SKILL.md
│   ├── external-context/
│   │   └── SKILL.md
│   ├── hud/
│   │   └── SKILL.md
│   ├── learner/
│   │   └── SKILL.md
│   ├── mcp-setup/
│   │   └── SKILL.md
│   ├── omc-doctor/
│   │   └── SKILL.md
│   ├── omc-reference/
│   │   └── SKILL.md
│   ├── omc-setup/
│   │   ├── SKILL.md
│   │   └── phases/
│   │       ├── 01-install-claude-md.md
│   │       ├── 02-configure.md
│   │       ├── 03-integrations.md
│   │       └── 04-welcome.md
│   ├── omc-teams/
│   │   └── SKILL.md
│   ├── plan/
│   │   └── SKILL.md
│   ├── project-session-manager/
│   │   ├── SKILL.md
│   │   ├── lib/
│   │   │   ├── config.sh
│   │   │   ├── parse.sh
│   │   │   ├── providers/
│   │   │   │   ├── azure-devops.sh
│   │   │   │   ├── bitbucket.sh
│   │   │   │   ├── gitea.sh
│   │   │   │   ├── github.sh
│   │   │   │   ├── gitlab.sh
│   │   │   │   ├── interface.sh
│   │   │   │   └── jira.sh
│   │   │   ├── session.sh
│   │   │   ├── tmux.sh
│   │   │   └── worktree.sh
│   │   ├── psm.sh
│   │   └── templates/
│   │       ├── feature.md
│   │       ├── issue-fix.md
│   │       ├── pr-review.md
│   │       └── projects.json
│   ├── ralph/
│   │   └── SKILL.md
│   ├── ralplan/
│   │   └── SKILL.md
│   ├── release/
│   │   └── SKILL.md
│   ├── sciomc/
│   │   └── SKILL.md
│   ├── setup/
│   │   └── SKILL.md
│   ├── skill/
│   │   └── SKILL.md
│   ├── team/
│   │   └── SKILL.md
│   ├── trace/
│   │   └── SKILL.md
│   ├── ultraqa/
│   │   └── SKILL.md
│   ├── ultrawork/
│   │   └── SKILL.md
│   ├── visual-verdict/
│   │   └── SKILL.md
│   └── writer-memory/
│       ├── SKILL.md
│       ├── lib/
│       │   ├── character-tracker.ts
│       │   ├── memory-manager.ts
│       │   ├── relationship-graph.ts
│       │   ├── scene-organizer.ts
│       │   └── synopsis-builder.ts
│       └── templates/
│           └── synopsis-template.md
├── src/
│   ├── AGENTS.md
│   ├── __tests__/
│   │   ├── agent-boundary-guidance.test.ts
│   │   ├── agent-registry.test.ts
│   │   ├── auto-slash-aliases.test.ts
│   │   ├── auto-update.test.ts
│   │   ├── auto-upgrade-prompt.test.ts
│   │   ├── background-cleanup-directory.test.ts
│   │   ├── bash-history.test.ts
│   │   ├── bedrock-lm-suffix-hook.test.ts
│   │   ├── bedrock-model-routing.test.ts
│   │   ├── cleanup-validation.test.ts
│   │   ├── cli-config-stop-callback.test.ts
│   │   ├── cli-interop-flags.test.ts
│   │   ├── cli-notify-profile.test.ts
│   │   ├── cli-win32-warning.test.ts
│   │   ├── compact-denylist.test.ts
│   │   ├── config-force-inherit-env.test.ts
│   │   ├── consensus-execution-handoff.test.ts
│   │   ├── consolidation-contracts.test.ts
│   │   ├── context-guard-stop.test.ts
│   │   ├── context-safety.test.ts
│   │   ├── daemon-module-path.test.ts
│   │   ├── deep-interview-provider-options.test.ts
│   │   ├── delegation-enforcement-levels.test.ts
│   │   ├── delegation-enforcer-integration.test.ts
│   │   ├── delegation-enforcer.test.ts
│   │   ├── directory-context-injector.test.ts
│   │   ├── disable-tools.test.ts
│   │   ├── doctor-conflicts.test.ts
│   │   ├── featured-contributors-generator.test.ts
│   │   ├── file-lock.test.ts
│   │   ├── fixtures/
│   │   │   └── sample-transcript.jsonl
│   │   ├── helpers/
│   │   │   └── prompt-test-helpers.ts
│   │   ├── hooks/
│   │   │   ├── learner/
│   │   │   │   ├── bridge.test.ts
│   │   │   │   ├── parser.test.ts
│   │   │   │   └── transliteration-map.test.ts
│   │   │   └── plugin-patterns.test.ts
│   │   ├── hooks-command-escaping.test.ts
│   │   ├── hooks.test.ts
│   │   ├── hud/
│   │   │   ├── background-tasks.test.ts
│   │   │   ├── call-counts.test.ts
│   │   │   ├── context-warning.test.ts
│   │   │   ├── context.test.ts
│   │   │   ├── custom-rate-provider.test.ts
│   │   │   ├── cwd.test.ts
│   │   │   ├── defaults.test.ts
│   │   │   ├── git.test.ts
│   │   │   ├── limits-error.test.ts
│   │   │   ├── max-width.test.ts
│   │   │   ├── mission-board-state.test.ts
│   │   │   ├── mission-board.test.ts
│   │   │   ├── model.test.ts
│   │   │   ├── omc-state.test.ts
│   │   │   ├── prompt-time.test.ts
│   │   │   ├── rate-limits-error.test.ts
│   │   │   ├── render-rate-limits-priority.test.ts
│   │   │   ├── render.test.ts
│   │   │   ├── sanitize.test.ts
│   │   │   ├── skills.test.ts
│   │   │   ├── stale-indicator.test.ts
│   │   │   ├── state.test.ts
│   │   │   ├── stdin.test.ts
│   │   │   ├── thinking.test.ts
│   │   │   ├── token-usage.test.ts
│   │   │   ├── usage-api-lock.test.ts
│   │   │   ├── usage-api-stale.test.ts
│   │   │   ├── usage-api.test.ts
│   │   │   ├── version-display.test.ts
│   │   │   ├── watch-mode-init.test.ts
│   │   │   └── windows-platform.test.ts
│   │   ├── hud-agents.test.ts
│   │   ├── hud-api-key-source.test.ts
│   │   ├── hud-build-guidance.test.ts
│   │   ├── hud-marketplace-resolution.test.ts
│   │   ├── hud-windows.test.ts
│   │   ├── installer-hooks-merge.test.ts
│   │   ├── installer-hud-skip.test.ts
│   │   ├── installer-mcp-config.test.ts
│   │   ├── installer-omc-reference.test.ts
│   │   ├── installer-plugin-agents.test.ts
│   │   ├── installer-version-guard.test.ts
│   │   ├── installer.test.ts
│   │   ├── job-management-sqlite.test.ts
│   │   ├── job-management.test.ts
│   │   ├── job-state-db.test.ts
│   │   ├── jobid-collision-safety.test.ts
│   │   ├── learner/
│   │   │   ├── auto-learner.test.ts
│   │   │   └── matcher.test.ts
│   │   ├── live-data.test.ts
│   │   ├── load-agent-prompt.test.ts
│   │   ├── lsp-servers.test.ts
│   │   ├── mcp-comm-inbox-dedup.test.ts
│   │   ├── mcp-default-config.test.ts
│   │   ├── mnemosyne/
│   │   │   ├── config.test.ts
│   │   │   ├── detector.test.ts
│   │   │   ├── finder.test.ts
│   │   │   ├── loader.test.ts
│   │   │   ├── parser.test.ts
│   │   │   └── validator.test.ts
│   │   ├── mode-names-ralplan.test.ts
│   │   ├── model-routing-esm.test.ts
│   │   ├── model-routing.test.ts
│   │   ├── non-claude-provider-detection.test.ts
│   │   ├── notepad.test.ts
│   │   ├── omc-cli-rendering.test.ts
│   │   ├── omc-tools-contract.test.ts
│   │   ├── omc-tools-server-interop.test.ts
│   │   ├── omc-tools-server.test.ts
│   │   ├── outbox-reader-partial-lines.test.ts
│   │   ├── package-dir-resolution-regression.test.ts
│   │   ├── permission-enforcement.test.ts
│   │   ├── pipeline-orchestrator.test.ts
│   │   ├── pipeline-signal-regex-escape.test.ts
│   │   ├── plugin-setup-deps.test.ts
│   │   ├── plugin-setup-devpaths.test.ts
│   │   ├── post-tool-verifier.test.mjs
│   │   ├── pre-compact-cwd.test.ts
│   │   ├── pre-tool-enforcer.test.ts
│   │   ├── project-memory-merge.test.ts
│   │   ├── prompt-injection.test.ts
│   │   ├── protected-mode-regressions.test.ts
│   │   ├── providers/
│   │   │   ├── azure-devops.test.ts
│   │   │   ├── bitbucket.test.ts
│   │   │   ├── detection.test.ts
│   │   │   ├── gitea.test.ts
│   │   │   ├── github.test.ts
│   │   │   └── gitlab.test.ts
│   │   ├── purge-stale-cache.test.ts
│   │   ├── ralph-prd-mandatory.test.ts
│   │   ├── ralph-prd.test.ts
│   │   ├── ralph-progress.test.ts
│   │   ├── rate-limit-wait/
│   │   │   ├── daemon-bootstrap.test.ts
│   │   │   ├── daemon.test.ts
│   │   │   ├── integration.test.ts
│   │   │   ├── rate-limit-monitor.test.ts
│   │   │   └── tmux-detector.test.ts
│   │   ├── repo-slug-dots.test.ts
│   │   ├── resolve-node.test.ts
│   │   ├── resolve-transcript-path.test.ts
│   │   ├── routing-force-inherit.test.ts
│   │   ├── run-cjs-graceful-fallback.test.ts
│   │   ├── runtime-task-orphan.test.ts
│   │   ├── session-history-search.test.ts
│   │   ├── session-start-cache-cleanup.test.ts
│   │   ├── session-start-script-context.test.ts
│   │   ├── session-start-timeout-cleanup.test.ts
│   │   ├── session-summary-pid-tracking.test.ts
│   │   ├── setup-claude-md-script.test.ts
│   │   ├── shared-memory-concurrency.test.ts
│   │   ├── shared-memory.test.ts
│   │   ├── shared-state-locking.test.ts
│   │   ├── skills.test.ts
│   │   ├── slack-fallback-removal.test.ts
│   │   ├── slack-socket.test.ts
│   │   ├── smoke-pipeline-edge.test.ts
│   │   ├── smoke-slack-and-state.test.ts
│   │   ├── ssrf-guard.test.ts
│   │   ├── standalone-server.test.ts
│   │   ├── task-continuation.test.ts
│   │   ├── team-ops-task-locking.test.ts
│   │   ├── team-server-validation.test.ts
│   │   ├── team-status-failed-count.test.ts
│   │   ├── team-status-tmux-provider.test.ts
│   │   ├── tier0-contracts.test.ts
│   │   ├── tier0-docs-consistency.test.ts
│   │   ├── tools/
│   │   │   ├── ast-tools.test.ts
│   │   │   ├── skills-tools.test.ts
│   │   │   └── trace-tools.test.ts
│   │   ├── types.test.ts
│   │   ├── version-helper.test.ts
│   │   ├── visual-verdict-skill.test.ts
│   │   ├── webhook-timeout-cleanup.test.ts
│   │   └── worktree-metadata-locking.test.ts
│   ├── agents/
│   │   ├── AGENTS.md
│   │   ├── analyst.ts
│   │   ├── architect.ts
│   │   ├── critic.ts
│   │   ├── definitions.ts
│   │   ├── designer.ts
│   │   ├── document-specialist.ts
│   │   ├── executor.ts
│   │   ├── explore.ts
│   │   ├── index.ts
│   │   ├── planner.ts
│   │   ├── prompt-helpers.ts
│   │   ├── prompt-sections/
│   │   │   └── index.ts
│   │   ├── qa-tester.ts
│   │   ├── scientist.ts
│   │   ├── templates/
│   │   │   ├── exploration-template.md
│   │   │   └── implementation-template.md
│   │   ├── tracer.ts
│   │   ├── types.ts
│   │   ├── utils.ts
│   │   └── writer.ts
│   ├── autoresearch/
│   │   ├── __tests__/
│   │   │   ├── contracts.test.ts
│   │   │   ├── runtime-parity-extra.test.ts
│   │   │   ├── runtime.test.ts
│   │   │   └── setup-contract.test.ts
│   │   ├── contracts.ts
│   │   ├── runtime.ts
│   │   └── setup-contract.ts
│   ├── cli/
│   │   ├── __tests__/
│   │   │   ├── ask.test.ts
│   │   │   ├── autoresearch-guided.test.ts
│   │   │   ├── autoresearch-intake.test.ts
│   │   │   ├── autoresearch-setup-session.test.ts
│   │   │   ├── autoresearch.test.ts
│   │   │   ├── cli-boot.test.ts
│   │   │   ├── hud-watch.test.ts
│   │   │   ├── launch.test.ts
│   │   │   ├── session-search-help.test.ts
│   │   │   ├── session-search.test.ts
│   │   │   ├── team-command-branding.test.ts
│   │   │   ├── team-help.test.ts
│   │   │   ├── team-runtime-boundary.test.ts
│   │   │   ├── team.test.ts
│   │   │   ├── teleport-help.test.ts
│   │   │   └── tmux-utils.test.ts
│   │   ├── ask.ts
│   │   ├── autoresearch-guided.ts
│   │   ├── autoresearch-intake.ts
│   │   ├── autoresearch-setup-session.ts
│   │   ├── autoresearch.ts
│   │   ├── commands/
│   │   │   ├── __tests__/
│   │   │   │   ├── team.test.ts
│   │   │   │   └── teleport.test.ts
│   │   │   ├── doctor-conflicts.ts
│   │   │   ├── ralphthon.ts
│   │   │   ├── session-search.ts
│   │   │   ├── team.ts
│   │   │   ├── teleport.ts
│   │   │   └── wait.ts
│   │   ├── hud-watch.ts
│   │   ├── index.ts
│   │   ├── interop.ts
│   │   ├── launch.ts
│   │   ├── team.ts
│   │   ├── tmux-utils.ts
│   │   ├── utils/
│   │   │   └── formatting.ts
│   │   └── win32-warning.ts
│   ├── commands/
│   │   └── index.ts
│   ├── config/
│   │   ├── __tests__/
│   │   │   ├── loader.test.ts
│   │   │   ├── models.test.ts
│   │   │   ├── plan-output.test.ts
│   │   │   └── test-helpers.ts
│   │   ├── index.ts
│   │   ├── loader.ts
│   │   ├── models.ts
│   │   └── plan-output.ts
│   ├── constants/
│   │   ├── index.ts
│   │   └── names.ts
│   ├── features/
│   │   ├── AGENTS.md
│   │   ├── auto-update.ts
│   │   ├── background-agent/
│   │   │   ├── concurrency.ts
│   │   │   ├── index.ts
│   │   │   ├── manager.ts
│   │   │   └── types.ts
│   │   ├── background-tasks.ts
│   │   ├── boulder-state/
│   │   │   ├── constants.ts
│   │   │   ├── index.ts
│   │   │   ├── storage.ts
│   │   │   └── types.ts
│   │   ├── builtin-skills/
│   │   │   ├── index.ts
│   │   │   ├── runtime-guidance.ts
│   │   │   ├── skills.ts
│   │   │   └── types.ts
│   │   ├── context-injector/
│   │   │   ├── collector.ts
│   │   │   ├── index.ts
│   │   │   ├── injector.ts
│   │   │   └── types.ts
│   │   ├── continuation-enforcement.ts
│   │   ├── delegation-categories/
│   │   │   ├── INTEGRATION.md
│   │   │   ├── README.md
│   │   │   ├── __tests__/
│   │   │   │   └── index.test.ts
│   │   │   ├── index.ts
│   │   │   ├── test-categories.ts
│   │   │   └── types.ts
│   │   ├── delegation-enforcer.ts
│   │   ├── delegation-routing/
│   │   │   ├── __tests__/
│   │   │   │   └── resolver.test.ts
│   │   │   ├── index.ts
│   │   │   ├── resolver.ts
│   │   │   └── types.ts
│   │   ├── index.ts
│   │   ├── magic-keywords.ts
│   │   ├── model-routing/
│   │   │   ├── __tests__/
│   │   │   │   └── index.test.ts
│   │   │   ├── index.ts
│   │   │   ├── prompts/
│   │   │   │   ├── haiku.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── opus.ts
│   │   │   │   └── sonnet.ts
│   │   │   ├── router.ts
│   │   │   ├── rules.ts
│   │   │   ├── scorer.ts
│   │   │   ├── signals.ts
│   │   │   └── types.ts
│   │   ├── notepad-wisdom/
│   │   │   ├── extractor.ts
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── rate-limit-wait/
│   │   │   ├── daemon.ts
│   │   │   ├── index.ts
│   │   │   ├── rate-limit-monitor.ts
│   │   │   ├── tmux-detector.ts
│   │   │   └── types.ts
│   │   ├── session-history-search/
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── state-manager/
│   │   │   ├── __tests__/
│   │   │   │   └── cache.test.ts
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── task-decomposer/
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   └── verification/
│   │       ├── README.md
│   │       ├── index.ts
│   │       └── types.ts
│   ├── hooks/
│   │   ├── AGENTS.md
│   │   ├── __tests__/
│   │   │   ├── askuserquestion-lifecycle.test.ts
│   │   │   ├── background-process-guard.test.ts
│   │   │   ├── bridge-openclaw.test.ts
│   │   │   ├── bridge-pkill.test.ts
│   │   │   ├── bridge-routing.test.ts
│   │   │   ├── bridge-security.test.ts
│   │   │   ├── bridge-team-worker-guard.test.ts
│   │   │   ├── bridge.test.ts
│   │   │   ├── codebase-map.test.ts
│   │   │   ├── compaction-concurrency.test.ts
│   │   │   ├── stop-hook-openclaw-cooldown.test.ts
│   │   │   └── team-worker-heartbeat.test.ts
│   │   ├── agent-usage-reminder/
│   │   │   ├── constants.ts
│   │   │   ├── index.ts
│   │   │   ├── storage.ts
│   │   │   └── types.ts
│   │   ├── agents-overlay.ts
│   │   ├── auto-slash-command/
│   │   │   ├── constants.ts
│   │   │   ├── detector.ts
│   │   │   ├── executor.ts
│   │   │   ├── index.ts
│   │   │   ├── live-data.ts
│   │   │   └── types.ts
│   │   ├── autopilot/
│   │   │   ├── __tests__/
│   │   │   │   ├── cancel.test.ts
│   │   │   │   ├── pipeline.test.ts
│   │   │   │   ├── prompts.test.ts
│   │   │   │   ├── state.test.ts
│   │   │   │   ├── summary.test.ts
│   │   │   │   ├── transition.test.ts
│   │   │   │   ├── transitions.test.ts
│   │   │   │   └── validation.test.ts
│   │   │   ├── adapters/
│   │   │   │   ├── execution-adapter.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── qa-adapter.ts
│   │   │   │   ├── ralph-adapter.ts
│   │   │   │   └── ralplan-adapter.ts
│   │   │   ├── cancel.ts
│   │   │   ├── enforcement.ts
│   │   │   ├── index.ts
│   │   │   ├── pipeline-types.ts
│   │   │   ├── pipeline.ts
│   │   │   ├── prompts.ts
│   │   │   ├── state.ts
│   │   │   ├── transition-helper.ts
│   │   │   ├── types.ts
│   │   │   └── validation.ts
│   │   ├── background-notification/
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── beads-context/
│   │   │   ├── __tests__/
│   │   │   │   └── index.test.ts
│   │   │   ├── constants.ts
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── bridge-normalize.ts
│   │   ├── bridge.ts
│   │   ├── code-simplifier/
│   │   │   └── index.ts
│   │   ├── codebase-map.ts
│   │   ├── comment-checker/
│   │   │   ├── constants.ts
│   │   │   ├── filters.ts
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── directory-readme-injector/
│   │   │   ├── constants.ts
│   │   │   ├── index.ts
│   │   │   ├── storage.ts
│   │   │   └── types.ts
│   │   ├── empty-message-sanitizer/
│   │   │   ├── __tests__/
│   │   │   │   └── index.test.ts
│   │   │   ├── constants.ts
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── factcheck/
│   │   │   ├── __tests__/
│   │   │   │   ├── factcheck.test.ts
│   │   │   │   ├── sentinel-gate.test.ts
│   │   │   │   └── sentinel.test.ts
│   │   │   ├── checks.ts
│   │   │   ├── config.ts
│   │   │   ├── index.ts
│   │   │   ├── sentinel.ts
│   │   │   └── types.ts
│   │   ├── index.ts
│   │   ├── keyword-detector/
│   │   │   ├── __tests__/
│   │   │   │   └── index.test.ts
│   │   │   └── index.ts
│   │   ├── learner/
│   │   │   ├── auto-invoke.ts
│   │   │   ├── auto-learner.ts
│   │   │   ├── bridge.ts
│   │   │   ├── config.ts
│   │   │   ├── constants.ts
│   │   │   ├── detection-hook.ts
│   │   │   ├── detector.ts
│   │   │   ├── finder.ts
│   │   │   ├── index.ts
│   │   │   ├── loader.ts
│   │   │   ├── matcher.ts
│   │   │   ├── parser.ts
│   │   │   ├── promotion.ts
│   │   │   ├── transliteration-map.ts
│   │   │   ├── types.ts
│   │   │   ├── validator.ts
│   │   │   └── writer.ts
│   │   ├── mode-registry/
│   │   │   ├── __tests__/
│   │   │   │   └── session-isolation.test.ts
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── non-interactive-env/
│   │   │   ├── constants.ts
│   │   │   ├── detector.ts
│   │   │   ├── index.test.ts
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── notepad/
│   │   │   └── index.ts
│   │   ├── omc-orchestrator/
│   │   │   ├── audit.ts
│   │   │   ├── constants.ts
│   │   │   └── index.ts
│   │   ├── permission-handler/
│   │   │   ├── __tests__/
│   │   │   │   └── index.test.ts
│   │   │   └── index.ts
│   │   ├── persistent-mode/
│   │   │   ├── __tests__/
│   │   │   │   ├── cancel-race.test.ts
│   │   │   │   ├── error-handling.test.ts
│   │   │   │   ├── idle-cooldown.test.ts
│   │   │   │   ├── ralph-max-iteration.test.ts
│   │   │   │   ├── ralph-verification-flow.test.ts
│   │   │   │   ├── rate-limit-stop.test.ts
│   │   │   │   ├── skill-state-stop.test.ts
│   │   │   │   ├── team-ralplan-stop.test.ts
│   │   │   │   └── tool-error.test.ts
│   │   │   ├── idle-cooldown.test.ts
│   │   │   ├── index.ts
│   │   │   ├── session-isolation.test.ts
│   │   │   └── stop-hook-blocking.test.ts
│   │   ├── plugin-patterns/
│   │   │   ├── __tests__/
│   │   │   │   └── index.test.ts
│   │   │   └── index.ts
│   │   ├── pre-compact/
│   │   │   └── index.ts
│   │   ├── preemptive-compaction/
│   │   │   ├── constants.ts
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── project-memory/
│   │   │   ├── __tests__/
│   │   │   │   ├── detector.test.ts
│   │   │   │   ├── formatter.test.ts
│   │   │   │   ├── integration.test.ts
│   │   │   │   ├── learner.test.ts
│   │   │   │   ├── pre-compact.test.ts
│   │   │   │   └── storage.test.ts
│   │   │   ├── constants.ts
│   │   │   ├── detector.ts
│   │   │   ├── directive-detector.ts
│   │   │   ├── directory-mapper.ts
│   │   │   ├── formatter.ts
│   │   │   ├── hot-path-tracker.ts
│   │   │   ├── index.ts
│   │   │   ├── learner.ts
│   │   │   ├── pre-compact.ts
│   │   │   ├── storage.ts
│   │   │   └── types.ts
│   │   ├── ralph/
│   │   │   ├── index.ts
│   │   │   ├── loop.ts
│   │   │   ├── prd.ts
│   │   │   ├── progress.ts
│   │   │   └── verifier.ts
│   │   ├── recovery/
│   │   │   ├── __tests__/
│   │   │   │   └── storage.test.ts
│   │   │   ├── constants.ts
│   │   │   ├── context-window.ts
│   │   │   ├── edit-error.ts
│   │   │   ├── index.ts
│   │   │   ├── session-recovery.ts
│   │   │   ├── storage.ts
│   │   │   └── types.ts
│   │   ├── rules-injector/
│   │   │   ├── constants.ts
│   │   │   ├── finder.ts
│   │   │   ├── index.ts
│   │   │   ├── matcher.ts
│   │   │   ├── parser.ts
│   │   │   ├── storage.ts
│   │   │   └── types.ts
│   │   ├── session-end/
│   │   │   ├── __tests__/
│   │   │   │   ├── callbacks.test.ts
│   │   │   │   ├── duplicate-notifications.test.ts
│   │   │   │   ├── mode-state-cleanup.test.ts
│   │   │   │   ├── openclaw-session-end.test.ts
│   │   │   │   ├── python-repl-cleanup.test.ts
│   │   │   │   ├── session-duration.test.ts
│   │   │   │   ├── session-end-bridge-cleanup.test.ts
│   │   │   │   ├── session-end-timeout.test.ts
│   │   │   │   ├── subdirectory-cwd.test.ts
│   │   │   │   └── team-cleanup.test.ts
│   │   │   ├── callbacks.ts
│   │   │   └── index.ts
│   │   ├── setup/
│   │   │   ├── README.md
│   │   │   ├── __tests__/
│   │   │   │   ├── prune.test.ts
│   │   │   │   └── windows-patch.test.ts
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── skill-state/
│   │   │   ├── __tests__/
│   │   │   │   └── skill-state.test.ts
│   │   │   └── index.ts
│   │   ├── subagent-tracker/
│   │   │   ├── __tests__/
│   │   │   │   ├── flow-tracer.test.ts
│   │   │   │   ├── flush-race.test.ts
│   │   │   │   ├── index.test.ts
│   │   │   │   └── session-replay.test.ts
│   │   │   ├── flow-tracer.ts
│   │   │   ├── index.ts
│   │   │   └── session-replay.ts
│   │   ├── task-size-detector/
│   │   │   ├── __tests__/
│   │   │   │   └── index.test.ts
│   │   │   └── index.ts
│   │   ├── team-dispatch-hook.ts
│   │   ├── team-leader-nudge-hook.ts
│   │   ├── team-pipeline/
│   │   │   ├── __tests__/
│   │   │   │   └── transitions.test.ts
│   │   │   ├── index.ts
│   │   │   ├── state.ts
│   │   │   ├── transitions.ts
│   │   │   └── types.ts
│   │   ├── team-worker-hook.ts
│   │   ├── think-mode/
│   │   │   ├── __tests__/
│   │   │   │   └── index.test.ts
│   │   │   ├── detector.ts
│   │   │   ├── index.ts
│   │   │   ├── switcher.ts
│   │   │   └── types.ts
│   │   ├── thinking-block-validator/
│   │   │   ├── __tests__/
│   │   │   │   └── index.test.ts
│   │   │   ├── constants.ts
│   │   │   ├── index.ts
│   │   │   └── types.ts
│   │   ├── todo-continuation/
│   │   │   ├── __tests__/
│   │   │   │   ├── isAuthenticationError.test.ts
│   │   │   │   ├── isRateLimitStop.test.ts
│   │   │   │   └── isUserAbort.test.ts
│   │   │   └── index.ts
│   │   ├── ultraqa/
│   │   │   └── index.ts
│   │   └── ultrawork/
│   │       ├── index.ts
│   │       └── session-isolation.test.ts
│   ├── hud/
│   │   ├── background-cleanup.ts
│   │   ├── background-tasks.ts
│   │   ├── colors.ts
│   │   ├── custom-rate-provider.ts
│   │   ├── elements/
│   │   │   ├── agents.ts
│   │   │   ├── api-key-source.ts
│   │   │   ├── autopilot.ts
│   │   │   ├── background.ts
│   │   │   ├── call-counts.ts
│   │   │   ├── context-warning.ts
│   │   │   ├── context.ts
│   │   │   ├── cwd.ts
│   │   │   ├── git.ts
│   │   │   ├── index.ts
│   │   │   ├── limits.ts
│   │   │   ├── mission-board.ts
│   │   │   ├── model.ts
│   │   │   ├── permission.ts
│   │   │   ├── prd.ts
│   │   │   ├── prompt-time.ts
│   │   │   ├── ralph.ts
│   │   │   ├── session-summary.ts
│   │   │   ├── session.ts
│   │   │   ├── skills.ts
│   │   │   ├── thinking.ts
│   │   │   ├── todos.ts
│   │   │   └── token-usage.ts
│   │   ├── index.ts
│   │   ├── mission-board.ts
│   │   ├── omc-state.ts
│   │   ├── render.ts
│   │   ├── sanitize.ts
│   │   ├── state.ts
│   │   ├── stdin.ts
│   │   ├── transcript.ts
│   │   ├── types.ts
│   │   └── usage-api.ts
│   ├── index.ts
│   ├── installer/
│   │   ├── __tests__/
│   │   │   ├── claude-md-merge.test.ts
│   │   │   ├── hook-templates.test.ts
│   │   │   ├── mcp-registry.test.ts
│   │   │   ├── safe-installer.test.ts
│   │   │   └── session-start-template.test.ts
│   │   ├── hooks.ts
│   │   ├── index.ts
│   │   └── mcp-registry.ts
│   ├── interop/
│   │   ├── __tests__/
│   │   │   └── mcp-bridge.test.ts
│   │   ├── mcp-bridge.ts
│   │   ├── omx-team-state.ts
│   │   └── shared-state.ts
│   ├── lib/
│   │   ├── __tests__/
│   │   │   ├── mode-state-io.test.ts
│   │   │   ├── payload-limits.test.ts
│   │   │   ├── swallowed-error.test.ts
│   │   │   └── worktree-paths.test.ts
│   │   ├── atomic-write.ts
│   │   ├── featured-contributors.ts
│   │   ├── file-lock.ts
│   │   ├── job-state-db.ts
│   │   ├── mode-names.ts
│   │   ├── mode-state-io.ts
│   │   ├── payload-limits.ts
│   │   ├── project-memory-merge.ts
│   │   ├── session-isolation.ts
│   │   ├── shared-memory.ts
│   │   ├── swallowed-error.ts
│   │   ├── version.ts
│   │   └── worktree-paths.ts
│   ├── mcp/
│   │   ├── __tests__/
│   │   │   ├── prompt-injection.test.ts
│   │   │   ├── standalone-shutdown.test.ts
│   │   │   ├── team-cleanup.test.ts
│   │   │   └── team-server-artifact-convergence.test.ts
│   │   ├── index.ts
│   │   ├── job-management.ts
│   │   ├── mcp-config.ts
│   │   ├── omc-tools-server.ts
│   │   ├── prompt-injection.ts
│   │   ├── prompt-persistence.ts
│   │   ├── servers.ts
│   │   ├── standalone-server.ts
│   │   ├── standalone-shutdown.ts
│   │   ├── team-job-convergence.ts
│   │   └── team-server.ts
│   ├── notifications/
│   │   ├── __tests__/
│   │   │   ├── config-merge.test.ts
│   │   │   ├── config.test.ts
│   │   │   ├── custom-integration.test.ts
│   │   │   ├── dispatcher.test.ts
│   │   │   ├── formatter.test.ts
│   │   │   ├── hook-config.test.ts
│   │   │   ├── notify-registry-integration.test.ts
│   │   │   ├── platform-gating.test.ts
│   │   │   ├── profiles.test.ts
│   │   │   ├── redact.test.ts
│   │   │   ├── reply-config.test.ts
│   │   │   ├── reply-listener.test.ts
│   │   │   ├── session-registry.test.ts
│   │   │   ├── slack-socket.test.ts
│   │   │   ├── template-engine.test.ts
│   │   │   ├── tmux.test.ts
│   │   │   └── verbosity.test.ts
│   │   ├── config.ts
│   │   ├── dispatcher.ts
│   │   ├── formatter.ts
│   │   ├── hook-config-types.ts
│   │   ├── hook-config.ts
│   │   ├── index.ts
│   │   ├── presets.ts
│   │   ├── redact.ts
│   │   ├── reply-listener.ts
│   │   ├── session-registry.ts
│   │   ├── slack-socket.ts
│   │   ├── template-engine.ts
│   │   ├── template-variables.ts
│   │   ├── tmux.ts
│   │   ├── types.ts
│   │   └── validation.ts
│   ├── openclaw/
│   │   ├── __tests__/
│   │   │   ├── config.test.ts
│   │   │   ├── dispatcher.test.ts
│   │   │   ├── index.test.ts
│   │   │   └── signal.test.ts
│   │   ├── config.ts
│   │   ├── dispatcher.ts
│   │   ├── index.ts
│   │   ├── signal.ts
│   │   └── types.ts
│   ├── planning/
│   │   ├── __tests__/
│   │   │   └── artifacts.test.ts
│   │   └── artifacts.ts
│   ├── platform/
│   │   ├── index.ts
│   │   └── process-utils.ts
│   ├── providers/
│   │   ├── azure-devops.ts
│   │   ├── bitbucket.ts
│   │   ├── gitea.ts
│   │   ├── github.ts
│   │   ├── gitlab.ts
│   │   ├── index.ts
│   │   └── types.ts
│   ├── ralphthon/
│   │   ├── __tests__/
│   │   │   ├── cli.test.ts
│   │   │   ├── orchestrator.test.ts
│   │   │   └── prd.test.ts
│   │   ├── deep-interview-prompt.ts
│   │   ├── index.ts
│   │   ├── orchestrator.ts
│   │   ├── prd.ts
│   │   └── types.ts
│   ├── shared/
│   │   ├── index.ts
│   │   └── types.ts
│   ├── skills/
│   │   └── __tests__/
│   │       └── mingw-escape.test.ts
│   ├── team/
│   │   ├── __tests__/
│   │   │   ├── activity-log.test.ts
│   │   │   ├── allocation-policy.test.ts
│   │   │   ├── api-interop.cleanup.test.ts
│   │   │   ├── api-interop.command-dialect.test.ts
│   │   │   ├── api-interop.compatibility.test.ts
│   │   │   ├── api-interop.cwd-resolution.test.ts
│   │   │   ├── api-interop.dispatch.test.ts
│   │   │   ├── audit-log.test.ts
│   │   │   ├── auto-cleanup.test.ts
│   │   │   ├── bridge-entry.guardrails.test.ts
│   │   │   ├── bridge-entry.test.ts
│   │   │   ├── bridge-integration.test.ts
│   │   │   ├── capabilities.test.ts
│   │   │   ├── capture-file-snapshot.test.ts
│   │   │   ├── cli-detection.test.ts
│   │   │   ├── edge-cases.test.ts
│   │   │   ├── events.swallowed-error.test.ts
│   │   │   ├── followup-planner.test.ts
│   │   │   ├── fs-utils.test.ts
│   │   │   ├── git-worktree.test.ts
│   │   │   ├── governance-enforcement.test.ts
│   │   │   ├── governance.test.ts
│   │   │   ├── heartbeat.test.ts
│   │   │   ├── idle-nudge.test.ts
│   │   │   ├── inbox-outbox.test.ts
│   │   │   ├── index.compat-exports.test.ts
│   │   │   ├── leader-nudge-guidance.test.ts
│   │   │   ├── lifecycle-profile.test.ts
│   │   │   ├── mcp-team-bridge.spawn-args.test.ts
│   │   │   ├── mcp-team-bridge.usage.test.ts
│   │   │   ├── merge-coordinator.test.ts
│   │   │   ├── message-router.test.ts
│   │   │   ├── model-contract.test.ts
│   │   │   ├── outbox-reader.test.ts
│   │   │   ├── permissions.test.ts
│   │   │   ├── phase-controller.test.ts
│   │   │   ├── phase1-foundation.test.ts
│   │   │   ├── prompt-sanitization.test.ts
│   │   │   ├── role-router.test.ts
│   │   │   ├── runtime-assign.test.ts
│   │   │   ├── runtime-cli.test.ts
│   │   │   ├── runtime-done-recovery.test.ts
│   │   │   ├── runtime-prompt-mode.test.ts
│   │   │   ├── runtime-v2.dispatch.test.ts
│   │   │   ├── runtime-v2.feature-flag.test.ts
│   │   │   ├── runtime-v2.monitor.test.ts
│   │   │   ├── runtime-v2.shutdown-pane-cleanup.test.ts
│   │   │   ├── runtime-v2.shutdown.test.ts
│   │   │   ├── runtime-watchdog-retry.test.ts
│   │   │   ├── runtime.test.ts
│   │   │   ├── scaling.test.ts
│   │   │   ├── shell-affinity.test.ts
│   │   │   ├── state-paths.test.ts
│   │   │   ├── summary-report.test.ts
│   │   │   ├── task-file-ops.test.ts
│   │   │   ├── task-router.test.ts
│   │   │   ├── team-leader-nudge-hook.logging.test.ts
│   │   │   ├── team-leader-nudge-hook.test.ts
│   │   │   ├── team-name.test.ts
│   │   │   ├── team-registration.test.ts
│   │   │   ├── team-status.test.ts
│   │   │   ├── tmux-comm.test.ts
│   │   │   ├── tmux-session.create-team.test.ts
│   │   │   ├── tmux-session.kill-team-session.test.ts
│   │   │   ├── tmux-session.spawn.test.ts
│   │   │   ├── tmux-session.test.ts
│   │   │   ├── unified-team.test.ts
│   │   │   ├── usage-tracker.test.ts
│   │   │   ├── worker-bootstrap.test.ts
│   │   │   ├── worker-canonicalization.test.ts
│   │   │   ├── worker-health.test.ts
│   │   │   └── worker-restart.test.ts
│   │   ├── activity-log.ts
│   │   ├── allocation-policy.ts
│   │   ├── api-interop.ts
│   │   ├── audit-log.ts
│   │   ├── bridge-entry.ts
│   │   ├── capabilities.ts
│   │   ├── cli-detection.ts
│   │   ├── contracts.ts
│   │   ├── dispatch-queue.ts
│   │   ├── events.ts
│   │   ├── followup-planner.ts
│   │   ├── fs-utils.ts
│   │   ├── git-worktree.ts
│   │   ├── governance.ts
│   │   ├── heartbeat.ts
│   │   ├── idle-nudge.ts
│   │   ├── inbox-outbox.ts
│   │   ├── index.ts
│   │   ├── layout-stabilizer.ts
│   │   ├── leader-nudge-guidance.ts
│   │   ├── mcp-comm.ts
│   │   ├── mcp-team-bridge.ts
│   │   ├── merge-coordinator.ts
│   │   ├── message-router.ts
│   │   ├── model-contract.ts
│   │   ├── monitor.ts
│   │   ├── outbox-reader.ts
│   │   ├── permissions.ts
│   │   ├── phase-controller.ts
│   │   ├── role-router.ts
│   │   ├── runtime-cli.ts
│   │   ├── runtime-v2.ts
│   │   ├── runtime.ts
│   │   ├── scaling.ts
│   │   ├── sentinel-gate.ts
│   │   ├── state/
│   │   │   └── tasks.ts
│   │   ├── state-paths.ts
│   │   ├── summary-report.ts
│   │   ├── task-file-ops.ts
│   │   ├── task-router.ts
│   │   ├── team-name.ts
│   │   ├── team-ops.ts
│   │   ├── team-registration.ts
│   │   ├── team-status.ts
│   │   ├── tmux-comm.ts
│   │   ├── tmux-session.ts
│   │   ├── types.ts
│   │   ├── unified-team.ts
│   │   ├── usage-tracker.ts
│   │   ├── worker-bootstrap.ts
│   │   ├── worker-canonicalization.ts
│   │   ├── worker-health.ts
│   │   └── worker-restart.ts
│   ├── tools/
│   │   ├── AGENTS.md
│   │   ├── __tests__/
│   │   │   ├── cancel-integration.test.ts
│   │   │   ├── deepinit-manifest.test.ts
│   │   │   ├── memory-tools.test.ts
│   │   │   ├── schema-conversion.test.ts
│   │   │   └── state-tools.test.ts
│   │   ├── ast-tools.ts
│   │   ├── deepinit-manifest.ts
│   │   ├── diagnostics/
│   │   │   ├── AGENTS.md
│   │   │   ├── index.ts
│   │   │   ├── lsp-aggregator.ts
│   │   │   └── tsc-runner.ts
│   │   ├── index.ts
│   │   ├── lsp/
│   │   │   ├── AGENTS.md
│   │   │   ├── __tests__/
│   │   │   │   ├── client-devcontainer.test.ts
│   │   │   │   ├── client-eviction.test.ts
│   │   │   │   ├── client-handle-data.test.ts
│   │   │   │   ├── client-singleton.test.ts
│   │   │   │   ├── client-timeout-env.test.ts
│   │   │   │   ├── client-win32-spawn.test.ts
│   │   │   │   └── devcontainer.test.ts
│   │   │   ├── client.ts
│   │   │   ├── devcontainer.ts
│   │   │   ├── index.ts
│   │   │   ├── servers.ts
│   │   │   └── utils.ts
│   │   ├── lsp-tools.ts
│   │   ├── memory-tools.ts
│   │   ├── notepad-tools.ts
│   │   ├── python-repl/
│   │   │   ├── __tests__/
│   │   │   │   ├── bridge-manager-cleanup.test.ts
│   │   │   │   └── tcp-fallback.test.ts
│   │   │   ├── bridge-manager.ts
│   │   │   ├── index.ts
│   │   │   ├── paths.ts
│   │   │   ├── session-lock.ts
│   │   │   ├── socket-client.ts
│   │   │   ├── tool.ts
│   │   │   └── types.ts
│   │   ├── resume-session.ts
│   │   ├── session-history-tools.ts
│   │   ├── shared-memory-tools.ts
│   │   ├── skills-tools.ts
│   │   ├── state-tools.ts
│   │   ├── trace-tools.ts
│   │   └── types.ts
│   ├── types/
│   │   └── safe-regex.d.ts
│   ├── utils/
│   │   ├── __tests__/
│   │   │   ├── frontmatter.test.ts
│   │   │   ├── paths.test.ts
│   │   │   └── string-width.test.ts
│   │   ├── config-dir.ts
│   │   ├── daemon-module-path.ts
│   │   ├── frontmatter.ts
│   │   ├── jsonc.ts
│   │   ├── omc-cli-rendering.ts
│   │   ├── paths.ts
│   │   ├── resolve-node.ts
│   │   ├── skill-pipeline.ts
│   │   ├── skill-resources.ts
│   │   ├── ssrf-guard.ts
│   │   └── string-width.ts
│   └── verification/
│       ├── tier-selector.test.ts
│       └── tier-selector.ts
├── templates/
│   ├── deliverables.json
│   ├── hooks/
│   │   ├── code-simplifier.mjs
│   │   ├── keyword-detector.mjs
│   │   ├── lib/
│   │   │   ├── atomic-write.mjs
│   │   │   └── stdin.mjs
│   │   ├── persistent-mode.mjs
│   │   ├── post-tool-use-failure.mjs
│   │   ├── post-tool-use.mjs
│   │   ├── pre-tool-use.mjs
│   │   ├── session-start.mjs
│   │   └── stop-continuation.mjs
│   └── rules/
│       ├── README.md
│       ├── coding-style.md
│       ├── git-workflow.md
│       ├── karpathy-guidelines.md
│       ├── performance.md
│       ├── security.md
│       └── testing.md
├── tests/
│   └── fixtures/
│       └── typescript-pnpm/
│           ├── package.json
│           └── tsconfig.json
├── tsconfig.json
├── typos.toml
└── vitest.config.ts
Download .txt
Showing preview only (1,551K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (17568 symbols across 1447 files)

FILE: benchmark/analyze_failures.py
  function load_results (line 90) | def load_results(results_dir: Path) -> dict[str, Any]:
  function load_predictions (line 112) | def load_predictions(predictions_file: Path) -> dict[str, Any]:
  function categorize_failure (line 123) | def categorize_failure(
  function analyze_failures (line 200) | def analyze_failures(
  function identify_patterns (line 251) | def identify_patterns(failures: list[dict[str, Any]]) -> dict[str, Any]:
  function generate_recommendations (line 299) | def generate_recommendations(analysis: dict[str, Any]) -> list[dict[str,...
  function compare_failures (line 365) | def compare_failures(
  function generate_failure_report (line 435) | def generate_failure_report(
  function main (line 554) | def main():

FILE: benchmark/compare_results.py
  function load_results (line 29) | def load_results(results_dir: Path) -> dict[str, Any]:
  function compare_results (line 127) | def compare_results(
  function generate_markdown_report (line 272) | def generate_markdown_report(comparison: dict[str, Any]) -> str:
  function generate_csv (line 385) | def generate_csv(comparison: dict[str, Any], output_file: Path):
  function main (line 411) | def main():

FILE: benchmark/evaluate.py
  function load_predictions (line 30) | def load_predictions(predictions_file: Path) -> list[dict[str, Any]]:
  function validate_predictions (line 100) | def validate_predictions(predictions: list[dict[str, Any]]) -> list[str]:
  function run_swebench_evaluation (line 115) | def run_swebench_evaluation(
  function parse_evaluation_results (line 201) | def parse_evaluation_results(logs_dir: Path) -> dict[str, Any]:
  function generate_report (line 302) | def generate_report(results: dict[str, Any], output_file: Path | None = ...
  function main (line 375) | def main():

FILE: benchmark/run_benchmark.py
  class BenchmarkConfig (line 49) | class BenchmarkConfig:
  class TaskResult (line 66) | class TaskResult:
  class Checkpoint (line 79) | class Checkpoint:
  class SWEBenchRunner (line 90) | class SWEBenchRunner:
    method __init__ (line 93) | def __init__(self, config: BenchmarkConfig):
    method _load_checkpoint (line 108) | def _load_checkpoint(self) -> Checkpoint:
    method _save_checkpoint (line 125) | def _save_checkpoint(self):
    method _save_prediction (line 141) | def _save_prediction(self, result: TaskResult):
    method _save_stats (line 152) | def _save_stats(self):
    method load_dataset (line 167) | def load_dataset(self) -> list[dict]:
    method _setup_repo (line 200) | def _setup_repo(self, instance: dict, work_dir: Path) -> bool:
    method _format_problem (line 238) | def _format_problem(self, instance: dict) -> str:
    method _run_claude (line 263) | def _run_claude(self, problem: str, work_dir: Path) -> tuple[Optional[...
    method _extract_patch (line 328) | def _extract_patch(self, work_dir: Path) -> Optional[str]:
    method process_instance (line 369) | def process_instance(self, instance: dict) -> TaskResult:
    method _estimate_eta (line 422) | def _estimate_eta(self, completed: int, total: int, elapsed: float) ->...
    method run (line 431) | def run(self):
    method _handle_result (line 488) | def _handle_result(self, result: TaskResult, completed: int, total: in...
  function parse_args (line 514) | def parse_args() -> argparse.Namespace:
  function main (line 603) | def main():

FILE: benchmarks/code-reviewer/run-benchmark.ts
  constant BENCHMARK_DIR (line 38) | const BENCHMARK_DIR = __dirname;
  constant REPO_ROOT (line 39) | const REPO_ROOT = resolve(__dirname, '..', '..');
  constant AGENT_NEW (line 45) | const AGENT_NEW = 'code-reviewer';
  constant AGENT_OLD (line 46) | const AGENT_OLD = 'quality-reviewer';
  function buildUserMessage (line 48) | function buildUserMessage(fixtureContent: string): string {
  function parseOutput (line 56) | function parseOutput(rawOutput: string, _agentType: string): ParsedAgent...
  function main (line 64) | async function main(): Promise<void> {

FILE: benchmarks/debugger/run-benchmark.ts
  constant BENCHMARK_DIR (line 38) | const BENCHMARK_DIR = __dirname;
  constant REPO_ROOT (line 39) | const REPO_ROOT = resolve(__dirname, '..', '..');
  constant AGENT_NEW (line 45) | const AGENT_NEW = 'debugger';
  constant AGENT_OLD (line 46) | const AGENT_OLD = 'build-fixer';
  function buildUserMessage (line 48) | function buildUserMessage(fixtureContent: string): string {
  function parseOutput (line 56) | function parseOutput(rawOutput: string, _agentType: string): ParsedAgent...
  function main (line 64) | async function main(): Promise<void> {

FILE: benchmarks/executor/run-benchmark.ts
  constant BENCHMARK_DIR (line 38) | const BENCHMARK_DIR = __dirname;
  constant REPO_ROOT (line 39) | const REPO_ROOT = resolve(__dirname, '..', '..');
  constant AGENT_NEW (line 45) | const AGENT_NEW = 'executor';
  constant AGENT_OLD (line 46) | const AGENT_OLD = 'deep-executor';
  function buildUserMessage (line 48) | function buildUserMessage(fixtureContent: string): string {
  function parseOutput (line 56) | function parseOutput(rawOutput: string, _agentType: string): ParsedAgent...
  function main (line 64) | async function main(): Promise<void> {

FILE: benchmarks/harsh-critic/fixtures/code/code-payment-handler.ts
  constant GATEWAY_BASE_URL (line 16) | const GATEWAY_BASE_URL = process.env.PAYMENT_GATEWAY_URL!;
  constant GATEWAY_API_KEY (line 17) | const GATEWAY_API_KEY = process.env.PAYMENT_GATEWAY_KEY!;
  type PaymentRequest (line 19) | interface PaymentRequest {
  type PaymentResult (line 28) | interface PaymentResult {
  function processPayment (line 44) | async function processPayment(request: PaymentRequest): Promise<PaymentR...
  function getPaymentHistory (line 122) | async function getPaymentHistory(userId: string): Promise<PaymentRecord[...
  function refundPayment (line 137) | async function refundPayment(
  function validatePaymentMethod (line 179) | async function validatePaymentMethod(paymentMethodId: string): Promise<b...
  function sleep (line 197) | function sleep(ms: number): Promise<void> {

FILE: benchmarks/harsh-critic/fixtures/code/code-session-manager.ts
  type SessionMetadata (line 17) | interface SessionMetadata {
  type Session (line 23) | interface Session {
  type CookieConfig (line 31) | interface CookieConfig {
  constant SESSION_TTL_MS (line 45) | const SESSION_TTL_MS = 7 * 24 * 60 * 60 * 1000;
  function generateToken (line 52) | function generateToken(): string {
  function createSession (line 66) | async function createSession(
  function getSession (line 100) | async function getSession(token: string): Promise<Session | null> {
  function invalidateSession (line 119) | async function invalidateSession(token: string): Promise<void> {
  function invalidateAllUserSessions (line 146) | async function invalidateAllUserSessions(userId: string): Promise<number> {
  function listUserSessions (line 170) | async function listUserSessions(userId: string): Promise<Session[]> {
  function pruneExpiredSessions (line 194) | function pruneExpiredSessions(): number {
  function getSessionCookieConfig (line 221) | function getSessionCookieConfig(): CookieConfig {
  function getSessionCount (line 235) | function getSessionCount(): number {

FILE: benchmarks/harsh-critic/fixtures/code/code-utils-clean.ts
  function truncate (line 28) | function truncate(
  function toSlug (line 56) | function toSlug(text: string): string {
  function maskSensitive (line 80) | function maskSensitive(
  function relativeTime (line 109) | function relativeTime(date: Date, baseDate: Date = new Date()): string {
  function isoWeekBounds (line 149) | function isoWeekBounds(date: Date): { start: Date; end: Date } {
  function groupBy (line 180) | function groupBy<T>(
  function chunk (line 213) | function chunk<T>(items: readonly T[], size: number): T[][] {
  function deepClone (line 239) | function deepClone<T>(value: T): T {

FILE: benchmarks/harsh-critic/run-benchmark.ts
  constant BENCHMARK_DIR (line 37) | const BENCHMARK_DIR = __dirname;
  constant REPO_ROOT (line 38) | const REPO_ROOT = resolve(__dirname, '..', '..');
  type CliArgs (line 44) | interface CliArgs {
  function parseArgs (line 52) | function parseArgs(): CliArgs {
  function stripFrontmatter (line 102) | function stripFrontmatter(content: string): string {
  function loadAgentPromptFromFile (line 107) | function loadAgentPromptFromFile(agentName: string): string {
  type Fixture (line 130) | interface Fixture {
  function loadFixtures (line 136) | function loadFixtures(fixtureFilter: string | null): Fixture[] {
  function loadGroundTruth (line 179) | function loadGroundTruth(fixtureId: string): GroundTruth | null {
  function sleep (line 199) | async function sleep(ms: number): Promise<void> {
  function callClaude (line 203) | async function callClaude(
  function pct (line 252) | function pct(value: number): string {
  function padEnd (line 256) | function padEnd(str: string, len: number): string {
  function printSummaryTable (line 260) | function printSummaryTable(results: FixtureResult[]): void {
  function printHeadToHead (line 296) | function printHeadToHead(
  function main (line 317) | async function main(): Promise<void> {

FILE: benchmarks/harsh-critic/scoring/__tests__/parser.test.ts
  constant SAMPLE_HARSH_CRITIC_OUTPUT (line 8) | const SAMPLE_HARSH_CRITIC_OUTPUT = `**VERDICT: REJECT**
  constant SAMPLE_MARKDOWN_HEADING_OUTPUT (line 39) | const SAMPLE_MARKDOWN_HEADING_OUTPUT = `**VERDICT: REJECT**
  constant SAMPLE_CRITIC_OUTPUT (line 70) | const SAMPLE_CRITIC_OUTPUT = `**[REJECT]**
  constant SAMPLE_CRITIC_OUTPUT_BARE_VERDICT (line 80) | const SAMPLE_CRITIC_OUTPUT_BARE_VERDICT = `REJECT
  constant SAMPLE_EMPTY_OUTPUT (line 85) | const SAMPLE_EMPTY_OUTPUT = ``;

FILE: benchmarks/harsh-critic/scoring/__tests__/scorer.test.ts
  function makeGroundTruthFinding (line 15) | function makeGroundTruthFinding(overrides: Partial<GroundTruthFinding> =...
  function makeGroundTruth (line 27) | function makeGroundTruth(overrides: Partial<GroundTruth> = {}): GroundTr...
  function makeParsedOutput (line 39) | function makeParsedOutput(overrides: Partial<ParsedAgentOutput> = {}): P...
  function makeFixtureResult (line 55) | function makeFixtureResult(overrides: Partial<FixtureResult> = {}): Fixt...

FILE: benchmarks/harsh-critic/scoring/parser.ts
  constant EVIDENCE_PATTERN (line 27) | const EVIDENCE_PATTERN =
  function hasEvidence (line 30) | function hasEvidence(text: string): boolean {
  type PerspectiveKey (line 38) | type PerspectiveKey = 'security' | 'newHire' | 'ops';
  type SectionBounds (line 40) | interface SectionBounds {
  constant NUMBERED_ITEM_PATTERN (line 45) | const NUMBERED_ITEM_PATTERN = /^([ \t]*)(?:\*{1,2}\s*)?\d+[.)](?:\*{1,2}...
  constant BULLET_ITEM_PATTERN (line 46) | const BULLET_ITEM_PATTERN = /^([ \t]*)[-*•]\s+(.+)$/;
  constant LIST_MARKER_PATTERN (line 47) | const LIST_MARKER_PATTERN = /^(?:[-*•]|(?:\*{1,2}\s*)?\d+[.)](?:\*{1,2})...
  constant SUBFIELD_PATTERN (line 50) | const SUBFIELD_PATTERN =
  function normalizeHeadingLine (line 53) | function normalizeHeadingLine(line: string): string {
  function isHorizontalRule (line 63) | function isHorizontalRule(line: string): boolean {
  function isHeadingLine (line 67) | function isHeadingLine(line: string): boolean {
  function lineMatchesAnyHeadingAlias (line 88) | function lineMatchesAnyHeadingAlias(line: string, aliases: RegExp[]): bo...
  function findSectionHeadingIndex (line 93) | function findSectionHeadingIndex(lines: string[], aliases: RegExp[]): nu...
  function findSectionBounds (line 100) | function findSectionBounds(lines: string[], aliases: RegExp[]): SectionB...
  function hasSection (line 116) | function hasSection(lines: string[], aliases: RegExp[]): boolean {
  function extractListItemsFromSection (line 120) | function extractListItemsFromSection(sectionLines: string[]): string[] {
  function extractSectionItems (line 183) | function extractSectionItems(lines: string[], aliases: RegExp[]): string...
  function dedupeStrings (line 189) | function dedupeStrings(items: string[]): string[] {
  function detectPerspectiveHeading (line 201) | function detectPerspectiveHeading(line: string): PerspectiveKey | null {
  function parsePerspectiveNotes (line 227) | function parsePerspectiveNotes(
  function toFinding (line 316) | function toFinding(text: string, severity: Severity): ParsedFinding {
  constant PRECOMMIT_ALIASES (line 324) | const PRECOMMIT_ALIASES = [/\bpre-?commitment\s+predictions?\b/];
  constant CRITICAL_ALIASES (line 325) | const CRITICAL_ALIASES = [/\bcritical\s+findings?\b/];
  constant MAJOR_ALIASES (line 326) | const MAJOR_ALIASES = [/\bmajor\s+findings?\b/];
  constant MINOR_ALIASES (line 327) | const MINOR_ALIASES = [/\bminor\s+findings?\b/];
  constant MISSING_ALIASES (line 328) | const MISSING_ALIASES = [/\bwhat'?s?\s+missing\b/];
  constant MULTI_PERSPECTIVE_ALIASES (line 329) | const MULTI_PERSPECTIVE_ALIASES = [
  constant SUMMARY_ALIASES (line 333) | const SUMMARY_ALIASES = [/\bsummary\b/];
  constant JUSTIFICATION_ALIASES (line 334) | const JUSTIFICATION_ALIASES = [/\bjustification\b/];
  function parseVerdict (line 336) | function parseVerdict(text: string): string {
  function parseFindingsSection (line 348) | function parseFindingsSection(lines: string[], aliases: RegExp[], severi...
  function parseHarshCritic (line 352) | function parseHarshCritic(rawOutput: string): ParsedAgentOutput {
  function parseCriticVerdict (line 400) | function parseCriticVerdict(text: string): string {
  function parseCriticFindings (line 417) | function parseCriticFindings(text: string): ParsedFinding[] {
  function parseCritic (line 425) | function parseCritic(rawOutput: string): ParsedAgentOutput {
  function parseAgentOutput (line 456) | function parseAgentOutput(

FILE: benchmarks/harsh-critic/scoring/reporter.ts
  function generateJsonReport (line 26) | function generateJsonReport(
  function pct (line 98) | function pct(value: number): string {
  function sign (line 102) | function sign(value: number): string {
  function bool (line 106) | function bool(value: boolean): string {
  constant METRIC_LABELS (line 110) | const METRIC_LABELS: Partial<Record<keyof BenchmarkScores, string>> = {
  constant SUMMARY_METRICS (line 121) | const SUMMARY_METRICS: Array<keyof BenchmarkScores> = [
  function generateMarkdownReport (line 139) | function generateMarkdownReport(report: BenchmarkReport): string {

FILE: benchmarks/harsh-critic/scoring/scorer.ts
  type MatchResult (line 25) | interface MatchResult {
  constant SEVERITY_ORDER (line 40) | const SEVERITY_ORDER: Severity[] = ['CRITICAL', 'MAJOR', 'MINOR'];
  function severityDistance (line 42) | function severityDistance(a: Severity, b: Severity): number {
  function severityMatches (line 46) | function severityMatches(agentSeverity: Severity, gtSeverity: Severity):...
  function normalizeTextForMatch (line 55) | function normalizeTextForMatch(value: string): string {
  function keywordMatchesText (line 65) | function keywordMatchesText(text: string, keyword: string): boolean {
  function countKeywordMatches (line 88) | function countKeywordMatches(text: string, keywords: string[]): number {
  function requiredKeywordMatches (line 92) | function requiredKeywordMatches(keywords: string[]): number {
  function textMatchesGroundTruth (line 104) | function textMatchesGroundTruth(text: string, gt: GroundTruthFinding): b...
  type FlatFinding (line 112) | interface FlatFinding {
  function flattenAgentFindings (line 118) | function flattenAgentFindings(parsed: ParsedAgentOutput): FlatFinding[] {
  function matchFindings (line 154) | function matchFindings(
  function computeSeverityAccuracy (line 198) | function computeSeverityAccuracy(
  function findingsForCategory (line 252) | function findingsForCategory(
  function countOverlap (line 262) | function countOverlap(ids: string[], matchedIds: string[]): number {
  function computeEvidenceRate (line 271) | function computeEvidenceRate(parsed: ParsedAgentOutput): number {
  function computeComposite (line 285) | function computeComposite(scores: Omit<BenchmarkScores, 'compositeScore'...
  function scoreFixture (line 311) | function scoreFixture(
  type NumericScoreKey (line 376) | type NumericScoreKey = {
  type BooleanScoreKey (line 380) | type BooleanScoreKey = {
  constant NUMERIC_KEYS (line 384) | const NUMERIC_KEYS: NumericScoreKey[] = [
  constant BOOLEAN_KEYS (line 395) | const BOOLEAN_KEYS: BooleanScoreKey[] = [
  function aggregateScores (line 404) | function aggregateScores(results: FixtureResult[]): BenchmarkScores {

FILE: benchmarks/harsh-critic/scoring/types.ts
  type Severity (line 12) | type Severity = 'CRITICAL' | 'MAJOR' | 'MINOR';
  type FindingCategory (line 14) | type FindingCategory = 'finding' | 'missing' | 'perspective';
  type Perspective (line 16) | type Perspective = 'security' | 'new-hire' | 'ops';
  type Domain (line 18) | type Domain = 'plan' | 'code' | 'analysis';
  type HarshCriticVerdict (line 20) | type HarshCriticVerdict = 'REJECT' | 'REVISE' | 'ACCEPT-WITH-RESERVATION...
  type CriticVerdict (line 22) | type CriticVerdict = 'OKAY' | 'REJECT';
  type AgentType (line 24) | type AgentType = 'harsh-critic' | 'critic';
  type GroundTruthFinding (line 30) | interface GroundTruthFinding {
  type GroundTruth (line 52) | interface GroundTruth {
  type ParsedFinding (line 74) | interface ParsedFinding {
  type ParsedAgentOutput (line 88) | interface ParsedAgentOutput {
  type BenchmarkScores (line 120) | interface BenchmarkScores {
  type FixtureResult (line 159) | interface FixtureResult {
  type BenchmarkReport (line 176) | interface BenchmarkReport {
  constant SCORING_WEIGHTS (line 203) | const SCORING_WEIGHTS = {
  constant MIN_KEYWORD_MATCHES (line 216) | const MIN_KEYWORD_MATCHES = 2;
  constant ALLOW_ADJACENT_SEVERITY (line 222) | const ALLOW_ADJACENT_SEVERITY = true;

FILE: benchmarks/run-all.ts
  constant BENCHMARKS_DIR (line 35) | const BENCHMARKS_DIR = __dirname;
  constant BASELINES_DIR (line 36) | const BASELINES_DIR = join(BENCHMARKS_DIR, 'baselines');
  type RunAllArgs (line 42) | interface RunAllArgs {
  function parseArgs (line 49) | function parseArgs(): RunAllArgs {
  type AgentBenchmark (line 87) | interface AgentBenchmark {
  constant ALL_BENCHMARKS (line 93) | const ALL_BENCHMARKS: AgentBenchmark[] = [
  function getLatestBaseline (line 120) | function getLatestBaseline(): string | null {
  type BaselineEntry (line 131) | interface BaselineEntry {
  type Baseline (line 139) | interface Baseline {
  function saveBaseline (line 145) | function saveBaseline(results: Map<string, unknown>): void {
  function compareWithBaseline (line 182) | function compareWithBaseline(
  function main (line 227) | async function main(): Promise<void> {

FILE: benchmarks/shared/parser.ts
  constant EVIDENCE_PATTERN (line 18) | const EVIDENCE_PATTERN =
  function hasEvidence (line 21) | function hasEvidence(text: string): boolean {
  constant LIST_ITEM_PATTERN (line 29) | const LIST_ITEM_PATTERN = /^(?:[-*\u2022]|\d+[.)])\s+(.+)$/;
  function extractListItems (line 31) | function extractListItems(lines: string[]): string[] {
  function normalizeHeading (line 67) | function normalizeHeading(line: string): string {
  function isHeadingLine (line 78) | function isHeadingLine(line: string): boolean {
  type Section (line 87) | interface Section {
  function extractSections (line 92) | function extractSections(rawOutput: string): Section[] {
  function detectSeverity (line 121) | function detectSeverity(heading: string): Severity | null {
  function detectSeverityFromText (line 129) | function detectSeverityFromText(text: string): Severity {
  function toFinding (line 141) | function toFinding(text: string, severity: Severity): ParsedFinding {
  function parseGenericOutput (line 150) | function parseGenericOutput(rawOutput: string): ParsedAgentOutput {
  function parseAgentOutput (line 238) | function parseAgentOutput(

FILE: benchmarks/shared/reporter.ts
  function generateAgentReport (line 24) | function generateAgentReport(
  function generateComparisonReport (line 45) | function generateComparisonReport(
  function pct (line 119) | function pct(value: number): string {
  function sign (line 123) | function sign(value: number): string {
  function bool (line 127) | function bool(value: boolean): string {
  constant METRIC_LABELS (line 131) | const METRIC_LABELS: Partial<Record<keyof BenchmarkScores, string>> = {
  constant SUMMARY_METRICS (line 142) | const SUMMARY_METRICS: Array<keyof BenchmarkScores> = [
  function generateMarkdownReport (line 160) | function generateMarkdownReport(

FILE: benchmarks/shared/runner.ts
  type BenchmarkCliArgs (line 36) | interface BenchmarkCliArgs {
  function parseCliArgs (line 49) | function parseCliArgs(
  type Fixture (line 96) | interface Fixture {
  function loadFixtures (line 106) | function loadFixtures(
  function loadGroundTruth (line 156) | function loadGroundTruth(
  function stripFrontmatter (line 178) | function stripFrontmatter(content: string): string {
  function loadAgentPrompt (line 186) | function loadAgentPrompt(
  function sleep (line 212) | async function sleep(ms: number): Promise<void> {
  type ApiCallResult (line 216) | interface ApiCallResult {
  function callClaude (line 222) | async function callClaude(
  function createClient (line 274) | function createClient(): Anthropic {
  function pct (line 298) | function pct(value: number): string {
  function padEnd (line 302) | function padEnd(str: string, len: number): string {
  function printSummaryTable (line 306) | function printSummaryTable(results: FixtureResult[], agentTypes: string[...
  function writeReports (line 346) | function writeReports(
  type AgentConfig (line 386) | interface AgentConfig {
  function runBenchmark (line 398) | async function runBenchmark(opts: {

FILE: benchmarks/shared/types.ts
  type Severity (line 12) | type Severity = 'CRITICAL' | 'MAJOR' | 'MINOR';
  type FindingCategory (line 14) | type FindingCategory = 'finding' | 'missing' | 'perspective';
  type Perspective (line 16) | type Perspective = 'security' | 'new-hire' | 'ops';
  type Domain (line 19) | type Domain = 'plan' | 'code' | 'analysis' | 'bug' | 'task';
  type AgentType (line 22) | type AgentType = string;
  type GroundTruthFinding (line 28) | interface GroundTruthFinding {
  type GroundTruth (line 51) | interface GroundTruth {
  type ParsedFinding (line 73) | interface ParsedFinding {
  type ParsedAgentOutput (line 88) | interface ParsedAgentOutput {
  type BenchmarkScores (line 120) | interface BenchmarkScores {
  type FixtureResult (line 159) | interface FixtureResult {
  type AgentBenchmarkReport (line 182) | interface AgentBenchmarkReport {
  type ComparisonReport (line 198) | interface ComparisonReport {
  constant SCORING_WEIGHTS (line 225) | const SCORING_WEIGHTS = {
  constant MIN_KEYWORD_MATCHES (line 238) | const MIN_KEYWORD_MATCHES = 2;
  constant ALLOW_ADJACENT_SEVERITY (line 244) | const ALLOW_ADJACENT_SEVERITY = true;

FILE: bridge/cli.cjs
  method "node_modules/commander/lib/error.js" (line 39) | "node_modules/commander/lib/error.js"(exports2) {
  method "node_modules/commander/lib/argument.js" (line 74) | "node_modules/commander/lib/argument.js"(exports2) {
  method "node_modules/commander/lib/help.js" (line 201) | "node_modules/commander/lib/help.js"(exports2) {
  method "node_modules/commander/lib/option.js" (line 615) | "node_modules/commander/lib/option.js"(exports2) {
  method "node_modules/commander/lib/suggestSimilar.js" (line 887) | "node_modules/commander/lib/suggestSimilar.js"(exports2) {
  method "node_modules/commander/lib/command.js" (line 967) | "node_modules/commander/lib/command.js"(exports2) {
  method "node_modules/commander/index.js" (line 3010) | "node_modules/commander/index.js"(exports2) {
  function getConfigDir (line 3031) | function getConfigDir() {
  method "src/utils/config-dir.ts" (line 3036) | "src/utils/config-dir.ts"() {
  function toForwardSlash (line 3044) | function toForwardSlash(path22) {
  function getClaudeConfigDir (line 3047) | function getClaudeConfigDir() {
  function getDataDir (line 3050) | function getDataDir() {
  function getConfigDir2 (line 3056) | function getConfigDir2() {
  function getStateDir (line 3062) | function getStateDir() {
  function prefersXdgOmcDirs (line 3068) | function prefersXdgOmcDirs() {
  function getUserHomeDir (line 3071) | function getUserHomeDir() {
  function getLegacyOmcDir (line 3077) | function getLegacyOmcDir() {
  function getGlobalOmcConfigRoot (line 3080) | function getGlobalOmcConfigRoot() {
  function getGlobalOmcStateRoot (line 3090) | function getGlobalOmcStateRoot() {
  function getGlobalOmcConfigPath (line 3100) | function getGlobalOmcConfigPath(...segments) {
  function getGlobalOmcStatePath (line 3103) | function getGlobalOmcStatePath(...segments) {
  function getLegacyOmcPath (line 3106) | function getLegacyOmcPath(...segments) {
  function dedupePaths (line 3109) | function dedupePaths(paths) {
  function getGlobalOmcConfigCandidates (line 3112) | function getGlobalOmcConfigCandidates(...segments) {
  function getGlobalOmcStateCandidates (line 3121) | function getGlobalOmcStateCandidates(...segments) {
  function safeRmSync (line 3134) | function safeRmSync(dirPath) {
  function stripTrailing (line 3145) | function stripTrailing(p) {
  function purgeStalePluginCacheVersions (line 3148) | function purgeStalePluginCacheVersions(options) {
  method "src/utils/paths.ts" (line 3227) | "src/utils/paths.ts"() {
  function parseJsonc (line 3238) | function parseJsonc(content) {
  function stripJsoncComments (line 3242) | function stripJsoncComments(content) {
  method "src/utils/jsonc.ts" (line 3288) | "src/utils/jsonc.ts"() {
  function validateUrlForSSRF (line 3294) | function validateUrlForSSRF(urlString) {
  function validateAnthropicBaseUrl (line 3354) | function validateAnthropicBaseUrl(urlString) {
  method "src/utils/ssrf-guard.ts" (line 3372) | "src/utils/ssrf-guard.ts"() {
  function resolveTierModelFromEnv (line 3405) | function resolveTierModelFromEnv(tier) {
  function getDefaultModelHigh (line 3414) | function getDefaultModelHigh() {
  function getDefaultModelMedium (line 3417) | function getDefaultModelMedium() {
  function getDefaultModelLow (line 3420) | function getDefaultModelLow() {
  function getDefaultTierModels (line 3423) | function getDefaultTierModels() {
  function resolveClaudeFamily (line 3430) | function resolveClaudeFamily(modelId) {
  function isBedrock (line 3438) | function isBedrock() {
  function isProviderSpecificModelId (line 3451) | function isProviderSpecificModelId(modelId) {
  function isVertexAI (line 3463) | function isVertexAI() {
  function isNonClaudeProvider (line 3473) | function isNonClaudeProvider() {
  method "src/config/models.ts" (line 3502) | "src/config/models.ts"() {
  function buildDefaultConfig (line 3545) | function buildDefaultConfig() {
  function getConfigPaths (line 3680) | function getConfigPaths() {
  function loadJsoncFile (line 3687) | function loadJsoncFile(path22) {
  function deepMerge (line 3700) | function deepMerge(target, source) {
  function loadEnvConfig (line 3719) | function loadEnvConfig() {
  function loadConfig (line 3839) | function loadConfig() {
  function looksLikeOmcGuidance (line 3860) | function looksLikeOmcGuidance(content) {
  function compactOmcStartupGuidance (line 3865) | function compactOmcStartupGuidance(content) {
  function findContextFiles (line 3887) | function findContextFiles(startDir) {
  function loadContextFromFiles (line 3912) | function loadContextFromFiles(files) {
  method "src/config/loader.ts" (line 3928) | "src/config/loader.ts"() {
  function getPackageDir (line 3961) | function getPackageDir() {
  function stripFrontmatter (line 3980) | function stripFrontmatter(content) {
  function loadAgentPrompt (line 3984) | function loadAgentPrompt(agentName) {
  function createAgentToolRestrictions (line 4014) | function createAgentToolRestrictions(blockedTools) {
  function mergeAgentConfig (line 4021) | function mergeAgentConfig(base, override) {
  function buildDelegationTable (line 4033) | function buildDelegationTable(availableAgents) {
  function buildUseAvoidSection (line 4050) | function buildUseAvoidSection(metadata) {
  function createEnvContext (line 4062) | function createEnvContext() {
  function getAvailableAgents (line 4079) | function getAvailableAgents(agents) {
  function buildKeyTriggersSection (line 4086) | function buildKeyTriggersSection(availableAgents) {
  function validateAgentConfig (line 4100) | function validateAgentConfig(config2) {
  function parseDisallowedTools (line 4113) | function parseDisallowedTools(agentName) {
  function formatOpenQuestions (line 4136) | function formatOpenQuestions(topic, questions) {
  function deepMerge2 (line 4145) | function deepMerge2(target, source) {
  method "src/agents/utils.ts" (line 4164) | "src/agents/utils.ts"() {
  method "src/agents/architect.ts" (line 4176) | "src/agents/architect.ts"() {
  method "src/agents/designer.ts" (line 4218) | "src/agents/designer.ts"() {
  method "src/agents/writer.ts" (line 4262) | "src/agents/writer.ts"() {
  method "src/agents/critic.ts" (line 4302) | "src/agents/critic.ts"() {
  method "src/agents/analyst.ts" (line 4341) | "src/agents/analyst.ts"() {
  method "src/agents/executor.ts" (line 4381) | "src/agents/executor.ts"() {
  method "src/agents/planner.ts" (line 4419) | "src/agents/planner.ts"() {
  method "src/agents/qa-tester.ts" (line 4458) | "src/agents/qa-tester.ts"() {
  method "src/agents/scientist.ts" (line 4498) | "src/agents/scientist.ts"() {
  method "src/agents/explore.ts" (line 4546) | "src/agents/explore.ts"() {
  method "src/agents/tracer.ts" (line 4587) | "src/agents/tracer.ts"() {
  method "src/agents/document-specialist.ts" (line 4627) | "src/agents/document-specialist.ts"() {
  function getConfiguredAgentModel (line 4689) | function getConfiguredAgentModel(name, config2) {
  function getAgentDefinitions (line 4693) | function getAgentDefinitions(options) {
  method "src/agents/definitions.ts" (line 4751) | "src/agents/definitions.ts"() {
  function isSecureRuntimeDir (line 4969) | function isSecureRuntimeDir(dir) {
  function getRuntimeDir (line 4981) | function getRuntimeDir() {
  function shortenSessionId (line 4997) | function shortenSessionId(sessionId) {
  function getSessionDir (line 5000) | function getSessionDir(sessionId) {
  function getBridgeSocketPath (line 5004) | function getBridgeSocketPath(sessionId) {
  function getBridgeMetaPath (line 5007) | function getBridgeMetaPath(sessionId) {
  function getBridgePortPath (line 5010) | function getBridgePortPath(sessionId) {
  function getSessionLockPath (line 5013) | function getSessionLockPath(sessionId) {
  function validatePathSegment (line 5016) | function validatePathSegment(segment, name) {
  method "src/tools/python-repl/paths.ts" (line 5044) | "src/tools/python-repl/paths.ts"() {
  function ensureDirSync (line 5080) | function ensureDirSync(dir) {
  function atomicWriteJson (line 5093) | async function atomicWriteJson(filePath, data) {
  function atomicWriteFileSync (line 5126) | function atomicWriteFileSync(filePath, content) {
  function atomicWriteJsonSync (line 5165) | function atomicWriteJsonSync(filePath, data) {
  function safeReadJson (line 5169) | async function safeReadJson(filePath) {
  method "src/lib/atomic-write.ts" (line 5184) | "src/lib/atomic-write.ts"() {
  function isProcessAlive (line 5194) | function isProcessAlive(pid) {
  function getProcessStartTime (line 5206) | async function getProcessStartTime(pid) {
  function getProcessStartTimeWindows (line 5217) | async function getProcessStartTimeWindows(pid) {
  function parseWmicCreationDate (line 5235) | function parseWmicCreationDate(stdout) {
  function parseWindowsEpochMilliseconds (line 5253) | function parseWindowsEpochMilliseconds(stdout) {
  function getProcessStartTimeWindowsPowerShellCim (line 5259) | async function getProcessStartTimeWindowsPowerShellCim(pid) {
  function getProcessStartTimeWindowsPowerShellProcess (line 5276) | async function getProcessStartTimeWindowsPowerShellProcess(pid) {
  function getProcessStartTimeMacOS (line 5293) | async function getProcessStartTimeMacOS(pid) {
  function getProcessStartTimeLinux (line 5305) | async function getProcessStartTimeLinux(pid) {
  method "src/platform/process-utils.ts" (line 5319) | "src/platform/process-utils.ts"() {
  function isWSL (line 5329) | function isWSL() {
  method "src/platform/index.ts" (line 5342) | "src/platform/index.ts"() {
  function trackOwnedBridgeSession (line 5352) | function trackOwnedBridgeSession(sessionId) {
  function getBridgeScriptPath (line 5357) | function getBridgeScriptPath() {
  function detectExistingPythonEnv (line 5390) | function detectExistingPythonEnv(projectRoot) {
  function ensurePythonEnvironment (line 5400) | async function ensurePythonEnvironment(projectRoot) {
  function verifyProcessIdentity (line 5414) | async function verifyProcessIdentity(meta) {
  function isSocket (line 5429) | function isSocket(socketPath) {
  function isBridgeReady (line 5437) | function isBridgeReady(socketPath, sessionId) {
  function readTcpPort (line 5443) | function readTcpPort(sessionId) {
  function safeUnlinkSocket (line 5455) | function safeUnlinkSocket(socketPath) {
  function safeUnlinkPortFile (line 5463) | function safeUnlinkPortFile(sessionId) {
  function isValidBridgeMeta (line 5472) | function isValidBridgeMeta(data) {
  function killProcessGroup (line 5477) | function killProcessGroup(pid, signal) {
  function spawnBridgeServer (line 5504) | async function spawnBridgeServer(sessionId, projectDir) {
  function ensureBridge (line 5601) | async function ensureBridge(sessionId, projectDir) {
  function killBridgeWithEscalation (line 5633) | async function killBridgeWithEscalation(sessionId, options) {
  function cleanupBridgeSessions (line 5689) | async function cleanupBridgeSessions(sessionIds) {
  function deleteBridgeMeta (line 5727) | async function deleteBridgeMeta(sessionId) {
  function removeFileIfExists (line 5734) | async function removeFileIfExists(filePath) {
  function sleep2 (line 5745) | function sleep2(ms) {
  method "src/tools/python-repl/bridge-manager.ts" (line 5750) | "src/tools/python-repl/bridge-manager.ts"() {
  function getWorktreeRoot (line 5772) | function getWorktreeRoot(cwd2) {
  function validatePath (line 5799) | function validatePath(inputPath) {
  function getProjectIdentifier (line 5807) | function getProjectIdentifier(worktreeRoot) {
  function getOmcRoot (line 5824) | function getOmcRoot(worktreeRoot) {
  function resolveOmcPath (line 5843) | function resolveOmcPath(relativePath, worktreeRoot) {
  function resolveStatePath (line 5853) | function resolveStatePath(stateName, worktreeRoot) {
  function ensureOmcDir (line 5857) | function ensureOmcDir(relativePath, worktreeRoot) {
  function getWorktreeNotepadPath (line 5864) | function getWorktreeNotepadPath(worktreeRoot) {
  function getWorktreeProjectMemoryPath (line 5867) | function getWorktreeProjectMemoryPath(worktreeRoot) {
  function validateSessionId (line 5870) | function validateSessionId(sessionId) {
  function isValidTranscriptPath (line 5881) | function isValidTranscriptPath(transcriptPath) {
  function resolveSessionStatePath (line 5906) | function resolveSessionStatePath(stateName, sessionId, worktreeRoot) {
  function getSessionStateDir (line 5911) | function getSessionStateDir(sessionId, worktreeRoot) {
  function listSessionIds (line 5915) | function listSessionIds(worktreeRoot) {
  function ensureSessionStateDir (line 5927) | function ensureSessionStateDir(sessionId, worktreeRoot) {
  function resolveToWorktreeRoot (line 5934) | function resolveToWorktreeRoot(directory) {
  function resolveTranscriptPath (line 5945) | function resolveTranscriptPath(transcriptPath, cwd2) {
  function validateWorkingDirectory (line 6003) | function validateWorkingDirectory(workingDirectory) {
  method "src/lib/worktree-paths.ts" (line 6047) | "src/lib/worktree-paths.ts"() {
  method "src/hooks/learner/constants.ts" (line 6081) | "src/hooks/learner/constants.ts"() {
  function findSkillFilesRecursive (line 6098) | function findSkillFilesRecursive(dir, results, depth = 0) {
  function safeRealpathSync (line 6117) | function safeRealpathSync(filePath) {
  function isWithinBoundary (line 6124) | function isWithinBoundary(realPath, boundary) {
  function findSkillFiles (line 6129) | function findSkillFiles(projectRoot, options) {
  method "src/hooks/learner/finder.ts" (line 6188) | "src/hooks/learner/finder.ts"() {
  function parseSkillFile (line 6197) | function parseSkillFile(rawContent) {
  function parseYamlMetadata (line 6239) | function parseYamlMetadata(yamlContent) {
  function parseStringValue (line 6293) | function parseStringValue(value) {
  function parseArrayValue (line 6300) | function parseArrayValue(rawValue, lines, currentIndex) {
  method "src/hooks/learner/parser.ts" (line 6332) | "src/hooks/learner/parser.ts"() {
  function createContentHash (line 6338) | function createContentHash(content) {
  function loadAllSkills (line 6341) | function loadAllSkills(projectRoot) {
  method "src/hooks/learner/loader.ts" (line 6379) | "src/hooks/learner/loader.ts"() {
  function getStateSessionOwner (line 6391) | function getStateSessionOwner(state) {
  function canClearStateForSession (line 6405) | function canClearStateForSession(state, sessionId) {
  function resolveFile (line 6409) | function resolveFile(mode, directory, sessionId) {
  function getLegacyStateCandidates (line 6416) | function getLegacyStateCandidates(mode, directory) {
  function writeModeState (line 6424) | function writeModeState(mode, state, directory, sessionId) {
  function readModeState (line 6442) | function readModeState(mode, directory, sessionId) {
  function clearModeStateFile (line 6459) | function clearModeStateFile(mode, directory, sessionId) {
  method "src/lib/mode-state-io.ts" (line 6500) | "src/lib/mode-state-io.ts"() {
  method "src/lib/mode-names.ts" (line 6511) | "src/lib/mode-names.ts"() {
  function getStateDir2 (line 6551) | function getStateDir2(cwd2) {
  function getStateFilePath (line 6554) | function getStateFilePath(cwd2, mode, sessionId) {
  function getMarkerFilePath (line 6561) | function getMarkerFilePath(cwd2, mode) {
  function isJsonModeActive (line 6566) | function isJsonModeActive(cwd2, mode, sessionId) {
  function isModeActive (line 6602) | function isModeActive(mode, cwd2, sessionId) {
  function getActiveModes (line 6605) | function getActiveModes(cwd2, sessionId) {
  function canStartMode (line 6614) | function canStartMode(mode, cwd2) {
  function getAllModeStatuses (line 6629) | function getAllModeStatuses(cwd2, sessionId) {
  function clearModeState (line 6636) | function clearModeState(mode, cwd2, sessionId) {
  function isModeActiveInAnySession (line 6734) | function isModeActiveInAnySession(mode, cwd2) {
  function getActiveSessionsForMode (line 6746) | function getActiveSessionsForMode(mode, cwd2) {
  method "src/hooks/mode-registry/index.ts" (line 6752) | "src/hooks/mode-registry/index.ts"() {
  function isLockStale (line 6805) | function isLockStale(lockPath, staleLockMs) {
  function lockPathFor (line 6821) | function lockPathFor(filePath) {
  function tryAcquireSync (line 6824) | function tryAcquireSync(lockPath, staleLockMs) {
  function acquireFileLockSync (line 6866) | function acquireFileLockSync(lockPath, opts) {
  function releaseFileLockSync (line 6889) | function releaseFileLockSync(handle) {
  function withFileLockSync (line 6899) | function withFileLockSync(lockPath, fn, opts) {
  function sleep3 (line 6910) | function sleep3(ms) {
  function acquireFileLock (line 6913) | async function acquireFileLock(lockPath, opts) {
  function releaseFileLock (line 6927) | function releaseFileLock(handle) {
  function withFileLock (line 6930) | async function withFileLock(lockPath, fn, opts) {
  method "src/lib/file-lock.ts" (line 6943) | "src/lib/file-lock.ts"() {
  method "src/features/context-injector/collector.ts" (line 6957) | "src/features/context-injector/collector.ts"() {
  function getReplayFilePath (line 7068) | function getReplayFilePath(directory, sessionId) {
  function getSessionStartTime (line 7076) | function getSessionStartTime(sessionId) {
  function getElapsedSeconds (line 7082) | function getElapsedSeconds(sessionId) {
  function appendReplayEvent (line 7086) | function appendReplayEvent(directory, sessionId, event) {
  function recordAgentStart (line 7104) | function recordAgentStart(directory, sessionId, agentId, agentType, task...
  function recordAgentStop (line 7114) | function recordAgentStop(directory, sessionId, agentId, agentType, succe...
  function recordFileTouch (line 7123) | function recordFileTouch(directory, sessionId, agentId, filePath) {
  function readReplayEvents (line 7130) | function readReplayEvents(directory, sessionId) {
  function detectCycles (line 7146) | function detectCycles(sequence) {
  function getReplaySummary (line 7168) | function getReplaySummary(directory, sessionId) {
  method "src/hooks/subagent-tracker/session-replay.ts" (line 7305) | "src/hooks/subagent-tracker/session-replay.ts"() {
  function getPackageDir2 (line 7317) | function getPackageDir2() {
  function loadTemplate (line 7329) | function loadTemplate(filename) {
  function isWindows (line 7336) | function isWindows() {
  method "src/installer/hooks.ts" (line 7341) | "src/installer/hooks.ts"() {
  function getRuntimePackageVersion (line 7632) | function getRuntimePackageVersion() {
  method "src/lib/version.ts" (line 7653) | "src/lib/version.ts"() {
  function resolveNodeBinary (line 7662) | function resolveNodeBinary() {
  function pickLatestVersion (line 7711) | function pickLatestVersion(versions) {
  method "src/utils/resolve-node.ts" (line 7725) | "src/utils/resolve-node.ts"() {
  function getUnifiedMcpRegistryPath (line 7735) | function getUnifiedMcpRegistryPath() {
  function getUnifiedMcpRegistryStatePath (line 7738) | function getUnifiedMcpRegistryStatePath() {
  function getUnifiedMcpRegistryPathCandidates (line 7741) | function getUnifiedMcpRegistryPathCandidates() {
  function getUnifiedMcpRegistryStatePathCandidates (line 7747) | function getUnifiedMcpRegistryStatePathCandidates() {
  function getClaudeMcpConfigPath (line 7750) | function getClaudeMcpConfigPath() {
  function getCodexConfigPath (line 7756) | function getCodexConfigPath() {
  function isStringRecord (line 7760) | function isStringRecord(value) {
  function normalizeRegistryEntry (line 7763) | function normalizeRegistryEntry(value) {
  function normalizeRegistry (line 7784) | function normalizeRegistry(value) {
  function extractClaudeMcpRegistry (line 7801) | function extractClaudeMcpRegistry(settings) {
  function loadRegistryFromDisk (line 7804) | function loadRegistryFromDisk(path22) {
  function ensureParentDir (line 7811) | function ensureParentDir(path22) {
  function readManagedServerNames (line 7817) | function readManagedServerNames() {
  function writeManagedServerNames (line 7831) | function writeManagedServerNames(serverNames) {
  function bootstrapRegistryFromClaude (line 7836) | function bootstrapRegistryFromClaude(settings, registryPath) {
  function loadOrBootstrapRegistry (line 7845) | function loadOrBootstrapRegistry(settings) {
  function entriesEqual (line 7863) | function entriesEqual(left, right) {
  function applyRegistryToClaudeSettings (line 7866) | function applyRegistryToClaudeSettings(settings) {
  function syncClaudeMcpConfig (line 7875) | function syncClaudeMcpConfig(existingClaudeConfig, registry2, managedSer...
  function escapeTomlString (line 7895) | function escapeTomlString(value) {
  function unescapeTomlString (line 7898) | function unescapeTomlString(value) {
  function renderTomlString (line 7901) | function renderTomlString(value) {
  function parseTomlQuotedString (line 7904) | function parseTomlQuotedString(value) {
  function renderTomlStringArray (line 7908) | function renderTomlStringArray(values) {
  function parseTomlStringArray (line 7911) | function parseTomlStringArray(value) {
  function renderTomlEnvTable (line 7919) | function renderTomlEnvTable(env2) {
  function parseTomlEnvTable (line 7923) | function parseTomlEnvTable(value) {
  function renderCodexServerBlock (line 7937) | function renderCodexServerBlock(name, entry) {
  function stripManagedCodexBlock (line 7956) | function stripManagedCodexBlock(content) {
  function renderManagedCodexMcpBlock (line 7963) | function renderManagedCodexMcpBlock(registry2) {
  function syncCodexConfigToml (line 7971) | function syncCodexConfigToml(existingContent, registry2) {
  function parseCodexMcpRegistryEntries (line 7984) | function parseCodexMcpRegistryEntries(content) {
  function syncUnifiedMcpRegistryTargets (line 8039) | function syncUnifiedMcpRegistryTargets(settings) {
  function readJsonObject (line 8081) | function readJsonObject(path22) {
  function inspectUnifiedMcpRegistrySync (line 8092) | function inspectUnifiedMcpRegistrySync() {
  method "src/installer/mcp-registry.ts" (line 8144) | "src/installer/mcp-registry.ts"() {
  function isComparableVersion (line 8157) | function isComparableVersion(version3) {
  function compareVersions (line 8160) | function compareVersions(a, b) {
  function extractOmcVersionMarker (line 8172) | function extractOmcVersionMarker(content) {
  function getNewestInstalledVersionHint (line 8176) | function getNewestInstalledVersionHint() {
  function findLineAnchoredMarker (line 8208) | function findLineAnchoredMarker(content, marker, fromEnd = false) {
  function escapeRegex2 (line 8223) | function escapeRegex2(value) {
  function createLineAnchoredMarkerRegex (line 8226) | function createLineAnchoredMarkerRegex(marker, flags = "gm") {
  function stripGeneratedUserCustomizationHeaders (line 8229) | function stripGeneratedUserCustomizationHeaders(content) {
  function trimClaudeUserContent (line 8235) | function trimClaudeUserContent(content) {
  function isHudEnabledInConfig (line 8241) | function isHudEnabledInConfig() {
  function isOmcStatusLine (line 8254) | function isOmcStatusLine(statusLine) {
  function isOmcHook (line 8267) | function isOmcHook(command) {
  function checkNodeVersion (line 8280) | function checkNodeVersion() {
  function isClaudeInstalled (line 8288) | function isClaudeInstalled() {
  function isRunningAsPlugin (line 8297) | function isRunningAsPlugin() {
  function isProjectScopedPlugin (line 8300) | function isProjectScopedPlugin() {
  function directoryHasMarkdownFiles (line 8310) | function directoryHasMarkdownFiles(directory) {
  function getInstalledOmcPluginRoots (line 8320) | function getInstalledOmcPluginRoots() {
  function hasPluginProvidedAgentFiles (line 8347) | function hasPluginProvidedAgentFiles() {
  function getPackageDir3 (line 8352) | function getPackageDir3() {
  function getRuntimePackageRoot (line 8364) | function getRuntimePackageRoot() {
  function loadAgentDefinitions (line 8367) | function loadAgentDefinitions() {
  function loadCommandDefinitions (line 8381) | function loadCommandDefinitions() {
  function loadBundledSkillContent (line 8394) | function loadBundledSkillContent(skillName) {
  function loadClaudeMdContent (line 8401) | function loadClaudeMdContent() {
  function extractOmcVersionFromClaudeMd (line 8409) | function extractOmcVersionFromClaudeMd(content) {
  function syncPersistedSetupVersion (line 8422) | function syncPersistedSetupVersion(options) {
  function mergeClaudeMd (line 8454) | function mergeClaudeMd(existingContent, omcContent, version3) {
  function install (line 8506) | function install(options = {}) {
  function isInstalled (line 8924) | function isInstalled() {
  function getInstallInfo (line 8927) | function getInstallInfo() {
  method "src/installer/index.ts" (line 8945) | "src/installer/index.ts"() {
  function syncMarketplaceClone (line 9014) | function syncMarketplaceClone(verbose = false) {
  function copyPluginSyncPayload (line 9087) | function copyPluginSyncPayload(sourceRoot, targetRoots) {
  function syncActivePluginCache (line 9115) | function syncActivePluginCache() {
  function shouldBlockStandaloneUpdateInCurrentSession (line 9126) | function shouldBlockStandaloneUpdateInCurrentSession() {
  function syncPluginCache (line 9140) | function syncPluginCache(verbose = false) {
  function getOMCConfig (line 9185) | function getOMCConfig() {
  function isSilentAutoUpdateEnabled (line 9211) | function isSilentAutoUpdateEnabled() {
  function isAutoUpgradePromptEnabled (line 9214) | function isAutoUpgradePromptEnabled() {
  function isTeamEnabled (line 9217) | function isTeamEnabled() {
  function getInstalledVersion (line 9232) | function getInstalledVersion() {
  function saveVersionMetadata (line 9260) | function saveVersionMetadata(metadata) {
  function updateLastCheckTime (line 9267) | function updateLastCheckTime() {
  function fetchLatestRelease (line 9274) | async function fetchLatestRelease() {
  function compareVersions2 (line 9306) | function compareVersions2(a, b) {
  function checkForUpdates (line 9320) | async function checkForUpdates() {
  function reconcileUpdateRuntime (line 9335) | function reconcileUpdateRuntime(options) {
  function getFirstResolvedBinaryPath (line 9400) | function getFirstResolvedBinaryPath(output) {
  function resolveOmcBinaryPath (line 9407) | function resolveOmcBinaryPath() {
  function performUpdate (line 9422) | async function performUpdate(options) {
  function formatUpdateNotification (line 9518) | function formatUpdateNotification(checkResult) {
  function shouldCheckForUpdates (line 9545) | function shouldCheckForUpdates(intervalHours = 24) {
  function backgroundUpdateCheck (line 9555) | function backgroundUpdateCheck(callback) {
  function interactiveUpdate (line 9571) | async function interactiveUpdate() {
  function getSilentUpdateState (line 9599) | function getSilentUpdateState() {
  function saveSilentUpdateState (line 9609) | function saveSilentUpdateState(state) {
  function silentLog (line 9616) | function silentLog(message, logFile) {
  function silentAutoUpdate (line 9631) | async function silentAutoUpdate(config2 = {}) {
  function hasPendingUpdateRestart (line 9703) | function hasPendingUpdateRestart() {
  function clearPendingUpdateRestart (line 9707) | function clearPendingUpdateRestart() {
  function getPendingUpdateVersion (line 9712) | function getPendingUpdateVersion() {
  function initSilentAutoUpdate (line 9716) | function initSilentAutoUpdate(config2 = {}) {
  method "src/features/auto-update.ts" (line 9722) | "src/features/auto-update.ts"() {
  function getPrdPath (line 9757) | function getPrdPath(directory) {
  function getOmcPrdPath (line 9760) | function getOmcPrdPath(directory) {
  function findPrdPath (line 9763) | function findPrdPath(directory) {
  function readPrd (line 9774) | function readPrd(directory) {
  function writePrd (line 9790) | function writePrd(directory, prd) {
  function getPrdStatus (line 9810) | function getPrdStatus(prd) {
  function markStoryComplete (line 9824) | function markStoryComplete(directory, storyId, notes) {
  function markStoryIncomplete (line 9839) | function markStoryIncomplete(directory, storyId, notes) {
  function getStory (line 9854) | function getStory(directory, storyId) {
  function getNextStory (line 9861) | function getNextStory(directory) {
  function createPrd (line 9869) | function createPrd(project, branchName, description, stories) {
  function createSimplePrd (line 9881) | function createSimplePrd(project, branchName, taskDescription) {
  function initPrd (line 9897) | function initPrd(directory, project, branchName, description, stories) {
  function formatPrdStatus (line 9901) | function formatPrdStatus(status) {
  function formatStory (line 9914) | function formatStory(story) {
  function formatPrd (line 9932) | function formatPrd(prd) {
  function formatNextStoryPrompt (line 9953) | function formatNextStoryPrompt(story) {
  method "src/hooks/ralph/prd.ts" (line 9978) | "src/hooks/ralph/prd.ts"() {
  function getProgressPath (line 9989) | function getProgressPath(directory) {
  function getOmcProgressPath (line 9992) | function getOmcProgressPath(directory) {
  function findProgressPath (line 9995) | function findProgressPath(directory) {
  function readProgressRaw (line 10006) | function readProgressRaw(directory) {
  function parseProgress (line 10017) | function parseProgress(content) {
  function readProgress (line 10096) | function readProgress(directory) {
  function initProgress (line 10103) | function initProgress(directory) {
  function appendProgress (line 10130) | function appendProgress(directory, entry) {
  function addPattern2 (line 10176) | function addPattern2(directory, pattern, retryCount = 0) {
  function getPatterns (line 10209) | function getPatterns(directory) {
  function getRecentLearnings (line 10216) | function getRecentLearnings(directory, limit = 5) {
  function formatPatternsForContext (line 10228) | function formatPatternsForContext(directory) {
  function formatProgressForContext (line 10247) | function formatProgressForContext(directory, limit = 3) {
  function formatLearningsForContext (line 10272) | function formatLearningsForContext(directory) {
  function getProgressContext (line 10292) | function getProgressContext(directory) {
  method "src/hooks/ralph/progress.ts" (line 10303) | "src/hooks/ralph/progress.ts"() {
  function getStateFilePath2 (line 10326) | function getStateFilePath2(directory, sessionId) {
  function readUltraworkState (line 10333) | function readUltraworkState(directory, sessionId) {
  function writeUltraworkState (line 10344) | function writeUltraworkState(state, directory, sessionId) {
  function activateUltrawork (line 10352) | function activateUltrawork(prompt, sessionId, directory, linkedToRalph) {
  function deactivateUltrawork (line 10365) | function deactivateUltrawork(directory, sessionId) {
  function incrementReinforcement (line 10394) | function incrementReinforcement(directory, sessionId) {
  function shouldReinforceUltrawork (line 10406) | function shouldReinforceUltrawork(sessionId, directory) {
  function getUltraworkPersistenceMessage (line 10416) | function getUltraworkPersistenceMessage(state) {
  function createUltraworkStateHook (line 10440) | function createUltraworkStateHook(directory) {
  method "src/hooks/ultrawork/index.ts" (line 10451) | "src/hooks/ultrawork/index.ts"() {
  method "src/hooks/team-pipeline/types.ts" (line 10461) | "src/hooks/team-pipeline/types.ts"() {
  function getTeamStatePath (line 10467) | function getTeamStatePath(directory, sessionId) {
  function readTeamPipelineState (line 10473) | function readTeamPipelineState(directory, sessionId) {
  method "src/hooks/team-pipeline/state.ts" (line 10493) | "src/hooks/team-pipeline/state.ts"() {
  function isUltraQAActive (line 10503) | function isUltraQAActive(directory, sessionId) {
  function readRalphState (line 10534) | function readRalphState(directory, sessionId) {
  function writeRalphState (line 10541) | function writeRalphState(directory, state, sessionId) {
  function clearRalphState (line 10549) | function clearRalphState(directory, sessionId) {
  function clearLinkedUltraworkState (line 10552) | function clearLinkedUltraworkState(directory, sessionId) {
  function incrementRalphIteration (line 10559) | function incrementRalphIteration(directory, sessionId) {
  function detectNoPrdFlag (line 10570) | function detectNoPrdFlag(prompt) {
  function stripNoPrdFlag (line 10573) | function stripNoPrdFlag(prompt) {
  function normalizeRalphCriticMode (line 10576) | function normalizeRalphCriticMode(value) {
  function detectCriticModeFlag (line 10583) | function detectCriticModeFlag(prompt) {
  function stripCriticModeFlag (line 10587) | function stripCriticModeFlag(prompt) {
  function createRalphLoopHook (line 10590) | function createRalphLoopHook(directory) {
  function hasPrd (line 10655) | function hasPrd(directory) {
  function getPrdCompletionStatus (line 10659) | function getPrdCompletionStatus(directory) {
  function getRalphContext (line 10677) | function getRalphContext(directory) {
  function setCurrentStory (line 10697) | function setCurrentStory(directory, storyId) {
  function enablePrdMode (line 10705) | function enablePrdMode(directory) {
  function recordStoryProgress (line 10714) | function recordStoryProgress(directory, storyId, implementation, filesCh...
  function recordPattern (line 10722) | function recordPattern(directory, pattern) {
  function getTeamPhaseDirective (line 10725) | function getTeamPhaseDirective(directory, sessionId) {
  function shouldCompleteByPrd (line 10748) | function shouldCompleteByPrd(directory) {
  method "src/hooks/ralph/loop.ts" (line 10754) | "src/hooks/ralph/loop.ts"() {
  function commandExists2 (line 10771) | function commandExists2(command, env2) {
  function resolveOmcCliPrefix (line 10779) | function resolveOmcCliPrefix(options = {}) {
  function formatOmcCliInvocation (line 10791) | function formatOmcCliInvocation(commandSuffix, options = {}) {
  function rewriteOmcCliInvocations (line 10795) | function rewriteOmcCliInvocations(text, options = {}) {
  method "src/utils/omc-cli-rendering.ts" (line 10804) | "src/utils/omc-cli-rendering.ts"() {
  function getCriticMode (line 10813) | function getCriticMode(mode) {
  function getCriticLabel (line 10816) | function getCriticLabel(mode) {
  function getVerificationAgentStep (line 10826) | function getVerificationAgentStep(mode) {
  function getVerificationStatePath (line 10846) | function getVerificationStatePath(directory, sessionId) {
  function readVerificationState (line 10852) | function readVerificationState(directory, sessionId) {
  function writeVerificationState (line 10863) | function writeVerificationState(directory, state, sessionId) {
  function clearVerificationState (line 10884) | function clearVerificationState(directory, sessionId) {
  function startVerification (line 10896) | function startVerification(directory, completionClaim, originalTask, cri...
  function recordArchitectFeedback (line 10909) | function recordArchitectFeedback(directory, approved, feedback, sessionI...
  function getArchitectVerificationPrompt (line 10928) | function getArchitectVerificationPrompt(state, currentStory) {
  function getArchitectRejectionContinuationPrompt (line 10979) | function getArchitectRejectionContinuationPrompt(state) {
  function detectArchitectApproval (line 11008) | function detectArchitectApproval(text) {
  function detectArchitectRejection (line 11011) | function detectArchitectRejection(text) {
  method "src/hooks/ralph/verifier.ts" (line 11033) | "src/hooks/ralph/verifier.ts"() {
  method "src/hooks/ralph/index.ts" (line 11116) | "src/hooks/ralph/index.ts"() {
  function debugLog (line 11146) | function debugLog(message, ...args) {
  function isValidSessionId (line 11152) | function isValidSessionId(sessionId) {
  function getStopReasonFields (line 11159) | function getStopReasonFields(context) {
  function isUserAbort (line 11169) | function isUserAbort(context) {
  function isExplicitCancelCommand (line 11179) | function isExplicitCancelCommand(context) {
  function isContextLimitStop (line 11212) | function isContextLimitStop(context) {
  function isRateLimitStop (line 11228) | function isRateLimitStop(context) {
  function isAuthenticationError (line 11250) | function isAuthenticationError(context) {
  function getTodoFilePaths (line 11256) | function getTodoFilePaths(sessionId, directory) {
  function parseTodoFile (line 11269) | function parseTodoFile(filePath) {
  function isIncomplete (line 11290) | function isIncomplete(todo) {
  function getTaskDirectory (line 11293) | function getTaskDirectory(sessionId) {
  function isValidTask (line 11299) | function isValidTask(data) {
  function readTaskFiles (line 11305) | function readTaskFiles(sessionId) {
  function isTaskIncomplete (line 11328) | function isTaskIncomplete(task) {
  function checkIncompleteTasks (line 11331) | function checkIncompleteTasks(sessionId) {
  function checkLegacyTodos (line 11343) | function checkLegacyTodos(sessionId, directory) {
  function checkIncompleteTodos (line 11368) | async function checkIncompleteTodos(sessionId, directory, stopContext) {
  function createTodoContinuationHook (line 11393) | function createTodoContinuationHook(directory) {
  function formatTodoStatus (line 11398) | function formatTodoStatus(result) {
  function getNextPendingTodo (line 11404) | function getNextPendingTodo(result) {
  method "src/hooks/todo-continuation/index.ts" (line 11413) | "src/hooks/todo-continuation/index.ts"() {
  function formatSwallowedError (line 11441) | function formatSwallowedError(error2) {
  function logSwallowedError (line 11450) | function logSwallowedError(context, error2) {
  function createSwallowedErrorLogger (line 11456) | function createSwallowedErrorLogger(context) {
  method "src/lib/swallowed-error.ts" (line 11462) | "src/lib/swallowed-error.ts"() {
  function isCJKCharacter (line 11468) | function isCJKCharacter(codePoint) {
  function isZeroWidth (line 11491) | function isZeroWidth(codePoint) {
  function getCharWidth (line 11506) | function getCharWidth(char) {
  function stringWidth (line 11513) | function stringWidth(str) {
  function stripAnsi (line 11522) | function stripAnsi(str) {
  function truncateToWidth (line 11528) | function truncateToWidth(str, maxWidth, suffix = "...") {
  function truncateToWidthNoSuffix (line 11539) | function truncateToWidthNoSuffix(str, maxWidth) {
  method "src/utils/string-width.ts" (line 11551) | "src/utils/string-width.ts"() {
  function hasText (line 11557) | function hasText(value) {
  function hasAssignedTasks (line 11560) | function hasAssignedTasks(worker) {
  function workerPriority (line 11563) | function workerPriority(worker) {
  function mergeAssignedTasks (line 11570) | function mergeAssignedTasks(primary, secondary) {
  function backfillText (line 11578) | function backfillText(primary, secondary) {
  function backfillBoolean (line 11581) | function backfillBoolean(primary, secondary) {
  function backfillNumber (line 11584) | function backfillNumber(primary, secondary, predicate) {
  function chooseWinningWorker (line 11588) | function chooseWinningWorker(existing, incoming) {
  function canonicalizeWorkers (line 11596) | function canonicalizeWorkers(workers) {
  function canonicalizeTeamConfigWorkers (line 11635) | function canonicalizeTeamConfigWorkers(config2) {
  method "src/team/worker-canonicalization.ts" (line 11648) | "src/team/worker-canonicalization.ts"() {
  function resolveConfig (line 11663) | function resolveConfig(config2) {
  function stateFilePath (line 11670) | function stateFilePath(directory) {
  function readJsonSafe (line 11673) | function readJsonSafe(path22) {
  function readJsonLinesSafe (line 11681) | function readJsonLinesSafe(path22) {
  function writeState (line 11689) | function writeState(directory, state) {
  function parseTime (line 11697) | function parseTime(value) {
  function compactText (line 11702) | function compactText(value, width = 64) {
  function formatTime (line 11707) | function formatTime(value) {
  function latest (line 11712) | function latest(...values) {
  function shortAgentType (line 11715) | function shortAgentType(agentType) {
  function sessionAgentName (line 11718) | function sessionAgentName(agentType, agentId) {
  function summarizeTask (line 11721) | function summarizeTask(task) {
  function deriveSessionStatus (line 11725) | function deriveSessionStatus(mission) {
  function ensureSessionMission (line 11731) | function ensureSessionMission(state, input) {
  function recalcSessionMission (line 11752) | function recalcSessionMission(mission) {
  function readMissionBoardState (line 11764) | function readMissionBoardState(directory) {
  function recordMissionAgentStart (line 11767) | function recordMissionAgentStart(directory, input) {
  function recordMissionAgentStop (line 11804) | function recordMissionAgentStop(directory, input) {
  function deriveTeamStatus (line 11833) | function deriveTeamStatus(taskCounts, agents) {
  function deriveWorkerStatus (line 11845) | function deriveWorkerStatus(workerStatus, task) {
  function collectTeamMission (line 11851) | function collectTeamMission(teamRoot, teamName, config2) {
  function mergeMissions (line 11954) | function mergeMissions(previous, teamMissions, config2) {
  function refreshMissionBoardState (line 11966) | function refreshMissionBoardState(directory, rawConfig = DEFAULT_CONFIG3) {
  function renderMissionBoard (line 11977) | function renderMissionBoard(state, rawConfig = DEFAULT_CONFIG3) {
  method "src/hud/mission-board.ts" (line 12007) | "src/hud/mission-board.ts"() {
  method "src/hud/types.ts" (line 12035) | "src/hud/types.ts"() {
  function cleanupStaleBackgroundTasks (line 12312) | async function cleanupStaleBackgroundTasks(thresholdMs = STALE_TASK_THRE...
  function detectOrphanedTasks (line 12332) | async function detectOrphanedTasks() {
  function markOrphanedTasksAsStale (line 12349) | async function markOrphanedTasksAsStale() {
  method "src/hud/background-cleanup.ts" (line 12370) | "src/hud/background-cleanup.ts"() {
  function getLocalStateFilePath (line 12378) | function getLocalStateFilePath(directory) {
  function getSettingsFilePath (line 12383) | function getSettingsFilePath() {
  function getConfigFilePath (line 12386) | function getConfigFilePath() {
  function readJsonFile (line 12389) | function readJsonFile(filePath) {
  function getLegacyHudConfig (line 12399) | function getLegacyHudConfig() {
  function mergeElements (line 12402) | function mergeElements(primary, secondary) {
  function mergeThresholds (line 12408) | function mergeThresholds(primary, secondary) {
  function mergeContextLimitWarning (line 12414) | function mergeContextLimitWarning(primary, secondary) {
  function mergeMissionBoardConfig (line 12420) | function mergeMissionBoardConfig(primary, secondary) {
  function ensureStateDir (line 12426) | function ensureStateDir(directory) {
  function readHudState (line 12433) | function readHudState(directory) {
  function writeHudState (line 12462) | function writeHudState(state, directory) {
  function createEmptyHudState (line 12476) | function createEmptyHudState() {
  function getRunningTasks (line 12482) | function getRunningTasks(state) {
  function readHudConfig (line 12486) | function readHudConfig() {
  function mergeWithDefaults (line 12527) | function mergeWithDefaults(config2) {
  function initializeHUDState (line 12563) | async function initializeHUDState() {
  method "src/hud/state.ts" (line 12574) | "src/hud/state.ts"() {
  function sanitizePlanOutputSegment (line 12588) | function sanitizePlanOutputSegment(value) {
  function getPlanOutputDirectory (line 12592) | function getPlanOutputDirectory(config2) {
  function getPlanOutputFilenameTemplate (line 12602) | function getPlanOutputFilenameTemplate(config2) {
  function resolvePlanOutputFilename (line 12610) | function resolvePlanOutputFilename(kind, config2) {
  function resolvePlanOutputPath (line 12624) | function resolvePlanOutputPath(kind, config2) {
  function resolvePlanOutputAbsolutePath (line 12630) | function resolvePlanOutputAbsolutePath(directory, kind, config2) {
  function resolveAutopilotPlanPath (line 12633) | function resolveAutopilotPlanPath(config2) {
  function resolveOpenQuestionsPlanPath (line 12636) | function resolveOpenQuestionsPlanPath(config2) {
  method "src/config/plan-output.ts" (line 12641) | "src/config/plan-output.ts"() {
  function syncSleep (line 12687) | function syncSleep(ms) {
  function mergeTrackerStates (line 12692) | function mergeTrackerStates(diskState, pendingState) {
  function acquireLock (line 12723) | function acquireLock(directory) {
  function releaseLock (line 12778) | function releaseLock(directory) {
  function getStateFilePath3 (line 12785) | function getStateFilePath3(directory) {
  function readDiskState (line 12792) | function readDiskState(directory) {
  function readTrackingState (line 12817) | function readTrackingState(directory) {
  function writeTrackingStateImmediate (line 12824) | function writeTrackingStateImmediate(directory, state) {
  function executeFlush (line 12833) | function executeFlush(directory, pendingState) {
  function writeTrackingState (line 12846) | function writeTrackingState(directory, state) {
  function flushPendingWrites (line 12888) | function flushPendingWrites() {
  function detectParentMode (line 12897) | function detectParentMode(directory) {
  function getStaleAgents (line 12926) | function getStaleAgents(state) {
  function processSubagentStart (line 12937) | function processSubagentStart(input) {
  function processSubagentStop (line 13009) | function processSubagentStop(input) {
  function cleanupStaleAgents (line 13081) | function cleanupStaleAgents(directory) {
  function getActiveAgentSnapshot (line 13108) | function getActiveAgentSnapshot(directory) {
  function getActiveAgentCount (line 13115) | function getActiveAgentCount(directory) {
  function getAgentsByType (line 13118) | function getAgentsByType(directory, agentType) {
  function getRunningAgents (line 13122) | function getRunningAgents(directory) {
  function getTrackingStats (line 13126) | function getTrackingStats(directory) {
  function recordToolUsage (line 13135) | function recordToolUsage(directory, agentId, toolName, success) {
  function recordToolUsageWithTiming (line 13158) | function recordToolUsageWithTiming(directory, agentId, toolName, duratio...
  function getAgentDashboard (line 13182) | function getAgentDashboard(directory) {
  function getAgentObservatory (line 13206) | function getAgentObservatory(directory) {
  function suggestInterventions (line 13257) | function suggestInterventions(directory) {
  function calculateParallelEfficiency (line 13313) | function calculateParallelEfficiency(directory) {
  function recordFileOwnership (line 13323) | function recordFileOwnership(directory, agentId, filePath) {
  function detectFileConflicts (line 13345) | function detectFileConflicts(directory) {
  function getFileOwnershipMap (line 13365) | function getFileOwnershipMap(directory) {
  function getAgentPerformance (line 13377) | function getAgentPerformance(directory, agentId) {
  function getAllAgentPerformance (line 13421) | function getAllAgentPerformance(directory) {
  function updateTokenUsage (line 13425) | function updateTokenUsage(directory, agentId, tokens) {
  function handleSubagentStart (line 13452) | async function handleSubagentStart(input) {
  function handleSubagentStop (line 13455) | async function handleSubagentStop(input) {
  function clearTrackingState (line 13458) | function clearTrackingState(directory) {
  method "src/hooks/subagent-tracker/index.ts" (line 13470) | "src/hooks/subagent-tracker/index.ts"() {
  function getSkillProtection (line 13504) | function getSkillProtection(skillName, rawSkillName) {
  function getSkillConfig (line 13511) | function getSkillConfig(skillName, rawSkillName) {
  function readSkillActiveState (line 13514) | function readSkillActiveState(directory, sessionId) {
  function writeSkillActiveState (line 13521) | function writeSkillActiveState(directory, skillName, sessionId, rawSkill...
  function clearSkillActiveState (line 13542) | function clearSkillActiveState(directory, sessionId) {
  function isSkillStateStale (line 13545) | function isSkillStateStale(state) {
  function checkSkillActiveState (line 13554) | function checkSkillActiveState(directory, sessionId) {
  method "src/hooks/skill-state/index.ts" (line 13588) | "src/hooks/skill-state/index.ts"() {
  function readPermissionStringEntries (line 13664) | function readPermissionStringEntries(filePath, key) {
  function getClaudePermissionAllowEntries (line 13676) | function getClaudePermissionAllowEntries(directory) {
  function hasGenericToolPermission (line 13692) | function hasGenericToolPermission(allowEntries, toolName) {
  function hasClaudePermissionApproval (line 13695) | function hasClaudePermissionApproval(directory, toolName, command) {
  function getClaudePermissionAskEntries (line 13709) | function getClaudePermissionAskEntries(directory) {
  function commandMatchesPermissionPattern (line 13725) | function commandMatchesPermissionPattern(command, pattern) {
  function hasClaudePermissionAsk (line 13743) | function hasClaudePermissionAsk(directory, toolName, command) {
  function getBackgroundTaskPermissionFallback (line 13762) | function getBackgroundTaskPermissionFallback(directory, subagentType) {
  function getBackgroundBashPermissionFallback (line 13775) | function getBackgroundBashPermissionFallback(directory, command) {
  function isSafeCommand (line 13787) | function isSafeCommand(command) {
  function isHeredocWithSafeBase (line 13794) | function isHeredocWithSafeBase(command) {
  function isActiveModeRunning (line 13805) | function isActiveModeRunning(directory) {
  function processPermissionRequest (line 13833) | function processPermissionRequest(input) {
  function handlePermissionRequest (line 13869) | async function handlePermissionRequest(input) {
  method "src/hooks/permission-handler/index.ts" (line 13874) | "src/hooks/permission-handler/index.ts"() {
  function getPackageDir4 (line 13914) | function getPackageDir4() {
  function getValidAgentRoles (line 13933) | function getValidAgentRoles() {
  function wrapUntrustedFileContent (line 13952) | function wrapUntrustedFileContent(filepath, content) {
  function sanitizePromptContent (line 13959) | function sanitizePromptContent(content, maxLength = 4e3) {
  method "src/agents/prompt-helpers.ts" (line 13977) | "src/agents/prompt-helpers.ts"() {
  method "src/hooks/autopilot/types.ts" (line 13991) | "src/hooks/autopilot/types.ts"() {
  function readUltraQAState (line 14011) | function readUltraQAState(directory, sessionId) {
  function writeUltraQAState (line 14014) | function writeUltraQAState(directory, state, sessionId) {
  function clearUltraQAState (line 14017) | function clearUltraQAState(directory, sessionId) {
  function isRalphLoopActive (line 14020) | function isRalphLoopActive(directory, sessionId) {
  function startUltraQA (line 14024) | function startUltraQA(directory, goalType, sessionId, options) {
  method "src/hooks/ultraqa/index.ts" (line 14047) | "src/hooks/ultraqa/index.ts"() {
  function ensureAutopilotDir (line 14056) | function ensureAutopilotDir(directory) {
  function readAutopilotState (line 14061) | function readAutopilotState(directory, sessionId) {
  function writeAutopilotState (line 14072) | function writeAutopilotState(directory, state, sessionId) {
  function clearAutopilotState (line 14080) | function clearAutopilotState(directory, sessionId) {
  function getAutopilotStateAge (line 14083) | function getAutopilotStateAge(directory, sessionId) {
  function isAutopilotActive (line 14095) | function isAutopilotActive(directory, sessionId) {
  function initAutopilot (line 14099) | function initAutopilot(directory, idea, sessionId, config2) {
  function transitionPhase (line 14157) | function transitionPhase(directory, newPhase, sessionId) {
  function incrementAgentCount (line 14178) | function incrementAgentCount(directory, count = 1, sessionId) {
  function updateExpansion (line 14184) | function updateExpansion(directory, updates, sessionId) {
  function updatePlanning (line 14190) | function updatePlanning(directory, updates, sessionId) {
  function updateExecution (line 14196) | function updateExecution(directory, updates, sessionId) {
  function updateQA (line 14202) | function updateQA(directory, updates, sessionId) {
  function updateValidation (line 14208) | function updateValidation(directory, updates, sessionId) {
  function getSpecPath (line 14214) | function getSpecPath(directory) {
  function getPlanPath (line 14217) | function getPlanPath(directory) {
  function transitionRalphToUltraQA (line 14224) | function transitionRalphToUltraQA(directory, sessionId) {
  function transitionUltraQAToValidation (line 14284) | function transitionUltraQAToValidation(directory, sessionId) {
  function transitionToComplete (line 14320) | function transitionToComplete(directory, sessionId) {
  function transitionToFailed (line 14330) | function transitionToFailed(directory, error2, sessionId) {
  function getTransitionPrompt (line 14340) | function getTransitionPrompt(fromPhase, toPhase) {
  method "src/hooks/autopilot/state.ts" (line 14416) | "src/hooks/autopilot/state.ts"() {
  function resolvePromptPlanPath (line 14433) | function resolvePromptPlanPath(planPathOrConfig) {
  function resolvePromptOpenQuestionsPath (line 14436) | function resolvePromptOpenQuestionsPath(openQuestionsPathOrConfig) {
  function getExpansionPrompt (line 14439) | function getExpansionPrompt(idea, openQuestionsPathOrConfig) {
  function getDirectPlanningPrompt (line 14511) | function getDirectPlanningPrompt(specPath, planPathOrConfig) {
  function getExecutionPrompt (line 14590) | function getExecutionPrompt(planPath) {
  function getQAPrompt (line 14632) | function getQAPrompt() {
  function getValidationPrompt (line 14691) | function getValidationPrompt(specPath) {
  function escapeForPrompt (line 14768) | function escapeForPrompt(text) {
  function getPhasePrompt (line 14771) | function getPhasePrompt(phase, context) {
  method "src/hooks/autopilot/prompts.ts" (line 14794) | "src/hooks/autopilot/prompts.ts"() {
  function recordValidationVerdict (line 14801) | function recordValidationVerdict(directory, type, verdict, issues, sessi...
  function getValidationStatus (line 14827) | function getValidationStatus(directory, sessionId) {
  function startValidationRound (line 14846) | function startValidationRound(directory, sessionId) {
  function shouldRetryValidation (line 14857) | function shouldRetryValidation(directory, maxRounds = 3, sessionId) {
  function getIssuesToFix (line 14868) | function getIssuesToFix(directory, sessionId) {
  function getValidationSpawnPrompt (line 14881) | function getValidationSpawnPrompt(specPath) {
  function formatValidationResults (line 14942) | function formatValidationResults(state, _sessionId) {
  function generateSummary (line 14965) | function generateSummary(directory, sessionId) {
  function formatDuration (line 14998) | function formatDuration(ms) {
  function formatSummary (line 15012) | function formatSummary(summary) {
  function formatCompactSummary (line 15036) | function formatCompactSummary(state) {
  function formatFailureSummary (line 15049) | function formatFailureSummary(state, error2) {
  function formatFileList (line 15071) | function formatFileList(files, title, maxFiles = 10) {
  method "src/hooks/autopilot/validation.ts" (line 15088) | "src/hooks/autopilot/validation.ts"() {
  function cancelAutopilot (line 15096) | function cancelAutopilot(directory, sessionId) {
  function clearAutopilot (line 15146) | function clearAutopilot(directory, sessionId) {
  function canResumeAutopilot (line 15183) | function canResumeAutopilot(directory, sessionId) {
  function resumeAutopilot (line 15205) | function resumeAutopilot(directory, sessionId) {
  function formatCancelMessage (line 15227) | function formatCancelMessage(result) {
  method "src/hooks/autopilot/cancel.ts" (line 15252) | "src/hooks/autopilot/cancel.ts"() {
  method "src/hooks/autopilot/pipeline-types.ts" (line 15264) | "src/hooks/autopilot/pipeline-types.ts"() {
  method "src/hooks/autopilot/adapters/ralplan-adapter.ts" (line 15297) | "src/hooks/autopilot/adapters/ralplan-adapter.ts"() {
  method "src/hooks/autopilot/adapters/execution-adapter.ts" (line 15375) | "src/hooks/autopilot/adapters/execution-adapter.ts"() {
  method "src/hooks/autopilot/adapters/ralph-adapter.ts" (line 15483) | "src/hooks/autopilot/adapters/ralph-adapter.ts"() {
  method "src/hooks/autopilot/adapters/qa-adapter.ts" (line 15579) | "src/hooks/autopilot/adapters/qa-adapter.ts"() {
  function getAdapterById (line 15609) | function getAdapterById(id) {
  method "src/hooks/autopilot/adapters/index.ts" (line 15614) | "src/hooks/autopilot/adapters/index.ts"() {
  function resolvePipelineConfig (line 15634) | function resolvePipelineConfig(userConfig, deprecatedMode) {
  function getDeprecationWarning (line 15651) | function getDeprecationWarning(mode) {
  function buildPipelineTracking (line 15657) | function buildPipelineTracking(config2) {
  function getActiveAdapters (line 15675) | function getActiveAdapters(config2) {
  function readPipelineTracking (line 15678) | function readPipelineTracking(state) {
  function writePipelineTracking (line 15682) | function writePipelineTracking(directory, tracking, sessionId) {
  function initPipeline (line 15688) | function initPipeline(directory, idea, sessionId, autopilotConfig, pipel...
  function getCurrentStageAdapter (line 15701) | function getCurrentStageAdapter(tracking) {
  function getNextStageAdapter (line 15712) | function getNextStageAdapter(tracking) {
  function advanceStage (line 15721) | function advanceStage(directory, sessionId) {
  function failCurrentStage (line 15760) | function failCurrentStage(directory, error2, sessionId) {
  function incrementStageIteration (line 15772) | function incrementStageIteration(directory, sessionId) {
  function getCurrentCompletionSignal (line 15783) | function getCurrentCompletionSignal(tracking) {
  function getSignalToStageMap (line 15789) | function getSignalToStageMap() {
  function generatePipelinePrompt (line 15796) | function generatePipelinePrompt(directory, sessionId) {
  function generateTransitionPrompt (line 15806) | function generateTransitionPrompt(fromStage, toStage) {
  function getPipelineStatus (line 15823) | function getPipelineStatus(tracking) {
  function formatPipelineHUD (line 15858) | function formatPipelineHUD(tracking) {
  function buildContext (line 15884) | function buildContext(state, tracking) {
  function hasPipelineTracking (line 15895) | function hasPipelineTracking(state) {
  method "src/hooks/autopilot/pipeline.ts" (line 15899) | "src/hooks/autopilot/pipeline.ts"() {
  function detectSignal (line 15909) | function detectSignal(sessionId, signal) {
  function getExpectedSignalForPhase (line 15932) | function getExpectedSignalForPhase(phase) {
  function detectAnySignal (line 15948) | function detectAnySignal(sessionId) {
  function isAwaitingConfirmation (line 15956) | function isAwaitingConfirmation(state) {
  function getNextPhase (line 15961) | function getNextPhase(current) {
  function checkAutopilot (line 15977) | async function checkAutopilot(sessionId, directory) {
  function generateContinuationPrompt (line 16046) | function generateContinuationPrompt(state, directory, sessionId) {
  function checkPipelineAutopilot (line 16090) | function checkPipelineAutopilot(state, sessionId, directory) {
  function detectPipelineSignal (line 16208) | function detectPipelineSignal(sessionId, signal) {
  method "src/hooks/autopilot/enforcement.ts" (line 16232) | "src/hooks/autopilot/enforcement.ts"() {
  method "src/hooks/autopilot/index.ts" (line 16342) | "src/hooks/autopilot/index.ts"() {
  function isSessionCancelInProgress (line 16369) | function isSessionCancelInProgress(directory, sessionId) {
  function readLastToolError (line 16396) | function readLastToolError(directory) {
  function clearToolErrorState (line 16421) | function clearToolErrorState(directory) {
  function getToolErrorRetryGuidance (line 16431) | function getToolErrorRetryGuidance(toolError) {
  function resetTodoContinuationAttempts (line 16465) | function resetTodoContinuationAttempts(sessionId) {
  function getIdleNotificationCooldownSeconds (line 16468) | function getIdleNotificationCooldownSeconds() {
  function getIdleNotificationCooldownPath (line 16483) | function getIdleNotificationCooldownPath(stateDir, sessionId) {
  function shouldSendIdleNotification (line 16489) | function shouldSendIdleNotification(stateDir, sessionId) {
  function recordIdleNotificationSent (line 16504) | function recordIdleNotificationSent(stateDir, sessionId) {
  function readTranscriptTail (line 16511) | function readTranscriptTail(transcriptPath) {
  function estimateTranscriptContextPercent (line 16526) | function estimateTranscriptContextPercent(transcriptPath) {
  function isCriticalContextStop (line 16549) | function isCriticalContextStop(stopContext) {
  function isAwaitingConfirmation2 (line 16556) | function isAwaitingConfirmation2(state) {
  function checkArchitectApprovalInTranscript (line 16561) | function checkArchitectApprovalInTranscript(sessionId) {
  function checkArchitectRejectionInTranscript (line 16582) | function checkArchitectRejectionInTranscript(sessionId) {
  function checkRalphLoop (line 16604) | async function checkRalphLoop(sessionId, directory, cancelInProgress) {
  function readStopBreaker (line 16781) | function readStopBreaker(directory, name, sessionId, ttlMs) {
  function writeStopBreaker (line 16799) | function writeStopBreaker(directory, name, count, sessionId) {
  function checkTeamPipeline (line 16809) | async function checkTeamPipeline(sessionId, directory, cancelInProgress) {
  function checkRalplan (line 16898) | async function checkRalplan(sessionId, directory, cancelInProgress) {
  function checkUltrawork (line 16964) | async function checkUltrawork(sessionId, directory, _hasIncompleteTodos,...
  function checkPersistentModes (line 16997) | async function checkPersistentModes(sessionId, directory, stopContext) {
  function createHookOutput (line 17100) | function createHookOutput(result) {
  method "src/hooks/persistent-mode/index.ts" (line 17108) | "src/hooks/persistent-mode/index.ts"() {
  function getHookConfig (line 17137) | function getHookConfig() {
  function resetHookConfigCache (line 17157) | function resetHookConfigCache() {
  function resolveEventTemplate (line 17160) | function resolveEventTemplate(hookConfig, event, platform) {
  function mergeHookConfigIntoNotificationConfig (line 17170) | function mergeHookConfigIntoNotificationConfig(hookConfig, notifConfig) {
  method "src/notifications/hook-config.ts" (line 17188) | "src/notifications/hook-config.ts"() {
  function validateCustomIntegration (line 17198) | function validateCustomIntegration(integration) {
  function validateWebhookIntegrationConfig (line 17220) | function validateWebhookIntegrationConfig(config2) {
  function validateCliIntegrationConfig (line 17262) | function validateCliIntegrationConfig(config2) {
  function checkDuplicateIds (line 17294) | function checkDuplicateIds(integrations) {
  function sanitizeArgument (line 17305) | function sanitizeArgument(arg) {
  method "src/notifications/validation.ts" (line 17312) | "src/notifications/validation.ts"() {
  function readRawConfig (line 17345) | function readRawConfig() {
  function migrateStopHookCallbacks (line 17353) | function migrateStopHookCallbacks(raw) {
  function normalizeOptional (line 17381) | function normalizeOptional(value) {
  function validateMention (line 17385) | function validateMention(raw) {
  function validateSlackChannel (line 17393) | function validateSlackChannel(raw) {
  function validateSlackUsername (line 17400) | function validateSlackUsername(raw) {
  function validateSlackMention (line 17407) | function validateSlackMention(raw) {
  function parseMentionAllowedMentions (line 17415) | function parseMentionAllowedMentions(mention) {
  function buildConfigFromEnv (line 17423) | function buildConfigFromEnv() {
  function mergeEnvIntoFileConfig (line 17482) | function mergeEnvIntoFileConfig(fileConfig, envConfig) {
  function applyHookAndEnvMerge (line 17548) | function applyHookAndEnvMerge(config2) {
  function applyEnvMerge (line 17556) | function applyEnvMerge(config2) {
  function getVerbosity (line 17579) | function getVerbosity(config2) {
  function getTmuxTailLines (line 17589) | function getTmuxTailLines(config2) {
  function isEventAllowedByVerbosity (line 17600) | function isEventAllowedByVerbosity(verbosity, event) {
  function shouldIncludeTmuxTail (line 17613) | function shouldIncludeTmuxTail(verbosity) {
  function getNotificationConfig (line 17616) | function getNotificationConfig(profileName) {
  function isPlatformActivated (line 17648) | function isPlatformActivated(platform) {
  function isEventEnabled (line 17657) | function isEventEnabled(config2, event) {
  function getEnabledPlatforms (line 17669) | function getEnabledPlatforms(config2, event) {
  function getEnabledReplyPlatformConfig (line 17696) | function getEnabledReplyPlatformConfig(config2, platform) {
  function getReplyListenerPlatformConfig (line 17710) | function getReplyListenerPlatformConfig(config2) {
  function parseDiscordUserIds (line 17735) | function parseDiscordUserIds(envValue, configValue) {
  function parseIntSafe (line 17746) | function parseIntSafe(value) {
  function getReplyConfig (line 17751) | function getReplyConfig() {
  function detectLegacyOpenClawConfig (line 17789) | function detectLegacyOpenClawConfig() {
  function migrateLegacyOpenClawConfig (line 17792) | function migrateLegacyOpenClawConfig() {
  function getCustomIntegrationsConfig (line 17838) | function getCustomIntegrationsConfig() {
  function getCustomIntegrationsForEvent (line 17865) | function getCustomIntegrationsForEvent(event) {
  function hasCustomIntegrationsEnabled (line 17872) | function hasCustomIntegrationsEnabled(event) {
  method "src/notifications/config.ts" (line 17882) | "src/notifications/config.ts"() {
  function formatDuration2 (line 17915) | function formatDuration2(ms) {
  function projectDisplay (line 17928) | function projectDisplay(payload) {
  function buildFooter (line 17933) | function buildFooter(payload, markdown) {
  function formatSessionStart (line 17945) | function formatSessionStart(payload) {
  function formatSessionStop (line 17960) | function formatSessionStop(payload) {
  function formatSessionEnd (line 17975) | function formatSessionEnd(payload) {
  function formatSessionIdle (line 18000) | function formatSessionIdle(payload) {
  function parseTmuxTail (line 18015) | function parseTmuxTail(raw, maxLines = DEFAULT_MAX_TAIL_LINES) {
  function appendTmuxTail (line 18033) | function appendTmuxTail(lines, payload) {
  function formatAgentCall (line 18045) | function formatAgentCall(payload) {
  function formatAskUserQuestion (line 18057) | function formatAskUserQuestion(payload) {
  function formatNotification (line 18068) | function formatNotification(payload) {
  method "src/notifications/formatter.ts" (line 18088) | "src/notifications/formatter.ts"() {
  function formatDuration3 (line 18104) | function formatDuration3(ms) {
  function getProjectDisplay (line 18117) | function getProjectDisplay(payload) {
  function buildFooterText (line 18122) | function buildFooterText(payload) {
  function buildTmuxTailBlock (line 18130) | function buildTmuxTailBlock(payload) {
  function computeTemplateVariables (line 18141) | function computeTemplateVariables(payload) {
  function processConditionals (line 18179) | function processConditionals(template, vars) {
  function replaceVariables (line 18188) | function replaceVariables(template, vars) {
  function postProcess (line 18194) | function postProcess(text) {
  function interpolateTemplate (line 18197) | function interpolateTemplate(template, payload) {
  function validateTemplate (line 18204) | function validateTemplate(template) {
  function getDefaultTemplate (line 18218) | function getDefaultTemplate(event) {
  method "src/notifications/template-engine.ts" (line 18223) | "src/notifications/template-engine.ts"() {
  function composeDiscordContent (line 18277) | function composeDiscordContent(message, mention) {
  function validateDiscordUrl (line 18297) | function validateDiscordUrl(webhookUrl) {
  function validateTelegramToken (line 18311) | function validateTelegramToken(token) {
  function validateSlackUrl (line 18314) | function validateSlackUrl(webhookUrl) {
  function validateWebhookUrl (line 18322) | function validateWebhookUrl(url) {
  function sendDiscord (line 18330) | async function sendDiscord(config2, payload) {
  function sendDiscordBot (line 18372) | async function sendDiscordBot(config2, payload) {
  function sendTelegram (line 18422) | async function sendTelegram(config2, payload) {
  function composeSlackText (line 18500) | function composeSlackText(message, mention) {
  function sendSlack (line 18508) | async function sendSlack(config2, payload) {
  function sendSlackBot (line 18548) | async function sendSlackBot(config2, payload) {
  function sendWebhook (line 18596) | async function sendWebhook(config2, payload) {
  function getEffectivePlatformConfig (line 18650) | function getEffectivePlatformConfig(platform, config2, event) {
  function dispatchNotifications (line 18662) | async function dispatchNotifications(config2, event, payload, platformMe...
  function sendCustomWebhook (line 18762) | async function sendCustomWebhook(integration, payload) {
  function sendCustomCli (line 18799) | async function sendCustomCli(integration, payload) {
  function dispatchCustomIntegrations (line 18820) | async function dispatchCustomIntegrations(event, payload) {
  method "src/notifications/dispatcher.ts" (line 18843) | "src/notifications/dispatcher.ts"() {
  function getCurrentTmuxSession (line 18866) | function getCurrentTmuxSession() {
  function getTeamTmuxSessions (line 18891) | function getTeamTmuxSessions(teamName) {
  function formatTmuxInfo (line 18906) | function formatTmuxInfo() {
  function getCurrentTmuxPaneId (line 18911) | function getCurrentTmuxPaneId() {
  method "src/notifications/tmux.ts" (line 18928) | "src/notifications/tmux.ts"() {
  function redactTokens (line 18935) | function redactTokens(input) {
  method "src/notifications/redact.ts" (line 18939) | "src/notifications/redact.ts"() {
  function verifySlackSignature (line 18957) | function verifySlackSignature(signingSecret, signature, timestamp, body) {
  function isTimestampValid (line 18975) | function isTimestampValid(timestamp, maxAgeSeconds = MAX_TIMESTAMP_AGE_S...
  function validateSlackEnvelope (line 18983) | function validateSlackEnvelope(data) {
  function validateSlackMessage (line 19010) | function validateSlackMessage(rawMessage, connectionState, signingSecret...
  function postSlackBotMessage (line 19039) | async function postSlackBotMessage(botToken, channel, text) {
  function addSlackReaction (line 19051) | async function addSlackReaction(botToken, channel, timestamp, emoji2 = "...
  function replySlackThread (line 19062) | async function replySlackThread(botToken, channel, threadTs, text) {
  method "src/notifications/slack-socket.ts" (line 19075) | "src/notifications/slack-socket.ts"() {
  function getPresetList (line 19406) | function getPresetList() {
  function getPreset (line 19414) | function getPreset(id) {
  function isValidPreset (line 19417) | function isValidPreset(id) {
  method "src/notifications/presets.ts" (line 19422) | "src/notifications/presets.ts"() {
  function getVariablesForEvent (line 19518) | function getVariablesForEvent(event) {
  function getVariableDocumentation (line 19523) | function getVariableDocumentation() {
  method "src/notifications/template-variables.ts" (line 19537) | "src/notifications/template-variables.ts"() {
  function isValidPaneId (line 19658) | function isValidPaneId(paneId) {
  function sanitizeForTmux (line 19661) | function sanitizeForTmux(text) {
  function isTmuxAvailable (line 19664) | function isTmuxAvailable() {
  function isInsideTmux (line 19676) | function isInsideTmux() {
  function listTmuxPanes (line 19679) | function listTmuxPanes() {
  function capturePaneContent (line 19713) | function capturePaneContent(paneId, lines = 15) {
  function analyzePaneContent (line 19733) | function analyzePaneContent(content) {
  function scanForBlockedPanes (line 19774) | function scanForBlockedPanes(lines = 15) {
  function sendResumeSequence (line 19791) | function sendResumeSequence(paneId) {
  function sendToPane (line 19809) | function sendToPane(paneId, text, pressEnter = true) {
  function formatBlockedPanesSummary (line 19833) | function formatBlockedPanesSummary(blockedPanes) {
  method "src/features/rate-limit-wait/tmux-detector.ts" (line 19852) | "src/features/rate-limit-wait/tmux-detector.ts"() {
  function getRegistryStateDir (line 19903) | function getRegistryStateDir() {
  function getRegistryPath (line 19906) | function getRegistryPath() {
  function getRegistryReadPaths (line 19909) | function getRegistryReadPaths() {
  function getLockPath (line 19915) | function getLockPath() {
  function ensureRegistryDir (line 19918) | function ensureRegistryDir() {
  function sleepMs (line 19924) | function sleepMs(ms) {
  function readLockSnapshot (line 19927) | function readLockSnapshot() {
  function removeLockIfUnchanged (line 19952) | function removeLockIfUnchanged(snapshot) {
  function acquireRegistryLock (line 19968) | function acquireRegistryLock() {
  function acquireRegistryLockOrWait (line 20014) | function acquireRegistryLockOrWait(maxWaitMs = LOCK_MAX_WAIT_MS) {
  function releaseRegistryLock (line 20025) | function releaseRegistryLock(lock) {
  function withRegistryLockOrWait (line 20036) | function withRegistryLockOrWait(onLocked) {
  function withRegistryLock (line 20047) | function withRegistryLock(onLocked, onLockUnavailable) {
  function registerMessage (line 20058) | function registerMessage(mapping) {
  function loadAllMappings (line 20077) | function loadAllMappings() {
  function readAllMappingsUnsafe (line 20080) | function readAllMappingsUnsafe() {
  function lookupByMessageId (line 20100) | function lookupByMessageId(platform, messageId) {
  function removeSession (line 20104) | function removeSession(sessionId) {
  function removeMessagesByPane (line 20118) | function removeMessagesByPane(paneId) {
  function pruneStale (line 20132) | function pruneStale() {
  function rewriteRegistryUnsafe (line 20154) | function rewriteRegistryUnsafe(mappings) {
  method "src/notifications/session-registry.ts" (line 20165) | "src/notifications/session-registry.ts"() {
  function notify (line 20244) | async function notify(event, data) {
  method "src/notifications/index.ts" (line 20363) | "src/notifications/index.ts"() {
  function shouldSkipEntry (line 20389) | function shouldSkipEntry(name, isDir, ignorePatterns) {
  function buildTree (line 20410) | function buildTree(dir, depth, maxDepth, fileCount, maxFiles, ignorePatt...
  function renderTree (line 20452) | function renderTree(nodes, prefix, lines) {
  function extractPackageMetadata (line 20464) | function extractPackageMetadata(directory) {
  function generateCodebaseMap (line 20481) | function generateCodebaseMap(directory, options = {}) {
  method "src/hooks/codebase-map.ts" (line 20514) | "src/hooks/codebase-map.ts"() {
  function buildAgentsOverlay (line 20614) | function buildAgentsOverlay(directory, options) {
  method "src/hooks/agents-overlay.ts" (line 20647) | "src/hooks/agents-overlay.ts"() {
  function resolveDaemonModulePath (line 20655) | function resolveDaemonModulePath(currentFilename, distSegments) {
  method "src/utils/daemon-module-path.ts" (line 20671) | "src/utils/daemon-module-path.ts"() {
  function createMinimalDaemonEnv (line 20691) | function createMinimalDaemonEnv() {
  function ensureStateDir2 (line 20705) | function ensureStateDir2() {
  function writeSecureFile (line 20710) | function writeSecureFile(filePath, content) {
  function rotateLogIfNeeded (line 20718) | function rotateLogIfNeeded(logPath) {
  function log (line 20732) | function log(message) {
  function readDaemonState (line 20743) | function readDaemonState() {
  function writeDaemonState (line 20755) | function writeDaemonState(state) {
  function buildDaemonConfig (line 20758) | async function buildDaemonConfig() {
  function readPidFile (line 20770) | function readPidFile() {
  function writePidFile (line 20781) | function writePidFile(pid) {
  function removePidFile (line 20784) | function removePidFile() {
  function isDaemonRunning (line 20789) | function isDaemonRunning() {
  function sanitizeReplyInput (line 20800) | function sanitizeReplyInput(text) {
  function injectReply (line 20803) | function injectReply(paneId, text, platform, config2) {
  function pollDiscord (line 20821) | async function pollDiscord(config2, state, rateLimiter) {
  function pollTelegram (line 20928) | async function pollTelegram(config2, state, rateLimiter) {
  function pollLoop (line 21055) | async function pollLoop() {
  function startReplyListener (line 21183) | function startReplyListener(_config) {
  function stopReplyListener (line 21246) | function stopReplyListener() {
  function getReplyListenerStatus (line 21284) | function getReplyListenerStatus() {
  function processSlackSocketMessage (line 21306) | function processSlackSocketMessage(rawMessage, connectionState, paneId, ...
  method "src/notifications/reply-listener.ts" (line 21365) | "src/notifications/reply-listener.ts"() {
  function getOpenClawConfig (line 21446) | function getOpenClawConfig() {
  function resolveGateway (line 21470) | function resolveGateway(config2, event) {
  function resetOpenClawConfigCache (line 21486) | function resetOpenClawConfigCache() {
  method "src/openclaw/config.ts" (line 21491) | "src/openclaw/config.ts"() {
  function validateGatewayUrl (line 21502) | function validateGatewayUrl(url) {
  function interpolateInstruction (line 21514) | function interpolateInstruction(template, variables) {
  function isCommandGateway (line 21519) | function isCommandGateway(config2) {
  function shellEscapeArg (line 21522) | function shellEscapeArg(value) {
  function wakeGateway (line 21525) | async function wakeGateway(gatewayName, gatewayConfig, payload) {
  function wakeCommandGateway (line 21562) | async function wakeCommandGateway(gatewayName, gatewayConfig, variables,...
  method "src/openclaw/dispatcher.ts" (line 21598) | "src/openclaw/dispatcher.ts"() {
  function stripClaudeTempCwdErrors (line 21605) | function stripClaudeTempCwdErrors(output) {
  function isNonZeroExitWithOutput (line 21608) | function isNonZeroExitWithOutput(output) {
  function detectBashFailure (line 21628) | function detectBashFailure(output) {
  function detectWriteFailure (line 21645) | function detectWriteFailure(output) {
  function getCommand (line 21659) | function getCommand(toolInput) {
  function detectTestRunner (line 21664) | function detectTestRunner(command) {
  function summarize (line 21668) | function summarize(value, maxLength = 160) {
  function getToolPhase (line 21675) | function getToolPhase(toolName, toolOutput) {
  function buildToolSignal (line 21688) | function buildToolSignal(event, context) {
  function buildOpenClawSignal (line 21734) | function buildOpenClawSignal(event, context) {
  method "src/openclaw/signal.ts" (line 21794) | "src/openclaw/signal.ts"() {
  function buildWhitelistedContext (line 21826) | function buildWhitelistedContext(context) {
  function wakeOpenClaw (line 21842) | async function wakeOpenClaw(event, context) {
  method "src/openclaw/index.ts" (line 21935) | "src/openclaw/index.ts"() {
  function formatSessionSummary (line 21950) | function formatSessionSummary(metrics, format = "markdown") {
  function normalizeDiscordTagList (line 21967) | function normalizeDiscordTagList(tagList) {
  function normalizeTelegramTagList (line 21985) | function normalizeTelegramTagList(tagList) {
  function prefixMessageWithTags (line 21991) | function prefixMessageWithTags(message, tags) {
  function interpolatePath (line 21998) | function interpolatePath(pathTemplate, sessionId) {
  function writeToFile (line 22005) | async function writeToFile(config2, content, sessionId) {
  function sendTelegram2 (line 22016) | async function sendTelegram2(config2, message) {
  function sendDiscord2 (line 22045) | async function sendDiscord2(config2, message) {
  function triggerStopCallbacks (line 22082) | async function triggerStopCallbacks(metrics, _input, options = {}) {
  method "src/hooks/session-end/callbacks.ts" (line 22121) | "src/hooks/session-end/callbacks.ts"() {
  function normalizeTaskFileStem (line 22131) | function normalizeTaskFileStem(taskId) {
  function absPath (line 22137) | function absPath(cwd2, relativePath) {
  function teamStateRoot (line 22140) | function teamStateRoot(cwd2, teamName) {
  function getTaskStoragePath (line 22143) | function getTaskStoragePath(cwd2, teamName, taskId) {
  method "src/team/state-paths.ts" (line 22151) | "src/team/state-paths.ts"() {
  function normalizeTeamTransportPolicy (line 22201) | function normalizeTeamTransportPolicy(policy) {
  function normalizeTeamGovernance (line 22209) | function normalizeTeamGovernance(governance, legacyPolicy) {
  function normalizeTeamManifest (line 22218) | function normalizeTeamManifest(manifest) {
  function getConfigGovernance (line 22225) | function getConfigGovernance(config2) {
  function resolveLifecycleProfile (line 22228) | function resolveLifecycleProfile(config2, manifest) {
  function isLinkedRalphProfile (line 22233) | function isLinkedRalphProfile(config2, manifest) {
  method "src/team/governance.ts" (line 22238) | "src/team/governance.ts"() {
  function isTerminalTeamTaskStatus (line 22257) | function isTerminalTeamTaskStatus(status) {
  function canTransitionTeamTaskStatus (line 22260) | function canTransitionTeamTaskStatus(from, to) {
  method "src/team/contracts.ts" (line 22265) | "src/team/contracts.ts"() {
  function computeTaskReadiness (line 22296) | async function computeTaskReadiness(teamName, taskId, cwd2, deps) {
  function claimTask (line 22306) | async function claimTask(taskId, workerName2, expectedVersion, deps) {
  function transitionTaskStatus (line 22344) | async function transitionTaskStatus(taskId, from, to, claimToken, deps) {
  function releaseTaskClaim (line 22396) | async function releaseTaskClaim(taskId, claimToken, _workerName, deps) {
  function listTasks (line 22420) | async function listTasks(teamName, cwd2, deps) {
  method "src/team/state/tasks.ts" (line 22453) | "src/team/state/tasks.ts"() {
  function teamDir2 (line 22495) | function teamDir2(teamName, cwd2) {
  function normalizeTaskId (line 22498) | function normalizeTaskId(taskId) {
  function canonicalTaskFilePath (line 22502) | function canonicalTaskFilePath(teamName, taskId, cwd2) {
  function legacyTaskFilePath (line 22506) | function legacyTaskFilePath(teamName, taskId, cwd2) {
  function taskFileCandidates (line 22510) | function taskFileCandidates(teamName, taskId, cwd2) {
  function writeAtomic (line 22515) | async function writeAtomic(path22, data) {
  function readJsonSafe2 (line 22522) | async function readJsonSafe2(path22) {
  function normalizeTask (line 22531) | function normalizeTask(task) {
  function isTeamTask (line 22534) | function isTeamTask(value) {
  function withLock (line 22539) | async function withLock(lockDir, fn) {
  function withTaskClaimLock (line 22573) | async function withTaskClaimLock(teamName, taskId, cwd2, fn) {
  function withMailboxLock (line 22577) | async function withMailboxLock(teamName, workerName2, cwd2, fn) {
  function configFromManifest (line 22590) | function configFromManifest(manifest) {
  function mergeTeamConfigSources (line 22614) | function mergeTeamConfigSources(config2, manifest) {
  function teamReadConfig (line 22627) | async function teamReadConfig(teamName, cwd2) {
  function teamReadManifest (line 22634) | async function teamReadManifest(teamName, cwd2) {
  function teamCleanup (line 22639) | async function teamCleanup(teamName, cwd2) {
  function teamWriteWorkerIdentity (line 22642) | async function teamWriteWorkerIdentity(teamName, workerName2, identity, ...
  function teamReadWorkerHeartbeat (line 22646) | async function teamReadWorkerHeartbeat(teamName, workerName2, cwd2) {
  function teamUpdateWorkerHeartbeat (line 22650) | async function teamUpdateWorkerHeartbeat(teamName, workerName2, heartbea...
  function teamReadWorkerStatus (line 22654) | async function teamReadWorkerStatus(teamName, workerName2, cwd2) {
  function teamWriteWorkerInbox (line 22660) | async function teamWriteWorkerInbox(teamName, workerName2, prompt, cwd2) {
  function teamCreateTask (line 22664) | async function teamCreateTask(teamName, task, cwd2) {
  function teamReadTask (line 22683) | async function teamReadTask(teamName, taskId, cwd2) {
  function teamListTasks (line 22691) | async function teamListTasks(teamName, cwd2) {
  function teamUpdateTask (line 22698) | async function teamUpdateTask(teamName, taskId, updates, cwd2) {
  function teamClaimTask (line 22712) | async function teamClaimTask(teamName, taskId, workerName2, expectedVers...
  function teamTransitionTaskStatus (line 22736) | async function teamTransitionTaskStatus(teamName, taskId, from, to, clai...
  function teamReleaseTaskClaim (line 22753) | async function teamReleaseTaskClaim(teamName, taskId, claimToken, worker...
  function normalizeLegacyMailboxMessage (line 22766) | function normalizeLegacyMailboxMessage(raw) {
  function readLegacyMailboxJsonl (line 22786) | async function readLegacyMailboxJsonl(teamName, workerName2, cwd2) {
  function readMailbox (line 22810) | async function readMailbox(teamName, workerName2, cwd2) {
  function writeMailbox (line 22818) | async function writeMailbox(teamName, workerName2, mailbox, cwd2) {
  function teamSendMessage (line 22822) | async function teamSendMessage(teamName, fromWorker, toWorker, body, cwd...
  function teamBroadcast (line 22842) | async function teamBroadcast(teamName, fromWorker, body, cwd2) {
  function teamListMailbox (line 22853) | async function teamListMailbox(teamName, workerName2, cwd2) {
  function teamMarkMessageDelivered (line 22857) | async function teamMarkMessageDelivered(teamName, workerName2, messageId...
  function teamMarkMessageNotified (line 22867) | async function teamMarkMessageNotified(teamName, workerName2, messageId,...
  function teamAppendEvent (line 22877) | async function teamAppendEvent(teamName, event, cwd2) {
  function teamReadTaskApproval (line 22890) | async function teamReadTaskApproval(teamName, taskId, cwd2) {
  function teamWriteTaskApproval (line 22894) | async function teamWriteTaskApproval(teamName, approval, cwd2) {
  function teamGetSummary (line 22904) | async function teamGetSummary(teamName, cwd2) {
  function teamWriteShutdownRequest (line 22956) | async function teamWriteShutdownRequest(teamName, workerName2, requested...
  function teamReadShutdownAck (line 22960) | async function teamReadShutdownAck(teamName, workerName2, cwd2, minUpdat...
  function teamReadMonitorSnapshot (line 22971) | async function teamReadMonitorSnapshot(teamName, cwd2) {
  function teamWriteMonitorSnapshot (line 22975) | async function teamWriteMonitorSnapshot(teamName, snapshot, cwd2) {
  method "src/team/team-ops.ts" (line 22981) | "src/team/team-ops.ts"() {
  function allocateTasksToWorkers (line 22997) | function allocateTasksToWorkers(tasks, workers) {
  function isUniformRolePool (line 23025) | function isUniformRolePool(workers) {
  function pickLeastLoaded (line 23030) | function pickLeastLoaded(workers, loadMap) {
  function pickBestWorker (line 23042) | function pickBestWorker(task, workers, loadMap) {
  method "src/team/allocation-policy.ts" (line 23053) | "src/team/allocation-policy.ts"() {
  function readJsonSafe3 (line 23059) | async function readJsonSafe3(filePath) {
  function writeAtomic2 (line 23068) | async function writeAtomic2(filePath, data) {
  function configFromManifest2 (line 23076) | function configFromManifest2(manifest) {
  function readTeamConfig (line 23100) | async function readTeamConfig(teamName, cwd2) {
  function readTeamManifest (line 23117) | async function readTeamManifest(teamName, cwd2) {
  function readWorkerStatus (line 23121) | async function readWorkerStatus(teamName, workerName2, cwd2) {
  function readWorkerHeartbeat (line 23125) | async function readWorkerHeartbeat(teamName, workerName2, cwd2) {
  function readMonitorSnapshot (line 23128) | async function readMonitorSnapshot(teamName, cwd2) {
  function writeMonitorSnapshot (line 23157) | async function writeMonitorSnapshot(teamName, snapshot, cwd2) {
  function writeShutdownRequest (line 23160) | async function writeShutdownRequest(teamName, workerName2, fromWorker, c...
  function readShutdownAck (line 23167) | async function readShutdownAck(teamName, workerName2, cwd2, requestedAft...
  function listTasksFromFiles (line 23179) | async function listTasksFromFiles(teamName, cwd2) {
  function writeWorkerInbox (line 23193) | async function writeWorkerInbox(teamName, workerName2, content, cwd2) {
  function saveTeamConfig (line 23196) | async function saveTeamConfig(config2, cwd2) {
  function cleanupTeamState (line 23222) | async function cleanupTeamState(teamName, cwd2) {
  method "src/team/monitor.ts" (line 23232) | "src/team/monitor.ts"() {
  function appendTeamEvent (line 23251) | async function appendTeamEvent(teamName, event, cwd2) {
  function readTeamEvents (line 23264) | async function readTeamEvents(teamName, cwd2) {
  function readTeamEventsByType (line 23274) | async function readTeamEventsByType(teamName, eventType, cwd2) {
  function emitMonitorDerivedEvents (line 23278) | async function emitMonitorDerivedEvents(teamName, tasks, workers, previo...
  method "src/team/events.ts" (line 23325) | "src/team/events.ts"() {
  function inferPhase (line 23337) | function inferPhase(tasks) {
  method "src/team/phase-controller.ts" (line 23373) | "src/team/phase-controller.ts"() {
  function validateTeamName (line 23379) | function validateTeamName(teamName) {
  method "src/team/team-name.ts" (line 23389) | "src/team/team-name.ts"() {
  method "src/features/delegation-routing/types.ts" (line 23397) | "src/features/delegation-routing/types.ts"() {
  function normalizeToCcAlias (line 23403) | function normalizeToCcAlias(model) {
  method "src/features/delegation-enforcer.ts" (line 23409) | "src/features/delegation-enforcer.ts"() {
  function getTrustedPrefixes (line 23424) | function getTrustedPrefixes() {
  function isTrustedPrefix (line 23440) | function isTrustedPrefix(resolvedPath) {
  function assertBinaryName (line 23444) | function assertBinaryName(binary) {
  function resolveCliBinaryPath (line 23449) | function resolveCliBinaryPath(binary) {
  function getContract (line 23479) | function getContract(agentType) {
  function validateBinaryRef (line 23486) | function validateBinaryRef(binary) {
  function resolveBinaryPath (line 23491) | function resolveBinaryPath(binary) {
  function isCliAvailable (line 23506) | function isCliAvailable(agentType) {
  function resolveValidatedBinaryPath (line 23524) | function resolveValidatedBinaryPath(agentType) {
  function buildLaunchArgs (line 23528) | function buildLaunchArgs(agentType, config2) {
  function buildWorkerArgv (line 23531) | function buildWorkerArgv(agentType, config2) {
  function getWorkerEnv (line 23541) | function getWorkerEnv(teamName, workerName2, agentType, env2 = process.e...
  function isPromptModeAgent (line 23556) | function isPromptModeAgent(agentType) {
  function resolveClaudeWorkerModel (line 23560) | function resolveClaudeWorkerModel(env2 = process.env) {
  function getPromptModeArgs (line 23578) | function getPromptModeArgs(agentType, instruction) {
  method "src/team/model-contract.ts" (line 23590) | "src/team/model-contract.ts"() {
  function detectTeamMultiplexerContext (line 23719) | function detectTeamMultiplexerContext(env2 = process.env) {
  function isUnixLikeOnWindows (line 23724) | function isUnixLikeOnWindows() {
  function tmuxAsync (line 23727) | async function tmuxAsync(args) {
  function getDefaultShell (line 23734) | function getDefaultShell() {
  function resolveShellFromCandidates (line 23745) | function resolveShellFromCandidates(paths, rcFile) {
  function resolveSupportedShellAffinity (line 23751) | function resolveSupportedShellAffinity(shellPath) {
  function buildWorkerLaunchSpec (line 23760) | function buildWorkerLaunchSpec(shellPath) {
  function escapeForCmdSet (line 23775) | function escapeForCmdSet(value) {
  function shellNameFromPath (line 23778) | function shellNameFromPath(shellPath) {
  function shellEscape (line 23782) | function shellEscape(value) {
  function assertSafeEnvKey (line 23785) | function assertSafeEnvKey(key) {
  function isAbsoluteLaunchBinaryPath (line 23790) | function isAbsoluteLaunchBinaryPath(value) {
  function assertSafeLaunchBinary (line 23793) | function assertSafeLaunchBinary(launchBinary) {
  function getLaunchWords (line 23807) | function getLaunchWords(config2) {
  function buildWorkerStartCommand (line 23819) | function buildWorkerStartCommand(config2) {
  function validateTmux (line 23874) | function validateTmux() {
  function sanitizeName (line 23883) | function sanitizeName(name) {
  function sessionName (line 23893) | function sessionName(teamName, workerName2) {
  function createSession (line 23896) | function createSession(teamName, workerName2, workingDirectory) {
  function killSession (line 23909) | function killSession(teamName, workerName2) {
  function isSessionAlive (line 23916) | function isSessionAlive(teamName, workerName2) {
  function listActiveSessions (line 23925) | function listActiveSessions(teamName) {
  function spawnBridgeInSession (line 23938) | function spawnBridgeInSession(tmuxSession, bridgeScriptPath, configFileP...
  function createTeamSession (line 23942) | async function createTeamSession(teamName, workerCount, cwd2, options = ...
  function spawnWorkerInPane (line 24099) | async function spawnWorkerInPane(sessionName2, paneId, config2) {
  function normalizeTmuxCapture (line 24114) | function normalizeTmuxCapture(value) {
  function capturePaneAsync (line 24117) | async function capturePaneAsync(paneId, execFileAsync5) {
  function paneHasTrustPrompt (line 24125) | function paneHasTrustPrompt(captured) {
  function paneIsBootstrapping (line 24132) | function paneIsBootstrapping(captured) {
  function paneHasActiveTask (line 24138) | function paneHasActiveTask(captured) {
  function paneLooksReady (line 24147) | function paneLooksReady(captured) {
  function waitForPaneReady (line 24159) | async function waitForPaneReady(paneId, opts = {}) {
  function paneTailContainsLiteralLine (line 24176) | function paneTailContainsLiteralLine(captured, text) {
  function paneInCopyMode (line 24179) | async function paneInCopyMode(paneId) {
  function shouldAttemptAdaptiveRetry (line 24187) | function shouldAttemptAdaptiveRetry(args) {
  function sendToWorker (line 24198) | async function sendToWorker(_sessionName, paneId, message) {
  function injectToLeaderPane (line 24283) | async function injectToLeaderPane(sessionName2, leaderPaneId, message) {
  function isWorkerAlive (line 24301) | async function isWorkerAlive(paneId) {
  function killWorkerPanes (line 24315) | async function killWorkerPanes(opts) {
  function isPaneId (line 24338) | function isPaneId(value) {
  function dedupeWorkerPaneIds (line 24341) | function dedupeWorkerPaneIds(paneIds, leaderPaneId) {
  function resolveSplitPaneWorkerPaneIds (line 24351) | async function resolveSplitPaneWorkerPaneIds(sessionName2, recordedPaneI...
  function killTeamSession (line 24364) | async function killTeamSession(sessionName2, workerPaneIds, leaderPaneId...
  method "src/team/tmux-session.ts" (line 24405) | "src/team/tmux-session.ts"() {
  function buildInstructionPath (line 24425) | function buildInstructionPath(...parts) {
  function generateTriggerMessage (line 24428) | function generateTriggerMessage(teamName, workerName2, teamStateRoot2 = ...
  function generateMailboxTriggerMessage (line 24435) | function generateMailboxTriggerMessage(teamName, workerName2, count = 1,...
  function agentTypeGuidance (line 24443) | function agentTypeGuidance(agentType) {
  function generateWorkerOverlay (line 24471) | function generateWorkerOverlay(params) {
  function composeInitialInbox (line 24588) | async function composeInitialInbox(teamName, workerName2, content, cwd2) {
  function ensureWorkerStateDir (line 24593) | async function ensureWorkerStateDir(teamName, workerName2, cwd2) {
  function writeWorkerOverlay (line 24601) | async function writeWorkerOverlay(params) {
  method "src/team/worker-bootstrap.ts" (line 24611) | "src/team/worker-bootstrap.ts"() {
  function atomicWriteJson2 (line 24622) | function atomicWriteJson2(filePath, data, mode = 384) {
  function ensureDirWithMode (line 24629) | function ensureDirWithMode(dirPath, mode = 448) {
  function safeRealpath (line 24632) | function safeRealpath(p) {
  function validateResolvedPath (line 24645) | function validateResolvedPath(resolvedPath, expectedBase) {
  method "src/team/fs-utils.ts" (line 24655) | "src/team/fs-utils.ts"() {
  function validateWorkerName (line 24663) | function validateWorkerName(name) {
  function isDispatchKind (line 24668) | function isDispatchKind(value) {
  function isDispatchStatus (line 24671) | function isDispatchStatus(value) {
  function resolveDispatchLockTimeoutMs (line 24674) | function resolveDispatchLockTimeoutMs(env2 = process.env) {
  function withDispatchLock (line 24681) | async function withDispatchLock(teamName, cwd2, fn) {
  function readDispatchRequestsFromFile (line 24734) | async function readDispatchRequestsFromFile(teamName, cwd2) {
  function writeDispatchRequestsToFile (line 24746) | async function writeDispatchRequestsToFile(teamName, requests, cwd2) {
  function normalizeDispatchRequest (line 24752) | function normalizeDispatchRequest(teamName, raw, nowIso2 = (/* @__PURE__...
  function equivalentPendingDispatch (line 24779) | function equivalentPendingDispatch(existing, input) {
  function canTransitionDispatchStatus (line 24791) | function canTransitionDispatchStatus(from, to) {
  function enqueueDispatchRequest (line 24797) | async function enqueueDispatchRequest(teamName, requestInput, cwd2) {
  function listDispatchRequests (line 24826) | async function listDispatchRequests(teamName, cwd2, opts = {}) {
  function readDispatchRequest (line 24835) | async function readDispatchRequest(teamName, requestId, cwd2) {
  function transitionDispatchRequest (line 24839) | async function transitionDispatchRequest(teamName, requestId, from, to, ...
  function markDispatchRequestNotified (line 24867) | async function markDispatchRequestNotified(teamName, requestId, patch = ...
  function markDispatchRequestDelivered (line 24873) | async function markDispatchRequestDelivered(teamName, requestId, patch =...
  method "src/team/dispatch-queue.ts" (line 24881) | "src/team/dispatch-queue.ts"() {
  function isConfirmedNotification (line 24901) | function isConfirmedNotification(outcome) {
  function isLeaderPaneMissingMailboxPersistedOutcome (line 24906) | function isLeaderPaneMissingMailboxPersistedOutcome(request, outcome) {
  function fallbackTransportForPreference (line 24909) | function fallbackTransportForPreference(preference) {
  function notifyExceptionReason (line 24914) | function notifyExceptionReason(error2) {
  function markImmediateDispatchFailure (line 24918) | async function markImmediateDispatchFailure(params) {
  function markLeaderPaneMissingDeferred (line 24939) | async function markLeaderPaneMissingDeferred(params) {
  function queueInboxInstruction (line 24959) | async function queueInboxInstruction(params) {
  function queueDirectMailboxMessage (line 25010) | async function queueDirectMailboxMessage(params) {
  function queueBroadcastMailboxMessage (line 25078) | async function queueBroadcastMailboxMessage(params) {
  method "src/team/mcp-comm.ts" (line 25147) | "src/team/mcp-comm.ts"() {
  function getWorktreePath (line 25155) | function getWorktreePath(repoRoot, teamName, workerName2) {
  function getBranchName (line 25158) | function getBranchName(teamName, workerName2) {
  function getMetadataPath (line 25161) | function getMetadataPath(repoRoot, teamName) {
  function readMetadata (line 25164) | function readMetadata(repoRoot, teamName) {
  function writeMetadata (line 25176) | function writeMetadata(repoRoot, teamName, entries) {
  function removeWorkerWorktree (line 25183) | function removeWorkerWorktree(teamName, workerName2, repoRoot) {
  function cleanupTeamWorktrees (line 25202) | function cleanupTeamWorktrees(teamName, repoRoot) {
  method "src/team/git-worktree.ts" (line 25213) | "src/team/git-worktree.ts"() {
  function isRuntimeV2Enabled (line 25237) | function isRuntimeV2Enabled(env2 = process.env) {
  function sanitizeTeamName (line 25243) | function sanitizeTeamName(name) {
  function isWorkerPaneAlive (line 25248) | async function isWorkerPaneAlive(paneId) {
  function captureWorkerPane (line 25257) | async function captureWorkerPane(paneId) {
  function isFreshTimestamp (line 25266) | function isFreshTimestamp(value, maxAgeMs = MONITOR_SIGNAL_STALE_MS) {
  function findOutstandingWorkerTask (line 25272) | function findOutstandingWorkerTask(worker, taskById, inProgressByOwner) {
  function buildV2TaskInstruction (line 25284) | function buildV2TaskInstruction(teamName, workerName2, task, taskId) {
  function notifyStartupInbox (line 25319) | async function notifyStartupInbox(sessionName2, paneId, message) {
  function notifyPaneWithRetry (line 25323) | async function notifyPaneWithRetry(sessionName2, paneId, message, maxAtt...
  function hasWorkerStatusProgress (line 25334) | function hasWorkerStatusProgress(status, taskId) {
  function hasWorkerTaskClaimEvidence (line 25338) | async function hasWorkerTaskClaimEvidence(teamName, workerName2, cwd2, t...
  function hasWorkerStartupEvidence (line 25347) | async function hasWorkerStartupEvidence(teamName, workerName2, taskId, c...
  function waitForWorkerStartupEvidence (line 25354) | async function waitForWorkerStartupEvidence(teamName, workerName2, taskI...
  function spawnV2Worker (line 25365) | async function spawnV2Worker(opts) {
  function startTeamV2 (line 25537) | async function startTeamV2(config2) {
  function writeWatchdogFailedMarker (line 25735) | async function writeWatchdogFailedMarker(teamName, cwd2, reason) {
  function requeueDeadWorkerTasks (line 25747) | async function requeueDeadWorkerTasks(teamName, deadWorkerNames, cwd2) {
  function monitorTeamV2 (line 25794) | async function monitorTeamV2(teamName, cwd2) {
  function shutdownTeamV2 (line 25932) | async function shutdownTeamV2(teamName, cwd2, options = {}) {
  function resumeTeamV2 (line 26086) | async function resumeTeamV2(teamName, cwd2) {
  function findActiveTeamsV2 (line 26108) | async function findActiveTeamsV2(cwd2) {
  method "src/team/runtime-v2.ts" (line 26125) | "src/team/runtime-v2.ts"() {
  function acquireTaskLock (line 26176) | function acquireTaskLock(teamName, taskId, opts) {
  function releaseTaskLock (line 26207) | function releaseTaskLock(handle) {
  function withTaskLock (line 26217) | async function withTaskLock(teamName, taskId, fn, opts) {
  function isLockStale2 (line 26226) | function isLockStale2(lockPath, staleLockMs) {
  function sanitizeTaskId (line 26242) | function sanitizeTaskId(taskId) {
  function canonicalTasksDir (line 26248) | function canonicalTasksDir(teamName, cwd2) {
  function failureSidecarPath (line 26254) | function failureSidecarPath(teamName, taskId, cwd2) {
  function writeTaskFailure (line 26257) | function writeTaskFailure(teamName, taskId, error2, opts) {
  function readTaskFailure (line 26269) | function readTaskFailure(teamName, taskId, opts) {
  method "src/team/task-file-ops.ts" (line 26281) | "src/team/task-file-ops.ts"() {
  function workerName (line 26308) | function workerName(index) {
  function stateRoot (line 26311) | function stateRoot(cwd2, teamName) {
  function writeJson (line 26315) | async function writeJson(filePath, data) {
  function readJsonSafe4 (line 26319) | async function readJsonSafe4(filePath) {
  function parseWorkerIndex (line 26345) | function parseWorkerIndex(workerNameValue) {
  function taskPath (line 26351) | function taskPath(root2, taskId) {
  function writePanesTrackingFileIfPresent (line 26354) | async function writePanesTrackingFileIfPresent(runtime) {
  function readTask (line 26372) | async function readTask(root2, taskId) {
  function writeTask (line 26375) | async function writeTask(root2, task) {
  function markTaskInProgress (line 26378) | async function markTaskInProgress(root2, taskId, owner, teamName, cwd2) {
  function resetTaskToPending (line 26390) | async function resetTaskToPending(root2, taskId, teamName, cwd2) {
  function markTaskFromDone (line 26400) | async function markTaskFromDone(root2, teamName, cwd2, taskId, status, s...
  function applyDeadPaneTransition (line 26415) | async function applyDeadPaneTransition(runtime, workerNameValue, taskId) {
  function nextPendingTaskIndex (line 26450) | async function nextPendingTaskIndex(runtime) {
  function notifyPaneWithRetry2 (line 26468) | async function notifyPaneWithRetry2(sessionName2, paneId, message, maxAt...
  function allTasksTerminal (line 26479) | async function allTasksTerminal(runtime) {
  function buildInitialTaskInstruction (line 26488) | function buildInitialTaskInstruction(teamName, workerName2, task, taskId) {
  function startTeam (line 26504) | async function startTeam(config2) {
  function monitorTeam (line 26572) | async function monitorTeam(teamName, cwd2, workerPaneIds) {
  function watchdogCliWorkers (line 26638) | function watchdogCliWorkers(runtime, intervalMs) {
  function spawnWorkerForTask (line 26749) | async function spawnWorkerForTask(runtime, workerNameValue, taskIndex) {
  function killWorkerPane (line 26854) | async function killWorkerPane(runtime, workerNameValue, paneId) {
  function assignTask (line 26872) | async function assignTask(teamName, taskId, targetWorkerName, paneId, se...
  function shutdownTeam (line 26917) | async function shutdownTeam(teamName, sessionName2, cwd2, timeoutMs = 3e...
  function resumeTeam (line 26955) | async function resumeTeam(teamName, cwd2) {
  method "src/team/runtime.ts" (line 27009) | "src/team/runtime.ts"() {
  function hasExplicitNotificationConfig (line 27036) | function hasExplicitNotificationConfig(profileName) {
  function getLegacyPlatformsCoveredByNotifications (line 27049) | function getLegacyPlatformsCoveredByNotifications(enabledPlatforms) {
  function getAgentCounts (line 27059) | function getAgentCounts(directory) {
  function getModesUsed (line 27074) | function getModesUsed(directory) {
  function getSessionStartTime2 (line 27088) | function getSessionStartTime2(directory, sessionId) {
  function recordSessionMetrics (line 27127) | function recordSessionMetrics(directory, input) {
  function cleanupTransientState (line 27151) | function cleanupTransientState(directory) {
  function extractPythonReplSessionIdsFromTranscript (line 27257) | async function extractPythonReplSessionIdsFromTranscript(transcriptPath) {
  function cleanupModeStates (line 27300) | function cleanupModeStates(directory, sessionId) {
  function cleanupMissionState (line 27351) | function cleanupMissionState(directory, sessionId) {
  function extractTeamNameFromState (line 27381) | function extractTeamNameFromState(state) {
  function findSessionOwnedTeams (line 27386) | async function findSessionOwnedTeams(directory, sessionId) {
  function cleanupSessionOwnedTeams (line 27415) | async function cleanupSessionOwnedTeams(directory, sessionId) {
  function exportSessionSummary (line 27459) | function exportSessionSummary(directory, metrics) {
  function processSessionEnd (line 27475) | async function processSessionEnd(input) {
  function handleSessionEnd (line 27539) | async function handleSessionEnd(input) {
  method "src/hooks/session-end/index.ts" (line 27544) | "src/hooks/session-end/index.ts"() {
  function getDb (line 27562) | function getDb(cwd2) {
  function getDbPath (line 27579) | function getDbPath(cwd2) {
  function ensureStateDir3 (line 27582) | function ensureStateDir3(cwd2) {
  function rowToJobStatus (line 27588) | function rowToJobStatus(row) {
  function initJobDb (line 27607) | async function initJobDb(cwd2) {
  function getActiveJobs (line 27687) | function getActiveJobs(provider, cwd2) {
  function getRecentJobs (line 27710) | function getRecentJobs(provider, withinMs = 60 * 60 * 1e3, cwd2) {
  function getJobStats (line 27734) | function getJobStats(cwd2) {
  method "src/lib/job-state-db.ts" (line 27760) | "src/lib/job-state-db.ts"() {
  function getCheckpointPath (line 27785) | function getCheckpointPath(directory) {
  function exportWisdomToNotepad (line 27792) | async function exportWisdomToNotepad(directory) {
  function saveModeSummary (line 27832) | async function saveModeSummary(directory) {
  function readTodoSummary (line 27883) | function readTodoSummary(directory) {
  function getActiveJobsSummary (line 27906) | async function getActiveJobsSummary(directory) {
  function createCompactCheckpoint (line 27938) | async function createCompactCheckpoint(directory, trigger) {
  function formatCompactSummary2 (line 27955) | function formatCompactSummary2(checkpoint) {
  function doProcessPreCompact (line 28036) | async function doProcessPreCompact(input) {
  function processPreCompact2 (line 28063) | async function processPreCompact2(input) {
  function isCompactionInProgress (line 28088) | function isCompactionInProgress(directory) {
  function getCompactionQueueDepth (line 28091) | function getCompactionQueueDepth(directory) {
  method "src/hooks/pre-compact/index.ts" (line 28096) | "src/hooks/pre-compact/index.ts"() {
  method "src/features/context-injector/injector.ts" (line 28112) | "src/features/context-injector/injector.ts"() {
  method "src/features/context-injector/index.ts" (line 28119) | "src/features/context-injector/index.ts"() {
  method "src/hooks/beads-context/constants.ts" (line 28129) | "src/hooks/beads-context/constants.ts"() {
  function getBeadsInstructions (line 28169) | function getBeadsInstructions(tool2) {
  function getBeadsContextConfig (line 28176) | function getBeadsContextConfig() {
  function registerBeadsContext (line 28184) | function registerBeadsContext(sessionId) {
  method "src/hooks/beads-context/index.ts" (line 28203) | "src/hooks/beads-context/index.ts"() {
  function ensureDirectoryStructure (line 28229) | function ensureDirectoryStructure(directory) {
  function validateConfigFiles (line 28243) | function validateConfigFiles(directory) {
  function setEnvironmentVariables (line 28257) | function setEnvironmentVariables() {
  function patchHooksJsonForWindows (line 28270) | function patchHooksJsonForWindows(pluginRoot) {
  function processSetupInit (line 28297) | async function processSetupInit(input) {
  function pruneOldStateFiles (line 28336) | function pruneOldStateFiles(directory, maxAgeDays = DEFAULT_STATE_MAX_AG...
  function cleanupOrphanedState (line 28378) | function cleanupOrphanedState(directory) {
  function processSetupMaintenance (line 28406) | async function processSetupMaintenance(input) {
  function processSetup (line 28436) | async function processSetup(input) {
  method "src/hooks/setup/index.ts" (line 28453) | "src/hooks/setup/index.ts"() {
  function readOmcConfig (line 28485) | function readOmcConfig() {
  function isCodeSimplifierEnabled (line 28498) | function isCodeSimplifierEnabled() {
  function getModifiedFiles (line 28502) | function getModifiedFiles(cwd2, extensions = DEFAULT_EXTENSIONS, maxFile...
  function isAlreadyTriggered (line 28515) | function isAlreadyTriggered(stateDir) {
  function writeTriggerMarker (line 28518) | function writeTriggerMarker(stateDir) {
  function clearTriggerMarker (line 28527) | function clearTriggerMarker(stateDir) {
  function buildSimplifierMessage (line 28536) | function buildSimplifierMessage(files) {
  function processCodeSimplifier (line 28545) | function processCodeSimplifier(cwd2, stateDir) {
  method "src/hooks/code-simplifier/index.ts" (line 28568) | "src/hooks/code-simplifier/index.ts"() {
  method "node_modules/safe-regex/lib/analyzer.js" (line 28582) | "node_modules/safe-regex/lib/analyzer.js"(exports2, module2) {
  method "node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-dotall-s-transform.js" (line 28646) | "node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-dotal...
  method "node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-named-capturing-groups-transform.js" (line 28698) | "node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-named...
  method "node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-x-flag-transform.js" (line 28742) | "node_modules/regexp-tree/dist/compat-transpiler/transforms/compat-x-fla...
  method "node_modules/regexp-tree/dist/compat-transpiler/transforms/index.js" (line 28757) | "node_modules/regexp-tree/dist/compat-transpiler/transforms/index.js"(ex...
  method "node_modules/regexp-tree/dist/generator/index.js" (line 28772) | "node_modules/regexp-tree/dist/generator/index.js"(exports2, module2) {
  method "node_modules/regexp-tree/dist/parser/unicode/parser-unicode-properties.js" (line 28912) | "node_modules/regexp-tree/dist/parser/unicode/parser-unicode-properties....
  method "node_modules/regexp-tree/dist/parser/generated/regexp-tree.js" (line 29259) | "node_modules/regexp-tree/dist/parser/generated/regexp-tree.js"(exports2...
  method "node_modules/regexp-tree/dist/parser/index.js" (line 30406) | "node_modules/regexp-tree/dist/parser/index.js"(exports2, module2) {
  method "node_modules/regexp-tree/dist/traverse/node-path.js" (line 30420) | "node_modules/regexp-tree/dist/traverse/node-path.js"(exports2, module2) {
  method "node_modules/regexp-tree/dist/traverse/index.js" (line 30753) | "node_modules/regexp-tree/dist/traverse/index.js"(exports2, module2) {
  method "node_modules/regexp-tree/dist/transform/index.js" (line 30988) | "node_modules/regexp-tree/dist/transform/index.js"(exports2, module2) {
  method "node_modules/regexp-tree/dist/compat-transpiler/index.js" (line 31122) | "node_modules/regexp-tree/dist/compat-transpiler/index.js"(exports2, mod...
  method "node_modules/regexp-tree/dist/utils/clone.js" (line 31158) | "node_modules/regexp-tree/dist/utils/clone.js"(exports2, module2) {
  method "node_modules/regexp-tree/dist/optimizer/transforms/char-surrogate-pair-to-single-unicode-transform.js" (line 31180) | "node_modules/regexp-tree/dist/optimizer/transforms/char-surrogate-pair-...
  method "node_modules/regexp-tree/dist/optimizer/transforms/char-code-to-simple-char-transform.js" (line 31200) | "node_modules/regexp-tree/dist/optimizer/transforms/char-code-to-simple-...
  method "node_modules/regexp-tree/dist/optimizer/transforms/char-case-insensitive-lowercase-transform.js" (line 31254) | "node_modules/regexp-tree/dist/optimizer/transforms/char-case-insensitiv...
  method "node_modules/regexp-tree/dist/optimizer/transforms/char-class-remove-duplicates-transform.js" (line 31331) | "node_modules/regexp-tree/dist/optimizer/transforms/char-class-remove-du...
  method "node_modules/regexp-tree/dist/transform/utils.js" (line 31353) | "node_modules/regexp-tree/dist/transform/utils.js"(exports2, module2) {
  method "node_modules/regexp-tree/dist/optimizer/transforms/quantifiers-merge-transform.js" (line 31414) | "node_modules/regexp-tree/dist/optimizer/transforms/quantifiers-merge-tr...
  method "node_modules/regexp-tree/dist/optimizer/transforms/quantifier-range-to-symbol-transform.js" (line 31482) | "node_modules/regexp-tree/dist/optimizer/transforms/quantifier-range-to-...
  method "node_modules/regexp-tree/dist/optimizer/transforms/char-class-classranges-to-chars-transform.js" (line 31523) | "node_modules/regexp-tree/dist/optimizer/transforms/char-class-classrang...
  method "node_modules/regexp-tree/dist/optimizer/transforms/char-class-to-meta-transform.js" (line 31541) | "node_modules/regexp-tree/dist/optimizer/transforms/char-class-to-meta-t...
  method "node_modules/regexp-tree/dist/optimizer/transforms/char-class-to-single-char-transform.js" (line 31685) | "node_modules/regexp-tree/dist/optimizer/transforms/char-class-to-single...
  method "node_modules/regexp-tree/dist/optimizer/transforms/char-escape-unescape-transform.js" (line 31744) | "node_modules/regexp-tree/dist/optimizer/transforms/char-escape-unescape...
  method "node_modules/regexp-tree/dist/optimizer/transforms/char-class-classranges-merge-transform.js" (line 31844) | "node_modules/regexp-tree/dist/optimizer/transforms/char-class-classrang...
  method "node_modules/regexp-tree/dist/optimizer/transforms/disjunction-remove-duplicates-transform.js" (line 32063) | "node_modules/regexp-tree/dist/optimizer/transforms/disjunction-remove-d...
  method "node_modules/regexp-tree/dist/optimizer/transforms/group-single-chars-to-char-class.js" (line 32089) | "node_modules/regexp-tree/dist/optimizer/transforms/group-single-chars-t...
  method "node_modules/regexp-tree/dist/optimizer/transforms/remove-empty-group-transform.js" (line 32151) | "node_modules/regexp-tree/dist/optimizer/transforms/remove-empty-group-t...
  method "node_modules/regexp-tree/dist/optimizer/transforms/ungroup-transform.js" (line 32172) | "node_modules/regexp-tree/dist/optimizer/transforms/ungroup-transform.js...
  method "node_modules/regexp-tree/dist/optimizer/transforms/combine-repeating-patterns-transform.js" (line 32235) | "node_modules/regexp-tree/dist/optimizer/transforms/combine-repeating-pa...
  method "node_modules/regexp-tree/dist/optimizer/transforms/index.js" (line 32387) | "node_modules/regexp-tree/dist/optimizer/transforms/index.js"(exports2, ...
  method "node_modules/regexp-tree/dist/optimizer/index.js" (line 32428) | "node_modules/regexp-tree/dist/optimizer/index.js"(exports2, module2) {
  method "node_modules/regexp-tree/dist/interpreter/finite-automaton/special-symbols.js" (line 32492) | "node_modules/regexp-tree/dist/interpreter/finite-automaton/special-symb...
  method "node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa.js" (line 32505) | "node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa.js"(...
  method "node_modules/regexp-tree/dist/interpreter/finite-automaton/dfa/dfa-minimizer.js" (line 32742) | "node_modules/regexp-tree/dist/interpreter/finite-automaton/dfa/dfa-mini...
  method "node_modules/regexp-tree/dist/interpreter/finite-automaton/dfa/dfa.js" (line 33082) | "node_modules/regexp-tree/dist/interpreter/finite-automaton/dfa/dfa.js"(...
  method "node_modules/regexp-tree/dist/interpreter/finite-automaton/state.js" (line 33399) | "node_modules/regexp-tree/dist/interpreter/finite-automaton/state.js"(ex...
  method "node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa-state.js" (line 33465) | "node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa-stat...
  method "node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/builders.js" (line 33664) | "node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/builders...
  method "node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa-from-regexp.js" (line 33794) | "node_modules/regexp-tree/dist/interpreter/finite-automaton/nfa/nfa-from...
  method "node_modules/regexp-tree/dist/interpreter/finite-automaton/index.js" (line 33878) | "node_modules/regexp-tree/dist/interpreter/finite-automaton/index.js"(ex...
  method "node_modules/regexp-tree/dist/compat-transpiler/runtime/index.js" (line 33928) | "node_modules/regexp-tree/dist/compat-transpiler/runtime/index.js"(expor...
  method "node_modules/regexp-tree/dist/regexp-tree.js" (line 34018) | "node_modules/regexp-tree/dist/regexp-tree.js"(exports2, module2) {
  method "node_modules/regexp-tree/index.js" (line 34170) | "node_modules/regexp-tree/index.js"(exports2, module2) {
  method "node_modules/safe-regex/lib/heuristic-analyzer.js" (line 34178) | "node_modules/safe-regex/lib/heuristic-analyzer.js"(exports2, module2) {
  method "node_modules/safe-regex/lib/analyzer-family.js" (line 34237) | "node_modules/safe-regex/lib/analyzer-family.js"(exports2, module2) {
  method "node_modules/safe-regex/index.js" (line 34245) | "node_modules/safe-regex/index.js"(exports2, module2) {
  function isZaiHost (line 34302) | function isZaiHost(urlString) {
  function getCachePath (line 34311) | function getCachePath() {
  function readCache (line 34314) | function readCache() {
  function writeCache (line 34342) | function writeCache(opts) {
  function sanitizePollIntervalMs (line 34364) | function sanitizePollIntervalMs(value) {
  function getUsagePollIntervalMs (line 34370) | function getUsagePollIntervalMs() {
  function getRateLimitedBackoffMs (line 34377) | function getRateLimitedBackoffMs(pollIntervalMs, count) {
  function getTransientNetworkBackoffMs (line 34384) | function getTransientNetworkBackoffMs(pollIntervalMs) {
  function isCacheValid (line 34387) | function isCacheValid(cache, pollIntervalMs) {
  function hasUsableStaleData (line 34398) | function hasUsableStaleData(cache) {
  function getCachedUsageResult (line 34407) | function getCachedUsageResult(cache) {
  function createRateLimitedCacheEntry (line 34423) | function createRateLimitedCacheEntry(source, data, pollIntervalMs, previ...
  function getKeychainServiceName (line 34438) | function getKeychainServiceName() {
  function isCredentialExpired (line 34446) | function isCredentialExpired(creds) {
  function readKeychainCredential (line 34449) | function readKeychainCredential(serviceName, account) {
  function readKeychainCredentials (line 34471) | function readKeychainCredentials() {
  function readFileCredentials (line 34494) | function readFileCredentials() {
  function getCredentials (line 34513) | function getCredentials() {
  function validateCredentials (line 34518) | function validateCredentials(creds) {
  function refreshAccessToken (line 34522) | function refreshAccessToken(refreshToken) {
  function fetchUsageFromApi (line 34576) | function fetchUsageFromApi(accessToken) {
  function fetchUsageFromZai (line 34621) | function fetchUsageFromZai() {
  function writeBackCredentials (line 34686) | function writeBackCredentials(creds) {
  function clamp (line 34728) | function clamp(v) {
  function parseUsageResponse (line 34732) | function parseUsageResponse(response) {
  function parseZaiResponse (line 34765) | function parseZaiResponse(response) {
  function getUsage (line 34788) | async function getUsage() {
  method "src/hud/usage-api.ts" (line 34919) | "src/hud/usage-api.ts"() {
  function formatTokenCount (line 34945) | function formatTokenCount(tokens) {
  method "src/cli/utils/formatting.ts" (line 34952) | "src/cli/utils/formatting.ts"() {
  function activeTaskCount (line 34972) | function activeTaskCount(input) {
  function deriveTeamLeaderGuidance (line 34975) | function deriveTeamLeaderGuidance(input) {
  method "src/team/leader-nudge-guidance.ts" (line 35016) | "src/team/leader-nudge-guidance.ts"() {
  function getStdinCachePath (line 35022) | function getStdinCachePath() {
  function writeStdinCache (line 35026) | function writeStdinCache(stdin) {
  function readStdinCache (line 35037) | function readStdinCache() {
  function readStdin (line 35048) | async function readStdin() {
  function getCurrentUsage (line 35067) | function getCurrentUsage(stdin) {
  function getTotalTokens (line 35070) | function getTotalTokens(stdin) {
  function getRoundedNativeContextPercent (line 35074) | function getRoundedNativeContextPercent(stdin) {
  function getManualContextPercent (line 35081) | function getManualContextPercent(stdin) {
  function isSameContextStream (line 35089) | function isSameContextStream(current, previous) {
  function stabilizeContextPercent (line 35092) | function stabilizeContextPercent(stdin, previousStdin) {
  function getContextPercent (line 35115) | function getContextPercent(stdin) {
  function getModelName (line 35122) | function getModelName(stdin) {
  method "src/hud/stdin.ts" (line 35127) | "src/hud/stdin.ts"() {
  function parseTranscript (line 35137) | async function parseTranscript(transcriptPath, options) {
  function cloneDate (line 35250) | function cloneDate(value) {
  function clonePendingPermission (line 35253) | function clonePendingPermission(permission) {
  function cloneTranscriptData (line 35259) | function cloneTranscriptData(result) {
  function finalizeTranscriptResult (line 35281) | function finalizeTranscriptResult(result, options, pendingPermissions) {
  function readTailLines (line 35308) | function readTailLines(filePath, fileSize, maxBytes) {
  function extractBackgroundAgentId (line 35325) | function extractBackgroundAgentId(content) {
  function parseTaskOutputResult (line 35330) | function parseTaskOutputResult(content) {
  function extractTargetSummary (line 35339) | function extractTargetSummary(input, toolName) {
  function processEntry (line 35357) | function processEntry(entry, agentMap, latestTodos, result, maxAgentMapS...
  function extractLastRequestTokenUsage (line 35484) | function extractLastRequestTokenUsage(usage) {
  function getNumericUsageValue (line 35503) | function getNumericUsageValue(value) {
  method "src/hud/transcript.ts" (line 35508) | "src/hud/transcript.ts"() {
  function isStateFileStale (line 35533) | function isStateFileStale(filePath) {
  function resolveStatePath2 (line 35542) | function resolveStatePath2(directory, filename, sessionId) {
  function readRalphStateForHud (line 35596) | function readRalphStateForHud(directory, sessionId) {
  function readUltraworkStateForHud (line 35621) | function readUltraworkStateForHud(directory, sessionId) {
  function readPrdStateForHud (line 35640) | function readPrdStateForHud(directory) {
  function readAutopilotStateForHud (line 35667) | function readAutopilotStateForHud(directory, sessionId) {
  method "src/hud/omc-state.ts" (line 35696) | "src/hud/omc-state.ts"() {
  function getCachePath2 (line 35706) | function getCachePath2() {
  function readCache2 (line 35714) | function readCache2() {
  function writeCache2 (line 35723) | function writeCache2(buckets) {
  function isCacheValid2 (line 35733) | function isCacheValid2(cache) {
  function spawnWithTimeout (line 35736) | function spawnWithTimeout(cmd, timeoutMs) {
  function parseOutput (line 35772) | function parseOutput(raw, periods) {
  function executeCustomProvider (line 35798) | async function executeCustomProvider(config2) {
  method "src/hud/custom-rate-provider.ts" (line 35829) | "src/hud/custom-rate-provider.ts"() {
  function cyan (line 35841) | function cyan(text) {
  function dim (line 35844) | function dim(text) {
  function bold (line 35847) | function bold(text) {
  function getModelTierColor (line 35850) | function getModelTierColor(model) {
  function getDurationColor (line 35858) | function getDurationColor(durationMs) {
  method "src/hud/colors.ts" (line 35866) | "src/hud/colors.ts"() {
  function renderRalph (line 35880) | function renderRalph(state, thresholds) {
  method "src/hud/elements/ralph.ts" (line 35899) | "src/hud/elements/ralph.ts"() {
  function getAgentCode (line 35909) | function getAgentCode(agentType, model) {
  function formatDuration4 (line 35927) | function formatDuration4(durationMs) {
  function renderAgents (line 35940) | function renderAgents(agents) {
  function sortByFreshest (line 35947) | function sortByFreshest(agents) {
  function renderAgentsCoded (line 35950) | function renderAgentsCoded(agents) {
  function renderAgentsCodedWithDuration (line 35962) | function renderAgentsCodedWithDuration(agents) {
  function renderAgentsDetailed (line 35984) | function renderAgentsDetailed(agents) {
  function truncateDescription (line 36022) | function truncateDescription(desc, maxWidth = 20) {
  function getShortAgentName (line 36026) | function getShortAgentName(agentType) {
  function renderAgentsWithDescriptions (line 36065) | function renderAgentsWithDescriptions(agents) {
  function renderAgentsDescOnly (line 36088) | function renderAgentsDescOnly(agents) {
  function formatDurationPadded (line 36110) | function formatDurationPadded(durationMs) {
  function renderAgentsMultiLine (line 36123) | function renderAgentsMultiLine(agents, maxLines = 5) {
  function renderAgentsByFormat (line 36153) | function renderAgentsByFormat(agents, format) {
  method "src/hud/elements/agents.ts" (line 36175) | "src/hud/elements/agents.ts"() {
  function renderTodosWithCurrent (line 36287) | function renderTodosWithCurrent(todos) {
  method "src/hud/elements/todos.ts" (line 36313) | "src/hud/elements/todos.ts"() {
  function truncate (line 36325) | function truncate(str, maxWidth) {
  function getSkillDisplayName (line 36328) | function getSkillDisplayName(skillName) {
  function isActiveMode (line 36331) | function isActiveMode(skillName, ultrawork, ralph) {
  function renderSkills (line 36337) | function renderSkills(ultrawork, ralph, lastSkill) {
  function renderLastSkill (line 36353) | function renderLastSkill(lastSkill) {
  method "src/hud/elements/skills.ts" (line 36361) | "src/hud/elements/skills.ts"() {
  function clampContextPercent (line 36371) | function clampContextPercent(percent) {
  function getContextSeverity (line 36374) | function getContextSeverity(safePercent, thresholds) {
  function getContextDisplayStyle (line 36386) | function getContextDisplayStyle(safePercent, thresholds) {
  function getStableContextDisplayPercent (line 36399) | function getStableContextDisplayPercent(percent, thresholds, displayScop...
  function renderContext (line 36430) | function renderContext(percent, thresholds, displayScope) {
  function renderContextWithBar (line 36435) | function renderContextWithBar(percent, thresholds, barWidth = 10, displa...
  method "src/hud/elements/context.ts" (line 36445) | "src/hud/elements/context.ts"() {
  function renderBackground (line 36462) | function renderBackground(tasks) {
  method "src/hud/elements/background.ts" (line 36479) | "src/hud/elements/background.ts"() {
  function renderPrd (line 36491) | function renderPrd(state) {
  method "src/hud/elements/prd.ts" (line 36506) | "src/hud/elements/prd.ts"() {
  function getColor (line 36515) | function getColor(percent) {
  function formatResetTime (line 36523) | function formatResetTime(date3) {
  function renderRateLimits (line 36539) | function renderRateLimits(limits, stale) {
  function renderRateLimitsWithBar (line 36564) | function renderRateLimitsWithBar(limits, barWidth = 8, stale) {
  function renderRateLimitsError (line 36598) | function renderRateLimitsError(result) {
  function bucketUsagePercent (line 36607) | function bucketUsagePercent(usage) {
  function renderBucketUsageValue (line 36612) | function renderBucketUsageValue(usage) {
  function renderCustomBuckets (line 36617) | function renderCustomBuckets(result, thresholdPercent = 85) {
  method "src/hud/elements/limits.ts" (line 36642) | "src/hud/elements/limits.ts"() {
  function renderPermission (line 36655) | function renderPermission(pending) {
  method "src/hud/elements/permission.ts" (line 36661) | "src/hud/elements/permission.ts"() {
  function renderThinking (line 36670) | function renderThinking(state, format = "text") {
  method "src/hud/elements/thinking.ts" (line 36687) | "src/hud/elements/thinking.ts"() {
  function renderSession (line 36695) | function renderSession(session) {
  method "src/hud/elements/session.ts" (line 36702) | "src/hud/elements/session.ts"() {
  function renderTokenUsage (line 36712) | function renderTokenUsage(usage, sessionTotalTokens) {
  method "src/hud/elements/token-usage.ts" (line 36728) | "src/hud/elements/token-usage.ts"() {
  function renderPromptTime (line 36735) | function renderPromptTime(promptTime) {
  method "src/hud/elements/prompt-time.ts" (line 36743) | "src/hud/elements/prompt-time.ts"() {
  function renderAutopilot (line 36750) | function renderAutopilot(state, _thresholds) {
  method "src/hud/elements/autopilot.ts" (line 36789) | "src/hud/elements/autopilot.ts"() {
  function renderCwd (line 36819) | function renderCwd(cwd2, format = "relative") {
  method "src/hud/elements/cwd.ts" (line 36841) | "src/hud/elements/cwd.ts"() {
  function getGitRepoName (line 36850) | function getGitRepoName(cwd2) {
  function getGitBranch (line 36877) | function getGitBranch(cwd2) {
  function renderGitRepo (line 36899) | function renderGitRepo(cwd2) {
  function renderGitBranch (line 36904) | function renderGitBranch(cwd2) {
  method "src/hud/elements/git.ts" (line 36911) | "src/hud/elements/git.ts"() {
  function extractVersion (line 36923) | function extractVersion(modelId) {
  function formatModelName (line 36930) | function formatModelName(modelId, format = "short") {
  function renderModel (line 36949) | function renderModel(modelId, format = "short") {
  method "src/hud/elements/model.ts" (line 36955) | "src/hud/elements/model.ts"() {
  function settingsFileHasApiKey (line 36963) | function settingsFileHasApiKey(filePath) {
  function detectApiKeySource (line 36975) | function detectApiKeySource(cwd2) {
  function renderApiKeySource (line 36985) | function renderApiKeySource(source) {
  method "src/hud/elements/api-key-source.ts" (line 36991) | "src/hud/elements/api-key-source.ts"() {
  function renderCallCounts (line 37001) | function renderCallCounts(toolCalls, agentInvocations, skillUsages) {
  method "src/hud/elements/call-counts.ts" (line 37016) | "src/hud/elements/call-counts.ts"() {
  function renderContextLimitWarning (line 37027) | function renderContextLimitWarning(contextPercent, threshold, autoCompac...
  method "src/hud/elements/context-warning.ts" (line 37040) | "src/hud/elements/context-warning.ts"() {
  function renderSessionSummary (line 37050) | function renderSessionSummary(summaryState) {
  method "src/hud/elements/session-summary.ts" (line 37055) | "src/hud/elements/session-summary.ts"() {
  function truncateLineToMaxWidth (line 37062) | function truncateLineToMaxWidth(line, maxWidth) {
  function wrapLineToMaxWidth (line 37093) | function wrapLineToMaxWidth(line, maxWidth) {
  function applyMaxWidthByMode (line 37127) | function applyMaxWidthByMode(lines, maxWidth, wrapMode) {
  function limitOutputLines (line 37134) | function limitOutputLines(lines, maxLines) {
  function render (line 37145) | async function render(context, config2) {
  method "src/hud/render.ts" (line 37353) | "src/hud/render.ts"() {
  function stripAnsi2 (line 37387) | function stripAnsi2(text) {
  function replaceUnicodeBlocks (line 37390) | function replaceUnicodeBlocks(text) {
  function sanitizeOutput (line 37393) | function sanitizeOutput(output) {
  method "src/hud/sanitize.ts" (line 37403) | "src/hud/sanitize.ts"() {
  function extractSessionIdFromPath (line 37416) | function extractSessionIdFromPath(transcriptPath) {
  function readSessionSummary (line 37421) | function readSessionSummary(stateDir, sessionId) {
  function spawnSessionSummaryScript (line 37430) | function spawnSessionSummaryScript(transcriptPath, stateDir, sessionId) {
  function calculateSessionHealth (line 37465) | async function calculateSessionHealth(sessionStart, contextPercent) {
  function main2 (line 37473) | async function main2(watchMode = false, skipInit = false) {
  method "src/hud/index.ts" (line 37676) | "src/hud/index.ts"() {
  function assembleStyles (line 37788) | function assembleStyles() {
  function hasFlag (line 37909) | function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : i...
  function envForceColor (line 37922) | function envForceColor() {
  function translateLevel (line 37933) | function translateLevel(level) {
  function _supportsColor (line 37944) | function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } =...
  function createSupportsColor (line 38024) | function createSupportsColor(stream, options = {}) {
  function stringReplaceAll (line 38038) | function stringReplaceAll(string3, substring, replacer) {
  function stringEncaseCRLFWithFirstIndex (line 38054) | function stringEncaseCRLFWithFirstIndex(string3, prefix, postfix, index) {
  function createChalk (line 38092) | function createChalk(options) {
  method get (line 38098) | get() {
  method get (line 38106) | get() {
  method get (line 38130) | get() {
  method get (line 38140) | get() {
  method get (line 38154) | get() {
  method set (line 38157) | set(level) {
  function createExaServer (line 38223) | function createExaServer(apiKey) {
  function createContext7Server (line 38230) | function createContext7Server() {
  function createPlaywrightServer (line 38236) | function createPlaywrightServer() {
  function createMemoryServer (line 38242) | function createMemoryServer() {
  function getDefaultMcpServers (line 38248) | function getDefaultMcpServers(options) {
  function toSdkMcpFormat (line 38264) | function toSdkMcpFormat(servers) {
  class _CodeOrName (line 38323) | class _CodeOrName {
  class Name (line 38327) | class Name extends _CodeOrName {
    method constructor (line 38328) | constructor(s) {
    method toString (line 38334) | toString() {
    method emptyStr (line 38337) | emptyStr() {
    method names (line 38340) | get names() {
  class _Code (line 38345) | class _Code extends _CodeOrName {
    method constructor (line 38346) | constructor(code) {
    method toString (line 38350) | toString() {
    method emptyStr (line 38353) | emptyStr() {
    method str (line 38359) | get str() {
    method names (line 38363) | get names() {
  function _ (line 38374) | function _(strs, ...args) {
  function str (line 38385) | function str(strs, ...args) {
  function addCodeArg (line 38397) | function addCodeArg(code, arg) {
  function optimize (line 38406) | function optimize(expr) {
  function mergeExprItems (line 38420) | function mergeExprItems(a, b) {
  function strConcat (line 38438) | function strConcat(c1, c2) {
  function interpolate (line 38442) | function interpolate(x) {
  function stringify (line 38445) | function stringify(x) {
  function safeStringify (line 38449) | function safeStringify(x) {
  function getProperty (line 38453) | function getProperty(key) {
  function getEsmExportName (line 38457) | function getEsmExportName(key) {
  function regexpCode (line 38464) | function regexpCode(rx) {
  class ValueError (line 38473) | class ValueError extends Error {
    method constructor (line 38474) | constructor(name) {
  class Scope (line 38489) | class Scope {
    method constructor (line 38490) | constructor({ prefixes, parent } = {}) {
    method toName (line 38495) | toName(nameOrPrefix) {
    method name (line 38498) | name(prefix) {
    method _newName (line 38501) | _newName(prefix) {
    method _nameGroup (line 38505) | _nameGroup(prefix) {
  class ValueScopeName (line 38514) | class ValueScopeName extends code_1.Name {
    method constructor (line 38515) | constructor(prefix, nameStr) {
    method setValue (line 38519) | setValue(value, { property, itemIndex }) {
  class ValueScope (line 38526) | class ValueScope extends Scope {
    method constructor (line 38527) | constructor(opts) {
    method get (line 38533) | get() {
    method name (line 38536) | name(prefix) {
    method value (line 38539) | value(nameOrPrefix, value) {
    method getValue (line 38561) | getValue(prefix, keyOrRef) {
    method scopeRefs (line 38567) | scopeRefs(scopeName, values = this._values) {
    method scopeCode (line 38574) | scopeCode(values = this._values, usedValues, getCode) {
    method _reduceValues (line 38581) | _reduceValues(values, valueCode, usedValues = {}, getCode) {
  class Node (line 38664) | class Node {
    method optimizeNodes (line 38665) | optimizeNodes() {
    method optimizeNames (line 38668) | optimizeNames(_names, _constants) {
  class Def (line 38672) | class Def extends Node {
    method constructor (line 38673) | constructor(varKind, name, rhs) {
    method render (line 38679) | render({ es5, _n }) {
    method optimizeNames (line 38684) | optimizeNames(names, constants4) {
    method names (line 38691) | get names() {
  class Assign (line 38695) | class Assign extends Node {
    method constructor (line 38696) | constructor(lhs, rhs, sideEffects) {
    method render (line 38702) | render({ _n }) {
    method optimizeNames (line 38705) | optimizeNames(names, constants4) {
    method names (line 38711) | get names() {
  class AssignOp (line 38716) | class AssignOp extends Assign {
    method constructor (line 38717) | constructor(lhs, op, rhs, sideEffects) {
    method render (line 38721) | render({ _n }) {
  class Label (line 38725) | class Label extends Node {
    method constructor (line 38726) | constructor(label) {
    method render (line 38731) | render({ _n }) {
  class Break (line 38735) | class Break extends Node {
    method constructor (line 38736) | constructor(label) {
    method render (line 38741) | render({ _n }) {
  class Throw (line 38746) | class Throw extends Node {
    method constructor (line 38747) | constructor(error2) {
    method render (line 38751) | render({ _n }) {
    method names (line 38754) | get names() {
  class AnyCode (line 38758) | class AnyCode extends Node {
    method constructor (line 38759) | constructor(code) {
    method render (line 38763) | render({ _n }) {
    method optimizeNodes (line 38766) | optimizeNodes() {
    method optimizeNames (line 38769) | optimizeNames(names, constants4) {
    method names (line 38773) | get names() {
  class ParentNode (line 38777) | class ParentNode extends Node {
    method constructor (line 38778) | constructor(nodes = []) {
    method render (line 38782) | render(opts) {
    method optimizeNodes (line 38785) | optimizeNodes() {
    method optimizeNames (line 38799) | optimizeNames(names, constants4) {
    method names (line 38811) | get names() {
  class BlockNode (line 38815) | class BlockNode extends ParentNode {
    method render (line 38816) | render(opts) {
  class Root (line 38820) | class Root extends ParentNode {
  class Else (line 38822) | class Else extends BlockNode {
  class If (line 38825) | class If extends BlockNode {
    method constructor (line 38826) | constructor(condition, nodes) {
    method render (line 38830) | render(opts) {
    method optimizeNodes (line 38836) | optimizeNodes() {
    method optimizeNames (line 38857) | optimizeNames(names, constants4) {
    method names (line 38865) | get names() {
  class For (line 38874) | class For extends BlockNode {
  class ForLoop (line 38877) | class ForLoop extends For {
    method constructor (line 38878) | constructor(iteration) {
    method render (line 38882) | render(opts) {
    method optimizeNames (line 38885) | optimizeNames(names, constants4) {
    method names (line 38891) | get names() {
  class ForRange (line 38895) | class ForRange extends For {
    method constructor (line 38896) | constructor(varKind, name, from, to) {
    method render (line 38903) | render(opts) {
    method names (line 38908) | get names() {
  class ForIter (line 38913) | class ForIter extends For {
    method constructor (line 38914) | constructor(loop, varKind, name, iterable) {
    method render (line 38921) | render(opts) {
    method optimizeNames (line 38924) | optimizeNames(names, constants4) {
    method names (line 38930) | get names() {
  class Func (line 38934) | class Func extends BlockNode {
    method constructor (line 38935) | constructor(name, args, async) {
    method render (line 38941) | render(opts) {
  class Return (line 38947) | class Return extends ParentNode {
    method render (line 38948) | render(opts) {
  class Try (line 38953) | class Try extends BlockNode {
    method render (line 38954) | render(opts) {
    method optimizeNodes (line 38962) | optimizeNodes() {
    method optimizeNames (line 38969) | optimizeNames(names, constants4) {
    method names (line 38976) | get names() {
  class Catch (line 38985) | class Catch extends BlockNode {
    method constructor (line 38986) | constructor(error2) {
    method render (line 38990) | render(opts) {
  class Finally (line 38995) | class Finally extends BlockNode {
    method render (line 38996) | render(opts) {
  class CodeGen (line 39001) | class CodeGen {
    method constructor (line 39002) | constructor(extScope, opts = {}) {
    method toString (line 39012) | toString() {
    method name (line 39015) | name(prefix) {
    method scopeName (line 39018) | scopeName(prefix) {
    method scopeValue (line 39021) | scopeValue(prefixOrName, value) {
    method getScopeValue (line 39027) | getScopeValue(prefix, keyOrRef) {
    method scopeRefs (line 39030) | scopeRefs(scopeName) {
    method scopeCode (line 39033) | scopeCode() {
    method _def (line 39036) | _def(varKind, nameOrPrefix, rhs, constant) {
    method const (line 39043) | const(nameOrPrefix, rhs, _constant) {
    method let (line 39046) | let(nameOrPrefix, rhs, _constant) {
    method var (line 39049) | var(nameOrPrefix, rhs, _constant) {
    method assign (line 39052) | assign(lhs, rhs, sideEffects) {
    method add (line 39055) | add(lhs, rhs) {
    method code (line 39058) | code(c) {
    method object (line 39065) | object(...keyValues) {
    method if (line 39079) | if(condition, thenBody, elseBody) {
    method elseIf (line 39090) | elseIf(condition) {
    method else (line 39093) | else() {
    method endIf (line 39096) | endIf() {
    method _for (line 39099) | _for(node, forBody) {
    method for (line 39105) | for(iteration, forBody) {
    method forRange (line 39108) | forRange(nameOrPrefix, from, to, forBody, varKind = this.opts.es5 ? sc...
    method forOf (line 39112) | forOf(nameOrPrefix, iterable, forBody, varKind = scope_1.varKinds.cons...
    method forIn (line 39123) | forIn(nameOrPrefix, obj, forBody, varKind = this.opts.es5 ? scope_1.va...
    method endFor (line 39130) | endFor() {
    method label (line 39133) | label(label) {
    method break (line 39136) | break(label) {
    method return (line 39139) | return(value) {
    method try (line 39147) | try(tryBody, catchCode, finallyCode) {
    method throw (line 39164) | throw(error2) {
    method block (line 39167) | block(body, nodeCount) {
    method endBlock (line 39173) | endBlock(nodeCount) {
    method func (line 39184) | func(name, args = code_1.nil, async, funcBody) {
    method endFunc (line 39190) | endFunc() {
    method optimize (line 39193) | optimize(n = 1) {
    method _leafNode (line 39199) | _leafNode(node) {
    method _blockNode (line 39203) | _blockNode(node) {
    method _endBlockNode (line 39207) | _endBlockNode(N1, N2) {
    method _elseNode (line 39215) | _elseNode(node) {
    method _root (line 39223) | get _root() {
    method _currNode (line 39226) | get _currNode() {
    method _currNode (line 39230) | set _currNode(node) {
  function addNames (line 39236) | function addNames(names, from) {
  function addExprNames (line 39241) | function addExprNames(names, from) {
  function optimizeExpr (line 39244) | function optimizeExpr(expr, names, constants4) {
  function subtractNames (line 39269) | function subtractNames(names, from) {
  function not (line 39273) | function not(x) {
  function and (line 39278) | function and(...args) {
  function or (line 39283) | function or(...args) {
  function mappend (line 39287) | function mappend(op) {
  function par (line 39290) | function par(x) {
  function toHash (line 39299) | function toHash(arr) {
  function alwaysValidSchema (line 39306) | function alwaysValidSchema(it, schema) {
  function checkUnknownRules (line 39315) | function checkUnknownRules(it, schema = it.schema) {
  function schemaHasRules (line 39328) | function schemaHasRules(schema, rules) {
  function schemaHasRulesButRef (line 39337) | function schemaHasRulesButRef(schema, RULES) {
  function schemaRefOrVal (line 39346) | function schemaRefOrVal({ topSchemaRef, schemaPath }, schema, keyword, $...
  function unescapeFragment (line 39356) | function unescapeFragment(str) {
  function escapeFragment (line 39360) | function escapeFragment(str) {
  function escapeJsonPointer (line 39364) | function escapeJsonPointer(str) {
  function unescapeJsonPointer (line 39370) | function unescapeJsonPointer(str) {
  function eachItem (line 39374) | function eachItem(xs, f) {
  function makeMergeEvaluated (line 39383) | function makeMergeEvaluated({ mergeNames, mergeToName, mergeValues: merg...
  function evaluatedPropsToName (line 39412) | function evaluatedPropsToName(gen, ps) {
  function setEvaluated (line 39421) | function setEvaluated(gen, props, ps) {
  function useFunc (line 39426) | function useFunc(gen, f) {
  function getErrorPath (line 39438) | function getErrorPath(dataProp, dataPropType, jsPropertySyntax) {
  function checkStrictMode (line 39446) | function checkStrictMode(it, msg, mode = it.opts.strictSchema) {
  function reportError (line 39491) | function reportError(cxt, error2 = exports2.keywordError, errorPaths, ov...
  function reportExtraError (line 39502) | function reportExtraError(cxt, error2 = exports2.keywordError, errorPath...
  function resetErrorsCount (line 39512) | function resetErrorsCount(gen, errsCount) {
  function extendErrors (line 39517) | function extendErrors({ gen, keyword, schemaValue, data, errsCount, it }) {
  function addError (line 39532) | function addError(gen, errObj) {
  function returnErrors (line 39537) | function returnErrors(it, errs) {
  function errorObjectCode (line 39555) | function errorObjectCode(cxt, error2, errorPaths) {
  function errorObject (line 39561) | function errorObject(cxt, error2, errorPaths = {}) {
  function errorInstancePath (line 39570) | function errorInstancePath({ errorPath }, { instancePath }) {
  function errorSchemaPath (line 39574) | function errorSchemaPath({ keyword, it: { errSchemaPath } }, { schemaPat...
  function extraErrorProps (line 39581) | function extraErrorProps(cxt, { params, message }, keyValues) {
  function topBoolOrEmptySchema (line 39604) | function topBoolOrEmptySchema(it) {
  function boolOrEmptySchema (line 39616) | function boolOrEmptySchema(it, valid) {
  function falseSchemaError (line 39626) | function falseSchemaError(it, overrideAllErrors) {
  function isJSONType (line 39646) | function isJSONType(x) {
  function getRules (line 39650) | function getRules() {
  function schemaHasRulesForType (line 39670) | function schemaHasRulesForType({ schema, self: self2 }, type) {
  function shouldUseGroup (line 39675) | function shouldUseGroup(schema, group) {
  function shouldUseRule (line 39679) | function shouldUseRule(schema, rule) {
  function getSchemaTypes (line 39698) | function getSchemaTypes(schema) {
  function getJSONTypes (line 39714) | function getJSONTypes(ts) {
  function coerceAndCheckDataType (line 39721) | function coerceAndCheckDataType(it, types) {
  function coerceToTypes (line 39738) | function coerceToTypes(types, coerceTypes) {
  function coerceData (line 39741) | function coerceData(it, types, coerceTo) {
  function assignParentData (line 39787) | function assignParentData({ gen, parentData, parentDataProperty }, expr) {
  function checkDataType (line 39790) | function checkDataType(dataType, data, strictNums, correct = DataType.Co...
  function checkDataTypes (line 39817) | function checkDataTypes(dataTypes, data, strictNums, correct) {
  function reportTypeError (line 39843) | function reportTypeError(it) {
  function getTypeErrorContext (line 39848) | function getTypeErrorContext(it) {
  function assignDefaults (line 39869) | function assignDefaults(it, ty) {
  function assignDefault (line 39880) | function assignDefault(it, prop, defaultValue) {
  function checkReportMissingProp (line 39903) | function checkReportMissingProp(cxt, prop) {
  function checkMissingProp (line 39911) | function checkMissingProp({ gen, data, it: { opts } }, properties, missi...
  function reportMissingProp (line 39915) | function reportMissingProp(cxt, missing) {
  function hasPropFunc (line 39920) | function hasPropFunc(gen) {
  function isOwnProperty (line 39927) | function isOwnProperty(gen, data, property) {
  function propertyInData (line 39931) | function propertyInData(gen, data, property, ownProperties) {
  function noPropertyInData (line 39936) | function noPropertyInData(gen, data, property, ownProperties) {
  function allSchemaProperties (line 39941) | function allSchemaProperties(schemaMap) {
  function schemaProperties (line 39945) | function schemaProperties(it, schemaMap) {
  function callValidateCode (line 39949) | function callValidateCode({ schemaCode, data, it: { gen, topSchemaRef, s...
  function usePattern (line 39964) | function usePattern({ gen, it: { opts } }, pattern) {
  function validateArray (line 39975) | function validateArray(cxt) {
  function validateUnion (line 39999) | function validateUnion(cxt) {
  function macroKeywordCode (line 40030) | function macroKeywordCode(cxt, def) {
  function funcKeywordCode (line 40047) | function funcKeywordCode(cxt, def) {
  function modifyData (line 40091) | function modifyData(cxt) {
  function addErrs (line 40095) | function addErrs(cxt, errs) {
  function checkAsyncKeyword (line 40102) | function checkAsyncKeyword({ schemaEnv }, def) {
  function useKeyword (line 40106) | function useKeyword(gen, keyword, result) {
  function validSchemaType (line 40111) | function validSchemaType(schema, schemaType, allowUndefined = false) {
  function validateKeywordUsage (line 40115) | function validateKeywordUsage({ schema, opts, self: self2, errSchemaPath...
  function getSubschema (line 40141) | function getSubschema(it, { keyword, schemaProp, schema, schemaPath, err...
  function extendSubschemaData (line 40171) | function extendSubschemaData(subschema, it, { dataProp, dataPropType: dp...
  function extendSubschemaMode (line 40202) | function extendSubschemaMode(subschema, { jtdDiscriminator, jtdMetadata,...
  function _traverse (line 40311) | function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJ...
  function escapeJsonPtr (line 40333) | function escapeJsonPtr(str) {
  function inlineRef (line 40361) | function inlineRef(schema, limit = true) {
  function hasRef (line 40378) | function hasRef(schema) {
  function countKeys (line 40390) | function countKeys(schema) {
  function getFullPath (line 40406) | function getFullPath(resolver, id = "", normalize10) {
  function _getFullPath (line 40413) | function _getFullPath(resolver, p) {
  function normalizeId (line 40419) | function normalizeId(id) {
  function resolveUrl (line 40423) | function resolveUrl(resolver, baseId, id) {
  function getSchemaRefs (line 40429) | function getSchemaRefs(schema, baseId) {
  function validateFunctionCode (line 40503) | function validateFunctionCode(it) {
  function validateFunction (line 40514) | function validateFunction({ gen, validateName, schema, schemaEnv, opts }...
  function destructureValCxt (line 40525) | function destructureValCxt(opts) {
  function destructureValCxtES5 (line 40528) | function destructureValCxtES5(gen, opts) {
  function topSchemaObjCode (line 40545) | function topSchemaObjCode(it) {
  function resetEvaluated (line 40560) | function resetEvaluated(it) {
  function funcSourceUrl (line 40566) | function funcSourceUrl(schema, opts) {
  function subschemaCode (line 40570) | function subschemaCode(it, valid) {
  function schemaCxtHasRules (line 40580) | function schemaCxtHasRules({ schema, self: self2 }) {
  function isSchemaObj (line 40588) | function isSchemaObj(it) {
  function subSchemaObjCode (line 40591) | function subSchemaObjCode(it, valid) {
  function checkKeywords (line 40601) | function checkKeywords(it) {
  function typeAndKeywords (line 40605) | function typeAndKeywords(it, errsCount) {
  function checkRefsAndKeywords (line 40612) | function checkRefsAndKeywords(it) {
  function checkNoDefault (line 40618) | function checkNoDefault(it) {
  function updateContext (line 40624) | function updateContext(it) {
  function checkAsyncSchema (line 40629) | function checkAsyncSchema(it) {
  function commentKeyword (line 40633) | function commentKeyword({ gen, schemaEnv, schema, errSchemaPath, opts }) {
  function returnResults (line 40643) | function returnResults(it) {
  function assignEvaluated (line 40654) | function assignEvaluated({ gen, evaluated, props, items }) {
  function schemaKeywords (line 40660) | function schemaKeywords(it, types, typeErrors, errsCount) {
  function iterateKeywords (line 40692) | function iterateKeywords(it, group) {
  function checkStrictTypes (line 40704) | function checkStrictTypes(it, types) {
  function checkContextTypes (line 40712) | function checkContextTypes(it, types) {
  function checkMultipleTypes (line 40726) | function checkMultipleTypes(it, ts) {
  function checkKeywordTypes (line 40731) | function checkKeywordTypes(it, ts) {
  function hasApplicableType (line 40743) | function hasApplicableType(schTs, kwdT) {
  function includesType (line 40746) | function includesType(ts, t) {
  function narrowSchemaTypes (line 40749) | function narrowSchemaTypes(it, withTypes) {
  function strictTypesError (line 40759) | function strictTypesError(it, msg) {
  class KeywordCxt (line 40764) | class KeywordCxt {
    method constructor (line 40765) | constructor(it, def, keyword) {
    method result (line 40791) | result(condition, successAction, failAction) {
    method failResult (line 40794) | failResult(condition, successAction, failAction) {
    method pass (line 40812) | pass(condition, failAction) {
    method fail (line 40815) | fail(condition) {
    method fail$data (line 40829) | fail$data(condition) {
    method error (line 40835) | error(append, errorParams, errorPaths) {
    method _error (line 40844) | _error(append, errorPaths) {
    method $dataError (line 40847) | $dataError() {
    method reset (line 40850) | reset() {
    method ok (line 40855) | ok(cond) {
    method setParams (line 40859) | setParams(obj, assign) {
    method block$data (line 40865) | block$data(valid, codeBlock, $dataValid = codegen_1.nil) {
    method check$data (line 40871) | check$data(valid = codegen_1.nil, $dataValid = codegen_1.nil) {
    method invalid$data (line 40886) | invalid$data() {
    method subschema (line 40906) | subschema(appl, valid) {
    method mergeEvaluated (line 40914) | mergeEvaluated(schemaCxt, toName) {
    method mergeValidEvaluated (line 40925) | mergeValidEvaluated(schemaCxt, valid) {
  function keywordCode (line 40934) | function keywordCode(it, keyword, def, ruleType) {
  function getData (line 40948) | function getData($data, { dataLevel, dataNames, dataPathArr }) {
  class ValidationError (line 40992) | class ValidationError extends Error {
    method constructor (line 40993) | constructor(errors3) {
  class MissingRefError (line 41004) | class MissingRefError extends Error {
    method constructor (line 41005) | constructor(resolver, baseId, ref, msg) {
  class SchemaEnv (line 41022) | class SchemaEnv {
    method constructor (line 41023) | constructor(env2) {
  function compileSchema (line 41042) | function compileSchema(sch) {
  function resolveRef (line 41127) | function resolveRef(root2, baseId, ref) {
  function inlineOrCompile (line 41145) | function inlineOrCompile(sch) {
  function getCompilingSchema (line 41150) | function getCompilingSchema(schEnv) {
  function sameSchemaEnv (line 41157) | function sameSchemaEnv(s1, s2) {
  function resolve17 (line 41160) | function resolve17(root2, ref) {
  function resolveSchema (line 41166) | function resolveSchema(root2, ref) {
  function getJsonPointer (line 41203) | function getJsonPointer(parsedRef, { baseId, schema, root: root2 }) {
  function normalizeIPv4 (line 41278) | function normalizeIPv4(host) {
  function stringArrayToHexStripped (line 41290) | function stringArrayToHexStripped(input, keepZero = false) {
  function getIPV6 (line 41305) | function getIPV6(input) {
  function normalizeIPv6 (line 41372) | function normalizeIPv6(host) {
  function stripLeadingZeros (line 41389) | function stripLeadingZeros(str, token) {
  function findToken (line 41411) | function findToken(str, token) {
  function removeDotSegments (line 41423) | function removeDotSegments(input) {
  function normalizeComponentEncoding (line 41448) | function normalizeComponentEncoding(components, esc2) {
  function recomposeAuthority (line 41470) | function recomposeAuthority(components) {
  function isSecure (line 41509) | function isSecure(wsComponents) {
  function httpParse (line 41512) | function httpParse(components) {
  function httpSerialize (line 41518) | function httpSerialize(components) {
  function wsParse (line 41528) | function wsParse(wsComponents) {
  function wsSerialize (line 41535) | function wsSerialize(wsComponents) {
  function urnParse (line 41552) | function urnParse(urnComponents, options) {
  function urnSerialize (line 41573) | function urnSerialize(urnComponents, options) {
  function urnuuidParse (line 41587) | function urnuuidParse(urnComponents, options) {
  function urnuuidSerialize (line 41596) | function urnuuidSerialize(uuidComponents) {
  function normalize10 (line 41650) | function normalize10(uri, options) {
  function resolve17 (line 41658) | function resolve17(baseURI, relativeURI, options) {
  function resolveComponents (line 41663) | function resolveComponents(base, relative15, options, skipNormalization) {
  function equal (line 41716) | function equal(uriA, uriB, options) {
  function serialize (line 41731) | function serialize(cmpts, opts) {
  function nonSimpleDomain (line 41795) | function nonSimpleDomain(value) {
  function parse6 (line 41806) | function parse6(uri, opts) {
  function requiredOptions (line 41984) | function requiredOptions(o) {
  class Ajv (line 42012) | class Ajv {
    method constructor (line 42013) | constructor(opts = {}) {
    method _addVocabularies (line 42041) | _addVocabularies() {
    method _addDefaultMetaSchema (line 42044) | _addDefaultMetaSchema() {
    method defaultMeta (line 42055) | defaultMeta() {
    method validate (line 42059) | validate(schemaKeyRef, data) {
    method compile (line 42073) | compile(schema, _meta) {
    method compileAsync (line 42077) | compileAsync(schema, meta) {
    method addSchema (line 42127) | addSchema(schema, key, _meta, _validateSchema = this.opts.validateSche...
    method addMetaSchema (line 42146) | addMetaSchema(schema, key, _validateSchema = this.opts.validateSchema) {
    method validateSchema (line 42150) | validateSchema(schema, throwOrLogError) {
    method getSchema (line 42174) | getSchema(keyRef) {
    method removeSchema (line 42188) | removeSchema(schemaKeyRef) {
    method addVocabulary (line 42223) | addVocabulary(definitions) {
    method addKeyword (line 42228) | addKeyword(kwdOrDef, def) {
    method getKeyword (line 42259) | getKeyword(keyword) {
    method removeKeyword (line 42263) | removeKeyword(keyword) {
    method addFormat (line 42274) | addFormat(name, format) {
    method errorsText (line 42280) | errorsText(errors3 = this.errors, { separator = ", ", dataVar = "data"...
    method $dataMetaSchema (line 42285) | $dataMetaSchema(metaSchema, keywordsJsonPointers) {
    method _removeAllSchemas (line 42305) | _removeAllSchemas(schemas4, regex) {
    method _addSchema (line 42318) | _addSchema(schema, meta, baseId, validateSchema = this.opts.validateSc...
    method _checkUnique (line 42345) | _checkUnique(id) {
    method _compileSchemaEnv (line 42350) | _compileSchemaEnv(sch) {
    method _compileMetaSchema (line 42359) | _compileMetaSchema(sch) {
    method _addVocabularies (line 44257) | _addVocabularies() {
    method _addDefaultMetaSchema (line 44263) | _addDefaultMetaSchema() {
    method defaultMeta (line 44271) | defaultMeta() {
  function checkOptions (line 42372) | function checkOptions(checkOpts, options, msg, log3 = "error") {
  function getSchEnv (line 42379) | function getSchEnv(keyRef) {
  function addInitialSchemas (line 42383) | function addInitialSchemas() {
  function addInitialFormats (line 42393) | function addInitialFormats() {
  function addInitialKeywords (line 42400) | function addInitialKeywords(defs) {
  function getMetaSchemaOptions (line 42413) | function getMetaSchemaOptions() {
  method log (line 42419) | log() {
  method warn (line 42420) | warn() {
  method error (line 42421) | error() {
  function getLogger (line 42423) | function getLogger(logger) {
  function checkKeyword (line 42433) | function checkKeyword(keyword, def) {
  function addRule (line 42447) | function addRule(keyword, definition, dataType) {
  function addBeforeRule (line 42476) | function addBeforeRule(ruleGroup, rule, before) {
  function keywordMetaschema (line 42485) | function keywordMetaschema(def) {
  function schemaOrData (line 42496) | function schemaOrData(schema) {
  method code (line 42504) | code() {
  method code (line 42522) | code(cxt) {
  function getValidate (line 42559) | function getValidate(cxt, sch) {
  function callRef (line 42564) | function callRef(cxt, v, sch, $async) {
  method code (line 42663) | code(cxt) {
  method code (line 42683) | code(cxt) {
  function ucs2length (line 42695) | function ucs2length(str) {
  method message (line 42720) | message({ keyword, schemaCode }) {
  method code (line 42732) | code(cxt) {
  method code (line 42755) | code(cxt) {
  method message (line 42768) | message({ keyword, schemaCode }) {
  method code (line 42780) | code(cxt) {
  method code (line 42803) | code(cxt) {
  method message (line 42869) | message({ keyword, schemaCode }) {
  method code (line 42881) | code(cxt) {
  method code (line 42911) | code(cxt) {
  method code (line 42970) | code(cxt) {
  method code (line 42995) | code(cxt) {
  method code (line 43068) | code(cxt) {
  function validateAdditionalItems (line 43078) | function validateAdditionalItems(cxt, items) {
  method code (line 43112) | code(cxt) {
  function validateTuple (line 43122) | function validateTuple(cxt, extraItems, schArr = cxt.schema) {
  method code (line 43181) | code(cxt) {
  method code (line 43210) | code(cxt) {
  method code (line 43305) | code(cxt) {
  function splitDependencies (line 43311) | function splitDependencies({ schema }) {
  function validatePropertyDeps (line 43322) | function validatePropertyDeps(cxt, propertyDeps = cxt.schema) {
  function validateSchemaDeps (line 43351) | function validateSchemaDeps(cxt, schemaDeps = cxt.schema) {
  method code (line 43380) | code(cxt) {
  method code (line 43422) | code(cxt) {
  method code (line 43516) | code(cxt) {
  method code (line 43569) | code(cxt) {
  method code (line 43635) | code(cxt) {
  method code (line 43679) | code(cxt) {
  method code (line 43725) | code(cxt) {
  method code (line 43754) | code(cxt) {
  function hasSchema (line 43799) | function hasSchema(it, keyword) {
  method code (line 43811) | code({ keyword, parentSchema, it }) {
  function getApplicator (line 43836) | function getApplicator(draft2020 = false) {
  method code (line 43872) | code(cxt, ruleType) {
  method code (line 44010) | code(cxt) {
  class Ajv (line 44256) | class Ajv extends core_1.default {
    method constructor (line 42013) | constructor(opts = {}) {
    method _addVocabularies (line 42041) | _addVocabularies() {
    method _addDefaultMetaSchema (line 42044) | _addDefaultMetaSchema() {
    method defaultMeta (line 42055) | defaultMeta() {
    method validate (line 42059) | validate(schemaKeyRef, data) {
    method compile (line 42073) | compile(schema, _meta) {
    method compileAsync (line 42077) | compileAsync(schema, meta) {
    method addSchema (line 42127) | addSchema(schema, key, _meta, _validateSchema = this.opts.validateSche...
    method addMetaSchema (line 42146) | addMetaSchema(schema, key, _validateSchema = this.opts.validateSchema) {
    method validateSchema (line 42150) | validateSchema(schema, throwOrLogError) {
    method getSchema (line 42174) | getSchema(keyRef) {
    method removeSchema (line 42188) | removeSchema(schemaKeyRef) {
    method addVocabulary (line 42223) | addVocabulary(definitions) {
    method addKeyword (line 42228) | addKeyword(kwdOrDef, def) {
    method getKeyword (line 42259) | getKeyword(keyword) {
    method removeKeyword (line 42263) | removeKeyword(keyword) {
    method addFormat (line 42274) | addFormat(name, format) {
    method errorsText (line 42280) | errorsText(errors3 = this.errors, { separator = ", ", dataVar = "data"...
    method $dataMetaSchema (line 42285) | $dataMetaSchema(metaSchema, keywordsJsonPointers) {
    method _removeAllSchemas (line 42305) | _removeAllSchemas(schemas4, regex) {
    method _addSchema (line 42318) | _addSchema(schema, meta, baseId, validateSchema = this.opts.validateSc...
    method _checkUnique (line 42345) | _checkUnique(id) {
    method _compileSchemaEnv (line 42350) | _compileSchemaEnv(sch) {
    method _compileMetaSchema (line 42359) | _compileMetaSchema(sch) {
    method _addVocabularies (line 44257) | _addVocabularies() {
    method _addDefaultMetaSchema (line 44263) | _addDefaultMetaSchema() {
    method defaultMeta (line 44271) | defaultMeta() {
  function fmtDef (line 44315) | function fmtDef(validate, compare) {
  function isLeapYear (line 44358) | function isLeapYear(year) {
  function date4 (line 44363) | function date4(str) {
  function compareDate (line 44372) | function compareDate(d1, d2) {
  function getTime (line 44382) | function getTime(strictTimeZone) {
  function compareTime (line 44403) | function compareTime(s1, s2) {
  function compareIsoTime (line 44412) | function compareIsoTime(t1, t2) {
  function getDateTime (line 44428) | function getDateTime(strictTimeZone) {
  function compareDateTime (line 44435) | function compareDateTime(dt1, dt2) {
  function compareIsoDateTime (line 44444) | function compareIsoDateTime(dt1, dt2) {
  function uri (line 44456) | function uri(str) {
  function byte (line 44460) | function byte(str) {
  function validateInt32 (line 44466) | function validateInt32(value) {
  function validateInt64 (line 44469) | function validateInt64(value) {
  function validateNumber (line 44472) | function validateNumber() {
  function regex (line 44476) | function regex(str) {
  method code (line 44509) | code(cxt) {
  function addFormats (line 44580) | function addFormats(ajv, list, fs22, exportName) {
  function getRawTag (line 44602) | function getRawTag(value) {
  function objectToString (line 44622) | function objectToString(value) {
  function baseGetTag (line 44629) | function baseGetTag(value) {
  function isObject (line 44636) | function isObject(value) {
  function isFunction (line 44645) | function isFunction(value) {
  function isMasked (line 44659) | function isMasked(func) {
  function toSource (line 44665) | function toSource(func) {
  function baseIsNative (line 44686) | function baseIsNative(value) {
  function getValue (line 44694) | function getValue(object3, key) {
  function getNative (line 44698) | function getNative(object3, key) {
  function hashClear (line 44705) | function hashClear() {
  function hashDelete (line 44710) | function hashDelete(key) {
  function hashGet (line 44719) | function hashGet(key) {
  function hashHas (line 44730) | function hashHas(key) {
  function hashSet (line 44736) | function hashSet(key, value) {
  function Hash (line 44743) | function Hash(entries) {
  function listCacheClear (line 44757) | function listCacheClear() {
  function eq (line 44762) | function eq(value, other) {
  function assocIndexOf (line 44766) | function assocIndexOf(array2, key) {
  function listCacheDelete (line 44778) | function listCacheDelete(key) {
  function listCacheGet (line 44793) | function listCacheGet(key) {
  function listCacheHas (line 44798) | function listCacheHas(key) {
  function listCacheSet (line 44802) | function listCacheSet(key, value) {
  function ListCache (line 44813) | function ListCache(entries) {
  function mapCacheClear (line 44829) | function mapCacheClear() {
  function isKeyable (line 44838) | function isKeyable(value) {
  function getMapData (line 44843) | function getMapData(map, key) {
  function mapCacheDelete (line 44848) | function mapCacheDelete(key) {
  function mapCacheGet (line 44854) | function mapCacheGet(key) {
  function mapCacheHas (line 44858) | function mapCacheHas(key) {
  function mapCacheSet (line 44862) | function mapCacheSet(key, value) {
  function MapCache (line 44869) | function MapCache(entries) {
  function memoize (line 44884) | function memoize(func, resolver) {
  function writeToStderr (line 44903) | function writeToStderr(data) {
  function extractDebugCategories (line 44931) | function extractDebugCategories(message) {
  function shouldShowDebugCategories (line 44959) | function shouldShowDebugCategories(categories, filter) {
  function shouldShowDebugMessage (line 44972) | function shouldShowDebugMessage(message, filter) {
  function getClaudeConfigHomeDir (line 44979) | function getClaudeConfigHomeDir() {
  function isEnvTruthy (line 44982) | function isEnvTruthy(envVar) {
  function createMaxOutputLengthValidator (line 44992) | function createMaxOutputLengthValidator(name) {
  function getInitialState (line 45051) | function getInitialState() {
  function getSessionId (line 45122) | function getSessionId() {
  function addSlowOperation (line 45127) | function addSlowOperation(operation, durationMs) {
  function createBufferedWriter (line 45137) | function createBufferedWriter({
  function registerCleanup (line 45182) | function registerCleanup(cleanupFn) {
  function describeValue (line 45187) | function describeValue(value) {
  function withSlowLogging (line 45202) | function withSlowLogging(operation, fn) {
  function jsonStringify (line 45214) | function jsonStringify(value, replacer, space) {
  function shouldLogDebugMessage (line 45232) | function shouldLogDebugMessage(message) {
  function getDebugWriter (line 45243) | function getDebugWriter() {
  function logForDebugging (line 45262) | function logForDebugging(message, { level } = {
  function getDebugLogPath (line 45281) | function getDebugLogPath() {
  function withSlowLogging2 (line 45305) | function withSlowLogging2(operation, fn) {
  method cwd (line 45318) | cwd() {
  method existsSync (line 45321) | existsSync(fsPath) {
  method stat (line 45324) | async stat(fsPath) {
  method statSync (line 45327) | statSync(fsPath) {
  method lstatSync (line 45330) | lstatSync(fsPath) {
  method readFileSync (line 45333) | readFileSync(fsPath, options) {
  method readFileBytesSync (line 45336) | readFileBytesSync(fsPath) {
  method readSync (line 45339) | readSync(fsPath, options) {
  method appendFileSync (line 45353) | appendFileSync(path22, data, options) {
  method copyFileSync (line 45367) | copyFileSync(src, dest) {
  method unlinkSync (line 45370) | unlinkSync(path22) {
  method renameSync (line 45373) | renameSync(oldPath, newPath) {
  method linkSync (line 45376) | linkSync(target, path22) {
  method symlinkSync (line 45379) | symlinkSync(target, path22) {
  method readlinkSync (line 45382) | readlinkSync(path22) {
  method realpathSync (line 45385) | realpathSync(path22) {
  method mkdirSync (line 45388) | mkdirSync(dirPath, options) {
  method readdirSync (line 45401) | readdirSync(dirPath) {
  method readdirStringSync (line 45404) | readdirStringSync(dirPath) {
  method isDirEmptySync (line 45407) | isDirEmptySync(dirPath) {
  method rmdirSync (line 45413) | rmdirSync(dirPath) {
  method rmS
Copy disabled (too large) Download .json
Condensed preview — 2859 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (24,029K chars).
[
  {
    "path": ".claude-plugin/marketplace.json",
    "chars": 942,
    "preview": "{\n  \"$schema\": \"https://anthropic.com/claude-code/marketplace.schema.json\",\n  \"name\": \"omc\",\n  \"description\": \"Claude Co"
  },
  {
    "path": ".claude-plugin/plugin.json",
    "chars": 506,
    "preview": "{\n  \"name\": \"oh-my-claudecode\",\n  \"version\": \"4.9.3\",\n  \"description\": \"Multi-agent orchestration system for Claude Code"
  },
  {
    "path": ".eslintignore",
    "chars": 40,
    "preview": "src/__tests__/benchmark-scoring.test.ts\n"
  },
  {
    "path": ".gitattributes",
    "chars": 670,
    "preview": "# Default to auto (Git decides based on content)\n* text=auto eol=lf\n\n# Force LF for scripts and source files\n*.sh text e"
  },
  {
    "path": ".github/CLAUDE.md",
    "chars": 6264,
    "preview": "<!-- OMC:START -->\n<!-- OMC:VERSION:4.8.2 -->\n\n# oh-my-claudecode - Intelligent Multi-Agent Orchestration\n\nYou are runni"
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 188,
    "preview": "# GitHub Sponsors configuration\ngithub: [Yeachan-Heo]\n\n# Other platforms (uncomment when ready)\n# ko_fi: your_username\n#"
  },
  {
    "path": ".github/SPONSOR_TIERS.md",
    "chars": 979,
    "preview": "# Sponsor Tiers\n\n## 🌟 Individual Supporter - $5/month\n**Help keep OMC free and open source**\n\n- 💖 Sponsor badge on your "
  },
  {
    "path": ".github/release-notes.md",
    "chars": 293,
    "preview": "## Install / Upgrade\n\n```bash\nnpm i -g oh-my-claude-sisyphus@{{VERSION}}\n```\n\n> **Package naming note:** the repo, plugi"
  },
  {
    "path": ".github/workflows/auto-label.yml",
    "chars": 2348,
    "preview": "name: Auto Label Issues\n\non:\n  issues:\n    types: [opened]\n\npermissions:\n  issues: write\n\njobs:\n  label:\n    runs-on: ub"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 4323,
    "preview": "name: CI\n\non:\n  push:\n    branches: [main, dev]\n  pull_request:\n    branches: [main, dev]\n  workflow_dispatch:\n\nconcurre"
  },
  {
    "path": ".github/workflows/cleanup.yml",
    "chars": 2388,
    "preview": "name: Cleanup\n\non:\n  schedule:\n    # Run weekly on Sunday at 00:00 UTC\n    - cron: '0 0 * * 0'\n  workflow_dispatch:\n\nper"
  },
  {
    "path": ".github/workflows/pr-check.yml",
    "chars": 2646,
    "preview": "name: PR Check\n\non:\n  pull_request:\n    types: [opened, synchronize, reopened]\n  workflow_dispatch:\n\npermissions:\n  cont"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 2254,
    "preview": "name: Release\n\non:\n  push:\n    tags:\n      - 'v*'\n\npermissions:\n  contents: write\n\njobs:\n  release:\n    name: Create Git"
  },
  {
    "path": ".github/workflows/stale.yml",
    "chars": 1921,
    "preview": "name: Manage Stale Issues\n\non:\n  schedule:\n    # Run daily at midnight UTC\n    - cron: '0 0 * * *'\n  workflow_dispatch:\n"
  },
  {
    "path": ".gitignore",
    "chars": 484,
    "preview": "node_modules/\n*.log\n.DS_Store\n.omc/\n.omc/\n.idea/\n.claude/\n\n# Windows reserved names (prevent accidental creation)\nnul\nNU"
  },
  {
    "path": ".mcp.json",
    "chars": 130,
    "preview": "{\n  \"mcpServers\": {\n    \"t\": {\n      \"command\": \"node\",\n      \"args\": [\"${CLAUDE_PLUGIN_ROOT}/bridge/mcp-server.cjs\"]\n  "
  },
  {
    "path": ".npmignore",
    "chars": 256,
    "preview": "# Source files (compiled to dist/)\nsrc/\n\n# Examples\nexamples/\n\n# Config files\ntsconfig.json\n.eslintrc*\n.prettierrc*\n\n# G"
  },
  {
    "path": "AGENTS.md",
    "chars": 20978,
    "preview": "# oh-my-claudecode - Intelligent Multi-Agent Orchestration\n\nYou are running with oh-my-claudecode (OMC), a multi-agent o"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 3394,
    "preview": "# oh-my-claudecode v4.9.0: Team reliability, autoresearch setup, and safety hardening\n\n## Release Notes\n\nRelease 4.9.0 f"
  },
  {
    "path": "CLAUDE.md",
    "chars": 6264,
    "preview": "<!-- OMC:START -->\n<!-- OMC:VERSION:4.9.1 -->\n\n# oh-my-claudecode - Intelligent Multi-Agent Orchestration\n\nYou are runni"
  },
  {
    "path": "LICENSE",
    "chars": 1068,
    "preview": "MIT License\n\nCopyright (c) 2025 Yeachan Heo\n\nPermission is hereby granted, free of charge, to any person obtaining a cop"
  },
  {
    "path": "README.de.md",
    "chars": 16006,
    "preview": "[English](README.md) | [한국어](README.ko.md) | [中文](README.zh.md) | [日本語](README.ja.md) | [Español](README.es.md) | [Tiếng"
  },
  {
    "path": "README.es.md",
    "chars": 17376,
    "preview": "[English](README.md) | [한국어](README.ko.md) | [中文](README.zh.md) | [日本語](README.ja.md) | Español | [Tiếng Việt](README.vi"
  },
  {
    "path": "README.fr.md",
    "chars": 16325,
    "preview": "[English](README.md) | [한국어](README.ko.md) | [中文](README.zh.md) | [日本語](README.ja.md) | [Español](README.es.md) | [Tiếng"
  },
  {
    "path": "README.it.md",
    "chars": 16295,
    "preview": "[English](README.md) | [한국어](README.ko.md) | [中文](README.zh.md) | [日本語](README.ja.md) | [Español](README.es.md) | [Tiếng"
  },
  {
    "path": "README.ja.md",
    "chars": 12481,
    "preview": "[English](README.md) | [한국어](README.ko.md) | [中文](README.zh.md) | 日本語 | [Español](README.es.md) | [Tiếng Việt](README.vi"
  },
  {
    "path": "README.ko.md",
    "chars": 12593,
    "preview": "[English](README.md) | 한국어 | [中文](README.zh.md) | [日本語](README.ja.md) | [Español](README.es.md) | [Tiếng Việt](README.vi"
  },
  {
    "path": "README.md",
    "chars": 22305,
    "preview": "English | [한국어](README.ko.md) | [中文](README.zh.md) | [日本語](README.ja.md) | [Español](README.es.md) | [Tiếng Việt](README"
  },
  {
    "path": "README.pt.md",
    "chars": 17291,
    "preview": "[English](README.md) | [한국어](README.ko.md) | [中文](README.zh.md) | [日本語](README.ja.md) | [Español](README.es.md) | [Tiếng"
  },
  {
    "path": "README.ru.md",
    "chars": 15950,
    "preview": "[English](README.md) | [한국어](README.ko.md) | [中文](README.zh.md) | [日本語](README.ja.md) | [Español](README.es.md) | [Tiếng"
  },
  {
    "path": "README.tr.md",
    "chars": 15443,
    "preview": "[English](README.md) | [한국어](README.ko.md) | [中文](README.zh.md) | [日本語](README.ja.md) | [Español](README.es.md) | [Tiếng"
  },
  {
    "path": "README.vi.md",
    "chars": 16273,
    "preview": "[English](README.md) | [한국어](README.ko.md) | [中文](README.zh.md) | [日本語](README.ja.md) | [Español](README.es.md) | Tiếng "
  },
  {
    "path": "README.zh.md",
    "chars": 11237,
    "preview": "[English](README.md) | [한국어](README.ko.md) | 中文 | [日本語](README.ja.md) | [Español](README.es.md) | [Tiếng Việt](README.vi"
  },
  {
    "path": "agents/analyst.md",
    "chars": 5441,
    "preview": "---\nname: analyst\ndescription: Pre-planning consultant for requirements analysis (Opus)\nmodel: claude-opus-4-6\nlevel: 3\n"
  },
  {
    "path": "agents/architect.md",
    "chars": 6886,
    "preview": "---\nname: architect\ndescription: Strategic Architecture & Debugging Advisor (Opus, READ-ONLY)\nmodel: claude-opus-4-6\nlev"
  },
  {
    "path": "agents/code-reviewer.md",
    "chars": 12053,
    "preview": "---\nname: code-reviewer\ndescription: Expert code review specialist with severity-rated feedback, logic defect detection,"
  },
  {
    "path": "agents/code-simplifier.md",
    "chars": 4415,
    "preview": "---\nname: code-simplifier\ndescription: Simplifies and refines code for clarity, consistency, and maintainability while p"
  },
  {
    "path": "agents/critic.md",
    "chars": 21367,
    "preview": "---\nname: critic\ndescription: Work plan and code review expert — thorough, structured, multi-perspective (Opus)\nmodel: c"
  },
  {
    "path": "agents/debugger.md",
    "chars": 9066,
    "preview": "---\nname: debugger\ndescription: Root-cause analysis, regression isolation, stack trace analysis, build/compilation error"
  },
  {
    "path": "agents/designer.md",
    "chars": 5768,
    "preview": "---\nname: designer\ndescription: UI/UX Designer-Developer for stunning interfaces (Sonnet)\nmodel: claude-sonnet-4-6\nlevel"
  },
  {
    "path": "agents/document-specialist.md",
    "chars": 7192,
    "preview": "---\nname: document-specialist\ndescription: External Documentation & Reference Specialist\nmodel: claude-sonnet-4-6\nlevel:"
  },
  {
    "path": "agents/executor.md",
    "chars": 7441,
    "preview": "---\nname: executor\ndescription: Focused task executor for implementation work (Sonnet)\nmodel: claude-sonnet-4-6\nlevel: 2"
  },
  {
    "path": "agents/explore.md",
    "chars": 7391,
    "preview": "---\nname: explore\ndescription: Codebase search specialist for finding files and code patterns\nmodel: claude-haiku-4-5\nle"
  },
  {
    "path": "agents/git-master.md",
    "chars": 4680,
    "preview": "---\nname: git-master\ndescription: Git expert for atomic commits, rebasing, and history management with style detection\nm"
  },
  {
    "path": "agents/planner.md",
    "chars": 8494,
    "preview": "---\nname: planner\ndescription: Strategic planning consultant with interview workflow (Opus)\nmodel: claude-opus-4-6\nlevel"
  },
  {
    "path": "agents/qa-tester.md",
    "chars": 5093,
    "preview": "---\nname: qa-tester\ndescription: Interactive CLI testing specialist using tmux for session management\nmodel: claude-sonn"
  },
  {
    "path": "agents/scientist.md",
    "chars": 5386,
    "preview": "---\nname: scientist\ndescription: Data analysis and research execution specialist\nmodel: claude-sonnet-4-6\nlevel: 3\ndisal"
  },
  {
    "path": "agents/security-reviewer.md",
    "chars": 8993,
    "preview": "---\nname: security-reviewer\ndescription: Security vulnerability detection specialist (OWASP Top 10, secrets, unsafe patt"
  },
  {
    "path": "agents/test-engineer.md",
    "chars": 6498,
    "preview": "---\nname: test-engineer\ndescription: Test strategy, integration/e2e coverage, flaky test hardening, TDD workflows\nmodel:"
  },
  {
    "path": "agents/tracer.md",
    "chars": 11162,
    "preview": "---\nname: tracer\ndescription: Evidence-driven causal tracing with competing hypotheses, evidence for/against, uncertaint"
  },
  {
    "path": "agents/verifier.md",
    "chars": 5800,
    "preview": "---\nname: verifier\ndescription: Verification strategy, evidence-based completion checks, test adequacy\nmodel: claude-son"
  },
  {
    "path": "agents/writer.md",
    "chars": 4264,
    "preview": "---\nname: writer\ndescription: Technical documentation writer for README, API docs, and comments (Haiku)\nmodel: claude-ha"
  },
  {
    "path": "benchmark/.gitignore",
    "chars": 5,
    "preview": ".env\n"
  },
  {
    "path": "benchmark/Dockerfile",
    "chars": 2038,
    "preview": "# SWE-bench Evaluation Container for oh-my-claudecode\n# Supports both vanilla Claude Code and OMC-enhanced modes\n\nFROM p"
  },
  {
    "path": "benchmark/README.md",
    "chars": 6277,
    "preview": "# SWE-bench Benchmark Suite\n\nAutomated benchmark comparison between vanilla Claude Code and OMC-enhanced Claude Code.\n\n#"
  },
  {
    "path": "benchmark/analyze_failures.py",
    "chars": 23007,
    "preview": "#!/usr/bin/env python3\n\"\"\"\nSWE-bench Failure Analysis Tool\n\nAnalyze failed instances to identify patterns, categorize fa"
  },
  {
    "path": "benchmark/compare_results.py",
    "chars": 19090,
    "preview": "#!/usr/bin/env python3\n\"\"\"\nSWE-bench Results Comparison Tool\n\nCompare evaluation results between vanilla Claude Code and"
  },
  {
    "path": "benchmark/docker-compose.yml",
    "chars": 2115,
    "preview": "version: '3.8'\n\nservices:\n  swe-bench-runner:\n    build:\n      context: .\n      dockerfile: Dockerfile\n    container_nam"
  },
  {
    "path": "benchmark/entrypoint.sh",
    "chars": 1208,
    "preview": "#!/bin/bash\nset -e\n\necho \"=== SWE-bench Evaluation Environment ===\"\necho \"Run Mode: ${RUN_MODE:-vanilla}\"\necho \"Claude C"
  },
  {
    "path": "benchmark/evaluate.py",
    "chars": 16961,
    "preview": "#!/usr/bin/env python3\n\"\"\"\nSWE-bench Evaluation Runner\n\nWrapper around swebench.harness.run_evaluation to evaluate predi"
  },
  {
    "path": "benchmark/predictions/omc/checkpoint.json",
    "chars": 398,
    "preview": "{\n  \"completed_instances\": [],\n  \"failed_instances\": [\n    \"django__django-11477\",\n    \"django__django-11490\",\n    \"djan"
  },
  {
    "path": "benchmark/predictions/omc/stats.json",
    "chars": 170,
    "preview": "{\n  \"total\": 5,\n  \"completed\": 0,\n  \"failed\": 5,\n  \"total_tokens\": 0,\n  \"total_duration\": 23184.399043560028,\n  \"success"
  },
  {
    "path": "benchmark/predictions/vanilla/checkpoint.json",
    "chars": 401,
    "preview": "{\n  \"completed_instances\": [\n    \"django__django-11477\",\n    \"django__django-11490\",\n    \"django__django-11532\",\n    \"dj"
  },
  {
    "path": "benchmark/predictions/vanilla/predictions.jsonl",
    "chars": 10559,
    "preview": "{\"instance_id\": \"astropy__astropy-12907\", \"model_name_or_path\": \"claude-code-vanilla\", \"model_patch\": \"diff --git a/astr"
  },
  {
    "path": "benchmark/predictions/vanilla/stats.json",
    "chars": 169,
    "preview": "{\n  \"total\": 5,\n  \"completed\": 5,\n  \"failed\": 0,\n  \"total_tokens\": 0,\n  \"total_duration\": 1247.02743268013,\n  \"success_r"
  },
  {
    "path": "benchmark/quick_test.sh",
    "chars": 3251,
    "preview": "#!/bin/bash\nset -euo pipefail\n\n# Colors for output\nRED='\\033[0;31m'\nGREEN='\\033[0;32m'\nYELLOW='\\033[1;33m'\nBLUE='\\033[0;"
  },
  {
    "path": "benchmark/requirements.txt",
    "chars": 555,
    "preview": "# SWE-bench Evaluation Dependencies\n# Core SWE-bench package\nswebench>=2.0\n\n# Anthropic SDK for direct API access if nee"
  },
  {
    "path": "benchmark/results/README.md",
    "chars": 4193,
    "preview": "# SWE-bench Verified Results\n\n## Summary\n\n| Mode | Pass Rate | Avg Tokens | Avg Time | Total Cost |\n|------|-----------|"
  },
  {
    "path": "benchmark/run_benchmark.py",
    "chars": 21094,
    "preview": "#!/usr/bin/env python3\n\"\"\"\nSWE-bench Benchmark Runner for Claude Code (Vanilla vs OMC)\n\nThis script evaluates Claude Cod"
  },
  {
    "path": "benchmark/run_full_comparison.sh",
    "chars": 6303,
    "preview": "#!/bin/bash\nset -euo pipefail\n\n# Colors for output\nRED='\\033[0;31m'\nGREEN='\\033[0;32m'\nYELLOW='\\033[1;33m'\nBLUE='\\033[0;"
  },
  {
    "path": "benchmark/run_omc.sh",
    "chars": 3908,
    "preview": "#!/bin/bash\nset -euo pipefail\n\n# Colors for output\nRED='\\033[0;31m'\nGREEN='\\033[0;32m'\nYELLOW='\\033[1;33m'\nBLUE='\\033[0;"
  },
  {
    "path": "benchmark/run_vanilla.sh",
    "chars": 3619,
    "preview": "#!/bin/bash\nset -euo pipefail\n\n# Colors for output\nRED='\\033[0;31m'\nGREEN='\\033[0;32m'\nYELLOW='\\033[1;33m'\nBLUE='\\033[0;"
  },
  {
    "path": "benchmark/setup.sh",
    "chars": 4181,
    "preview": "#!/bin/bash\nset -euo pipefail\n\n# Colors for output\nRED='\\033[0;31m'\nGREEN='\\033[0;32m'\nYELLOW='\\033[1;33m'\nNC='\\033[0m' "
  },
  {
    "path": "benchmarks/baselines/2026-03-08-consolidation.json",
    "chars": 1226,
    "preview": "{\n  \"timestamp\": \"2026-03-08T00:00:00.000Z\",\n  \"model\": \"claude-opus-4-6\",\n  \"description\": \"Initial baseline from agent"
  },
  {
    "path": "benchmarks/code-reviewer/fixtures/code/code-payment-refund.md",
    "chars": 3729,
    "preview": "# Payment Refund Service\n\nPlease review the following refund processing service:\n\n```typescript\nimport { db } from '../d"
  },
  {
    "path": "benchmarks/code-reviewer/fixtures/code/code-retry-handler.md",
    "chars": 3232,
    "preview": "# Retry Handler Implementation\n\nPlease review the following retry handler utility:\n\n```typescript\n/**\n * Generic retry h"
  },
  {
    "path": "benchmarks/code-reviewer/fixtures/code/code-sql-injection.md",
    "chars": 2295,
    "preview": "# User Search API Endpoint\n\nPlease review the following Express.js endpoint for a user search feature:\n\n```typescript\nim"
  },
  {
    "path": "benchmarks/code-reviewer/ground-truth/code-payment-refund.json",
    "chars": 3681,
    "preview": "{\n  \"fixtureId\": \"code-payment-refund\",\n  \"fixturePath\": \"fixtures/code/code-payment-refund.md\",\n  \"domain\": \"code\",\n  \""
  },
  {
    "path": "benchmarks/code-reviewer/ground-truth/code-retry-handler.json",
    "chars": 192,
    "preview": "{\n  \"fixtureId\": \"code-retry-handler\",\n  \"fixturePath\": \"fixtures/code/code-retry-handler.md\",\n  \"domain\": \"code\",\n  \"ex"
  },
  {
    "path": "benchmarks/code-reviewer/ground-truth/code-sql-injection.json",
    "chars": 3415,
    "preview": "{\n  \"fixtureId\": \"code-sql-injection\",\n  \"fixturePath\": \"fixtures/code/code-sql-injection.md\",\n  \"domain\": \"code\",\n  \"ex"
  },
  {
    "path": "benchmarks/code-reviewer/prompts/quality-reviewer.md",
    "chars": 8534,
    "preview": "---\nname: quality-reviewer\ndescription: Logic defects, maintainability, anti-patterns, SOLID principles\nmodel: claude-op"
  },
  {
    "path": "benchmarks/code-reviewer/run-benchmark.ts",
    "chars": 3360,
    "preview": "/**\n * Benchmark runner for code-reviewer agent evaluation.\n *\n * Compares the new merged code-reviewer (which absorbed "
  },
  {
    "path": "benchmarks/debugger/fixtures/bugs/bug-redis-intermittent.md",
    "chars": 3479,
    "preview": "# Bug Report: Intermittent Redis ECONNREFUSED after deployments\n\n## Environment\n- Node.js 20.11 LTS, Express 4.18\n- Redi"
  },
  {
    "path": "benchmarks/debugger/fixtures/bugs/bug-ts-build-errors.md",
    "chars": 3394,
    "preview": "# TypeScript Build Errors — 3 failures blocking CI\n\n## Environment\n- TypeScript 5.4, strict mode enabled\n- Build command"
  },
  {
    "path": "benchmarks/debugger/fixtures/bugs/bug-undefined-map.md",
    "chars": 2760,
    "preview": "# Bug Report: TypeError: Cannot read properties of undefined (reading 'map')\n\n## Environment\n- React 18.2, TypeScript 5."
  },
  {
    "path": "benchmarks/debugger/ground-truth/bug-redis-intermittent.json",
    "chars": 3392,
    "preview": "{\n  \"fixtureId\": \"bug-redis-intermittent\",\n  \"fixturePath\": \"fixtures/bugs/bug-redis-intermittent.md\",\n  \"domain\": \"bug\""
  },
  {
    "path": "benchmarks/debugger/ground-truth/bug-ts-build-errors.json",
    "chars": 2746,
    "preview": "{\n  \"fixtureId\": \"bug-ts-build-errors\",\n  \"fixturePath\": \"fixtures/bugs/bug-ts-build-errors.md\",\n  \"domain\": \"bug\",\n  \"e"
  },
  {
    "path": "benchmarks/debugger/ground-truth/bug-undefined-map.json",
    "chars": 2664,
    "preview": "{\n  \"fixtureId\": \"bug-undefined-map\",\n  \"fixturePath\": \"fixtures/bugs/bug-undefined-map.md\",\n  \"domain\": \"bug\",\n  \"expec"
  },
  {
    "path": "benchmarks/debugger/prompts/build-fixer.md",
    "chars": 4555,
    "preview": "---\nname: build-fixer\ndescription: Build and compilation error resolution specialist (minimal diffs, no architecture cha"
  },
  {
    "path": "benchmarks/debugger/run-benchmark.ts",
    "chars": 3304,
    "preview": "/**\n * Benchmark runner for debugger agent evaluation.\n *\n * Compares the new merged debugger (which absorbed build-fixe"
  },
  {
    "path": "benchmarks/executor/fixtures/tasks/task-add-timestamp.md",
    "chars": 1803,
    "preview": "# Task: Add createdAt timestamp to User interface\n\n## Context\n\nWe need to track when users are created. Add a `createdAt"
  },
  {
    "path": "benchmarks/executor/fixtures/tasks/task-input-validation.md",
    "chars": 2175,
    "preview": "# Task: Add input validation to POST /api/products endpoint\n\n## Context\n\nThe POST /api/products endpoint currently accep"
  },
  {
    "path": "benchmarks/executor/fixtures/tasks/task-notification-refactor.md",
    "chars": 3177,
    "preview": "# Task: Refactor notification system for multi-channel support\n\n## Context\n\nThe current notification system only support"
  },
  {
    "path": "benchmarks/executor/ground-truth/task-add-timestamp.json",
    "chars": 1425,
    "preview": "{\n  \"fixtureId\": \"task-add-timestamp\",\n  \"fixturePath\": \"fixtures/tasks/task-add-timestamp.md\",\n  \"domain\": \"task\",\n  \"e"
  },
  {
    "path": "benchmarks/executor/ground-truth/task-input-validation.json",
    "chars": 2628,
    "preview": "{\n  \"fixtureId\": \"task-input-validation\",\n  \"fixturePath\": \"fixtures/tasks/task-input-validation.md\",\n  \"domain\": \"task\""
  },
  {
    "path": "benchmarks/executor/ground-truth/task-notification-refactor.json",
    "chars": 2904,
    "preview": "{\n  \"fixtureId\": \"task-notification-refactor\",\n  \"fixturePath\": \"fixtures/tasks/task-notification-refactor.md\",\n  \"domai"
  },
  {
    "path": "benchmarks/executor/prompts/deep-executor.md",
    "chars": 6488,
    "preview": "---\nname: deep-executor\ndescription: Autonomous deep worker for complex goal-oriented tasks (Opus)\nmodel: claude-opus-4-"
  },
  {
    "path": "benchmarks/executor/run-benchmark.ts",
    "chars": 3380,
    "preview": "/**\n * Benchmark runner for executor agent evaluation.\n *\n * Compares the new merged executor (which absorbed deep-execu"
  },
  {
    "path": "benchmarks/harsh-critic/README.md",
    "chars": 5179,
    "preview": "# Harsh-Critic Benchmark\n\nEvaluates whether the archived `harsh-critic` prompt detects more gaps than the standard `crit"
  },
  {
    "path": "benchmarks/harsh-critic/SCORING_MATCH_CALIBRATION.md",
    "chars": 2628,
    "preview": "# Scoring Match Calibration Rationale\n\n## Why This Change Exists\n\nThe benchmark matcher currently relies on strict subst"
  },
  {
    "path": "benchmarks/harsh-critic/fixtures/analysis/analysis-incident-review.md",
    "chars": 8067,
    "preview": "# Incident Postmortem: Payment Service Outage\n**Incident ID:** INC-2026-0089\n**Date of Incident:** 2026-02-19\n**Date of "
  },
  {
    "path": "benchmarks/harsh-critic/fixtures/analysis/analysis-perf-report.md",
    "chars": 7410,
    "preview": "# Performance Analysis Report: API Latency Regression\n**Report ID:** PERF-2026-011\n**Author:** Rodrigo Alves, Platform E"
  },
  {
    "path": "benchmarks/harsh-critic/fixtures/code/code-payment-handler.ts",
    "chars": 6085,
    "preview": "/**\n * Payment Handler Module\n *\n * Handles payment processing for subscription and one-time purchases.\n * Integrates wi"
  },
  {
    "path": "benchmarks/harsh-critic/fixtures/code/code-session-manager.ts",
    "chars": 6124,
    "preview": "/**\n * Session Manager\n *\n * Manages user sessions for the web application. Provides session creation,\n * lookup, invali"
  },
  {
    "path": "benchmarks/harsh-critic/fixtures/code/code-utils-clean.ts",
    "chars": 7857,
    "preview": "/**\n * Utility Functions\n *\n * A collection of pure, well-tested utility functions for common string,\n * date, and data "
  },
  {
    "path": "benchmarks/harsh-critic/fixtures/plans/plan-api-refactor.md",
    "chars": 11091,
    "preview": "# API Layer Refactor Plan\n**Version:** 2.1\n**Owner:** Backend Platform Team\n**Last Updated:** 2026-02-25\n**Target Comple"
  },
  {
    "path": "benchmarks/harsh-critic/fixtures/plans/plan-auth-migration.md",
    "chars": 9466,
    "preview": "# Auth System Migration Plan\n**Version:** 1.4\n**Owner:** Platform Security Team\n**Last Updated:** 2026-02-18\n**Target Co"
  },
  {
    "path": "benchmarks/harsh-critic/fixtures/plans/plan-clean-baseline.md",
    "chars": 9405,
    "preview": "# Notifications Service Deployment Plan\n**Version:** 1.0\n**Owner:** Growth Engineering Team\n**Last Updated:** 2026-02-27"
  },
  {
    "path": "benchmarks/harsh-critic/ground-truth/analysis-incident-review.json",
    "chars": 5862,
    "preview": "{\n  \"fixtureId\": \"analysis-incident-review\",\n  \"fixturePath\": \"fixtures/analysis/analysis-incident-review.md\",\n  \"domain"
  },
  {
    "path": "benchmarks/harsh-critic/ground-truth/analysis-perf-report.json",
    "chars": 4923,
    "preview": "{\n  \"fixtureId\": \"analysis-perf-report\",\n  \"fixturePath\": \"fixtures/analysis/analysis-perf-report.md\",\n  \"domain\": \"anal"
  },
  {
    "path": "benchmarks/harsh-critic/ground-truth/code-payment-handler.json",
    "chars": 5708,
    "preview": "{\n  \"fixtureId\": \"code-payment-handler\",\n  \"fixturePath\": \"fixtures/code/code-payment-handler.ts\",\n  \"domain\": \"code\",\n "
  },
  {
    "path": "benchmarks/harsh-critic/ground-truth/code-session-manager.json",
    "chars": 5317,
    "preview": "{\n  \"fixtureId\": \"code-session-manager\",\n  \"fixturePath\": \"fixtures/code/code-session-manager.ts\",\n  \"domain\": \"code\",\n "
  },
  {
    "path": "benchmarks/harsh-critic/ground-truth/code-utils-clean.json",
    "chars": 188,
    "preview": "{\n  \"fixtureId\": \"code-utils-clean\",\n  \"fixturePath\": \"fixtures/code/code-utils-clean.ts\",\n  \"domain\": \"code\",\n  \"expect"
  },
  {
    "path": "benchmarks/harsh-critic/ground-truth/plan-api-refactor.json",
    "chars": 5183,
    "preview": "{\n  \"fixtureId\": \"plan-api-refactor\",\n  \"fixturePath\": \"fixtures/plans/plan-api-refactor.md\",\n  \"domain\": \"plan\",\n  \"exp"
  },
  {
    "path": "benchmarks/harsh-critic/ground-truth/plan-auth-migration.json",
    "chars": 6654,
    "preview": "{\n  \"fixtureId\": \"plan-auth-migration\",\n  \"fixturePath\": \"fixtures/plans/plan-auth-migration.md\",\n  \"domain\": \"plan\",\n  "
  },
  {
    "path": "benchmarks/harsh-critic/ground-truth/plan-clean-baseline.json",
    "chars": 195,
    "preview": "{\n  \"fixtureId\": \"plan-clean-baseline\",\n  \"fixturePath\": \"fixtures/plans/plan-clean-baseline.md\",\n  \"domain\": \"plan\",\n  "
  },
  {
    "path": "benchmarks/harsh-critic/prompts/harsh-critic.md",
    "chars": 18742,
    "preview": "---\nname: harsh-critic\ndescription: Thorough reviewer with structured gap analysis and multi-perspective investigation ("
  },
  {
    "path": "benchmarks/harsh-critic/run-benchmark.ts",
    "chars": 15850,
    "preview": "/**\n * Benchmark runner for harsh-critic vs critic agent evaluation.\n *\n * Usage:\n *   ANTHROPIC_API_KEY=sk-... npx tsx "
  },
  {
    "path": "benchmarks/harsh-critic/scoring/__tests__/parser.test.ts",
    "chars": 8742,
    "preview": "import { describe, test, expect } from 'vitest';\nimport { parseAgentOutput } from '../parser.js';\n\n// =================="
  },
  {
    "path": "benchmarks/harsh-critic/scoring/__tests__/scorer.test.ts",
    "chars": 7077,
    "preview": "import { describe, test, expect } from 'vitest';\nimport { matchFindings, scoreFixture, aggregateScores } from '../scorer"
  },
  {
    "path": "benchmarks/harsh-critic/scoring/parser.ts",
    "chars": 13723,
    "preview": "/**\n * Parser for extracting structured data from agent review output.\n *\n * Supports two agent formats:\n * - harsh-crit"
  },
  {
    "path": "benchmarks/harsh-critic/scoring/reporter.ts",
    "chars": 8325,
    "preview": "/**\n * Report generator for benchmark results.\n *\n * Produces both machine-readable JSON (BenchmarkReport) and human-rea"
  },
  {
    "path": "benchmarks/harsh-critic/scoring/scorer.ts",
    "chars": 13119,
    "preview": "/**\n * Scorer for matching parsed agent output against ground truth and computing\n * benchmark metrics.\n */\n\nimport type"
  },
  {
    "path": "benchmarks/harsh-critic/scoring/types.ts",
    "chars": 7031,
    "preview": "/**\n * Benchmark Scoring Types for Harsh-Critic Agent Evaluation\n *\n * Defines the schema for fixtures, ground truth, pa"
  },
  {
    "path": "benchmarks/harsh-critic/vitest.config.ts",
    "chars": 210,
    "preview": "import { defineConfig } from 'vitest/config';\n\nexport default defineConfig({\n  test: {\n    globals: true,\n    environmen"
  },
  {
    "path": "benchmarks/run-all.ts",
    "chars": 9010,
    "preview": "/**\n * Top-level benchmark runner for all agent prompt evaluations.\n *\n * Runs each agent benchmark sequentially and opt"
  },
  {
    "path": "benchmarks/shared/parser.ts",
    "chars": 7944,
    "preview": "/**\n * Generalized parser for extracting structured findings from any agent output.\n *\n * For critic/harsh-critic agents"
  },
  {
    "path": "benchmarks/shared/reporter.ts",
    "chars": 7997,
    "preview": "/**\n * Generalized report generator for agent benchmark results.\n *\n * Produces both machine-readable JSON and human-rea"
  },
  {
    "path": "benchmarks/shared/runner.ts",
    "chars": 14058,
    "preview": "/**\n * Shared runner utilities for agent benchmarks.\n *\n * Provides common logic for:\n * - CLI argument parsing\n * - Fix"
  },
  {
    "path": "benchmarks/shared/scorer.ts",
    "chars": 333,
    "preview": "/**\n * Shared scorer — re-exports from harsh-critic scoring module.\n *\n * The harsh-critic scorer is the reference imple"
  },
  {
    "path": "benchmarks/shared/types.ts",
    "chars": 7793,
    "preview": "/**\n * Generalized Benchmark Scoring Types for Agent Evaluation\n *\n * Extends the harsh-critic scoring types to support "
  },
  {
    "path": "bridge/cli.cjs",
    "chars": 2925245,
    "preview": "#!/usr/bin/env node\nconst importMetaUrl = require(\"url\").pathToFileURL(__filename);\n\"use strict\";\nvar __create = Object."
  },
  {
    "path": "bridge/gyoshu_bridge.py",
    "chars": 28933,
    "preview": "#!/usr/bin/env python3\n\"\"\"Gyoshu Python Bridge - JSON-RPC 2.0 over Unix Socket (or TCP on Windows).\n\nThis bridge provide"
  },
  {
    "path": "bridge/mcp-server.cjs",
    "chars": 877116,
    "preview": "#!/usr/bin/env node\n\n// Resolve global npm modules for native package imports\ntry {\n  var _cp = require('child_process')"
  },
  {
    "path": "bridge/run-mcp-server.sh",
    "chars": 445,
    "preview": "#!/bin/bash\n# MCP Server wrapper that ensures global npm modules are resolvable\n# This enables @ast-grep/napi and other "
  },
  {
    "path": "bridge/runtime-cli.cjs",
    "chars": 225710,
    "preview": "\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnP"
  },
  {
    "path": "bridge/team-bridge.cjs",
    "chars": 73439,
    "preview": "\n// Resolve global npm modules for native package imports\ntry {\n  var _cp = require('child_process');\n  var _Module = re"
  },
  {
    "path": "bridge/team-mcp.cjs",
    "chars": 651824,
    "preview": "#!/usr/bin/env node\n\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropD"
  },
  {
    "path": "bridge/team.js",
    "chars": 281881,
    "preview": "var __defProp = Object.defineProperty;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __esm = (fn, res) => func"
  },
  {
    "path": "dist/__tests__/agent-boundary-guidance.test.d.ts",
    "chars": 69,
    "preview": "export {};\n//# sourceMappingURL=agent-boundary-guidance.test.d.ts.map"
  },
  {
    "path": "dist/__tests__/agent-boundary-guidance.test.js",
    "chars": 3227,
    "preview": "import { describe, expect, it } from \"vitest\";\nimport { exploreAgent, EXPLORE_PROMPT_METADATA } from \"../agents/explore."
  },
  {
    "path": "dist/__tests__/agent-registry.test.d.ts",
    "chars": 60,
    "preview": "export {};\n//# sourceMappingURL=agent-registry.test.d.ts.map"
  },
  {
    "path": "dist/__tests__/agent-registry.test.js",
    "chars": 4480,
    "preview": "import { beforeEach, afterEach, describe, test, expect } from 'vitest';\nimport * as fs from 'fs';\nimport * as path from "
  },
  {
    "path": "dist/__tests__/auto-slash-aliases.test.d.ts",
    "chars": 64,
    "preview": "export {};\n//# sourceMappingURL=auto-slash-aliases.test.d.ts.map"
  },
  {
    "path": "dist/__tests__/auto-slash-aliases.test.js",
    "chars": 9375,
    "preview": "import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';\nimport { mkdirSync, rmSync, writeFileSync } fr"
  },
  {
    "path": "dist/__tests__/auto-update.test.d.ts",
    "chars": 57,
    "preview": "export {};\n//# sourceMappingURL=auto-update.test.d.ts.map"
  },
  {
    "path": "dist/__tests__/auto-update.test.js",
    "chars": 33882,
    "preview": "import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';\nvi.mock('child_process', () => ({\n    execSync"
  },
  {
    "path": "dist/__tests__/auto-upgrade-prompt.test.d.ts",
    "chars": 65,
    "preview": "export {};\n//# sourceMappingURL=auto-upgrade-prompt.test.d.ts.map"
  },
  {
    "path": "dist/__tests__/auto-upgrade-prompt.test.js",
    "chars": 3215,
    "preview": "import { describe, it, expect, vi, beforeEach } from 'vitest';\nvi.mock('child_process', () => ({\n    execSync: vi.fn(),\n"
  },
  {
    "path": "dist/__tests__/bash-history.test.d.ts",
    "chars": 117,
    "preview": "/**\n * Tests for bash history integration (issue #290)\n */\nexport {};\n//# sourceMappingURL=bash-history.test.d.ts.map"
  },
  {
    "path": "dist/__tests__/bash-history.test.js",
    "chars": 3130,
    "preview": "/**\n * Tests for bash history integration (issue #290)\n */\nimport { describe, it, expect, afterEach } from 'vitest';\nimp"
  },
  {
    "path": "dist/__tests__/bedrock-lm-suffix-hook.test.d.ts",
    "chars": 1181,
    "preview": "/**\n * Tests for the forceInherit hook's handling of [1m]-suffixed Bedrock model IDs.\n *\n * These tests verify the decis"
  },
  {
    "path": "dist/__tests__/bedrock-lm-suffix-hook.test.js",
    "chars": 11493,
    "preview": "/**\n * Tests for the forceInherit hook's handling of [1m]-suffixed Bedrock model IDs.\n *\n * These tests verify the decis"
  },
  {
    "path": "dist/__tests__/bedrock-model-routing.test.d.ts",
    "chars": 1053,
    "preview": "/**\n * Repro test for Bedrock model routing bug\n *\n * Bug: On Bedrock, workers get model ID \"claude-sonnet-4-6\" (bare bu"
  },
  {
    "path": "dist/__tests__/bedrock-model-routing.test.js",
    "chars": 21605,
    "preview": "/**\n * Repro test for Bedrock model routing bug\n *\n * Bug: On Bedrock, workers get model ID \"claude-sonnet-4-6\" (bare bu"
  },
  {
    "path": "dist/__tests__/cleanup-validation.test.d.ts",
    "chars": 64,
    "preview": "export {};\n//# sourceMappingURL=cleanup-validation.test.d.ts.map"
  },
  {
    "path": "dist/__tests__/cleanup-validation.test.js",
    "chars": 2582,
    "preview": "import { describe, it, expect } from 'vitest';\ndescribe('Cleanup Validation', () => {\n    it('omc-plan skill resolves co"
  },
  {
    "path": "dist/__tests__/cli-config-stop-callback.test.d.ts",
    "chars": 70,
    "preview": "export {};\n//# sourceMappingURL=cli-config-stop-callback.test.d.ts.map"
  },
  {
    "path": "dist/__tests__/cli-config-stop-callback.test.js",
    "chars": 6531,
    "preview": "import { describe, it, expect } from 'vitest';\nimport { mkdtempSync, writeFileSync, readFileSync, mkdirSync } from 'fs';"
  },
  {
    "path": "dist/__tests__/cli-interop-flags.test.d.ts",
    "chars": 63,
    "preview": "export {};\n//# sourceMappingURL=cli-interop-flags.test.d.ts.map"
  },
  {
    "path": "dist/__tests__/cli-interop-flags.test.js",
    "chars": 1791,
    "preview": "import { describe, expect, it } from 'vitest';\nimport { readInteropRuntimeFlags, validateInteropRuntimeFlags } from '../"
  },
  {
    "path": "dist/__tests__/cli-notify-profile.test.d.ts",
    "chars": 64,
    "preview": "export {};\n//# sourceMappingURL=cli-notify-profile.test.d.ts.map"
  },
  {
    "path": "dist/__tests__/cli-notify-profile.test.js",
    "chars": 10326,
    "preview": "import { describe, it, expect } from 'vitest';\nimport { mkdtempSync, writeFileSync, readFileSync, mkdirSync } from 'fs';"
  },
  {
    "path": "dist/__tests__/cli-win32-warning.test.d.ts",
    "chars": 63,
    "preview": "export {};\n//# sourceMappingURL=cli-win32-warning.test.d.ts.map"
  },
  {
    "path": "dist/__tests__/cli-win32-warning.test.js",
    "chars": 2722,
    "preview": "import { describe, it, expect, afterEach, vi, beforeEach } from 'vitest';\nvi.mock('child_process', () => ({\n    spawnSyn"
  },
  {
    "path": "dist/__tests__/compact-denylist.test.d.ts",
    "chars": 356,
    "preview": "/**\n * Tests for issue #830: \"Skill compact is not a prompt-based skill\"\n *\n * When Claude Code triggers context compact"
  },
  {
    "path": "dist/__tests__/compact-denylist.test.js",
    "chars": 1130,
    "preview": "/**\n * Tests for issue #830: \"Skill compact is not a prompt-based skill\"\n *\n * When Claude Code triggers context compact"
  },
  {
    "path": "dist/__tests__/config-force-inherit-env.test.d.ts",
    "chars": 160,
    "preview": "/**\n * Tests for OMC_ROUTING_FORCE_INHERIT environment variable support (issue #1135)\n */\nexport {};\n//# sourceMappingUR"
  },
  {
    "path": "dist/__tests__/config-force-inherit-env.test.js",
    "chars": 1374,
    "preview": "/**\n * Tests for OMC_ROUTING_FORCE_INHERIT environment variable support (issue #1135)\n */\nimport { describe, it, expect,"
  },
  {
    "path": "dist/__tests__/consensus-execution-handoff.test.d.ts",
    "chars": 781,
    "preview": "/**\n * Issue #595: Consensus mode execution handoff regression tests\n * Issue #600: User feedback step between Planner a"
  },
  {
    "path": "dist/__tests__/consensus-execution-handoff.test.js",
    "chars": 10919,
    "preview": "/**\n * Issue #595: Consensus mode execution handoff regression tests\n * Issue #600: User feedback step between Planner a"
  },
  {
    "path": "dist/__tests__/consolidation-contracts.test.d.ts",
    "chars": 69,
    "preview": "export {};\n//# sourceMappingURL=consolidation-contracts.test.d.ts.map"
  },
  {
    "path": "dist/__tests__/consolidation-contracts.test.js",
    "chars": 5024,
    "preview": "import { beforeEach, describe, expect, it } from 'vitest';\nimport { clearSkillsCache, getBuiltinSkill, listBuiltinSkillN"
  },
  {
    "path": "dist/__tests__/context-guard-stop.test.d.ts",
    "chars": 64,
    "preview": "export {};\n//# sourceMappingURL=context-guard-stop.test.d.ts.map"
  },
  {
    "path": "dist/__tests__/context-guard-stop.test.js",
    "chars": 3191,
    "preview": "import { execSync } from 'child_process';\nimport { mkdtempSync, rmSync, writeFileSync } from 'fs';\nimport { tmpdir } fro"
  },
  {
    "path": "dist/__tests__/context-safety.test.d.ts",
    "chars": 60,
    "preview": "export {};\n//# sourceMappingURL=context-safety.test.d.ts.map"
  },
  {
    "path": "dist/__tests__/context-safety.test.js",
    "chars": 3608,
    "preview": "import { execFileSync } from 'child_process';\nimport { mkdtempSync, readFileSync, rmSync, writeFileSync } from 'fs';\nimp"
  },
  {
    "path": "dist/__tests__/daemon-module-path.test.d.ts",
    "chars": 64,
    "preview": "export {};\n//# sourceMappingURL=daemon-module-path.test.d.ts.map"
  },
  {
    "path": "dist/__tests__/daemon-module-path.test.js",
    "chars": 1930,
    "preview": "import { describe, it, expect } from 'vitest';\nimport { resolveDaemonModulePath } from '../utils/daemon-module-path.js';"
  },
  {
    "path": "dist/__tests__/deep-interview-provider-options.test.d.ts",
    "chars": 77,
    "preview": "export {};\n//# sourceMappingURL=deep-interview-provider-options.test.d.ts.map"
  },
  {
    "path": "dist/__tests__/deep-interview-provider-options.test.js",
    "chars": 3615,
    "preview": "import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';\nconst availability = vi.hoisted(() => ({\n    c"
  },
  {
    "path": "dist/__tests__/delegation-enforcement-levels.test.d.ts",
    "chars": 363,
    "preview": "/**\n * Comprehensive tests for delegation enforcement hook implementation\n *\n * Tests: suggestAgentForFile, getEnforceme"
  },
  {
    "path": "dist/__tests__/delegation-enforcement-levels.test.js",
    "chars": 26577,
    "preview": "/**\n * Comprehensive tests for delegation enforcement hook implementation\n *\n * Tests: suggestAgentForFile, getEnforceme"
  },
  {
    "path": "dist/__tests__/delegation-enforcer-integration.test.d.ts",
    "chars": 431,
    "preview": "/**\n * Integration tests for delegation enforcer\n * Tests the entire flow from hook input to modified output\n *\n * NOTE:"
  },
  {
    "path": "dist/__tests__/delegation-enforcer-integration.test.js",
    "chars": 5835,
    "preview": "/**\n * Integration tests for delegation enforcer\n * Tests the entire flow from hook input to modified output\n *\n * NOTE:"
  },
  {
    "path": "dist/__tests__/delegation-enforcer.test.d.ts",
    "chars": 117,
    "preview": "/**\n * Tests for delegation enforcer middleware\n */\nexport {};\n//# sourceMappingURL=delegation-enforcer.test.d.ts.map"
  },
  {
    "path": "dist/__tests__/delegation-enforcer.test.js",
    "chars": 21828,
    "preview": "/**\n * Tests for delegation enforcer middleware\n */\nimport { describe, it, expect, beforeEach, afterEach } from 'vitest'"
  },
  {
    "path": "dist/__tests__/directory-context-injector.test.d.ts",
    "chars": 72,
    "preview": "export {};\n//# sourceMappingURL=directory-context-injector.test.d.ts.map"
  },
  {
    "path": "dist/__tests__/directory-context-injector.test.js",
    "chars": 10834,
    "preview": "/**\n * Tests for directory context injector (README.md + AGENTS.md)\n *\n * Validates that the directory-readme-injector c"
  },
  {
    "path": "dist/__tests__/disable-tools.test.d.ts",
    "chars": 270,
    "preview": "/**\n * Tests for OMC_DISABLE_TOOLS env var support\n *\n * Verifies that parseDisabledGroups() correctly maps user-facing "
  },
  {
    "path": "dist/__tests__/disable-tools.test.js",
    "chars": 9462,
    "preview": "/**\n * Tests for OMC_DISABLE_TOOLS env var support\n *\n * Verifies that parseDisabledGroups() correctly maps user-facing "
  },
  {
    "path": "dist/__tests__/doctor-conflicts.test.d.ts",
    "chars": 233,
    "preview": "/**\n * Tests for doctor-conflicts command (issue #606)\n *\n * Verifies that OMC-managed hooks are correctly classified as"
  },
  {
    "path": "dist/__tests__/doctor-conflicts.test.js",
    "chars": 23024,
    "preview": "/**\n * Tests for doctor-conflicts command (issue #606)\n *\n * Verifies that OMC-managed hooks are correctly classified as"
  },
  {
    "path": "dist/__tests__/featured-contributors-generator.test.d.ts",
    "chars": 77,
    "preview": "export {};\n//# sourceMappingURL=featured-contributors-generator.test.d.ts.map"
  },
  {
    "path": "dist/__tests__/featured-contributors-generator.test.js",
    "chars": 5439,
    "preview": "import { describe, expect, it } from 'vitest';\nimport { FEATURED_CONTRIBUTORS_END_MARKER, FEATURED_CONTRIBUTORS_START_MA"
  },
  {
    "path": "dist/__tests__/file-lock.test.d.ts",
    "chars": 55,
    "preview": "export {};\n//# sourceMappingURL=file-lock.test.d.ts.map"
  },
  {
    "path": "dist/__tests__/file-lock.test.js",
    "chars": 10200,
    "preview": "import { describe, it, expect, beforeEach, afterEach } from 'vitest';\nimport { mkdirSync, rmSync, existsSync, readFileSy"
  },
  {
    "path": "dist/__tests__/helpers/prompt-test-helpers.d.ts",
    "chars": 313,
    "preview": "export declare const STANDARD_MISSING_PROMPT_ERROR = \"Either 'prompt' (inline) or 'prompt_file' (file path) is required\""
  },
  {
    "path": "dist/__tests__/helpers/prompt-test-helpers.js",
    "chars": 420,
    "preview": "import { expect } from 'vitest';\nexport const STANDARD_MISSING_PROMPT_ERROR = \"Either 'prompt' (inline) or 'prompt_file'"
  },
  {
    "path": "dist/__tests__/hooks/learner/bridge.test.d.ts",
    "chars": 291,
    "preview": "/**\n * Integration tests for Skill Bridge Module\n *\n * Tests the bridge API used by skill-injector.mjs for:\n * - Skill f"
  }
]

// ... and 2659 more files (download for full content)

About this extraction

This page contains the full source code of the Yeachan-Heo/oh-my-claudecode GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2859 files (21.9 MB), approximately 5.9M tokens, and a symbol index with 17568 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!