@cleocode/core 2026.4.6 → 2026.4.9

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 (647) hide show
  1. package/package.json +7 -7
  2. package/dist/cant/approval.d.ts +0 -110
  3. package/dist/cant/approval.d.ts.map +0 -1
  4. package/dist/cant/context-builder.d.ts +0 -79
  5. package/dist/cant/context-builder.d.ts.map +0 -1
  6. package/dist/cant/discretion.d.ts +0 -95
  7. package/dist/cant/discretion.d.ts.map +0 -1
  8. package/dist/cant/index.d.ts +0 -25
  9. package/dist/cant/index.d.ts.map +0 -1
  10. package/dist/cant/parallel-runner.d.ts +0 -38
  11. package/dist/cant/parallel-runner.d.ts.map +0 -1
  12. package/dist/cant/types.d.ts +0 -127
  13. package/dist/cant/types.d.ts.map +0 -1
  14. package/dist/cant/workflow-executor.d.ts +0 -105
  15. package/dist/cant/workflow-executor.d.ts.map +0 -1
  16. package/src/__tests__/audit-prune.test.d.ts.map +0 -1
  17. package/src/__tests__/audit-prune.test.js +0 -162
  18. package/src/__tests__/audit-prune.test.js.map +0 -1
  19. package/src/__tests__/caamp-skill-install.test.d.ts.map +0 -1
  20. package/src/__tests__/caamp-skill-install.test.js +0 -147
  21. package/src/__tests__/caamp-skill-install.test.js.map +0 -1
  22. package/src/__tests__/cli-parity.test.d.ts.map +0 -1
  23. package/src/__tests__/cli-parity.test.js +0 -209
  24. package/src/__tests__/cli-parity.test.js.map +0 -1
  25. package/src/__tests__/config.test.d.ts.map +0 -1
  26. package/src/__tests__/config.test.js +0 -144
  27. package/src/__tests__/config.test.js.map +0 -1
  28. package/src/__tests__/core-parity.test.d.ts.map +0 -1
  29. package/src/__tests__/core-parity.test.js +0 -645
  30. package/src/__tests__/core-parity.test.js.map +0 -1
  31. package/src/__tests__/error-catalog.test.d.ts.map +0 -1
  32. package/src/__tests__/error-catalog.test.js +0 -127
  33. package/src/__tests__/error-catalog.test.js.map +0 -1
  34. package/src/__tests__/golden-parity.test.d.ts.map +0 -1
  35. package/src/__tests__/golden-parity.test.js +0 -212
  36. package/src/__tests__/golden-parity.test.js.map +0 -1
  37. package/src/__tests__/hooks.test.d.ts.map +0 -1
  38. package/src/__tests__/hooks.test.js +0 -201
  39. package/src/__tests__/hooks.test.js.map +0 -1
  40. package/src/__tests__/human-output.test.d.ts.map +0 -1
  41. package/src/__tests__/human-output.test.js +0 -158
  42. package/src/__tests__/human-output.test.js.map +0 -1
  43. package/src/__tests__/index-api-compat.test.d.ts.map +0 -1
  44. package/src/__tests__/index-api-compat.test.js +0 -16
  45. package/src/__tests__/index-api-compat.test.js.map +0 -1
  46. package/src/__tests__/init-e2e.test.d.ts.map +0 -1
  47. package/src/__tests__/init-e2e.test.js +0 -221
  48. package/src/__tests__/init-e2e.test.js.map +0 -1
  49. package/src/__tests__/injection-chain.test.d.ts.map +0 -1
  50. package/src/__tests__/injection-chain.test.js +0 -234
  51. package/src/__tests__/injection-chain.test.js.map +0 -1
  52. package/src/__tests__/injection-mvi-tiers.test.d.ts.map +0 -1
  53. package/src/__tests__/injection-mvi-tiers.test.js +0 -116
  54. package/src/__tests__/injection-mvi-tiers.test.js.map +0 -1
  55. package/src/__tests__/injection-shared.test.d.ts.map +0 -1
  56. package/src/__tests__/injection-shared.test.js +0 -194
  57. package/src/__tests__/injection-shared.test.js.map +0 -1
  58. package/src/__tests__/lafs-conformance.test.d.ts.map +0 -1
  59. package/src/__tests__/lafs-conformance.test.js +0 -786
  60. package/src/__tests__/lafs-conformance.test.js.map +0 -1
  61. package/src/__tests__/logger.test.d.ts.map +0 -1
  62. package/src/__tests__/logger.test.js +0 -75
  63. package/src/__tests__/logger.test.js.map +0 -1
  64. package/src/__tests__/paths.test.d.ts.map +0 -1
  65. package/src/__tests__/paths.test.js +0 -327
  66. package/src/__tests__/paths.test.js.map +0 -1
  67. package/src/__tests__/project-info.test.d.ts.map +0 -1
  68. package/src/__tests__/project-info.test.js +0 -156
  69. package/src/__tests__/project-info.test.js.map +0 -1
  70. package/src/__tests__/rcsd-pipeline-e2e.test.d.ts.map +0 -1
  71. package/src/__tests__/rcsd-pipeline-e2e.test.js +0 -263
  72. package/src/__tests__/rcsd-pipeline-e2e.test.js.map +0 -1
  73. package/src/__tests__/remote.test.d.ts.map +0 -1
  74. package/src/__tests__/remote.test.js +0 -149
  75. package/src/__tests__/remote.test.js.map +0 -1
  76. package/src/__tests__/scaffold.test.d.ts.map +0 -1
  77. package/src/__tests__/scaffold.test.js +0 -474
  78. package/src/__tests__/scaffold.test.js.map +0 -1
  79. package/src/__tests__/schema-management.test.d.ts.map +0 -1
  80. package/src/__tests__/schema-management.test.js +0 -287
  81. package/src/__tests__/schema-management.test.js.map +0 -1
  82. package/src/__tests__/schema.test.d.ts.map +0 -1
  83. package/src/__tests__/schema.test.js +0 -51
  84. package/src/__tests__/schema.test.js.map +0 -1
  85. package/src/__tests__/sharing.test.d.ts.map +0 -1
  86. package/src/__tests__/sharing.test.js +0 -160
  87. package/src/__tests__/sharing.test.js.map +0 -1
  88. package/src/__tests__/snapshot.test.d.ts.map +0 -1
  89. package/src/__tests__/snapshot.test.js +0 -72
  90. package/src/__tests__/snapshot.test.js.map +0 -1
  91. package/src/__tests__/upgrade.test.d.ts.map +0 -1
  92. package/src/__tests__/upgrade.test.js +0 -321
  93. package/src/__tests__/upgrade.test.js.map +0 -1
  94. package/src/adapters/__tests__/discovery.test.d.ts.map +0 -1
  95. package/src/adapters/__tests__/discovery.test.js +0 -56
  96. package/src/adapters/__tests__/discovery.test.js.map +0 -1
  97. package/src/adapters/__tests__/manager.test.d.ts.map +0 -1
  98. package/src/adapters/__tests__/manager.test.js +0 -260
  99. package/src/adapters/__tests__/manager.test.js.map +0 -1
  100. package/src/agents/__tests__/agent-registry.test.d.ts.map +0 -1
  101. package/src/agents/__tests__/agent-registry.test.js +0 -262
  102. package/src/agents/__tests__/agent-registry.test.js.map +0 -1
  103. package/src/agents/__tests__/capacity.test.d.ts.map +0 -1
  104. package/src/agents/__tests__/capacity.test.js +0 -173
  105. package/src/agents/__tests__/capacity.test.js.map +0 -1
  106. package/src/agents/__tests__/execution-learning.test.d.ts.map +0 -1
  107. package/src/agents/__tests__/execution-learning.test.js +0 -533
  108. package/src/agents/__tests__/execution-learning.test.js.map +0 -1
  109. package/src/agents/__tests__/health-monitor.test.d.ts.map +0 -1
  110. package/src/agents/__tests__/health-monitor.test.js +0 -259
  111. package/src/agents/__tests__/health-monitor.test.js.map +0 -1
  112. package/src/agents/__tests__/registry.test.d.ts.map +0 -1
  113. package/src/agents/__tests__/registry.test.js +0 -373
  114. package/src/agents/__tests__/registry.test.js.map +0 -1
  115. package/src/agents/__tests__/retry.test.d.ts.map +0 -1
  116. package/src/agents/__tests__/retry.test.js +0 -225
  117. package/src/agents/__tests__/retry.test.js.map +0 -1
  118. package/src/cant/__tests__/cant-agent-parse.test.d.ts.map +0 -1
  119. package/src/cant/__tests__/cant-agent-parse.test.js +0 -77
  120. package/src/cant/__tests__/cant-agent-parse.test.js.map +0 -1
  121. package/src/cant/__tests__/cant-agent-parse.test.ts +0 -94
  122. package/src/cant/approval.ts +0 -218
  123. package/src/cant/context-builder.ts +0 -135
  124. package/src/cant/discretion.ts +0 -149
  125. package/src/cant/index.ts +0 -58
  126. package/src/cant/parallel-runner.ts +0 -205
  127. package/src/cant/types.ts +0 -158
  128. package/src/cant/workflow-executor.ts +0 -618
  129. package/src/compliance/__tests__/sync.test.d.ts.map +0 -1
  130. package/src/compliance/__tests__/sync.test.js +0 -119
  131. package/src/compliance/__tests__/sync.test.js.map +0 -1
  132. package/src/conduit/__tests__/local-credential-flow.test.d.ts.map +0 -1
  133. package/src/conduit/__tests__/local-credential-flow.test.js +0 -185
  134. package/src/conduit/__tests__/local-credential-flow.test.js.map +0 -1
  135. package/src/conduit/__tests__/local-transport.test.d.ts.map +0 -1
  136. package/src/conduit/__tests__/local-transport.test.js +0 -404
  137. package/src/conduit/__tests__/local-transport.test.js.map +0 -1
  138. package/src/conduit/__tests__/sse-transport.test.d.ts.map +0 -1
  139. package/src/conduit/__tests__/sse-transport.test.js +0 -291
  140. package/src/conduit/__tests__/sse-transport.test.js.map +0 -1
  141. package/src/hooks/__tests__/provider-hooks.test.d.ts.map +0 -1
  142. package/src/hooks/__tests__/provider-hooks.test.js +0 -33
  143. package/src/hooks/__tests__/provider-hooks.test.js.map +0 -1
  144. package/src/hooks/__tests__/registry.test.d.ts.map +0 -1
  145. package/src/hooks/__tests__/registry.test.js +0 -37
  146. package/src/hooks/__tests__/registry.test.js.map +0 -1
  147. package/src/hooks/handlers/__tests__/error-hooks.test.d.ts.map +0 -1
  148. package/src/hooks/handlers/__tests__/error-hooks.test.js +0 -90
  149. package/src/hooks/handlers/__tests__/error-hooks.test.js.map +0 -1
  150. package/src/hooks/handlers/__tests__/file-hooks.test.d.ts.map +0 -1
  151. package/src/hooks/handlers/__tests__/file-hooks.test.js +0 -128
  152. package/src/hooks/handlers/__tests__/file-hooks.test.js.map +0 -1
  153. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.d.ts.map +0 -1
  154. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.js +0 -503
  155. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.js.map +0 -1
  156. package/src/hooks/handlers/__tests__/session-hooks.test.d.ts.map +0 -1
  157. package/src/hooks/handlers/__tests__/session-hooks.test.js +0 -54
  158. package/src/hooks/handlers/__tests__/session-hooks.test.js.map +0 -1
  159. package/src/hooks/handlers/__tests__/task-hooks.test.d.ts.map +0 -1
  160. package/src/hooks/handlers/__tests__/task-hooks.test.js +0 -77
  161. package/src/hooks/handlers/__tests__/task-hooks.test.js.map +0 -1
  162. package/src/intelligence/__tests__/adaptive-validation.test.d.ts.map +0 -1
  163. package/src/intelligence/__tests__/adaptive-validation.test.js +0 -517
  164. package/src/intelligence/__tests__/adaptive-validation.test.js.map +0 -1
  165. package/src/intelligence/__tests__/impact.test.d.ts.map +0 -1
  166. package/src/intelligence/__tests__/impact.test.js +0 -515
  167. package/src/intelligence/__tests__/impact.test.js.map +0 -1
  168. package/src/intelligence/__tests__/patterns.test.d.ts.map +0 -1
  169. package/src/intelligence/__tests__/patterns.test.js +0 -370
  170. package/src/intelligence/__tests__/patterns.test.js.map +0 -1
  171. package/src/intelligence/__tests__/prediction.test.d.ts.map +0 -1
  172. package/src/intelligence/__tests__/prediction.test.js +0 -314
  173. package/src/intelligence/__tests__/prediction.test.js.map +0 -1
  174. package/src/lib/__tests__/retry.test.d.ts.map +0 -1
  175. package/src/lib/__tests__/retry.test.js +0 -225
  176. package/src/lib/__tests__/retry.test.js.map +0 -1
  177. package/src/lifecycle/__tests__/chain-store.test.d.ts.map +0 -1
  178. package/src/lifecycle/__tests__/chain-store.test.js +0 -243
  179. package/src/lifecycle/__tests__/chain-store.test.js.map +0 -1
  180. package/src/lifecycle/__tests__/consolidate-rcasd.test.d.ts.map +0 -1
  181. package/src/lifecycle/__tests__/consolidate-rcasd.test.js +0 -210
  182. package/src/lifecycle/__tests__/consolidate-rcasd.test.js.map +0 -1
  183. package/src/lifecycle/__tests__/default-chain.test.d.ts.map +0 -1
  184. package/src/lifecycle/__tests__/default-chain.test.js +0 -74
  185. package/src/lifecycle/__tests__/default-chain.test.js.map +0 -1
  186. package/src/lifecycle/__tests__/frontmatter.test.d.ts.map +0 -1
  187. package/src/lifecycle/__tests__/frontmatter.test.js +0 -229
  188. package/src/lifecycle/__tests__/frontmatter.test.js.map +0 -1
  189. package/src/lifecycle/__tests__/lifecycle.test.d.ts.map +0 -1
  190. package/src/lifecycle/__tests__/lifecycle.test.js +0 -126
  191. package/src/lifecycle/__tests__/lifecycle.test.js.map +0 -1
  192. package/src/lifecycle/__tests__/pipeline.integration.test.d.ts.map +0 -1
  193. package/src/lifecycle/__tests__/pipeline.integration.test.js +0 -977
  194. package/src/lifecycle/__tests__/pipeline.integration.test.js.map +0 -1
  195. package/src/lifecycle/__tests__/rcasd-paths.test.d.ts.map +0 -1
  196. package/src/lifecycle/__tests__/rcasd-paths.test.js +0 -206
  197. package/src/lifecycle/__tests__/rcasd-paths.test.js.map +0 -1
  198. package/src/lifecycle/__tests__/resume-schema-contract.test.d.ts.map +0 -1
  199. package/src/lifecycle/__tests__/resume-schema-contract.test.js +0 -246
  200. package/src/lifecycle/__tests__/resume-schema-contract.test.js.map +0 -1
  201. package/src/lifecycle/__tests__/stage-record-provenance.integration.test.d.ts.map +0 -1
  202. package/src/lifecycle/__tests__/stage-record-provenance.integration.test.js +0 -95
  203. package/src/lifecycle/__tests__/stage-record-provenance.integration.test.js.map +0 -1
  204. package/src/lifecycle/__tests__/tessera-engine.test.d.ts.map +0 -1
  205. package/src/lifecycle/__tests__/tessera-engine.test.js +0 -392
  206. package/src/lifecycle/__tests__/tessera-engine.test.js.map +0 -1
  207. package/src/memory/__tests__/auto-extract.test.d.ts.map +0 -1
  208. package/src/memory/__tests__/auto-extract.test.js +0 -197
  209. package/src/memory/__tests__/auto-extract.test.js.map +0 -1
  210. package/src/memory/__tests__/brain-automation.test.d.ts.map +0 -1
  211. package/src/memory/__tests__/brain-automation.test.js +0 -730
  212. package/src/memory/__tests__/brain-automation.test.js.map +0 -1
  213. package/src/memory/__tests__/brain-embedding.test.d.ts.map +0 -1
  214. package/src/memory/__tests__/brain-embedding.test.js +0 -92
  215. package/src/memory/__tests__/brain-embedding.test.js.map +0 -1
  216. package/src/memory/__tests__/brain-links.test.d.ts.map +0 -1
  217. package/src/memory/__tests__/brain-links.test.js +0 -221
  218. package/src/memory/__tests__/brain-links.test.js.map +0 -1
  219. package/src/memory/__tests__/brain-migration.test.d.ts.map +0 -1
  220. package/src/memory/__tests__/brain-migration.test.js +0 -180
  221. package/src/memory/__tests__/brain-migration.test.js.map +0 -1
  222. package/src/memory/__tests__/brain-retrieval.test.d.ts.map +0 -1
  223. package/src/memory/__tests__/brain-retrieval.test.js +0 -701
  224. package/src/memory/__tests__/brain-retrieval.test.js.map +0 -1
  225. package/src/memory/__tests__/brain-search.test.d.ts.map +0 -1
  226. package/src/memory/__tests__/brain-search.test.js +0 -180
  227. package/src/memory/__tests__/brain-search.test.js.map +0 -1
  228. package/src/memory/__tests__/claude-mem-migration.test.d.ts.map +0 -1
  229. package/src/memory/__tests__/claude-mem-migration.test.js +0 -424
  230. package/src/memory/__tests__/claude-mem-migration.test.js.map +0 -1
  231. package/src/memory/__tests__/decisions.test.d.ts.map +0 -1
  232. package/src/memory/__tests__/decisions.test.js +0 -253
  233. package/src/memory/__tests__/decisions.test.js.map +0 -1
  234. package/src/memory/__tests__/engine-compat.test.d.ts.map +0 -1
  235. package/src/memory/__tests__/engine-compat.test.js +0 -331
  236. package/src/memory/__tests__/engine-compat.test.js.map +0 -1
  237. package/src/memory/__tests__/memory-bridge.test.d.ts.map +0 -1
  238. package/src/memory/__tests__/memory-bridge.test.js +0 -231
  239. package/src/memory/__tests__/memory-bridge.test.js.map +0 -1
  240. package/src/memory/__tests__/pipeline-manifest-sqlite.test.d.ts.map +0 -1
  241. package/src/memory/__tests__/pipeline-manifest-sqlite.test.js +0 -516
  242. package/src/memory/__tests__/pipeline-manifest-sqlite.test.js.map +0 -1
  243. package/src/memory/__tests__/session-memory.test.d.ts.map +0 -1
  244. package/src/memory/__tests__/session-memory.test.js +0 -387
  245. package/src/memory/__tests__/session-memory.test.js.map +0 -1
  246. package/src/metrics/__tests__/model-provider-registry.test.d.ts.map +0 -1
  247. package/src/metrics/__tests__/model-provider-registry.test.js +0 -45
  248. package/src/metrics/__tests__/model-provider-registry.test.js.map +0 -1
  249. package/src/metrics/__tests__/provider-detection.test.d.ts.map +0 -1
  250. package/src/metrics/__tests__/provider-detection.test.js +0 -123
  251. package/src/metrics/__tests__/provider-detection.test.js.map +0 -1
  252. package/src/migration/__tests__/checksum.test.d.ts.map +0 -1
  253. package/src/migration/__tests__/checksum.test.js +0 -216
  254. package/src/migration/__tests__/checksum.test.js.map +0 -1
  255. package/src/migration/__tests__/logger.test.d.ts.map +0 -1
  256. package/src/migration/__tests__/logger.test.js +0 -256
  257. package/src/migration/__tests__/logger.test.js.map +0 -1
  258. package/src/migration/__tests__/migration-failure.integration.test.d.ts.map +0 -1
  259. package/src/migration/__tests__/migration-failure.integration.test.js +0 -515
  260. package/src/migration/__tests__/migration-failure.integration.test.js.map +0 -1
  261. package/src/migration/__tests__/migration.test.d.ts.map +0 -1
  262. package/src/migration/__tests__/migration.test.js +0 -82
  263. package/src/migration/__tests__/migration.test.js.map +0 -1
  264. package/src/migration/__tests__/state.test.d.ts.map +0 -1
  265. package/src/migration/__tests__/state.test.js +0 -330
  266. package/src/migration/__tests__/state.test.js.map +0 -1
  267. package/src/migration/__tests__/validate.test.d.ts.map +0 -1
  268. package/src/migration/__tests__/validate.test.js +0 -258
  269. package/src/migration/__tests__/validate.test.js.map +0 -1
  270. package/src/nexus/__tests__/deps.test.d.ts.map +0 -1
  271. package/src/nexus/__tests__/deps.test.js +0 -283
  272. package/src/nexus/__tests__/deps.test.js.map +0 -1
  273. package/src/nexus/__tests__/nexus-e2e.test.d.ts.map +0 -1
  274. package/src/nexus/__tests__/nexus-e2e.test.js +0 -1220
  275. package/src/nexus/__tests__/nexus-e2e.test.js.map +0 -1
  276. package/src/nexus/__tests__/permissions.test.d.ts.map +0 -1
  277. package/src/nexus/__tests__/permissions.test.js +0 -119
  278. package/src/nexus/__tests__/permissions.test.js.map +0 -1
  279. package/src/nexus/__tests__/query.test.d.ts.map +0 -1
  280. package/src/nexus/__tests__/query.test.js +0 -168
  281. package/src/nexus/__tests__/query.test.js.map +0 -1
  282. package/src/nexus/__tests__/reconcile.test.d.ts.map +0 -1
  283. package/src/nexus/__tests__/reconcile.test.js +0 -135
  284. package/src/nexus/__tests__/reconcile.test.js.map +0 -1
  285. package/src/nexus/__tests__/registry.test.d.ts.map +0 -1
  286. package/src/nexus/__tests__/registry.test.js +0 -229
  287. package/src/nexus/__tests__/registry.test.js.map +0 -1
  288. package/src/nexus/__tests__/transfer.test.d.ts.map +0 -1
  289. package/src/nexus/__tests__/transfer.test.js +0 -372
  290. package/src/nexus/__tests__/transfer.test.js.map +0 -1
  291. package/src/observability/__tests__/index.test.d.ts.map +0 -1
  292. package/src/observability/__tests__/index.test.js +0 -288
  293. package/src/observability/__tests__/index.test.js.map +0 -1
  294. package/src/observability/__tests__/log-filter.test.d.ts.map +0 -1
  295. package/src/observability/__tests__/log-filter.test.js +0 -151
  296. package/src/observability/__tests__/log-filter.test.js.map +0 -1
  297. package/src/observability/__tests__/log-parser.test.d.ts.map +0 -1
  298. package/src/observability/__tests__/log-parser.test.js +0 -170
  299. package/src/observability/__tests__/log-parser.test.js.map +0 -1
  300. package/src/observability/__tests__/log-reader.test.d.ts.map +0 -1
  301. package/src/observability/__tests__/log-reader.test.js +0 -150
  302. package/src/observability/__tests__/log-reader.test.js.map +0 -1
  303. package/src/orchestration/__tests__/autonomous-spec.test.d.ts.map +0 -1
  304. package/src/orchestration/__tests__/autonomous-spec.test.js +0 -419
  305. package/src/orchestration/__tests__/autonomous-spec.test.js.map +0 -1
  306. package/src/orchestration/__tests__/orchestration.test.d.ts.map +0 -1
  307. package/src/orchestration/__tests__/orchestration.test.js +0 -205
  308. package/src/orchestration/__tests__/orchestration.test.js.map +0 -1
  309. package/src/orchestration/__tests__/protocol-validators.test.d.ts.map +0 -1
  310. package/src/orchestration/__tests__/protocol-validators.test.js +0 -602
  311. package/src/orchestration/__tests__/protocol-validators.test.js.map +0 -1
  312. package/src/phases/__tests__/deps.test.d.ts.map +0 -1
  313. package/src/phases/__tests__/deps.test.js +0 -210
  314. package/src/phases/__tests__/deps.test.js.map +0 -1
  315. package/src/phases/__tests__/phases.test.d.ts.map +0 -1
  316. package/src/phases/__tests__/phases.test.js +0 -215
  317. package/src/phases/__tests__/phases.test.js.map +0 -1
  318. package/src/release/__tests__/artifacts.test.d.ts.map +0 -1
  319. package/src/release/__tests__/artifacts.test.js +0 -65
  320. package/src/release/__tests__/artifacts.test.js.map +0 -1
  321. package/src/release/__tests__/cancel-release.test.d.ts.map +0 -1
  322. package/src/release/__tests__/cancel-release.test.js +0 -154
  323. package/src/release/__tests__/cancel-release.test.js.map +0 -1
  324. package/src/release/__tests__/changelog-writer.test.d.ts.map +0 -1
  325. package/src/release/__tests__/changelog-writer.test.js +0 -132
  326. package/src/release/__tests__/changelog-writer.test.js.map +0 -1
  327. package/src/release/__tests__/push-policy.test.d.ts.map +0 -1
  328. package/src/release/__tests__/push-policy.test.js +0 -142
  329. package/src/release/__tests__/push-policy.test.js.map +0 -1
  330. package/src/release/__tests__/release.test.d.ts.map +0 -1
  331. package/src/release/__tests__/release.test.js +0 -25
  332. package/src/release/__tests__/release.test.js.map +0 -1
  333. package/src/sequence/__tests__/allocate.test.d.ts.map +0 -1
  334. package/src/sequence/__tests__/allocate.test.js +0 -113
  335. package/src/sequence/__tests__/allocate.test.js.map +0 -1
  336. package/src/sessions/__tests__/briefing-blocked.test.d.ts.map +0 -1
  337. package/src/sessions/__tests__/briefing-blocked.test.js +0 -117
  338. package/src/sessions/__tests__/briefing-blocked.test.js.map +0 -1
  339. package/src/sessions/__tests__/briefing.test.d.ts.map +0 -1
  340. package/src/sessions/__tests__/briefing.test.js +0 -336
  341. package/src/sessions/__tests__/briefing.test.js.map +0 -1
  342. package/src/sessions/__tests__/handoff-integration.test.d.ts.map +0 -1
  343. package/src/sessions/__tests__/handoff-integration.test.js +0 -264
  344. package/src/sessions/__tests__/handoff-integration.test.js.map +0 -1
  345. package/src/sessions/__tests__/handoff.test.d.ts.map +0 -1
  346. package/src/sessions/__tests__/handoff.test.js +0 -435
  347. package/src/sessions/__tests__/handoff.test.js.map +0 -1
  348. package/src/sessions/__tests__/index.test.d.ts.map +0 -1
  349. package/src/sessions/__tests__/index.test.js +0 -82
  350. package/src/sessions/__tests__/index.test.js.map +0 -1
  351. package/src/sessions/__tests__/session-cleanup.test.d.ts.map +0 -1
  352. package/src/sessions/__tests__/session-cleanup.test.js +0 -201
  353. package/src/sessions/__tests__/session-cleanup.test.js.map +0 -1
  354. package/src/sessions/__tests__/session-edge-cases.test.d.ts.map +0 -1
  355. package/src/sessions/__tests__/session-edge-cases.test.js +0 -251
  356. package/src/sessions/__tests__/session-edge-cases.test.js.map +0 -1
  357. package/src/sessions/__tests__/session-find.test.d.ts.map +0 -1
  358. package/src/sessions/__tests__/session-find.test.js +0 -210
  359. package/src/sessions/__tests__/session-find.test.js.map +0 -1
  360. package/src/sessions/__tests__/session-grade.integration.test.d.ts.map +0 -1
  361. package/src/sessions/__tests__/session-grade.integration.test.js +0 -287
  362. package/src/sessions/__tests__/session-grade.integration.test.js.map +0 -1
  363. package/src/sessions/__tests__/session-grade.test.d.ts.map +0 -1
  364. package/src/sessions/__tests__/session-grade.test.js +0 -630
  365. package/src/sessions/__tests__/session-grade.test.js.map +0 -1
  366. package/src/sessions/__tests__/session-memory-bridge.test.d.ts.map +0 -1
  367. package/src/sessions/__tests__/session-memory-bridge.test.js +0 -52
  368. package/src/sessions/__tests__/session-memory-bridge.test.js.map +0 -1
  369. package/src/sessions/__tests__/sessions.test.d.ts.map +0 -1
  370. package/src/sessions/__tests__/sessions.test.js +0 -113
  371. package/src/sessions/__tests__/sessions.test.js.map +0 -1
  372. package/src/skills/__tests__/discovery.test.d.ts.map +0 -1
  373. package/src/skills/__tests__/discovery.test.js +0 -171
  374. package/src/skills/__tests__/discovery.test.js.map +0 -1
  375. package/src/skills/__tests__/dispatch.test.d.ts.map +0 -1
  376. package/src/skills/__tests__/dispatch.test.js +0 -99
  377. package/src/skills/__tests__/dispatch.test.js.map +0 -1
  378. package/src/skills/__tests__/dynamic-skill-generator.test.d.ts.map +0 -1
  379. package/src/skills/__tests__/dynamic-skill-generator.test.js +0 -77
  380. package/src/skills/__tests__/dynamic-skill-generator.test.js.map +0 -1
  381. package/src/skills/__tests__/manifests.test.d.ts.map +0 -1
  382. package/src/skills/__tests__/manifests.test.js +0 -121
  383. package/src/skills/__tests__/manifests.test.js.map +0 -1
  384. package/src/skills/__tests__/precedence.test.d.ts.map +0 -1
  385. package/src/skills/__tests__/precedence.test.js +0 -325
  386. package/src/skills/__tests__/precedence.test.js.map +0 -1
  387. package/src/skills/__tests__/routing-table.test.d.ts.map +0 -1
  388. package/src/skills/__tests__/routing-table.test.js +0 -91
  389. package/src/skills/__tests__/routing-table.test.js.map +0 -1
  390. package/src/skills/__tests__/skill-paths.test.d.ts.map +0 -1
  391. package/src/skills/__tests__/skill-paths.test.js +0 -71
  392. package/src/skills/__tests__/skill-paths.test.js.map +0 -1
  393. package/src/skills/__tests__/test-utility.test.d.ts.map +0 -1
  394. package/src/skills/__tests__/test-utility.test.js +0 -59
  395. package/src/skills/__tests__/test-utility.test.js.map +0 -1
  396. package/src/skills/__tests__/token.test.d.ts.map +0 -1
  397. package/src/skills/__tests__/token.test.js +0 -135
  398. package/src/skills/__tests__/token.test.js.map +0 -1
  399. package/src/skills/__tests__/validation.test.d.ts.map +0 -1
  400. package/src/skills/__tests__/validation.test.js +0 -108
  401. package/src/skills/__tests__/validation.test.js.map +0 -1
  402. package/src/skills/__tests__/version.test.d.ts.map +0 -1
  403. package/src/skills/__tests__/version.test.js +0 -71
  404. package/src/skills/__tests__/version.test.js.map +0 -1
  405. package/src/skills/injection/__tests__/subagent.test.d.ts.map +0 -1
  406. package/src/skills/injection/__tests__/subagent.test.js +0 -122
  407. package/src/skills/injection/__tests__/subagent.test.js.map +0 -1
  408. package/src/skills/orchestrator/__tests__/spawn-tier.test.d.ts.map +0 -1
  409. package/src/skills/orchestrator/__tests__/spawn-tier.test.js +0 -228
  410. package/src/skills/orchestrator/__tests__/spawn-tier.test.js.map +0 -1
  411. package/src/spawn/__tests__/adapter-registry.test.d.ts.map +0 -1
  412. package/src/spawn/__tests__/adapter-registry.test.js +0 -76
  413. package/src/spawn/__tests__/adapter-registry.test.js.map +0 -1
  414. package/src/stats/__tests__/stats.test.d.ts.map +0 -1
  415. package/src/stats/__tests__/stats.test.js +0 -374
  416. package/src/stats/__tests__/stats.test.js.map +0 -1
  417. package/src/sticky/__tests__/purge.test.d.ts.map +0 -1
  418. package/src/sticky/__tests__/purge.test.js +0 -64
  419. package/src/sticky/__tests__/purge.test.js.map +0 -1
  420. package/src/store/__tests__/atomic.test.d.ts.map +0 -1
  421. package/src/store/__tests__/atomic.test.js +0 -81
  422. package/src/store/__tests__/atomic.test.js.map +0 -1
  423. package/src/store/__tests__/backup.test.d.ts.map +0 -1
  424. package/src/store/__tests__/backup.test.js +0 -131
  425. package/src/store/__tests__/backup.test.js.map +0 -1
  426. package/src/store/__tests__/brain-accessor-pageindex.test.d.ts.map +0 -1
  427. package/src/store/__tests__/brain-accessor-pageindex.test.js +0 -179
  428. package/src/store/__tests__/brain-accessor-pageindex.test.js.map +0 -1
  429. package/src/store/__tests__/brain-accessor.test.d.ts.map +0 -1
  430. package/src/store/__tests__/brain-accessor.test.js +0 -398
  431. package/src/store/__tests__/brain-accessor.test.js.map +0 -1
  432. package/src/store/__tests__/brain-pageindex.test.d.ts.map +0 -1
  433. package/src/store/__tests__/brain-pageindex.test.js +0 -137
  434. package/src/store/__tests__/brain-pageindex.test.js.map +0 -1
  435. package/src/store/__tests__/brain-schema.test.d.ts.map +0 -1
  436. package/src/store/__tests__/brain-schema.test.js +0 -137
  437. package/src/store/__tests__/brain-schema.test.js.map +0 -1
  438. package/src/store/__tests__/brain-vec.test.d.ts.map +0 -1
  439. package/src/store/__tests__/brain-vec.test.js +0 -100
  440. package/src/store/__tests__/brain-vec.test.js.map +0 -1
  441. package/src/store/__tests__/collision-detection.test.d.ts.map +0 -1
  442. package/src/store/__tests__/collision-detection.test.js +0 -165
  443. package/src/store/__tests__/collision-detection.test.js.map +0 -1
  444. package/src/store/__tests__/data-safety-central.test.d.ts.map +0 -1
  445. package/src/store/__tests__/data-safety-central.test.js +0 -408
  446. package/src/store/__tests__/data-safety-central.test.js.map +0 -1
  447. package/src/store/__tests__/db-helpers.test.d.ts.map +0 -1
  448. package/src/store/__tests__/db-helpers.test.js +0 -101
  449. package/src/store/__tests__/db-helpers.test.js.map +0 -1
  450. package/src/store/__tests__/e2e-safety-integration.test.d.ts.map +0 -1
  451. package/src/store/__tests__/e2e-safety-integration.test.js +0 -402
  452. package/src/store/__tests__/e2e-safety-integration.test.js.map +0 -1
  453. package/src/store/__tests__/git-checkpoint.test.d.ts.map +0 -1
  454. package/src/store/__tests__/git-checkpoint.test.js +0 -133
  455. package/src/store/__tests__/git-checkpoint.test.js.map +0 -1
  456. package/src/store/__tests__/idempotent-migration.test.d.ts.map +0 -1
  457. package/src/store/__tests__/idempotent-migration.test.js +0 -172
  458. package/src/store/__tests__/idempotent-migration.test.js.map +0 -1
  459. package/src/store/__tests__/import-logging.test.d.ts.map +0 -1
  460. package/src/store/__tests__/import-logging.test.js +0 -92
  461. package/src/store/__tests__/import-logging.test.js.map +0 -1
  462. package/src/store/__tests__/import-sort.test.d.ts.map +0 -1
  463. package/src/store/__tests__/import-sort.test.js +0 -109
  464. package/src/store/__tests__/import-sort.test.js.map +0 -1
  465. package/src/store/__tests__/json.test.d.ts.map +0 -1
  466. package/src/store/__tests__/json.test.js +0 -98
  467. package/src/store/__tests__/json.test.js.map +0 -1
  468. package/src/store/__tests__/lifecycle-schema-parity.test.d.ts.map +0 -1
  469. package/src/store/__tests__/lifecycle-schema-parity.test.js +0 -90
  470. package/src/store/__tests__/lifecycle-schema-parity.test.js.map +0 -1
  471. package/src/store/__tests__/migration-integration.test.d.ts.map +0 -1
  472. package/src/store/__tests__/migration-integration.test.js +0 -238
  473. package/src/store/__tests__/migration-integration.test.js.map +0 -1
  474. package/src/store/__tests__/migration-retry.test.d.ts.map +0 -1
  475. package/src/store/__tests__/migration-retry.test.js +0 -178
  476. package/src/store/__tests__/migration-retry.test.js.map +0 -1
  477. package/src/store/__tests__/migration-safety.test.d.ts.map +0 -1
  478. package/src/store/__tests__/migration-safety.test.js +0 -756
  479. package/src/store/__tests__/migration-safety.test.js.map +0 -1
  480. package/src/store/__tests__/migration-sqlite.test.d.ts.map +0 -1
  481. package/src/store/__tests__/migration-sqlite.test.js +0 -544
  482. package/src/store/__tests__/migration-sqlite.test.js.map +0 -1
  483. package/src/store/__tests__/performance-safety.test.d.ts.map +0 -1
  484. package/src/store/__tests__/performance-safety.test.js +0 -157
  485. package/src/store/__tests__/performance-safety.test.js.map +0 -1
  486. package/src/store/__tests__/project-detect.test.d.ts.map +0 -1
  487. package/src/store/__tests__/project-detect.test.js +0 -609
  488. package/src/store/__tests__/project-detect.test.js.map +0 -1
  489. package/src/store/__tests__/project-registry.test.d.ts.map +0 -1
  490. package/src/store/__tests__/project-registry.test.js +0 -28
  491. package/src/store/__tests__/project-registry.test.js.map +0 -1
  492. package/src/store/__tests__/provider.test.d.ts.map +0 -1
  493. package/src/store/__tests__/provider.test.js +0 -15
  494. package/src/store/__tests__/provider.test.js.map +0 -1
  495. package/src/store/__tests__/relations.test.d.ts.map +0 -1
  496. package/src/store/__tests__/relations.test.js +0 -318
  497. package/src/store/__tests__/relations.test.js.map +0 -1
  498. package/src/store/__tests__/safety-accessor.test.d.ts.map +0 -1
  499. package/src/store/__tests__/safety-accessor.test.js +0 -219
  500. package/src/store/__tests__/safety-accessor.test.js.map +0 -1
  501. package/src/store/__tests__/sequence-validation.test.d.ts.map +0 -1
  502. package/src/store/__tests__/sequence-validation.test.js +0 -94
  503. package/src/store/__tests__/sequence-validation.test.js.map +0 -1
  504. package/src/store/__tests__/session-store.test.d.ts.map +0 -1
  505. package/src/store/__tests__/session-store.test.js +0 -463
  506. package/src/store/__tests__/session-store.test.js.map +0 -1
  507. package/src/store/__tests__/sqlite-backup.test.d.ts.map +0 -1
  508. package/src/store/__tests__/sqlite-backup.test.js +0 -72
  509. package/src/store/__tests__/sqlite-backup.test.js.map +0 -1
  510. package/src/store/__tests__/sqlite.test.d.ts.map +0 -1
  511. package/src/store/__tests__/sqlite.test.js +0 -256
  512. package/src/store/__tests__/sqlite.test.js.map +0 -1
  513. package/src/store/__tests__/task-store.test.d.ts.map +0 -1
  514. package/src/store/__tests__/task-store.test.js +0 -514
  515. package/src/store/__tests__/task-store.test.js.map +0 -1
  516. package/src/store/__tests__/test-db-helper.d.ts.map +0 -1
  517. package/src/store/__tests__/test-db-helper.js +0 -110
  518. package/src/store/__tests__/test-db-helper.js.map +0 -1
  519. package/src/store/__tests__/write-verification.test.d.ts.map +0 -1
  520. package/src/store/__tests__/write-verification.test.js +0 -185
  521. package/src/store/__tests__/write-verification.test.js.map +0 -1
  522. package/src/system/__tests__/cleanup.test.d.ts.map +0 -1
  523. package/src/system/__tests__/cleanup.test.js +0 -87
  524. package/src/system/__tests__/cleanup.test.js.map +0 -1
  525. package/src/system/__tests__/health.test.d.ts.map +0 -1
  526. package/src/system/__tests__/health.test.js +0 -55
  527. package/src/system/__tests__/health.test.js.map +0 -1
  528. package/src/task-work/__tests__/start-deps.test.d.ts.map +0 -1
  529. package/src/task-work/__tests__/start-deps.test.js +0 -152
  530. package/src/task-work/__tests__/start-deps.test.js.map +0 -1
  531. package/src/tasks/__tests__/add.test.d.ts.map +0 -1
  532. package/src/tasks/__tests__/add.test.js +0 -226
  533. package/src/tasks/__tests__/add.test.js.map +0 -1
  534. package/src/tasks/__tests__/archive.test.d.ts.map +0 -1
  535. package/src/tasks/__tests__/archive.test.js +0 -196
  536. package/src/tasks/__tests__/archive.test.js.map +0 -1
  537. package/src/tasks/__tests__/assignee.test.d.ts.map +0 -1
  538. package/src/tasks/__tests__/assignee.test.js +0 -125
  539. package/src/tasks/__tests__/assignee.test.js.map +0 -1
  540. package/src/tasks/__tests__/atomicity.test.d.ts.map +0 -1
  541. package/src/tasks/__tests__/atomicity.test.js +0 -192
  542. package/src/tasks/__tests__/atomicity.test.js.map +0 -1
  543. package/src/tasks/__tests__/cancel-ops.test.d.ts.map +0 -1
  544. package/src/tasks/__tests__/cancel-ops.test.js +0 -115
  545. package/src/tasks/__tests__/cancel-ops.test.js.map +0 -1
  546. package/src/tasks/__tests__/complete-unblocks.test.d.ts.map +0 -1
  547. package/src/tasks/__tests__/complete-unblocks.test.js +0 -151
  548. package/src/tasks/__tests__/complete-unblocks.test.js.map +0 -1
  549. package/src/tasks/__tests__/complete.test.d.ts.map +0 -1
  550. package/src/tasks/__tests__/complete.test.js +0 -230
  551. package/src/tasks/__tests__/complete.test.js.map +0 -1
  552. package/src/tasks/__tests__/delete.test.d.ts.map +0 -1
  553. package/src/tasks/__tests__/delete.test.js +0 -183
  554. package/src/tasks/__tests__/delete.test.js.map +0 -1
  555. package/src/tasks/__tests__/dependency-check.test.d.ts.map +0 -1
  556. package/src/tasks/__tests__/dependency-check.test.js +0 -293
  557. package/src/tasks/__tests__/dependency-check.test.js.map +0 -1
  558. package/src/tasks/__tests__/deps-ready.test.d.ts.map +0 -1
  559. package/src/tasks/__tests__/deps-ready.test.js +0 -68
  560. package/src/tasks/__tests__/deps-ready.test.js.map +0 -1
  561. package/src/tasks/__tests__/epic-enforcement.test.d.ts.map +0 -1
  562. package/src/tasks/__tests__/epic-enforcement.test.js +0 -669
  563. package/src/tasks/__tests__/epic-enforcement.test.js.map +0 -1
  564. package/src/tasks/__tests__/find.test.d.ts.map +0 -1
  565. package/src/tasks/__tests__/find.test.js +0 -163
  566. package/src/tasks/__tests__/find.test.js.map +0 -1
  567. package/src/tasks/__tests__/graph-ops.test.d.ts.map +0 -1
  568. package/src/tasks/__tests__/graph-ops.test.js +0 -174
  569. package/src/tasks/__tests__/graph-ops.test.js.map +0 -1
  570. package/src/tasks/__tests__/hierarchy-policy.test.d.ts.map +0 -1
  571. package/src/tasks/__tests__/hierarchy-policy.test.js +0 -399
  572. package/src/tasks/__tests__/hierarchy-policy.test.js.map +0 -1
  573. package/src/tasks/__tests__/hierarchy.test.d.ts.map +0 -1
  574. package/src/tasks/__tests__/hierarchy.test.js +0 -302
  575. package/src/tasks/__tests__/hierarchy.test.js.map +0 -1
  576. package/src/tasks/__tests__/id-generator.test.d.ts.map +0 -1
  577. package/src/tasks/__tests__/id-generator.test.js +0 -59
  578. package/src/tasks/__tests__/id-generator.test.js.map +0 -1
  579. package/src/tasks/__tests__/labels.test.d.ts.map +0 -1
  580. package/src/tasks/__tests__/labels.test.js +0 -173
  581. package/src/tasks/__tests__/labels.test.js.map +0 -1
  582. package/src/tasks/__tests__/list.test.d.ts.map +0 -1
  583. package/src/tasks/__tests__/list.test.js +0 -272
  584. package/src/tasks/__tests__/list.test.js.map +0 -1
  585. package/src/tasks/__tests__/minimal-test.test.d.ts.map +0 -1
  586. package/src/tasks/__tests__/minimal-test.test.js +0 -25
  587. package/src/tasks/__tests__/minimal-test.test.js.map +0 -1
  588. package/src/tasks/__tests__/phase-tracking.test.d.ts.map +0 -1
  589. package/src/tasks/__tests__/phase-tracking.test.js +0 -209
  590. package/src/tasks/__tests__/phase-tracking.test.js.map +0 -1
  591. package/src/tasks/__tests__/pipeline-stage.test.d.ts.map +0 -1
  592. package/src/tasks/__tests__/pipeline-stage.test.js +0 -277
  593. package/src/tasks/__tests__/pipeline-stage.test.js.map +0 -1
  594. package/src/tasks/__tests__/plan-priority.test.d.ts.map +0 -1
  595. package/src/tasks/__tests__/plan-priority.test.js +0 -133
  596. package/src/tasks/__tests__/plan-priority.test.js.map +0 -1
  597. package/src/tasks/__tests__/priority-normalization.test.d.ts.map +0 -1
  598. package/src/tasks/__tests__/priority-normalization.test.js +0 -117
  599. package/src/tasks/__tests__/priority-normalization.test.js.map +0 -1
  600. package/src/tasks/__tests__/relates.test.d.ts.map +0 -1
  601. package/src/tasks/__tests__/relates.test.js +0 -84
  602. package/src/tasks/__tests__/relates.test.js.map +0 -1
  603. package/src/tasks/__tests__/show-deps.test.d.ts.map +0 -1
  604. package/src/tasks/__tests__/show-deps.test.js +0 -182
  605. package/src/tasks/__tests__/show-deps.test.js.map +0 -1
  606. package/src/tasks/__tests__/show.test.d.ts.map +0 -1
  607. package/src/tasks/__tests__/show.test.js +0 -126
  608. package/src/tasks/__tests__/show.test.js.map +0 -1
  609. package/src/tasks/__tests__/staleness.test.d.ts.map +0 -1
  610. package/src/tasks/__tests__/staleness.test.js +0 -154
  611. package/src/tasks/__tests__/staleness.test.js.map +0 -1
  612. package/src/tasks/__tests__/task-ops-depends.test.d.ts.map +0 -1
  613. package/src/tasks/__tests__/task-ops-depends.test.js +0 -118
  614. package/src/tasks/__tests__/task-ops-depends.test.js.map +0 -1
  615. package/src/tasks/__tests__/update.test.d.ts.map +0 -1
  616. package/src/tasks/__tests__/update.test.js +0 -320
  617. package/src/tasks/__tests__/update.test.js.map +0 -1
  618. package/src/validation/__tests__/chain-validation.test.d.ts.map +0 -1
  619. package/src/validation/__tests__/chain-validation.test.js +0 -204
  620. package/src/validation/__tests__/chain-validation.test.js.map +0 -1
  621. package/src/validation/__tests__/compliance.test.d.ts.map +0 -1
  622. package/src/validation/__tests__/compliance.test.js +0 -83
  623. package/src/validation/__tests__/compliance.test.js.map +0 -1
  624. package/src/validation/__tests__/docs-sync.test.d.ts.map +0 -1
  625. package/src/validation/__tests__/docs-sync.test.js +0 -243
  626. package/src/validation/__tests__/docs-sync.test.js.map +0 -1
  627. package/src/validation/__tests__/doctor-gitignore.test.d.ts.map +0 -1
  628. package/src/validation/__tests__/doctor-gitignore.test.js +0 -154
  629. package/src/validation/__tests__/doctor-gitignore.test.js.map +0 -1
  630. package/src/validation/__tests__/doctor-injection.test.d.ts.map +0 -1
  631. package/src/validation/__tests__/doctor-injection.test.js +0 -230
  632. package/src/validation/__tests__/doctor-injection.test.js.map +0 -1
  633. package/src/validation/__tests__/doctor.test.d.ts.map +0 -1
  634. package/src/validation/__tests__/doctor.test.js +0 -202
  635. package/src/validation/__tests__/doctor.test.js.map +0 -1
  636. package/src/validation/__tests__/engine.test.d.ts.map +0 -1
  637. package/src/validation/__tests__/engine.test.js +0 -346
  638. package/src/validation/__tests__/engine.test.js.map +0 -1
  639. package/src/validation/__tests__/manifest.test.d.ts.map +0 -1
  640. package/src/validation/__tests__/manifest.test.js +0 -244
  641. package/src/validation/__tests__/manifest.test.js.map +0 -1
  642. package/src/validation/__tests__/protocol-common.test.d.ts.map +0 -1
  643. package/src/validation/__tests__/protocol-common.test.js +0 -112
  644. package/src/validation/__tests__/protocol-common.test.js.map +0 -1
  645. package/src/validation/__tests__/verification.test.d.ts.map +0 -1
  646. package/src/validation/__tests__/verification.test.js +0 -277
  647. package/src/validation/__tests__/verification.test.js.map +0 -1
@@ -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