mister-wolf 2.16.2 → 2.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/README.md +4 -4
  2. package/README.ru.md +4 -4
  3. package/dist/adapters/cli/cli-entry.d.ts.map +1 -1
  4. package/dist/adapters/cli/cli-entry.js +17 -0
  5. package/dist/adapters/cli/cli-entry.js.map +1 -1
  6. package/dist/adapters/cli/commands/face.d.ts +3 -0
  7. package/dist/adapters/cli/commands/face.d.ts.map +1 -0
  8. package/dist/adapters/cli/commands/face.js +194 -0
  9. package/dist/adapters/cli/commands/face.js.map +1 -0
  10. package/dist/adapters/cli/commands/memory-add.d.ts.map +1 -1
  11. package/dist/adapters/cli/commands/memory-add.js +1 -1
  12. package/dist/adapters/cli/commands/memory-add.js.map +1 -1
  13. package/dist/adapters/cli/commands/memory-doctor.d.ts +20 -0
  14. package/dist/adapters/cli/commands/memory-doctor.d.ts.map +1 -1
  15. package/dist/adapters/cli/commands/memory-doctor.js +87 -3
  16. package/dist/adapters/cli/commands/memory-doctor.js.map +1 -1
  17. package/dist/adapters/cli/commands/memory-init.d.ts.map +1 -1
  18. package/dist/adapters/cli/commands/memory-init.js +11 -53
  19. package/dist/adapters/cli/commands/memory-init.js.map +1 -1
  20. package/dist/adapters/cli/commands/memory-list.d.ts.map +1 -1
  21. package/dist/adapters/cli/commands/memory-list.js +1 -1
  22. package/dist/adapters/cli/commands/memory-list.js.map +1 -1
  23. package/dist/adapters/cli/commands/memory-search.d.ts.map +1 -1
  24. package/dist/adapters/cli/commands/memory-search.js +1 -1
  25. package/dist/adapters/cli/commands/memory-search.js.map +1 -1
  26. package/dist/adapters/cli/commands/memory-sync.js +1 -1
  27. package/dist/adapters/cli/commands/memory-sync.js.map +1 -1
  28. package/dist/adapters/cli/commands/propose.d.ts +3 -0
  29. package/dist/adapters/cli/commands/propose.d.ts.map +1 -0
  30. package/dist/adapters/cli/commands/propose.js +94 -0
  31. package/dist/adapters/cli/commands/propose.js.map +1 -0
  32. package/dist/adapters/cli/type-command-generator.d.ts.map +1 -1
  33. package/dist/adapters/cli/type-command-generator.js +2 -0
  34. package/dist/adapters/cli/type-command-generator.js.map +1 -1
  35. package/dist/app/use-cases/add-memory-object.d.ts +5 -0
  36. package/dist/app/use-cases/add-memory-object.d.ts.map +1 -1
  37. package/dist/app/use-cases/add-memory-object.js +24 -5
  38. package/dist/app/use-cases/add-memory-object.js.map +1 -1
  39. package/dist/app/use-cases/create-face-version.d.ts +79 -0
  40. package/dist/app/use-cases/create-face-version.d.ts.map +1 -0
  41. package/dist/app/use-cases/create-face-version.js +224 -0
  42. package/dist/app/use-cases/create-face-version.js.map +1 -0
  43. package/dist/app/use-cases/create-mutation-record.d.ts +55 -0
  44. package/dist/app/use-cases/create-mutation-record.d.ts.map +1 -0
  45. package/dist/app/use-cases/create-mutation-record.js +78 -0
  46. package/dist/app/use-cases/create-mutation-record.js.map +1 -0
  47. package/dist/app/use-cases/deliver-proposal.d.ts +26 -0
  48. package/dist/app/use-cases/deliver-proposal.d.ts.map +1 -0
  49. package/dist/app/use-cases/deliver-proposal.js +35 -0
  50. package/dist/app/use-cases/deliver-proposal.js.map +1 -0
  51. package/dist/app/use-cases/migrate-faces.d.ts +47 -0
  52. package/dist/app/use-cases/migrate-faces.d.ts.map +1 -0
  53. package/dist/app/use-cases/migrate-faces.js +65 -0
  54. package/dist/app/use-cases/migrate-faces.js.map +1 -0
  55. package/dist/app/use-cases/record-relation.d.ts.map +1 -1
  56. package/dist/app/use-cases/record-relation.js +6 -0
  57. package/dist/app/use-cases/record-relation.js.map +1 -1
  58. package/dist/app/use-cases/save-proposal.d.ts +49 -0
  59. package/dist/app/use-cases/save-proposal.d.ts.map +1 -0
  60. package/dist/app/use-cases/save-proposal.js +32 -0
  61. package/dist/app/use-cases/save-proposal.js.map +1 -0
  62. package/dist/app/use-cases/scaffold-agent.d.ts.map +1 -1
  63. package/dist/app/use-cases/scaffold-agent.js +20 -52
  64. package/dist/app/use-cases/scaffold-agent.js.map +1 -1
  65. package/dist/app/use-cases/seed-base-playbooks.d.ts +16 -95
  66. package/dist/app/use-cases/seed-base-playbooks.d.ts.map +1 -1
  67. package/dist/app/use-cases/seed-base-playbooks.js +22 -23
  68. package/dist/app/use-cases/seed-base-playbooks.js.map +1 -1
  69. package/dist/domain/facet-colors.d.ts.map +1 -1
  70. package/dist/domain/facet-colors.js +1 -0
  71. package/dist/domain/facet-colors.js.map +1 -1
  72. package/dist/domain/memory-types.d.ts +32 -1
  73. package/dist/domain/memory-types.d.ts.map +1 -1
  74. package/dist/domain/memory-types.js +32 -2
  75. package/dist/domain/memory-types.js.map +1 -1
  76. package/dist/domain/schemas/memory-event-schema.d.ts +4 -0
  77. package/dist/domain/schemas/memory-event-schema.d.ts.map +1 -1
  78. package/dist/domain/schemas/memory-event-schema.js +30 -1
  79. package/dist/domain/schemas/memory-event-schema.js.map +1 -1
  80. package/dist/domain/schemas/relation-schema.d.ts +6 -2
  81. package/dist/domain/schemas/relation-schema.d.ts.map +1 -1
  82. package/dist/domain/schemas/relation-schema.js +8 -0
  83. package/dist/domain/schemas/relation-schema.js.map +1 -1
  84. package/dist/domain/schemas/session-checkpoint-schema.d.ts +1 -1
  85. package/dist/domain/type-schema-builder.d.ts +4 -2
  86. package/dist/domain/type-schema-builder.d.ts.map +1 -1
  87. package/dist/domain/type-schema-builder.js +32 -1
  88. package/dist/domain/type-schema-builder.js.map +1 -1
  89. package/package.json +1 -1
  90. package/templates/.wolf/router.log +1 -1
  91. package/templates/base/agents/executor-lead.md +1 -0
  92. package/templates/base/agents/steward.md +1 -1
  93. package/templates/base/agents/worker-implementer.md +1 -0
  94. package/templates/base/agents/worker-researcher.md +1 -0
  95. package/templates/base/agents/worker-reviewer.md +1 -0
  96. package/templates/opencode/plugins/wolf-router.ts +60 -10
