# Extension index

This index is maintained manually. The active list is checked against
`package.json#pi.extensions` and `extensions/*/manifest.json`; disabled entries
remain documented so their code is not mistaken for default behavior.

## Active by default

| Extension | Decision | Risk | Commands | Tools | Hooks | Summary | Entrypoint |
|---|---|---|---|---|---|---|---|
| ask-user-question | compat-wrapper | medium | none | `ask`, `askUserQuestion` | none | Активный OMP-compatible human-in-the-loop tool; legacy `askUserQuestion` сохранен как alias. | ./extensions/ask-user-question/index.ts |
| ast-structural-edit | compat-wrapper | high | none | `ast_grep`, `ast_edit`, `resolve`, `ast_apply` | none | Активный OMP-shaped AST wrapper: `ast_grep` ищет, `ast_edit` строит preview, `resolve` применяет или отклоняет его. | ./extensions/ast-structural-edit/index.ts |
| devext-doctor | keep | low | `devext` | none | none | Показывает reduced default surface, OMP-port backlog и базовый health/status установленного extension-пакета. | ./extensions/devext-doctor/index.ts |
| model-roles | compat-wrapper | medium | `models`, `model-roles` | none | none | Активный OMP-style model selector wrapper: `/models` открывает temporary selection, `/models status` показывает список, `/models assign` пишет `modelRoles`. | ./extensions/model-roles/index.ts |
| todo-context | compat-wrapper | medium | `todo` | `todo_write` | none | Активный OMP-style todo wrapper: `todo_write` меняет session-backed phases, `/todo` показывает и редактирует тот же список. | ./extensions/todo-context/index.ts |

## Disabled by default pending OMP-based rewrite

| Extension | Decision | OMP/Miloc ownership | Reason |
|---|---|---|---|
| hello-tool | fixture-only | Miloc-specific test fixture. | Isolated registration/TypeBox smoke fixture; не входит в default package surface. |
| goal | OMP-port-backlog | OMP goal lifecycle owns the target behavior unless Miloc task-backed goals prove distinct. | Локальная hidden context injection отключена; `goal`/`goalSet` fail-closed до порта OMP `GoalRuntime`. |
| plan | OMP-port-backlog | OMP plan mode owns the target state machine. | Локальный write-blocking mode engine отключен; `/plan`/`planMode` fail-closed до порта OMP plan mode. |
| loop | disabled | OMP loop mode should own automatic continuation. | Local auto-follow-up engine удален; `/loop`/`loopControl` report-only/fail-closed до порта OMP loop mode. |
| tools-ast-grep | OMP-port-backlog | OMP `ast_grep` owns search behavior. | Нужен общий AST protocol с OMP source evidence. |
| tools-ast-edit | OMP-port-backlog | OMP `ast_edit` owns preview behavior. | Docs должны объяснять preview-first contract до implementation. |
| tools-ast-apply | compat-wrapper | OMP hidden generic `resolve` owns apply/discard. | Локальная версия теперь регистрирует `resolve`; standalone `ast_apply` оставлен legacy alias. |
| tools-lsp | OMP-port-backlog | OMP LSP stack owns real code intelligence. | Regex/file-scan helper удален; `lsp` fail-closed до порта OMP LSP stack. |
| agents | OMP-port-backlog | OMP `task` owns real subagent execution. | Локальный synthetic execution отключен; `task`/`runAgent` fail-closed до порта OMP `TaskTool`. |
| tool-router | compat-wrapper | OMP `/tools` and active-tool runtime APIs own tool selection. | `/tools` теперь inspect-first, explicit preset switch идет через `setActiveTools`; остается disabled до runtime proof. |
| security-gate | disabled | OMP approval policy should own enforcement. | Локальный blocking hook отключен; `/security-audit` report-only до порта OMP approval policy. |
| dynamic-loader | disabled | OMP plugin loader/marketplace concepts should own discovery/install. | `apply`/`rollback` fail-closed; read-only catalog до порта OMP plugin manager/marketplace. |
| browser | disabled | OMP browser tool owns real browser automation. | Mock driver удален; local tool fail-closed до порта OMP `BrowserTool`. |
| live-terminal | redesign-later | OMP bash/job/PTY events should own process-log data. | Lifecycle observer удален; `/live` report-only до порта OMP bash/job/PTY streaming. |
| tools-debug | disabled | OMP DAP debug should own real debugger behavior. | Local Node subprocess wrapper удален; `debug` fail-closed до порта OMP DAP debug tool. |
| tools-dev-context | disabled | No bundle owner. | Mixed shell/eval/job/checkpoint bundle fail-closed; конкретные pieces надо портировать отдельно как OMP-backed plugins. |

## Deleted during cleanup

| Extension | Decision | Reason |
|---|---|---|
| hello | delete | command-only SDK smoke; дублирует проверку загрузки пакета и не решает рабочую задачу miloc-pi. |
| hello-command | delete | учебный slash-command пример; отдельный command demo не нужен после переноса smoke-проверки в isolated tests. |
| lifecycle-trace | delete | observer пересекается с прежней `live-terminal` идеей и не доказывает ожидаемый process-log behavior. |
| session-state-demo | delete | demo кода для appendEntry/getEntries; regression ценность покрывается реальными task/plugin artifacts. |
