@soleri/core 9.0.4 → 9.3.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 (744) hide show
  1. package/data/flows/build.flow.yaml +8 -9
  2. package/data/flows/deliver.flow.yaml +9 -10
  3. package/data/flows/design.flow.yaml +3 -4
  4. package/data/flows/enhance.flow.yaml +5 -6
  5. package/data/flows/explore.flow.yaml +3 -4
  6. package/data/flows/fix.flow.yaml +5 -6
  7. package/data/flows/plan.flow.yaml +4 -5
  8. package/data/flows/review.flow.yaml +3 -4
  9. package/dist/brain/intelligence.d.ts +27 -0
  10. package/dist/brain/intelligence.d.ts.map +1 -1
  11. package/dist/brain/intelligence.js +160 -14
  12. package/dist/brain/intelligence.js.map +1 -1
  13. package/dist/brain/learning-radar.d.ts +4 -0
  14. package/dist/brain/learning-radar.d.ts.map +1 -1
  15. package/dist/brain/learning-radar.js +20 -1
  16. package/dist/brain/learning-radar.js.map +1 -1
  17. package/dist/brain/strength-scorer.d.ts +31 -0
  18. package/dist/brain/strength-scorer.d.ts.map +1 -0
  19. package/dist/brain/strength-scorer.js +264 -0
  20. package/dist/brain/strength-scorer.js.map +1 -0
  21. package/dist/chat/agent-loop.d.ts.map +1 -1
  22. package/dist/chat/agent-loop.js +2 -0
  23. package/dist/chat/agent-loop.js.map +1 -1
  24. package/dist/chat/notifications.d.ts.map +1 -1
  25. package/dist/chat/notifications.js +2 -0
  26. package/dist/chat/notifications.js.map +1 -1
  27. package/dist/claudemd/compose.js +1 -1
  28. package/dist/claudemd/compose.js.map +1 -1
  29. package/dist/control/intent-router.d.ts.map +1 -1
  30. package/dist/control/intent-router.js +12 -4
  31. package/dist/control/intent-router.js.map +1 -1
  32. package/dist/curator/contradiction-detector.d.ts +27 -0
  33. package/dist/curator/contradiction-detector.d.ts.map +1 -0
  34. package/dist/curator/contradiction-detector.js +62 -0
  35. package/dist/curator/contradiction-detector.js.map +1 -0
  36. package/dist/curator/curator.d.ts +3 -4
  37. package/dist/curator/curator.d.ts.map +1 -1
  38. package/dist/curator/curator.js +94 -453
  39. package/dist/curator/curator.js.map +1 -1
  40. package/dist/curator/duplicate-detector.d.ts +14 -0
  41. package/dist/curator/duplicate-detector.d.ts.map +1 -0
  42. package/dist/curator/duplicate-detector.js +77 -0
  43. package/dist/curator/duplicate-detector.js.map +1 -0
  44. package/dist/curator/health-audit.d.ts +15 -0
  45. package/dist/curator/health-audit.d.ts.map +1 -0
  46. package/dist/curator/health-audit.js +97 -0
  47. package/dist/curator/health-audit.js.map +1 -0
  48. package/dist/curator/metadata-enricher.d.ts +17 -0
  49. package/dist/curator/metadata-enricher.d.ts.map +1 -0
  50. package/dist/curator/metadata-enricher.js +60 -0
  51. package/dist/curator/metadata-enricher.js.map +1 -0
  52. package/dist/curator/schema.d.ts +7 -0
  53. package/dist/curator/schema.d.ts.map +1 -0
  54. package/dist/curator/schema.js +62 -0
  55. package/dist/curator/schema.js.map +1 -0
  56. package/dist/curator/tag-manager.d.ts +36 -0
  57. package/dist/curator/tag-manager.d.ts.map +1 -0
  58. package/dist/curator/tag-manager.js +78 -0
  59. package/dist/curator/tag-manager.js.map +1 -0
  60. package/dist/engine/bin/soleri-engine.js +24 -3
  61. package/dist/engine/bin/soleri-engine.js.map +1 -1
  62. package/dist/engine/core-ops.d.ts.map +1 -1
  63. package/dist/engine/core-ops.js +23 -8
  64. package/dist/engine/core-ops.js.map +1 -1
  65. package/dist/engine/module-manifest.d.ts.map +1 -1
  66. package/dist/engine/module-manifest.js +42 -2
  67. package/dist/engine/module-manifest.js.map +1 -1
  68. package/dist/engine/register-engine.d.ts.map +1 -1
  69. package/dist/engine/register-engine.js +50 -2
  70. package/dist/engine/register-engine.js.map +1 -1
  71. package/dist/errors/retry.d.ts.map +1 -1
  72. package/dist/errors/retry.js +2 -0
  73. package/dist/errors/retry.js.map +1 -1
  74. package/dist/facades/types.d.ts +1 -1
  75. package/dist/flows/chain-types.d.ts +18 -18
  76. package/dist/flows/gate-evaluator.d.ts.map +1 -1
  77. package/dist/flows/gate-evaluator.js +22 -0
  78. package/dist/flows/gate-evaluator.js.map +1 -1
  79. package/dist/flows/types.d.ts +157 -28
  80. package/dist/flows/types.d.ts.map +1 -1
  81. package/dist/flows/types.js +4 -0
  82. package/dist/flows/types.js.map +1 -1
  83. package/dist/index.d.ts +10 -2
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +9 -1
  86. package/dist/index.js.map +1 -1
  87. package/dist/intake/intake-pipeline.d.ts.map +1 -1
  88. package/dist/intake/intake-pipeline.js +1 -0
  89. package/dist/intake/intake-pipeline.js.map +1 -1
  90. package/dist/intake/text-ingester.d.ts.map +1 -1
  91. package/dist/intake/text-ingester.js +2 -0
  92. package/dist/intake/text-ingester.js.map +1 -1
  93. package/dist/llm/key-pool.d.ts +1 -1
  94. package/dist/llm/key-pool.d.ts.map +1 -1
  95. package/dist/llm/key-pool.js +3 -4
  96. package/dist/llm/key-pool.js.map +1 -1
  97. package/dist/llm/utils.d.ts.map +1 -1
  98. package/dist/llm/utils.js +2 -0
  99. package/dist/llm/utils.js.map +1 -1
  100. package/dist/migrations/migration-runner.test-helpers.d.ts +13 -0
  101. package/dist/migrations/migration-runner.test-helpers.d.ts.map +1 -0
  102. package/dist/migrations/migration-runner.test-helpers.js +47 -0
  103. package/dist/migrations/migration-runner.test-helpers.js.map +1 -0
  104. package/dist/operator/operator-profile.d.ts +44 -0
  105. package/dist/operator/operator-profile.d.ts.map +1 -0
  106. package/dist/operator/operator-profile.js +383 -0
  107. package/dist/operator/operator-profile.js.map +1 -0
  108. package/dist/operator/operator-signals.d.ts +45 -0
  109. package/dist/operator/operator-signals.d.ts.map +1 -0
  110. package/dist/operator/operator-signals.js +228 -0
  111. package/dist/operator/operator-signals.js.map +1 -0
  112. package/dist/operator/operator-types.d.ts +360 -0
  113. package/dist/operator/operator-types.d.ts.map +1 -0
  114. package/dist/operator/operator-types.js +24 -0
  115. package/dist/operator/operator-types.js.map +1 -0
  116. package/dist/packs/types.d.ts +27 -27
  117. package/dist/paths.d.ts +40 -0
  118. package/dist/paths.d.ts.map +1 -0
  119. package/dist/paths.js +98 -0
  120. package/dist/paths.js.map +1 -0
  121. package/dist/persistence/index.d.ts +1 -1
  122. package/dist/persistence/index.d.ts.map +1 -1
  123. package/dist/persistence/index.js +1 -1
  124. package/dist/persistence/index.js.map +1 -1
  125. package/dist/persistence/sqlite-provider.d.ts +2 -0
  126. package/dist/persistence/sqlite-provider.d.ts.map +1 -1
  127. package/dist/persistence/sqlite-provider.js +8 -5
  128. package/dist/persistence/sqlite-provider.js.map +1 -1
  129. package/dist/planning/evidence-collector.d.ts +13 -1
  130. package/dist/planning/evidence-collector.d.ts.map +1 -1
  131. package/dist/planning/evidence-collector.js +33 -0
  132. package/dist/planning/evidence-collector.js.map +1 -1
  133. package/dist/planning/gap-analysis.d.ts +5 -4
  134. package/dist/planning/gap-analysis.d.ts.map +1 -1
  135. package/dist/planning/gap-analysis.js +7 -341
  136. package/dist/planning/gap-analysis.js.map +1 -1
  137. package/dist/planning/gap-passes.d.ts +19 -0
  138. package/dist/planning/gap-passes.d.ts.map +1 -0
  139. package/dist/planning/gap-passes.js +174 -0
  140. package/dist/planning/gap-passes.js.map +1 -0
  141. package/dist/planning/gap-patterns.d.ts +29 -0
  142. package/dist/planning/gap-patterns.d.ts.map +1 -0
  143. package/dist/planning/gap-patterns.js +175 -0
  144. package/dist/planning/gap-patterns.js.map +1 -0
  145. package/dist/planning/gap-types.d.ts +1 -1
  146. package/dist/planning/gap-types.d.ts.map +1 -1
  147. package/dist/planning/gap-types.js +1 -0
  148. package/dist/planning/gap-types.js.map +1 -1
  149. package/dist/planning/github-projection.d.ts +122 -0
  150. package/dist/planning/github-projection.d.ts.map +1 -0
  151. package/dist/planning/github-projection.js +313 -0
  152. package/dist/planning/github-projection.js.map +1 -0
  153. package/dist/planning/impact-analyzer.d.ts +26 -0
  154. package/dist/planning/impact-analyzer.d.ts.map +1 -0
  155. package/dist/planning/impact-analyzer.js +201 -0
  156. package/dist/planning/impact-analyzer.js.map +1 -0
  157. package/dist/planning/plan-lifecycle.d.ts +136 -0
  158. package/dist/planning/plan-lifecycle.d.ts.map +1 -0
  159. package/dist/planning/plan-lifecycle.js +309 -0
  160. package/dist/planning/plan-lifecycle.js.map +1 -0
  161. package/dist/planning/planner-types.d.ts +202 -0
  162. package/dist/planning/planner-types.d.ts.map +1 -0
  163. package/dist/planning/planner-types.js +6 -0
  164. package/dist/planning/planner-types.js.map +1 -0
  165. package/dist/planning/planner.d.ts +31 -383
  166. package/dist/planning/planner.d.ts.map +1 -1
  167. package/dist/planning/planner.js +151 -832
  168. package/dist/planning/planner.js.map +1 -1
  169. package/dist/planning/rationalization-detector.d.ts +32 -0
  170. package/dist/planning/rationalization-detector.d.ts.map +1 -0
  171. package/dist/planning/rationalization-detector.js +89 -0
  172. package/dist/planning/rationalization-detector.js.map +1 -0
  173. package/dist/planning/reconciliation-engine.d.ts +47 -0
  174. package/dist/planning/reconciliation-engine.d.ts.map +1 -0
  175. package/dist/planning/reconciliation-engine.js +128 -0
  176. package/dist/planning/reconciliation-engine.js.map +1 -0
  177. package/dist/planning/task-verifier.d.ts +85 -0
  178. package/dist/planning/task-verifier.d.ts.map +1 -0
  179. package/dist/planning/task-verifier.js +235 -0
  180. package/dist/planning/task-verifier.js.map +1 -0
  181. package/dist/plugins/types.d.ts +4 -4
  182. package/dist/runtime/admin-ops.d.ts +2 -2
  183. package/dist/runtime/admin-ops.d.ts.map +1 -1
  184. package/dist/runtime/admin-ops.js +44 -17
  185. package/dist/runtime/admin-ops.js.map +1 -1
  186. package/dist/runtime/admin-setup-ops.d.ts.map +1 -1
  187. package/dist/runtime/admin-setup-ops.js +22 -46
  188. package/dist/runtime/admin-setup-ops.js.map +1 -1
  189. package/dist/runtime/archive-ops.d.ts +10 -0
  190. package/dist/runtime/archive-ops.d.ts.map +1 -0
  191. package/dist/runtime/archive-ops.js +310 -0
  192. package/dist/runtime/archive-ops.js.map +1 -0
  193. package/dist/runtime/branching-ops.d.ts +12 -0
  194. package/dist/runtime/branching-ops.d.ts.map +1 -0
  195. package/dist/runtime/branching-ops.js +100 -0
  196. package/dist/runtime/branching-ops.js.map +1 -0
  197. package/dist/runtime/capture-ops.d.ts.map +1 -1
  198. package/dist/runtime/capture-ops.js +42 -7
  199. package/dist/runtime/capture-ops.js.map +1 -1
  200. package/dist/runtime/claude-md-helpers.js +1 -1
  201. package/dist/runtime/claude-md-helpers.js.map +1 -1
  202. package/dist/runtime/context-health.d.ts +31 -0
  203. package/dist/runtime/context-health.d.ts.map +1 -0
  204. package/dist/runtime/context-health.js +57 -0
  205. package/dist/runtime/context-health.js.map +1 -0
  206. package/dist/runtime/facades/archive-facade.d.ts +10 -0
  207. package/dist/runtime/facades/archive-facade.d.ts.map +1 -0
  208. package/dist/runtime/facades/archive-facade.js +11 -0
  209. package/dist/runtime/facades/archive-facade.js.map +1 -0
  210. package/dist/runtime/facades/brain-facade.d.ts.map +1 -1
  211. package/dist/runtime/facades/brain-facade.js +2 -0
  212. package/dist/runtime/facades/brain-facade.js.map +1 -1
  213. package/dist/runtime/facades/branching-facade.d.ts +7 -0
  214. package/dist/runtime/facades/branching-facade.d.ts.map +1 -0
  215. package/dist/runtime/facades/branching-facade.js +8 -0
  216. package/dist/runtime/facades/branching-facade.js.map +1 -0
  217. package/dist/runtime/facades/chat-facade.d.ts +7 -0
  218. package/dist/runtime/facades/chat-facade.d.ts.map +1 -1
  219. package/dist/runtime/facades/chat-facade.js +15 -800
  220. package/dist/runtime/facades/chat-facade.js.map +1 -1
  221. package/dist/runtime/facades/chat-service-ops.d.ts +9 -0
  222. package/dist/runtime/facades/chat-service-ops.d.ts.map +1 -0
  223. package/dist/runtime/facades/chat-service-ops.js +332 -0
  224. package/dist/runtime/facades/chat-service-ops.js.map +1 -0
  225. package/dist/runtime/facades/chat-session-ops.d.ts +8 -0
  226. package/dist/runtime/facades/chat-session-ops.d.ts.map +1 -0
  227. package/dist/runtime/facades/chat-session-ops.js +136 -0
  228. package/dist/runtime/facades/chat-session-ops.js.map +1 -0
  229. package/dist/runtime/facades/chat-state.d.ts +31 -0
  230. package/dist/runtime/facades/chat-state.d.ts.map +1 -0
  231. package/dist/runtime/facades/chat-state.js +32 -0
  232. package/dist/runtime/facades/chat-state.js.map +1 -0
  233. package/dist/runtime/facades/chat-transport-ops.d.ts +9 -0
  234. package/dist/runtime/facades/chat-transport-ops.d.ts.map +1 -0
  235. package/dist/runtime/facades/chat-transport-ops.js +337 -0
  236. package/dist/runtime/facades/chat-transport-ops.js.map +1 -0
  237. package/dist/runtime/facades/control-facade.d.ts.map +1 -1
  238. package/dist/runtime/facades/control-facade.js +4 -1
  239. package/dist/runtime/facades/control-facade.js.map +1 -1
  240. package/dist/runtime/facades/index.d.ts.map +1 -1
  241. package/dist/runtime/facades/index.js +48 -0
  242. package/dist/runtime/facades/index.js.map +1 -1
  243. package/dist/runtime/facades/intake-facade.d.ts +9 -0
  244. package/dist/runtime/facades/intake-facade.d.ts.map +1 -0
  245. package/dist/runtime/facades/intake-facade.js +11 -0
  246. package/dist/runtime/facades/intake-facade.js.map +1 -0
  247. package/dist/runtime/facades/links-facade.d.ts +9 -0
  248. package/dist/runtime/facades/links-facade.d.ts.map +1 -0
  249. package/dist/runtime/facades/links-facade.js +10 -0
  250. package/dist/runtime/facades/links-facade.js.map +1 -0
  251. package/dist/runtime/facades/memory-facade.d.ts.map +1 -1
  252. package/dist/runtime/facades/memory-facade.js +75 -6
  253. package/dist/runtime/facades/memory-facade.js.map +1 -1
  254. package/dist/runtime/facades/operator-facade.d.ts +8 -0
  255. package/dist/runtime/facades/operator-facade.d.ts.map +1 -0
  256. package/dist/runtime/facades/operator-facade.js +220 -0
  257. package/dist/runtime/facades/operator-facade.js.map +1 -0
  258. package/dist/runtime/facades/orchestrate-facade.js +3 -3
  259. package/dist/runtime/facades/orchestrate-facade.js.map +1 -1
  260. package/dist/runtime/facades/plan-facade.d.ts.map +1 -1
  261. package/dist/runtime/facades/plan-facade.js +42 -6
  262. package/dist/runtime/facades/plan-facade.js.map +1 -1
  263. package/dist/runtime/facades/review-facade.d.ts +7 -0
  264. package/dist/runtime/facades/review-facade.d.ts.map +1 -0
  265. package/dist/runtime/facades/review-facade.js +8 -0
  266. package/dist/runtime/facades/review-facade.js.map +1 -0
  267. package/dist/runtime/facades/sync-facade.d.ts +7 -0
  268. package/dist/runtime/facades/sync-facade.d.ts.map +1 -0
  269. package/dist/runtime/facades/sync-facade.js +8 -0
  270. package/dist/runtime/facades/sync-facade.js.map +1 -0
  271. package/dist/runtime/facades/tier-facade.d.ts +7 -0
  272. package/dist/runtime/facades/tier-facade.d.ts.map +1 -0
  273. package/dist/runtime/facades/tier-facade.js +8 -0
  274. package/dist/runtime/facades/tier-facade.js.map +1 -0
  275. package/dist/runtime/facades/vault-facade.d.ts +12 -1
  276. package/dist/runtime/facades/vault-facade.d.ts.map +1 -1
  277. package/dist/runtime/facades/vault-facade.js +55 -251
  278. package/dist/runtime/facades/vault-facade.js.map +1 -1
  279. package/dist/runtime/github-integration.d.ts +49 -0
  280. package/dist/runtime/github-integration.d.ts.map +1 -0
  281. package/dist/runtime/github-integration.js +120 -0
  282. package/dist/runtime/github-integration.js.map +1 -0
  283. package/dist/runtime/grading-ops.js +1 -1
  284. package/dist/runtime/grading-ops.js.map +1 -1
  285. package/dist/runtime/memory-extra-ops.d.ts.map +1 -1
  286. package/dist/runtime/memory-extra-ops.js +6 -2
  287. package/dist/runtime/memory-extra-ops.js.map +1 -1
  288. package/dist/runtime/orchestrate-ops.d.ts.map +1 -1
  289. package/dist/runtime/orchestrate-ops.js +386 -37
  290. package/dist/runtime/orchestrate-ops.js.map +1 -1
  291. package/dist/runtime/planning-extra-ops.d.ts.map +1 -1
  292. package/dist/runtime/planning-extra-ops.js +69 -4
  293. package/dist/runtime/planning-extra-ops.js.map +1 -1
  294. package/dist/runtime/review-ops.d.ts +10 -0
  295. package/dist/runtime/review-ops.d.ts.map +1 -0
  296. package/dist/runtime/review-ops.js +97 -0
  297. package/dist/runtime/review-ops.js.map +1 -0
  298. package/dist/runtime/runtime.d.ts.map +1 -1
  299. package/dist/runtime/runtime.js +29 -12
  300. package/dist/runtime/runtime.js.map +1 -1
  301. package/dist/runtime/session-briefing.d.ts +3 -0
  302. package/dist/runtime/session-briefing.d.ts.map +1 -1
  303. package/dist/runtime/session-briefing.js +72 -1
  304. package/dist/runtime/session-briefing.js.map +1 -1
  305. package/dist/runtime/sync-ops.d.ts +12 -0
  306. package/dist/runtime/sync-ops.d.ts.map +1 -0
  307. package/dist/runtime/sync-ops.js +288 -0
  308. package/dist/runtime/sync-ops.js.map +1 -0
  309. package/dist/runtime/tier-ops.d.ts +13 -0
  310. package/dist/runtime/tier-ops.d.ts.map +1 -0
  311. package/dist/runtime/tier-ops.js +110 -0
  312. package/dist/runtime/tier-ops.js.map +1 -0
  313. package/dist/runtime/types.d.ts +10 -4
  314. package/dist/runtime/types.d.ts.map +1 -1
  315. package/dist/runtime/vault-extra-ops.d.ts +5 -4
  316. package/dist/runtime/vault-extra-ops.d.ts.map +1 -1
  317. package/dist/runtime/vault-extra-ops.js +5 -300
  318. package/dist/runtime/vault-extra-ops.js.map +1 -1
  319. package/dist/runtime/vault-sharing-ops.d.ts +4 -4
  320. package/dist/runtime/vault-sharing-ops.d.ts.map +1 -1
  321. package/dist/runtime/vault-sharing-ops.js +5 -300
  322. package/dist/runtime/vault-sharing-ops.js.map +1 -1
  323. package/dist/skills/sync-skills.d.ts +27 -0
  324. package/dist/skills/sync-skills.d.ts.map +1 -0
  325. package/dist/skills/sync-skills.js +81 -0
  326. package/dist/skills/sync-skills.js.map +1 -0
  327. package/dist/update-check.d.ts +14 -0
  328. package/dist/update-check.d.ts.map +1 -0
  329. package/dist/update-check.js +96 -0
  330. package/dist/update-check.js.map +1 -0
  331. package/dist/vault/linking.d.ts +10 -12
  332. package/dist/vault/linking.d.ts.map +1 -1
  333. package/dist/vault/linking.js +140 -161
  334. package/dist/vault/linking.js.map +1 -1
  335. package/dist/vault/vault-entries.d.ts +69 -0
  336. package/dist/vault/vault-entries.d.ts.map +1 -0
  337. package/dist/vault/vault-entries.js +299 -0
  338. package/dist/vault/vault-entries.js.map +1 -0
  339. package/dist/vault/vault-interfaces.d.ts +153 -0
  340. package/dist/vault/vault-interfaces.d.ts.map +1 -0
  341. package/dist/vault/vault-interfaces.js +2 -0
  342. package/dist/vault/vault-interfaces.js.map +1 -0
  343. package/dist/vault/vault-maintenance.d.ts +40 -0
  344. package/dist/vault/vault-maintenance.d.ts.map +1 -0
  345. package/dist/vault/vault-maintenance.js +146 -0
  346. package/dist/vault/vault-maintenance.js.map +1 -0
  347. package/dist/vault/vault-markdown-sync.d.ts +22 -0
  348. package/dist/vault/vault-markdown-sync.d.ts.map +1 -0
  349. package/dist/vault/vault-markdown-sync.js +143 -0
  350. package/dist/vault/vault-markdown-sync.js.map +1 -0
  351. package/dist/vault/vault-memories.d.ts +61 -0
  352. package/dist/vault/vault-memories.d.ts.map +1 -0
  353. package/dist/vault/vault-memories.js +242 -0
  354. package/dist/vault/vault-memories.js.map +1 -0
  355. package/dist/vault/vault-schema.d.ts +9 -0
  356. package/dist/vault/vault-schema.d.ts.map +1 -0
  357. package/dist/vault/vault-schema.js +205 -0
  358. package/dist/vault/vault-schema.js.map +1 -0
  359. package/dist/vault/vault.d.ts +29 -81
  360. package/dist/vault/vault.d.ts.map +1 -1
  361. package/dist/vault/vault.js +82 -931
  362. package/dist/vault/vault.js.map +1 -1
  363. package/package.json +7 -7
  364. package/src/agency/agency-manager.test.ts +620 -0
  365. package/src/agency/default-rules.test.ts +236 -0
  366. package/src/{__tests__ → brain}/brain-intelligence.test.ts +37 -14
  367. package/src/{__tests__ → brain}/brain.test.ts +1 -1
  368. package/src/brain/intelligence.ts +196 -15
  369. package/src/brain/learning-radar.ts +22 -1
  370. package/src/{__tests__ → brain}/second-brain-features.test.ts +4 -4
  371. package/src/{__tests__ → brain}/session-lifecycle.test.ts +2 -2
  372. package/src/capabilities/chain-mapping.test.ts +66 -0
  373. package/src/capabilities/registry.test.ts +359 -0
  374. package/src/chat/agent-loop.test.ts +384 -0
  375. package/src/chat/agent-loop.ts +2 -0
  376. package/src/{__tests__ → chat}/chat-differentiators.test.ts +3 -3
  377. package/src/{__tests__ → chat}/chat-enhanced.test.ts +4 -4
  378. package/src/{__tests__ → chat}/chat-transport.test.ts +6 -6
  379. package/src/chat/mcp-bridge.test.ts +178 -0
  380. package/src/chat/notifications.ts +2 -0
  381. package/src/chat/output-compressor.test.ts +164 -0
  382. package/src/claudemd/compose.test.ts +178 -0
  383. package/src/claudemd/compose.ts +1 -1
  384. package/src/claudemd/inject.test.ts +201 -0
  385. package/src/context/context-engine.test.ts +506 -0
  386. package/src/control/identity-manager.test.ts +305 -0
  387. package/src/control/intent-router.test.ts +360 -0
  388. package/src/control/intent-router.ts +13 -4
  389. package/src/curator/classifier.test.ts +110 -0
  390. package/src/curator/contradiction-detector.test.ts +205 -0
  391. package/src/curator/contradiction-detector.ts +87 -0
  392. package/src/{__tests__ → curator}/curator-pipeline-e2e.test.ts +10 -10
  393. package/src/{__tests__ → curator}/curator.test.ts +77 -1
  394. package/src/curator/curator.ts +160 -600
  395. package/src/curator/duplicate-detector.test.ts +245 -0
  396. package/src/curator/duplicate-detector.ts +103 -0
  397. package/src/curator/health-audit.ts +126 -0
  398. package/src/curator/metadata-enricher.ts +84 -0
  399. package/src/curator/quality-gate.test.ts +175 -0
  400. package/src/curator/schema.ts +65 -0
  401. package/src/curator/tag-manager.test.ts +173 -0
  402. package/src/curator/tag-manager.ts +109 -0
  403. package/src/domain-packs/inject-rules.test.ts +117 -0
  404. package/src/domain-packs/knowledge-installer.test.ts +163 -0
  405. package/src/domain-packs/loader.test.ts +86 -0
  406. package/src/domain-packs/pack-runtime.test.ts +140 -0
  407. package/src/domain-packs/skills-installer.test.ts +135 -0
  408. package/src/domain-packs/token-resolver.test.ts +148 -0
  409. package/src/domain-packs/types.test.ts +144 -0
  410. package/src/enforcement/adapters/claude-code.test.ts +216 -0
  411. package/src/enforcement/registry.test.ts +258 -0
  412. package/src/engine/bin/soleri-engine.ts +30 -4
  413. package/src/engine/core-ops.test.ts +254 -0
  414. package/src/engine/core-ops.ts +25 -8
  415. package/src/engine/module-manifest.test.ts +125 -0
  416. package/src/engine/module-manifest.ts +42 -2
  417. package/src/engine/register-engine.test.ts +235 -0
  418. package/src/engine/register-engine.ts +50 -3
  419. package/src/errors/classify.test.ts +203 -0
  420. package/src/errors/retry.test.ts +153 -0
  421. package/src/errors/retry.ts +2 -0
  422. package/src/errors/types.test.ts +108 -0
  423. package/src/events/event-bus.test.ts +149 -0
  424. package/src/extensions/middleware.test.ts +234 -0
  425. package/src/facades/facade-factory.test.ts +470 -0
  426. package/src/flows/chain-runner.test.ts +273 -0
  427. package/src/flows/context-router.test.ts +52 -0
  428. package/src/flows/dispatch-registry.test.ts +128 -0
  429. package/src/flows/epilogue.test.ts +113 -0
  430. package/src/flows/executor.test.ts +263 -0
  431. package/src/flows/gate-evaluator.test.ts +200 -0
  432. package/src/flows/gate-evaluator.ts +23 -0
  433. package/src/flows/types.ts +4 -0
  434. package/src/governance/governance.test.ts +842 -0
  435. package/src/{__tests__ → health}/health-registry.test.ts +75 -55
  436. package/src/health/vault-integrity.test.ts +110 -0
  437. package/src/index.ts +92 -0
  438. package/src/intake/content-classifier.test.ts +279 -0
  439. package/src/intake/dedup-gate.test.ts +147 -0
  440. package/src/intake/intake-pipeline.test.ts +508 -0
  441. package/src/intake/intake-pipeline.ts +1 -0
  442. package/src/intake/text-ingester.test.ts +200 -0
  443. package/src/intake/text-ingester.ts +2 -0
  444. package/src/llm/key-pool.test.ts +234 -0
  445. package/src/llm/key-pool.ts +3 -4
  446. package/src/llm/llm-client.test.ts +342 -0
  447. package/src/llm/oauth-discovery.test.ts +180 -0
  448. package/src/llm/utils.test.ts +371 -0
  449. package/src/llm/utils.ts +2 -0
  450. package/src/{__tests__ → logging}/logger.test.ts +44 -62
  451. package/src/loop/loop-manager.test.ts +515 -0
  452. package/src/migrations/migration-runner.edge-cases.test.ts +314 -0
  453. package/src/migrations/migration-runner.test-helpers.ts +64 -0
  454. package/src/migrations/migration-runner.test.ts +385 -0
  455. package/src/operator/auto-signal-pipeline.test.ts +207 -0
  456. package/src/operator/operator-profile-extended.test.ts +330 -0
  457. package/src/operator/operator-profile.test.ts +332 -0
  458. package/src/operator/operator-profile.ts +485 -0
  459. package/src/operator/operator-signals-extended.test.ts +257 -0
  460. package/src/operator/operator-signals.test.ts +277 -0
  461. package/src/operator/operator-signals.ts +262 -0
  462. package/src/operator/operator-types.ts +444 -0
  463. package/src/operator/prompts/hook-precompact-operator-dispatch.md +98 -0
  464. package/src/operator/prompts/subagent-soft-signal-extractor.md +130 -0
  465. package/src/operator/prompts/subagent-synthesis-cognition.md +190 -0
  466. package/src/operator/prompts/subagent-synthesis-communication.md +146 -0
  467. package/src/operator/prompts/subagent-synthesis-technical.md +170 -0
  468. package/src/operator/prompts/subagent-synthesis-trust.md +149 -0
  469. package/src/{__tests__ → packs}/pack-lockfile.test.ts +3 -3
  470. package/src/{__tests__ → packs}/pack-system.test.ts +2 -2
  471. package/src/paths.ts +115 -0
  472. package/src/persistence/index.ts +1 -1
  473. package/src/persistence/sqlite-provider.test.ts +540 -0
  474. package/src/persistence/sqlite-provider.ts +8 -5
  475. package/src/persona/defaults.test.ts +55 -0
  476. package/src/persona/loader.test.ts +67 -0
  477. package/src/persona/prompt-generator.test.ts +127 -0
  478. package/src/planning/evidence-collector.test.ts +515 -0
  479. package/src/planning/evidence-collector.ts +47 -0
  480. package/src/planning/gap-analysis-alternatives.test.ts +199 -0
  481. package/src/planning/gap-analysis.ts +21 -636
  482. package/src/planning/gap-passes.test.ts +554 -0
  483. package/src/planning/gap-passes.ts +367 -0
  484. package/src/planning/gap-patterns.test.ts +394 -0
  485. package/src/planning/gap-patterns.ts +317 -0
  486. package/src/planning/gap-types.ts +4 -1
  487. package/src/planning/github-projection.test.ts +182 -0
  488. package/src/planning/github-projection.ts +446 -0
  489. package/src/planning/impact-analyzer.test.ts +167 -0
  490. package/src/planning/impact-analyzer.ts +251 -0
  491. package/src/planning/plan-lifecycle.test.ts +379 -0
  492. package/src/planning/plan-lifecycle.ts +377 -0
  493. package/src/planning/planner-types.ts +215 -0
  494. package/src/{__tests__ → planning}/planner.test.ts +179 -15
  495. package/src/planning/planner.ts +221 -1112
  496. package/src/planning/rationalization-detector.test.ts +156 -0
  497. package/src/planning/rationalization-detector.ts +136 -0
  498. package/src/planning/reconciliation-engine.test.ts +158 -0
  499. package/src/planning/reconciliation-engine.ts +161 -0
  500. package/src/planning/task-verifier.test.ts +267 -0
  501. package/src/planning/task-verifier.ts +309 -0
  502. package/src/planning/verification-protocol.test.ts +201 -0
  503. package/src/playbooks/generic/generic-playbooks.test.ts +438 -0
  504. package/src/playbooks/index.test.ts +77 -0
  505. package/src/playbooks/playbook-executor.test.ts +253 -0
  506. package/src/playbooks/playbook-registry.test.ts +232 -0
  507. package/src/playbooks/playbook-seeder.test.ts +153 -0
  508. package/src/plugins/plugin-loader.test.ts +217 -0
  509. package/src/plugins/plugin-registry.test.ts +284 -0
  510. package/src/project/project-registry.test.ts +439 -0
  511. package/src/prompts/parser.test.ts +100 -0
  512. package/src/prompts/template-manager.test.ts +112 -0
  513. package/src/{__tests__ → queue}/async-infrastructure.test.ts +3 -3
  514. package/src/queue/job-queue.test.ts +327 -0
  515. package/src/queue/pipeline-runner.test.ts +209 -0
  516. package/src/runtime/admin-extra-ops.test.ts +513 -0
  517. package/src/runtime/admin-ops.test.ts +255 -0
  518. package/src/runtime/admin-ops.ts +45 -17
  519. package/src/runtime/admin-setup-ops.test.ts +327 -0
  520. package/src/runtime/admin-setup-ops.ts +26 -42
  521. package/src/runtime/archive-ops.test.ts +272 -0
  522. package/src/runtime/archive-ops.ts +347 -0
  523. package/src/runtime/branching-ops.test.ts +144 -0
  524. package/src/runtime/branching-ops.ts +107 -0
  525. package/src/runtime/capture-ops.test.ts +419 -0
  526. package/src/runtime/capture-ops.ts +50 -8
  527. package/src/runtime/chain-ops.test.ts +159 -0
  528. package/src/runtime/claude-md-helpers.test.ts +189 -0
  529. package/src/runtime/claude-md-helpers.ts +1 -1
  530. package/src/runtime/context-health.test.ts +76 -0
  531. package/src/runtime/context-health.ts +83 -0
  532. package/src/runtime/curator-extra-ops.test.ts +204 -0
  533. package/src/runtime/deprecation.test.ts +98 -0
  534. package/src/runtime/domain-ops.test.ts +278 -0
  535. package/src/runtime/facades/admin-facade.test.ts +330 -0
  536. package/src/runtime/facades/agency-facade.test.ts +278 -0
  537. package/src/runtime/facades/archive-facade.test.ts +308 -0
  538. package/src/runtime/facades/archive-facade.ts +14 -0
  539. package/src/runtime/facades/brain-facade.test.ts +818 -0
  540. package/src/runtime/facades/brain-facade.ts +2 -0
  541. package/src/runtime/facades/branching-facade.test.ts +43 -0
  542. package/src/runtime/facades/branching-facade.ts +11 -0
  543. package/src/runtime/facades/chat-facade.test.ts +219 -0
  544. package/src/runtime/facades/chat-facade.ts +15 -906
  545. package/src/runtime/facades/chat-service-ops.test.ts +381 -0
  546. package/src/runtime/facades/chat-service-ops.ts +376 -0
  547. package/src/runtime/facades/chat-session-ops.test.ts +212 -0
  548. package/src/runtime/facades/chat-session-ops.ts +146 -0
  549. package/src/runtime/facades/chat-state.ts +60 -0
  550. package/src/runtime/facades/chat-transport-ops.test.ts +336 -0
  551. package/src/runtime/facades/chat-transport-ops.ts +379 -0
  552. package/src/runtime/facades/context-facade.test.ts +123 -0
  553. package/src/runtime/facades/control-facade.test.ts +436 -0
  554. package/src/runtime/facades/control-facade.ts +6 -1
  555. package/src/runtime/facades/curator-facade.test.ts +303 -0
  556. package/src/runtime/facades/index.ts +48 -0
  557. package/src/runtime/facades/intake-facade.test.ts +215 -0
  558. package/src/runtime/facades/intake-facade.ts +14 -0
  559. package/src/runtime/facades/links-facade.test.ts +203 -0
  560. package/src/runtime/facades/links-facade.ts +13 -0
  561. package/src/runtime/facades/loop-facade.test.ts +262 -0
  562. package/src/runtime/facades/memory-facade.test.ts +283 -0
  563. package/src/runtime/facades/memory-facade.ts +78 -6
  564. package/src/runtime/facades/operator-facade.test.ts +221 -0
  565. package/src/runtime/facades/operator-facade.ts +244 -0
  566. package/src/runtime/facades/orchestrate-facade.test.ts +191 -0
  567. package/src/runtime/facades/orchestrate-facade.ts +3 -3
  568. package/src/runtime/facades/plan-facade.test.ts +283 -0
  569. package/src/runtime/facades/plan-facade.ts +47 -6
  570. package/src/runtime/facades/review-facade.test.ts +82 -0
  571. package/src/runtime/facades/review-facade.ts +11 -0
  572. package/src/runtime/facades/sync-facade.test.ts +113 -0
  573. package/src/runtime/facades/sync-facade.ts +11 -0
  574. package/src/runtime/facades/tier-facade.test.ts +47 -0
  575. package/src/runtime/facades/tier-facade.ts +11 -0
  576. package/src/runtime/facades/vault-facade.test.ts +563 -0
  577. package/src/runtime/facades/vault-facade.ts +66 -265
  578. package/src/runtime/feature-flags.test.ts +140 -0
  579. package/src/runtime/github-integration.test.ts +89 -0
  580. package/src/runtime/github-integration.ts +162 -0
  581. package/src/runtime/grading-ops.test.ts +172 -0
  582. package/src/runtime/grading-ops.ts +1 -1
  583. package/src/runtime/intake-ops.test.ts +261 -0
  584. package/src/runtime/loop-ops.test.ts +248 -0
  585. package/src/runtime/memory-cross-project-ops.test.ts +188 -0
  586. package/src/runtime/memory-extra-ops.test.ts +453 -0
  587. package/src/runtime/memory-extra-ops.ts +6 -2
  588. package/src/runtime/orchestrate-ops.test.ts +302 -0
  589. package/src/runtime/orchestrate-ops.ts +461 -45
  590. package/src/runtime/pack-ops.test.ts +175 -0
  591. package/src/runtime/planning-extra-ops.test.ts +593 -0
  592. package/src/runtime/planning-extra-ops.ts +74 -4
  593. package/src/{__tests__ → runtime}/playbook-ops-execution.test.ts +3 -3
  594. package/src/runtime/playbook-ops.test.ts +285 -0
  595. package/src/runtime/plugin-ops.test.ts +259 -0
  596. package/src/runtime/project-ops.test.ts +255 -0
  597. package/src/runtime/review-ops.test.ts +142 -0
  598. package/src/runtime/review-ops.ts +99 -0
  599. package/src/runtime/runtime.test.ts +363 -0
  600. package/src/runtime/runtime.ts +41 -12
  601. package/src/runtime/session-briefing.test.ts +431 -0
  602. package/src/runtime/session-briefing.ts +86 -1
  603. package/src/runtime/sync-ops.test.ts +212 -0
  604. package/src/runtime/sync-ops.ts +325 -0
  605. package/src/runtime/telemetry-ops.test.ts +157 -0
  606. package/src/runtime/tier-ops.test.ts +159 -0
  607. package/src/runtime/tier-ops.ts +119 -0
  608. package/src/runtime/types.ts +10 -4
  609. package/src/runtime/vault-extra-ops.test.ts +270 -0
  610. package/src/runtime/vault-extra-ops.ts +5 -332
  611. package/src/runtime/vault-linking-ops.test.ts +237 -0
  612. package/src/runtime/vault-sharing-ops.test.ts +127 -0
  613. package/src/runtime/vault-sharing-ops.ts +5 -329
  614. package/src/skills/sync-skills.ts +98 -0
  615. package/src/streams/normalize.test.ts +95 -0
  616. package/src/streams/replayable-stream.test.ts +166 -0
  617. package/src/telemetry/telemetry.test.ts +143 -0
  618. package/src/transport/http-server.test.ts +394 -0
  619. package/src/transport/lsp-server.test.ts +458 -0
  620. package/src/transport/rate-limiter.test.ts +126 -0
  621. package/src/transport/session-manager.test.ts +133 -0
  622. package/src/transport/token-auth.test.ts +136 -0
  623. package/src/transport/ws-server.test.ts +297 -0
  624. package/src/update-check.ts +111 -0
  625. package/src/vault/__tests__/vault-characterization.test.ts +579 -0
  626. package/src/vault/content-hash.test.ts +78 -0
  627. package/src/vault/git-vault-sync.test.ts +234 -0
  628. package/src/vault/knowledge-review.test.ts +269 -0
  629. package/src/vault/linking.test.ts +391 -0
  630. package/src/vault/linking.ts +188 -181
  631. package/src/vault/obsidian-sync.test.ts +345 -0
  632. package/src/vault/playbook.test.ts +152 -0
  633. package/src/vault/scope-detector.test.ts +185 -0
  634. package/src/vault/vault-branching.test.ts +252 -0
  635. package/src/{__tests__ → vault}/vault-connect.test.ts +1 -1
  636. package/src/vault/vault-entries.ts +426 -0
  637. package/src/vault/vault-maintenance.ts +200 -0
  638. package/src/vault/vault-manager.test.ts +206 -0
  639. package/src/vault/vault-markdown-sync.test.ts +203 -0
  640. package/src/vault/vault-markdown-sync.ts +163 -0
  641. package/src/vault/vault-memories.ts +339 -0
  642. package/src/{__tests__ → vault}/vault-scaling.test.ts +1 -1
  643. package/src/vault/vault-schema.ts +238 -0
  644. package/src/{__tests__ → vault}/vault-sharing.test.ts +4 -4
  645. package/src/{__tests__ → vault}/vault.test.ts +2 -2
  646. package/src/vault/vault.ts +87 -1123
  647. package/dist/cognee/client.d.ts +0 -43
  648. package/dist/cognee/client.d.ts.map +0 -1
  649. package/dist/cognee/client.js +0 -375
  650. package/dist/cognee/client.js.map +0 -1
  651. package/dist/cognee/sync-manager.d.ts +0 -153
  652. package/dist/cognee/sync-manager.d.ts.map +0 -1
  653. package/dist/cognee/sync-manager.js +0 -390
  654. package/dist/cognee/sync-manager.js.map +0 -1
  655. package/dist/cognee/types.d.ts +0 -62
  656. package/dist/cognee/types.d.ts.map +0 -1
  657. package/dist/cognee/types.js +0 -3
  658. package/dist/cognee/types.js.map +0 -1
  659. package/dist/governance/index.d.ts +0 -3
  660. package/dist/governance/index.d.ts.map +0 -1
  661. package/dist/governance/index.js +0 -2
  662. package/dist/governance/index.js.map +0 -1
  663. package/dist/health/doctor-checks.d.ts +0 -15
  664. package/dist/health/doctor-checks.d.ts.map +0 -1
  665. package/dist/health/doctor-checks.js +0 -98
  666. package/dist/health/doctor-checks.js.map +0 -1
  667. package/dist/persistence/postgres-provider.d.ts +0 -81
  668. package/dist/persistence/postgres-provider.d.ts.map +0 -1
  669. package/dist/persistence/postgres-provider.js +0 -256
  670. package/dist/persistence/postgres-provider.js.map +0 -1
  671. package/dist/runtime/cognee-sync-ops.d.ts +0 -12
  672. package/dist/runtime/cognee-sync-ops.d.ts.map +0 -1
  673. package/dist/runtime/cognee-sync-ops.js +0 -93
  674. package/dist/runtime/cognee-sync-ops.js.map +0 -1
  675. package/dist/runtime/core-ops.d.ts +0 -23
  676. package/dist/runtime/core-ops.d.ts.map +0 -1
  677. package/dist/runtime/core-ops.js +0 -1296
  678. package/dist/runtime/core-ops.js.map +0 -1
  679. package/dist/runtime/facades/cognee-facade.d.ts +0 -8
  680. package/dist/runtime/facades/cognee-facade.d.ts.map +0 -1
  681. package/dist/runtime/facades/cognee-facade.js +0 -156
  682. package/dist/runtime/facades/cognee-facade.js.map +0 -1
  683. package/src/__tests__/admin-extra-ops.test.ts +0 -484
  684. package/src/__tests__/admin-ops.test.ts +0 -268
  685. package/src/__tests__/admin-setup-ops.test.ts +0 -355
  686. package/src/__tests__/agency-manager.test.ts +0 -374
  687. package/src/__tests__/agent-loop.test.ts +0 -256
  688. package/src/__tests__/capture-ops.test.ts +0 -784
  689. package/src/__tests__/claudemd.test.ts +0 -282
  690. package/src/__tests__/content-hash.test.ts +0 -60
  691. package/src/__tests__/context-engine.test.ts +0 -251
  692. package/src/__tests__/core-ops.test.ts +0 -550
  693. package/src/__tests__/curator-extra-ops.test.ts +0 -383
  694. package/src/__tests__/deprecation.test.ts +0 -78
  695. package/src/__tests__/domain-ops.test.ts +0 -226
  696. package/src/__tests__/domain-packs.test.ts +0 -421
  697. package/src/__tests__/enforcement.test.ts +0 -153
  698. package/src/__tests__/errors.test.ts +0 -388
  699. package/src/__tests__/extensions.test.ts +0 -233
  700. package/src/__tests__/facade-factory.test.ts +0 -271
  701. package/src/__tests__/feature-flags.test.ts +0 -137
  702. package/src/__tests__/flows.test.ts +0 -604
  703. package/src/__tests__/git-vault-sync.test.ts +0 -230
  704. package/src/__tests__/governance.test.ts +0 -522
  705. package/src/__tests__/grading-ops.test.ts +0 -361
  706. package/src/__tests__/identity-manager.test.ts +0 -243
  707. package/src/__tests__/intake-pipeline.test.ts +0 -162
  708. package/src/__tests__/intent-router.test.ts +0 -222
  709. package/src/__tests__/knowledge-review.test.ts +0 -104
  710. package/src/__tests__/llm-client.test.ts +0 -69
  711. package/src/__tests__/llm.test.ts +0 -556
  712. package/src/__tests__/loader.test.ts +0 -176
  713. package/src/__tests__/loop-ops.test.ts +0 -469
  714. package/src/__tests__/lsp-transport.test.ts +0 -442
  715. package/src/__tests__/memory-cross-project-ops.test.ts +0 -248
  716. package/src/__tests__/memory-extra-ops.test.ts +0 -352
  717. package/src/__tests__/migration-runner.test.ts +0 -170
  718. package/src/__tests__/module-manifest-drift.test.ts +0 -59
  719. package/src/__tests__/normalize.test.ts +0 -85
  720. package/src/__tests__/obsidian-sync.test.ts +0 -354
  721. package/src/__tests__/orchestrate-ops.test.ts +0 -289
  722. package/src/__tests__/pack-ops.test.ts +0 -146
  723. package/src/__tests__/persistence.test.ts +0 -291
  724. package/src/__tests__/planning-extra-ops.test.ts +0 -706
  725. package/src/__tests__/playbook-executor.test.ts +0 -249
  726. package/src/__tests__/playbook-registry.test.ts +0 -326
  727. package/src/__tests__/playbook-seeder.test.ts +0 -163
  728. package/src/__tests__/playbook.test.ts +0 -389
  729. package/src/__tests__/plugin-ops.test.ts +0 -411
  730. package/src/__tests__/plugin-system.test.ts +0 -509
  731. package/src/__tests__/project-ops.test.ts +0 -381
  732. package/src/__tests__/replayable-stream.test.ts +0 -177
  733. package/src/__tests__/runtime.test.ts +0 -95
  734. package/src/__tests__/scope-detector.test.ts +0 -121
  735. package/src/__tests__/template-manager.test.ts +0 -222
  736. package/src/__tests__/token-resolver.test.ts +0 -79
  737. package/src/__tests__/transport.test.ts +0 -758
  738. package/src/__tests__/vault-branching.test.ts +0 -274
  739. package/src/__tests__/vault-extra-ops.test.ts +0 -482
  740. package/src/__tests__/vault-integrity.test.ts +0 -71
  741. package/src/__tests__/vault-manager.test.ts +0 -238
  742. package/src/__tests__/ws-transport.test.ts +0 -479
  743. package/src/engine/index.ts +0 -21
  744. package/src/persona/index.ts +0 -9
