mister-wolf 2.32.2 → 3.0.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 (132) hide show
  1. package/README.md +11 -9
  2. package/README.ru.md +11 -9
  3. package/dist/adapters/cli/commands/complaint-target.d.ts +32 -0
  4. package/dist/adapters/cli/commands/complaint-target.d.ts.map +1 -0
  5. package/dist/adapters/cli/commands/complaint-target.js +131 -0
  6. package/dist/adapters/cli/commands/complaint-target.js.map +1 -0
  7. package/dist/adapters/cli/commands/memory-call.d.ts.map +1 -1
  8. package/dist/adapters/cli/commands/memory-call.js +3 -1
  9. package/dist/adapters/cli/commands/memory-call.js.map +1 -1
  10. package/dist/adapters/cli/commands/memory-complain.d.ts +2 -7
  11. package/dist/adapters/cli/commands/memory-complain.d.ts.map +1 -1
  12. package/dist/adapters/cli/commands/memory-complain.js +17 -36
  13. package/dist/adapters/cli/commands/memory-complain.js.map +1 -1
  14. package/dist/adapters/cli/commands/memory-init.d.ts.map +1 -1
  15. package/dist/adapters/cli/commands/memory-init.js +4 -49
  16. package/dist/adapters/cli/commands/memory-init.js.map +1 -1
  17. package/dist/adapters/cli/commands/memory-scaffold.d.ts.map +1 -1
  18. package/dist/adapters/cli/commands/memory-scaffold.js +4 -1
  19. package/dist/adapters/cli/commands/memory-scaffold.js.map +1 -1
  20. package/dist/adapters/cli/commands/memory-upgrade.d.ts.map +1 -1
  21. package/dist/adapters/cli/commands/memory-upgrade.js +14 -1
  22. package/dist/adapters/cli/commands/memory-upgrade.js.map +1 -1
  23. package/dist/adapters/platforms/opencode-config-keys.d.ts +1 -1
  24. package/dist/adapters/platforms/opencode-config-keys.d.ts.map +1 -1
  25. package/dist/adapters/platforms/opencode-config-keys.js +1 -1
  26. package/dist/adapters/platforms/opencode-config-keys.js.map +1 -1
  27. package/dist/app/use-cases/decisions.d.ts +2 -0
  28. package/dist/app/use-cases/decisions.d.ts.map +1 -1
  29. package/dist/app/use-cases/decisions.js +31 -2
  30. package/dist/app/use-cases/decisions.js.map +1 -1
  31. package/dist/app/use-cases/generate-recap.js +1 -1
  32. package/dist/app/use-cases/generate-recap.js.map +1 -1
  33. package/dist/app/use-cases/get-call-injections.d.ts +3 -2
  34. package/dist/app/use-cases/get-call-injections.d.ts.map +1 -1
  35. package/dist/app/use-cases/get-call-injections.js +1 -1
  36. package/dist/app/use-cases/get-call-injections.js.map +1 -1
  37. package/dist/app/use-cases/init-project.d.ts +4 -8
  38. package/dist/app/use-cases/init-project.d.ts.map +1 -1
  39. package/dist/app/use-cases/init-project.js +3 -36
  40. package/dist/app/use-cases/init-project.js.map +1 -1
  41. package/dist/app/use-cases/lint-artifacts.d.ts.map +1 -1
  42. package/dist/app/use-cases/lint-artifacts.js +53 -17
  43. package/dist/app/use-cases/lint-artifacts.js.map +1 -1
  44. package/dist/app/use-cases/scaffold-agent.d.ts +3 -2
  45. package/dist/app/use-cases/scaffold-agent.d.ts.map +1 -1
  46. package/dist/app/use-cases/scaffold-agent.js +23 -43
  47. package/dist/app/use-cases/scaffold-agent.js.map +1 -1
  48. package/dist/app/use-cases/scaffold-artifact.d.ts.map +1 -1
  49. package/dist/app/use-cases/scaffold-artifact.js +42 -4
  50. package/dist/app/use-cases/scaffold-artifact.js.map +1 -1
  51. package/package.json +1 -1
  52. package/templates/base/AGENTS.md +42 -69
  53. package/templates/base/README.md +1 -1
  54. package/templates/base/agents/mr-wolf.md +150 -212
  55. package/templates/base/agents/wolf-architect.md +38 -0
  56. package/templates/base/agents/wolf-developer.md +42 -0
  57. package/templates/base/agents/wolf-editor.md +38 -0
  58. package/templates/base/agents/wolf-expert.md +57 -0
  59. package/templates/base/agents/wolf-release-engineer.md +38 -0
  60. package/templates/base/agents/wolf-researcher.md +42 -0
  61. package/templates/base/agents/wolf-reviewer.md +42 -0
  62. package/templates/base/agents/wolf-tester.md +38 -0
  63. package/templates/base/commands/analyze-doc.md +7 -7
  64. package/templates/base/commands/complain.md +16 -4
  65. package/templates/base/commands/doc-review.md +4 -4
  66. package/templates/base/skills/finishing-a-development-branch/SKILL.md +5 -55
  67. package/templates/base/skills/receiving-code-review/SKILL.md +5 -44
  68. package/templates/base/skills/requesting-code-review/SKILL.md +5 -52
  69. package/templates/base/skills/test-driven-development/SKILL.md +7 -7
  70. package/templates/base/skills/using-git-worktrees/SKILL.md +5 -41
  71. package/templates/base/skills/using-skills/SKILL.md +17 -18
  72. package/templates/base/skills/using-skills/references/agent-language.md +2 -2
  73. package/templates/base/skills/using-skills/references/context-and-memory.md +23 -21
  74. package/templates/base/skills/using-skills/references/contracts.md +13 -13
  75. package/templates/base/skills/using-skills/references/division-of-labor.md +25 -17
  76. package/templates/base/skills/using-skills/references/project-rules.md +28 -8
  77. package/templates/base/skills/using-skills/references/project-tools.md +5 -5
  78. package/templates/base/skills/using-skills/references/routes-capabilities.md +3 -3
  79. package/templates/base/skills/using-skills/references/routes-communication.md +15 -2
  80. package/templates/base/skills/using-skills/references/routes-execution.md +13 -12
  81. package/templates/base/skills/using-skills/references/routes-intent.md +3 -3
  82. package/templates/base/skills/using-skills/references/routes-quality.md +2 -2
  83. package/templates/base/skills/verification-before-completion/SKILL.md +9 -7
  84. package/templates/base/skills/wolf-agent-language/SKILL.md +47 -0
  85. package/templates/base/skills/wolf-brainstorm/SKILL.md +15 -13
  86. package/templates/base/skills/wolf-code-craft/SKILL.md +4 -2
  87. package/templates/base/skills/wolf-council/SKILL.md +11 -11
  88. package/templates/base/skills/wolf-debug/SKILL.md +17 -17
  89. package/templates/base/skills/wolf-debug/references/techniques.md +2 -2
  90. package/templates/base/skills/wolf-design/SKILL.md +8 -6
  91. package/templates/base/skills/wolf-document-readability/SKILL.md +114 -0
  92. package/templates/base/skills/wolf-execute/SKILL.md +20 -17
  93. package/templates/base/skills/wolf-execute/references/technical-helpers.md +5 -5
  94. package/templates/base/skills/wolf-execute/scripts/workflow-helper.py +1 -1
  95. package/templates/base/skills/wolf-explain/SKILL.md +3 -3
  96. package/templates/base/skills/wolf-feedback/SKILL.md +9 -9
  97. package/templates/base/skills/wolf-feedback/references/complaints.md +24 -25
  98. package/templates/base/skills/wolf-feedback/references/session-diagnosis.md +2 -2
  99. package/templates/base/skills/wolf-git/SKILL.md +5 -1
  100. package/templates/base/skills/wolf-handoff/SKILL.md +14 -14
  101. package/templates/base/skills/wolf-memory/SKILL.md +39 -0
  102. package/templates/base/skills/wolf-plan/SKILL.md +19 -13
  103. package/templates/base/skills/wolf-release/SKILL.md +16 -0
  104. package/templates/base/skills/wolf-release-docs/SKILL.md +5 -5
  105. package/templates/base/skills/wolf-requirements/SKILL.md +16 -0
  106. package/templates/base/skills/wolf-review/SKILL.md +30 -23
  107. package/templates/base/skills/wolf-sdd/SKILL.md +5 -85
  108. package/templates/base/skills/wolf-skill-intake/SKILL.md +6 -35
  109. package/templates/base/skills/wolf-software-design/SKILL.md +4 -2
  110. package/templates/base/skills/wolf-test/SKILL.md +17 -0
  111. package/templates/base/skills/wolf-testplan/SKILL.md +2 -2
  112. package/templates/base/skills/wolf-user-report/SKILL.md +12 -5
  113. package/templates/base/skills/wolf-visual-dialogue/SKILL.md +5 -41
  114. package/templates/base/skills/wolf-work-strategy/SKILL.md +6 -69
  115. package/templates/base/skills/writing-skills/SKILL.md +6 -6
  116. package/templates/opencode/plugins-reserved/README.md +4 -0
  117. package/update-map.json +141 -71
  118. package/templates/base/agents/executor-lead.md +0 -335
  119. package/templates/base/agents/steward.md +0 -149
  120. package/templates/base/agents/worker-expert.md +0 -135
  121. package/templates/base/agents/worker-implementer.md +0 -103
  122. package/templates/base/agents/worker-researcher.md +0 -110
  123. package/templates/base/agents/worker-reviewer.md +0 -115
  124. package/templates/base/playbooks/complaint-protocol.md +0 -19
  125. package/templates/base/playbooks/executor-lead-playbook.md +0 -103
  126. package/templates/base/playbooks/steward-nastavnik.md +0 -90
  127. package/templates/base/playbooks/worker-expert-playbook.md +0 -35
  128. package/templates/base/playbooks/worker-implementer-playbook.md +0 -80
  129. package/templates/base/playbooks/worker-researcher-playbook.md +0 -71
  130. package/templates/base/playbooks/worker-reviewer-playbook.md +0 -37
  131. /package/templates/opencode/{plugins → plugins-reserved}/wolf-router.ts +0 -0
  132. /package/templates/opencode/{plugins → plugins-reserved}/wolf-session-start.js +0 -0