package/README.md CHANGED
@@ -54,7 +54,7 @@ After `wolf init` **restart your agent platform** — the Wolf MCP server connec
54
54
  `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
55
  - **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
56
 
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).
57
+ 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
58
 
59
59
  `bootstrap` finishes by invoking the Steward to fold the startup-memory drafts — protocol: [steward bootstrap (RU)](docs/guide/steward-bootstrap.md).
60
60
 
@@ -83,7 +83,7 @@ Details: [architecture guide (RU)](docs/guide/architecture.md) · [concept v3 (R
83
83
 
84
84
  ### Memory
85
85
 
86
- Everything is memory: 7 core types (`rule`, `lesson`, `decision`, `thread`, `complaint`, `tool`, `note`) plus facets, versions, relations, attribution.
86
+ 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
87
 
88
88
  ```bash
89
89
  wolf add --type lesson --title "..." --body "..." --tags "vitest,ci" --confidence medium
@@ -123,9 +123,9 @@ Wolf works as a permanent project organization from temporary agents: a **coordi
123
123
 
124
124
  ### Agents
125
125
 
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.
126
+ - `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
127
  - 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.
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.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
129
 
130
130
  ### Tools
131
131
 
package/README.ru.md CHANGED
@@ -76,7 +76,7 @@ Claude Code при первом старте попросит approve project-sc
76
76
  в PATH. В npm есть и чужой пакет `wolf` (Wolfram CLI) — глобальная установка обоих конфликтует
77
77
  за имя бинаря, разрешается тем же порядком PATH.
78
78
 
79
- Подключение агента — одна команда: `wolf scaffold agent <name>` создаёт тонкую рамку в `.opencode/agents/<name>.md`, playbook-объект в памяти и relation между ними. Доставку playbook'а в сессию выполняет плагин `.opencode/plugins/wolf-router.ts` — см. [Интеграции](#интеграции).
79
+ Подключение агента — одна команда: `wolf scaffold agent <name>` создаёт тонкую рамку в `.opencode/agents/<name>.md`, лицо — playbook агента как версионируемый объект памяти — и relation между ними. Доставку playbook'а в сессию выполняет плагин `.opencode/plugins/wolf-router.ts` — см. [Интеграции](#интеграции).
80
80
 
81
81
  `bootstrap` завершается вызовом Стюарда для свёртки черновиков стартовой памяти — протокол: [docs/guide/steward-bootstrap.md](docs/guide/steward-bootstrap.md).
82
82
 
@@ -105,7 +105,7 @@ Claude Code при первом старте попросит approve project-sc
105
105
 
106
106
  ### Память
107
107
 
108
- Всё есть память: 7 ключевых типов (`rule`, `lesson`, `decision`, `thread`, `complaint`, `tool`, `note`) плюс фасеты, версии, связи, атрибуция.
108
+ Всё есть память: 8 ключевых типов (`rule`, `lesson`, `decision`, `thread`, `complaint`, `tool`, `note`, `face`) плюс фасеты, версии, связи, атрибуция. `face` — playbook агента как отдельный версионируемый тип: новые версии через `wolf face` (мутация Стюарда оставляет структурную запись), аварийный откат владельцем — `wolf face breakglass`; структурированные предложения ходят через `wolf propose`.
109
109
 
110
110
  ```bash