@@ -3,7 +3,7 @@
3
3
  * Ported from Salvador MCP's plan-gap-content.ts / plan-gap-technical.ts /
4
4
  * plan-gap-domain.ts / plan-gap-antipattern.ts.
5
5
  *
6
- * 7 built-in passes (always run):
6
+ * 8 built-in passes (always run):
7
7
  * 1. Structure — required fields present and sufficiently long
8
8
  * 2. Completeness — measurable objectives, decision rationale, scope exclusions
9
9
  * 3. Feasibility — overly broad scope, missing dependency awareness
@@ -11,351 +11,16 @@
11
11
  * 5. Clarity — ambiguous language, vague criteria
12
12
  * 6. Semantic Quality — generic objectives, shallow rationale, non-concrete approach
13
13
  * 7. Knowledge Depth — BONUS: vault pattern refs, acceptance criteria, domain indicators
14
+ * 8. Alternative Analysis — rejected alternatives prevent tunnel vision (caps at ~85 without)
14
15
  *
15
16
  * Opt-in pass factories (registered via customPasses):
16
17
  * - createToolFeasibilityPass — validates tool_chain entries and ordering
17
18
  * - createFlowAlignmentPass — validates flow and target_mode against registries
18
19
  * - createAntiPatternPass — detects content anti-patterns and vague criteria