package/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
  >
9
9
  > A permanent project organization built from temporary AI assistants.
10
10
 
11
- Mr. Wolf organizes AI work around your goal. It connects agents, skills, tools, rules and project memory into a process: understand the need, organize delivery, check the result and retain what matters for the next session. Through the Steward, feedback and experience can become controlled changes to how the organization works.
11
+ Mr. Wolf organizes AI work around your goal. It connects agents, skills, tools, rules and project memory into a process: understand the need, organize delivery, check the result and retain what matters for the next session. Complaints and lessons are recorded with their reasons and history, so feedback can become controlled changes to how the organization works.
12
12
 
13
13
  Wolf is also your point of contact with that organization: explain what you need in ordinary language, discuss meaningful choices, and receive a result you can understand and assess.
14
14
 
@@ -16,11 +16,11 @@ Wolf is also your point of contact with that organization: explain what you need
16
16
 
17
17
  ## Why Wolf
18
18
 
19
- - **Keep the goal in view.** L0 owns the goal and final acceptance; L1 organizes delivery; L2 workers execute bounded tasks. This separation keeps local technical work connected to the intended outcome over a long assignment.
20
- - **Connect the methods.** A process determines which skills, rules, context and tools apply, what to delegate, when to ask and how to verify. A worker's face and assigned skills supply the specialization its task needs.
19
+ - **Keep the goal in view.** mr-wolf, the lead agent, owns the goal and final acceptance: it executes work itself and hires the eight `wolf-` specialists directly — `wolf-architect`, `wolf-developer`, `wolf-editor`, `wolf-expert`, `wolf-release-engineer`, `wolf-researcher`, `wolf-reviewer`, `wolf-tester`. Executors do not delegate further: no intermediate level sits between the lead and the agent doing the work, and the lead stays accountable for the outcome over a long assignment.
20
+ - **Connect the methods.** A process determines which skills, rules, context and tools apply, what to delegate, when to ask and how to verify. Assigned skills supply each executor's specialization; a new independent piece of work gets a fresh executor, reuse is bounded to defined continuation cases, and the lead's own work passes the same independent review.
21
21
  - **Continue across sessions.** Project documents are part of memory, alongside decisions, working state and lessons. Original documents stay canonical in their own files; Wolf records references and relevant context for later work.
22
- - **Change future behavior through the Steward.** Complaints can lead to versioned playbook changes; mature lessons can be aggregated. Changes retain reasons and history, and face versions support rollback. This is organizational learning, not model-weight training.
23
- - **Work comfortably with people.** Intent dialogue, clear explanations and timely questions are part of the working method. Internal worker reports are integrated into a useful human-facing answer.
22
+ - **Learn from feedback.** Complaints and proposals are accepted and recorded with reasons and history; mature lessons can be aggregated. The Steward, which turned such feedback into automatic versioned method changes, is temporarily out of the standard routing and returns in the next release; its mechanisms and history are preserved. This is organizational learning, not model-weight training.
23
+ - **Work comfortably with people.** Intent dialogue, clear explanations and timely questions are part of the working method. Internal executor reports are integrated into a useful human-facing answer.
24
24
  - **Accumulate capabilities you own.** Useful scripts and methods can become reusable project resources. Local files, CLI and MCP keep project state under your control; model calls still use your configured provider.