111
111
  wolf add --type lesson --title "..." --body "..." --tags "vitest,ci" --confidence medium
@@ -145,9 +145,9 @@ Wolf работает как постоянная проектная орган
145
145
 
146
146
  ### Агенты
147
147
 
148
- - `wolf scaffold agent|skill|command <name>` — рамка платформы + playbook в памяти + relation одной командой; `--persona` и `--model` для агентов, `--from-playbook <id>` — переиспользовать существующий playbook.
148
+ - `wolf scaffold agent|skill|command <name>` — рамка платформы + лицо (playbook агента) в памяти + relation одной командой; `--persona` и `--model` для агентов, `--from-playbook <id>` — переиспользовать существующий playbook.
149
149
  - Доставка playbook'ов — плагин-инжекция в system-промпт (слой доставки №1): `.opencode/plugins/wolf-router.ts`.
150
- - **Стюард** — фоновый агент контура с лицами: **Наставник** (методики, по жалобам), **Библиотекарь** (инструменты), **Архивариус** (знания). Новое лицо = новый playbook, не новый агент. С 2.14 Стюард также агрегирует зрелые уроки в одну замену — proposed, подтверждение владельцем.
150
+ - **Стюард** — фоновый агент контура с лицами: **Наставник** (методики, по жалобам), **Библиотекарь** (инструменты), **Архивариус** (знания). Новое лицо = новый playbook, не новый агент — с 2.17 лицо это core-тип: версионируется через `wolf face` с обязательной записью мутации на каждую версию Стюарда, мигрируется из legacy playbook-заметок (`wolf face migrate`). С 2.14 Стюард также агрегирует зрелые уроки в одну замену — proposed, подтверждение владельцем.
151
151
 
152
152
  ### Инструменты
153
153
 
