mister-wolf 2.12.0 → 2.14.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 (449) hide show
  1. package/README.md +4 -1
  2. package/README.ru.md +4 -1
  3. package/dist/adapters/cli/cli-entry.d.ts +25 -0
  4. package/dist/adapters/cli/cli-entry.d.ts.map +1 -1
  5. package/dist/adapters/cli/cli-entry.js +156 -85
  6. package/dist/adapters/cli/cli-entry.js.map +1 -1
  7. package/dist/adapters/cli/commands/analytics.d.ts +30 -5
  8. package/dist/adapters/cli/commands/analytics.d.ts.map +1 -1
  9. package/dist/adapters/cli/commands/analytics.js +295 -2
  10. package/dist/adapters/cli/commands/analytics.js.map +1 -1
  11. package/dist/adapters/cli/commands/memory-add.d.ts +21 -1
  12. package/dist/adapters/cli/commands/memory-add.d.ts.map +1 -1
  13. package/dist/adapters/cli/commands/memory-add.js +42 -29
  14. package/dist/adapters/cli/commands/memory-add.js.map +1 -1
  15. package/dist/adapters/cli/commands/memory-aggregate.d.ts +3 -0
  16. package/dist/adapters/cli/commands/memory-aggregate.d.ts.map +1 -0
  17. package/dist/adapters/cli/commands/memory-aggregate.js +31 -0
  18. package/dist/adapters/cli/commands/memory-aggregate.js.map +1 -0
  19. package/dist/adapters/cli/commands/memory-archive.d.ts +3 -0
  20. package/dist/adapters/cli/commands/memory-archive.d.ts.map +1 -0
  21. package/dist/adapters/cli/commands/memory-archive.js +19 -0
  22. package/dist/adapters/cli/commands/memory-archive.js.map +1 -0
  23. package/dist/adapters/cli/commands/memory-call.d.ts.map +1 -1
  24. package/dist/adapters/cli/commands/memory-call.js +9 -2
  25. package/dist/adapters/cli/commands/memory-call.js.map +1 -1
  26. package/dist/adapters/cli/commands/memory-complain.d.ts +6 -0
  27. package/dist/adapters/cli/commands/memory-complain.d.ts.map +1 -1
  28. package/dist/adapters/cli/commands/memory-complain.js +20 -0
  29. package/dist/adapters/cli/commands/memory-complain.js.map +1 -1
  30. package/dist/adapters/cli/commands/memory-doctor.d.ts.map +1 -1
  31. package/dist/adapters/cli/commands/memory-doctor.js +43 -2
  32. package/dist/adapters/cli/commands/memory-doctor.js.map +1 -1
  33. package/dist/adapters/cli/commands/memory-edit.d.ts +3 -0
  34. package/dist/adapters/cli/commands/memory-edit.d.ts.map +1 -0
  35. package/dist/adapters/cli/commands/memory-edit.js +67 -0
  36. package/dist/adapters/cli/commands/memory-edit.js.map +1 -0
  37. package/dist/adapters/cli/commands/memory-init.d.ts.map +1 -1
  38. package/dist/adapters/cli/commands/memory-init.js +46 -7
  39. package/dist/adapters/cli/commands/memory-init.js.map +1 -1
  40. package/dist/adapters/cli/commands/memory-list.d.ts +12 -0
  41. package/dist/adapters/cli/commands/memory-list.d.ts.map +1 -1
  42. package/dist/adapters/cli/commands/memory-list.js +36 -21
  43. package/dist/adapters/cli/commands/memory-list.js.map +1 -1
  44. package/dist/adapters/cli/commands/memory-migrate.d.ts.map +1 -1
  45. package/dist/adapters/cli/commands/memory-migrate.js +91 -0
  46. package/dist/adapters/cli/commands/memory-migrate.js.map +1 -1
  47. package/dist/adapters/cli/commands/memory-recap.d.ts.map +1 -1
  48. package/dist/adapters/cli/commands/memory-recap.js +3 -1
  49. package/dist/adapters/cli/commands/memory-recap.js.map +1 -1
  50. package/dist/adapters/cli/commands/memory-relation.d.ts +1 -1
  51. package/dist/adapters/cli/commands/memory-relation.d.ts.map +1 -1
  52. package/dist/adapters/cli/commands/memory-relation.js +57 -2
  53. package/dist/adapters/cli/commands/memory-relation.js.map +1 -1
  54. package/dist/adapters/cli/commands/memory-search.d.ts.map +1 -1
  55. package/dist/adapters/cli/commands/memory-search.js +21 -2
  56. package/dist/adapters/cli/commands/memory-search.js.map +1 -1
  57. package/dist/adapters/cli/commands/memory-session.d.ts.map +1 -1
  58. package/dist/adapters/cli/commands/memory-session.js +2 -12
  59. package/dist/adapters/cli/commands/memory-session.js.map +1 -1
  60. package/dist/adapters/cli/commands/memory-sync.d.ts.map +1 -1
  61. package/dist/adapters/cli/commands/memory-sync.js +2 -9
  62. package/dist/adapters/cli/commands/memory-sync.js.map +1 -1
  63. package/dist/adapters/cli/commands/memory-taxonomy.d.ts.map +1 -1
  64. package/dist/adapters/cli/commands/memory-taxonomy.js +4 -4
  65. package/dist/adapters/cli/commands/memory-taxonomy.js.map +1 -1
  66. package/dist/adapters/cli/commands/memory-tool.d.ts.map +1 -1
  67. package/dist/adapters/cli/commands/memory-tool.js +13 -5
  68. package/dist/adapters/cli/commands/memory-tool.js.map +1 -1
  69. package/dist/adapters/cli/commands/memory-validate.d.ts.map +1 -1
  70. package/dist/adapters/cli/commands/memory-validate.js +18 -4
  71. package/dist/adapters/cli/commands/memory-validate.js.map +1 -1
  72. package/dist/adapters/cli/commands/projects.d.ts +3 -0
  73. package/dist/adapters/cli/commands/projects.d.ts.map +1 -0
  74. package/dist/adapters/cli/commands/projects.js +18 -0
  75. package/dist/adapters/cli/commands/projects.js.map +1 -0
  76. package/dist/adapters/cli/removed-commands.d.ts +11 -0
  77. package/dist/adapters/cli/removed-commands.d.ts.map +1 -0
  78. package/dist/adapters/cli/removed-commands.js +36 -0
  79. package/dist/adapters/cli/removed-commands.js.map +1 -0
  80. package/dist/adapters/cli/type-command-generator.d.ts +5 -0
  81. package/dist/adapters/cli/type-command-generator.d.ts.map +1 -0
  82. package/dist/adapters/cli/type-command-generator.js +132 -0
  83. package/dist/adapters/cli/type-command-generator.js.map +1 -0
  84. package/dist/adapters/fs/config-file.d.ts +6 -1
  85. package/dist/adapters/fs/config-file.d.ts.map +1 -1
  86. package/dist/adapters/fs/config-file.js +112 -55
  87. package/dist/adapters/fs/config-file.js.map +1 -1
  88. package/dist/adapters/fs/doc-id-migration.d.ts +2 -0
  89. package/dist/adapters/fs/doc-id-migration.d.ts.map +1 -1
  90. package/dist/adapters/fs/doc-id-migration.js +8 -2
  91. package/dist/adapters/fs/doc-id-migration.js.map +1 -1
  92. package/dist/adapters/fs/effectiveness-snapshots.d.ts +1 -1
  93. package/dist/adapters/fs/effectiveness-snapshots.d.ts.map +1 -1
  94. package/dist/adapters/fs/jsonl-relation-log.d.ts.map +1 -1
  95. package/dist/adapters/fs/jsonl-relation-log.js +10 -2
  96. package/dist/adapters/fs/jsonl-relation-log.js.map +1 -1
  97. package/dist/adapters/fs/layout-migration.d.ts.map +1 -1
  98. package/dist/adapters/fs/layout-migration.js +21 -2
  99. package/dist/adapters/fs/layout-migration.js.map +1 -1
  100. package/dist/adapters/fs/markdown-memory-store.d.ts +12 -1
  101. package/dist/adapters/fs/markdown-memory-store.d.ts.map +1 -1
  102. package/dist/adapters/fs/markdown-memory-store.js +124 -22
  103. package/dist/adapters/fs/markdown-memory-store.js.map +1 -1
  104. package/dist/adapters/fs/project-paths.d.ts +1 -1
  105. package/dist/adapters/fs/project-paths.d.ts.map +1 -1
  106. package/dist/adapters/fs/project-paths.js +1 -1
  107. package/dist/adapters/fs/project-paths.js.map +1 -1
  108. package/dist/adapters/fs/projects-registry.d.ts +8 -2
  109. package/dist/adapters/fs/projects-registry.d.ts.map +1 -1
  110. package/dist/adapters/fs/projects-registry.js +43 -16
  111. package/dist/adapters/fs/projects-registry.js.map +1 -1
  112. package/dist/adapters/fs/schema-version.d.ts +2 -0
  113. package/dist/adapters/fs/schema-version.d.ts.map +1 -1
  114. package/dist/adapters/fs/schema-version.js +15 -0
  115. package/dist/adapters/fs/schema-version.js.map +1 -1
  116. package/dist/adapters/fs/session-metrics-log.d.ts +32 -118
  117. package/dist/adapters/fs/session-metrics-log.d.ts.map +1 -1
  118. package/dist/adapters/fs/session-metrics-log.js +106 -141
  119. package/dist/adapters/fs/session-metrics-log.js.map +1 -1
  120. package/dist/adapters/fs/taxonomy-migration.d.ts +38 -0
  121. package/dist/adapters/fs/taxonomy-migration.d.ts.map +1 -0
  122. package/dist/adapters/fs/taxonomy-migration.js +280 -0
  123. package/dist/adapters/fs/taxonomy-migration.js.map +1 -0
  124. package/dist/adapters/mcp/mcp-schemas.d.ts +0 -122
  125. package/dist/adapters/mcp/mcp-schemas.d.ts.map +1 -1
  126. package/dist/adapters/mcp/mcp-schemas.js +0 -102
  127. package/dist/adapters/mcp/mcp-schemas.js.map +1 -1
  128. package/dist/adapters/mcp/mcp-server.d.ts.map +1 -1
  129. package/dist/adapters/mcp/mcp-server.js +30 -1
  130. package/dist/adapters/mcp/mcp-server.js.map +1 -1
  131. package/dist/adapters/mcp/mcp-tools.d.ts +10 -0
  132. package/dist/adapters/mcp/mcp-tools.d.ts.map +1 -1
  133. package/dist/adapters/mcp/mcp-tools.js +48 -186
  134. package/dist/adapters/mcp/mcp-tools.js.map +1 -1
  135. package/dist/adapters/sqlite/sqlite-schema.d.ts +1 -1
  136. package/dist/adapters/sqlite/sqlite-schema.d.ts.map +1 -1
  137. package/dist/adapters/sqlite/sqlite-schema.js +4 -2
  138. package/dist/adapters/sqlite/sqlite-schema.js.map +1 -1
  139. package/dist/adapters/sqlite/sqlite-search-index.d.ts +7 -0
  140. package/dist/adapters/sqlite/sqlite-search-index.d.ts.map +1 -1
  141. package/dist/adapters/sqlite/sqlite-search-index.js +41 -9
  142. package/dist/adapters/sqlite/sqlite-search-index.js.map +1 -1
  143. package/dist/app/use-cases/add-memory-object.d.ts +4 -0
  144. package/dist/app/use-cases/add-memory-object.d.ts.map +1 -1
  145. package/dist/app/use-cases/add-memory-object.js +42 -4
  146. package/dist/app/use-cases/add-memory-object.js.map +1 -1
  147. package/dist/app/use-cases/apply-aggregate.d.ts +36 -0
  148. package/dist/app/use-cases/apply-aggregate.d.ts.map +1 -0
  149. package/dist/app/use-cases/apply-aggregate.js +63 -0
  150. package/dist/app/use-cases/apply-aggregate.js.map +1 -0
  151. package/dist/app/use-cases/bootstrap-project.d.ts.map +1 -1
  152. package/dist/app/use-cases/bootstrap-project.js +13 -9
  153. package/dist/app/use-cases/bootstrap-project.js.map +1 -1
  154. package/dist/app/use-cases/build-analytics.d.ts +105 -1
  155. package/dist/app/use-cases/build-analytics.d.ts.map +1 -1
  156. package/dist/app/use-cases/build-analytics.js +330 -9
  157. package/dist/app/use-cases/build-analytics.js.map +1 -1
  158. package/dist/app/use-cases/build-projects-list.d.ts +30 -0
  159. package/dist/app/use-cases/build-projects-list.d.ts.map +1 -0
  160. package/dist/app/use-cases/build-projects-list.js +94 -0
  161. package/dist/app/use-cases/build-projects-list.js.map +1 -0
  162. package/dist/app/use-cases/create-memory-repair-request.d.ts.map +1 -1
  163. package/dist/app/use-cases/create-memory-repair-request.js +5 -3
  164. package/dist/app/use-cases/create-memory-repair-request.js.map +1 -1
  165. package/dist/app/use-cases/detect-unaggregated-lessons.d.ts +30 -0
  166. package/dist/app/use-cases/detect-unaggregated-lessons.d.ts.map +1 -0
  167. package/dist/app/use-cases/detect-unaggregated-lessons.js +40 -0
  168. package/dist/app/use-cases/detect-unaggregated-lessons.js.map +1 -0
  169. package/dist/app/use-cases/diff-thread.d.ts.map +1 -1
  170. package/dist/app/use-cases/diff-thread.js +9 -6
  171. package/dist/app/use-cases/diff-thread.js.map +1 -1
  172. package/dist/app/use-cases/doctor.d.ts +11 -3
  173. package/dist/app/use-cases/doctor.d.ts.map +1 -1
  174. package/dist/app/use-cases/doctor.js +53 -12
  175. package/dist/app/use-cases/doctor.js.map +1 -1
  176. package/dist/app/use-cases/generate-agent-brief.d.ts.map +1 -1
  177. package/dist/app/use-cases/generate-agent-brief.js +18 -8
  178. package/dist/app/use-cases/generate-agent-brief.js.map +1 -1
  179. package/dist/app/use-cases/generate-recap.d.ts +10 -0
  180. package/dist/app/use-cases/generate-recap.d.ts.map +1 -1
  181. package/dist/app/use-cases/generate-recap.js +81 -7
  182. package/dist/app/use-cases/generate-recap.js.map +1 -1
  183. package/dist/app/use-cases/get-call-injections.d.ts +8 -0
  184. package/dist/app/use-cases/get-call-injections.d.ts.map +1 -1
  185. package/dist/app/use-cases/get-call-injections.js +34 -8
  186. package/dist/app/use-cases/get-call-injections.js.map +1 -1
  187. package/dist/app/use-cases/init-project.d.ts +2 -6
  188. package/dist/app/use-cases/init-project.d.ts.map +1 -1
  189. package/dist/app/use-cases/init-project.js +11 -13
  190. package/dist/app/use-cases/init-project.js.map +1 -1
  191. package/dist/app/use-cases/list-memory-objects.d.ts +2 -0
  192. package/dist/app/use-cases/list-memory-objects.d.ts.map +1 -1
  193. package/dist/app/use-cases/list-memory-objects.js.map +1 -1
  194. package/dist/app/use-cases/record-relation.d.ts.map +1 -1
  195. package/dist/app/use-cases/record-relation.js +4 -0
  196. package/dist/app/use-cases/record-relation.js.map +1 -1
  197. package/dist/app/use-cases/scaffold-agent.d.ts.map +1 -1
  198. package/dist/app/use-cases/scaffold-agent.js +58 -17
  199. package/dist/app/use-cases/scaffold-agent.js.map +1 -1
  200. package/dist/app/use-cases/scan-project.d.ts.map +1 -1
  201. package/dist/app/use-cases/scan-project.js +7 -3
  202. package/dist/app/use-cases/scan-project.js.map +1 -1
  203. package/dist/app/use-cases/seed-base-playbooks.d.ts +82 -3
  204. package/dist/app/use-cases/seed-base-playbooks.d.ts.map +1 -1
  205. package/dist/app/use-cases/seed-base-playbooks.js +13 -1
  206. package/dist/app/use-cases/seed-base-playbooks.js.map +1 -1
  207. package/dist/app/use-cases/should-summarize.d.ts.map +1 -1
  208. package/dist/app/use-cases/should-summarize.js +3 -1
  209. package/dist/app/use-cases/should-summarize.js.map +1 -1
  210. package/dist/app/use-cases/snapshot-delta.d.ts +1 -1
  211. package/dist/app/use-cases/snapshot-delta.d.ts.map +1 -1
  212. package/dist/app/use-cases/snapshot-delta.js.map +1 -1
  213. package/dist/app/use-cases/summarize-session.d.ts.map +1 -1
  214. package/dist/app/use-cases/summarize-session.js +11 -2
  215. package/dist/app/use-cases/summarize-session.js.map +1 -1
  216. package/dist/app/use-cases/thinking.d.ts +2 -2
  217. package/dist/app/use-cases/thinking.d.ts.map +1 -1
  218. package/dist/app/use-cases/thinking.js +20 -12
  219. package/dist/app/use-cases/thinking.js.map +1 -1
  220. package/dist/app/use-cases/tool-stats.js +1 -1
  221. package/dist/app/use-cases/tool-stats.js.map +1 -1
  222. package/dist/bootstrap/container.d.ts.map +1 -1
  223. package/dist/bootstrap/container.js +30 -2
  224. package/dist/bootstrap/container.js.map +1 -1
  225. package/dist/domain/facet-colors.d.ts +12 -0
  226. package/dist/domain/facet-colors.d.ts.map +1 -0
  227. package/dist/domain/facet-colors.js +33 -0
  228. package/dist/domain/facet-colors.js.map +1 -0
  229. package/dist/domain/governance.d.ts.map +1 -1
  230. package/dist/domain/governance.js +9 -2
  231. package/dist/domain/governance.js.map +1 -1
  232. package/dist/domain/memory-types.d.ts +73 -318
  233. package/dist/domain/memory-types.d.ts.map +1 -1
  234. package/dist/domain/memory-types.js +90 -223
  235. package/dist/domain/memory-types.js.map +1 -1
  236. package/dist/domain/policies/read-only-zones.d.ts.map +1 -1
  237. package/dist/domain/policies/read-only-zones.js +7 -11
  238. package/dist/domain/policies/read-only-zones.js.map +1 -1
  239. package/dist/domain/schemas/memory-event-schema.d.ts +3 -0
  240. package/dist/domain/schemas/memory-event-schema.d.ts.map +1 -1
  241. package/dist/domain/schemas/memory-event-schema.js +3 -0
  242. package/dist/domain/schemas/memory-event-schema.js.map +1 -1
  243. package/dist/domain/schemas/memory-object-schema.d.ts +2 -0
  244. package/dist/domain/schemas/memory-object-schema.d.ts.map +1 -1
  245. package/dist/domain/schemas/memory-object-schema.js +3 -0
  246. package/dist/domain/schemas/memory-object-schema.js.map +1 -1
  247. package/dist/domain/schemas/relation-schema.d.ts +10 -4
  248. package/dist/domain/schemas/relation-schema.d.ts.map +1 -1
  249. package/dist/domain/schemas/relation-schema.js +12 -0
  250. package/dist/domain/schemas/relation-schema.js.map +1 -1
  251. package/dist/domain/schemas/session-checkpoint-schema.d.ts +3 -1
  252. package/dist/domain/schemas/session-checkpoint-schema.d.ts.map +1 -1
  253. package/dist/domain/schemas/session-checkpoint-schema.js +3 -2
  254. package/dist/domain/schemas/session-checkpoint-schema.js.map +1 -1
  255. package/dist/domain/solve/scenarios.js +3 -3
  256. package/dist/domain/solve/scenarios.js.map +1 -1
  257. package/dist/domain/taxonomy.d.ts +15 -1
  258. package/dist/domain/taxonomy.d.ts.map +1 -1
  259. package/dist/domain/taxonomy.js +14 -1
  260. package/dist/domain/taxonomy.js.map +1 -1
  261. package/dist/domain/tool-economy.d.ts +1 -1
  262. package/dist/domain/tool-economy.js +1 -1
  263. package/dist/domain/type-schema-builder.d.ts +15 -2
  264. package/dist/domain/type-schema-builder.d.ts.map +1 -1
  265. package/dist/domain/type-schema-builder.js +10 -1
  266. package/dist/domain/type-schema-builder.js.map +1 -1
  267. package/dist/ports/memory-store.port.d.ts +2 -0
  268. package/dist/ports/memory-store.port.d.ts.map +1 -1
  269. package/dist/ports/search-index.port.d.ts +2 -0
  270. package/dist/ports/search-index.port.d.ts.map +1 -1
  271. package/package.json +2 -2
  272. package/templates/base/agents/executor-lead.md +5 -0
  273. package/templates/base/agents/mr-wolf.md +6 -0
  274. package/templates/base/agents/steward.md +31 -2
  275. package/templates/opencode/plugins/wolf-router.ts +8 -3
  276. package/templates/opencode/plugins/wolf-session-start.js +6 -3
  277. package/dist/adapters/cli/commands/coord.d.ts +0 -3
  278. package/dist/adapters/cli/commands/coord.d.ts.map +0 -1
  279. package/dist/adapters/cli/commands/coord.js +0 -36
  280. package/dist/adapters/cli/commands/coord.js.map +0 -1
  281. package/dist/adapters/cli/commands/dashboard.d.ts +0 -20
  282. package/dist/adapters/cli/commands/dashboard.d.ts.map +0 -1
  283. package/dist/adapters/cli/commands/dashboard.js +0 -231
  284. package/dist/adapters/cli/commands/dashboard.js.map +0 -1
  285. package/dist/adapters/cli/commands/memory-article.d.ts +0 -3
  286. package/dist/adapters/cli/commands/memory-article.d.ts.map +0 -1
  287. package/dist/adapters/cli/commands/memory-article.js +0 -47
  288. package/dist/adapters/cli/commands/memory-article.js.map +0 -1
  289. package/dist/adapters/cli/commands/memory-blocker.d.ts +0 -3
  290. package/dist/adapters/cli/commands/memory-blocker.d.ts.map +0 -1
  291. package/dist/adapters/cli/commands/memory-blocker.js +0 -52
  292. package/dist/adapters/cli/commands/memory-blocker.js.map +0 -1
  293. package/dist/adapters/cli/commands/memory-council.d.ts +0 -3
  294. package/dist/adapters/cli/commands/memory-council.d.ts.map +0 -1
  295. package/dist/adapters/cli/commands/memory-council.js +0 -42
  296. package/dist/adapters/cli/commands/memory-council.js.map +0 -1
  297. package/dist/adapters/cli/commands/memory-decision.d.ts +0 -3
  298. package/dist/adapters/cli/commands/memory-decision.d.ts.map +0 -1
  299. package/dist/adapters/cli/commands/memory-decision.js +0 -41
  300. package/dist/adapters/cli/commands/memory-decision.js.map +0 -1
  301. package/dist/adapters/cli/commands/memory-effectiveness.d.ts +0 -3
  302. package/dist/adapters/cli/commands/memory-effectiveness.d.ts.map +0 -1
  303. package/dist/adapters/cli/commands/memory-effectiveness.js +0 -127
  304. package/dist/adapters/cli/commands/memory-effectiveness.js.map +0 -1
  305. package/dist/adapters/cli/commands/memory-info-request.d.ts +0 -3
  306. package/dist/adapters/cli/commands/memory-info-request.d.ts.map +0 -1
  307. package/dist/adapters/cli/commands/memory-info-request.js +0 -47
  308. package/dist/adapters/cli/commands/memory-info-request.js.map +0 -1
  309. package/dist/adapters/cli/commands/memory-insights.d.ts +0 -3
  310. package/dist/adapters/cli/commands/memory-insights.d.ts.map +0 -1
  311. package/dist/adapters/cli/commands/memory-insights.js +0 -42
  312. package/dist/adapters/cli/commands/memory-insights.js.map +0 -1
  313. package/dist/adapters/cli/commands/memory-learn.d.ts +0 -3
  314. package/dist/adapters/cli/commands/memory-learn.d.ts.map +0 -1
  315. package/dist/adapters/cli/commands/memory-learn.js +0 -327
  316. package/dist/adapters/cli/commands/memory-learn.js.map +0 -1
  317. package/dist/adapters/cli/commands/memory-rule.d.ts +0 -3
  318. package/dist/adapters/cli/commands/memory-rule.d.ts.map +0 -1
  319. package/dist/adapters/cli/commands/memory-rule.js +0 -40
  320. package/dist/adapters/cli/commands/memory-rule.js.map +0 -1
  321. package/dist/adapters/cli/commands/memory-run.d.ts +0 -3
  322. package/dist/adapters/cli/commands/memory-run.d.ts.map +0 -1
  323. package/dist/adapters/cli/commands/memory-run.js +0 -154
  324. package/dist/adapters/cli/commands/memory-run.js.map +0 -1
  325. package/dist/adapters/cli/commands/memory-stage.d.ts +0 -3
  326. package/dist/adapters/cli/commands/memory-stage.d.ts.map +0 -1
  327. package/dist/adapters/cli/commands/memory-stage.js +0 -35
  328. package/dist/adapters/cli/commands/memory-stage.js.map +0 -1
  329. package/dist/adapters/cli/commands/memory-thread.d.ts +0 -3
  330. package/dist/adapters/cli/commands/memory-thread.d.ts.map +0 -1
  331. package/dist/adapters/cli/commands/memory-thread.js +0 -48
  332. package/dist/adapters/cli/commands/memory-thread.js.map +0 -1
  333. package/dist/adapters/cli/opencode-run-metrics.d.ts +0 -25
  334. package/dist/adapters/cli/opencode-run-metrics.d.ts.map +0 -1
  335. package/dist/adapters/cli/opencode-run-metrics.js +0 -64
  336. package/dist/adapters/cli/opencode-run-metrics.js.map +0 -1
  337. package/dist/app/use-cases/activate-draft.d.ts +0 -31
  338. package/dist/app/use-cases/activate-draft.d.ts.map +0 -1
  339. package/dist/app/use-cases/activate-draft.js +0 -74
  340. package/dist/app/use-cases/activate-draft.js.map +0 -1
  341. package/dist/app/use-cases/build-dashboard.d.ts +0 -43
  342. package/dist/app/use-cases/build-dashboard.d.ts.map +0 -1
  343. package/dist/app/use-cases/build-dashboard.js +0 -32
  344. package/dist/app/use-cases/build-dashboard.js.map +0 -1
  345. package/dist/app/use-cases/create-article.d.ts +0 -31
  346. package/dist/app/use-cases/create-article.d.ts.map +0 -1
  347. package/dist/app/use-cases/create-article.js +0 -62
  348. package/dist/app/use-cases/create-article.js.map +0 -1
  349. package/dist/app/use-cases/create-blocker.d.ts +0 -28
  350. package/dist/app/use-cases/create-blocker.d.ts.map +0 -1
  351. package/dist/app/use-cases/create-blocker.js +0 -51
  352. package/dist/app/use-cases/create-blocker.js.map +0 -1
  353. package/dist/app/use-cases/create-decision.d.ts +0 -28
  354. package/dist/app/use-cases/create-decision.d.ts.map +0 -1
  355. package/dist/app/use-cases/create-decision.js +0 -58
  356. package/dist/app/use-cases/create-decision.js.map +0 -1
  357. package/dist/app/use-cases/create-info-request.d.ts +0 -31
  358. package/dist/app/use-cases/create-info-request.d.ts.map +0 -1
  359. package/dist/app/use-cases/create-info-request.js +0 -58
  360. package/dist/app/use-cases/create-info-request.js.map +0 -1
  361. package/dist/app/use-cases/create-rule.d.ts +0 -27
  362. package/dist/app/use-cases/create-rule.d.ts.map +0 -1
  363. package/dist/app/use-cases/create-rule.js +0 -48
  364. package/dist/app/use-cases/create-rule.js.map +0 -1
  365. package/dist/app/use-cases/create-session-checkpoint.d.ts +0 -23
  366. package/dist/app/use-cases/create-session-checkpoint.d.ts.map +0 -1
  367. package/dist/app/use-cases/create-session-checkpoint.js +0 -61
  368. package/dist/app/use-cases/create-session-checkpoint.js.map +0 -1
  369. package/dist/app/use-cases/create-synthesis.d.ts +0 -25
  370. package/dist/app/use-cases/create-synthesis.d.ts.map +0 -1
  371. package/dist/app/use-cases/create-synthesis.js +0 -36
  372. package/dist/app/use-cases/create-synthesis.js.map +0 -1
  373. package/dist/app/use-cases/create-work-thread.d.ts +0 -26
  374. package/dist/app/use-cases/create-work-thread.d.ts.map +0 -1
  375. package/dist/app/use-cases/create-work-thread.js +0 -47
  376. package/dist/app/use-cases/create-work-thread.js.map +0 -1
  377. package/dist/app/use-cases/effectiveness.d.ts +0 -116
  378. package/dist/app/use-cases/effectiveness.d.ts.map +0 -1
  379. package/dist/app/use-cases/effectiveness.js +0 -198
  380. package/dist/app/use-cases/effectiveness.js.map +0 -1
  381. package/dist/app/use-cases/get-thread-brief.d.ts +0 -19
  382. package/dist/app/use-cases/get-thread-brief.d.ts.map +0 -1
  383. package/dist/app/use-cases/get-thread-brief.js +0 -72
  384. package/dist/app/use-cases/get-thread-brief.js.map +0 -1
  385. package/dist/app/use-cases/learn-decay.d.ts +0 -91
  386. package/dist/app/use-cases/learn-decay.d.ts.map +0 -1
  387. package/dist/app/use-cases/learn-decay.js +0 -274
  388. package/dist/app/use-cases/learn-decay.js.map +0 -1
  389. package/dist/app/use-cases/model-routing.d.ts +0 -30
  390. package/dist/app/use-cases/model-routing.d.ts.map +0 -1
  391. package/dist/app/use-cases/model-routing.js +0 -39
  392. package/dist/app/use-cases/model-routing.js.map +0 -1
  393. package/dist/app/use-cases/pattern-detection.d.ts +0 -44
  394. package/dist/app/use-cases/pattern-detection.d.ts.map +0 -1
  395. package/dist/app/use-cases/pattern-detection.js +0 -71
  396. package/dist/app/use-cases/pattern-detection.js.map +0 -1
  397. package/dist/app/use-cases/propose-draft.d.ts +0 -79
  398. package/dist/app/use-cases/propose-draft.d.ts.map +0 -1
  399. package/dist/app/use-cases/propose-draft.js +0 -140
  400. package/dist/app/use-cases/propose-draft.js.map +0 -1
  401. package/dist/app/use-cases/resolve-blocker.d.ts +0 -17
  402. package/dist/app/use-cases/resolve-blocker.d.ts.map +0 -1
  403. package/dist/app/use-cases/resolve-blocker.js +0 -31
  404. package/dist/app/use-cases/resolve-blocker.js.map +0 -1
  405. package/dist/app/use-cases/run-source.d.ts +0 -15
  406. package/dist/app/use-cases/run-source.d.ts.map +0 -1
  407. package/dist/app/use-cases/run-source.js +0 -26
  408. package/dist/app/use-cases/run-source.js.map +0 -1
  409. package/dist/app/use-cases/tally-council-votes.d.ts +0 -24
  410. package/dist/app/use-cases/tally-council-votes.d.ts.map +0 -1
  411. package/dist/app/use-cases/tally-council-votes.js +0 -30
  412. package/dist/app/use-cases/tally-council-votes.js.map +0 -1
  413. package/dist/app/use-cases/template-evolve.d.ts +0 -87
  414. package/dist/app/use-cases/template-evolve.d.ts.map +0 -1
  415. package/dist/app/use-cases/template-evolve.js +0 -164
  416. package/dist/app/use-cases/template-evolve.js.map +0 -1
  417. package/dist/app/use-cases/validate-draft.d.ts +0 -36
  418. package/dist/app/use-cases/validate-draft.d.ts.map +0 -1
  419. package/dist/app/use-cases/validate-draft.js +0 -75
  420. package/dist/app/use-cases/validate-draft.js.map +0 -1
  421. package/dist/domain/gates/stop-gate.d.ts +0 -43
  422. package/dist/domain/gates/stop-gate.d.ts.map +0 -1
  423. package/dist/domain/gates/stop-gate.js +0 -125
  424. package/dist/domain/gates/stop-gate.js.map +0 -1
  425. package/dist/domain/schemas/article-schema.d.ts +0 -79
  426. package/dist/domain/schemas/article-schema.d.ts.map +0 -1
  427. package/dist/domain/schemas/article-schema.js +0 -12
  428. package/dist/domain/schemas/article-schema.js.map +0 -1
  429. package/dist/domain/schemas/blocker-schema.d.ts +0 -77
  430. package/dist/domain/schemas/blocker-schema.d.ts.map +0 -1
  431. package/dist/domain/schemas/blocker-schema.js +0 -10
  432. package/dist/domain/schemas/blocker-schema.js.map +0 -1
  433. package/dist/domain/schemas/decision-schema.d.ts +0 -75
  434. package/dist/domain/schemas/decision-schema.d.ts.map +0 -1
  435. package/dist/domain/schemas/decision-schema.js +0 -8
  436. package/dist/domain/schemas/decision-schema.js.map +0 -1
  437. package/dist/domain/schemas/info-request-schema.d.ts +0 -80
  438. package/dist/domain/schemas/info-request-schema.d.ts.map +0 -1
  439. package/dist/domain/schemas/info-request-schema.js +0 -13
  440. package/dist/domain/schemas/info-request-schema.js.map +0 -1
  441. package/dist/domain/schemas/rule-schema.d.ts +0 -80
  442. package/dist/domain/schemas/rule-schema.d.ts.map +0 -1
  443. package/dist/domain/schemas/rule-schema.js +0 -10
  444. package/dist/domain/schemas/rule-schema.js.map +0 -1
  445. package/dist/domain/schemas/thread-schema.d.ts +0 -77
  446. package/dist/domain/schemas/thread-schema.d.ts.map +0 -1
  447. package/dist/domain/schemas/thread-schema.js +0 -10
  448. package/dist/domain/schemas/thread-schema.js.map +0 -1
  449. package/templates/base/playbooks/wolf-review-lenses.md +0 -50