25
25
 
26
26
  The [product guide](https://chekh.github.io/mister-wolf/guide/overview) explains how these pieces work together. [Comparison by approach](https://chekh.github.io/mister-wolf/guide/capabilities#how-wolf-relates-to-other-solutions) shows the relationship to agent memory, skill collections, harnesses and multi-agent frameworks, without an invented performance ranking.
@@ -36,7 +36,7 @@ wolf init --full --platform opencode
36
36
  wolf bootstrap
37
37
  ```
38
38
 
39
- The package name is **`mister-wolf`**; `mr-wolf` is a different package. Restart OpenCode after initialization so its project MCP configuration and default agent load.
39
+ The package name is **`mister-wolf`**; `mr-wolf` is a different package. `wolf init` requires the project marker in the directory: an empty directory without it is refused instead of being initialized silently. The standard process needs no mandatory plugins — the agent definitions, a short `AGENTS.md` starter block, skill loading and addressed handoff are enough. Restart OpenCode after initialization so its project MCP configuration and default agent load.
40
40
 
41
41
  Then give Wolf an outcome, for example:
42
42
 
@@ -48,7 +48,7 @@ Wolf's supplied methods direct it to clarify the goal, organize bounded work, ch
48
48
 
49
49
  ## Everyday use and updates
50
50
 
51
- Discuss a task or correction with Wolf in your agent environment. [Working with Wolf](https://chekh.github.io/mister-wolf/guide/working-with-wolf) covers clarification, progress, continuation and feedback. [The Steward](https://chekh.github.io/mister-wolf/guide/feedback) explains how experience can change methods and how you retain control.
51
+ Discuss a task or correction with Wolf in your agent environment. [Working with Wolf](https://chekh.github.io/mister-wolf/guide/working-with-wolf) covers clarification, progress, continuation and feedback. [Feedback](https://chekh.github.io/mister-wolf/guide/feedback) explains how complaints and lessons are recorded and how you retain control. The CLI also ships three commands: `analyze-doc` and `doc-review` for document analysis and review, `complain` to file a complaint about an agent, a skill or a memory note.
52
52
 
53
53
  ```bash
54
54
  wolf upgrade --check # inspect CLI and registered-project freshness
@@ -57,10 +57,12 @@ wolf upgrade # update the package and registered projects
57
57
 
58
58
  Review local modifications before choosing an update resolution. [Upgrade workflow](https://chekh.github.io/mister-wolf/guide/upgrade) explains diffs, protection and backups.
59
59
 
60
+ Updating an installed project to 3.0.0 with `wolf upgrade` delivers the current set and reserves your local edits and the removed Wolf plugins under `.wolf/backup/upgrade/<date>/`. The shipped agents carry persistent `wolf-` names; a repeated upgrade reports the project up to date and does not bring the old hierarchy back. Migrating from a pilot installation follows a separate instruction — see the 3.0.0 upgrade notes in the [changelog](CHANGELOG.md).
61
+
60
62
  ## Scope and development
61
63
 
62
- Wolf's organizational methods are applicable beyond coding; the shipped set includes research, document work and reports. The current delivery is repository-based and OpenCode-first. MCP access or another platform's configuration does not imply the complete organization is validated there. The expert council is shipped as a method, not an automatic runtime: a `worker-expert` role with a read-only channel inside the project boundary (code included; writes, shell, subagents, web fetch and external directories denied), the `wolf-council` method for L1, and a durable record path (`wolf council record`); see the [expert council guide](https://chekh.github.io/mister-wolf/guide/council). A user console and durable execution are not current guarantees. See [capabilities and boundaries](https://chekh.github.io/mister-wolf/guide/capabilities). [Read isolation](https://chekh.github.io/mister-wolf/guide/read-isolation) applies to context delivery through `wolf call`; it is not general read access control.
64
+ Wolf's organizational methods are applicable beyond coding; the shipped set includes research, document work and reports. The current delivery is repository-based and OpenCode-first. MCP access or another platform's configuration does not imply the complete organization is validated there. The expert council is shipped as a method, not an automatic runtime: a `wolf-expert` role with a read-only channel inside the project boundary (code included; writes, shell, subagents, web fetch and external directories denied), the `wolf-council` method for the lead agent, and a durable record path (`wolf council record`); see the [expert council guide](https://chekh.github.io/mister-wolf/guide/council). A user console and durable execution are not current guarantees. See [capabilities and boundaries](https://chekh.github.io/mister-wolf/guide/capabilities). [Read isolation](https://chekh.github.io/mister-wolf/guide/read-isolation) applies to context delivery through `wolf call`; it is not general read access control.
63
65
 
64
- The **website is the canonical user documentation**; its source is `docs/site/`. [Engineering documents](docs/README.md) retain the concept, requirements, designs and roadmap in Git. [Contributing](CONTRIBUTING.md) describes development and documentation checks. No comparative speed, cost or quality improvement is promised without an applicable observation.
66
+ The **website is the canonical user documentation**; its source is `docs/site/`. [Engineering documents](docs/README.md) retain the concept, requirements, designs and roadmap in Git. [Contributing](CONTRIBUTING.md) describes development and documentation checks. No measured speed, cost or quality effect is claimed: faster answers are the owner's observation, not a measurement, and there are no skill-usage counters — cost can be assessed only from raw usage records.
65
67
 
66
68
  MIT · [License](LICENSE) · [Release history](https://chekh.github.io/mister-wolf/changelog/)
package/README.ru.md CHANGED
@@ -8,7 +8,7 @@
8
8
  >
9
9
  > Постоянная проектная организация из временных AI-помощников.
10
10
 
11
- Mr. Wolf организует работу AI-помощников вокруг вашей цели. Он связывает агентов, скиллы, инструменты, правила и память проекта в процесс: понять потребность, организовать выполнение, проверить результат и сохранить существенное для следующей сессии. Через Стюарда обратная связь и опыт могут превращаться в управляемые изменения способов работы организации.
11
+ Mr. Wolf организует работу AI-помощников вокруг вашей цели. Он связывает агентов, скиллы, инструменты, правила и память проекта в процесс: понять потребность, организовать выполнение, проверить результат и сохранить существенное для следующей сессии. Жалобы и уроки сохраняются с причинами и историей, так что обратная связь может превращаться в управляемые изменения способов работы организации.
12
12
 
13
13
  Wolf — ваша точка общения с этой организацией: объясните потребность обычным языком, обсудите существенные решения и получите результат, который можно понять и оценить.
14
14
 
@@ -16,11 +16,11 @@ Wolf — ваша точка общения с этой организацией
16
16
 
17
17
  ## Зачем Wolf
18
18
 
19
- - **Удерживать цель.** L0 отвечает за цель и итоговую приёмку; L1 организует поставку; L2 выполняют ограниченные задачи. Разделение ответственности сохраняет связь частной технической работы с ожидаемым результатом на длинном пути.
20
- - **Связывать методы.** Процесс определяет применимые скиллы, правила, контекст и инструменты, распределение задач, момент вопроса и способ проверки. Лицо воркера и назначенные скиллы задают нужную специализацию.
19
+ - **Удерживать цель.** mr-wolf — ведущий агент: он отвечает за цель и итоговую приёмку, выполняет работу сам и нанимает восемь специалистов `wolf-*` напрямую — `wolf-architect`, `wolf-developer`, `wolf-editor`, `wolf-expert`, `wolf-release-engineer`, `wolf-researcher`, `wolf-reviewer`, `wolf-tester`. Исполнители не делегируют дальше: между ведущим и исполняющим работу агентом нет промежуточного уровня, и ведущий остаётся ответственным за результат на длинном пути.
20
+ - **Связывать методы.** Процесс определяет применимые скиллы, правила, контекст и инструменты, распределение задач, момент вопроса и способ проверки. Назначенные скиллы задают специализацию исполнителя; новая самостоятельная работа получает свежего исполнителя, повторное использование ограничено случаями продолжения, а собственная работа ведущего проходит то же независимое ревью.
21
21
  - **Продолжать между сессиями.** Документы проекта — часть памяти наряду с решениями, рабочим состоянием и уроками. Исходные документы остаются каноничными в своих файлах; Wolf сохраняет ссылки и относящийся контекст для дальнейшей работы.
22
- - **Менять будущее поведение через Стюарда.** Жалобы могут приводить к новым версиям методик; зрелые уроки — обобщаться. Сохраняются причины и история изменений, для версий лиц доступен откат. Это обучение организации, а не обучение весов модели.
23
- - **Комфортно общаться с человеком.** Содержательное уточнение намерения, ясное объяснение и своевременный вопрос входят в методику работы. Внутренние отчёты воркеров собираются в полезный ответ пользователю.
22
+ - **Учиться на обратной связи.** Жалобы и предложения принимаются и сохраняются с причинами и историей; зрелые уроки могут обобщаться. Стюард, превращавший такую обратную связь в автоматические версионированные изменения методик, временно выведен из штатной маршрутизации и вернётся в следующем выпуске; его механизмы и история сохранены. Это обучение организации, а не обучение весов модели.
23
+ - **Комфортно общаться с человеком.** Содержательное уточнение намерения, ясное объяснение и своевременный вопрос входят в методику работы. Внутренние отчёты исполнителей собираются в полезный ответ пользователю.
24
24
  - **Накапливать собственные способности.** Полезные скрипты и методы могут становиться ресурсами проекта. Локальные файлы, CLI и MCP сохраняют контроль над состоянием; обращения к модели используют настроенного вами провайдера.
25
25
 
26
26
  [Обзор продукта](https://chekh.github.io/mister-wolf/ru/guide/overview) объясняет связи компонентов. [Сравнение подходов](https://chekh.github.io/mister-wolf/ru/guide/capabilities#связь-с-другими-решениями) показывает отношение к памяти агентов, наборам скиллов, харнесам и мультиагентным фреймворкам без вымышленного рейтинга эффективности.
@@ -36,7 +36,7 @@ wolf init --full --platform opencode
36
36
  wolf bootstrap
37
37
  ```
38
38
 
39
- Имя пакета — **`mister-wolf`**; `mr-wolf` — другой пакет. После инициализации перезапустите OpenCode, чтобы загрузились проектный MCP-конфиг и агент по умолчанию.
39
+ Имя пакета — **`mister-wolf`**; `mr-wolf` — другой пакет. `wolf init` требует маркер проекта в каталоге: пустой каталог без него отклоняется вместо молчаливой инициализации. Штатный процесс не требует обязательных плагинов — достаточно определений агентов, короткого стартового блока `AGENTS.md`, загрузки методик и адресного handoff. После инициализации перезапустите OpenCode, чтобы загрузились проектный MCP-конфиг и агент по умолчанию.
40
40
 
41
41
  Затем поручите Wolf результат, например:
42
42
 
@@ -48,7 +48,7 @@ wolf bootstrap
48
48
 
49
49
  ## Повседневная работа и обновление
50
50
 
51
- Обсуждайте задачу или замечание с Wolf в своей агентной среде. [Работа с Wolf](https://chekh.github.io/mister-wolf/ru/guide/working-with-wolf) описывает уточнение, прогресс, продолжение и обратную связь. [Стюард](https://chekh.github.io/mister-wolf/ru/guide/feedback) — изменение методик по опыту и сохранение вашего контроля.
51
+ Обсуждайте задачу или замечание с Wolf в своей агентной среде. [Работа с Wolf](https://chekh.github.io/mister-wolf/ru/guide/working-with-wolf) описывает уточнение, прогресс, продолжение и обратную связь. [Обратная связь](https://chekh.github.io/mister-wolf/ru/guide/feedback) описывает приём жалоб и уроков и сохранение вашего контроля. CLI также содержит три команды: `analyze-doc` и `doc-review` для анализа и ревью документов, `complain` — жалоба на агента, скилл или заметку памяти.
52
52
 
53
53
  ```bash
54
54
  wolf upgrade --check # проверить актуальность CLI и зарегистрированных проектов
@@ -57,10 +57,12 @@ wolf upgrade # обновить пакет и зарегистриро
57
57
 
58
58
  Перед выбором исхода обновления изучите локальные изменения. [Порядок обновления](https://chekh.github.io/mister-wolf/ru/guide/upgrade) объясняет diff, защиту и резервные копии.
59
59
 
60
+ Обновление установленного проекта до 3.0.0 через `wolf upgrade` доставляет текущий набор и резервирует ваши правки и снятые Wolf-плагины под `.wolf/backup/upgrade/<дата>/`. Штатные агенты носят постоянные имена `wolf-*`; повторное обновление сообщает, что проект актуален, и не возвращает старую иерархию. Переход с пилотной установки идёт по отдельной инструкции — см. upgrade-заметки 3.0.0 в [CHANGELOG](CHANGELOG.md).
61
+
60
62
  ## Границы и разработка
61
63
 
62
- Организационные методы Wolf применимы за пределами программирования; в поставке есть исследования, работа с документами и отчёты. Текущая реализация основана на репозитории и прежде всего OpenCode. Доступ по MCP или конфигурация другой платформы не означают проверенную полную организацию на ней. Экспертный консилиум поставлен как метод, а не автоматический рантайм: роль `worker-expert` с read-only каналом в границах проекта (включая код; запись, shell, субагенты, webfetch и внешние каталоги запрещены), методика `wolf-council` для L1 и запись консилиума (`wolf council record`); см. [руководство по консилиуму](https://chekh.github.io/mister-wolf/ru/guide/council). Пользовательская консоль и устойчивое выполнение после сбоя пока не гарантируются. См. [возможности и границы](https://chekh.github.io/mister-wolf/ru/guide/capabilities). [Изоляция чтения](https://chekh.github.io/mister-wolf/ru/guide/read-isolation) применяется к доставке через `wolf call`, а не к общему доступу на чтение.
64
+ Организационные методы Wolf применимы за пределами программирования; в поставке есть исследования, работа с документами и отчёты. Текущая реализация основана на репозитории и прежде всего OpenCode. Доступ по MCP или конфигурация другой платформы не означают проверенную полную организацию на ней. Экспертный консилиум поставлен как метод, а не автоматический рантайм: роль `wolf-expert` с read-only каналом в границах проекта (включая код; запись, shell, субагенты, webfetch и внешние каталоги запрещены), методика `wolf-council` для ведущего агента и запись консилиума (`wolf council record`); см. [руководство по консилиуму](https://chekh.github.io/mister-wolf/ru/guide/council). Пользовательская консоль и устойчивое выполнение после сбоя пока не гарантируются. См. [возможности и границы](https://chekh.github.io/mister-wolf/ru/guide/capabilities). [Изоляция чтения](https://chekh.github.io/mister-wolf/ru/guide/read-isolation) применяется к доставке через `wolf call`, а не к общему доступу на чтение.
63
65
 
64
- **Сайт — единая актуальная пользовательская документация**; исходники — `docs/site/`. [Инженерные документы](docs/README.md) сохраняют концепцию, требования, дизайн и роадмап в Git. [Contributing](CONTRIBUTING.md) описывает разработку и проверки документации. Сравнительный выигрыш в скорости, стоимости или качестве без соответствующего наблюдения не обещается.
66
+ **Сайт — единая актуальная пользовательская документация**; исходники — `docs/site/`. [Инженерные документы](docs/README.md) сохраняют концепцию, требования, дизайн и роадмап в Git. [Contributing](CONTRIBUTING.md) описывает разработку и проверки документации. Измеримый выигрыш в скорости, стоимости или качестве не заявляется: ускорение появления ответов — наблюдение владельца, а не измерение; счётчиков вызовов скиллов нет, затраты оцениваются только по исходным записям использования.
65
67
 
66
68
  MIT · [Лицензия](LICENSE) · [История выпусков](https://chekh.github.io/mister-wolf/ru/changelog/)
@@ -0,0 +1,32 @@
1
+ import type { FileSystem } from '../../../ports/file-system.port.js';
2
+ import type { MemoryStore } from '../../../ports/memory-store.port.js';
3
+ import { UserFacingError } from '../../../domain/errors.js';
4
+ export declare const COMPLAINT_KINDS: readonly ["technical", "behavioral"];
5
+ export type ComplaintKind = (typeof COMPLAINT_KINDS)[number];
6
+ /** Дисcovery-ошибка: источник состава существует, но нечитаем/неразбираем (D-A3). */
7
+ export declare class AgentDiscoveryError extends UserFacingError {
8
+ constructor(message: string);
9
+ }
10
+ export interface ComplaintTargetDeps {
11
+ fs: FileSystem;
12
+ baseDir: string;
13
+ /** Глобальный каталог конфигов OpenCode (resolveGlobalConfigDir); undefined — глобальные источники недоступны. */
14
+ globalConfigDir?: string;
15
+ store: Pick<MemoryStore, 'get'>;
16
+ }
17
+ export type ComplaintTargetResolution = {
18
+ known: true;
19
+ defaultKind: ComplaintKind;
20
+ } | {
21
+ known: false;
22
+ };
23
+ /**
24
+ * ЕДИНЫЙ резолв цели (D-A5): один вызов даёт и факт существования, и дефолтный
25
+ * kind (D-A6): агент/skill: → behavioral; существующий mem-id → technical.
26
+ */
27
+ export declare function resolveComplaintTarget(about: string, deps: ComplaintTargetDeps): Promise<ComplaintTargetResolution>;
28
+ /** Глобальный каталог конфигов OpenCode; без XDG_CONFIG_HOME и HOME — недоступен. */
29
+ export declare function resolveGlobalConfigDir(env: NodeJS.ProcessEnv): string | undefined;
30
+ /** Union имён агентов из всех поддержанных источников (D-A1). */
31
+ export declare function discoverAgentIds(deps: ComplaintTargetDeps): Promise<Set<string>>;
32
+ //# sourceMappingURL=complaint-target.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"complaint-target.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/complaint-target.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAI5D,eAAO,MAAM,eAAe,sCAAuC,CAAC;AACpE,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,qFAAqF;AACrF,qBAAa,mBAAoB,SAAQ,eAAe;gBAC1C,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,UAAU,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,kHAAkH;IAClH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;CACjC;AAED,MAAM,MAAM,yBAAyB,GAAG;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,aAAa,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAEvG;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,yBAAyB,CAAC,CAOpC;AAED,qFAAqF;AACrF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,SAAS,CAGjF;AAED,iEAAiE;AACjE,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CActF"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Резолвер цели жалобы по актуальному составу агентов действующей интеграции
3
+ * OpenCode (R-13a, релиз two-level-release 3.0.0). Заменяет константный список
4
+ * BASE_AGENT_IDS: состав — union поддержанных источников, каждый вызов команды
5
+ * делает свежий резолв (без кеша и статических списков).
6
+ *
7
+ * Источники (union, существование = найден в любом):
8
+ * (i) проектные определения: <baseDir>/.opencode/agents/<name>.md;
9
+ * (ii) глобальные: <XDG_CONFIG_HOME || ~/.config>/opencode/agents/<name>.md
10
+ * (env-резолв инъектится параметром — для тестов без реального $HOME);
11
+ * (iii) конфигурационные overrides: ключ "agent" в opencode.json|opencode.jsonc
12
+ * локаций CONFIG_LOCATIONS (корень проекта, .opencode) и в глобальном
13
+ * конфиге; имена агентов = ключи объекта "agent".
14
+ *
15
+ * Отсутствие каталога/файла — пустой источник; существующий, но нечитаемый или
16
+ * неразбираемый — AgentDiscoveryError (не смешивается с «неизвестной целью» и
17
+ * не пропускается молча). Содержимое агента не исполняется; имя md-файла = имя
18
+ * агента (документированный контракт OpenCode), frontmatter не требуется.
19
+ */
20
+ import { join } from 'path';
21
+ import { parseJsonc } from '../../platforms/jsonc.js';
22
+ import { CONFIG_LOCATIONS } from '../../platforms/opencode-config-keys.js';
23
+ import { UserFacingError } from '../../../domain/errors.js';
24
+ // Волна 2.14 §6.1: классификация жалоб technical/behavioral; дефолт — по резолву
25
+ // цели, флаг --kind переопределяет (владелец/лид всегда прав).
26
+ export const COMPLAINT_KINDS = ['technical', 'behavioral'];
27
+ /** Дисcovery-ошибка: источник состава существует, но нечитаем/неразбираем (D-A3). */
28
+ export class AgentDiscoveryError extends UserFacingError {
29
+ constructor(message) {
30
+ super(message);
31
+ this.name = 'AgentDiscoveryError';
32
+ }
33
+ }
34
+ /**
35
+ * ЕДИНЫЙ резолв цели (D-A5): один вызов даёт и факт существования, и дефолтный
36
+ * kind (D-A6): агент/skill: → behavioral; существующий mem-id → technical.
37
+ */
38
+ export async function resolveComplaintTarget(about, deps) {
39
+ if (about.startsWith('skill:'))
40
+ return { known: true, defaultKind: 'behavioral' };
41
+ if (about.startsWith('mem_')) {
42
+ return (await deps.store.get(about)) !== null ? { known: true, defaultKind: 'technical' } : { known: false };
43
+ }
44
+ const agents = await discoverAgentIds(deps);
45
+ return agents.has(about) ? { known: true, defaultKind: 'behavioral' } : { known: false };
46
+ }
47
+ /** Глобальный каталог конфигов OpenCode; без XDG_CONFIG_HOME и HOME — недоступен. */
48
+ export function resolveGlobalConfigDir(env) {
49
+ if (env.XDG_CONFIG_HOME)
50
+ return env.XDG_CONFIG_HOME;
51
+ return env.HOME ? join(env.HOME, '.config') : undefined;
52
+ }
53
+ /** Union имён агентов из всех поддержанных источников (D-A1). */
54
+ export async function discoverAgentIds(deps) {
55
+ const sources = [
56
+ mdAgentNames(deps.fs, join(deps.baseDir, '.opencode', 'agents')),
57
+ ...CONFIG_LOCATIONS.map((location) => configAgentNames(deps.fs, join(deps.baseDir, location.dir))),
58
+ ];
59
+ if (deps.globalConfigDir) {
60
+ const globalDir = join(deps.globalConfigDir, 'opencode');
61
+ sources.push(mdAgentNames(deps.fs, join(globalDir, 'agents')), configAgentNames(deps.fs, globalDir));
62
+ }
63
+ const names = new Set();
64
+ for (const source of sources) {
65
+ for (const name of await source)
66
+ names.add(name);
67
+ }
68
+ return names;
69
+ }
70
+ /** Имена агентов каталога: *.md, имя = basename без .md (D-A4). */
71
+ async function mdAgentNames(fs, dir) {
72
+ let entries;
73
+ try {
74
+ entries = await fs.listDirectory(dir);
75
+ }
76
+ catch (err) {
77
+ if (isNoSuchFileError(err))
78
+ return new Set(); // отсутствующий каталог — пустой источник
79
+ throw new AgentDiscoveryError(`Agent discovery failed: ${dir}: not readable: ${errorMessage(err)}`);
80
+ }
81
+ const names = new Set();
82
+ for (const entry of entries) {
83
+ if (!entry.isDirectory && entry.name.endsWith('.md'))
84
+ names.add(entry.name.slice(0, -'.md'.length));
85
+ }
86
+ return names;
87
+ }
88
+ /** Ключи "agent" конфига каталога: json приоритетен, jsonc — только при отсутствии json (D-A2). */
89
+ async function configAgentNames(fs, dir) {
90
+ const rawJson = await readConfigRaw(fs, join(dir, 'opencode.json'));
91
+ if (rawJson !== null)
92
+ return agentKeysOf(join(dir, 'opencode.json'), rawJson);
93
+ const rawJsonc = await readConfigRaw(fs, join(dir, 'opencode.jsonc'));
94
+ if (rawJsonc !== null)
95
+ return agentKeysOf(join(dir, 'opencode.jsonc'), rawJsonc);
96
+ return new Set();
97
+ }
98
+ async function readConfigRaw(fs, file) {
99
+ try {
100
+ return await fs.readSmallTextFile(file);
101
+ }
102
+ catch (err) {
103
+ throw new AgentDiscoveryError(`Agent discovery failed: ${file}: not readable: ${errorMessage(err)}`);
104
+ }
105
+ }
106
+ function agentKeysOf(file, raw) {
107
+ let parsed;
108
+ try {
109
+ parsed = parseJsonc(raw);
110
+ }
111
+ catch (err) {
112
+ throw new AgentDiscoveryError(`Agent discovery failed: ${file}: not valid JSONC: ${errorMessage(err)}`);
113
+ }
114
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
115
+ throw new AgentDiscoveryError(`Agent discovery failed: ${file}: not a JSON object`);
116
+ }
117
+ const agent = parsed['agent'];
118
+ if (agent === undefined)
119
+ return new Set();
120
+ if (typeof agent !== 'object' || agent === null || Array.isArray(agent)) {
121
+ throw new AgentDiscoveryError(`Agent discovery failed: ${file}: key "agent" is not a JSON object`);
122
+ }
123
+ return new Set(Object.keys(agent));
124
+ }
125
+ function errorMessage(err) {
126
+ return err instanceof Error ? err.message : String(err);
127
+ }
128
+ function isNoSuchFileError(err) {
129
+ return typeof err === 'object' && err !== null && 'code' in err && err.code === 'ENOENT';
130
+ }
131
+ //# sourceMappingURL=complaint-target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"complaint-target.js","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/complaint-target.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"memory-call.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BpC,wBAAgB,iBAAiB,IAAI,OAAO,CAiI3C"}
1
+ {"version":3,"file":"memory-call.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BpC,wBAAgB,iBAAiB,IAAI,OAAO,CAmI3C"}
@@ -72,7 +72,9 @@ export function memoryCallCommand() {
72
72
  console.log(`\n[truncated: ${result.truncated} blocks omitted]`);
73
73
  }
74
74
  }
75
- // 2.14 §7.1 (триггер 2): строка Стюарда — после блоков, вне blocks/бюджета
75
+ // 2.14 §7.1 (триггер 2): banner зрелых неагрегированных — после блоков, вне
76
+ // blocks/бюджета; R-14 (3.0.0): автоматическая обработка Стюардом временно
77
+ // отключена — счётчики показываются, без императива вызова
76
78
  if (result.banner !== null) {
77
79
  console.log('\n' + result.banner);
78
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"memory-call.js","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-call.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-call.js","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-call.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,4 @@
1
1
  import { Command } from 'commander';
2
- declare const COMPLAINT_KINDS: readonly ["technical", "behavioral"];
3
- export type ComplaintKind = (typeof COMPLAINT_KINDS)[number];
4
- /** Дефолт-эвристика kind (спека §6.1): about = агент/скилл → behavioral;
5
- * mem-id → technical; прочее — без kind (явный только через --kind). */
6
- export declare function inferComplaintKind(about: string): ComplaintKind | undefined;
7
- export declare function memoryComplainCommand(baseDir?: string): Command;
8
- export {};
2
+ export type { ComplaintKind } from './complaint-target.js';
3
+ export declare function memoryComplainCommand(baseDir?: string, env?: NodeJS.ProcessEnv): Command;
9
4
  //# sourceMappingURL=memory-complain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory-complain.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-complain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,QAAA,MAAM,eAAe,sCAAuC,CAAC;AAC7D,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D;wEACwE;AACxE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAI3E;AAID,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,MAAkB,GAAG,OAAO,CAmE1E"}
1
+ {"version":3,"file":"memory-complain.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-complain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAK3D,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,MAAkB,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAuEhH"}
@@ -6,36 +6,11 @@ import { createCliContainer } from '../../../bootstrap/container.js';
6
6
  import { resolveCreatedBy } from '../../../domain/actor.js';
7
7
  import { appendComplaintSignal } from '../../../adapters/fs/session-metrics-log.js';
8
8
  import { UserFacingError } from '../../../domain/errors.js';
9
- // Жалобный контур v2 (спека 2026-09-01 §4.2, Q1/Q2): жалоба — структурированный
10
- // объект типа complaint (required: about/rule/evidence/proposal), статус open;
11
- // триаж — диспетчер (executor-lead), Стюарда воркер не вызывает. Прежний
12
- // носитель observation сохранён для семантических наблюдений; продюсеров
13
- // observation кроме этой команды в src/ нет (проверено спекой §3.1).
14
- // Источник известных agent-id — 7 базовых агентов набора (base-sets §5.1).
15
- const BASE_AGENT_IDS = [
16
- 'executor-lead',
17
- 'mr-wolf',
18
- 'steward',
19
- 'worker-implementer',
20
- 'worker-researcher',
21
- 'worker-reviewer',
22
- 'worker-expert',
23
- ];
24
- // Волна 2.14 §6.1: классификация жалоб technical/behavioral; дефолт —
25
- // эвристика по about, флаг --kind переопределяет (владелец/лид всегда прав).
26
- const COMPLAINT_KINDS = ['technical', 'behavioral'];
27
- /** Дефолт-эвристика kind (спека §6.1): about = агент/скилл → behavioral;
28
- * mem-id → technical; прочее — без kind (явный только через --kind). */
29
- export function inferComplaintKind(about) {
30
- if (BASE_AGENT_IDS.includes(about) || about.startsWith('skill:'))
31
- return 'behavioral';
32
- if (about.startsWith('mem_'))
33
- return 'technical';
34
- return undefined;
35
- }
36
- // baseDir инъектится для тестов (прецедент: runValidate в memory-validate.ts);
9
+ import { COMPLAINT_KINDS, resolveComplaintTarget, resolveGlobalConfigDir, } from './complaint-target.js';
10
+ // baseDir и env инъектятся для тестов (прецедент: runValidate в memory-validate.ts;
11
+ // env — изоляция глобальных источников от реального $HOME);
37
12
  // при обычной регистрации в cli-entry cwd идёт через safeCwd (§2.5).
38
- export function memoryComplainCommand(baseDir = safeCwd()) {
13
+ export function memoryComplainCommand(baseDir = safeCwd(), env = process.env) {
39
14
  return new Command('complain')
40
15
  .description('File a complaint about a rule/playbook/agent as a memory object (type complaint, status open)')
41
16
  .requiredOption('--about <about>', 'Complaint target: agent id, skill:<name> or existing mem-id')
@@ -53,14 +28,20 @@ export function memoryComplainCommand(baseDir = safeCwd()) {
53
28
  if (options.kind !== undefined && !COMPLAINT_KINDS.includes(options.kind)) {
54
29
  throw new UserFacingError(`Invalid --kind "${options.kind}": expected technical or behavioral`);
55
30
  }
56
- const kind = options.kind ?? inferComplaintKind(options.about);
57
- const { store, log, clock, idGen, index, relations, lock, declarations } = createCliContainer(baseDir);
58
- const aboutKnown = BASE_AGENT_IDS.includes(options.about) ||
59
- options.about.startsWith('skill:') ||
60
- (await store.get(options.about)) !== null;
61
- if (!aboutKnown) {
62
- throw new UserFacingError(`Unknown --about target "${options.about}": expected base agent id, skill:<name> or existing mem-id`);
31
+ const { store, log, clock, idGen, index, relations, lock, declarations, fs } = createCliContainer(baseDir);
32
+ // ЕДИНЫЙ резолв цели (R-13a): существование и дефолтный kind — из одного результата.
33
+ const resolution = await resolveComplaintTarget(options.about, {
34
+ fs,
35
+ store,
36
+ baseDir,
37
+ globalConfigDir: resolveGlobalConfigDir(env),
38
+ });
39
+ if (!resolution.known) {
40
+ throw new UserFacingError(`Unknown --about target "${options.about}": expected an agent of the OpenCode integration ` +
41
+ `(project .opencode/agents, global agents dir, "agent" key in opencode.json(c)), ` +
42
+ `skill:<name> or existing mem-id`);
63
43
  }
44
+ const kind = options.kind ?? resolution.defaultKind;
64
45
  const now = clock.now();
65
46
  const shortRule = options.rule.length > 60 ? `${options.rule.slice(0, 60)}…` : options.rule;
66
47
  const result = await addMemoryObject({ store, log, clock, idGen, index, lock, declarations }, {
@@ -1 +1 @@
1
- {"version":3,"file":"memory-complain.js","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-complain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-complain.js","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-complain.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"memory-init.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC,UAAU,EAAE;IACV,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtC;AAED,mFAAmF;AACnF,wBAAsB,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAKxD;AAID,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,EAAE,CAc/G;AAED,2GAA2G;AAC3G,wBAAgB,iBAAiB,CAAC,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAO9F;AAED,+FAA+F;AAC/F,wBAAgB,kBAAkB,CAAC,CAAC,EAAE;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,GAAG,MAAM,CAWT;AAID,wBAAgB,iBAAiB,IAAI,OAAO,CAkN3C"}
1
+ {"version":3,"file":"memory-init.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,UAAU,EAAE;IACV,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtC;AAED,mFAAmF;AACnF,wBAAsB,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAKxD;AAID,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,EAAE,CAc/G;AAED,2GAA2G;AAC3G,wBAAgB,iBAAiB,CAAC,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAO9F;AAED,+FAA+F;AAC/F,wBAAgB,kBAAkB,CAAC,CAAC,EAAE;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB,GAAG,MAAM,CAWT;AAID,wBAAgB,iBAAiB,IAAI,OAAO,CAkK3C"}
@@ -1,6 +1,6 @@
1
1
  import { Command } from 'commander';
2
2
  import { join } from 'path';
3
- import { readFileSync, readdirSync, existsSync } from 'fs';
3
+ import { existsSync } from 'fs';
4
4
  import { readFile, writeFile } from 'fs/promises';
5
5
  import { createInterface } from 'node:readline/promises';
6
6
  import { createCliContainer } from '../../../bootstrap/container.js';
@@ -13,7 +13,6 @@ import { initProject, planInit, recreateConfig } from '../../../app/use-cases/in
13
13
  import { ensureGitignoreBlock } from '../../../app/use-cases/gitignore-block.js';
14
14
  import { OpencodeBaseSetRenderer } from '../../../adapters/render/opencode/opencode-renderer.js';
15
15
  import { templatesRoot, harnessTemplatesRoot, wolfVersion } from '../../../adapters/render/templates-root.js';
16
- import { seedBasePlaybooks } from '../../../app/use-cases/seed-base-playbooks.js';
17
16
  import { isNpxRun } from '../../../domain/npx.js';
18
17
  import { UserFacingError } from '../../../domain/errors.js';
19
18
  import { safeCwd } from '../cli-entry.js';
@@ -78,7 +77,7 @@ export function memoryInitCommand() {
78
77
  const { root } = resolveMemoryRoot(baseDir);
79
78
  if (options.recreate) {
80
79
  await recreateConfig(root);
81
- // восстановление = приведение к валидному СОСТОЯНИЮ, а не тихий штамп маркера ниже:
80
+ // восстановление = приведение к валидному СОСТОЯНИЮ, не тихий штамп маркера ниже:
82
81
  // легаси-схема (1/без маркера) мигрирует здесь (layout + маркер), иначе markSchemaCurrent
83
82
  // дописал бы v2 без layout-миграции и objects/ остался бы осиротевшим навсегда;
84
83
  // схема из будущего — честный отказ «обнови wolf» (спека §3), а не даунгрейд 99→2
@@ -143,17 +142,8 @@ export function memoryInitCommand() {
143
142
  }
144
143
  const { initializer, store, log, clock, idGen, index, lock, declarations } = createCliContainer(baseDir);
145
144
  const registry = new ProjectsRegistry(wolfUserConfigDir());
146
- const tplPlaybooks = join(templatesRoot(), 'playbooks');
147
- const playbookFiles = new Map();
148
- if (existsSync(tplPlaybooks)) {
149
- for (const f of readdirSync(tplPlaybooks)) {
150
- if (f.endsWith('.md'))
151
- playbookFiles.set(f, readFileSync(join(tplPlaybooks, f), 'utf-8'));
152
- }
153
- }
154
- // T-05 (2.17): посев base-set — лица через face-контракт (initiator='seed',
155
- // внутренний путь createFaceVersion); скип по owner_skill (живое лицо или
156
- // legacy-note владельца) — внутри seedBasePlaybooks (REQ-02 AC3)
145
+ // S-DELIVERY W2 (3.0.0): набор без лиц — init не сеет playbooks/faces;
146
+ // seed выведен из штатного пути (см. init-project.ts, seed опционален в BaseSetDeps).
157
147
  const result = await initProject({
158
148
  initializer,
159
149
  registry,
@@ -178,47 +168,12 @@ export function memoryInitCommand() {
178
168
  render: (dir, opts) => new OpencodeBaseSetRenderer(templatesRoot(), {
179
169
  harnessTemplatesRoot: harnessTemplatesRoot('opencode'),
180
170
  }).renderBaseSet(dir, opts),
181
- seed: () => seedBasePlaybooks({
182
- files: playbookFiles,
183
- store,
184
- log,
185
- clock,
186
- idGen,
187
- index,
188
- lock,
189
- declarations,
190
- }).then((os) =>
191
- // BaseSetOutcome.action = RenderAction: 'diverged' печатается как
192
- // 'conflict' (ближайший легальный исход), слово diverged — в reason
193
- os.map((o) => ({
194
- file: o.file,
195
- action: o.action === 'diverged' ? 'conflict' : o.action,
196
- reason: o.reason,
197
- }))),
198
171
  },
199
172
  }, baseDir, input);
200
- // T4 (REQ-01, design §3.6/ADR-6): re-init без --full тоже обновляет
201
- // live-лица — минимальный путь не доходит до baseSet.seed (гейт
202
- // input.full внутри initProject); документированная последовательность
203
- // обновления «пакет → wolf init --yes» идёт этим проходом.
204
- const faceOutcomes = plan.live && !input.full && !result.npx
205
- ? await seedBasePlaybooks({
206
- files: playbookFiles,
207
- store,
208
- log,
209
- clock,
210
- idGen,
211
- index,
212
- lock,
213
- declarations,
214
- })
215
- : [];
216
173
  console.log('# wolf init');
217
174
  console.log(`- memory skeleton: ensured (${join(baseDir, '.wolf')})`);
218
175
  for (const o of result.baseSetOutcomes)
219
176
  console.log(formatBaseSetLine(o)); // F5: скиллы — [skill] имя → путь
220
- for (const o of faceOutcomes)
221
- console.log(formatBaseSetLine(o)); // §3.6: исходы обновления лиц
222
177
  for (const outcome of result.platformOutcomes)
223
178
  console.log(formatPlatformLine(outcome)); // F6: configFile + keys
224
179
  console.log(result.initReport.action === 'created'