19
20
  */
20
- import { generateGapId, MIN_OBJECTIVE_LENGTH, MIN_SCOPE_LENGTH, MIN_DECISION_LENGTH, } from './gap-types.js';
21
- // ─── Helpers ─────────────────────────────────────────────────────
22
- function gap(severity, category, description, recommendation, location, trigger) {
23
- return {
24
- id: generateGapId(),
25
- severity,
26
- category,
27
- description,
28
- recommendation,
29
- ...(location ? { location } : {}),
30
- ...(trigger ? { _trigger: trigger } : {}),
31
- };
32
- }
33
- /** Combine all task descriptions + titles into a single text blob for analysis. */
34
- function taskText(plan) {
35
- return plan.tasks.map((t) => `${t.title} ${t.description}`).join(' ');
36
- }
37
- /** Extract text from a decision (supports both string and structured format). */
38
- function decisionText(d) {
39
- return typeof d === 'string' ? d : `${d.decision} ${d.rationale}`;
40
- }
41
- /** Combine all decisions into a single text blob. */
42
- function decisionsText(plan) {
43
- return plan.decisions.map(decisionText).join(' ');
44
- }
45
- /** Check if text contains any of the given patterns (case-insensitive). */
46
- function containsAny(text, patterns) {
47
- const lower = text.toLowerCase();
48
- return patterns.some((p) => lower.includes(p.toLowerCase()));
49
- }
50
- // ─── Pass 1: Structure ───────────────────────────────────────────
51
- function analyzeStructure(plan) {
52
- const gaps = [];
53
- if (!plan.objective || plan.objective.trim().length < MIN_OBJECTIVE_LENGTH) {
54
- gaps.push(gap('critical', 'structure', plan.objective
55
- ? `Objective too short (${plan.objective.trim().length} chars, need ${MIN_OBJECTIVE_LENGTH}+).`
56
- : 'Plan has no objective.', 'Add a clear objective describing what this plan achieves.', 'objective', 'missing_or_short_objective'));
57
- }
58
- if (!plan.scope || plan.scope.trim().length < MIN_SCOPE_LENGTH) {
59
- gaps.push(gap('critical', 'structure', plan.scope
60
- ? `Scope too short (${plan.scope.trim().length} chars, need ${MIN_SCOPE_LENGTH}+).`
61
- : 'Plan has no scope defined.', 'Define the scope — what is included and excluded.', 'scope', 'missing_or_short_scope'));
62
- }
63
- if (plan.tasks.length === 0) {
64
- gaps.push(gap('critical', 'structure', 'Plan has no tasks.', 'Add at least one task to make the plan actionable.', 'tasks', 'no_tasks'));
65
- }
66
- return gaps;
67
- }
68
- // ─── Pass 2: Completeness ────────────────────────────────────────
69
- const METRIC_PATTERNS = [
70
- /\d+/,
71
- /percent/i,
72
- /reduce/i,
73
- /increase/i,
74
- /measure/i,
75
- /target/i,
76
- /goal/i,
77
- /kpi/i,
78
- /metric/i,
79
- /benchmark/i,
80
- ];
81
- const EXCLUSION_KEYWORDS = [
82
- 'not',
83
- 'exclude',
84
- 'outside',
85
- 'beyond',
86
- 'limit',
87
- 'except',
88
- "won't",
89
- 'will not',
90
- ];
91
- function analyzeCompleteness(plan) {
92
- const gaps = [];
93
- // Objective lacks measurable indicators
94
- if (plan.objective && !METRIC_PATTERNS.some((p) => p.test(plan.objective))) {
95
- gaps.push(gap('minor', 'completeness', 'Objective has no measurable targets or metrics.', 'Include quantifiable success criteria (numbers, percentages, concrete outcomes).', 'objective', 'no_metrics_in_objective'));
96
- }
97
- // Decisions without rationale-like content
98
- if (plan.decisions.length > 0) {
99
- for (let i = 0; i < plan.decisions.length; i++) {
100
- const d = plan.decisions[i];
101
- const text = decisionText(d);
102
- if (text.trim().length < MIN_DECISION_LENGTH) {
103
- gaps.push(gap('major', 'completeness', `Decision ${i + 1} is too short (${text.trim().length} chars) — lacks rationale.`, 'Expand each decision to include the reasoning (why this choice over alternatives).', `decisions[${i}]`, 'short_decision'));
104
- }
105
- }
106
- }
107
- // Scope missing exclusions
108
- if (plan.scope && !containsAny(plan.scope, EXCLUSION_KEYWORDS)) {
109
- gaps.push(gap('minor', 'completeness', 'Scope does not mention what is excluded.', 'Add explicit exclusions to prevent scope creep (e.g., "does NOT include…").', 'scope', 'no_exclusions_in_scope'));
110
- }
111
- return gaps;
112
- }
113
- // ─── Pass 3: Feasibility ─────────────────────────────────────────
114
- const OVERLY_BROAD_PATTERNS = [
115
- 'everything',
116
- 'all systems',
117
- 'entire codebase',
118
- 'complete rewrite',
119
- 'from scratch',
120
- 'total overhaul',
121
- 'rewrite everything',
122
- ];
123
- const DEPENDENCY_KEYWORDS = [
124
- 'depends',
125
- 'dependency',
126
- 'prerequisite',
127
- 'requires',
128
- 'blocked',
129
- 'before',
130
- ];
131
- function analyzeFeasibility(plan) {
132
- const gaps = [];
133
- const scopeAndTasks = `${plan.scope} ${taskText(plan)}`;
134
- // Overly broad scope
135
- if (containsAny(scopeAndTasks, OVERLY_BROAD_PATTERNS)) {
136
- gaps.push(gap('major', 'feasibility', 'Scope contains overly broad indicators — risk of unrealistic delivery.', 'Narrow the scope to a well-defined subset. Prefer incremental delivery over big-bang rewrites.', 'scope', 'overly_broad_scope'));
137
- }
138
- // No dependency awareness in tasks
139
- if (plan.tasks.length > 3 && !containsAny(scopeAndTasks, DEPENDENCY_KEYWORDS)) {
140
- const hasDeps = plan.tasks.some((t) => t.dependsOn && t.dependsOn.length > 0);
141
- if (!hasDeps) {
142
- gaps.push(gap('minor', 'feasibility', `${plan.tasks.length} tasks with no dependency mentions — execution order unclear.`, 'Identify dependencies between tasks or add explicit ordering notes.', 'tasks', 'no_dependency_awareness'));
143
- }
144
- }
145
- return gaps;
146
- }
147
- // ─── Pass 4: Risk ────────────────────────────────────────────────
148
- const BREAKING_CHANGE_KEYWORDS = [
149
- 'breaking change',
150
- 'breaking',
151
- 'migration',
152
- 'deprecate',
153
- 'remove api',
154
- 'remove endpoint',
155
- 'schema change',
156
- 'database migration',
157
- ];
158
- const MITIGATION_KEYWORDS = [
159
- 'rollback',
160
- 'backward compatible',
161
- 'backwards compatible',
162
- 'feature flag',
163
- 'gradual',
164
- 'phased',
165
- 'fallback',
166
- 'backup',
167
- 'canary',
168
- 'blue-green',
169
- ];
170
- const VERIFICATION_KEYWORDS = [
171
- 'test',
172
- 'verify',
173
- 'validate',
174
- 'check',
175
- 'assert',
176
- 'confirm',
177
- 'spec',
178
- 'coverage',
179
- ];
180
- function analyzeRisk(plan) {
181
- const gaps = [];
182
- const allText = `${plan.objective} ${plan.scope} ${taskText(plan)} ${decisionsText(plan)}`;
183
- // Breaking changes without mitigation
184
- if (containsAny(allText, BREAKING_CHANGE_KEYWORDS) &&
185
- !containsAny(allText, MITIGATION_KEYWORDS)) {
186
- gaps.push(gap('major', 'risk', 'Plan involves breaking changes but mentions no mitigation strategy.', 'Add a rollback plan, feature flags, or phased migration approach.', undefined, 'breaking_without_mitigation'));
187
- }
188
- // No verification/testing mentioned
189
- if (plan.tasks.length > 0 && !containsAny(allText, VERIFICATION_KEYWORDS)) {
190
- gaps.push(gap('minor', 'risk', 'No verification or testing mentioned in the plan.', 'Add at least one task or note about testing/validation.', 'tasks', 'no_verification_mentioned'));
191
- }
192
- return gaps;
193
- }
194
- // ─── Pass 5: Clarity ─────────────────────────────────────────────
195
- const AMBIGUOUS_WORDS = [
196
- 'maybe',
197
- 'perhaps',
198
- 'might',
199
- 'could',
200
- 'some',
201
- 'etc',
202
- 'soon',
203
- 'simple',
204
- 'easy',
205
- 'appropriate',
206
- 'various',
207
- 'several',
208
- 'probably',
209
- 'possibly',
210
- 'somehow',
211
- ];
212
- function analyzeClarity(plan) {
213
- const gaps = [];
214
- const allText = `${plan.objective} ${plan.scope} ${decisionsText(plan)}`;
215
- const lower = allText.toLowerCase();
216
- // Ambiguous language
217
- const found = AMBIGUOUS_WORDS.filter((w) => {
218
- const regex = new RegExp(`\\b${w}\\b`, 'i');
219
- return regex.test(lower);
220
- });
221
- if (found.length > 0) {
222
- gaps.push(gap('minor', 'clarity', `Ambiguous language detected: ${found.slice(0, 5).join(', ')}${found.length > 5 ? ` (+${found.length - 5} more)` : ''}.`, 'Replace vague terms with concrete, specific language.', undefined, `ambiguous_words:${found.join(',')}`));
223
- }
224
- // Tasks with very short or missing descriptions
225
- const shortTasks = plan.tasks.filter((t) => !t.description || t.description.trim().length < 10);
226
- if (shortTasks.length > 0) {
227
- gaps.push(gap('minor', 'clarity', `${shortTasks.length} task(s) with very short descriptions: ${shortTasks.map((t) => t.id).join(', ')}.`, 'Add detailed descriptions to all tasks explaining what needs to be done.', 'tasks', 'short_task_descriptions'));
228
- }
229
- return gaps;
230
- }
231
- // ─── Pass 6: Semantic Quality ────────────────────────────────────
232
- const GENERIC_OBJECTIVE_PATTERNS = [
233
- /^(create|build|implement|add|make|do)\s+\w+$/i,
234
- /^fix\s+\w+$/i,
235
- /^update\s+\w+$/i,
236
- ];
237
- const RATIONALE_INDICATORS = [
238
- 'because',
239
- 'since',
240
- 'due to',
241
- 'in order to',
242
- 'so that',
243
- 'given that',
244
- 'as a result',
245
- ];
246
- const SHALLOW_INDICATORS = ['better', 'good', 'best', 'nice', 'great', 'improved'];
247
- function analyzeSemanticQuality(plan) {
248
- const gaps = [];
249
- // Generic/too-short objective
250
- if (plan.objective) {
251
- const words = plan.objective.trim().split(/\s+/);
252
- const isGeneric = GENERIC_OBJECTIVE_PATTERNS.some((p) => p.test(plan.objective.trim()));
253
- if (isGeneric || words.length < 5) {
254
- gaps.push(gap('major', 'semantic-quality', `Objective is too generic${words.length < 5 ? ` (${words.length} words)` : ''}: "${plan.objective.trim()}".`, 'Expand the objective to describe the specific outcome, context, and constraints.', 'objective', 'generic_objective'));
255
- }
256
- }
257
- // Task granularity check (too few or too many)
258
- if (plan.tasks.length > 0 && plan.tasks.length < 3) {
259
- gaps.push(gap('minor', 'semantic-quality', `Only ${plan.tasks.length} task(s) — plan may lack sufficient breakdown.`, 'Break down the work into 3-15 well-defined tasks for better tracking.', 'tasks', 'too_few_tasks'));
260
- }
261
- else if (plan.tasks.length > 20) {
262
- gaps.push(gap('major', 'semantic-quality', `${plan.tasks.length} tasks — plan scope may be too large.`, 'Split into multiple plans or consolidate related tasks to stay under 20.', 'tasks', 'too_many_tasks'));
263
- }
264
- // Decisions with shallow rationale (uses "better/good" without "because/since")
265
- for (let i = 0; i < plan.decisions.length; i++) {
266
- const d = decisionText(plan.decisions[i]);
267
- const hasShallow = containsAny(d, SHALLOW_INDICATORS);
268
- const hasRationale = containsAny(d, RATIONALE_INDICATORS);
269
- if (hasShallow && !hasRationale) {
270
- gaps.push(gap('minor', 'semantic-quality', `Decision ${i + 1} uses subjective language without justification.`, 'Replace "better/good/best" with concrete reasoning using "because/since/due to".', `decisions[${i}]`, 'shallow_rationale'));
271
- }
272
- }
273
- // All task titles must be unique
274
- const titleSet = new Set();
275
- const duplicates = [];
276
- for (const t of plan.tasks) {
277
- if (titleSet.has(t.title))
278
- duplicates.push(t.title);
279
- titleSet.add(t.title);
280
- }
281
- if (duplicates.length > 0) {
282
- gaps.push(gap('minor', 'semantic-quality', `Duplicate task titles: ${[...new Set(duplicates)].join(', ')}.`, 'Give each task a unique, descriptive title.', 'tasks', 'duplicate_task_titles'));
283
- }
284
- // No decisions at all for multi-task plans
285
- if (plan.tasks.length >= 3 && plan.decisions.length === 0) {
286
- gaps.push(gap('major', 'semantic-quality', `${plan.tasks.length} tasks but no decisions documented.`, 'Document key decisions and their rationale — at least 1 per 3 tasks.', 'decisions', 'no_decisions'));
287
- }
288
- return gaps;
289
- }
290
- // ─── Pass 7: Knowledge Depth (Substance Bonuses) ────────────────
291
- /**
292
- * Patterns that indicate vault/knowledge-informed content in task descriptions.
293
- * Each match earns a bonus point — rewarding plans that reference specific
294
- * patterns, anti-patterns, or domain knowledge rather than generic guidance.
295
- */
296
- const KNOWLEDGE_INDICATORS = [
297
- /vault\s*pattern/i,
298
- /vault\s*patterns/i,
299
- /anti-pattern/i,
300
- /wcag\s*[\d.]+/i,
301
- /aria-[a-z]+/i,
302
- /\d+(\.\d+)?:\d+\s*(contrast|ratio)/i,
303
- /\d+px\s*(touch|target|minimum|min)/i,
304
- /acceptance\s*criteria/i,
305
- ];
306
- /** Checks if task descriptions reference specific named patterns (e.g. "zod-form-validation"). */
307
- const NAMED_PATTERN_REGEX = /[a-z]+-[a-z]+-[a-z]+/;
308
- function analyzeKnowledgeDepth(plan) {
309
- const gaps = [];
310
- const allTaskText = taskText(plan);
311
- // Bonus: tasks reference vault patterns by name
312
- let namedPatternCount = 0;
313
- for (const task of plan.tasks) {
314
- const desc = task.description || '';
315
- const matches = desc.match(/[a-z]+-[a-z]+(-[a-z]+)*/g) || [];
316
- // Filter to likely pattern IDs (hyphenated, 2+ segments, not common words)
317
- const patternRefs = matches.filter((m) => m.length > 8 &&
318
- NAMED_PATTERN_REGEX.test(m) &&
319
- !['front-end', 'back-end', 'real-time', 'client-side', 'server-side'].includes(m));
320
- namedPatternCount += patternRefs.length;
321
- }
322
- if (namedPatternCount >= 5) {
323
- gaps.push(gap('bonus', 'knowledge-depth', `${namedPatternCount} vault pattern references across tasks — strong knowledge-informed plan.`, '', 'tasks', 'vault_pattern_refs_high'));
324
- gaps.push(gap('bonus', 'knowledge-depth', 'Vault pattern density indicates expert-level domain knowledge.', '', 'tasks', 'vault_pattern_density'));
325
- }
326
- else if (namedPatternCount >= 2) {
327
- gaps.push(gap('bonus', 'knowledge-depth', `${namedPatternCount} vault pattern references across tasks.`, '', 'tasks', 'vault_pattern_refs_medium'));
328
- }
329
- // Bonus: tasks have specific acceptance criteria
330
- let tasksWithCriteria = 0;
331
- let totalCriteria = 0;
332
- for (const task of plan.tasks) {
333
- if (task.acceptanceCriteria && task.acceptanceCriteria.length > 0) {
334
- tasksWithCriteria++;
335
- totalCriteria += task.acceptanceCriteria.length;
336
- }
337
- }
338
- if (plan.tasks.length > 0 && tasksWithCriteria / plan.tasks.length >= 0.8) {
339
- gaps.push(gap('bonus', 'knowledge-depth', `${tasksWithCriteria}/${plan.tasks.length} tasks have acceptance criteria (${totalCriteria} total).`, '', 'tasks', 'high_acceptance_criteria'));
340
- }
341
- // Bonus: knowledge indicator patterns in task text
342
- let indicatorHits = 0;
343
- for (const pattern of KNOWLEDGE_INDICATORS) {
344
- if (pattern.test(allTaskText))
345
- indicatorHits++;
346
- }
347
- if (indicatorHits >= 4) {
348
- gaps.push(gap('bonus', 'knowledge-depth', `${indicatorHits} domain-specific knowledge indicators found (WCAG, ARIA, contrast ratios, touch targets, etc.).`, '', 'tasks', 'domain_knowledge_indicators'));
349
- }
350
- // Bonus: rich task descriptions (avg > 80 chars per task)
351
- if (plan.tasks.length > 0) {
352
- const avgDescLength = plan.tasks.reduce((sum, t) => sum + (t.description?.length ?? 0), 0) / plan.tasks.length;
353
- if (avgDescLength >= 80) {
354
- gaps.push(gap('bonus', 'knowledge-depth', `Task descriptions average ${Math.round(avgDescLength)} chars — detailed and specific.`, '', 'tasks', 'rich_task_descriptions'));
355
- }
356
- }
357
- return gaps;
358
- }
21
+ // ─── Pass imports ────────────────────────────────────────────────
22
+ import { gap, analyzeStructure, analyzeCompleteness, analyzeFeasibility, analyzeRisk, } from './gap-patterns.js';
23
+ import { analyzeClarity, analyzeSemanticQuality, analyzeKnowledgeDepth, analyzeAlternatives, } from './gap-passes.js';
359
24
  // ─── Opt-In Pass Factories ──────────────────────────────────────
