mister-wolf 2.16.3 → 2.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/README.md +24 -11
  2. package/README.ru.md +25 -14
  3. package/dist/adapters/cli/cli-entry.d.ts.map +1 -1
  4. package/dist/adapters/cli/cli-entry.js +25 -0
  5. package/dist/adapters/cli/cli-entry.js.map +1 -1
  6. package/dist/adapters/cli/commands/claim.d.ts +6 -0
  7. package/dist/adapters/cli/commands/claim.d.ts.map +1 -0
  8. package/dist/adapters/cli/commands/claim.js +65 -0
  9. package/dist/adapters/cli/commands/claim.js.map +1 -0
  10. package/dist/adapters/cli/commands/face.d.ts +3 -0
  11. package/dist/adapters/cli/commands/face.d.ts.map +1 -0
  12. package/dist/adapters/cli/commands/face.js +227 -0
  13. package/dist/adapters/cli/commands/face.js.map +1 -0
  14. package/dist/adapters/cli/commands/memory-add.d.ts.map +1 -1
  15. package/dist/adapters/cli/commands/memory-add.js +1 -1
  16. package/dist/adapters/cli/commands/memory-add.js.map +1 -1
  17. package/dist/adapters/cli/commands/memory-doctor.d.ts +20 -0
  18. package/dist/adapters/cli/commands/memory-doctor.d.ts.map +1 -1
  19. package/dist/adapters/cli/commands/memory-doctor.js +123 -7
  20. package/dist/adapters/cli/commands/memory-doctor.js.map +1 -1
  21. package/dist/adapters/cli/commands/memory-edit.d.ts.map +1 -1
  22. package/dist/adapters/cli/commands/memory-edit.js +6 -52
  23. package/dist/adapters/cli/commands/memory-edit.js.map +1 -1
  24. package/dist/adapters/cli/commands/memory-init.d.ts.map +1 -1
  25. package/dist/adapters/cli/commands/memory-init.js +37 -54
  26. package/dist/adapters/cli/commands/memory-init.js.map +1 -1
  27. package/dist/adapters/cli/commands/memory-list.d.ts.map +1 -1
  28. package/dist/adapters/cli/commands/memory-list.js +1 -1
  29. package/dist/adapters/cli/commands/memory-list.js.map +1 -1
  30. package/dist/adapters/cli/commands/memory-scaffold.d.ts.map +1 -1
  31. package/dist/adapters/cli/commands/memory-scaffold.js +2 -1
  32. package/dist/adapters/cli/commands/memory-scaffold.js.map +1 -1
  33. package/dist/adapters/cli/commands/memory-search.d.ts.map +1 -1
  34. package/dist/adapters/cli/commands/memory-search.js +1 -1
  35. package/dist/adapters/cli/commands/memory-search.js.map +1 -1
  36. package/dist/adapters/cli/commands/memory-sync.js +1 -1
  37. package/dist/adapters/cli/commands/memory-sync.js.map +1 -1
  38. package/dist/adapters/cli/commands/propose.d.ts +3 -0
  39. package/dist/adapters/cli/commands/propose.d.ts.map +1 -0
  40. package/dist/adapters/cli/commands/propose.js +94 -0
  41. package/dist/adapters/cli/commands/propose.js.map +1 -0
  42. package/dist/adapters/cli/type-command-generator.d.ts.map +1 -1
  43. package/dist/adapters/cli/type-command-generator.js +2 -0
  44. package/dist/adapters/cli/type-command-generator.js.map +1 -1
  45. package/dist/adapters/fs/claim-registry.d.ts +85 -0
  46. package/dist/adapters/fs/claim-registry.d.ts.map +1 -0
  47. package/dist/adapters/fs/claim-registry.js +276 -0
  48. package/dist/adapters/fs/claim-registry.js.map +1 -0
  49. package/dist/adapters/fs/memory-root.d.ts +26 -1
  50. package/dist/adapters/fs/memory-root.d.ts.map +1 -1
  51. package/dist/adapters/fs/memory-root.js +88 -2
  52. package/dist/adapters/fs/memory-root.js.map +1 -1
  53. package/dist/app/use-cases/add-memory-object.d.ts +5 -0
  54. package/dist/app/use-cases/add-memory-object.d.ts.map +1 -1
  55. package/dist/app/use-cases/add-memory-object.js +24 -5
  56. package/dist/app/use-cases/add-memory-object.js.map +1 -1
  57. package/dist/app/use-cases/claim-artifact.d.ts +31 -0
  58. package/dist/app/use-cases/claim-artifact.d.ts.map +1 -0
  59. package/dist/app/use-cases/claim-artifact.js +38 -0
  60. package/dist/app/use-cases/claim-artifact.js.map +1 -0
  61. package/dist/app/use-cases/create-face-version.d.ts +101 -0
  62. package/dist/app/use-cases/create-face-version.d.ts.map +1 -0
  63. package/dist/app/use-cases/create-face-version.js +100 -0
  64. package/dist/app/use-cases/create-face-version.js.map +1 -0
  65. package/dist/app/use-cases/create-mutation-record.d.ts +55 -0
  66. package/dist/app/use-cases/create-mutation-record.d.ts.map +1 -0
  67. package/dist/app/use-cases/create-mutation-record.js +78 -0
  68. package/dist/app/use-cases/create-mutation-record.js.map +1 -0
  69. package/dist/app/use-cases/deliver-proposal.d.ts +26 -0
  70. package/dist/app/use-cases/deliver-proposal.d.ts.map +1 -0
  71. package/dist/app/use-cases/deliver-proposal.js +35 -0
  72. package/dist/app/use-cases/deliver-proposal.js.map +1 -0
  73. package/dist/app/use-cases/edit-memory-object.d.ts +26 -0
  74. package/dist/app/use-cases/edit-memory-object.d.ts.map +1 -0
  75. package/dist/app/use-cases/edit-memory-object.js +57 -0
  76. package/dist/app/use-cases/edit-memory-object.js.map +1 -0
  77. package/dist/app/use-cases/face-operation.d.ts +81 -0
  78. package/dist/app/use-cases/face-operation.d.ts.map +1 -0
  79. package/dist/app/use-cases/face-operation.js +503 -0
  80. package/dist/app/use-cases/face-operation.js.map +1 -0
  81. package/dist/app/use-cases/get-call-injections.d.ts +12 -1
  82. package/dist/app/use-cases/get-call-injections.d.ts.map +1 -1
  83. package/dist/app/use-cases/get-call-injections.js +73 -12
  84. package/dist/app/use-cases/get-call-injections.js.map +1 -1
  85. package/dist/app/use-cases/migrate-faces.d.ts +81 -0
  86. package/dist/app/use-cases/migrate-faces.d.ts.map +1 -0
  87. package/dist/app/use-cases/migrate-faces.js +267 -0
  88. package/dist/app/use-cases/migrate-faces.js.map +1 -0
  89. package/dist/app/use-cases/promote-memory.d.ts +14 -1
  90. package/dist/app/use-cases/promote-memory.d.ts.map +1 -1
  91. package/dist/app/use-cases/promote-memory.js +36 -5
  92. package/dist/app/use-cases/promote-memory.js.map +1 -1
  93. package/dist/app/use-cases/record-relation.d.ts.map +1 -1
  94. package/dist/app/use-cases/record-relation.js +6 -0
  95. package/dist/app/use-cases/record-relation.js.map +1 -1
  96. package/dist/app/use-cases/save-proposal.d.ts +49 -0
  97. package/dist/app/use-cases/save-proposal.d.ts.map +1 -0
  98. package/dist/app/use-cases/save-proposal.js +32 -0
  99. package/dist/app/use-cases/save-proposal.js.map +1 -0
  100. package/dist/app/use-cases/scaffold-agent.d.ts.map +1 -1
  101. package/dist/app/use-cases/scaffold-agent.js +20 -52
  102. package/dist/app/use-cases/scaffold-agent.js.map +1 -1
  103. package/dist/app/use-cases/scaffold-artifact.d.ts +5 -0
  104. package/dist/app/use-cases/scaffold-artifact.d.ts.map +1 -1
  105. package/dist/app/use-cases/scaffold-artifact.js +2 -0
  106. package/dist/app/use-cases/scaffold-artifact.js.map +1 -1
  107. package/dist/app/use-cases/seed-base-playbooks.d.ts +17 -96
  108. package/dist/app/use-cases/seed-base-playbooks.d.ts.map +1 -1
  109. package/dist/app/use-cases/seed-base-playbooks.js +77 -32
  110. package/dist/app/use-cases/seed-base-playbooks.js.map +1 -1
  111. package/dist/app/use-cases/supersede-memory-object.d.ts +3 -1
  112. package/dist/app/use-cases/supersede-memory-object.d.ts.map +1 -1
  113. package/dist/app/use-cases/supersede-memory-object.js +8 -1
  114. package/dist/app/use-cases/supersede-memory-object.js.map +1 -1
  115. package/dist/app/use-cases/transition-memory-object.d.ts.map +1 -1
  116. package/dist/app/use-cases/transition-memory-object.js +6 -0
  117. package/dist/app/use-cases/transition-memory-object.js.map +1 -1
  118. package/dist/domain/facet-colors.d.ts.map +1 -1
  119. package/dist/domain/facet-colors.js +1 -0
  120. package/dist/domain/facet-colors.js.map +1 -1
  121. package/dist/domain/memory-types.d.ts +36 -1
  122. package/dist/domain/memory-types.d.ts.map +1 -1
  123. package/dist/domain/memory-types.js +36 -2
  124. package/dist/domain/memory-types.js.map +1 -1
  125. package/dist/domain/schemas/memory-event-schema.d.ts +8 -0
  126. package/dist/domain/schemas/memory-event-schema.d.ts.map +1 -1
  127. package/dist/domain/schemas/memory-event-schema.js +42 -1
  128. package/dist/domain/schemas/memory-event-schema.js.map +1 -1
  129. package/dist/domain/schemas/relation-schema.d.ts +6 -2
  130. package/dist/domain/schemas/relation-schema.d.ts.map +1 -1
  131. package/dist/domain/schemas/relation-schema.js +8 -0
  132. package/dist/domain/schemas/relation-schema.js.map +1 -1
  133. package/dist/domain/schemas/session-checkpoint-schema.d.ts +1 -1
  134. package/dist/domain/type-schema-builder.d.ts +4 -2
  135. package/dist/domain/type-schema-builder.d.ts.map +1 -1
  136. package/dist/domain/type-schema-builder.js +32 -1
  137. package/dist/domain/type-schema-builder.js.map +1 -1
  138. package/package.json +1 -1
  139. package/templates/.wolf/router.log +1 -1
  140. package/templates/base/agents/steward.md +9 -6
  141. package/templates/base/playbooks/complaint-protocol.md +1 -1
  142. package/templates/base/playbooks/steward-nastavnik.md +36 -17
  143. package/templates/opencode/plugins/wolf-router.ts +60 -10