@@ -1,4 +1,5 @@
1
1
  import { Command, Option } from 'commander';
2
+ import { safeCwd } from '../cli-entry.js';
2
3
  import { addMemoryObject } from '../../../app/use-cases/add-memory-object.js';
3
4
  import { createCliContainer } from '../../../bootstrap/container.js';
4
5
  import { MEMORY_TYPES } from '../../../domain/memory-types.js';
@@ -10,12 +11,47 @@ import { withCliCall } from './with-cli-call.js';
10
11
  function collectSet(value, previous) {
11
12
  return [...previous, value];
12
13
  }
13
- export function memoryAddCommand() {
14
+ /**
15
+ * Единое действие add-пути (2.13 §6.3): `wolf add --type <type>` и генерённые
16
+ * `wolf <type> add` делегируют сюда — логика опций/use-case не дублируется.
17
+ */
18
+ export async function runAddAction(baseDir, options) {
19
+ const { store, log, clock, idGen, index, declarations, lock } = createCliContainer(baseDir);
20
+ const type = options.type;
21
+ const extra = parseSetPairs(options.set ?? [], type);
22
+ if (options.scope !== undefined) {
23
+ if ('scope' in extra)
24
+ throw new UserFacingError('Duplicate scope: use either --scope or --set scope=..., not both');
25
+ extra.scope = options.scope;
26
+ }
27
+ if (options.facet !== undefined) {
28
+ if ('facet' in extra)
29
+ throw new UserFacingError('Duplicate facet: use either --facet or --set facet=..., not both');
30
+ }
31
+ Object.assign(extra, options.extraFields ?? {});
32
+ const result = await addMemoryObject({ store, log, clock, idGen, index, declarations, lock }, {
33
+ type,
34
+ title: options.title,
35
+ body: options.body,
36
+ createdBy: resolveCreatedBy(options.createdBy),
37
+ tags: options.tags ? options.tags.split(',').map((t) => t.trim()) : [],
38
+ confidence: options.confidence,
39
+ importance: options.importance,
40
+ facet: options.facet,
41
+ extra,
42
+ });
43
+ console.log(`Created memory object: ${result.object.id}`);
44
+ if (result.warnings.length > 0) {
45
+ for (const warning of result.warnings) {
46
+ console.warn(`Warning: ${warning}`);
47
+ }
48
+ }
49
+ }
50
+ // baseDir инъектится для тестов (прецедент: memory-update.ts).
51
+ export function memoryAddCommand(baseDir = safeCwd()) {
14
52
  return new Command('add')
15
53
  .description('Add a memory object')
16
- .addOption(new Option('--type <type>', 'Memory type')
17
- .choices([...MEMORY_TYPES].filter((t) => t !== 'document'))
18
- .makeOptionMandatory(true))
54
+ .addOption(new Option('--type <type>', 'Memory type').choices([...MEMORY_TYPES]).makeOptionMandatory(true))
19
55
  .requiredOption('--title <title>', 'Title')
20
56
  .option('--body <body>', 'Body text')
21
57
  .option('--tags <tags>', 'Comma-separated tags')
@@ -23,32 +59,9 @@ export function memoryAddCommand() {
23
59
  .option('--importance <n>', 'Importance from 0 to 1', parseFloat)
24
60
  .option('--set <k=v>', 'Extra field key=value (repeatable; "[a,b]" value is a string array)', collectSet, [])
25
61
  .option('--scope <scope>', 'Scope field for types that declare one (rule: project|global)')
62
+ .option('--facet <facet>', 'Note facet (required for note; howto|pitfall|context|metric|history|legacy|constraint)')
26
63
  .option('--created-by <actor>', 'Creator actor (default: env WOLF_ACTOR, else user:cli)')
27
- .action(withCliCall('add', async (options) => {
28
- const { store, log, clock, idGen, index, declarations } = createCliContainer(process.cwd());
29
- const extra = parseSetPairs(options.set, options.type);
30
- if (options.scope !== undefined) {
31
- if ('scope' in extra)
32
- throw new UserFacingError('Duplicate scope: use either --scope or --set scope=..., not both');
33
- extra.scope = options.scope;
34
- }
35
- const result = await addMemoryObject({ store, log, clock, idGen, index, declarations }, {
36
- type: options.type,
37
- title: options.title,
38
- body: options.body,
39
- createdBy: resolveCreatedBy(options.createdBy),
40
- tags: options.tags ? options.tags.split(',').map((t) => t.trim()) : [],
41
- confidence: options.confidence,
42
- importance: options.importance,
43
- extra,
44
- });
45
- console.log(`Created memory object: ${result.object.id}`);
46
- if (result.warnings.length > 0) {
47
- for (const warning of result.warnings) {
48
- console.warn(`Warning: ${warning}`);
49
- }
50
- }
51
- },
64
+ .action(withCliCall('add', (options) => runAddAction(baseDir, options),
52
65
  // волна 0 0.1: args_summary в mcp_call-сигнал (body не попадает);
53
66
  // extra_keys — из --set пар (парсинг дублируется дёшево, телеметрия в try/catch обёртки)
54
67
  (options) => ({
@@ -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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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function memoryAggregateCommand(baseDir?: string): Command;
3
+ //# sourceMappingURL=memory-aggregate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-aggregate.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,MAAkB,GAAG,OAAO,CA0B3E"}
@@ -0,0 +1,31 @@
1
+ import { Command } from 'commander';
2
+ import { safeCwd } from '../cli-entry.js';
3
+ import { applyAggregate } from '../../../app/use-cases/apply-aggregate.js';
4
+ import { createCliContainer } from '../../../bootstrap/container.js';
5
+ import { resolveCreatedBy } from '../../../domain/actor.js';
6
+ // 2.14 §7.3: `wolf aggregate apply <id>` — plumbing-подтверждение агрегата
7
+ // владельцем (Стюард создаёт proposed-агрегат, владелец применяет).
8
+ // baseDir инъектится для тестов (прецедент: memory-add.ts).
9
+ export function memoryAggregateCommand(baseDir = safeCwd()) {
10
+ const cmd = new Command('aggregate').description('Apply a proposed lesson aggregate (steward plumbing)');
11
+ cmd
12
+ .command('apply')
13
+ .description('Apply a proposed aggregate: activate it and archive its sources')
14
+ .argument('<aggregate-id>', 'Aggregate memory object id')
15
+ .option('--created-by <actor>', 'Actor performing the apply (default: env WOLF_ACTOR, else user:cli)')
16
+ .action(async (aggregateId, options) => {
17
+ const { store, log, clock, idGen, index, relations, lock } = createCliContainer(baseDir);
18
+ const result = await applyAggregate({ store, log, clock, idGen, index, relations, lock }, aggregateId, resolveCreatedBy(options.createdBy));
19
+ if (result.noop) {
20
+ console.log(`no-op: aggregate active, all sources archived (${aggregateId})`);
21
+ return;
22
+ }
23
+ console.log(`Applied aggregate ${aggregateId}`);
24
+ console.log(`activated: ${result.activated ? 'yes' : 'no'}`);
25
+ console.log(`archived: ${result.archived.length} (skipped: ${result.skipped.length})`);
26
+ for (const id of result.archived)
27
+ console.log(`archived source: ${id}`);
28
+ });
29
+ return cmd;
30
+ }
31
+ //# sourceMappingURL=memory-aggregate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-aggregate.js","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,2EAA2E;AAC3E,oEAAoE;AACpE,4DAA4D;AAC5D,MAAM,UAAU,sBAAsB,CAAC,UAAkB,OAAO,EAAE;IAChE,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,sDAAsD,CAAC,CAAC;IAEzG,GAAG;SACA,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,iEAAiE,CAAC;SAC9E,QAAQ,CAAC,gBAAgB,EAAE,4BAA4B,CAAC;SACxD,MAAM,CAAC,sBAAsB,EAAE,qEAAqE,CAAC;SACrG,MAAM,CAAC,KAAK,EAAE,WAAmB,EAAE,OAA+B,EAAE,EAAE;QACrE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACzF,MAAM,MAAM,GAAG,MAAM,cAAc,CACjC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EACpD,WAAW,EACX,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CACpC,CAAC;QACF,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,kDAAkD,WAAW,GAAG,CAAC,CAAC;YAC9E,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,qBAAqB,WAAW,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,QAAQ,CAAC,MAAM,cAAc,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACvF,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function memoryArchiveCommand(baseDir?: string): Command;
3
+ //# sourceMappingURL=memory-archive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-archive.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-archive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,MAAkB,GAAG,OAAO,CAUzE"}
@@ -0,0 +1,19 @@
1
+ import { Command } from 'commander';
2
+ import { safeCwd } from '../cli-entry.js';
3
+ import { transitionMemoryObject } from '../../../app/use-cases/transition-memory-object.js';
4
+ import { createCliContainer } from '../../../bootstrap/container.js';
5
+ // wolf archive (спека 2.13 §6.1 E1): сахар transition → archived.
6
+ // transition остаётся полной матрицей статусов.
7
+ // baseDir инъектится для тестов (прецедент: memory-update.ts).
8
+ export function memoryArchiveCommand(baseDir = safeCwd()) {
9
+ return new Command('archive')
10
+ .description('Archive a memory object (sugar for: transition archived)')
11
+ .argument('<id>', 'Memory object id')
12
+ .option('--actor <actor>', 'Actor performing the archive', 'user:cli')
13
+ .action(async (id, options) => {
14
+ const { store, log, clock, idGen, index, declarations } = createCliContainer(baseDir);
15
+ await transitionMemoryObject({ store, log, clock, idGen, index, declarations }, id, 'archived', options.actor);
16
+ console.log(`Archived ${id}.`);
17
+ });
18
+ }
19
+ //# sourceMappingURL=memory-archive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-archive.js","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-archive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oDAAoD,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,kEAAkE;AAClE,gDAAgD;AAChD,+DAA+D;AAC/D,MAAM,UAAU,oBAAoB,CAAC,UAAkB,OAAO,EAAE;IAC9D,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;SAC1B,WAAW,CAAC,0DAA0D,CAAC;SACvE,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;SACpC,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,EAAE,UAAU,CAAC;SACrE,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,OAA0B,EAAE,EAAE;QACvD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACtF,MAAM,sBAAsB,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/G,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -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;AA0BpC,wBAAgB,iBAAiB,IAAI,OAAO,CA2G3C"}
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;AA2BpC,wBAAgB,iBAAiB,IAAI,OAAO,CAiH3C"}
@@ -5,6 +5,7 @@ import { resolveCreatedBy, resolveSessionId } from '../../../domain/actor.js';
5
5
  import { appendDeliverySignal, appendMemoryStageSignal } from '../../../adapters/fs/session-metrics-log.js';
6
6
  import { checksumBlock, deliveryWarningLine, loadSessionRegistry, recordDeliveries, } from '../../../adapters/fs/session-delivery-registry.js';
7
7
  import { loadDeliverySettings } from '../../../adapters/fs/config-file.js';
8
+ import { colorsEnabled } from '../../../domain/facet-colors.js';
8
9
  import { withCliCall } from './with-cli-call.js';
9
10
  function parseCompact(v) {
10
11
  if (v === undefined)
@@ -30,12 +31,14 @@ export function memoryCallCommand() {
30
31
  // ensureCliSessionId в cli-entry); null → фильтр выключен (MCP-контур).
31
32
  const sessionKey = resolveSessionId();
32
33
  const registry = sessionKey ? loadSessionRegistry(baseDir, sessionKey) : null;
33
- const { store, index, clock } = createCliContainer(baseDir);
34
- const result = await getCallInjections({ store, index, clock }, {
34
+ const { store, index, clock, relations } = createCliContainer(baseDir);
35
+ const result = await getCallInjections({ store, index, clock, relations }, {
35
36
  topic: options.for,
36
37
  thread: options.thread !== undefined ? options.thread : undefined,
37
38
  compact: options.compact,
38
39
  deliveredRegistry: registry?.delivered,
40
+ // P212 (2.13 §5.3в): подсветка фасета в блоках (pipe/NO_COLOR → плоско)
41
+ colors: colorsEnabled(process.stdout, process.env),
39
42
  });
40
43
  if (result.blocks.length === 0) {
41
44
  if (result.deduplicated > 0) {
@@ -51,6 +54,10 @@ export function memoryCallCommand() {
51
54
  console.log(`\n[truncated: ${result.truncated} blocks omitted]`);
52
55
  }
53
56
  }
57
+ // 2.14 §7.1 (триггер 2): строка Стюарда — после блоков, вне blocks/бюджета
58
+ if (result.banner !== null) {
59
+ console.log('\n' + result.banner);
60
+ }
54
61
  // Ф26: доставка = срабатывание (decay-пробег сбрасывается по этим событиям,
55
62
  // спека §6). Объекты памяти НЕ обновляем (дорого) — last_triggered_at
56
63
  // вычисляет decay-прогон из лога.
@@ -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,3 +1,9 @@
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;
2
7
  export declare function memoryComplainCommand(baseDir?: string): Command;
8
+ export {};
3
9
  //# 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;AA0BpC,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,MAAkB,GAAG,OAAO,CAuD1E"}
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;AA0BpC,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,CAgE1E"}
@@ -20,6 +20,18 @@ const BASE_AGENT_IDS = [
20
20
  'worker-researcher',
21
21
  'worker-reviewer',
22
22
  ];
23
+ // Волна 2.14 §6.1: классификация жалоб technical/behavioral; дефолт —
24
+ // эвристика по about, флаг --kind переопределяет (владелец/лид всегда прав).
25
+ const COMPLAINT_KINDS = ['technical', 'behavioral'];
26
+ /** Дефолт-эвристика kind (спека §6.1): about = агент/скилл → behavioral;
27
+ * mem-id → technical; прочее — без kind (явный только через --kind). */
28
+ export function inferComplaintKind(about) {
29
+ if (BASE_AGENT_IDS.includes(about) || about.startsWith('skill:'))
30
+ return 'behavioral';
31
+ if (about.startsWith('mem_'))
32
+ return 'technical';
33
+ return undefined;
34
+ }
23
35
  // baseDir инъектится для тестов (прецедент: runValidate в memory-validate.ts);
24
36
  // при обычной регистрации в cli-entry cwd идёт через safeCwd (§2.5).
25
37
  export function memoryComplainCommand(baseDir = safeCwd()) {
@@ -30,12 +42,17 @@ export function memoryComplainCommand(baseDir = safeCwd()) {
30
42
  .option('--evidence <evidence>', 'Proof: verbatim quote + what happened (file/test/numbers)')
31
43
  .option('--text <text>', 'Deprecated alias for --evidence')
32
44
  .requiredOption('--proposal <proposal>', 'Proposed change to the rule')
45
+ .option('--kind <kind>', 'Complaint kind: technical | behavioral (default: heuristic by --about)')
33
46
  .option('--created-by <actor>', 'Creator actor (default: env WOLF_ACTOR, else user:cli)')
34
47
  .action(async (options) => {
35
48
  const evidence = options.evidence ?? options.text;
36
49
  if (!evidence) {
37
50
  throw new UserFacingError('--evidence is required (deprecated alias: --text)');
38
51
  }
52
+ if (options.kind !== undefined && !COMPLAINT_KINDS.includes(options.kind)) {
53
+ throw new UserFacingError(`Invalid --kind "${options.kind}": expected technical or behavioral`);
54
+ }
55
+ const kind = options.kind ?? inferComplaintKind(options.about);
39
56
  const { store, log, clock, idGen, index, relations, lock, declarations } = createCliContainer(baseDir);
40
57
  const aboutKnown = BASE_AGENT_IDS.includes(options.about) ||
41
58
  options.about.startsWith('skill:') ||
@@ -56,6 +73,7 @@ export function memoryComplainCommand(baseDir = safeCwd()) {
56
73
  rule: options.rule,
57
74
  evidence,
58
75
  proposal: options.proposal,
76
+ ...(kind !== undefined ? { kind } : {}),
59
77
  },
60
78
  });
61
79
  const id = result.object.id;
@@ -68,7 +86,9 @@ export function memoryComplainCommand(baseDir = safeCwd()) {
68
86
  actor: resolveCreatedBy(options.createdBy),
69
87
  objectId: id,
70
88
  });
89
+ // kind — отдельной строкой: существующие парсеры id читают split(': ')[1]
71
90
  console.log(`Complaint recorded: ${id}`);
91
+ console.log(`Complaint kind: ${kind ?? '—'}`);
72
92
  console.log(`Relation recorded: ${id} -complain-> ${options.about}`);
73
93
  });
74
94
  }
@@ -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-doctor.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,mBAAmB,IAAI,OAAO,CAoC7C"}
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;AA0CpC,wBAAgB,mBAAmB,IAAI,OAAO,CA2C7C"}
@@ -1,11 +1,45 @@
1
1
  import { Command } from 'commander';
2
- import { join } from 'path';
3
- import { existsSync } from 'fs';
2
+ import { join, sep } from 'path';
3
+ import { existsSync, realpathSync } from 'fs';
4
+ import { readFile } from 'fs/promises';
5
+ import { tmpdir } from 'os';
4
6
  import { runDoctor } from '../../../app/use-cases/doctor.js';
5
7
  import { ProjectsRegistry } from '../../../adapters/fs/projects-registry.js';
6
8
  import { wolfUserConfigDir } from '../../../adapters/fs/user-config.js';
7
9
  import { readSchemaVersion } from '../../../adapters/fs/schema-version.js';
8
10
  import { PLATFORM_ADAPTERS } from '../../../adapters/platforms/index.js';
11
+ import { safeCwd } from '../cli-entry.js';
12
+ /**
13
+ * Песочницы (спека 2.14 §8.2): записи под os.tmpdir() чистим с пометкой sandbox.
14
+ * macOS-нюанс: os.tmpdir() возвращает `/var/folders/…`, а пути в реестре часто
15
+ * `/private/var/folders/…` (realpath) — сравниваем с обоими написаними + `/tmp`
16
+ * (и его realpath) для явных tmp-песочниц.
17
+ */
18
+ function isSandboxPath(p) {
19
+ const roots = new Set();
20
+ for (const r of [tmpdir(), '/tmp']) {
21
+ roots.add(r);
22
+ try {
23
+ roots.add(realpathSync(r));
24
+ }
25
+ catch {
26
+ // корня нет — пропускаем
27
+ }
28
+ }
29
+ for (const r of roots) {
30
+ if (p === r || p.startsWith(r + sep))
31
+ return true;
32
+ }
33
+ return false;
34
+ }
35
+ async function readFileOrNull(p) {
36
+ try {
37
+ return await readFile(p, 'utf-8');
38
+ }
39
+ catch {
40
+ return null;
41
+ }
42
+ }
9
43
  export function memoryDoctorCommand() {
10
44
  return new Command('doctor')
11
45
  .description('Check all registered projects: binary vs schema version, platform configs, prune dead entries')
@@ -16,6 +50,9 @@ export function memoryDoctorCommand() {
16
50
  readSchema: (p) => readSchemaVersion(p),
17
51
  exists: async (p) => existsSync(p),
18
52
  adapters: PLATFORM_ADAPTERS,
53
+ cwd: safeCwd(),
54
+ isSandbox: isSandboxPath,
55
+ readFile: readFileOrNull,
19
56
  });
20
57
  console.log(`# wolf doctor — binary schema v${report.binarySchemaVersion}`);
21
58
  console.log(`registry: ${join(wolfUserConfigDir(), 'projects.yaml')}`);
@@ -25,6 +62,10 @@ export function memoryDoctorCommand() {
25
62
  return;
26
63
  }
27
64
  for (const e of report.entries) {
65
+ if (e.status === 'sandbox') {
66
+ console.log(`- ${e.path}: sandbox — pruned (os tmpdir)`);
67
+ continue;
68
+ }
28
69
  const schema = e.schemaVersion === null ? '-' : `v${e.schemaVersion}`;
29
70
  let hint = '';
30
71
  if (e.status === 'outdated-binary')
@@ -1 +1 @@
1
- {"version":3,"file":"memory-doctor.js","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEzE,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,+FAA+F,CAAC;SAC5G,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC;YAC7B,QAAQ;YACR,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACvC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAClC,QAAQ,EAAE,iBAAiB;SAC5B,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,kCAAkC,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,iBAAiB,EAAE,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;YACtE,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,CAAC,MAAM,KAAK,iBAAiB;gBAAE,IAAI,GAAG,4CAA4C,CAAC;YACxF,IAAI,CAAC,CAAC,MAAM,KAAK,kBAAkB;gBAAE,IAAI,GAAG,6DAA6D,CAAC;YAC1G,IAAI,CAAC,CAAC,MAAM,KAAK,iBAAiB;gBAAE,IAAI,GAAG,sDAAsD,CAAC;YAClG,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;gBAAE,IAAI,GAAG,mCAAmC,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,YAAY,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;YAClE,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,MAAM,CAAC,MAAM,aAAa,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QACtG,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"memory-doctor.js","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function memoryEditCommand(baseDir?: string): Command;
3
+ //# sourceMappingURL=memory-edit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-edit.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,MAAkB,GAAG,OAAO,CAmDtE"}
@@ -0,0 +1,67 @@
1
+ import { Command } from 'commander';
2
+ import { safeCwd } from '../cli-entry.js';
3
+ import { createCliContainer } from '../../../bootstrap/container.js';
4
+ import { UserFacingError } from '../../../domain/errors.js';
5
+ // wolf edit (спека 2.13 §6.1): правка title/body с diff-аудитом — отдельное
6
+ // событие memory.edited на каждое изменённое поле, before/after обрезаны до
7
+ // 200 симв (прецедент target-обрезки волны 0, session-metrics-log.ts:482).
8
+ // Смыслные смены (смена решения и т.п.) — по-прежнему supersede.
9
+ const CLIP = 200;
10
+ const clip = (s) => (s.length > CLIP ? s.slice(0, CLIP) : s);
11
+ // baseDir инъектится для тестов (прецедент: memory-update.ts).
12
+ export function memoryEditCommand(baseDir = safeCwd()) {
13
+ return new Command('edit')
14
+ .description('Edit title and/or body of a memory object (diff-audited in events.jsonl)')
15
+ .argument('<id>', 'Memory object id')
16
+ .option('--title <t>', 'New title')
17
+ .option('--body <b>', 'New body')
18
+ .option('--actor <actor>', 'Actor performing the edit', 'user:cli')
19
+ .action(async (id, options) => {
20
+ const { store, log, clock, idGen, index, lock } = createCliContainer(baseDir);
21
+ const existing = await store.get(id);
22
+ if (!existing)
23
+ throw new UserFacingError(`Memory object not found: ${id}`);
24
+ const edits = [];
25
+ if (options.title !== undefined) {
26
+ if (options.title.trim() === '')
27
+ throw new UserFacingError('Title must not be empty');
28
+ edits.push('title');
29
+ }
30
+ if (options.body !== undefined) {
31
+ if (options.body.trim() === '')
32
+ throw new UserFacingError('Body must not be empty');
33
+ edits.push('body');
34
+ }
35
+ if (edits.length === 0) {
36
+ throw new UserFacingError('Nothing to edit: pass --title and/or --body');
37
+ }
38
+ const patch = {};
39
+ if (options.title !== undefined)
40
+ patch.title = options.title;
41
+ if (options.body !== undefined)
42
+ patch.body = options.body;
43
+ const run = async () => {
44
+ const updated = await store.update(id, patch);
45
+ const now = clock.now();
46
+ for (const field of edits) {
47
+ await log.append({
48
+ id: idGen.generateEventId(now),
49
+ type: 'memory.edited',
50
+ timestamp: now.toISOString(),
51
+ actor: options.actor,
52
+ payload: {
53
+ memory_id: id,
54
+ field,
55
+ before: clip(existing[field]),
56
+ after: clip(options[field]),
57
+ },
58
+ });
59
+ }
60
+ if (index)
61
+ await index.indexObject(updated);
62
+ console.log(`Edited ${id}: ${edits.join(', ')}`);
63
+ };
64
+ return lock ? lock.withLock(run) : run();
65
+ });
66
+ }
67
+ //# sourceMappingURL=memory-edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-edit.js","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-edit.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;AAuBpC,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAKrE,CAAC;AAEF,wFAAwF;AACxF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE,CAO7F;AAED,iBAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMvD;AAED,mGAAmG;AACnG,wBAAgB,uBAAuB,CAAC,IAAI,4BAAqB,GAAG,MAAM,GAAG,IAAI,CAchF;AAID,UAAU,EAAE;IACV,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtC;AAED,uGAAuG;AACvG,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAqBlF;AAED,uGAAuG;AACvG,wBAAsB,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAmB7E;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,CA4I3C"}
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;AA2BpC,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAKrE,CAAC;AAEF,wFAAwF;AACxF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE,CAO7F;AAED,iBAAS,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMvD;AAED,mGAAmG;AACnG,wBAAgB,uBAAuB,CAAC,IAAI,4BAAqB,GAAG,MAAM,GAAG,IAAI,CAchF;AAID,UAAU,EAAE;IACV,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACtC;AAED,uGAAuG;AACvG,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAqBlF;AAED,uGAAuG;AACvG,wBAAsB,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAmB7E;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,CAoL3C"}
@@ -12,8 +12,8 @@ import { ensureCurrentSchema } from '../../../adapters/fs/schema-guard.js';
12
12
  import { initProject, recreateConfig } from '../../../app/use-cases/init-project.js';
13
13
  import { OpencodeBaseSetRenderer } from '../../../adapters/render/opencode/opencode-renderer.js';
14
14
  import { templatesRoot, harnessTemplatesRoot, wolfVersion } from '../../../adapters/render/templates-root.js';
15
- import { seedBasePlaybooks } from '../../../app/use-cases/seed-base-playbooks.js';
16
- import { addMemoryObject } from '../../../app/use-cases/add-memory-object.js';
15
+ import { seedBasePlaybooks, PlaybookNoteSchema, } from '../../../app/use-cases/seed-base-playbooks.js';
16
+ import { governanceDefaults } from '../../../domain/governance.js';
17
17
  import { isNpxRun } from '../../../domain/npx.js';
18
18
  import { UserFacingError } from '../../../domain/errors.js';
19
19
  import { safeCwd } from '../cli-entry.js';
@@ -211,9 +211,51 @@ export function memoryInitCommand() {
211
211
  }
212
212
  }
213
213
  // ListFilters поддерживает type (memory-store.port.ts) — фильтр на уровне порта (правка r2)
214
- const existing = await store.list({ type: 'playbook' });
214
+ // wave13-a: playbook → note+facet howto; старые файлы читаются как note (alias)
215
+ const existing = (await store.list({ type: 'note' })).filter((o) => o.facet === 'howto' || o.alias_origin === 'playbook');
215
216
  const seededOwners = new Set(existing.map((o) => o.owner_skill).filter((x) => Boolean(x)));
216
- const addFn = (input) => addMemoryObject({ store, log, clock, idGen, index, lock, declarations }, input);
217
+ // wave13-a: guard полей addMemoryObject не пускает steps/owner_skill в extra
218
+ // note — сеем напрямую по window-compat паттерну (схема — PlaybookNoteSchema)
219
+ const addFn = (input) => {
220
+ const now = clock.now();
221
+ const defaults = governanceDefaults(input.createdBy);
222
+ const object = {
223
+ id: idGen.generateMemoryId(now, input.title),
224
+ type: 'note',
225
+ facet: 'howto',
226
+ title: input.title,
227
+ body: input.body,
228
+ status: 'active',
229
+ review_state: 'accepted',
230
+ confidence: 'medium',
231
+ importance: 0.5,
232
+ created_at: now.toISOString(),
233
+ updated_at: now.toISOString(),
234
+ created_by: input.createdBy,
235
+ schema_version: 1,
236
+ source: { kind: 'manual' },
237
+ related: { files: [], docs: [], decisions: [] },
238
+ tags: input.tags,
239
+ superseded_by: null,
240
+ memory_class: defaults.memory_class,
241
+ truth_role: defaults.truth_role,
242
+ lifetime: defaults.lifetime,
243
+ ...input.extra,
244
+ };
245
+ PlaybookNoteSchema.parse(object);
246
+ return (async () => {
247
+ await store.save(object);
248
+ await log.append({
249
+ id: idGen.generateEventId(now),
250
+ type: 'memory.added',
251
+ timestamp: now.toISOString(),
252
+ actor: input.createdBy,
253
+ payload: { memory_id: object.id, type: object.type },
254
+ });
255
+ if (index)
256
+ await index.indexObject(object);
257
+ })();
258
+ };
217
259
  const result = await initProject({
218
260
  initializer,
219
261
  registry,
@@ -249,9 +291,6 @@ export function memoryInitCommand() {
249
291
  console.log(formatBaseSetLine(o)); // F5: скиллы — [skill] имя → путь
250
292
  for (const outcome of result.platformOutcomes)
251
293
  console.log(formatPlatformLine(outcome)); // F6: configFile + keys
252
- if (result.routing.action !== 'skipped') {
253
- console.log(`- routing: agent models — ${result.routing.action} (primary ${models.primary})`);
254
- }
255
294
  console.log(result.initReport.action === 'created'
256
295
  ? `- init-report: created (${result.initReport.id})`
257
296
  : '- init-report: already exists — not duplicating');