360
25
  // Ported from Salvador's plan-gap-technical.ts, plan-gap-domain.ts,
361
26
  // and plan-gap-antipattern.ts. These are parameterized factories that
@@ -486,7 +151,7 @@ export function createAntiPatternPass(antiPatterns, mitigationPatterns) {
486
151
  }
487
152
  // ─── Orchestrator ────────────────────────────────────────────────
488
153
  /**
489
- * Run all 6 built-in gap analysis passes on a plan, plus any custom passes.
154
+ * Run all 8 built-in gap analysis passes on a plan, plus any custom passes.
490
155
  * Returns a combined list of all gaps found, ordered by pass.
491
156
  *
492
157
  * @param plan - The plan to analyze
@@ -501,6 +166,7 @@ export function runGapAnalysis(plan, options) {
501
166
  ...analyzeClarity(plan),
502
167
  ...analyzeSemanticQuality(plan),
503
168
  ...analyzeKnowledgeDepth(plan),
169
+ ...analyzeAlternatives(plan),
504
170
  ];
505
171
  // Run custom passes (domain-specific checks like tool-feasibility, UI context, etc.)
506
172
  if (options?.customPasses) {
@@ -1 +1 @@
1
- {"version":3,"file":"gap-analysis.js","sourceRoot":"","sources":["../../src/planning/gap-analysis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gap-analysis.js","sourceRoot":"","sources":["../../src/planning/gap-analysis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Quality and substance analysis passes (5-8).
3
+ * These passes examine clarity, semantic quality, knowledge depth,
4
+ * and alternative analysis of plans.
5
+ */
6
+ import type { Plan } from './planner.js';
7
+ import type { PlanGap } from './gap-types.js';
8
+ export declare const AMBIGUOUS_WORDS: string[];
9
+ export declare const GENERIC_OBJECTIVE_PATTERNS: RegExp[];
10
+ export declare const RATIONALE_INDICATORS: string[];
11
+ export declare const SHALLOW_INDICATORS: string[];
12
+ export declare const KNOWLEDGE_INDICATORS: RegExp[];
13
+ /** Checks if task descriptions reference specific named patterns (e.g. "zod-form-validation"). */
14
+ export declare const NAMED_PATTERN_REGEX: RegExp;
15
+ export declare function analyzeClarity(plan: Plan): PlanGap[];
16
+ export declare function analyzeSemanticQuality(plan: Plan): PlanGap[];
17
+ export declare function analyzeKnowledgeDepth(plan: Plan): PlanGap[];
18
+ export declare function analyzeAlternatives(plan: Plan): PlanGap[];
19
+ //# sourceMappingURL=gap-passes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gap-passes.d.ts","sourceRoot":"","sources":["../../src/planning/gap-passes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAK9C,eAAO,MAAM,eAAe,UAgB3B,CAAC;AAEF,eAAO,MAAM,0BAA0B,UAItC,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAQhC,CAAC;AAEF,eAAO,MAAM,kBAAkB,UAA0D,CAAC;AAE1F,eAAO,MAAM,oBAAoB,UAShC,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,mBAAmB,QAAyB,CAAC;AAI1D,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,EAAE,CAsCpD;AAID,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,EAAE,CAgG5D;AAID,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,EAAE,CA6G3D;AAID,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,EAAE,CA+CzD"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Quality and substance analysis passes (5-8).
3
+ * These passes examine clarity, semantic quality, knowledge depth,
4
+ * and alternative analysis of plans.
5
+ */
6
+ import { gap, taskText, decisionText, decisionsText, containsAny } from './gap-patterns.js';
7
+ // ─── Pattern Constants (Passes 5-8) ─────────────────────────────
8
+ export const AMBIGUOUS_WORDS = [
9
+ 'maybe',
10
+ 'perhaps',
11
+ 'might',
12
+ 'could',
13
+ 'some',
14
+ 'etc',
15
+ 'soon',
16
+ 'simple',
17
+ 'easy',
18
+ 'appropriate',
19
+ 'various',
20
+ 'several',
21
+ 'probably',
22
+ 'possibly',
23
+ 'somehow',
24
+ ];
25
+ export const GENERIC_OBJECTIVE_PATTERNS = [
26
+ /^(create|build|implement|add|make|do)\s+\w+$/i,
27
+ /^fix\s+\w+$/i,
28
+ /^update\s+\w+$/i,
29
+ ];
30
+ export const RATIONALE_INDICATORS = [
31
+ 'because',
32
+ 'since',
33
+ 'due to',
34
+ 'in order to',
35
+ 'so that',
36
+ 'given that',
37
+ 'as a result',
38
+ ];
39
+ export const SHALLOW_INDICATORS = ['better', 'good', 'best', 'nice', 'great', 'improved'];
40
+ export const KNOWLEDGE_INDICATORS = [
41
+ /vault\s*pattern/i,
42
+ /vault\s*patterns/i,
43
+ /anti-pattern/i,
44
+ /wcag\s*[\d.]+/i,
45
+ /aria-[a-z]+/i,
46
+ /\d+(\.\d+)?:\d+\s*(contrast|ratio)/i,
47
+ /\d+px\s*(touch|target|minimum|min)/i,
48
+ /acceptance\s*criteria/i,
49
+ ];
50
+ /** Checks if task descriptions reference specific named patterns (e.g. "zod-form-validation"). */
51
+ export const NAMED_PATTERN_REGEX = /[a-z]+-[a-z]+-[a-z]+/;
52
+ // ─── Pass 5: Clarity ─────────────────────────────────────────────
53
+ export function analyzeClarity(plan) {
54
+ const gaps = [];
55
+ const allText = `${plan.objective} ${plan.scope} ${decisionsText(plan)}`;
56
+ const lower = allText.toLowerCase();
57
+ const found = AMBIGUOUS_WORDS.filter((w) => {
58
+ const regex = new RegExp(`\\b${w}\\b`, 'i');
59
+ return regex.test(lower);
60
+ });
61
+ if (found.length > 0) {
62
+ gaps.push(gap('minor', 'clarity', `Ambiguous language detected: ${found.slice(0, 5).join(', ')}${found.length > 5 ? ` (+${found.length - 5} more)` : ''}.`, 'Replace vague terms with concrete, specific language.', undefined, `ambiguous_words:${found.join(',')}`));
63
+ }
64
+ const shortTasks = plan.tasks.filter((t) => !t.description || t.description.trim().length < 10);
65
+ if (shortTasks.length > 0) {
66
+ gaps.push(gap('minor', 'clarity', `${shortTasks.length} task(s) with very short descriptions: ${shortTasks.map((t) => t.id).join(', ')}.`, 'Add detailed descriptions to all tasks explaining what needs to be done.', 'tasks', 'short_task_descriptions'));
67
+ }
68
+ return gaps;
69
+ }
70
+ // ─── Pass 6: Semantic Quality ────────────────────────────────────
71
+ export function analyzeSemanticQuality(plan) {
72
+ const gaps = [];
73
+ if (plan.objective) {
74
+ const words = plan.objective.trim().split(/\s+/);
75
+ const isGeneric = GENERIC_OBJECTIVE_PATTERNS.some((p) => p.test(plan.objective.trim()));
76
+ if (isGeneric || words.length < 5) {
77
+ gaps.push(gap('major', 'semantic-quality', `Objective is too generic${words.length < 5 ? ` (${words.length} words)` : ''}: "${plan.objective.trim()}".`, 'Expand the objective to describe the specific outcome, context, and constraints.', 'objective', 'generic_objective'));
78
+ }
79
+ }
80
+ if (plan.tasks.length > 0 && plan.tasks.length < 3) {
81
+ gaps.push(gap('minor', 'semantic-quality', `Only ${plan.tasks.length} task(s) — plan may lack sufficient breakdown.`, 'Break down the work into 3-15 well-defined tasks for better tracking.', 'tasks', 'too_few_tasks'));
82
+ }
83
+ else if (plan.tasks.length > 20) {
84
+ gaps.push(gap('major', 'semantic-quality', `${plan.tasks.length} tasks — plan scope may be too large.`, 'Split into multiple plans or consolidate related tasks to stay under 20.', 'tasks', 'too_many_tasks'));
85
+ }
86
+ for (let i = 0; i < plan.decisions.length; i++) {
87
+ const d = decisionText(plan.decisions[i]);
88
+ const hasShallow = containsAny(d, SHALLOW_INDICATORS);
89
+ const hasRationale = containsAny(d, RATIONALE_INDICATORS);
90
+ if (hasShallow && !hasRationale) {
91
+ gaps.push(gap('minor', 'semantic-quality', `Decision ${i + 1} uses subjective language without justification.`, 'Replace "better/good/best" with concrete reasoning using "because/since/due to".', `decisions[${i}]`, 'shallow_rationale'));
92
+ }
93
+ }
94
+ const titleSet = new Set();
95
+ const duplicates = [];
96
+ for (const t of plan.tasks) {
97
+ if (titleSet.has(t.title))
98
+ duplicates.push(t.title);
99
+ titleSet.add(t.title);
100
+ }
101
+ if (duplicates.length > 0) {
102
+ gaps.push(gap('minor', 'semantic-quality', `Duplicate task titles: ${[...new Set(duplicates)].join(', ')}.`, 'Give each task a unique, descriptive title.', 'tasks', 'duplicate_task_titles'));
103
+ }
104
+ if (plan.tasks.length >= 3 && plan.decisions.length === 0) {
105
+ gaps.push(gap('major', 'semantic-quality', `${plan.tasks.length} tasks but no decisions documented.`, 'Document key decisions and their rationale — at least 1 per 3 tasks.', 'decisions', 'no_decisions'));
106
+ }
107
+ return gaps;
108
+ }
109
+ // ─── Pass 7: Knowledge Depth (Substance Bonuses) ────────────────
110
+ export function analyzeKnowledgeDepth(plan) {
111
+ const gaps = [];
112
+ const allTaskText = taskText(plan);
113
+ let namedPatternCount = 0;
114
+ for (const task of plan.tasks) {
115
+ const desc = task.description || '';
116
+ const matches = desc.match(/[a-z]+-[a-z]+(-[a-z]+)*/g) || [];
117
+ const patternRefs = matches.filter((m) => m.length > 8 &&
118
+ NAMED_PATTERN_REGEX.test(m) &&
119
+ !['front-end', 'back-end', 'real-time', 'client-side', 'server-side'].includes(m));
120
+ namedPatternCount += patternRefs.length;
121
+ }
122
+ if (namedPatternCount >= 5) {
123
+ gaps.push(gap('bonus', 'knowledge-depth', `${namedPatternCount} vault pattern references across tasks — strong knowledge-informed plan.`, '', 'tasks', 'vault_pattern_refs_high'));
124
+ gaps.push(gap('bonus', 'knowledge-depth', 'Vault pattern density indicates expert-level domain knowledge.', '', 'tasks', 'vault_pattern_density'));
125
+ }
126
+ else if (namedPatternCount >= 2) {
127
+ gaps.push(gap('bonus', 'knowledge-depth', `${namedPatternCount} vault pattern references across tasks.`, '', 'tasks', 'vault_pattern_refs_medium'));
128
+ }
129
+ let tasksWithCriteria = 0;
130
+ let totalCriteria = 0;
131
+ for (const task of plan.tasks) {
132
+ if (task.acceptanceCriteria && task.acceptanceCriteria.length > 0) {
133
+ tasksWithCriteria++;
134
+ totalCriteria += task.acceptanceCriteria.length;
135
+ }
136
+ }
137
+ if (plan.tasks.length > 0 && tasksWithCriteria / plan.tasks.length >= 0.8) {
138
+ gaps.push(gap('bonus', 'knowledge-depth', `${tasksWithCriteria}/${plan.tasks.length} tasks have acceptance criteria (${totalCriteria} total).`, '', 'tasks', 'high_acceptance_criteria'));
139
+ }
140
+ let indicatorHits = 0;
141
+ for (const pattern of KNOWLEDGE_INDICATORS) {
142
+ if (pattern.test(allTaskText))
143
+ indicatorHits++;
144
+ }
145
+ if (indicatorHits >= 4) {
146
+ gaps.push(gap('bonus', 'knowledge-depth', `${indicatorHits} domain-specific knowledge indicators found (WCAG, ARIA, contrast ratios, touch targets, etc.).`, '', 'tasks', 'domain_knowledge_indicators'));
147
+ }
148
+ if (plan.tasks.length > 0) {
149
+ const avgDescLength = plan.tasks.reduce((sum, t) => sum + (t.description?.length ?? 0), 0) / plan.tasks.length;
150
+ if (avgDescLength >= 80) {
151
+ gaps.push(gap('bonus', 'knowledge-depth', `Task descriptions average ${Math.round(avgDescLength)} chars — detailed and specific.`, '', 'tasks', 'rich_task_descriptions'));
152
+ }
153
+ }
154
+ return gaps;
155
+ }
156
+ // ─── Pass 8: Alternative Analysis ────────────────────────────────
157
+ export function analyzeAlternatives(plan) {
158
+ const gaps = [];
159
+ const alts = plan.alternatives;
160
+ if (!alts || alts.length === 0) {
161
+ gaps.push(gap('major', 'alternative-analysis', 'No alternatives considered — risk of tunnel vision.', 'Add at least 2 rejected alternatives with pros, cons, and rejection rationale.', 'alternatives', 'no_alternatives'));
162
+ return gaps;
163
+ }
164
+ if (alts.length < 2) {
165
+ gaps.push(gap('minor', 'alternative-analysis', `Only ${alts.length} alternative explored — consider at least 2.`, 'Add another rejected alternative to strengthen decision rationale.', 'alternatives', 'few_alternatives'));
166
+ }
167
+ for (let i = 0; i < alts.length; i++) {
168
+ if (!alts[i].rejected_reason || alts[i].rejected_reason.trim().length === 0) {
169
+ gaps.push(gap('minor', 'alternative-analysis', `Alternative ${i + 1} ("${alts[i].approach}") missing rejection rationale.`, 'Explain why this alternative was rejected.', `alternatives[${i}]`, 'missing_rejection_rationale'));
170
+ }
171
+ }
172
+ return gaps;
173
+ }
174
+ //# sourceMappingURL=gap-passes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gap-passes.js","sourceRoot":"","sources":["../../src/planning/gap-passes.ts"],"names":[],"mappings":"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"}