@cleocode/core 2026.4.5 → 2026.4.7

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 (782) hide show
  1. package/dist/discovery.d.ts +69 -0
  2. package/dist/discovery.d.ts.map +1 -0
  3. package/dist/index.d.ts +3 -2
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +1643 -2349
  6. package/dist/index.js.map +4 -4
  7. package/dist/init.d.ts +51 -0
  8. package/dist/init.d.ts.map +1 -1
  9. package/dist/internal.d.ts +9 -1
  10. package/dist/internal.d.ts.map +1 -1
  11. package/dist/lifecycle/default-chain.d.ts +8 -2
  12. package/dist/lifecycle/default-chain.d.ts.map +1 -1
  13. package/dist/lifecycle/index.d.ts +1 -0
  14. package/dist/lifecycle/index.d.ts.map +1 -1
  15. package/dist/lifecycle/stage-guidance.d.ts +140 -0
  16. package/dist/lifecycle/stage-guidance.d.ts.map +1 -0
  17. package/dist/orchestration/protocol-validators.d.ts +122 -3
  18. package/dist/orchestration/protocol-validators.d.ts.map +1 -1
  19. package/dist/paths.d.ts +91 -0
  20. package/dist/paths.d.ts.map +1 -1
  21. package/dist/scaffold.d.ts +31 -1
  22. package/dist/scaffold.d.ts.map +1 -1
  23. package/dist/skills/dispatch.d.ts +1 -1
  24. package/dist/skills/skill-paths.d.ts +9 -6
  25. package/dist/skills/skill-paths.d.ts.map +1 -1
  26. package/dist/validation/protocols/_shared.d.ts +40 -0
  27. package/dist/validation/protocols/_shared.d.ts.map +1 -0
  28. package/dist/validation/protocols/architecture-decision.d.ts +23 -0
  29. package/dist/validation/protocols/architecture-decision.d.ts.map +1 -0
  30. package/dist/validation/protocols/artifact-publish.d.ts +22 -0
  31. package/dist/validation/protocols/artifact-publish.d.ts.map +1 -0
  32. package/dist/validation/protocols/consensus.d.ts +11 -17
  33. package/dist/validation/protocols/consensus.d.ts.map +1 -1
  34. package/dist/validation/protocols/contribution.d.ts +12 -17
  35. package/dist/validation/protocols/contribution.d.ts.map +1 -1
  36. package/dist/validation/protocols/decomposition.d.ts +18 -21
  37. package/dist/validation/protocols/decomposition.d.ts.map +1 -1
  38. package/dist/validation/protocols/implementation.d.ts +9 -17
  39. package/dist/validation/protocols/implementation.d.ts.map +1 -1
  40. package/dist/validation/protocols/provenance.d.ts +23 -0
  41. package/dist/validation/protocols/provenance.d.ts.map +1 -0
  42. package/dist/validation/protocols/release.d.ts +25 -0
  43. package/dist/validation/protocols/release.d.ts.map +1 -0
  44. package/dist/validation/protocols/research.d.ts +9 -17
  45. package/dist/validation/protocols/research.d.ts.map +1 -1
  46. package/dist/validation/protocols/specification.d.ts +7 -17
  47. package/dist/validation/protocols/specification.d.ts.map +1 -1
  48. package/dist/validation/protocols/testing.d.ts +22 -0
  49. package/dist/validation/protocols/testing.d.ts.map +1 -0
  50. package/dist/validation/protocols/validation.d.ts +22 -0
  51. package/dist/validation/protocols/validation.d.ts.map +1 -0
  52. package/package.json +7 -7
  53. package/src/discovery.ts +235 -0
  54. package/src/index.ts +16 -0
  55. package/src/init.ts +196 -0
  56. package/src/internal.ts +31 -1
  57. package/src/lifecycle/default-chain.ts +11 -2
  58. package/src/lifecycle/index.ts +10 -0
  59. package/src/lifecycle/stage-guidance.ts +282 -0
  60. package/src/orchestration/__tests__/protocol-validators.test.ts +259 -7
  61. package/src/orchestration/protocol-validators.ts +419 -4
  62. package/src/paths.ts +110 -0
  63. package/src/scaffold.ts +240 -4
  64. package/src/skills/dispatch.ts +6 -6
  65. package/src/skills/skill-paths.ts +27 -23
  66. package/src/validation/protocols/_shared.ts +88 -0
  67. package/src/validation/protocols/architecture-decision.ts +52 -0
  68. package/src/validation/protocols/artifact-publish.ts +49 -0
  69. package/src/validation/protocols/consensus.ts +44 -74
  70. package/src/validation/protocols/contribution.ts +28 -65
  71. package/src/validation/protocols/decomposition.ts +37 -64
  72. package/src/validation/protocols/implementation.ts +25 -65
  73. package/src/validation/protocols/protocols-markdown/architecture-decision.md +303 -0
  74. package/src/validation/protocols/protocols-markdown/artifact-publish.md +600 -0
  75. package/src/validation/protocols/protocols-markdown/consensus.md +322 -0
  76. package/src/validation/protocols/protocols-markdown/contribution.md +388 -0
  77. package/src/validation/protocols/protocols-markdown/decomposition.md +421 -0
  78. package/src/validation/protocols/protocols-markdown/implementation.md +357 -0
  79. package/src/validation/protocols/protocols-markdown/provenance.md +613 -0
  80. package/src/validation/protocols/protocols-markdown/release.md +783 -0
  81. package/src/validation/protocols/protocols-markdown/research.md +261 -0
  82. package/src/validation/protocols/protocols-markdown/specification.md +300 -0
  83. package/src/validation/protocols/protocols-markdown/testing.md +287 -0
  84. package/src/validation/protocols/protocols-markdown/validation.md +242 -0
  85. package/src/validation/protocols/provenance.ts +50 -0
  86. package/src/validation/protocols/release.ts +44 -0
  87. package/src/validation/protocols/research.ts +25 -87
  88. package/src/validation/protocols/specification.ts +27 -89
  89. package/src/validation/protocols/testing.ts +46 -0
  90. package/src/validation/protocols/validation.ts +46 -0
  91. package/dist/cant/approval.d.ts +0 -110
  92. package/dist/cant/approval.d.ts.map +0 -1
  93. package/dist/cant/context-builder.d.ts +0 -79
  94. package/dist/cant/context-builder.d.ts.map +0 -1
  95. package/dist/cant/discretion.d.ts +0 -95
  96. package/dist/cant/discretion.d.ts.map +0 -1
  97. package/dist/cant/index.d.ts +0 -25
  98. package/dist/cant/index.d.ts.map +0 -1
  99. package/dist/cant/parallel-runner.d.ts +0 -38
  100. package/dist/cant/parallel-runner.d.ts.map +0 -1
  101. package/dist/cant/types.d.ts +0 -127
  102. package/dist/cant/types.d.ts.map +0 -1
  103. package/dist/cant/workflow-executor.d.ts +0 -105
  104. package/dist/cant/workflow-executor.d.ts.map +0 -1
  105. package/dist/validation/protocols/release-protocol.d.ts +0 -27
  106. package/dist/validation/protocols/release-protocol.d.ts.map +0 -1
  107. package/dist/validation/protocols/testing-protocol.d.ts +0 -27
  108. package/dist/validation/protocols/testing-protocol.d.ts.map +0 -1
  109. package/dist/validation/protocols/validation-protocol.d.ts +0 -27
  110. package/dist/validation/protocols/validation-protocol.d.ts.map +0 -1
  111. package/schemas/agent-configs.schema.json +0 -120
  112. package/schemas/agent-registry.schema.json +0 -132
  113. package/schemas/archive.schema.json +0 -450
  114. package/schemas/brain-decision.schema.json +0 -69
  115. package/schemas/brain-learning.schema.json +0 -57
  116. package/schemas/brain-pattern.schema.json +0 -72
  117. package/schemas/critical-path.schema.json +0 -246
  118. package/schemas/deps-cache.schema.json +0 -97
  119. package/schemas/doctor-output.schema.json +0 -283
  120. package/schemas/error.schema.json +0 -161
  121. package/schemas/global-config.schema.json +0 -219
  122. package/schemas/grade.schema.json +0 -49
  123. package/schemas/log.schema.json +0 -250
  124. package/schemas/metrics.schema.json +0 -328
  125. package/schemas/migrations.schema.json +0 -150
  126. package/schemas/nexus-registry.schema.json +0 -90
  127. package/schemas/operation-constitution.schema.json +0 -438
  128. package/schemas/output.schema.json +0 -164
  129. package/schemas/projects-registry.schema.json +0 -107
  130. package/schemas/protocol-frontmatter.schema.json +0 -72
  131. package/schemas/rcasd-consensus-report.schema.json +0 -10
  132. package/schemas/rcasd-evidence.schema.json +0 -42
  133. package/schemas/rcasd-gate-result.schema.json +0 -46
  134. package/schemas/rcasd-hitl-resolution.schema.json +0 -10
  135. package/schemas/rcasd-index.schema.json +0 -10
  136. package/schemas/rcasd-manifest.schema.json +0 -10
  137. package/schemas/rcasd-research-output.schema.json +0 -10
  138. package/schemas/rcasd-spec-frontmatter.schema.json +0 -10
  139. package/schemas/rcasd-stage-transition.schema.json +0 -38
  140. package/schemas/releases.schema.json +0 -267
  141. package/schemas/skills-manifest.schema.json +0 -91
  142. package/schemas/spec-index.schema.json +0 -196
  143. package/schemas/system-flow-atlas.schema.json +0 -125
  144. package/src/__tests__/audit-prune.test.d.ts.map +0 -1
  145. package/src/__tests__/audit-prune.test.js +0 -162
  146. package/src/__tests__/audit-prune.test.js.map +0 -1
  147. package/src/__tests__/caamp-skill-install.test.d.ts.map +0 -1
  148. package/src/__tests__/caamp-skill-install.test.js +0 -147
  149. package/src/__tests__/caamp-skill-install.test.js.map +0 -1
  150. package/src/__tests__/cli-parity.test.d.ts.map +0 -1
  151. package/src/__tests__/cli-parity.test.js +0 -209
  152. package/src/__tests__/cli-parity.test.js.map +0 -1
  153. package/src/__tests__/config.test.d.ts.map +0 -1
  154. package/src/__tests__/config.test.js +0 -144
  155. package/src/__tests__/config.test.js.map +0 -1
  156. package/src/__tests__/core-parity.test.d.ts.map +0 -1
  157. package/src/__tests__/core-parity.test.js +0 -645
  158. package/src/__tests__/core-parity.test.js.map +0 -1
  159. package/src/__tests__/error-catalog.test.d.ts.map +0 -1
  160. package/src/__tests__/error-catalog.test.js +0 -127
  161. package/src/__tests__/error-catalog.test.js.map +0 -1
  162. package/src/__tests__/golden-parity.test.d.ts.map +0 -1
  163. package/src/__tests__/golden-parity.test.js +0 -212
  164. package/src/__tests__/golden-parity.test.js.map +0 -1
  165. package/src/__tests__/hooks.test.d.ts.map +0 -1
  166. package/src/__tests__/hooks.test.js +0 -201
  167. package/src/__tests__/hooks.test.js.map +0 -1
  168. package/src/__tests__/human-output.test.d.ts.map +0 -1
  169. package/src/__tests__/human-output.test.js +0 -158
  170. package/src/__tests__/human-output.test.js.map +0 -1
  171. package/src/__tests__/index-api-compat.test.d.ts.map +0 -1
  172. package/src/__tests__/index-api-compat.test.js +0 -16
  173. package/src/__tests__/index-api-compat.test.js.map +0 -1
  174. package/src/__tests__/init-e2e.test.d.ts.map +0 -1
  175. package/src/__tests__/init-e2e.test.js +0 -221
  176. package/src/__tests__/init-e2e.test.js.map +0 -1
  177. package/src/__tests__/injection-chain.test.d.ts.map +0 -1
  178. package/src/__tests__/injection-chain.test.js +0 -234
  179. package/src/__tests__/injection-chain.test.js.map +0 -1
  180. package/src/__tests__/injection-mvi-tiers.test.d.ts.map +0 -1
  181. package/src/__tests__/injection-mvi-tiers.test.js +0 -152
  182. package/src/__tests__/injection-mvi-tiers.test.js.map +0 -1
  183. package/src/__tests__/injection-shared.test.d.ts.map +0 -1
  184. package/src/__tests__/injection-shared.test.js +0 -194
  185. package/src/__tests__/injection-shared.test.js.map +0 -1
  186. package/src/__tests__/lafs-conformance.test.d.ts.map +0 -1
  187. package/src/__tests__/lafs-conformance.test.js +0 -786
  188. package/src/__tests__/lafs-conformance.test.js.map +0 -1
  189. package/src/__tests__/logger.test.d.ts.map +0 -1
  190. package/src/__tests__/logger.test.js +0 -75
  191. package/src/__tests__/logger.test.js.map +0 -1
  192. package/src/__tests__/paths.test.d.ts.map +0 -1
  193. package/src/__tests__/paths.test.js +0 -327
  194. package/src/__tests__/paths.test.js.map +0 -1
  195. package/src/__tests__/project-info.test.d.ts.map +0 -1
  196. package/src/__tests__/project-info.test.js +0 -156
  197. package/src/__tests__/project-info.test.js.map +0 -1
  198. package/src/__tests__/rcsd-pipeline-e2e.test.d.ts.map +0 -1
  199. package/src/__tests__/rcsd-pipeline-e2e.test.js +0 -263
  200. package/src/__tests__/rcsd-pipeline-e2e.test.js.map +0 -1
  201. package/src/__tests__/remote.test.d.ts.map +0 -1
  202. package/src/__tests__/remote.test.js +0 -149
  203. package/src/__tests__/remote.test.js.map +0 -1
  204. package/src/__tests__/scaffold.test.d.ts.map +0 -1
  205. package/src/__tests__/scaffold.test.js +0 -474
  206. package/src/__tests__/scaffold.test.js.map +0 -1
  207. package/src/__tests__/schema-management.test.d.ts.map +0 -1
  208. package/src/__tests__/schema-management.test.js +0 -287
  209. package/src/__tests__/schema-management.test.js.map +0 -1
  210. package/src/__tests__/schema.test.d.ts.map +0 -1
  211. package/src/__tests__/schema.test.js +0 -51
  212. package/src/__tests__/schema.test.js.map +0 -1
  213. package/src/__tests__/sharing.test.d.ts.map +0 -1
  214. package/src/__tests__/sharing.test.js +0 -160
  215. package/src/__tests__/sharing.test.js.map +0 -1
  216. package/src/__tests__/snapshot.test.d.ts.map +0 -1
  217. package/src/__tests__/snapshot.test.js +0 -72
  218. package/src/__tests__/snapshot.test.js.map +0 -1
  219. package/src/__tests__/upgrade.test.d.ts.map +0 -1
  220. package/src/__tests__/upgrade.test.js +0 -321
  221. package/src/__tests__/upgrade.test.js.map +0 -1
  222. package/src/adapters/__tests__/discovery.test.d.ts.map +0 -1
  223. package/src/adapters/__tests__/discovery.test.js +0 -56
  224. package/src/adapters/__tests__/discovery.test.js.map +0 -1
  225. package/src/adapters/__tests__/manager.test.d.ts.map +0 -1
  226. package/src/adapters/__tests__/manager.test.js +0 -260
  227. package/src/adapters/__tests__/manager.test.js.map +0 -1
  228. package/src/agents/__tests__/agent-registry.test.d.ts.map +0 -1
  229. package/src/agents/__tests__/agent-registry.test.js +0 -262
  230. package/src/agents/__tests__/agent-registry.test.js.map +0 -1
  231. package/src/agents/__tests__/capacity.test.d.ts.map +0 -1
  232. package/src/agents/__tests__/capacity.test.js +0 -173
  233. package/src/agents/__tests__/capacity.test.js.map +0 -1
  234. package/src/agents/__tests__/execution-learning.test.d.ts.map +0 -1
  235. package/src/agents/__tests__/execution-learning.test.js +0 -533
  236. package/src/agents/__tests__/execution-learning.test.js.map +0 -1
  237. package/src/agents/__tests__/health-monitor.test.d.ts.map +0 -1
  238. package/src/agents/__tests__/health-monitor.test.js +0 -259
  239. package/src/agents/__tests__/health-monitor.test.js.map +0 -1
  240. package/src/agents/__tests__/registry.test.d.ts.map +0 -1
  241. package/src/agents/__tests__/registry.test.js +0 -373
  242. package/src/agents/__tests__/registry.test.js.map +0 -1
  243. package/src/agents/__tests__/retry.test.d.ts.map +0 -1
  244. package/src/agents/__tests__/retry.test.js +0 -225
  245. package/src/agents/__tests__/retry.test.js.map +0 -1
  246. package/src/cant/__tests__/cant-agent-parse.test.d.ts.map +0 -1
  247. package/src/cant/__tests__/cant-agent-parse.test.js +0 -77
  248. package/src/cant/__tests__/cant-agent-parse.test.js.map +0 -1
  249. package/src/cant/__tests__/cant-agent-parse.test.ts +0 -94
  250. package/src/cant/approval.ts +0 -218
  251. package/src/cant/context-builder.ts +0 -135
  252. package/src/cant/discretion.ts +0 -149
  253. package/src/cant/index.ts +0 -58
  254. package/src/cant/parallel-runner.ts +0 -205
  255. package/src/cant/types.ts +0 -158
  256. package/src/cant/workflow-executor.ts +0 -618
  257. package/src/compliance/__tests__/sync.test.d.ts.map +0 -1
  258. package/src/compliance/__tests__/sync.test.js +0 -119
  259. package/src/compliance/__tests__/sync.test.js.map +0 -1
  260. package/src/conduit/__tests__/dual-api-e2e.test.d.ts.map +0 -1
  261. package/src/conduit/__tests__/dual-api-e2e.test.js +0 -178
  262. package/src/conduit/__tests__/dual-api-e2e.test.js.map +0 -1
  263. package/src/conduit/__tests__/dual-api-e2e.test.ts +0 -212
  264. package/src/conduit/__tests__/local-credential-flow.test.d.ts.map +0 -1
  265. package/src/conduit/__tests__/local-credential-flow.test.js +0 -185
  266. package/src/conduit/__tests__/local-credential-flow.test.js.map +0 -1
  267. package/src/conduit/__tests__/local-transport.test.d.ts.map +0 -1
  268. package/src/conduit/__tests__/local-transport.test.js +0 -404
  269. package/src/conduit/__tests__/local-transport.test.js.map +0 -1
  270. package/src/conduit/__tests__/sse-transport.test.d.ts.map +0 -1
  271. package/src/conduit/__tests__/sse-transport.test.js +0 -291
  272. package/src/conduit/__tests__/sse-transport.test.js.map +0 -1
  273. package/src/hooks/__tests__/provider-hooks.test.d.ts.map +0 -1
  274. package/src/hooks/__tests__/provider-hooks.test.js +0 -33
  275. package/src/hooks/__tests__/provider-hooks.test.js.map +0 -1
  276. package/src/hooks/__tests__/registry.test.d.ts.map +0 -1
  277. package/src/hooks/__tests__/registry.test.js +0 -37
  278. package/src/hooks/__tests__/registry.test.js.map +0 -1
  279. package/src/hooks/handlers/__tests__/error-hooks.test.d.ts.map +0 -1
  280. package/src/hooks/handlers/__tests__/error-hooks.test.js +0 -90
  281. package/src/hooks/handlers/__tests__/error-hooks.test.js.map +0 -1
  282. package/src/hooks/handlers/__tests__/file-hooks.test.d.ts.map +0 -1
  283. package/src/hooks/handlers/__tests__/file-hooks.test.js +0 -128
  284. package/src/hooks/handlers/__tests__/file-hooks.test.js.map +0 -1
  285. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.d.ts.map +0 -1
  286. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.js +0 -501
  287. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.js.map +0 -1
  288. package/src/hooks/handlers/__tests__/session-hooks.test.d.ts.map +0 -1
  289. package/src/hooks/handlers/__tests__/session-hooks.test.js +0 -54
  290. package/src/hooks/handlers/__tests__/session-hooks.test.js.map +0 -1
  291. package/src/hooks/handlers/__tests__/task-hooks.test.d.ts.map +0 -1
  292. package/src/hooks/handlers/__tests__/task-hooks.test.js +0 -77
  293. package/src/hooks/handlers/__tests__/task-hooks.test.js.map +0 -1
  294. package/src/intelligence/__tests__/adaptive-validation.test.d.ts.map +0 -1
  295. package/src/intelligence/__tests__/adaptive-validation.test.js +0 -517
  296. package/src/intelligence/__tests__/adaptive-validation.test.js.map +0 -1
  297. package/src/intelligence/__tests__/impact.test.d.ts.map +0 -1
  298. package/src/intelligence/__tests__/impact.test.js +0 -515
  299. package/src/intelligence/__tests__/impact.test.js.map +0 -1
  300. package/src/intelligence/__tests__/patterns.test.d.ts.map +0 -1
  301. package/src/intelligence/__tests__/patterns.test.js +0 -370
  302. package/src/intelligence/__tests__/patterns.test.js.map +0 -1
  303. package/src/intelligence/__tests__/prediction.test.d.ts.map +0 -1
  304. package/src/intelligence/__tests__/prediction.test.js +0 -314
  305. package/src/intelligence/__tests__/prediction.test.js.map +0 -1
  306. package/src/lib/__tests__/retry.test.d.ts.map +0 -1
  307. package/src/lib/__tests__/retry.test.js +0 -225
  308. package/src/lib/__tests__/retry.test.js.map +0 -1
  309. package/src/lifecycle/__tests__/chain-store.test.d.ts.map +0 -1
  310. package/src/lifecycle/__tests__/chain-store.test.js +0 -243
  311. package/src/lifecycle/__tests__/chain-store.test.js.map +0 -1
  312. package/src/lifecycle/__tests__/consolidate-rcasd.test.d.ts.map +0 -1
  313. package/src/lifecycle/__tests__/consolidate-rcasd.test.js +0 -210
  314. package/src/lifecycle/__tests__/consolidate-rcasd.test.js.map +0 -1
  315. package/src/lifecycle/__tests__/default-chain.test.d.ts.map +0 -1
  316. package/src/lifecycle/__tests__/default-chain.test.js +0 -74
  317. package/src/lifecycle/__tests__/default-chain.test.js.map +0 -1
  318. package/src/lifecycle/__tests__/frontmatter.test.d.ts.map +0 -1
  319. package/src/lifecycle/__tests__/frontmatter.test.js +0 -229
  320. package/src/lifecycle/__tests__/frontmatter.test.js.map +0 -1
  321. package/src/lifecycle/__tests__/lifecycle.test.d.ts.map +0 -1
  322. package/src/lifecycle/__tests__/lifecycle.test.js +0 -126
  323. package/src/lifecycle/__tests__/lifecycle.test.js.map +0 -1
  324. package/src/lifecycle/__tests__/pipeline.integration.test.d.ts.map +0 -1
  325. package/src/lifecycle/__tests__/pipeline.integration.test.js +0 -977
  326. package/src/lifecycle/__tests__/pipeline.integration.test.js.map +0 -1
  327. package/src/lifecycle/__tests__/rcasd-paths.test.d.ts.map +0 -1
  328. package/src/lifecycle/__tests__/rcasd-paths.test.js +0 -206
  329. package/src/lifecycle/__tests__/rcasd-paths.test.js.map +0 -1
  330. package/src/lifecycle/__tests__/resume-schema-contract.test.d.ts.map +0 -1
  331. package/src/lifecycle/__tests__/resume-schema-contract.test.js +0 -246
  332. package/src/lifecycle/__tests__/resume-schema-contract.test.js.map +0 -1
  333. package/src/lifecycle/__tests__/stage-record-provenance.integration.test.d.ts.map +0 -1
  334. package/src/lifecycle/__tests__/stage-record-provenance.integration.test.js +0 -95
  335. package/src/lifecycle/__tests__/stage-record-provenance.integration.test.js.map +0 -1
  336. package/src/lifecycle/__tests__/tessera-engine.test.d.ts.map +0 -1
  337. package/src/lifecycle/__tests__/tessera-engine.test.js +0 -392
  338. package/src/lifecycle/__tests__/tessera-engine.test.js.map +0 -1
  339. package/src/memory/__tests__/auto-extract.test.d.ts.map +0 -1
  340. package/src/memory/__tests__/auto-extract.test.js +0 -197
  341. package/src/memory/__tests__/auto-extract.test.js.map +0 -1
  342. package/src/memory/__tests__/brain-automation.test.d.ts.map +0 -1
  343. package/src/memory/__tests__/brain-automation.test.js +0 -730
  344. package/src/memory/__tests__/brain-automation.test.js.map +0 -1
  345. package/src/memory/__tests__/brain-embedding.test.d.ts.map +0 -1
  346. package/src/memory/__tests__/brain-embedding.test.js +0 -92
  347. package/src/memory/__tests__/brain-embedding.test.js.map +0 -1
  348. package/src/memory/__tests__/brain-links.test.d.ts.map +0 -1
  349. package/src/memory/__tests__/brain-links.test.js +0 -221
  350. package/src/memory/__tests__/brain-links.test.js.map +0 -1
  351. package/src/memory/__tests__/brain-migration.test.d.ts.map +0 -1
  352. package/src/memory/__tests__/brain-migration.test.js +0 -180
  353. package/src/memory/__tests__/brain-migration.test.js.map +0 -1
  354. package/src/memory/__tests__/brain-retrieval.test.d.ts.map +0 -1
  355. package/src/memory/__tests__/brain-retrieval.test.js +0 -701
  356. package/src/memory/__tests__/brain-retrieval.test.js.map +0 -1
  357. package/src/memory/__tests__/brain-search.test.d.ts.map +0 -1
  358. package/src/memory/__tests__/brain-search.test.js +0 -180
  359. package/src/memory/__tests__/brain-search.test.js.map +0 -1
  360. package/src/memory/__tests__/claude-mem-migration.test.d.ts.map +0 -1
  361. package/src/memory/__tests__/claude-mem-migration.test.js +0 -424
  362. package/src/memory/__tests__/claude-mem-migration.test.js.map +0 -1
  363. package/src/memory/__tests__/decisions.test.d.ts.map +0 -1
  364. package/src/memory/__tests__/decisions.test.js +0 -253
  365. package/src/memory/__tests__/decisions.test.js.map +0 -1
  366. package/src/memory/__tests__/engine-compat.test.d.ts.map +0 -1
  367. package/src/memory/__tests__/engine-compat.test.js +0 -331
  368. package/src/memory/__tests__/engine-compat.test.js.map +0 -1
  369. package/src/memory/__tests__/memory-bridge.test.d.ts.map +0 -1
  370. package/src/memory/__tests__/memory-bridge.test.js +0 -231
  371. package/src/memory/__tests__/memory-bridge.test.js.map +0 -1
  372. package/src/memory/__tests__/pipeline-manifest-sqlite.test.d.ts.map +0 -1
  373. package/src/memory/__tests__/pipeline-manifest-sqlite.test.js +0 -516
  374. package/src/memory/__tests__/pipeline-manifest-sqlite.test.js.map +0 -1
  375. package/src/memory/__tests__/session-memory.test.d.ts.map +0 -1
  376. package/src/memory/__tests__/session-memory.test.js +0 -387
  377. package/src/memory/__tests__/session-memory.test.js.map +0 -1
  378. package/src/metrics/__tests__/model-provider-registry.test.d.ts.map +0 -1
  379. package/src/metrics/__tests__/model-provider-registry.test.js +0 -45
  380. package/src/metrics/__tests__/model-provider-registry.test.js.map +0 -1
  381. package/src/metrics/__tests__/provider-detection.test.d.ts.map +0 -1
  382. package/src/metrics/__tests__/provider-detection.test.js +0 -111
  383. package/src/metrics/__tests__/provider-detection.test.js.map +0 -1
  384. package/src/migration/__tests__/checksum.test.d.ts.map +0 -1
  385. package/src/migration/__tests__/checksum.test.js +0 -216
  386. package/src/migration/__tests__/checksum.test.js.map +0 -1
  387. package/src/migration/__tests__/logger.test.d.ts.map +0 -1
  388. package/src/migration/__tests__/logger.test.js +0 -256
  389. package/src/migration/__tests__/logger.test.js.map +0 -1
  390. package/src/migration/__tests__/migration-failure.integration.test.d.ts.map +0 -1
  391. package/src/migration/__tests__/migration-failure.integration.test.js +0 -515
  392. package/src/migration/__tests__/migration-failure.integration.test.js.map +0 -1
  393. package/src/migration/__tests__/migration.test.d.ts.map +0 -1
  394. package/src/migration/__tests__/migration.test.js +0 -82
  395. package/src/migration/__tests__/migration.test.js.map +0 -1
  396. package/src/migration/__tests__/state.test.d.ts.map +0 -1
  397. package/src/migration/__tests__/state.test.js +0 -330
  398. package/src/migration/__tests__/state.test.js.map +0 -1
  399. package/src/migration/__tests__/validate.test.d.ts.map +0 -1
  400. package/src/migration/__tests__/validate.test.js +0 -258
  401. package/src/migration/__tests__/validate.test.js.map +0 -1
  402. package/src/nexus/__tests__/deps.test.d.ts.map +0 -1
  403. package/src/nexus/__tests__/deps.test.js +0 -283
  404. package/src/nexus/__tests__/deps.test.js.map +0 -1
  405. package/src/nexus/__tests__/nexus-e2e.test.d.ts.map +0 -1
  406. package/src/nexus/__tests__/nexus-e2e.test.js +0 -1220
  407. package/src/nexus/__tests__/nexus-e2e.test.js.map +0 -1
  408. package/src/nexus/__tests__/permissions.test.d.ts.map +0 -1
  409. package/src/nexus/__tests__/permissions.test.js +0 -119
  410. package/src/nexus/__tests__/permissions.test.js.map +0 -1
  411. package/src/nexus/__tests__/query.test.d.ts.map +0 -1
  412. package/src/nexus/__tests__/query.test.js +0 -168
  413. package/src/nexus/__tests__/query.test.js.map +0 -1
  414. package/src/nexus/__tests__/reconcile.test.d.ts.map +0 -1
  415. package/src/nexus/__tests__/reconcile.test.js +0 -135
  416. package/src/nexus/__tests__/reconcile.test.js.map +0 -1
  417. package/src/nexus/__tests__/registry.test.d.ts.map +0 -1
  418. package/src/nexus/__tests__/registry.test.js +0 -229
  419. package/src/nexus/__tests__/registry.test.js.map +0 -1
  420. package/src/nexus/__tests__/transfer.test.d.ts.map +0 -1
  421. package/src/nexus/__tests__/transfer.test.js +0 -372
  422. package/src/nexus/__tests__/transfer.test.js.map +0 -1
  423. package/src/observability/__tests__/index.test.d.ts.map +0 -1
  424. package/src/observability/__tests__/index.test.js +0 -288
  425. package/src/observability/__tests__/index.test.js.map +0 -1
  426. package/src/observability/__tests__/log-filter.test.d.ts.map +0 -1
  427. package/src/observability/__tests__/log-filter.test.js +0 -151
  428. package/src/observability/__tests__/log-filter.test.js.map +0 -1
  429. package/src/observability/__tests__/log-parser.test.d.ts.map +0 -1
  430. package/src/observability/__tests__/log-parser.test.js +0 -170
  431. package/src/observability/__tests__/log-parser.test.js.map +0 -1
  432. package/src/observability/__tests__/log-reader.test.d.ts.map +0 -1
  433. package/src/observability/__tests__/log-reader.test.js +0 -150
  434. package/src/observability/__tests__/log-reader.test.js.map +0 -1
  435. package/src/orchestration/__tests__/autonomous-spec.test.d.ts.map +0 -1
  436. package/src/orchestration/__tests__/autonomous-spec.test.js +0 -419
  437. package/src/orchestration/__tests__/autonomous-spec.test.js.map +0 -1
  438. package/src/orchestration/__tests__/orchestration.test.d.ts.map +0 -1
  439. package/src/orchestration/__tests__/orchestration.test.js +0 -205
  440. package/src/orchestration/__tests__/orchestration.test.js.map +0 -1
  441. package/src/orchestration/__tests__/protocol-validators.test.d.ts.map +0 -1
  442. package/src/orchestration/__tests__/protocol-validators.test.js +0 -382
  443. package/src/orchestration/__tests__/protocol-validators.test.js.map +0 -1
  444. package/src/phases/__tests__/deps.test.d.ts.map +0 -1
  445. package/src/phases/__tests__/deps.test.js +0 -210
  446. package/src/phases/__tests__/deps.test.js.map +0 -1
  447. package/src/phases/__tests__/phases.test.d.ts.map +0 -1
  448. package/src/phases/__tests__/phases.test.js +0 -215
  449. package/src/phases/__tests__/phases.test.js.map +0 -1
  450. package/src/release/__tests__/artifacts.test.d.ts.map +0 -1
  451. package/src/release/__tests__/artifacts.test.js +0 -65
  452. package/src/release/__tests__/artifacts.test.js.map +0 -1
  453. package/src/release/__tests__/cancel-release.test.d.ts.map +0 -1
  454. package/src/release/__tests__/cancel-release.test.js +0 -154
  455. package/src/release/__tests__/cancel-release.test.js.map +0 -1
  456. package/src/release/__tests__/changelog-writer.test.d.ts.map +0 -1
  457. package/src/release/__tests__/changelog-writer.test.js +0 -132
  458. package/src/release/__tests__/changelog-writer.test.js.map +0 -1
  459. package/src/release/__tests__/push-policy.test.d.ts.map +0 -1
  460. package/src/release/__tests__/push-policy.test.js +0 -142
  461. package/src/release/__tests__/push-policy.test.js.map +0 -1
  462. package/src/release/__tests__/release.test.d.ts.map +0 -1
  463. package/src/release/__tests__/release.test.js +0 -25
  464. package/src/release/__tests__/release.test.js.map +0 -1
  465. package/src/sequence/__tests__/allocate.test.d.ts.map +0 -1
  466. package/src/sequence/__tests__/allocate.test.js +0 -113
  467. package/src/sequence/__tests__/allocate.test.js.map +0 -1
  468. package/src/sessions/__tests__/briefing-blocked.test.d.ts.map +0 -1
  469. package/src/sessions/__tests__/briefing-blocked.test.js +0 -117
  470. package/src/sessions/__tests__/briefing-blocked.test.js.map +0 -1
  471. package/src/sessions/__tests__/briefing.test.d.ts.map +0 -1
  472. package/src/sessions/__tests__/briefing.test.js +0 -336
  473. package/src/sessions/__tests__/briefing.test.js.map +0 -1
  474. package/src/sessions/__tests__/handoff-integration.test.d.ts.map +0 -1
  475. package/src/sessions/__tests__/handoff-integration.test.js +0 -264
  476. package/src/sessions/__tests__/handoff-integration.test.js.map +0 -1
  477. package/src/sessions/__tests__/handoff.test.d.ts.map +0 -1
  478. package/src/sessions/__tests__/handoff.test.js +0 -435
  479. package/src/sessions/__tests__/handoff.test.js.map +0 -1
  480. package/src/sessions/__tests__/index.test.d.ts.map +0 -1
  481. package/src/sessions/__tests__/index.test.js +0 -82
  482. package/src/sessions/__tests__/index.test.js.map +0 -1
  483. package/src/sessions/__tests__/session-cleanup.test.d.ts.map +0 -1
  484. package/src/sessions/__tests__/session-cleanup.test.js +0 -201
  485. package/src/sessions/__tests__/session-cleanup.test.js.map +0 -1
  486. package/src/sessions/__tests__/session-edge-cases.test.d.ts.map +0 -1
  487. package/src/sessions/__tests__/session-edge-cases.test.js +0 -251
  488. package/src/sessions/__tests__/session-edge-cases.test.js.map +0 -1
  489. package/src/sessions/__tests__/session-find.test.d.ts.map +0 -1
  490. package/src/sessions/__tests__/session-find.test.js +0 -210
  491. package/src/sessions/__tests__/session-find.test.js.map +0 -1
  492. package/src/sessions/__tests__/session-grade.integration.test.d.ts.map +0 -1
  493. package/src/sessions/__tests__/session-grade.integration.test.js +0 -287
  494. package/src/sessions/__tests__/session-grade.integration.test.js.map +0 -1
  495. package/src/sessions/__tests__/session-grade.test.d.ts.map +0 -1
  496. package/src/sessions/__tests__/session-grade.test.js +0 -630
  497. package/src/sessions/__tests__/session-grade.test.js.map +0 -1
  498. package/src/sessions/__tests__/session-memory-bridge.test.d.ts.map +0 -1
  499. package/src/sessions/__tests__/session-memory-bridge.test.js +0 -52
  500. package/src/sessions/__tests__/session-memory-bridge.test.js.map +0 -1
  501. package/src/sessions/__tests__/sessions.test.d.ts.map +0 -1
  502. package/src/sessions/__tests__/sessions.test.js +0 -113
  503. package/src/sessions/__tests__/sessions.test.js.map +0 -1
  504. package/src/skills/__tests__/discovery.test.d.ts.map +0 -1
  505. package/src/skills/__tests__/discovery.test.js +0 -171
  506. package/src/skills/__tests__/discovery.test.js.map +0 -1
  507. package/src/skills/__tests__/dispatch.test.d.ts.map +0 -1
  508. package/src/skills/__tests__/dispatch.test.js +0 -99
  509. package/src/skills/__tests__/dispatch.test.js.map +0 -1
  510. package/src/skills/__tests__/dynamic-skill-generator.test.d.ts.map +0 -1
  511. package/src/skills/__tests__/dynamic-skill-generator.test.js +0 -77
  512. package/src/skills/__tests__/dynamic-skill-generator.test.js.map +0 -1
  513. package/src/skills/__tests__/manifests.test.d.ts.map +0 -1
  514. package/src/skills/__tests__/manifests.test.js +0 -121
  515. package/src/skills/__tests__/manifests.test.js.map +0 -1
  516. package/src/skills/__tests__/precedence.test.d.ts.map +0 -1
  517. package/src/skills/__tests__/precedence.test.js +0 -325
  518. package/src/skills/__tests__/precedence.test.js.map +0 -1
  519. package/src/skills/__tests__/routing-table.test.d.ts.map +0 -1
  520. package/src/skills/__tests__/routing-table.test.js +0 -91
  521. package/src/skills/__tests__/routing-table.test.js.map +0 -1
  522. package/src/skills/__tests__/skill-paths.test.d.ts.map +0 -1
  523. package/src/skills/__tests__/skill-paths.test.js +0 -71
  524. package/src/skills/__tests__/skill-paths.test.js.map +0 -1
  525. package/src/skills/__tests__/test-utility.test.d.ts.map +0 -1
  526. package/src/skills/__tests__/test-utility.test.js +0 -59
  527. package/src/skills/__tests__/test-utility.test.js.map +0 -1
  528. package/src/skills/__tests__/token.test.d.ts.map +0 -1
  529. package/src/skills/__tests__/token.test.js +0 -135
  530. package/src/skills/__tests__/token.test.js.map +0 -1
  531. package/src/skills/__tests__/validation.test.d.ts.map +0 -1
  532. package/src/skills/__tests__/validation.test.js +0 -108
  533. package/src/skills/__tests__/validation.test.js.map +0 -1
  534. package/src/skills/__tests__/version.test.d.ts.map +0 -1
  535. package/src/skills/__tests__/version.test.js +0 -71
  536. package/src/skills/__tests__/version.test.js.map +0 -1
  537. package/src/skills/injection/__tests__/subagent.test.d.ts.map +0 -1
  538. package/src/skills/injection/__tests__/subagent.test.js +0 -122
  539. package/src/skills/injection/__tests__/subagent.test.js.map +0 -1
  540. package/src/skills/orchestrator/__tests__/spawn-tier.test.d.ts.map +0 -1
  541. package/src/skills/orchestrator/__tests__/spawn-tier.test.js +0 -228
  542. package/src/skills/orchestrator/__tests__/spawn-tier.test.js.map +0 -1
  543. package/src/spawn/__tests__/adapter-registry.test.d.ts.map +0 -1
  544. package/src/spawn/__tests__/adapter-registry.test.js +0 -76
  545. package/src/spawn/__tests__/adapter-registry.test.js.map +0 -1
  546. package/src/stats/__tests__/stats.test.d.ts.map +0 -1
  547. package/src/stats/__tests__/stats.test.js +0 -374
  548. package/src/stats/__tests__/stats.test.js.map +0 -1
  549. package/src/sticky/__tests__/purge.test.d.ts.map +0 -1
  550. package/src/sticky/__tests__/purge.test.js +0 -64
  551. package/src/sticky/__tests__/purge.test.js.map +0 -1
  552. package/src/store/__tests__/atomic.test.d.ts.map +0 -1
  553. package/src/store/__tests__/atomic.test.js +0 -81
  554. package/src/store/__tests__/atomic.test.js.map +0 -1
  555. package/src/store/__tests__/backup.test.d.ts.map +0 -1
  556. package/src/store/__tests__/backup.test.js +0 -131
  557. package/src/store/__tests__/backup.test.js.map +0 -1
  558. package/src/store/__tests__/brain-accessor-pageindex.test.d.ts.map +0 -1
  559. package/src/store/__tests__/brain-accessor-pageindex.test.js +0 -179
  560. package/src/store/__tests__/brain-accessor-pageindex.test.js.map +0 -1
  561. package/src/store/__tests__/brain-accessor.test.d.ts.map +0 -1
  562. package/src/store/__tests__/brain-accessor.test.js +0 -398
  563. package/src/store/__tests__/brain-accessor.test.js.map +0 -1
  564. package/src/store/__tests__/brain-pageindex.test.d.ts.map +0 -1
  565. package/src/store/__tests__/brain-pageindex.test.js +0 -137
  566. package/src/store/__tests__/brain-pageindex.test.js.map +0 -1
  567. package/src/store/__tests__/brain-schema.test.d.ts.map +0 -1
  568. package/src/store/__tests__/brain-schema.test.js +0 -137
  569. package/src/store/__tests__/brain-schema.test.js.map +0 -1
  570. package/src/store/__tests__/brain-vec.test.d.ts.map +0 -1
  571. package/src/store/__tests__/brain-vec.test.js +0 -100
  572. package/src/store/__tests__/brain-vec.test.js.map +0 -1
  573. package/src/store/__tests__/collision-detection.test.d.ts.map +0 -1
  574. package/src/store/__tests__/collision-detection.test.js +0 -165
  575. package/src/store/__tests__/collision-detection.test.js.map +0 -1
  576. package/src/store/__tests__/data-safety-central.test.d.ts.map +0 -1
  577. package/src/store/__tests__/data-safety-central.test.js +0 -408
  578. package/src/store/__tests__/data-safety-central.test.js.map +0 -1
  579. package/src/store/__tests__/db-helpers.test.d.ts.map +0 -1
  580. package/src/store/__tests__/db-helpers.test.js +0 -101
  581. package/src/store/__tests__/db-helpers.test.js.map +0 -1
  582. package/src/store/__tests__/e2e-safety-integration.test.d.ts.map +0 -1
  583. package/src/store/__tests__/e2e-safety-integration.test.js +0 -402
  584. package/src/store/__tests__/e2e-safety-integration.test.js.map +0 -1
  585. package/src/store/__tests__/git-checkpoint.test.d.ts.map +0 -1
  586. package/src/store/__tests__/git-checkpoint.test.js +0 -133
  587. package/src/store/__tests__/git-checkpoint.test.js.map +0 -1
  588. package/src/store/__tests__/idempotent-migration.test.d.ts.map +0 -1
  589. package/src/store/__tests__/idempotent-migration.test.js +0 -172
  590. package/src/store/__tests__/idempotent-migration.test.js.map +0 -1
  591. package/src/store/__tests__/import-logging.test.d.ts.map +0 -1
  592. package/src/store/__tests__/import-logging.test.js +0 -92
  593. package/src/store/__tests__/import-logging.test.js.map +0 -1
  594. package/src/store/__tests__/import-sort.test.d.ts.map +0 -1
  595. package/src/store/__tests__/import-sort.test.js +0 -109
  596. package/src/store/__tests__/import-sort.test.js.map +0 -1
  597. package/src/store/__tests__/json.test.d.ts.map +0 -1
  598. package/src/store/__tests__/json.test.js +0 -98
  599. package/src/store/__tests__/json.test.js.map +0 -1
  600. package/src/store/__tests__/lifecycle-schema-parity.test.d.ts.map +0 -1
  601. package/src/store/__tests__/lifecycle-schema-parity.test.js +0 -90
  602. package/src/store/__tests__/lifecycle-schema-parity.test.js.map +0 -1
  603. package/src/store/__tests__/migration-integration.test.d.ts.map +0 -1
  604. package/src/store/__tests__/migration-integration.test.js +0 -238
  605. package/src/store/__tests__/migration-integration.test.js.map +0 -1
  606. package/src/store/__tests__/migration-retry.test.d.ts.map +0 -1
  607. package/src/store/__tests__/migration-retry.test.js +0 -178
  608. package/src/store/__tests__/migration-retry.test.js.map +0 -1
  609. package/src/store/__tests__/migration-safety.test.d.ts.map +0 -1
  610. package/src/store/__tests__/migration-safety.test.js +0 -756
  611. package/src/store/__tests__/migration-safety.test.js.map +0 -1
  612. package/src/store/__tests__/migration-sqlite.test.d.ts.map +0 -1
  613. package/src/store/__tests__/migration-sqlite.test.js +0 -544
  614. package/src/store/__tests__/migration-sqlite.test.js.map +0 -1
  615. package/src/store/__tests__/performance-safety.test.d.ts.map +0 -1
  616. package/src/store/__tests__/performance-safety.test.js +0 -157
  617. package/src/store/__tests__/performance-safety.test.js.map +0 -1
  618. package/src/store/__tests__/project-detect.test.d.ts.map +0 -1
  619. package/src/store/__tests__/project-detect.test.js +0 -609
  620. package/src/store/__tests__/project-detect.test.js.map +0 -1
  621. package/src/store/__tests__/project-registry.test.d.ts.map +0 -1
  622. package/src/store/__tests__/project-registry.test.js +0 -28
  623. package/src/store/__tests__/project-registry.test.js.map +0 -1
  624. package/src/store/__tests__/provider.test.d.ts.map +0 -1
  625. package/src/store/__tests__/provider.test.js +0 -15
  626. package/src/store/__tests__/provider.test.js.map +0 -1
  627. package/src/store/__tests__/relations.test.d.ts.map +0 -1
  628. package/src/store/__tests__/relations.test.js +0 -318
  629. package/src/store/__tests__/relations.test.js.map +0 -1
  630. package/src/store/__tests__/safety-accessor.test.d.ts.map +0 -1
  631. package/src/store/__tests__/safety-accessor.test.js +0 -219
  632. package/src/store/__tests__/safety-accessor.test.js.map +0 -1
  633. package/src/store/__tests__/sequence-validation.test.d.ts.map +0 -1
  634. package/src/store/__tests__/sequence-validation.test.js +0 -94
  635. package/src/store/__tests__/sequence-validation.test.js.map +0 -1
  636. package/src/store/__tests__/session-store.test.d.ts.map +0 -1
  637. package/src/store/__tests__/session-store.test.js +0 -463
  638. package/src/store/__tests__/session-store.test.js.map +0 -1
  639. package/src/store/__tests__/sqlite-backup.test.d.ts.map +0 -1
  640. package/src/store/__tests__/sqlite-backup.test.js +0 -72
  641. package/src/store/__tests__/sqlite-backup.test.js.map +0 -1
  642. package/src/store/__tests__/sqlite.test.d.ts.map +0 -1
  643. package/src/store/__tests__/sqlite.test.js +0 -256
  644. package/src/store/__tests__/sqlite.test.js.map +0 -1
  645. package/src/store/__tests__/task-store.test.d.ts.map +0 -1
  646. package/src/store/__tests__/task-store.test.js +0 -514
  647. package/src/store/__tests__/task-store.test.js.map +0 -1
  648. package/src/store/__tests__/test-db-helper.d.ts.map +0 -1
  649. package/src/store/__tests__/test-db-helper.js +0 -110
  650. package/src/store/__tests__/test-db-helper.js.map +0 -1
  651. package/src/store/__tests__/write-verification.test.d.ts.map +0 -1
  652. package/src/store/__tests__/write-verification.test.js +0 -185
  653. package/src/store/__tests__/write-verification.test.js.map +0 -1
  654. package/src/system/__tests__/cleanup.test.d.ts.map +0 -1
  655. package/src/system/__tests__/cleanup.test.js +0 -87
  656. package/src/system/__tests__/cleanup.test.js.map +0 -1
  657. package/src/system/__tests__/health.test.d.ts.map +0 -1
  658. package/src/system/__tests__/health.test.js +0 -55
  659. package/src/system/__tests__/health.test.js.map +0 -1
  660. package/src/task-work/__tests__/start-deps.test.d.ts.map +0 -1
  661. package/src/task-work/__tests__/start-deps.test.js +0 -152
  662. package/src/task-work/__tests__/start-deps.test.js.map +0 -1
  663. package/src/tasks/__tests__/add.test.d.ts.map +0 -1
  664. package/src/tasks/__tests__/add.test.js +0 -226
  665. package/src/tasks/__tests__/add.test.js.map +0 -1
  666. package/src/tasks/__tests__/archive.test.d.ts.map +0 -1
  667. package/src/tasks/__tests__/archive.test.js +0 -196
  668. package/src/tasks/__tests__/archive.test.js.map +0 -1
  669. package/src/tasks/__tests__/assignee.test.d.ts.map +0 -1
  670. package/src/tasks/__tests__/assignee.test.js +0 -125
  671. package/src/tasks/__tests__/assignee.test.js.map +0 -1
  672. package/src/tasks/__tests__/atomicity.test.d.ts.map +0 -1
  673. package/src/tasks/__tests__/atomicity.test.js +0 -192
  674. package/src/tasks/__tests__/atomicity.test.js.map +0 -1
  675. package/src/tasks/__tests__/cancel-ops.test.d.ts.map +0 -1
  676. package/src/tasks/__tests__/cancel-ops.test.js +0 -115
  677. package/src/tasks/__tests__/cancel-ops.test.js.map +0 -1
  678. package/src/tasks/__tests__/complete-unblocks.test.d.ts.map +0 -1
  679. package/src/tasks/__tests__/complete-unblocks.test.js +0 -151
  680. package/src/tasks/__tests__/complete-unblocks.test.js.map +0 -1
  681. package/src/tasks/__tests__/complete.test.d.ts.map +0 -1
  682. package/src/tasks/__tests__/complete.test.js +0 -230
  683. package/src/tasks/__tests__/complete.test.js.map +0 -1
  684. package/src/tasks/__tests__/delete.test.d.ts.map +0 -1
  685. package/src/tasks/__tests__/delete.test.js +0 -183
  686. package/src/tasks/__tests__/delete.test.js.map +0 -1
  687. package/src/tasks/__tests__/dependency-check.test.d.ts.map +0 -1
  688. package/src/tasks/__tests__/dependency-check.test.js +0 -293
  689. package/src/tasks/__tests__/dependency-check.test.js.map +0 -1
  690. package/src/tasks/__tests__/deps-ready.test.d.ts.map +0 -1
  691. package/src/tasks/__tests__/deps-ready.test.js +0 -68
  692. package/src/tasks/__tests__/deps-ready.test.js.map +0 -1
  693. package/src/tasks/__tests__/epic-enforcement.test.d.ts.map +0 -1
  694. package/src/tasks/__tests__/epic-enforcement.test.js +0 -669
  695. package/src/tasks/__tests__/epic-enforcement.test.js.map +0 -1
  696. package/src/tasks/__tests__/find.test.d.ts.map +0 -1
  697. package/src/tasks/__tests__/find.test.js +0 -163
  698. package/src/tasks/__tests__/find.test.js.map +0 -1
  699. package/src/tasks/__tests__/graph-ops.test.d.ts.map +0 -1
  700. package/src/tasks/__tests__/graph-ops.test.js +0 -174
  701. package/src/tasks/__tests__/graph-ops.test.js.map +0 -1
  702. package/src/tasks/__tests__/hierarchy-policy.test.d.ts.map +0 -1
  703. package/src/tasks/__tests__/hierarchy-policy.test.js +0 -399
  704. package/src/tasks/__tests__/hierarchy-policy.test.js.map +0 -1
  705. package/src/tasks/__tests__/hierarchy.test.d.ts.map +0 -1
  706. package/src/tasks/__tests__/hierarchy.test.js +0 -302
  707. package/src/tasks/__tests__/hierarchy.test.js.map +0 -1
  708. package/src/tasks/__tests__/id-generator.test.d.ts.map +0 -1
  709. package/src/tasks/__tests__/id-generator.test.js +0 -59
  710. package/src/tasks/__tests__/id-generator.test.js.map +0 -1
  711. package/src/tasks/__tests__/labels.test.d.ts.map +0 -1
  712. package/src/tasks/__tests__/labels.test.js +0 -173
  713. package/src/tasks/__tests__/labels.test.js.map +0 -1
  714. package/src/tasks/__tests__/list.test.d.ts.map +0 -1
  715. package/src/tasks/__tests__/list.test.js +0 -272
  716. package/src/tasks/__tests__/list.test.js.map +0 -1
  717. package/src/tasks/__tests__/minimal-test.test.d.ts.map +0 -1
  718. package/src/tasks/__tests__/minimal-test.test.js +0 -25
  719. package/src/tasks/__tests__/minimal-test.test.js.map +0 -1
  720. package/src/tasks/__tests__/phase-tracking.test.d.ts.map +0 -1
  721. package/src/tasks/__tests__/phase-tracking.test.js +0 -209
  722. package/src/tasks/__tests__/phase-tracking.test.js.map +0 -1
  723. package/src/tasks/__tests__/pipeline-stage.test.d.ts.map +0 -1
  724. package/src/tasks/__tests__/pipeline-stage.test.js +0 -277
  725. package/src/tasks/__tests__/pipeline-stage.test.js.map +0 -1
  726. package/src/tasks/__tests__/plan-priority.test.d.ts.map +0 -1
  727. package/src/tasks/__tests__/plan-priority.test.js +0 -133
  728. package/src/tasks/__tests__/plan-priority.test.js.map +0 -1
  729. package/src/tasks/__tests__/priority-normalization.test.d.ts.map +0 -1
  730. package/src/tasks/__tests__/priority-normalization.test.js +0 -117
  731. package/src/tasks/__tests__/priority-normalization.test.js.map +0 -1
  732. package/src/tasks/__tests__/relates.test.d.ts.map +0 -1
  733. package/src/tasks/__tests__/relates.test.js +0 -84
  734. package/src/tasks/__tests__/relates.test.js.map +0 -1
  735. package/src/tasks/__tests__/show-deps.test.d.ts.map +0 -1
  736. package/src/tasks/__tests__/show-deps.test.js +0 -182
  737. package/src/tasks/__tests__/show-deps.test.js.map +0 -1
  738. package/src/tasks/__tests__/show.test.d.ts.map +0 -1
  739. package/src/tasks/__tests__/show.test.js +0 -126
  740. package/src/tasks/__tests__/show.test.js.map +0 -1
  741. package/src/tasks/__tests__/staleness.test.d.ts.map +0 -1
  742. package/src/tasks/__tests__/staleness.test.js +0 -154
  743. package/src/tasks/__tests__/staleness.test.js.map +0 -1
  744. package/src/tasks/__tests__/task-ops-depends.test.d.ts.map +0 -1
  745. package/src/tasks/__tests__/task-ops-depends.test.js +0 -118
  746. package/src/tasks/__tests__/task-ops-depends.test.js.map +0 -1
  747. package/src/tasks/__tests__/update.test.d.ts.map +0 -1
  748. package/src/tasks/__tests__/update.test.js +0 -320
  749. package/src/tasks/__tests__/update.test.js.map +0 -1
  750. package/src/validation/__tests__/chain-validation.test.d.ts.map +0 -1
  751. package/src/validation/__tests__/chain-validation.test.js +0 -204
  752. package/src/validation/__tests__/chain-validation.test.js.map +0 -1
  753. package/src/validation/__tests__/compliance.test.d.ts.map +0 -1
  754. package/src/validation/__tests__/compliance.test.js +0 -83
  755. package/src/validation/__tests__/compliance.test.js.map +0 -1
  756. package/src/validation/__tests__/docs-sync.test.d.ts.map +0 -1
  757. package/src/validation/__tests__/docs-sync.test.js +0 -243
  758. package/src/validation/__tests__/docs-sync.test.js.map +0 -1
  759. package/src/validation/__tests__/doctor-gitignore.test.d.ts.map +0 -1
  760. package/src/validation/__tests__/doctor-gitignore.test.js +0 -154
  761. package/src/validation/__tests__/doctor-gitignore.test.js.map +0 -1
  762. package/src/validation/__tests__/doctor-injection.test.d.ts.map +0 -1
  763. package/src/validation/__tests__/doctor-injection.test.js +0 -230
  764. package/src/validation/__tests__/doctor-injection.test.js.map +0 -1
  765. package/src/validation/__tests__/doctor.test.d.ts.map +0 -1
  766. package/src/validation/__tests__/doctor.test.js +0 -202
  767. package/src/validation/__tests__/doctor.test.js.map +0 -1
  768. package/src/validation/__tests__/engine.test.d.ts.map +0 -1
  769. package/src/validation/__tests__/engine.test.js +0 -346
  770. package/src/validation/__tests__/engine.test.js.map +0 -1
  771. package/src/validation/__tests__/manifest.test.d.ts.map +0 -1
  772. package/src/validation/__tests__/manifest.test.js +0 -244
  773. package/src/validation/__tests__/manifest.test.js.map +0 -1
  774. package/src/validation/__tests__/protocol-common.test.d.ts.map +0 -1
  775. package/src/validation/__tests__/protocol-common.test.js +0 -112
  776. package/src/validation/__tests__/protocol-common.test.js.map +0 -1
  777. package/src/validation/__tests__/verification.test.d.ts.map +0 -1
  778. package/src/validation/__tests__/verification.test.js +0 -277
  779. package/src/validation/__tests__/verification.test.js.map +0 -1
  780. package/src/validation/protocols/release-protocol.ts +0 -80
  781. package/src/validation/protocols/testing-protocol.ts +0 -93
  782. package/src/validation/protocols/validation-protocol.ts +0 -93