package/README.md CHANGED
@@ -34,19 +34,28 @@ Mr. Wolf is a permanent project organization assembled from temporary AI agents:
34
34
  > [!WARNING]
35
35
  > The package is named **`mister-wolf`** ([on npm](https://www.npmjs.com/package/mister-wolf)) — exactly that. The `mr-wolf` package on npm **belongs to someone else** (a work-queue library): `npm install mr-wolf` installs third-party code and runs its install scripts. Check the name letter by letter before installing.
36
36
 
37
- Installation is three commands:
37
+ Installation is the binary plus one of two explicit paths:
38
38
 
39
39
  ```bash
40
40
  npm install -g mister-wolf # 1) машина: бинарь wolf (уровень 0)
41
- cd my-project && wolf init # 2) проект: скелет .wolf/ + MCP-конфиги платформ
42
- wolf bootstrap # 3) память: стартовое наполнение из документов проекта
43
41
  ```
44
42
 
45
- After `wolf init` **restart your agent platform** — the Wolf MCP server connects at startup. Claude Code will ask you to approve the project-scope MCP server on first start — that is expected.
43
+ ```bash
44
+ # Путь А — память: минимальный набор
45
+ cd my-project && wolf init # скелет .wolf/ + AGENTS.md; без платформенных конфигов и базового сета
46
+ wolf bootstrap # память: стартовое наполнение из документов проекта
47
+
48
+ # Путь Б — организация OpenCode: полный базовый набор + MCP
49
+ cd my-project && wolf init --full --platform opencode
50
+ wolf bootstrap
51
+ ```
46
52
 
47
- - **Try it without installing:** `npx mister-wolf init` — creates project memory but never writes MCP configs (try-out mode). Like it? `npm install -g mister-wolf` and run `wolf init` again.
48
- - **Updating:** `wolf upgrade` — compares the installed version with the npm registry and runs `npm install -g mister-wolf@latest` (`--check` only reports, dev/linked installs are refused honestly). Manual path: `npm i -g mister-wolf@latest`.
49
- - **Platforms v1:** opencode, Claude Code. Platform MCP configs are opt-in: `wolf init --platform opencode,claude` (the list replaces the current set); without the flag no platform configs are written. If no platform markers are found, init warns you honestly and suggests `--platform`.
53
+ - **Path A — memory:** `wolf init` connects the project minimally — the `.wolf/` skeleton and `AGENTS.md`; it writes no platform configs and no base set. What a clean run prints: `memory skeleton: ensured`, `base set: AGENTS.md created`, the init-report id.
54
+ - **Path B — OpenCode organization:** `wolf init --full --platform opencode` renders the full base set (6 agent frames, 19 skills, 3 commands, 2 plugins, seeded playbook faces) and writes `opencode.json` (`mcp.wolf`, `default_agent=mr-wolf`, `subagent_depth=2`). **Restart opencode** after it — the MCP server and the default agent connect at startup. Claude Code will ask you to approve the project-scope MCP server on first start — that is expected.
55
+
56
+ - **Try it without installing:** `npx mister-wolf init` — try-out mode: creates the `.wolf/` memory skeleton but never writes MCP configs or the base set. Like it? `npm install -g mister-wolf` and run `wolf init` again.
57
+ - **Updating:** `wolf upgrade` — compares the installed version with the npm registry and runs `npm install -g mister-wolf@latest` (`--check` only reports, dev/linked installs are refused honestly). Manual path: `npm i -g mister-wolf@latest`. After updating, re-run `wolf init --yes` in your projects: base-set templates and seeded faces update through re-init (`wolf sync` never touches memory).
58
+ - **Platforms v1:** opencode, Claude Code. Platform MCP configs are opt-in: `wolf init --platform opencode,claude` (the list replaces the current set); without the flag no platform configs are written.
50
59
  - **First run without barriers:** `wolf init` decides nothing for you — a minimal file set by default (`--full` for the complete base set), one interview question in a TTY (Enter to skip), no model pinning (`--model` is opt-in; model lines are omitted and the platform default applies). Re-init on a live project shows the plan and needs a confirmation (`--yes` skips it).
51
60
  - **OS/runtime:** macOS and Linux (glibc) on Node 22/24. Alpine/musl is not supported in v1; Windows is best-effort, not claimed. The native dependency better-sqlite3 installs from prebuilds — that is the dependency's own behavior; mister-wolf ships no install scripts of its own.
52
61
  - **If installation fails on better-sqlite3 — two different situations:**
@@ -54,7 +63,7 @@ After `wolf init` **restart your agent platform** — the Wolf MCP server connec
54
63
  `gyp ERR!` / `node-gyp` / a from-source build failed — there is no prebuild for your Node version or it did not download. Install the node-gyp prerequisites (python3, make, a C++ toolchain) and retry `npm rebuild better-sqlite3` — this one is fixable, unlike musl.
55
64
  - **Dev path (from a cloned repo):** `npm install && npm run build`, then `alias wolf="node dist/bootstrap/cli.js"`. With a global `mister-wolf` installed at the same time, mind PATH shadowing: which `wolf` runs is decided by the order of directories in your PATH. npm also carries a third-party `wolf` package (Wolfram CLI) — installing both globally conflicts over the binary name and resolves by the same PATH order.
56
65
 
57
- Connecting an agent is one command: `wolf scaffold agent <name>` creates a thin frame in `.opencode/agents/<name>.md`, a playbook object in memory, and a relation between them. Playbook delivery into the session is done by the `.opencode/plugins/wolf-router.ts` plugin — see [Integrations](#integrations).
66
+ Connecting an agent is one command: `wolf scaffold agent <name>` creates a thin frame in `.opencode/agents/<name>.md`, a face — the agent's playbook as a versioned memory object — and a relation between them. Playbook delivery into the session is done by the `.opencode/plugins/wolf-router.ts` plugin — see [Integrations](#integrations).
58
67
 
59
68
  `bootstrap` finishes by invoking the Steward to fold the startup-memory drafts — protocol: [steward bootstrap (RU)](docs/guide/steward-bootstrap.md).
60
69
 
@@ -83,7 +92,7 @@ Details: [architecture guide (RU)](docs/guide/architecture.md) · [concept v3 (R
83
92
 
84
93
  ### Memory
85
94
 
86
- Everything is memory: 7 core types (`rule`, `lesson`, `decision`, `thread`, `complaint`, `tool`, `note`) plus facets, versions, relations, attribution.
95
+ Everything is memory: 8 core types (`rule`, `lesson`, `decision`, `thread`, `complaint`, `tool`, `note`, `face`) plus facets, versions, relations, attribution. A `face` is an agent's playbook as its own versioned type — new versions via `wolf face` (the Steward's mutations leave a structured mutation record), emergency owner rollback via `wolf face breakglass`; structured proposals travel as `wolf propose`.
87
96
 
88
97
  ```bash
89
98
  wolf add --type lesson --title "..." --body "..." --tags "vitest,ci" --confidence medium
@@ -123,9 +132,9 @@ Wolf works as a permanent project organization from temporary agents: a **coordi
123
132
 
124
133
  ### Agents
125
134
 
126
- - `wolf scaffold agent|skill|command <name>` — a platform frame + a playbook in memory + a relation, all in one command; `--persona` and `--model` for agents, `--from-playbook <id>` to reuse an existing playbook.
135
+ - `wolf scaffold agent|skill|command <name>` — a platform frame + a face (the agent's playbook) in memory + a relation, all in one command; `--persona` and `--model` for agents, `--from-playbook <id>` to reuse an existing playbook.
127
136
  - Playbook delivery is plugin injection into the system prompt (delivery layer #1): `.opencode/plugins/wolf-router.ts`.
128
- - **Steward** — the loop's background agent with faces: **Mentor** (methodology, handles complaints), **Librarian** (tools), **Archivist** (knowledge). A new face = a new playbook, not a new agent. Since 2.14 the Steward also aggregates mature lessons into single replacements — proposed, then owner-confirmed.
137
+ - **Steward** — the loop's background agent with faces: **Mentor** (methodology, handles complaints), **Librarian** (tools), **Archivist** (knowledge). A new face = a new playbook, not a new agent — since 2.17 a face is a core type: versioned through `wolf face` with a mandatory mutation record per Steward version, migratable from legacy playbook notes (`wolf face migrate`). Since 2.14 the Steward also aggregates mature lessons into single replacements — proposed, then owner-confirmed.
129
138
 
130
139
  ### Tools
131
140
 
@@ -151,6 +160,10 @@ The standalone self-learning pipeline (`wolf learn …`) was removed by owner de
151
160
  - `wolf task-eval --verdict accepted|rejected|partial|inconclusive` — task verdicts: acceptance, coverage, cost per accepted task; `--campaign` groups runs into A/B cohorts.
152
161
  - Benchmarks: `scripts/bench/` (b1-repeat-debug, b2-bootstrap, b3-retrospective).
153
162
 
163
+ ## Read isolation
164
+
165
+ Memory scoped to a linked worktree (`worktree:<id>`) is filtered on exactly one path — the delivery path, `wolf call`, in all modes (default, `--for <topic>`, `--thread <id>`); the MCP channel mirrors the CLI list and a `call` tool there would inherit the same isolation. Every other read — `wolf search`/`get`/`list`/`show`, `brief`, `recap`, `think`/`solve`, `doctor`, relation/analytics paths, `wolf face *` (faces filter by `owner_skill`, not scope) — sees the whole project memory. This composition is a frozen contract (NFR-03): extending it is a requirements change, guarded by a doc-test. Details: [Read Isolation](https://chekh.github.io/mister-wolf/guide/read-isolation).
166
+
154
167
  ## Demos
155
168
 
156
169
  Self-checking scenarios: `bash scripts/demo/scenario-N.sh`.
package/README.ru.md CHANGED
@@ -36,26 +36,33 @@ Mr. Wolf — постоянная проектная организация, с
36
36
  > библиотека): `npm install mr-wolf` поставит сторонний код и выполнит его install-скрипты.
37
37
  > Проверяй имя буква-в-букву перед установкой.
38
38
 
39
- Установка — три команды:
39
+ Установка — бинарь плюс один из двух явных путей:
40
40
 
41
41
  ```bash
42
42
  npm install -g mister-wolf # 1) машина: бинарь wolf (уровень 0)
43
- cd my-project && wolf init # 2) проект: скелет .wolf/ + MCP-конфиги платформ
44
- wolf bootstrap # 3) память: стартовое наполнение из документов проекта
45
43
  ```
46
44
 
47
- После `wolf init` **перезапусти агентскую платформу** — MCP-сервер Wolf подключается при старте.
48
- Claude Code при первом старте попросит approve project-scope MCP-сервер — это штатно.
45
+ ```bash
46
+ # Путь А — память: минимальный набор
47
+ cd my-project && wolf init # скелет .wolf/ + AGENTS.md; без платформенных конфигов и базового сета
48
+ wolf bootstrap # память: стартовое наполнение из документов проекта
49
+
50
+ # Путь Б — организация OpenCode: полный базовый набор + MCP
51
+ cd my-project && wolf init --full --platform opencode
52
+ wolf bootstrap
53
+ ```
49
54
 
50
- - **Попробовать без установки:** `npx mister-wolf init` — создаст память проекта, но никогда
51
- не пишет MCP-конфиги (try-out). Понравилось — `npm install -g mister-wolf` и повтори `wolf init`.
55
+ - **Путь А — память:** `wolf init` подключает проект минимально — скелет `.wolf/` и `AGENTS.md`; платформенные конфиги и базовый сет он не пишет. Что печатает чистый запуск: `memory skeleton: ensured`, `base set: AGENTS.md created`, id init-отчёта.
56
+ - **Путь Б — организация OpenCode:** `wolf init --full --platform opencode` отрисовывает полный базовый набор (6 рамок агентов, 19 скиллов, 3 команды, 2 плагина, посев playbook-лиц) и пишет `opencode.json` (`mcp.wolf`, `default_agent=mr-wolf`, `subagent_depth=2`). После него **перезапусти opencode** — MCP-сервер и агент по умолчанию подключаются при старте. Claude Code при первом старте попросит approve project-scope MCP-сервер — это штатно.
57
+
58
+ - **Попробовать без установки:** `npx mister-wolf init` — try-out-режим: создаёт скелет памяти `.wolf/`, но никогда не пишет ни MCP-конфиги, ни базовый сет. Понравилось — `npm install -g mister-wolf` и повтори `wolf init`.
52
59
  - **Обновление:** `wolf upgrade` — сравнит установленную версию с npm registry и выполнит
53
60
  `npm install -g mister-wolf@latest` (`--check` только сообщает; dev/linked-установке откажет честно).
54
- Вручную: `npm i -g mister-wolf@latest`.
61
+ Вручную: `npm i -g mister-wolf@latest`. После обновления пакета повтори `wolf init --yes` в проектах:
62
+ шаблоны базового сета и посеянные лица обновляются через re-init (`wolf sync` память не трогает).
55
63
  - **Платформы v1:** opencode, Claude Code. MCP-конфиги платформ — opt-in:
56
64
  `wolf init --platform opencode,claude` (список заменяет текущий набор); без флага платформенные
57
- конфиги не пишутся. Нет маркеров платформы —
58
- init честно предупредит и подскажет `--platform`.
65
+ конфиги не пишутся.
59
66
  - **Первый запуск без барьеров:** `wolf init` не принимает решений за тебя — минимальный набор
60
67
  файлов по умолчанию (`--full` — полный базовый набор), один вопрос интервью в терминале
61
68
  (Enter — пропустить), никакого пиннинга модели (`--model` — opt-in, строки модели опускаются —
@@ -76,7 +83,7 @@ Claude Code при первом старте попросит approve project-sc
76
83
  в PATH. В npm есть и чужой пакет `wolf` (Wolfram CLI) — глобальная установка обоих конфликтует
77
84
  за имя бинаря, разрешается тем же порядком PATH.
78
85
 
79
- Подключение агента — одна команда: `wolf scaffold agent <name>` создаёт тонкую рамку в `.opencode/agents/<name>.md`, playbook-объект в памяти и relation между ними. Доставку playbook'а в сессию выполняет плагин `.opencode/plugins/wolf-router.ts` — см. [Интеграции](#интеграции).
86
+ Подключение агента — одна команда: `wolf scaffold agent <name>` создаёт тонкую рамку в `.opencode/agents/<name>.md`, лицо — playbook агента как версионируемый объект памяти — и relation между ними. Доставку playbook'а в сессию выполняет плагин `.opencode/plugins/wolf-router.ts` — см. [Интеграции](#интеграции).
80
87
 
81
88
  `bootstrap` завершается вызовом Стюарда для свёртки черновиков стартовой памяти — протокол: [docs/guide/steward-bootstrap.md](docs/guide/steward-bootstrap.md).
82
89
 
@@ -105,7 +112,7 @@ Claude Code при первом старте попросит approve project-sc
105
112
 
106
113
  ### Память
107
114
 
108
- Всё есть память: 7 ключевых типов (`rule`, `lesson`, `decision`, `thread`, `complaint`, `tool`, `note`) плюс фасеты, версии, связи, атрибуция.
115
+ Всё есть память: 8 ключевых типов (`rule`, `lesson`, `decision`, `thread`, `complaint`, `tool`, `note`, `face`) плюс фасеты, версии, связи, атрибуция. `face` — playbook агента как отдельный версионируемый тип: новые версии через `wolf face` (мутация Стюарда оставляет структурную запись), аварийный откат владельцем — `wolf face breakglass`; структурированные предложения ходят через `wolf propose`.
109
116
 
110
117
  ```bash
111
118
  wolf add --type lesson --title "..." --body "..." --tags "vitest,ci" --confidence medium
@@ -145,9 +152,9 @@ Wolf работает как постоянная проектная орган
145
152
 
146
153
  ### Агенты
147
154
 
148
- - `wolf scaffold agent|skill|command <name>` — рамка платформы + playbook в памяти + relation одной командой; `--persona` и `--model` для агентов, `--from-playbook <id>` — переиспользовать существующий playbook.
155
+ - `wolf scaffold agent|skill|command <name>` — рамка платформы + лицо (playbook агента) в памяти + relation одной командой; `--persona` и `--model` для агентов, `--from-playbook <id>` — переиспользовать существующий playbook.
149
156
  - Доставка playbook'ов — плагин-инжекция в system-промпт (слой доставки №1): `.opencode/plugins/wolf-router.ts`.
150
- - **Стюард** — фоновый агент контура с лицами: **Наставник** (методики, по жалобам), **Библиотекарь** (инструменты), **Архивариус** (знания). Новое лицо = новый playbook, не новый агент. С 2.14 Стюард также агрегирует зрелые уроки в одну замену — proposed, подтверждение владельцем.
157
+ - **Стюард** — фоновый агент контура с лицами: **Наставник** (методики, по жалобам), **Библиотекарь** (инструменты), **Архивариус** (знания). Новое лицо = новый playbook, не новый агент — с 2.17 лицо это core-тип: версионируется через `wolf face` с обязательной записью мутации на каждую версию Стюарда, мигрируется из legacy playbook-заметок (`wolf face migrate`). С 2.14 Стюард также агрегирует зрелые уроки в одну замену — proposed, подтверждение владельцем.
151
158
 
152
159
  ### Инструменты
153
160
 
@@ -173,6 +180,10 @@ wolf tool revive check # deprecated → active
173
180
  - `wolf task-eval --verdict accepted|rejected|partial|inconclusive` — вердикты по задачам: acceptance, coverage, стоимость принятой задачи; `--campaign` группирует раны в A/B-когорты.
174
181
  - Бенчмарки: `scripts/bench/` (b1-repeat-debug, b2-bootstrap, b3-retrospective).
175
182
 
183
+ ## Изоляция чтения
184
+
185
+ Память со scope связанной рабочей копии (`worktree:<id>`) фильтруется ровно на одном пути — пути доставки, `wolf call`, во всех режимах (обычный, `--for <тема>`, `--thread <id>`); MCP-канал зеркалит CLI-список, и тул `call` там унаследовал бы ту же изоляцию. Все остальные чтения — `wolf search`/`get`/`list`/`show`, `brief`, `recap`, `think`/`solve`, `doctor`, relation/analytics-пути, `wolf face *` (лица фильтруются по `owner_skill`, не по scope) — видят всю память проекта. Этот состав — замороженный контракт (NFR-03): расширение = изменение требований, охраняется doc-тестом. Подробности: [Изоляция чтения](https://chekh.github.io/mister-wolf/ru/guide/read-isolation).
186
+
176
187
  ## Демо
177
188
 
178
189
  Самопроверяющиеся сценарии: `bash scripts/demo/scenario-N.sh`.
@@ -1 +1 @@
1
- {"version":3,"file":"cli-entry.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/cli-entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,MAAM,WAAW,CAAC;AA0BpD;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,qFAAqF;IACrF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kGAAkG;IAClG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,WAAW,EAmTjC,CAAC;AAEF,wBAAgB,SAAS,IAAI,OAAO,CAuFnC;AAED;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAQhC;AAED,mFAAmF;AACnF,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B1D"}
1
+ {"version":3,"file":"cli-entry.d.ts","sourceRoot":"","sources":["../../../src/adapters/cli/cli-entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,MAAM,WAAW,CAAC;AA0BpD;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,qFAAqF;IACrF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kGAAkG;IAClG,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,EAAE,WAAW,EA4UjC,CAAC;AAEF,wBAAgB,SAAS,IAAI,OAAO,CAuFnC;AAED;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAQhC;AAED,mFAAmF;AACnF,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B1D"}
@@ -251,6 +251,23 @@ export const COMMANDS = [
251
251
  usage: '',
252
252
  load: () => import('./type-command-generator.js').then((m) => m.typeNamespaceCommand('note')),
253
253
  },
254
+ {
255
+ // Волна 2.17 T-04: публичная группа версионирования лиц — живая команда,
256
+ // не генерённый type-неймспейс (face — не add/list-обёртка: new/restore/
257
+ // breakglass/history идут через createFaceVersion, REQ-03/05/07/10).
258
+ name: 'face',
259
+ description: 'Manage faces (versioned agent playbooks)',
260
+ usage: '',
261
+ load: () => import('./commands/face.js').then((m) => m.faceCommand()),
262
+ },
263
+ {
264
+ // Волна 2.17 T-09 (REQ-08/REQ-09): предложения — сигнал-фасет proposal;
265
+ // add/deliver/list — тонкие обёртки saveProposal/deliverProposal
266
+ name: 'propose',
267
+ description: 'Manage proposals: add/deliver/list (signal facet)',
268
+ usage: '',
269
+ load: () => import('./commands/propose.js').then((m) => m.proposeCommand()),
270
+ },
254
271
  {
255
272
  name: 'tool',
256
273
  description: 'Tool librarian: add/register/list/use/...',
@@ -324,6 +341,14 @@ export const COMMANDS = [
324
341
  usage: '<worktree>',
325
342
  load: () => import('./commands/memory-promote.js').then((m) => m.memoryPromoteCommand()),
326
343
  },
344
+ {
345
+ // 2.17.1 REQ-05 (R06): атомарный claim владения общими артефактами —
346
+ // один активный писатель; guard записи — в use-cases (requireClaim)
347
+ name: 'claim',
348
+ description: 'Single-writer claims on shared artifacts',
349
+ usage: '',
350
+ load: () => import('./commands/claim.js').then((m) => m.claimCommand()),
351
+ },
327
352
  {
328
353
  // Волна 2.14 §8.1 (P330): реестр-«телефонная книга» — просмотр; C-поток
329
354
  // регистрирует aggregate выше — ребейз механический (точка 4 §1 плана)
@@ -1 +1 @@
1
- {"version":3,"file":"cli-entry.js","sourceRoot":"","sources":["../../../src/adapters/cli/cli-entry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-entry.js","sourceRoot":"","sources":["../../../src/adapters/cli/cli-entry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Command } from 'commander';
2
+ /** 2.17.1 REQ-05 (R06), design §3.5: `wolf claim acquire|release|list` —
3
+ * тонкая обёртка use-case-слоя; идентичность — env (WOLF_ACTOR/WOLF_SESSION),
4
+ * как у face-команд (ADR-5: флаг --created-by не экспортируем). */
5
+ export declare function claimCommand(baseDir?: string): Command;
6
+ //# sourceMappingURL=claim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/claim.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC;;mEAEmE;AAEnE,wBAAgB,YAAY,CAAC,OAAO,GAAE,MAAkB,GAAG,OAAO,CA2DjE"}
@@ -0,0 +1,65 @@
1
+ // src/adapters/cli/commands/claim.ts
2
+ import { Command } from 'commander';
3
+ import { safeCwd } from '../cli-entry.js';
4
+ import { acquireArtifactClaim, listArtifactClaims, releaseArtifactClaim, } from '../../../app/use-cases/claim-artifact.js';
5
+ import { claimFilePath, ClaimHeldError } from '../../fs/claim-registry.js';
6
+ import { resolveMemoryRoot } from '../../fs/memory-root.js';
7
+ import { UserFacingError } from '../../../domain/errors.js';
8
+ /** 2.17.1 REQ-05 (R06), design §3.5: `wolf claim acquire|release|list` —
9
+ * тонкая обёртка use-case-слоя; идентичность — env (WOLF_ACTOR/WOLF_SESSION),
10
+ * как у face-команд (ADR-5: флаг --created-by не экспортируем). */
11
+ export function claimCommand(baseDir = safeCwd()) {
12
+ const cmd = new Command('claim').description('Single-writer claims on shared artifacts (TASK briefs, plans, reports, worktrees)');
13
+ cmd
14
+ .command('acquire')
15
+ .description('Atomically acquire artifact ownership (second concurrent writer is rejected)')
16
+ .argument('<artifact>', 'Artifact id, e.g. "dev:<date>-<slug>" or "worktree:w-<12hex>"')
17
+ .action((artifact) => {
18
+ try {
19
+ // FIX-1 (CRITICAL-1, ревью T5): CLI-процесс одноразовый — его pid мёртв
20
+ // сразу после выхода, и claim деградировал в «stale» (owner-lockout
21
+ // scaffold'а и мгновенный перехват конкурентом). Держатель claim'а —
22
+ // агент-сессия (owner+session): пишем pid 0 = liveness неизвестна,
23
+ // владение живёт до TTL или передачи (pidAlive: pid<=0 — жив до TTL).
24
+ const rec = acquireArtifactClaim({ baseDir, pid: 0 }, artifact);
25
+ console.log(`Claim acquired: ${rec.artifact}`);
26
+ console.log(`owner ${rec.owner} (session ${rec.session_id ?? '-'}, pid ${rec.pid})`);
27
+ console.log(`claim file: ${claimFilePath(resolveMemoryRoot(baseDir).root, artifact)}`);
28
+ }
29
+ catch (err) {
30
+ if (err instanceof ClaimHeldError) {
31
+ throw new UserFacingError(`Claim already held by ${err.owner} — ${err.claimPath} (${err.reason})`);
32
+ }
33
+ throw err;
34
+ }
35
+ });
36
+ cmd
37
+ .command('release')
38
+ .description('Release artifact ownership (owner-only) or transfer it explicitly')
39
+ .argument('<artifact>', 'Artifact id to release')
40
+ .option('--transfer-to <actor>', 'Hand ownership over to another actor instead of dropping the claim')
41
+ .action((artifact, options) => {
42
+ const res = releaseArtifactClaim({ baseDir }, artifact, options.transferTo);
43
+ if (res.action === 'transferred') {
44
+ console.log(`Claim for ${artifact} transferred to ${res.owner}`);
45
+ }
46
+ else {
47
+ console.log(`Released claim: ${artifact}`);
48
+ }
49
+ });
50
+ cmd
51
+ .command('list')
52
+ .description('List active claims (who/when/what, from the registry files)')
53
+ .action(() => {
54
+ const claims = listArtifactClaims({ baseDir });
55
+ if (claims.length === 0) {
56
+ console.log('No active claims');
57
+ return;
58
+ }
59
+ for (const c of claims) {
60
+ console.log(`${c.artifact} — ${c.owner} (session ${c.session_id ?? '-'}, pid ${c.pid}) acquired ${c.acquired_at} in ${c.cwd}`);
61
+ }
62
+ });
63
+ return cmd;
64
+ }
65
+ //# sourceMappingURL=claim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim.js","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/claim.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function faceCommand(baseDir?: string): Command;
3
+ //# sourceMappingURL=face.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"face.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/face.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AA8E5C,wBAAgB,WAAW,CAAC,OAAO,GAAE,MAAkB,GAAG,OAAO,CA0NhE"}
@@ -0,0 +1,227 @@
1
+ // src/adapters/cli/commands/face.ts
2
+ import { Command, Option } from 'commander';
3
+ import { readFileSync } from 'fs';
4
+ import { safeCwd } from '../cli-entry.js';
5
+ import { createFaceVersion } from '../../../app/use-cases/create-face-version.js';
6
+ import { abortFaceOperation, resumeFaceOperation } from '../../../app/use-cases/face-operation.js';
7
+ import { migrateFaces } from '../../../app/use-cases/migrate-faces.js';
8
+ import { createCliContainer } from '../../../bootstrap/container.js';
9
+ import { UserFacingError } from '../../../domain/errors.js';
10
+ /** Волна 2.17 T-04 (design §«CLI: проектируемые команды», REQ-03/04/05/07/10):
11
+ * группа `wolf face` — тонкая обёртка: мутации идут только через use-case
12
+ * createFaceVersion (guard, номер версии, supersede, события и G17-запись —
13
+ * внутри него), наблюдаемость (list/history/show) — через store, без чтения
14
+ * файлов памяти напрямую. Никакой логики версионирования в CLI (план T-04).
15
+ *
16
+ * ADR-5: атрибуция — только env (WOLF_ACTOR / WOLF_SESSION); флаг --created-by
17
+ * не экспортируется — передан → явный отказ с пояснением. */
18
+ /** Скрытая ловушка ADR-5: парсится, но не показывается в help; отказ — в action. */
19
+ function createdByTrap(sub) {
20
+ // commander 12: Option#hide() отсутствует — скрытость через свойство hidden
21
+ const trap = new Option('--created-by <actor>', '');
22
+ trap.hidden = true;
23
+ return sub.addOption(trap);
24
+ }
25
+ function denyCreatedBy(options) {
26
+ if (options.createdBy !== undefined) {
27
+ throw new UserFacingError('face commands do not accept --created-by: attribution is env-only (WOLF_ACTOR / WOLF_SESSION, design ADR-5)');
28
+ }
29
+ }
30
+ /** Версии владельца через store (REQ-10: без прямого чтения файлов памяти). */
31
+ async function facesOfOwner(store, ownerSkill) {
32
+ return (await store.list({ type: 'face' }))
33
+ .filter((o) => o.owner_skill === ownerSkill)
34
+ .map((o) => o);
35
+ }
36
+ // baseDir инъектится для тестов (прецедент: memory-relation.ts).
37
+ export function faceCommand(baseDir = safeCwd()) {
38
+ const cmd = new Command('face').description('Manage faces (versioned agent playbooks)');
39
+ const g17 = (sub) => sub
40
+ .requiredOption('--minimal-change <t>', 'G17: what exactly changes (REQ-06)')
41
+ .requiredOption('--boundaries <t>', 'G17: what does NOT change (essence/frame)')
42
+ .requiredOption('--example-helps <t>', 'G17: example that benefits from the change')
43
+ .requiredOption('--example-keep <t>', 'G17: example that must keep working')
44
+ .requiredOption('--verification <t>', 'G17: how to verify the mutation')
45
+ .requiredOption('--rollback <t>', 'G17: how to roll back');
46
+ g17(createdByTrap(cmd
47
+ .command('new')
48
+ .description('Create a new face version (steward-only; guard inside the use-case)')
49
+ .argument('<owner_skill>', 'Owner skill, e.g. skill:my-agent')
50
+ .requiredOption('--reason <t>', 'Why this version exists (REQ-04)')
51
+ .option('--body <md>', 'Face body markdown')
52
+ .option('--file <path>', 'Read face body from a file (alternative to --body)')
53
+ .option('--title <title>', 'Face title (default: "Face: <owner_skill>")')
54
+ .option('--tags <tags>', 'Comma-separated tags')
55
+ .option('--from-proposal <id>', 'Link the new version to a proposal (relation: proposes)')
56
+ .option('--op-id <id>', 'Operation id: resume an interrupted mutation (default: generated faceop-<ts>-<rand4>)'))).action(async (ownerSkill, options) => {
57
+ denyCreatedBy(options);
58
+ let body = options.body;
59
+ if (options.file !== undefined) {
60
+ if (body !== undefined)
61
+ throw new UserFacingError('face new: use either --body or --file, not both');
62
+ try {
63
+ body = readFileSync(options.file, 'utf8');
64
+ }
65
+ catch {
66
+ throw new UserFacingError(`face new: cannot read body file: ${options.file}`);
67
+ }
68
+ }
69
+ const result = await createFaceVersion(createCliContainer(baseDir), {
70
+ command: 'new',
71
+ ownerSkill,
72
+ reason: options.reason,
73
+ body,
74
+ title: options.title,
75
+ tags: options.tags ? options.tags.split(',').map((t) => t.trim()) : undefined,
76
+ minimalChange: options.minimalChange,
77
+ boundaries: options.boundaries,
78
+ exampleHelps: options.exampleHelps,
79
+ exampleKeep: options.exampleKeep,
80
+ verification: options.verification,
81
+ rollback: options.rollback,
82
+ fromProposal: options.fromProposal,
83
+ opId: options.opId,
84
+ });
85
+ const superseded = result.supersededId ? ` (superseded ${result.supersededId})` : '';
86
+ const mutation = result.mutationRecordId ? `; mutation record ${result.mutationRecordId}` : '';
87
+ console.log(`Created face ${ownerSkill} v${result.face.version} ${result.face.id}${superseded}${mutation}`);
88
+ console.log(`operation ${result.opId}`); // REQ-03: печатается для wolf face recover
89
+ });
90
+ // restore и breakglass — один и тот же версионирующий путь (REQ-05: новая
91
+ // версия с based_on); разница — initiator и журнал breakglass (REQ-07 AC2),
92
+ // оба решает use-case. CLI не вызывает Стюарда ни в одном пути.
93
+ const restoreLike = (name, description) => {
94
+ createdByTrap(cmd
95
+ .command(name)
96
+ .description(description)
97
+ .argument('<owner_skill>', 'Owner skill, e.g. skill:my-agent')
98
+ .requiredOption('--from <id|vN>', 'Base version: memory id or version number (v2|2)')
99
+ .requiredOption('--reason <t>', 'Why this version exists (REQ-04)')).action(async (ownerSkill, options) => {
100
+ denyCreatedBy(options);
101
+ const result = await createFaceVersion(createCliContainer(baseDir), {
102
+ command: name,
103
+ ownerSkill,
104
+ reason: options.reason,
105
+ from: options.from,
106
+ });
107
+ console.log(`Created face ${ownerSkill} v${result.face.version} ${result.face.id} from ${options.from}` +
108
+ ` (initiator: ${result.face.initiator})`);
109
+ });
110
+ };
111
+ restoreLike('restore', 'Restore an old version as a NEW one (owner; linear history, REQ-05)');
112
+ restoreLike('breakglass', 'Emergency rollback by the owner (steward not involved; logged, REQ-07)');
113
+ // 2.17.1 REQ-03 (design §3.3): восстановление операции по opId. Без флага —
114
+ // дозавершение оставшихся шагов (идемпотентно); --abort — только до
115
+ // activation: candidate → archived + op_aborted, история не уничтожается.
116
+ createdByTrap(cmd
117
+ .command('recover')
118
+ .description('Resume an interrupted face operation by op id (--abort: archive the candidate, pre-activation only)')
119
+ .argument('<op_id>', 'Operation id (printed by face new; also wolf doctor)')
120
+ .option('--abort', 'Abort the operation instead of resuming (only before activation)')).action(async (opId, options) => {
121
+ denyCreatedBy(options);
122
+ const container = createCliContainer(baseDir);
123
+ if (options.abort) {
124
+ const result = await abortFaceOperation(container, opId);
125
+ const face = result.archivedFaceId ? ` (candidate ${result.archivedFaceId} archived)` : '';
126
+ console.log(`Aborted face operation ${opId}${face}`);
127
+ return;
128
+ }
129
+ const result = await resumeFaceOperation(container, opId);
130
+ console.log(`Recovered face operation ${opId}: ${result.face.owner_skill} v${result.face.version} ${result.face.id}`);
131
+ });
132
+ // T-05 (REQ-02, design §Миграция): идемпотентная физическая миграция
133
+ // legacy-playbook → face; вся механика (поэтапность, skip, отчёт) — в
134
+ // use-case migrateFaces, CLI только печатает отчёт.
135
+ createdByTrap(cmd.command('migrate').description('Migrate legacy playbook notes to faces (idempotent, REQ-02)')).action(async (options) => {
136
+ denyCreatedBy(options);
137
+ const report = await migrateFaces(createCliContainer(baseDir));
138
+ for (const o of report.outcomes) {
139
+ if (o.action === 'migrated') {
140
+ console.log(`Migrated ${o.ownerSkill} -> ${o.faceId} (superseded legacy head ${o.headId})`);
141
+ }
142
+ else if (o.action === 'healed') {
143
+ console.log(`Healed ${o.ownerSkill} -> ${o.faceId} (superseded legacy head ${o.headId})`);
144
+ }
145
+ else if (o.action === 'resumed') {
146
+ console.log(`Resumed ${o.ownerSkill} -> ${o.faceId}${o.headId ? ` (legacy head ${o.headId})` : ''}: ${o.reason}`);
147
+ }
148
+ else {
149
+ console.log(`Skipped ${o.ownerSkill}: ${o.reason}`);
150
+ }
151
+ }
152
+ if (report.skippedHowtoIds.length > 0) {
153
+ console.log(`Skipped ${report.skippedHowtoIds.length} howto note(s) without owner_skill (not every howto is a face): ` +
154
+ report.skippedHowtoIds.join(', '));
155
+ }
156
+ // §Отказов: падение на N-м не откатывает N-1 — честный ненулевой exit
157
+ for (const f of report.failed) {
158
+ console.error(`! ${f.ownerSkill}: ${f.error}`);
159
+ }
160
+ if (report.failed.length > 0)
161
+ process.exitCode = 1;
162
+ if (report.outcomes.length === 0 && report.skippedHowtoIds.length === 0 && report.failed.length === 0) {
163
+ console.log('Nothing to migrate.');
164
+ }
165
+ });
166
+ createdByTrap(cmd.command('list').description('List faces: owner_skill, current version, id, status')).action(async (options) => {
167
+ denyCreatedBy(options);
168
+ const { store } = createCliContainer(baseDir);
169
+ const heads = new Map();
170
+ for (const obj of await store.list({ type: 'face' })) {
171
+ const f = obj;
172
+ const cur = heads.get(f.owner_skill);
173
+ // REQ-03: candidate (неполный канон) скрыт из головы — активная версия
174
+ // канона; дубль активных — территория doctor (NFR-02), здесь старшая.
175
+ const fActive = f.status === 'active';
176
+ const cActive = cur?.status === 'active';
177
+ const better = !cur || (fActive && !cActive) || (fActive === cActive && Number(f.version) > Number(cur.version));
178
+ if (better)
179
+ heads.set(f.owner_skill, f);
180
+ }
181
+ if (heads.size === 0) {
182
+ console.log('No faces.');
183
+ return;
184
+ }
185
+ for (const [owner, f] of [...heads.entries()].sort(([a], [b]) => a.localeCompare(b))) {
186
+ console.log(`${owner} v${f.version} ${f.id} [${f.status}]`);
187
+ }
188
+ });
189
+ createdByTrap(cmd
190
+ .command('history')
191
+ .description('Show version history of a face (newest first)')
192
+ .argument('<owner_skill>', 'Owner skill')).action(async (ownerSkill, options) => {
193
+ denyCreatedBy(options);
194
+ const { store } = createCliContainer(baseDir);
195
+ const versions = (await facesOfOwner(store, ownerSkill)).sort((a, b) => Number(b.version) - Number(a.version));
196
+ if (versions.length === 0)
197
+ throw new UserFacingError(`No face found for ${ownerSkill}`);
198
+ for (const f of versions) {
199
+ const based = f.based_on ? `based_on=${f.based_on} ` : '';
200
+ console.log(`v${f.version} ${f.id} [${f.status}] initiator=${f.initiator} ${based}at=${f.created_at} ${f.reason}`);
201
+ }
202
+ });
203
+ createdByTrap(cmd
204
+ .command('show')
205
+ .description('Show the current face version: metadata and body')
206
+ .argument('<owner_skill>', 'Owner skill')).action(async (ownerSkill, options) => {
207
+ denyCreatedBy(options);
208
+ const { store } = createCliContainer(baseDir);
209
+ const active = (await facesOfOwner(store, ownerSkill))
210
+ .filter((f) => f.status === 'active')
211
+ .sort((a, b) => Number(b.version) - Number(a.version))[0];
212
+ if (!active)
213
+ throw new UserFacingError(`No active face for ${ownerSkill}`);
214
+ console.log(`${active.owner_skill} v${active.version} ${active.id} [${active.status}]`);
215
+ console.log(`initiator: ${active.initiator}`);
216
+ console.log(`reason: ${active.reason}`);
217
+ console.log(`based_on: ${active.based_on ?? '—'}`);
218
+ console.log(`title: ${active.title}`);
219
+ if (active.tags && active.tags.length > 0)
220
+ console.log(`tags: ${active.tags.join(', ')}`);
221
+ console.log(`created: ${active.created_at}`);
222
+ console.log('---');
223
+ console.log(active.body ?? '');
224
+ });
225
+ return cmd;
226
+ }
227
+ //# sourceMappingURL=face.js.map