@@ -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,EAoUjC,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/...',
@@ -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,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;AAqE5C,wBAAgB,WAAW,CAAC,OAAO,GAAE,MAAkB,GAAG,OAAO,CAkLhE"}
@@ -0,0 +1,194 @@
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 { migrateFaces } from '../../../app/use-cases/migrate-faces.js';
7
+ import { createCliContainer } from '../../../bootstrap/container.js';
8
+ import { UserFacingError } from '../../../domain/errors.js';
9
+ /** Волна 2.17 T-04 (design §«CLI: проектируемые команды», REQ-03/04/05/07/10):
10
+ * группа `wolf face` — тонкая обёртка: мутации идут только через use-case
11
+ * createFaceVersion (guard, номер версии, supersede, события и G17-запись —
12
+ * внутри него), наблюдаемость (list/history/show) — через store, без чтения
13
+ * файлов памяти напрямую. Никакой логики версионирования в CLI (план T-04).
14
+ *
15
+ * ADR-5: атрибуция — только env (WOLF_ACTOR / WOLF_SESSION); флаг --created-by
16
+ * не экспортируется — передан → явный отказ с пояснением. */
17
+ /** Скрытая ловушка ADR-5: парсится, но не показывается в help; отказ — в action. */
18
+ function createdByTrap(sub) {
19
+ // commander 12: Option#hide() отсутствует — скрытость через свойство hidden
20
+ const trap = new Option('--created-by <actor>', '');
21
+ trap.hidden = true;
22
+ return sub.addOption(trap);
23
+ }
24
+ function denyCreatedBy(options) {
25
+ if (options.createdBy !== undefined) {
26
+ throw new UserFacingError('face commands do not accept --created-by: attribution is env-only (WOLF_ACTOR / WOLF_SESSION, design ADR-5)');
27
+ }
28
+ }
29
+ /** Версии владельца через store (REQ-10: без прямого чтения файлов памяти). */
30
+ async function facesOfOwner(store, ownerSkill) {
31
+ return (await store.list({ type: 'face' }))
32
+ .filter((o) => o.owner_skill === ownerSkill)
33
+ .map((o) => o);
34
+ }
35
+ // baseDir инъектится для тестов (прецедент: memory-relation.ts).
36
+ export function faceCommand(baseDir = safeCwd()) {
37
+ const cmd = new Command('face').description('Manage faces (versioned agent playbooks)');
38
+ const g17 = (sub) => sub
39
+ .requiredOption('--minimal-change <t>', 'G17: what exactly changes (REQ-06)')
40
+ .requiredOption('--boundaries <t>', 'G17: what does NOT change (essence/frame)')
41
+ .requiredOption('--example-helps <t>', 'G17: example that benefits from the change')
42
+ .requiredOption('--example-keep <t>', 'G17: example that must keep working')
43
+ .requiredOption('--verification <t>', 'G17: how to verify the mutation')
44
+ .requiredOption('--rollback <t>', 'G17: how to roll back');
45
+ g17(createdByTrap(cmd
46
+ .command('new')
47
+ .description('Create a new face version (steward-only; guard inside the use-case)')
48
+ .argument('<owner_skill>', 'Owner skill, e.g. skill:my-agent')
49
+ .requiredOption('--reason <t>', 'Why this version exists (REQ-04)')
50
+ .option('--body <md>', 'Face body markdown')
51
+ .option('--file <path>', 'Read face body from a file (alternative to --body)')
52
+ .option('--title <title>', 'Face title (default: "Face: <owner_skill>")')
53
+ .option('--tags <tags>', 'Comma-separated tags')
54
+ .option('--from-proposal <id>', 'Link the new version to a proposal (relation: proposes)'))).action(async (ownerSkill, options) => {
55
+ denyCreatedBy(options);
56
+ let body = options.body;
57
+ if (options.file !== undefined) {
58
+ if (body !== undefined)
59
+ throw new UserFacingError('face new: use either --body or --file, not both');
60
+ try {
61
+ body = readFileSync(options.file, 'utf8');
62
+ }
63
+ catch {
64
+ throw new UserFacingError(`face new: cannot read body file: ${options.file}`);
65
+ }
66
+ }
67
+ const result = await createFaceVersion(createCliContainer(baseDir), {
68
+ command: 'new',
69
+ ownerSkill,
70
+ reason: options.reason,
71
+ body,
72
+ title: options.title,
73
+ tags: options.tags ? options.tags.split(',').map((t) => t.trim()) : undefined,
74
+ minimalChange: options.minimalChange,
75
+ boundaries: options.boundaries,
76
+ exampleHelps: options.exampleHelps,
77
+ exampleKeep: options.exampleKeep,
78
+ verification: options.verification,
79
+ rollback: options.rollback,
80
+ fromProposal: options.fromProposal,
81
+ });
82
+ const superseded = result.supersededId ? ` (superseded ${result.supersededId})` : '';
83
+ const mutation = result.mutationRecordId ? `; mutation record ${result.mutationRecordId}` : '';
84
+ console.log(`Created face ${ownerSkill} v${result.face.version} ${result.face.id}${superseded}${mutation}`);
85
+ });
86
+ // restore и breakglass — один и тот же версионирующий путь (REQ-05: новая
87
+ // версия с based_on); разница — initiator и журнал breakglass (REQ-07 AC2),
88
+ // оба решает use-case. CLI не вызывает Стюарда ни в одном пути.
89
+ const restoreLike = (name, description) => {
90
+ createdByTrap(cmd
91
+ .command(name)
92
+ .description(description)
93
+ .argument('<owner_skill>', 'Owner skill, e.g. skill:my-agent')
94
+ .requiredOption('--from <id|vN>', 'Base version: memory id or version number (v2|2)')
95
+ .requiredOption('--reason <t>', 'Why this version exists (REQ-04)')).action(async (ownerSkill, options) => {
96
+ denyCreatedBy(options);
97
+ const result = await createFaceVersion(createCliContainer(baseDir), {
98
+ command: name,
99
+ ownerSkill,
100
+ reason: options.reason,
101
+ from: options.from,
102
+ });
103
+ console.log(`Created face ${ownerSkill} v${result.face.version} ${result.face.id} from ${options.from}` +
104
+ ` (initiator: ${result.face.initiator})`);
105
+ });
106
+ };
107
+ restoreLike('restore', 'Restore an old version as a NEW one (owner; linear history, REQ-05)');
108
+ restoreLike('breakglass', 'Emergency rollback by the owner (steward not involved; logged, REQ-07)');
109
+ // T-05 (REQ-02, design §Миграция): идемпотентная физическая миграция
110
+ // legacy-playbook → face; вся механика (поэтапность, skip, отчёт) — в
111
+ // use-case migrateFaces, CLI только печатает отчёт.
112
+ createdByTrap(cmd.command('migrate').description('Migrate legacy playbook notes to faces (idempotent, REQ-02)')).action(async (options) => {
113
+ denyCreatedBy(options);
114
+ const report = await migrateFaces(createCliContainer(baseDir));
115
+ for (const o of report.outcomes) {
116
+ if (o.action === 'migrated') {
117
+ console.log(`Migrated ${o.ownerSkill} -> ${o.faceId} (superseded legacy head ${o.headId})`);
118
+ }
119
+ else {
120
+ console.log(`Skipped ${o.ownerSkill}: ${o.reason}`);
121
+ }
122
+ }
123
+ if (report.skippedHowtoIds.length > 0) {
124
+ console.log(`Skipped ${report.skippedHowtoIds.length} howto note(s) without owner_skill (not every howto is a face): ` +
125
+ report.skippedHowtoIds.join(', '));
126
+ }
127
+ // §Отказов: падение на N-м не откатывает N-1 — честный ненулевой exit
128
+ for (const f of report.failed) {
129
+ console.error(`! ${f.ownerSkill}: ${f.error}`);
130
+ }
131
+ if (report.failed.length > 0)
132
+ process.exitCode = 1;
133
+ if (report.outcomes.length === 0 && report.skippedHowtoIds.length === 0 && report.failed.length === 0) {
134
+ console.log('Nothing to migrate.');
135
+ }
136
+ });
137
+ createdByTrap(cmd.command('list').description('List faces: owner_skill, current version, id, status')).action(async (options) => {
138
+ denyCreatedBy(options);
139
+ const { store } = createCliContainer(baseDir);
140
+ const heads = new Map();
141
+ for (const obj of await store.list({ type: 'face' })) {
142
+ const f = obj;
143
+ const cur = heads.get(f.owner_skill);
144
+ // дубль активных — территория doctor (NFR-02); здесь детерминированно старшая
145
+ if (!cur || Number(f.version) > Number(cur.version))
146
+ heads.set(f.owner_skill, f);
147
+ }
148
+ if (heads.size === 0) {
149
+ console.log('No faces.');
150
+ return;
151
+ }
152
+ for (const [owner, f] of [...heads.entries()].sort(([a], [b]) => a.localeCompare(b))) {
153
+ console.log(`${owner} v${f.version} ${f.id} [${f.status}]`);
154
+ }
155
+ });
156
+ createdByTrap(cmd
157
+ .command('history')
158
+ .description('Show version history of a face (newest first)')
159
+ .argument('<owner_skill>', 'Owner skill')).action(async (ownerSkill, options) => {
160
+ denyCreatedBy(options);
161
+ const { store } = createCliContainer(baseDir);
162
+ const versions = (await facesOfOwner(store, ownerSkill)).sort((a, b) => Number(b.version) - Number(a.version));
163
+ if (versions.length === 0)
164
+ throw new UserFacingError(`No face found for ${ownerSkill}`);
165
+ for (const f of versions) {
166
+ const based = f.based_on ? `based_on=${f.based_on} ` : '';
167
+ console.log(`v${f.version} ${f.id} [${f.status}] initiator=${f.initiator} ${based}at=${f.created_at} ${f.reason}`);
168
+ }
169
+ });
170
+ createdByTrap(cmd
171
+ .command('show')
172
+ .description('Show the current face version: metadata and body')
173
+ .argument('<owner_skill>', 'Owner skill')).action(async (ownerSkill, options) => {
174
+ denyCreatedBy(options);
175
+ const { store } = createCliContainer(baseDir);
176
+ const active = (await facesOfOwner(store, ownerSkill))
177
+ .filter((f) => f.status === 'active')
178
+ .sort((a, b) => Number(b.version) - Number(a.version))[0];
179
+ if (!active)
180
+ throw new UserFacingError(`No active face for ${ownerSkill}`);
181
+ console.log(`${active.owner_skill} v${active.version} ${active.id} [${active.status}]`);
182
+ console.log(`initiator: ${active.initiator}`);
183
+ console.log(`reason: ${active.reason}`);
184
+ console.log(`based_on: ${active.based_on ?? '—'}`);
185
+ console.log(`title: ${active.title}`);
186
+ if (active.tags && active.tags.length > 0)
187
+ console.log(`tags: ${active.tags.join(', ')}`);
188
+ console.log(`created: ${active.created_at}`);
189
+ console.log('---');
190
+ console.log(active.body ?? '');
191
+ });
192
+ return cmd;
193
+ }
194
+ //# sourceMappingURL=face.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"face.js","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/face.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"memory-add.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAgB5C,uFAAuF;AACvF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iGAAiG;IACjG,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsD5F;AAGD,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,MAAkB,GAAG,OAAO,CA+BrE"}
1
+ {"version":3,"file":"memory-add.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAgB5C,uFAAuF;AACvF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iGAAiG;IACjG,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsD5F;AAGD,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,MAAkB,GAAG,OAAO,CAkCrE"}
@@ -82,7 +82,7 @@ export function memoryAddCommand(baseDir = safeCwd()) {
82
82
  .option('--importance <n>', 'Importance from 0 to 1', parseFloat)
83
83
  .option('--set <k=v>', 'Extra field key=value (repeatable; "[a,b]" value is a string array)', collectSet, [])
84
84
  .option('--scope <scope>', 'Scope field for types that declare one (rule: project|global; also main or worktree:<name>)')
85
- .option('--facet <facet>', 'Note facet (required for note; howto|pitfall|context|metric|history|legacy|constraint)')
85
+ .option('--facet <facet>', 'Note facet (required for note; howto|pitfall|context|metric|history|legacy|constraint|proposal)')
86
86
  .option('--created-by <actor>', 'Creator actor (default: env WOLF_ACTOR, else user:cli)')
87
87
  .action(withCliCall('add', (options) => runAddAction(baseDir, options),
88
88
  // волна 0 0.1: args_summary в mcp_call-сигнал (body не попадает);
@@ -1 +1 @@
1
- {"version":3,"file":"memory-add.js","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-add.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-add.js","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-add.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,26 @@
1
1
  import { Command } from 'commander';
2
2
  import type { PlatformAdapter } from '../../../ports/platform-adapter.port.js';
3
+ import type { MemoryObject } from '../../../domain/schemas/memory-object-schema.js';
3
4
  /** 2.16.2 (REQ-02): строки несоответствия «установлено под v1, рантайм v2» для runDoctor. */
4
5
  export declare function makeDetectMismatch(adapters: PlatformAdapter[]): (path: string) => Promise<string[]>;
6
+ /** Волна 2.17 NFR-02 (design §Проверка целостности): находка гигиены лиц. */
7
+ export interface FaceLintFinding {
8
+ file: string;
9
+ issue: string;
10
+ }
11
+ /**
12
+ * Волна 2.17 NFR-02: гигиена канонических лиц за один проход по store.list
13
+ * (без вложенных полных проходов): (а) >1 активной face одного owner_skill;
14
+ * (в) based_on указывает на несуществующий id; (г) активная legacy-playbook
15
+ * (note + facet howto + owner_skill) рядом с активной face того же владельца.
16
+ * (б) face вне контракта — файлы shared/faces/, отбракованные парсером store
17
+ * (faceProblems): в list() они молча выпадают, поэтому идут отдельным входом.
18
+ * Активная face = status 'active' (та же семантика, что у activeFace в
19
+ * create-face-version.ts); superseded/archived legacy гасят проверку (г).
20
+ */
21
+ export declare function lintFaces(objects: MemoryObject[], faceProblems: {
22
+ path: string;
23
+ error: string;
24
+ }[]): FaceLintFinding[];
5
25
  export declare function memoryDoctorCommand(): Command;
6
26
  //# sourceMappingURL=memory-doctor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory-doctor.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAyD/E,6FAA6F;AAC7F,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAmBnG;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CA6K7C"}
1
+ {"version":3,"file":"memory-doctor.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAO/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAC;AAmDpF,6FAA6F;AAC7F,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAmBnG;AAED,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAOD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,YAAY,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,eAAe,EAAE,CA4CrH;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAgM7C"}
@@ -1,5 +1,5 @@
1
1
  import { Command } from 'commander';
2
- import { join, sep } from 'path';
2
+ import { join, relative, sep } from 'path';
3
3
  import { existsSync, readdirSync, realpathSync, readFileSync } from 'fs';
4
4
  import { readFile } from 'fs/promises';
5
5
  import { tmpdir } from 'os';
@@ -18,7 +18,7 @@ import { PLATFORM_ADAPTERS, CANONICAL_MCP_COMMAND } from '../../../adapters/plat
18
18
  import { createCliContainer } from '../../../bootstrap/container.js';
19
19
  import { safeCwd } from '../cli-entry.js';
20
20
  import { repairStorage } from '../../../app/use-cases/repair-storage.js';
21
- import { eventsPath } from '../../../adapters/fs/project-paths.js';
21
+ import { eventsPath, memoryDir, sharedDir } from '../../../adapters/fs/project-paths.js';
22
22
  import { maskSecrets } from '../../../domain/mask-secrets.js';
23
23
  import { UserFacingError } from '../../../domain/errors.js';
24
24
  /**
@@ -95,6 +95,71 @@ export function makeDetectMismatch(adapters) {
95
95
  return issues;
96
96
  };
97
97
  }
98
+ function ownerSkillOf(o) {
99
+ const v = o.owner_skill;
100
+ return typeof v === 'string' && v !== '' ? v : null;
101
+ }
102
+ /**
103
+ * Волна 2.17 NFR-02: гигиена канонических лиц за один проход по store.list
104
+ * (без вложенных полных проходов): (а) >1 активной face одного owner_skill;
105
+ * (в) based_on указывает на несуществующий id; (г) активная legacy-playbook
106
+ * (note + facet howto + owner_skill) рядом с активной face того же владельца.
107
+ * (б) face вне контракта — файлы shared/faces/, отбракованные парсером store
108
+ * (faceProblems): в list() они молча выпадают, поэтому идут отдельным входом.
109
+ * Активная face = status 'active' (та же семантика, что у activeFace в
110
+ * create-face-version.ts); superseded/archived legacy гасят проверку (г).
111
+ */
112
+ export function lintFaces(objects, faceProblems) {
113
+ const findings = [];
114
+ const faceIds = new Set();
115
+ const activeFaces = [];
116
+ for (const o of objects) {
117
+ if (o.type !== 'face')
118
+ continue;
119
+ faceIds.add(o.id);
120
+ const owner = ownerSkillOf(o);
121
+ if (o.status === 'active' && owner !== null)
122
+ activeFaces.push({ id: o.id, owner });
123
+ }
124
+ const activeByOwner = new Map();
125
+ for (const f of activeFaces)
126
+ activeByOwner.set(f.owner, (activeByOwner.get(f.owner) ?? 0) + 1);
127
+ for (const f of activeFaces) {
128
+ const n = activeByOwner.get(f.owner) ?? 0;
129
+ if (n > 1) {
130
+ findings.push({
131
+ file: f.id,
132
+ issue: `duplicate canonical face for ${f.owner} (${n} active — exactly one allowed)`,
133
+ });
134
+ }
135
+ }
136
+ for (const o of objects) {
137
+ if (o.type !== 'face')
138
+ continue;
139
+ const based = o.based_on;
140
+ if (typeof based === 'string' && based !== '' && !faceIds.has(based)) {
141
+ findings.push({ file: o.id, issue: `based_on ${based} does not exist` });
142
+ }
143
+ }
144
+ const activeFaceOwners = new Set(activeFaces.map((f) => f.owner));
145
+ for (const o of objects) {
146
+ if (o.type !== 'note' || o.facet !== 'howto')
147
+ continue;
148
+ const owner = ownerSkillOf(o);
149
+ if (owner === null || o.status === 'superseded' || o.status === 'archived')
150
+ continue;
151
+ if (activeFaceOwners.has(owner)) {
152
+ findings.push({
153
+ file: o.id,
154
+ issue: `active legacy playbook for ${owner} alongside a face — run wolf face migrate / supersede the legacy note`,
155
+ });
156
+ }
157
+ }
158
+ for (const p of faceProblems) {
159
+ findings.push({ file: p.path, issue: `face does not match its contract: ${p.error}` });
160
+ }
161
+ return findings;
162
+ }
98
163
  export function memoryDoctorCommand() {
99
164
  return new Command('doctor')
100
165
  .description('Check all registered projects: binary vs schema version, platform configs, prune dead entries')
@@ -258,7 +323,9 @@ export function memoryDoctorCommand() {
258
323
  const worktreesDir = join(memoryRoot, '.git', 'worktrees');
259
324
  const live = existsSync(worktreesDir) ? readdirSync(worktreesDir) : [];
260
325
  const orphan = new Map();
261
- for (const o of await store.list()) {
326
+ // один проход store.list — общий для orphan-проверки (WP3) и гигиены лиц (2.17 NFR-02)
327
+ const objects = await store.list();
328
+ for (const o of objects) {
262
329
  const s = o.scope;
263
330
  if (typeof s === 'string' && s.startsWith('worktree:') && !live.includes(s.slice('worktree:'.length))) {
264
331
  orphan.set(s, (orphan.get(s) ?? 0) + 1);
@@ -270,6 +337,23 @@ export function memoryDoctorCommand() {
270
337
  for (const [scope, n] of orphan)
271
338
  console.log(`! ${scope}: ${n} object(s) — worktree no longer exists`);
272
339
  }
340
+ // 2.17 NFR-02: гигиена канонических лиц. Файлы faces/, не прошедшие
341
+ // контрактную валидацию, в store.list молча выпадают — их видит только
342
+ // scanProblems (прецедент memory-validate.ts); прогон только при
343
+ // существующем каталоге faces, чтобы doctor без лиц не замедлялся.
344
+ const facesSubdir = join(sharedDir(memoryRoot), 'faces');
345
+ const faceProblems = existsSync(facesSubdir)
346
+ ? (await store.scanProblems())
347
+ .filter((p) => p.path.startsWith(facesSubdir + sep))
348
+ .map((p) => ({ path: relative(memoryDir(memoryRoot), p.path), error: p.error }))
349
+ : [];
350
+ const faceFindings = lintFaces(objects, faceProblems);
351
+ if (faceFindings.length > 0) {
352
+ console.log();
353
+ console.log('## Faces (canonical playbooks)');
354
+ for (const f of faceFindings)
355
+ console.log(`! ${f.file}: ${maskSecrets(f.issue)}`);
356
+ }
273
357
  });
274
358
  }
275
359
  //# sourceMappingURL=memory-doctor.js.map