@@ -1,701 +0,0 @@
1
- /**
2
- * Tests for BRAIN retrieval operations — 3-layer pattern.
3
- *
4
- * Tests: searchBrainCompact, timelineBrain, fetchBrainEntries, observeBrain.
5
- *
6
- * @task T5131 T5132 T5133 T5134 T5135
7
- * @epic T5149
8
- */
9
- import { mkdir, mkdtemp, rm } from 'node:fs/promises';
10
- import { tmpdir } from 'node:os';
11
- import { join } from 'node:path';
12
- import { afterEach, beforeEach, describe, expect, it } from 'vitest';
13
- let tempDir;
14
- let cleoDir;
15
- describe('Brain Retrieval', () => {
16
- beforeEach(async () => {
17
- tempDir = await mkdtemp(join(tmpdir(), 'cleo-brain-retrieval-'));
18
- cleoDir = join(tempDir, '.cleo');
19
- await mkdir(cleoDir, { recursive: true });
20
- process.env['CLEO_DIR'] = cleoDir;
21
- // Initialize tasks.db with test session for cross-db write-guard validation
22
- const { getDb } = await import('../../store/sqlite.js');
23
- const { sessions } = await import('../../store/tasks-schema.js');
24
- const db = await getDb(tempDir);
25
- await db
26
- .insert(sessions)
27
- .values({ id: 'S-123', name: 'test-session', status: 'active' })
28
- .onConflictDoNothing()
29
- .run();
30
- });
31
- afterEach(async () => {
32
- try {
33
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
34
- closeBrainDb();
35
- }
36
- catch {
37
- /* may not be loaded */
38
- }
39
- try {
40
- const { closeDb } = await import('../../store/sqlite.js');
41
- closeDb();
42
- }
43
- catch {
44
- /* may not be loaded */
45
- }
46
- try {
47
- const { resetFts5Cache } = await import('../brain-search.js');
48
- resetFts5Cache();
49
- }
50
- catch {
51
- /* may not be loaded */
52
- }
53
- delete process.env['CLEO_DIR'];
54
- // Race rm against an 8s timeout. On Windows, fs.rm can block indefinitely
55
- // on locked SQLite WAL files — racing prevents the hook from timing out.
56
- await Promise.race([
57
- rm(tempDir, { recursive: true, force: true, maxRetries: 3, retryDelay: 300 }).catch(() => { }),
58
- new Promise((resolve) => setTimeout(resolve, 8_000)),
59
- ]);
60
- });
61
- // ==========================================================================
62
- // searchBrainCompact
63
- // ==========================================================================
64
- describe('searchBrainCompact', () => {
65
- it('should return empty results for empty query', async () => {
66
- const { searchBrainCompact } = await import('../brain-retrieval.js');
67
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
68
- const { resetFts5Cache } = await import('../brain-search.js');
69
- closeBrainDb();
70
- resetFts5Cache();
71
- const result = await searchBrainCompact(tempDir, { query: '' });
72
- expect(result.results).toHaveLength(0);
73
- expect(result.total).toBe(0);
74
- expect(result.tokensEstimated).toBe(0);
75
- });
76
- it('should return compact results from decisions', async () => {
77
- const { searchBrainCompact } = await import('../brain-retrieval.js');
78
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
79
- const { resetFts5Cache } = await import('../brain-search.js');
80
- const { getBrainAccessor } = await import('../../store/brain-accessor.js');
81
- closeBrainDb();
82
- resetFts5Cache();
83
- const accessor = await getBrainAccessor(tempDir);
84
- await accessor.addDecision({
85
- id: 'D001',
86
- type: 'architecture',
87
- decision: 'Use SQLite for persistent storage in BRAIN module',
88
- rationale: 'Reliable embedded database with FTS5',
89
- confidence: 'high',
90
- });
91
- const result = await searchBrainCompact(tempDir, { query: 'SQLite' });
92
- expect(result.results.length).toBeGreaterThan(0);
93
- expect(result.results[0].id).toBe('D001');
94
- expect(result.results[0].type).toBe('decision');
95
- expect(result.results[0].title).toBe('Use SQLite for persistent storage in BRAIN module');
96
- expect(result.results[0].date).toBeTruthy();
97
- expect(result.tokensEstimated).toBe(result.results.length * 50);
98
- });
99
- it('should return compact results from all table types', async () => {
100
- const { searchBrainCompact } = await import('../brain-retrieval.js');
101
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
102
- const { resetFts5Cache } = await import('../brain-search.js');
103
- const { getBrainAccessor } = await import('../../store/brain-accessor.js');
104
- closeBrainDb();
105
- resetFts5Cache();
106
- const accessor = await getBrainAccessor(tempDir);
107
- await accessor.addDecision({
108
- id: 'D001',
109
- type: 'technical',
110
- decision: 'Use unified search for memory',
111
- rationale: 'Better developer experience',
112
- confidence: 'high',
113
- });
114
- await accessor.addPattern({
115
- id: 'P001',
116
- type: 'workflow',
117
- pattern: 'Search then filter pattern for memory',
118
- context: 'Memory retrieval',
119
- frequency: 3,
120
- });
121
- await accessor.addLearning({
122
- id: 'L001',
123
- insight: 'Unified memory search reduces token usage',
124
- source: 'T5131',
125
- confidence: 0.9,
126
- actionable: true,
127
- });
128
- await accessor.addObservation({
129
- id: 'O-test1',
130
- type: 'discovery',
131
- title: 'Memory retrieval needs compact search layer',
132
- narrative: 'Compact search for memory saves tokens',
133
- sourceType: 'agent',
134
- });
135
- const result = await searchBrainCompact(tempDir, { query: 'memory' });
136
- const types = result.results.map((r) => r.type);
137
- expect(types).toContain('decision');
138
- expect(types).toContain('pattern');
139
- expect(types).toContain('learning');
140
- expect(types).toContain('observation');
141
- });
142
- it('should filter by table type', async () => {
143
- const { searchBrainCompact } = await import('../brain-retrieval.js');
144
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
145
- const { resetFts5Cache } = await import('../brain-search.js');
146
- const { getBrainAccessor } = await import('../../store/brain-accessor.js');
147
- closeBrainDb();
148
- resetFts5Cache();
149
- const accessor = await getBrainAccessor(tempDir);
150
- await accessor.addDecision({
151
- id: 'D001',
152
- type: 'technical',
153
- decision: 'Compact format for search results',
154
- rationale: 'Saves tokens',
155
- confidence: 'medium',
156
- });
157
- await accessor.addPattern({
158
- id: 'P001',
159
- type: 'optimization',
160
- pattern: 'Compact format improves performance',
161
- context: 'API design',
162
- frequency: 2,
163
- });
164
- const result = await searchBrainCompact(tempDir, {
165
- query: 'compact',
166
- tables: ['decisions'],
167
- });
168
- expect(result.results.every((r) => r.type === 'decision')).toBe(true);
169
- });
170
- it('should apply date filters', async () => {
171
- const { searchBrainCompact } = await import('../brain-retrieval.js');
172
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
173
- const { resetFts5Cache } = await import('../brain-search.js');
174
- const { getBrainAccessor } = await import('../../store/brain-accessor.js');
175
- closeBrainDb();
176
- resetFts5Cache();
177
- const accessor = await getBrainAccessor(tempDir);
178
- await accessor.addDecision({
179
- id: 'D001',
180
- type: 'technical',
181
- decision: 'Old date filter test decision',
182
- rationale: 'Testing date ranges',
183
- confidence: 'medium',
184
- createdAt: '2025-01-01 00:00:00',
185
- });
186
- await accessor.addDecision({
187
- id: 'D002',
188
- type: 'technical',
189
- decision: 'Recent date filter test decision',
190
- rationale: 'Testing date ranges',
191
- confidence: 'medium',
192
- createdAt: '2026-06-01 00:00:00',
193
- });
194
- const result = await searchBrainCompact(tempDir, {
195
- query: 'date filter test',
196
- dateStart: '2026-01-01',
197
- });
198
- expect(result.results.every((r) => r.date >= '2026-01-01')).toBe(true);
199
- });
200
- it('should truncate titles to 80 characters', async () => {
201
- const { searchBrainCompact } = await import('../brain-retrieval.js');
202
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
203
- const { resetFts5Cache } = await import('../brain-search.js');
204
- const { getBrainAccessor } = await import('../../store/brain-accessor.js');
205
- closeBrainDb();
206
- resetFts5Cache();
207
- const accessor = await getBrainAccessor(tempDir);
208
- const longDecision = 'This is a very long decision about truncation testing that exceeds eighty characters and should be properly truncated in compact results';
209
- await accessor.addDecision({
210
- id: 'D001',
211
- type: 'technical',
212
- decision: longDecision,
213
- rationale: 'Test truncation behavior',
214
- confidence: 'low',
215
- });
216
- const result = await searchBrainCompact(tempDir, { query: 'truncation' });
217
- expect(result.results.length).toBeGreaterThan(0);
218
- expect(result.results[0].title.length).toBeLessThanOrEqual(80);
219
- expect(longDecision.length).toBeGreaterThan(80);
220
- });
221
- });
222
- // ==========================================================================
223
- // timelineBrain
224
- // ==========================================================================
225
- describe('timelineBrain', () => {
226
- it('should return null anchor for unknown ID', async () => {
227
- const { timelineBrain } = await import('../brain-retrieval.js');
228
- const { closeBrainDb, getBrainDb } = await import('../../store/brain-sqlite.js');
229
- const { resetFts5Cache } = await import('../brain-search.js');
230
- closeBrainDb();
231
- resetFts5Cache();
232
- await getBrainDb(tempDir);
233
- const result = await timelineBrain(tempDir, { anchor: 'D-nonexistent' });
234
- expect(result.anchor).toBeNull();
235
- expect(result.before).toHaveLength(0);
236
- expect(result.after).toHaveLength(0);
237
- });
238
- it('should return null anchor for unrecognized ID prefix', async () => {
239
- const { timelineBrain } = await import('../brain-retrieval.js');
240
- const { closeBrainDb, getBrainDb } = await import('../../store/brain-sqlite.js');
241
- const { resetFts5Cache } = await import('../brain-search.js');
242
- closeBrainDb();
243
- resetFts5Cache();
244
- await getBrainDb(tempDir);
245
- const result = await timelineBrain(tempDir, { anchor: 'UNKNOWN-123' });
246
- expect(result.anchor).toBeNull();
247
- });
248
- it('should return anchor data for a decision', async () => {
249
- const { timelineBrain } = await import('../brain-retrieval.js');
250
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
251
- const { resetFts5Cache } = await import('../brain-search.js');
252
- const { getBrainAccessor } = await import('../../store/brain-accessor.js');
253
- closeBrainDb();
254
- resetFts5Cache();
255
- const accessor = await getBrainAccessor(tempDir);
256
- await accessor.addDecision({
257
- id: 'D001',
258
- type: 'architecture',
259
- decision: 'Use drizzle ORM',
260
- rationale: 'Type-safe queries',
261
- confidence: 'high',
262
- createdAt: '2026-03-01 12:00:00',
263
- });
264
- const result = await timelineBrain(tempDir, { anchor: 'D001' });
265
- expect(result.anchor).not.toBeNull();
266
- expect(result.anchor.id).toBe('D001');
267
- expect(result.anchor.type).toBe('decision');
268
- expect(result.anchor.data).toBeTruthy();
269
- });
270
- it('should return before and after entries across tables', async () => {
271
- const { timelineBrain } = await import('../brain-retrieval.js');
272
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
273
- const { resetFts5Cache } = await import('../brain-search.js');
274
- const { getBrainAccessor } = await import('../../store/brain-accessor.js');
275
- closeBrainDb();
276
- resetFts5Cache();
277
- const accessor = await getBrainAccessor(tempDir);
278
- // Create entries with different timestamps across tables
279
- await accessor.addDecision({
280
- id: 'D001',
281
- type: 'technical',
282
- decision: 'Early decision',
283
- rationale: 'First',
284
- confidence: 'low',
285
- createdAt: '2026-01-01 10:00:00',
286
- });
287
- await accessor.addPattern({
288
- id: 'P001',
289
- type: 'workflow',
290
- pattern: 'Early pattern',
291
- context: 'Testing',
292
- frequency: 1,
293
- extractedAt: '2026-01-15 10:00:00',
294
- });
295
- // Anchor
296
- await accessor.addLearning({
297
- id: 'L001',
298
- insight: 'Middle learning (anchor)',
299
- source: 'T5132',
300
- confidence: 0.8,
301
- actionable: true,
302
- createdAt: '2026-02-01 12:00:00',
303
- });
304
- await accessor.addDecision({
305
- id: 'D002',
306
- type: 'technical',
307
- decision: 'Later decision',
308
- rationale: 'After anchor',
309
- confidence: 'high',
310
- createdAt: '2026-03-01 10:00:00',
311
- });
312
- await accessor.addObservation({
313
- id: 'O-after1',
314
- type: 'discovery',
315
- title: 'Late observation',
316
- narrative: 'After anchor',
317
- sourceType: 'agent',
318
- createdAt: '2026-03-15 10:00:00',
319
- });
320
- const result = await timelineBrain(tempDir, {
321
- anchor: 'L001',
322
- depthBefore: 5,
323
- depthAfter: 5,
324
- });
325
- expect(result.anchor).not.toBeNull();
326
- expect(result.anchor.id).toBe('L001');
327
- expect(result.anchor.type).toBe('learning');
328
- // Before: D001 and P001 should appear
329
- expect(result.before.length).toBeGreaterThanOrEqual(2);
330
- const beforeIds = result.before.map((e) => e.id);
331
- expect(beforeIds).toContain('D001');
332
- expect(beforeIds).toContain('P001');
333
- // After: D002 and O-after1 should appear
334
- expect(result.after.length).toBeGreaterThanOrEqual(2);
335
- const afterIds = result.after.map((e) => e.id);
336
- expect(afterIds).toContain('D002');
337
- expect(afterIds).toContain('O-after1');
338
- });
339
- it('should respect depth parameters', async () => {
340
- const { timelineBrain } = await import('../brain-retrieval.js');
341
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
342
- const { resetFts5Cache } = await import('../brain-search.js');
343
- const { getBrainAccessor } = await import('../../store/brain-accessor.js');
344
- closeBrainDb();
345
- resetFts5Cache();
346
- const accessor = await getBrainAccessor(tempDir);
347
- // Create many entries before the anchor
348
- for (let i = 1; i <= 5; i++) {
349
- await accessor.addDecision({
350
- id: `D${String(i).padStart(3, '0')}`,
351
- type: 'technical',
352
- decision: `Decision ${i}`,
353
- rationale: `Rationale ${i}`,
354
- confidence: 'low',
355
- createdAt: `2026-01-${String(i).padStart(2, '0')} 10:00:00`,
356
- });
357
- }
358
- // Anchor
359
- await accessor.addLearning({
360
- id: 'L001',
361
- insight: 'Anchor learning',
362
- source: 'T5132',
363
- confidence: 0.5,
364
- actionable: false,
365
- createdAt: '2026-02-01 12:00:00',
366
- });
367
- const result = await timelineBrain(tempDir, {
368
- anchor: 'L001',
369
- depthBefore: 2,
370
- depthAfter: 0,
371
- });
372
- expect(result.before.length).toBeLessThanOrEqual(2);
373
- expect(result.after).toHaveLength(0);
374
- });
375
- it('should handle observation anchors with O- prefix', async () => {
376
- const { timelineBrain } = await import('../brain-retrieval.js');
377
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
378
- const { resetFts5Cache } = await import('../brain-search.js');
379
- const { getBrainAccessor } = await import('../../store/brain-accessor.js');
380
- closeBrainDb();
381
- resetFts5Cache();
382
- const accessor = await getBrainAccessor(tempDir);
383
- await accessor.addObservation({
384
- id: 'O-test123',
385
- type: 'feature',
386
- title: 'Test observation anchor',
387
- narrative: 'Testing observation as anchor',
388
- sourceType: 'agent',
389
- createdAt: '2026-03-01 12:00:00',
390
- });
391
- const result = await timelineBrain(tempDir, { anchor: 'O-test123' });
392
- expect(result.anchor).not.toBeNull();
393
- expect(result.anchor.id).toBe('O-test123');
394
- expect(result.anchor.type).toBe('observation');
395
- });
396
- });
397
- // ==========================================================================
398
- // fetchBrainEntries
399
- // ==========================================================================
400
- describe('fetchBrainEntries', () => {
401
- it('should return empty for empty IDs array', async () => {
402
- const { fetchBrainEntries } = await import('../brain-retrieval.js');
403
- const { closeBrainDb, getBrainDb } = await import('../../store/brain-sqlite.js');
404
- const { resetFts5Cache } = await import('../brain-search.js');
405
- closeBrainDb();
406
- resetFts5Cache();
407
- await getBrainDb(tempDir);
408
- const result = await fetchBrainEntries(tempDir, { ids: [] });
409
- expect(result.results).toHaveLength(0);
410
- expect(result.notFound).toHaveLength(0);
411
- expect(result.tokensEstimated).toBe(0);
412
- });
413
- it('should fetch entries by IDs from different tables', async () => {
414
- const { fetchBrainEntries } = await import('../brain-retrieval.js');
415
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
416
- const { resetFts5Cache } = await import('../brain-search.js');
417
- const { getBrainAccessor } = await import('../../store/brain-accessor.js');
418
- closeBrainDb();
419
- resetFts5Cache();
420
- const accessor = await getBrainAccessor(tempDir);
421
- await accessor.addDecision({
422
- id: 'D001',
423
- type: 'architecture',
424
- decision: 'Use fetch by ID pattern',
425
- rationale: 'Direct access',
426
- confidence: 'high',
427
- });
428
- await accessor.addPattern({
429
- id: 'P001',
430
- type: 'workflow',
431
- pattern: 'Batch fetch pattern',
432
- context: 'API design',
433
- frequency: 2,
434
- });
435
- await accessor.addLearning({
436
- id: 'L001',
437
- insight: 'Batch fetching reduces round-trips',
438
- source: 'T5133',
439
- confidence: 0.85,
440
- actionable: true,
441
- });
442
- await accessor.addObservation({
443
- id: 'O-fetch1',
444
- type: 'discovery',
445
- title: 'Observation for fetch test',
446
- narrative: 'Testing batch fetch',
447
- sourceType: 'agent',
448
- });
449
- const result = await fetchBrainEntries(tempDir, {
450
- ids: ['D001', 'P001', 'L001', 'O-fetch1'],
451
- });
452
- expect(result.results).toHaveLength(4);
453
- expect(result.notFound).toHaveLength(0);
454
- expect(result.tokensEstimated).toBe(4 * 500);
455
- const types = result.results.map((r) => r.type);
456
- expect(types).toContain('decision');
457
- expect(types).toContain('pattern');
458
- expect(types).toContain('learning');
459
- expect(types).toContain('observation');
460
- });
461
- it('should report not-found IDs', async () => {
462
- const { fetchBrainEntries } = await import('../brain-retrieval.js');
463
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
464
- const { resetFts5Cache } = await import('../brain-search.js');
465
- const { getBrainAccessor } = await import('../../store/brain-accessor.js');
466
- closeBrainDb();
467
- resetFts5Cache();
468
- const accessor = await getBrainAccessor(tempDir);
469
- await accessor.addDecision({
470
- id: 'D001',
471
- type: 'technical',
472
- decision: 'Existing decision',
473
- rationale: 'Test',
474
- confidence: 'low',
475
- });
476
- const result = await fetchBrainEntries(tempDir, {
477
- ids: ['D001', 'D999', 'P999', 'UNKNOWN-123'],
478
- });
479
- expect(result.results).toHaveLength(1);
480
- expect(result.results[0].id).toBe('D001');
481
- expect(result.notFound).toContain('D999');
482
- expect(result.notFound).toContain('P999');
483
- expect(result.notFound).toContain('UNKNOWN-123');
484
- });
485
- it('should return full data in each entry', async () => {
486
- const { fetchBrainEntries } = await import('../brain-retrieval.js');
487
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
488
- const { resetFts5Cache } = await import('../brain-search.js');
489
- const { getBrainAccessor } = await import('../../store/brain-accessor.js');
490
- closeBrainDb();
491
- resetFts5Cache();
492
- const accessor = await getBrainAccessor(tempDir);
493
- await accessor.addDecision({
494
- id: 'D001',
495
- type: 'architecture',
496
- decision: 'Full data test decision',
497
- rationale: 'Verify all fields returned',
498
- confidence: 'high',
499
- });
500
- const result = await fetchBrainEntries(tempDir, { ids: ['D001'] });
501
- expect(result.results).toHaveLength(1);
502
- const entry = result.results[0];
503
- expect(entry.id).toBe('D001');
504
- expect(entry.type).toBe('decision');
505
- const data = entry.data;
506
- expect(data['decision']).toBe('Full data test decision');
507
- expect(data['rationale']).toBe('Verify all fields returned');
508
- expect(data['confidence']).toBe('high');
509
- });
510
- });
511
- // ==========================================================================
512
- // observeBrain
513
- // ==========================================================================
514
- describe('observeBrain', () => {
515
- it('should create an observation with generated ID', async () => {
516
- const { observeBrain } = await import('../brain-retrieval.js');
517
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
518
- const { resetFts5Cache } = await import('../brain-search.js');
519
- closeBrainDb();
520
- resetFts5Cache();
521
- const result = await observeBrain(tempDir, {
522
- text: 'Test observation for brain module',
523
- });
524
- expect(result.id).toMatch(/^O-/);
525
- expect(result.type).toBeTruthy();
526
- expect(result.createdAt).toBeTruthy();
527
- });
528
- it('should auto-classify type from text keywords', async () => {
529
- const { observeBrain } = await import('../brain-retrieval.js');
530
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
531
- const { resetFts5Cache } = await import('../brain-search.js');
532
- closeBrainDb();
533
- resetFts5Cache();
534
- const bugResult = await observeBrain(tempDir, {
535
- text: 'Found a bug in the search module that causes a crash',
536
- });
537
- expect(bugResult.type).toBe('bugfix');
538
- const featureResult = await observeBrain(tempDir, {
539
- text: 'Implement new retrieval layer for BRAIN',
540
- });
541
- expect(featureResult.type).toBe('feature');
542
- const refactorResult = await observeBrain(tempDir, {
543
- text: 'Refactor the engine compatibility layer',
544
- });
545
- expect(refactorResult.type).toBe('refactor');
546
- const changeResult = await observeBrain(tempDir, {
547
- text: 'Update the timeline query to use UNION ALL',
548
- });
549
- expect(changeResult.type).toBe('change');
550
- const decisionResult = await observeBrain(tempDir, {
551
- text: 'Decided to use async pattern instead of sync',
552
- });
553
- expect(decisionResult.type).toBe('decision');
554
- const discoveryResult = await observeBrain(tempDir, {
555
- text: 'Interesting behavior in the database layer',
556
- });
557
- expect(discoveryResult.type).toBe('discovery');
558
- });
559
- it('should use provided type over auto-classification', async () => {
560
- const { observeBrain } = await import('../brain-retrieval.js');
561
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
562
- const { resetFts5Cache } = await import('../brain-search.js');
563
- closeBrainDb();
564
- resetFts5Cache();
565
- // Text has 'bug' keyword but we override with 'feature'
566
- const result = await observeBrain(tempDir, {
567
- text: 'This has bug keyword but is a feature',
568
- type: 'feature',
569
- });
570
- expect(result.type).toBe('feature');
571
- });
572
- it('should use provided title', async () => {
573
- const { observeBrain } = await import('../brain-retrieval.js');
574
- const { fetchBrainEntries } = await import('../brain-retrieval.js');
575
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
576
- const { resetFts5Cache } = await import('../brain-search.js');
577
- closeBrainDb();
578
- resetFts5Cache();
579
- const result = await observeBrain(tempDir, {
580
- text: 'Long observation text that describes a discovery in detail',
581
- title: 'Custom Title',
582
- });
583
- // Fetch it back and verify
584
- const fetched = await fetchBrainEntries(tempDir, { ids: [result.id] });
585
- expect(fetched.results).toHaveLength(1);
586
- const data = fetched.results[0].data;
587
- expect(data['title']).toBe('Custom Title');
588
- });
589
- it('should throw on empty text', async () => {
590
- const { observeBrain } = await import('../brain-retrieval.js');
591
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
592
- const { resetFts5Cache } = await import('../brain-search.js');
593
- closeBrainDb();
594
- resetFts5Cache();
595
- // Need to init DB first
596
- const { getBrainDb } = await import('../../store/brain-sqlite.js');
597
- await getBrainDb(tempDir);
598
- await expect(observeBrain(tempDir, { text: '' })).rejects.toThrow('Observation text is required');
599
- await expect(observeBrain(tempDir, { text: ' ' })).rejects.toThrow('Observation text is required');
600
- });
601
- it('should store observation searchable via searchBrainCompact', async () => {
602
- const { observeBrain, searchBrainCompact } = await import('../brain-retrieval.js');
603
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
604
- const { resetFts5Cache } = await import('../brain-search.js');
605
- closeBrainDb();
606
- resetFts5Cache();
607
- const created = await observeBrain(tempDir, {
608
- text: 'Unique searchable observation content xyzzy123',
609
- title: 'Searchable xyzzy123 observation',
610
- });
611
- // Search should find it
612
- const searchResult = await searchBrainCompact(tempDir, {
613
- query: 'xyzzy123',
614
- tables: ['observations'],
615
- });
616
- expect(searchResult.results.length).toBeGreaterThan(0);
617
- expect(searchResult.results[0].id).toBe(created.id);
618
- expect(searchResult.results[0].type).toBe('observation');
619
- });
620
- it('should set sourceType and project', async () => {
621
- const { observeBrain, fetchBrainEntries } = await import('../brain-retrieval.js');
622
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
623
- const { resetFts5Cache } = await import('../brain-search.js');
624
- closeBrainDb();
625
- resetFts5Cache();
626
- const result = await observeBrain(tempDir, {
627
- text: 'Observation with metadata',
628
- sourceType: 'session-debrief',
629
- project: 'cleo',
630
- sourceSessionId: 'S-123',
631
- });
632
- const fetched = await fetchBrainEntries(tempDir, { ids: [result.id] });
633
- expect(fetched.results).toHaveLength(1);
634
- const data = fetched.results[0].data;
635
- expect(data['sourceType']).toBe('session-debrief');
636
- expect(data['project']).toBe('cleo');
637
- expect(data['sourceSessionId']).toBe('S-123');
638
- });
639
- });
640
- // ==========================================================================
641
- // Integration: search -> timeline -> fetch
642
- // ==========================================================================
643
- describe('3-layer integration', () => {
644
- it('should flow: search -> timeline -> fetch', async () => {
645
- const { searchBrainCompact, timelineBrain, fetchBrainEntries } = await import('../brain-retrieval.js');
646
- const { closeBrainDb } = await import('../../store/brain-sqlite.js');
647
- const { resetFts5Cache } = await import('../brain-search.js');
648
- const { getBrainAccessor } = await import('../../store/brain-accessor.js');
649
- closeBrainDb();
650
- resetFts5Cache();
651
- const accessor = await getBrainAccessor(tempDir);
652
- // Seed data
653
- await accessor.addDecision({
654
- id: 'D001',
655
- type: 'architecture',
656
- decision: 'Integration test architecture decision',
657
- rationale: 'Testing 3-layer flow',
658
- confidence: 'high',
659
- createdAt: '2026-01-15 10:00:00',
660
- });
661
- await accessor.addPattern({
662
- id: 'P001',
663
- type: 'workflow',
664
- pattern: 'Integration test workflow pattern',
665
- context: '3-layer retrieval',
666
- frequency: 1,
667
- extractedAt: '2026-02-01 10:00:00',
668
- });
669
- await accessor.addLearning({
670
- id: 'L001',
671
- insight: 'Integration test learning insight',
672
- source: 'T5131',
673
- confidence: 0.9,
674
- actionable: true,
675
- createdAt: '2026-03-01 10:00:00',
676
- });
677
- // Layer 1: Search
678
- const searchResult = await searchBrainCompact(tempDir, { query: 'integration test' });
679
- expect(searchResult.results.length).toBeGreaterThan(0);
680
- // Layer 2: Timeline around first result
681
- const firstHit = searchResult.results[0];
682
- const timelineResult = await timelineBrain(tempDir, {
683
- anchor: firstHit.id,
684
- depthBefore: 5,
685
- depthAfter: 5,
686
- });
687
- expect(timelineResult.anchor).not.toBeNull();
688
- // Layer 3: Fetch full details for anchor + neighbors
689
- const allIds = [
690
- timelineResult.anchor.id,
691
- ...timelineResult.before.map((e) => e.id),
692
- ...timelineResult.after.map((e) => e.id),
693
- ];
694
- const fetchResult = await fetchBrainEntries(tempDir, { ids: allIds });
695
- expect(fetchResult.results.length).toBeGreaterThan(0);
696
- expect(fetchResult.notFound).toHaveLength(0);
697
- expect(fetchResult.tokensEstimated).toBe(fetchResult.results.length * 500);
698
- });
699
- });
700
- });
701
- //# sourceMappingURL=brain-retrieval.test.js.map