@cleocode/core 2026.3.58 → 2026.3.59

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 (857) hide show
  1. package/dist/agents/agent-registry.d.ts +206 -0
  2. package/dist/agents/agent-registry.d.ts.map +1 -0
  3. package/dist/agents/health-monitor.d.ts +161 -0
  4. package/dist/agents/health-monitor.d.ts.map +1 -0
  5. package/dist/agents/index.d.ts +3 -1
  6. package/dist/agents/index.d.ts.map +1 -1
  7. package/dist/agents/retry.d.ts +57 -4
  8. package/dist/agents/retry.d.ts.map +1 -1
  9. package/dist/backfill/index.d.ts +27 -0
  10. package/dist/backfill/index.d.ts.map +1 -1
  11. package/dist/index.d.ts +1 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +880 -506
  14. package/dist/index.js.map +4 -4
  15. package/dist/intelligence/impact.d.ts +34 -1
  16. package/dist/intelligence/impact.d.ts.map +1 -1
  17. package/dist/intelligence/index.d.ts +2 -2
  18. package/dist/intelligence/index.d.ts.map +1 -1
  19. package/dist/intelligence/types.d.ts +60 -0
  20. package/dist/intelligence/types.d.ts.map +1 -1
  21. package/dist/internal.d.ts +5 -4
  22. package/dist/internal.d.ts.map +1 -1
  23. package/dist/lib/index.d.ts +10 -0
  24. package/dist/lib/index.d.ts.map +1 -0
  25. package/dist/lib/retry.d.ts +128 -0
  26. package/dist/lib/retry.d.ts.map +1 -0
  27. package/dist/nexus/sharing/index.d.ts +48 -2
  28. package/dist/nexus/sharing/index.d.ts.map +1 -1
  29. package/dist/stats/workflow-telemetry.d.ts +15 -0
  30. package/dist/stats/workflow-telemetry.d.ts.map +1 -1
  31. package/dist/store/cross-db-cleanup.d.ts +35 -0
  32. package/dist/store/cross-db-cleanup.d.ts.map +1 -1
  33. package/dist/tasks/complete.d.ts.map +1 -1
  34. package/dist/tasks/enforcement.d.ts.map +1 -1
  35. package/dist/tasks/epic-enforcement.d.ts +61 -0
  36. package/dist/tasks/epic-enforcement.d.ts.map +1 -1
  37. package/dist/tasks/pipeline-stage.d.ts +70 -1
  38. package/dist/tasks/pipeline-stage.d.ts.map +1 -1
  39. package/package.json +5 -5
  40. package/schemas/config.schema.json +37 -1547
  41. package/src/__tests__/sharing.test.ts +24 -0
  42. package/src/agents/__tests__/agent-registry.test.ts +351 -0
  43. package/src/agents/__tests__/health-monitor.test.ts +332 -0
  44. package/src/agents/agent-registry.ts +394 -0
  45. package/src/agents/health-monitor.ts +279 -0
  46. package/src/agents/index.ts +24 -1
  47. package/src/agents/retry.ts +57 -4
  48. package/src/backfill/index.ts +27 -0
  49. package/src/config.ts +3 -3
  50. package/src/index.ts +1 -0
  51. package/src/intelligence/__tests__/impact.test.ts +165 -1
  52. package/src/intelligence/impact.ts +203 -0
  53. package/src/intelligence/index.ts +3 -0
  54. package/src/intelligence/types.ts +76 -0
  55. package/src/internal.ts +20 -0
  56. package/src/lib/__tests__/retry.test.ts +321 -0
  57. package/src/lib/index.ts +16 -0
  58. package/src/lib/retry.ts +224 -0
  59. package/src/nexus/sharing/index.ts +142 -2
  60. package/src/stats/workflow-telemetry.ts +15 -0
  61. package/src/store/__tests__/session-store.test.ts +43 -7
  62. package/src/store/__tests__/task-store.test.ts +1 -1
  63. package/src/store/__tests__/test-db-helper.ts +7 -3
  64. package/src/store/cross-db-cleanup.ts +35 -0
  65. package/src/tasks/__tests__/epic-enforcement.test.ts +9 -4
  66. package/src/tasks/__tests__/minimal-test.test.ts +2 -2
  67. package/src/tasks/__tests__/update.test.ts +25 -25
  68. package/src/tasks/complete.ts +11 -6
  69. package/src/tasks/enforcement.ts +6 -3
  70. package/src/tasks/epic-enforcement.ts +61 -0
  71. package/src/tasks/pipeline-stage.ts +70 -1
  72. package/templates/config.template.json +5 -116
  73. package/templates/global-config.template.json +2 -44
  74. package/dist/adapters/adapter-registry.js +0 -64
  75. package/dist/adapters/adapter-registry.js.map +0 -1
  76. package/dist/adapters/discovery.js +0 -83
  77. package/dist/adapters/discovery.js.map +0 -1
  78. package/dist/adapters/index.js +0 -9
  79. package/dist/adapters/index.js.map +0 -1
  80. package/dist/adapters/manager.js +0 -260
  81. package/dist/adapters/manager.js.map +0 -1
  82. package/dist/admin/export-tasks.js +0 -171
  83. package/dist/admin/export-tasks.js.map +0 -1
  84. package/dist/admin/export.js +0 -103
  85. package/dist/admin/export.js.map +0 -1
  86. package/dist/admin/help.js +0 -106
  87. package/dist/admin/help.js.map +0 -1
  88. package/dist/admin/import-tasks.js +0 -182
  89. package/dist/admin/import-tasks.js.map +0 -1
  90. package/dist/admin/import.js +0 -129
  91. package/dist/admin/import.js.map +0 -1
  92. package/dist/admin/index.js +0 -13
  93. package/dist/admin/index.js.map +0 -1
  94. package/dist/adrs/find.js +0 -134
  95. package/dist/adrs/find.js.map +0 -1
  96. package/dist/adrs/index.js +0 -15
  97. package/dist/adrs/index.js.map +0 -1
  98. package/dist/adrs/link-pipeline.js +0 -160
  99. package/dist/adrs/link-pipeline.js.map +0 -1
  100. package/dist/adrs/list.js +0 -43
  101. package/dist/adrs/list.js.map +0 -1
  102. package/dist/adrs/parse.js +0 -51
  103. package/dist/adrs/parse.js.map +0 -1
  104. package/dist/adrs/show.js +0 -22
  105. package/dist/adrs/show.js.map +0 -1
  106. package/dist/adrs/sync.js +0 -188
  107. package/dist/adrs/sync.js.map +0 -1
  108. package/dist/adrs/types.js +0 -9
  109. package/dist/adrs/types.js.map +0 -1
  110. package/dist/adrs/validate.js +0 -57
  111. package/dist/adrs/validate.js.map +0 -1
  112. package/dist/agents/agent-schema.js +0 -80
  113. package/dist/agents/agent-schema.js.map +0 -1
  114. package/dist/agents/capacity.js +0 -116
  115. package/dist/agents/capacity.js.map +0 -1
  116. package/dist/agents/index.js +0 -21
  117. package/dist/agents/index.js.map +0 -1
  118. package/dist/agents/registry.js +0 -314
  119. package/dist/agents/registry.js.map +0 -1
  120. package/dist/agents/retry.js +0 -176
  121. package/dist/agents/retry.js.map +0 -1
  122. package/dist/audit-prune.js +0 -94
  123. package/dist/audit-prune.js.map +0 -1
  124. package/dist/audit.js +0 -68
  125. package/dist/audit.js.map +0 -1
  126. package/dist/bootstrap.js +0 -260
  127. package/dist/bootstrap.js.map +0 -1
  128. package/dist/caamp/adapter.js +0 -434
  129. package/dist/caamp/adapter.js.map +0 -1
  130. package/dist/caamp/capability-check.js +0 -38
  131. package/dist/caamp/capability-check.js.map +0 -1
  132. package/dist/caamp/index.js +0 -23
  133. package/dist/caamp/index.js.map +0 -1
  134. package/dist/caamp-init.js +0 -16
  135. package/dist/caamp-init.js.map +0 -1
  136. package/dist/cleo.js +0 -267
  137. package/dist/cleo.js.map +0 -1
  138. package/dist/codebase-map/analyzers/architecture.js +0 -130
  139. package/dist/codebase-map/analyzers/architecture.js.map +0 -1
  140. package/dist/codebase-map/analyzers/concerns.js +0 -122
  141. package/dist/codebase-map/analyzers/concerns.js.map +0 -1
  142. package/dist/codebase-map/analyzers/conventions.js +0 -149
  143. package/dist/codebase-map/analyzers/conventions.js.map +0 -1
  144. package/dist/codebase-map/analyzers/integrations.js +0 -108
  145. package/dist/codebase-map/analyzers/integrations.js.map +0 -1
  146. package/dist/codebase-map/analyzers/stack.js +0 -117
  147. package/dist/codebase-map/analyzers/stack.js.map +0 -1
  148. package/dist/codebase-map/analyzers/structure.js +0 -137
  149. package/dist/codebase-map/analyzers/structure.js.map +0 -1
  150. package/dist/codebase-map/analyzers/testing.js +0 -118
  151. package/dist/codebase-map/analyzers/testing.js.map +0 -1
  152. package/dist/codebase-map/index.js +0 -57
  153. package/dist/codebase-map/index.js.map +0 -1
  154. package/dist/codebase-map/store.js +0 -122
  155. package/dist/codebase-map/store.js.map +0 -1
  156. package/dist/codebase-map/summary.js +0 -152
  157. package/dist/codebase-map/summary.js.map +0 -1
  158. package/dist/compliance/index.js +0 -288
  159. package/dist/compliance/index.js.map +0 -1
  160. package/dist/compliance/protocol-enforcement.js +0 -332
  161. package/dist/compliance/protocol-enforcement.js.map +0 -1
  162. package/dist/compliance/protocol-rules.js +0 -786
  163. package/dist/compliance/protocol-rules.js.map +0 -1
  164. package/dist/compliance/protocol-types.js +0 -80
  165. package/dist/compliance/protocol-types.js.map +0 -1
  166. package/dist/compliance/store.js +0 -53
  167. package/dist/compliance/store.js.map +0 -1
  168. package/dist/config/build-config.js +0 -29
  169. package/dist/config/build-config.js.map +0 -1
  170. package/dist/config.js +0 -287
  171. package/dist/config.js.map +0 -1
  172. package/dist/constants.js +0 -18
  173. package/dist/constants.js.map +0 -1
  174. package/dist/context/index.js +0 -137
  175. package/dist/context/index.js.map +0 -1
  176. package/dist/engine-result.js +0 -12
  177. package/dist/engine-result.js.map +0 -1
  178. package/dist/error-catalog.js +0 -404
  179. package/dist/error-catalog.js.map +0 -1
  180. package/dist/error-registry.js +0 -393
  181. package/dist/error-registry.js.map +0 -1
  182. package/dist/errors.js +0 -167
  183. package/dist/errors.js.map +0 -1
  184. package/dist/hooks/handlers/error-hooks.js +0 -43
  185. package/dist/hooks/handlers/error-hooks.js.map +0 -1
  186. package/dist/hooks/handlers/file-hooks.js +0 -80
  187. package/dist/hooks/handlers/file-hooks.js.map +0 -1
  188. package/dist/hooks/handlers/index.js +0 -19
  189. package/dist/hooks/handlers/index.js.map +0 -1
  190. package/dist/hooks/handlers/mcp-hooks.js +0 -80
  191. package/dist/hooks/handlers/mcp-hooks.js.map +0 -1
  192. package/dist/hooks/handlers/session-hooks.js +0 -73
  193. package/dist/hooks/handlers/session-hooks.js.map +0 -1
  194. package/dist/hooks/handlers/task-hooks.js +0 -63
  195. package/dist/hooks/handlers/task-hooks.js.map +0 -1
  196. package/dist/hooks/index.js +0 -13
  197. package/dist/hooks/index.js.map +0 -1
  198. package/dist/hooks/payload-schemas.js +0 -163
  199. package/dist/hooks/payload-schemas.js.map +0 -1
  200. package/dist/hooks/provider-hooks.js +0 -34
  201. package/dist/hooks/provider-hooks.js.map +0 -1
  202. package/dist/hooks/registry.js +0 -176
  203. package/dist/hooks/registry.js.map +0 -1
  204. package/dist/hooks/types.js +0 -62
  205. package/dist/hooks/types.js.map +0 -1
  206. package/dist/hooks.js +0 -136
  207. package/dist/hooks.js.map +0 -1
  208. package/dist/init.js +0 -711
  209. package/dist/init.js.map +0 -1
  210. package/dist/inject/index.js +0 -82
  211. package/dist/inject/index.js.map +0 -1
  212. package/dist/injection.js +0 -343
  213. package/dist/injection.js.map +0 -1
  214. package/dist/intelligence/impact.js +0 -499
  215. package/dist/intelligence/impact.js.map +0 -1
  216. package/dist/intelligence/index.js +0 -17
  217. package/dist/intelligence/index.js.map +0 -1
  218. package/dist/intelligence/patterns.js +0 -492
  219. package/dist/intelligence/patterns.js.map +0 -1
  220. package/dist/intelligence/prediction.js +0 -499
  221. package/dist/intelligence/prediction.js.map +0 -1
  222. package/dist/intelligence/types.js +0 -13
  223. package/dist/intelligence/types.js.map +0 -1
  224. package/dist/internal.js +0 -258
  225. package/dist/internal.js.map +0 -1
  226. package/dist/issue/create.js +0 -121
  227. package/dist/issue/create.js.map +0 -1
  228. package/dist/issue/diagnostics.js +0 -59
  229. package/dist/issue/diagnostics.js.map +0 -1
  230. package/dist/issue/index.js +0 -10
  231. package/dist/issue/index.js.map +0 -1
  232. package/dist/issue/template-parser.js +0 -267
  233. package/dist/issue/template-parser.js.map +0 -1
  234. package/dist/json-schema-validator.js +0 -76
  235. package/dist/json-schema-validator.js.map +0 -1
  236. package/dist/lifecycle/chain-composition.js +0 -152
  237. package/dist/lifecycle/chain-composition.js.map +0 -1
  238. package/dist/lifecycle/chain-store.js +0 -246
  239. package/dist/lifecycle/chain-store.js.map +0 -1
  240. package/dist/lifecycle/consolidate-rcasd.js +0 -352
  241. package/dist/lifecycle/consolidate-rcasd.js.map +0 -1
  242. package/dist/lifecycle/default-chain.js +0 -167
  243. package/dist/lifecycle/default-chain.js.map +0 -1
  244. package/dist/lifecycle/evidence.js +0 -180
  245. package/dist/lifecycle/evidence.js.map +0 -1
  246. package/dist/lifecycle/frontmatter.js +0 -363
  247. package/dist/lifecycle/frontmatter.js.map +0 -1
  248. package/dist/lifecycle/index.js +0 -753
  249. package/dist/lifecycle/index.js.map +0 -1
  250. package/dist/lifecycle/pipeline.js +0 -656
  251. package/dist/lifecycle/pipeline.js.map +0 -1
  252. package/dist/lifecycle/rcasd-index.js +0 -326
  253. package/dist/lifecycle/rcasd-index.js.map +0 -1
  254. package/dist/lifecycle/rcasd-paths.js +0 -220
  255. package/dist/lifecycle/rcasd-paths.js.map +0 -1
  256. package/dist/lifecycle/resume.js +0 -864
  257. package/dist/lifecycle/resume.js.map +0 -1
  258. package/dist/lifecycle/stage-artifacts.js +0 -94
  259. package/dist/lifecycle/stage-artifacts.js.map +0 -1
  260. package/dist/lifecycle/stages.js +0 -534
  261. package/dist/lifecycle/stages.js.map +0 -1
  262. package/dist/lifecycle/state-machine.js +0 -516
  263. package/dist/lifecycle/state-machine.js.map +0 -1
  264. package/dist/lifecycle/tessera-engine.js +0 -249
  265. package/dist/lifecycle/tessera-engine.js.map +0 -1
  266. package/dist/logger.js +0 -140
  267. package/dist/logger.js.map +0 -1
  268. package/dist/mcp/index.js +0 -146
  269. package/dist/mcp/index.js.map +0 -1
  270. package/dist/memory/auto-extract.js +0 -143
  271. package/dist/memory/auto-extract.js.map +0 -1
  272. package/dist/memory/brain-embedding.js +0 -49
  273. package/dist/memory/brain-embedding.js.map +0 -1
  274. package/dist/memory/brain-lifecycle.js +0 -298
  275. package/dist/memory/brain-lifecycle.js.map +0 -1
  276. package/dist/memory/brain-links.js +0 -148
  277. package/dist/memory/brain-links.js.map +0 -1
  278. package/dist/memory/brain-migration.js +0 -149
  279. package/dist/memory/brain-migration.js.map +0 -1
  280. package/dist/memory/brain-reasoning.js +0 -215
  281. package/dist/memory/brain-reasoning.js.map +0 -1
  282. package/dist/memory/brain-retrieval.js +0 -474
  283. package/dist/memory/brain-retrieval.js.map +0 -1
  284. package/dist/memory/brain-row-types.js +0 -10
  285. package/dist/memory/brain-row-types.js.map +0 -1
  286. package/dist/memory/brain-search.js +0 -519
  287. package/dist/memory/brain-search.js.map +0 -1
  288. package/dist/memory/brain-similarity.js +0 -145
  289. package/dist/memory/brain-similarity.js.map +0 -1
  290. package/dist/memory/claude-mem-migration.js +0 -277
  291. package/dist/memory/claude-mem-migration.js.map +0 -1
  292. package/dist/memory/decisions.js +0 -148
  293. package/dist/memory/decisions.js.map +0 -1
  294. package/dist/memory/engine-compat.js +0 -1030
  295. package/dist/memory/engine-compat.js.map +0 -1
  296. package/dist/memory/index.js +0 -773
  297. package/dist/memory/index.js.map +0 -1
  298. package/dist/memory/learnings.js +0 -121
  299. package/dist/memory/learnings.js.map +0 -1
  300. package/dist/memory/memory-bridge.js +0 -289
  301. package/dist/memory/memory-bridge.js.map +0 -1
  302. package/dist/memory/patterns.js +0 -122
  303. package/dist/memory/patterns.js.map +0 -1
  304. package/dist/memory/pipeline-manifest-sqlite.js +0 -975
  305. package/dist/memory/pipeline-manifest-sqlite.js.map +0 -1
  306. package/dist/memory/session-memory.js +0 -226
  307. package/dist/memory/session-memory.js.map +0 -1
  308. package/dist/metrics/ab-test.js +0 -260
  309. package/dist/metrics/ab-test.js.map +0 -1
  310. package/dist/metrics/aggregation.js +0 -363
  311. package/dist/metrics/aggregation.js.map +0 -1
  312. package/dist/metrics/common.js +0 -64
  313. package/dist/metrics/common.js.map +0 -1
  314. package/dist/metrics/enums.js +0 -78
  315. package/dist/metrics/enums.js.map +0 -1
  316. package/dist/metrics/index.js +0 -19
  317. package/dist/metrics/index.js.map +0 -1
  318. package/dist/metrics/model-provider-registry.js +0 -88
  319. package/dist/metrics/model-provider-registry.js.map +0 -1
  320. package/dist/metrics/otel-integration.js +0 -263
  321. package/dist/metrics/otel-integration.js.map +0 -1
  322. package/dist/metrics/provider-detection.js +0 -103
  323. package/dist/metrics/provider-detection.js.map +0 -1
  324. package/dist/metrics/token-estimation.js +0 -253
  325. package/dist/metrics/token-estimation.js.map +0 -1
  326. package/dist/metrics/token-service.js +0 -450
  327. package/dist/metrics/token-service.js.map +0 -1
  328. package/dist/migration/agent-outputs.js +0 -316
  329. package/dist/migration/agent-outputs.js.map +0 -1
  330. package/dist/migration/checksum.js +0 -92
  331. package/dist/migration/checksum.js.map +0 -1
  332. package/dist/migration/index.js +0 -282
  333. package/dist/migration/index.js.map +0 -1
  334. package/dist/migration/logger.js +0 -360
  335. package/dist/migration/logger.js.map +0 -1
  336. package/dist/migration/preflight.js +0 -9
  337. package/dist/migration/preflight.js.map +0 -1
  338. package/dist/migration/state.js +0 -421
  339. package/dist/migration/state.js.map +0 -1
  340. package/dist/migration/validate.js +0 -241
  341. package/dist/migration/validate.js.map +0 -1
  342. package/dist/nexus/deps.js +0 -375
  343. package/dist/nexus/deps.js.map +0 -1
  344. package/dist/nexus/discover.js +0 -288
  345. package/dist/nexus/discover.js.map +0 -1
  346. package/dist/nexus/hash.js +0 -10
  347. package/dist/nexus/hash.js.map +0 -1
  348. package/dist/nexus/index.js +0 -38
  349. package/dist/nexus/index.js.map +0 -1
  350. package/dist/nexus/migrate-json-to-sqlite.js +0 -115
  351. package/dist/nexus/migrate-json-to-sqlite.js.map +0 -1
  352. package/dist/nexus/permissions.js +0 -105
  353. package/dist/nexus/permissions.js.map +0 -1
  354. package/dist/nexus/query.js +0 -175
  355. package/dist/nexus/query.js.map +0 -1
  356. package/dist/nexus/registry.js +0 -584
  357. package/dist/nexus/registry.js.map +0 -1
  358. package/dist/nexus/sharing/index.js +0 -179
  359. package/dist/nexus/sharing/index.js.map +0 -1
  360. package/dist/nexus/transfer-types.js +0 -8
  361. package/dist/nexus/transfer-types.js.map +0 -1
  362. package/dist/nexus/transfer.js +0 -263
  363. package/dist/nexus/transfer.js.map +0 -1
  364. package/dist/observability/index.js +0 -103
  365. package/dist/observability/index.js.map +0 -1
  366. package/dist/observability/log-filter.js +0 -63
  367. package/dist/observability/log-filter.js.map +0 -1
  368. package/dist/observability/log-parser.js +0 -99
  369. package/dist/observability/log-parser.js.map +0 -1
  370. package/dist/observability/log-reader.js +0 -139
  371. package/dist/observability/log-reader.js.map +0 -1
  372. package/dist/observability/types.js +0 -19
  373. package/dist/observability/types.js.map +0 -1
  374. package/dist/orchestration/analyze.js +0 -107
  375. package/dist/orchestration/analyze.js.map +0 -1
  376. package/dist/orchestration/bootstrap.js +0 -132
  377. package/dist/orchestration/bootstrap.js.map +0 -1
  378. package/dist/orchestration/context.js +0 -56
  379. package/dist/orchestration/context.js.map +0 -1
  380. package/dist/orchestration/critical-path.js +0 -100
  381. package/dist/orchestration/critical-path.js.map +0 -1
  382. package/dist/orchestration/index.js +0 -286
  383. package/dist/orchestration/index.js.map +0 -1
  384. package/dist/orchestration/parallel.js +0 -89
  385. package/dist/orchestration/parallel.js.map +0 -1
  386. package/dist/orchestration/protocol-validators.js +0 -524
  387. package/dist/orchestration/protocol-validators.js.map +0 -1
  388. package/dist/orchestration/skill-ops.js +0 -98
  389. package/dist/orchestration/skill-ops.js.map +0 -1
  390. package/dist/orchestration/status.js +0 -107
  391. package/dist/orchestration/status.js.map +0 -1
  392. package/dist/orchestration/unblock.js +0 -103
  393. package/dist/orchestration/unblock.js.map +0 -1
  394. package/dist/orchestration/validate-spawn.js +0 -67
  395. package/dist/orchestration/validate-spawn.js.map +0 -1
  396. package/dist/orchestration/waves.js +0 -86
  397. package/dist/orchestration/waves.js.map +0 -1
  398. package/dist/otel/index.js +0 -163
  399. package/dist/otel/index.js.map +0 -1
  400. package/dist/output.js +0 -132
  401. package/dist/output.js.map +0 -1
  402. package/dist/pagination.js +0 -61
  403. package/dist/pagination.js.map +0 -1
  404. package/dist/paths.js +0 -337
  405. package/dist/paths.js.map +0 -1
  406. package/dist/phases/deps.js +0 -369
  407. package/dist/phases/deps.js.map +0 -1
  408. package/dist/phases/index.js +0 -349
  409. package/dist/phases/index.js.map +0 -1
  410. package/dist/pipeline/index.js +0 -10
  411. package/dist/pipeline/index.js.map +0 -1
  412. package/dist/pipeline/phase.js +0 -45
  413. package/dist/pipeline/phase.js.map +0 -1
  414. package/dist/platform.js +0 -211
  415. package/dist/platform.js.map +0 -1
  416. package/dist/project-info.js +0 -84
  417. package/dist/project-info.js.map +0 -1
  418. package/dist/reconciliation/index.js +0 -10
  419. package/dist/reconciliation/index.js.map +0 -1
  420. package/dist/reconciliation/link-store.js +0 -129
  421. package/dist/reconciliation/link-store.js.map +0 -1
  422. package/dist/reconciliation/reconciliation-engine.js +0 -298
  423. package/dist/reconciliation/reconciliation-engine.js.map +0 -1
  424. package/dist/release/artifacts.js +0 -427
  425. package/dist/release/artifacts.js.map +0 -1
  426. package/dist/release/changelog-writer.js +0 -151
  427. package/dist/release/changelog-writer.js.map +0 -1
  428. package/dist/release/channel.js +0 -144
  429. package/dist/release/channel.js.map +0 -1
  430. package/dist/release/ci.js +0 -166
  431. package/dist/release/ci.js.map +0 -1
  432. package/dist/release/github-pr.js +0 -225
  433. package/dist/release/github-pr.js.map +0 -1
  434. package/dist/release/guards.js +0 -116
  435. package/dist/release/guards.js.map +0 -1
  436. package/dist/release/index.js +0 -22
  437. package/dist/release/index.js.map +0 -1
  438. package/dist/release/release-config.js +0 -158
  439. package/dist/release/release-config.js.map +0 -1
  440. package/dist/release/release-manifest.js +0 -1019
  441. package/dist/release/release-manifest.js.map +0 -1
  442. package/dist/release/version-bump.js +0 -255
  443. package/dist/release/version-bump.js.map +0 -1
  444. package/dist/remote/index.js +0 -257
  445. package/dist/remote/index.js.map +0 -1
  446. package/dist/repair.js +0 -89
  447. package/dist/repair.js.map +0 -1
  448. package/dist/research/index.js +0 -2
  449. package/dist/research/index.js.map +0 -1
  450. package/dist/roadmap/index.js +0 -59
  451. package/dist/roadmap/index.js.map +0 -1
  452. package/dist/routing/capability-matrix.js +0 -1550
  453. package/dist/routing/capability-matrix.js.map +0 -1
  454. package/dist/routing/index.js +0 -9
  455. package/dist/routing/index.js.map +0 -1
  456. package/dist/scaffold.js +0 -1158
  457. package/dist/scaffold.js.map +0 -1
  458. package/dist/schema-management.js +0 -295
  459. package/dist/schema-management.js.map +0 -1
  460. package/dist/security/index.js +0 -9
  461. package/dist/security/index.js.map +0 -1
  462. package/dist/security/input-sanitization.js +0 -321
  463. package/dist/security/input-sanitization.js.map +0 -1
  464. package/dist/sequence/index.js +0 -295
  465. package/dist/sequence/index.js.map +0 -1
  466. package/dist/sessions/assumptions.js +0 -54
  467. package/dist/sessions/assumptions.js.map +0 -1
  468. package/dist/sessions/briefing.js +0 -377
  469. package/dist/sessions/briefing.js.map +0 -1
  470. package/dist/sessions/context-alert.js +0 -222
  471. package/dist/sessions/context-alert.js.map +0 -1
  472. package/dist/sessions/context-inject.js +0 -61
  473. package/dist/sessions/context-inject.js.map +0 -1
  474. package/dist/sessions/context-monitor.js +0 -98
  475. package/dist/sessions/context-monitor.js.map +0 -1
  476. package/dist/sessions/decisions.js +0 -65
  477. package/dist/sessions/decisions.js.map +0 -1
  478. package/dist/sessions/find.js +0 -63
  479. package/dist/sessions/find.js.map +0 -1
  480. package/dist/sessions/handoff.js +0 -328
  481. package/dist/sessions/handoff.js.map +0 -1
  482. package/dist/sessions/hitl-warnings.js +0 -254
  483. package/dist/sessions/hitl-warnings.js.map +0 -1
  484. package/dist/sessions/index.js +0 -318
  485. package/dist/sessions/index.js.map +0 -1
  486. package/dist/sessions/session-archive.js +0 -40
  487. package/dist/sessions/session-archive.js.map +0 -1
  488. package/dist/sessions/session-cleanup.js +0 -59
  489. package/dist/sessions/session-cleanup.js.map +0 -1
  490. package/dist/sessions/session-drift.js +0 -134
  491. package/dist/sessions/session-drift.js.map +0 -1
  492. package/dist/sessions/session-enforcement.js +0 -140
  493. package/dist/sessions/session-enforcement.js.map +0 -1
  494. package/dist/sessions/session-grade.js +0 -253
  495. package/dist/sessions/session-grade.js.map +0 -1
  496. package/dist/sessions/session-history.js +0 -42
  497. package/dist/sessions/session-history.js.map +0 -1
  498. package/dist/sessions/session-id.js +0 -81
  499. package/dist/sessions/session-id.js.map +0 -1
  500. package/dist/sessions/session-memory-bridge.js +0 -52
  501. package/dist/sessions/session-memory-bridge.js.map +0 -1
  502. package/dist/sessions/session-show.js +0 -24
  503. package/dist/sessions/session-show.js.map +0 -1
  504. package/dist/sessions/session-stats.js +0 -69
  505. package/dist/sessions/session-stats.js.map +0 -1
  506. package/dist/sessions/session-suspend.js +0 -39
  507. package/dist/sessions/session-suspend.js.map +0 -1
  508. package/dist/sessions/session-switch.js +0 -51
  509. package/dist/sessions/session-switch.js.map +0 -1
  510. package/dist/sessions/session-view.js +0 -76
  511. package/dist/sessions/session-view.js.map +0 -1
  512. package/dist/sessions/statusline-setup.js +0 -85
  513. package/dist/sessions/statusline-setup.js.map +0 -1
  514. package/dist/sessions/types.js +0 -8
  515. package/dist/sessions/types.js.map +0 -1
  516. package/dist/signaldock/claude-code-transport.js +0 -107
  517. package/dist/signaldock/claude-code-transport.js.map +0 -1
  518. package/dist/signaldock/factory.js +0 -25
  519. package/dist/signaldock/factory.js.map +0 -1
  520. package/dist/signaldock/index.js +0 -9
  521. package/dist/signaldock/index.js.map +0 -1
  522. package/dist/signaldock/signaldock-transport.js +0 -122
  523. package/dist/signaldock/signaldock-transport.js.map +0 -1
  524. package/dist/signaldock/transport.js +0 -11
  525. package/dist/signaldock/transport.js.map +0 -1
  526. package/dist/signaldock/types.js +0 -11
  527. package/dist/signaldock/types.js.map +0 -1
  528. package/dist/skills/agents/config.js +0 -94
  529. package/dist/skills/agents/config.js.map +0 -1
  530. package/dist/skills/agents/install.js +0 -116
  531. package/dist/skills/agents/install.js.map +0 -1
  532. package/dist/skills/agents/registry.js +0 -161
  533. package/dist/skills/agents/registry.js.map +0 -1
  534. package/dist/skills/discovery.js +0 -333
  535. package/dist/skills/discovery.js.map +0 -1
  536. package/dist/skills/dispatch.js +0 -347
  537. package/dist/skills/dispatch.js.map +0 -1
  538. package/dist/skills/dynamic-skill-generator.js +0 -100
  539. package/dist/skills/dynamic-skill-generator.js.map +0 -1
  540. package/dist/skills/index.js +0 -44
  541. package/dist/skills/index.js.map +0 -1
  542. package/dist/skills/injection/subagent.js +0 -195
  543. package/dist/skills/injection/subagent.js.map +0 -1
  544. package/dist/skills/injection/token.js +0 -260
  545. package/dist/skills/injection/token.js.map +0 -1
  546. package/dist/skills/install.js +0 -40
  547. package/dist/skills/install.js.map +0 -1
  548. package/dist/skills/manifests/contribution.js +0 -175
  549. package/dist/skills/manifests/contribution.js.map +0 -1
  550. package/dist/skills/manifests/research.js +0 -281
  551. package/dist/skills/manifests/research.js.map +0 -1
  552. package/dist/skills/manifests/resolver.js +0 -146
  553. package/dist/skills/manifests/resolver.js.map +0 -1
  554. package/dist/skills/marketplace.js +0 -90
  555. package/dist/skills/marketplace.js.map +0 -1
  556. package/dist/skills/orchestrator/spawn.js +0 -178
  557. package/dist/skills/orchestrator/spawn.js.map +0 -1
  558. package/dist/skills/orchestrator/startup.js +0 -451
  559. package/dist/skills/orchestrator/startup.js.map +0 -1
  560. package/dist/skills/orchestrator/validator.js +0 -301
  561. package/dist/skills/orchestrator/validator.js.map +0 -1
  562. package/dist/skills/precedence-integration.js +0 -73
  563. package/dist/skills/precedence-integration.js.map +0 -1
  564. package/dist/skills/precedence-types.js +0 -16
  565. package/dist/skills/precedence-types.js.map +0 -1
  566. package/dist/skills/routing-table.js +0 -63
  567. package/dist/skills/routing-table.js.map +0 -1
  568. package/dist/skills/skill-paths.js +0 -220
  569. package/dist/skills/skill-paths.js.map +0 -1
  570. package/dist/skills/test-utility.js +0 -55
  571. package/dist/skills/test-utility.js.map +0 -1
  572. package/dist/skills/types.js +0 -118
  573. package/dist/skills/types.js.map +0 -1
  574. package/dist/skills/validation.js +0 -183
  575. package/dist/skills/validation.js.map +0 -1
  576. package/dist/skills/version.js +0 -57
  577. package/dist/skills/version.js.map +0 -1
  578. package/dist/snapshot/index.js +0 -188
  579. package/dist/snapshot/index.js.map +0 -1
  580. package/dist/spawn/adapter-registry.js +0 -246
  581. package/dist/spawn/adapter-registry.js.map +0 -1
  582. package/dist/spawn/index.js +0 -10
  583. package/dist/spawn/index.js.map +0 -1
  584. package/dist/stats/index.js +0 -339
  585. package/dist/stats/index.js.map +0 -1
  586. package/dist/sticky/archive.js +0 -47
  587. package/dist/sticky/archive.js.map +0 -1
  588. package/dist/sticky/convert.js +0 -235
  589. package/dist/sticky/convert.js.map +0 -1
  590. package/dist/sticky/create.js +0 -48
  591. package/dist/sticky/create.js.map +0 -1
  592. package/dist/sticky/id.js +0 -35
  593. package/dist/sticky/id.js.map +0 -1
  594. package/dist/sticky/index.js +0 -16
  595. package/dist/sticky/index.js.map +0 -1
  596. package/dist/sticky/list.js +0 -44
  597. package/dist/sticky/list.js.map +0 -1
  598. package/dist/sticky/purge.js +0 -45
  599. package/dist/sticky/purge.js.map +0 -1
  600. package/dist/sticky/show.js +0 -42
  601. package/dist/sticky/show.js.map +0 -1
  602. package/dist/sticky/types.js +0 -10
  603. package/dist/sticky/types.js.map +0 -1
  604. package/dist/store/atomic.js +0 -167
  605. package/dist/store/atomic.js.map +0 -1
  606. package/dist/store/backup.js +0 -94
  607. package/dist/store/backup.js.map +0 -1
  608. package/dist/store/brain-accessor.js +0 -397
  609. package/dist/store/brain-accessor.js.map +0 -1
  610. package/dist/store/brain-schema.js +0 -212
  611. package/dist/store/brain-schema.js.map +0 -1
  612. package/dist/store/brain-sqlite.js +0 -271
  613. package/dist/store/brain-sqlite.js.map +0 -1
  614. package/dist/store/cache.js +0 -168
  615. package/dist/store/cache.js.map +0 -1
  616. package/dist/store/chain-schema.js +0 -51
  617. package/dist/store/chain-schema.js.map +0 -1
  618. package/dist/store/converters.js +0 -120
  619. package/dist/store/converters.js.map +0 -1
  620. package/dist/store/data-accessor.js +0 -26
  621. package/dist/store/data-accessor.js.map +0 -1
  622. package/dist/store/data-safety-central.js +0 -269
  623. package/dist/store/data-safety-central.js.map +0 -1
  624. package/dist/store/data-safety.js +0 -274
  625. package/dist/store/data-safety.js.map +0 -1
  626. package/dist/store/db-helpers.js +0 -221
  627. package/dist/store/db-helpers.js.map +0 -1
  628. package/dist/store/export.js +0 -155
  629. package/dist/store/export.js.map +0 -1
  630. package/dist/store/file-utils.js +0 -270
  631. package/dist/store/file-utils.js.map +0 -1
  632. package/dist/store/git-checkpoint.js +0 -365
  633. package/dist/store/git-checkpoint.js.map +0 -1
  634. package/dist/store/import-logging.js +0 -139
  635. package/dist/store/import-logging.js.map +0 -1
  636. package/dist/store/import-remap.js +0 -145
  637. package/dist/store/import-remap.js.map +0 -1
  638. package/dist/store/import-sort.js +0 -121
  639. package/dist/store/import-sort.js.map +0 -1
  640. package/dist/store/index.js +0 -28
  641. package/dist/store/index.js.map +0 -1
  642. package/dist/store/json.js +0 -208
  643. package/dist/store/json.js.map +0 -1
  644. package/dist/store/lifecycle-store.js +0 -249
  645. package/dist/store/lifecycle-store.js.map +0 -1
  646. package/dist/store/lock.js +0 -70
  647. package/dist/store/lock.js.map +0 -1
  648. package/dist/store/migration-sqlite.js +0 -671
  649. package/dist/store/migration-sqlite.js.map +0 -1
  650. package/dist/store/nexus-schema.js +0 -62
  651. package/dist/store/nexus-schema.js.map +0 -1
  652. package/dist/store/nexus-sqlite.js +0 -217
  653. package/dist/store/nexus-sqlite.js.map +0 -1
  654. package/dist/store/nexus-validation-schemas.js +0 -40
  655. package/dist/store/nexus-validation-schemas.js.map +0 -1
  656. package/dist/store/parsers.js +0 -37
  657. package/dist/store/parsers.js.map +0 -1
  658. package/dist/store/project-detect.js +0 -457
  659. package/dist/store/project-detect.js.map +0 -1
  660. package/dist/store/provider.js +0 -101
  661. package/dist/store/provider.js.map +0 -1
  662. package/dist/store/safety-data-accessor.js +0 -243
  663. package/dist/store/safety-data-accessor.js.map +0 -1
  664. package/dist/store/schema.js +0 -7
  665. package/dist/store/schema.js.map +0 -1
  666. package/dist/store/session-store.js +0 -219
  667. package/dist/store/session-store.js.map +0 -1
  668. package/dist/store/sqlite-backup.js +0 -105
  669. package/dist/store/sqlite-backup.js.map +0 -1
  670. package/dist/store/sqlite-data-accessor.js +0 -742
  671. package/dist/store/sqlite-data-accessor.js.map +0 -1
  672. package/dist/store/sqlite.js +0 -489
  673. package/dist/store/sqlite.js.map +0 -1
  674. package/dist/store/status-registry.js +0 -8
  675. package/dist/store/status-registry.js.map +0 -1
  676. package/dist/store/task-store.js +0 -344
  677. package/dist/store/task-store.js.map +0 -1
  678. package/dist/store/tasks-schema.js +0 -574
  679. package/dist/store/tasks-schema.js.map +0 -1
  680. package/dist/store/typed-query.js +0 -15
  681. package/dist/store/typed-query.js.map +0 -1
  682. package/dist/store/validation-schemas.js +0 -278
  683. package/dist/store/validation-schemas.js.map +0 -1
  684. package/dist/system/archive-analytics.js +0 -277
  685. package/dist/system/archive-analytics.js.map +0 -1
  686. package/dist/system/archive-stats.js +0 -64
  687. package/dist/system/archive-stats.js.map +0 -1
  688. package/dist/system/audit.js +0 -145
  689. package/dist/system/audit.js.map +0 -1
  690. package/dist/system/backup.js +0 -99
  691. package/dist/system/backup.js.map +0 -1
  692. package/dist/system/cleanup.js +0 -134
  693. package/dist/system/cleanup.js.map +0 -1
  694. package/dist/system/health.js +0 -1054
  695. package/dist/system/health.js.map +0 -1
  696. package/dist/system/index.js +0 -18
  697. package/dist/system/index.js.map +0 -1
  698. package/dist/system/inject-generate.js +0 -122
  699. package/dist/system/inject-generate.js.map +0 -1
  700. package/dist/system/labels.js +0 -38
  701. package/dist/system/labels.js.map +0 -1
  702. package/dist/system/metrics.js +0 -61
  703. package/dist/system/metrics.js.map +0 -1
  704. package/dist/system/migrate.js +0 -43
  705. package/dist/system/migrate.js.map +0 -1
  706. package/dist/system/platform-paths.js +0 -80
  707. package/dist/system/platform-paths.js.map +0 -1
  708. package/dist/system/runtime.js +0 -161
  709. package/dist/system/runtime.js.map +0 -1
  710. package/dist/system/safestop.js +0 -99
  711. package/dist/system/safestop.js.map +0 -1
  712. package/dist/system/storage-preflight.js +0 -123
  713. package/dist/system/storage-preflight.js.map +0 -1
  714. package/dist/task-work/index.js +0 -155
  715. package/dist/task-work/index.js.map +0 -1
  716. package/dist/tasks/add.js +0 -510
  717. package/dist/tasks/add.js.map +0 -1
  718. package/dist/tasks/analyze.js +0 -85
  719. package/dist/tasks/analyze.js.map +0 -1
  720. package/dist/tasks/archive.js +0 -90
  721. package/dist/tasks/archive.js.map +0 -1
  722. package/dist/tasks/atomicity.js +0 -83
  723. package/dist/tasks/atomicity.js.map +0 -1
  724. package/dist/tasks/cancel-ops.js +0 -83
  725. package/dist/tasks/cancel-ops.js.map +0 -1
  726. package/dist/tasks/complete.js +0 -224
  727. package/dist/tasks/complete.js.map +0 -1
  728. package/dist/tasks/crossref-extract.js +0 -73
  729. package/dist/tasks/crossref-extract.js.map +0 -1
  730. package/dist/tasks/delete-preview.js +0 -192
  731. package/dist/tasks/delete-preview.js.map +0 -1
  732. package/dist/tasks/delete.js +0 -120
  733. package/dist/tasks/delete.js.map +0 -1
  734. package/dist/tasks/deletion-strategy.js +0 -200
  735. package/dist/tasks/deletion-strategy.js.map +0 -1
  736. package/dist/tasks/dependency-check.js +0 -278
  737. package/dist/tasks/dependency-check.js.map +0 -1
  738. package/dist/tasks/deps-ready.js +0 -32
  739. package/dist/tasks/deps-ready.js.map +0 -1
  740. package/dist/tasks/enforcement.js +0 -82
  741. package/dist/tasks/enforcement.js.map +0 -1
  742. package/dist/tasks/find.js +0 -148
  743. package/dist/tasks/find.js.map +0 -1
  744. package/dist/tasks/graph-cache.js +0 -127
  745. package/dist/tasks/graph-cache.js.map +0 -1
  746. package/dist/tasks/graph-ops.js +0 -171
  747. package/dist/tasks/graph-ops.js.map +0 -1
  748. package/dist/tasks/graph-rag.js +0 -328
  749. package/dist/tasks/graph-rag.js.map +0 -1
  750. package/dist/tasks/hierarchy-policy.js +0 -149
  751. package/dist/tasks/hierarchy-policy.js.map +0 -1
  752. package/dist/tasks/hierarchy.js +0 -185
  753. package/dist/tasks/hierarchy.js.map +0 -1
  754. package/dist/tasks/id-generator.js +0 -65
  755. package/dist/tasks/id-generator.js.map +0 -1
  756. package/dist/tasks/index.js +0 -14
  757. package/dist/tasks/index.js.map +0 -1
  758. package/dist/tasks/labels.js +0 -52
  759. package/dist/tasks/labels.js.map +0 -1
  760. package/dist/tasks/list.js +0 -68
  761. package/dist/tasks/list.js.map +0 -1
  762. package/dist/tasks/phase-tracking.js +0 -133
  763. package/dist/tasks/phase-tracking.js.map +0 -1
  764. package/dist/tasks/plan.js +0 -268
  765. package/dist/tasks/plan.js.map +0 -1
  766. package/dist/tasks/relates.js +0 -89
  767. package/dist/tasks/relates.js.map +0 -1
  768. package/dist/tasks/reparent.d.ts +0 -38
  769. package/dist/tasks/reparent.d.ts.map +0 -1
  770. package/dist/tasks/show.js +0 -78
  771. package/dist/tasks/show.js.map +0 -1
  772. package/dist/tasks/size-weighting.js +0 -86
  773. package/dist/tasks/size-weighting.js.map +0 -1
  774. package/dist/tasks/staleness.js +0 -86
  775. package/dist/tasks/staleness.js.map +0 -1
  776. package/dist/tasks/task-ops.js +0 -1340
  777. package/dist/tasks/task-ops.js.map +0 -1
  778. package/dist/tasks/update.js +0 -243
  779. package/dist/tasks/update.js.map +0 -1
  780. package/dist/templates/index.js +0 -10
  781. package/dist/templates/index.js.map +0 -1
  782. package/dist/templates/parser.js +0 -254
  783. package/dist/templates/parser.js.map +0 -1
  784. package/dist/ui/aliases.js +0 -153
  785. package/dist/ui/aliases.js.map +0 -1
  786. package/dist/ui/changelog.js +0 -184
  787. package/dist/ui/changelog.js.map +0 -1
  788. package/dist/ui/command-registry.js +0 -168
  789. package/dist/ui/command-registry.js.map +0 -1
  790. package/dist/ui/flags.js +0 -94
  791. package/dist/ui/flags.js.map +0 -1
  792. package/dist/ui/index.js +0 -24
  793. package/dist/ui/index.js.map +0 -1
  794. package/dist/ui/injection-legacy.d.ts +0 -26
  795. package/dist/ui/injection-legacy.d.ts.map +0 -1
  796. package/dist/ui/injection-legacy.js +0 -42
  797. package/dist/ui/injection-legacy.js.map +0 -1
  798. package/dist/upgrade.js +0 -901
  799. package/dist/upgrade.js.map +0 -1
  800. package/dist/validation/chain-validation.js +0 -146
  801. package/dist/validation/chain-validation.js.map +0 -1
  802. package/dist/validation/compliance.js +0 -155
  803. package/dist/validation/compliance.js.map +0 -1
  804. package/dist/validation/docs-sync.js +0 -212
  805. package/dist/validation/docs-sync.js.map +0 -1
  806. package/dist/validation/doctor/checks.js +0 -1069
  807. package/dist/validation/doctor/checks.js.map +0 -1
  808. package/dist/validation/doctor/index.js +0 -9
  809. package/dist/validation/doctor/index.js.map +0 -1
  810. package/dist/validation/doctor/project-cache.js +0 -160
  811. package/dist/validation/doctor/project-cache.js.map +0 -1
  812. package/dist/validation/doctor/utils.js +0 -155
  813. package/dist/validation/doctor/utils.js.map +0 -1
  814. package/dist/validation/engine.js +0 -902
  815. package/dist/validation/engine.js.map +0 -1
  816. package/dist/validation/gap-check.js +0 -175
  817. package/dist/validation/gap-check.js.map +0 -1
  818. package/dist/validation/index.js +0 -40
  819. package/dist/validation/index.js.map +0 -1
  820. package/dist/validation/manifest.js +0 -237
  821. package/dist/validation/manifest.js.map +0 -1
  822. package/dist/validation/operation-gate-validators.js +0 -724
  823. package/dist/validation/operation-gate-validators.js.map +0 -1
  824. package/dist/validation/operation-verification-gates.js +0 -532
  825. package/dist/validation/operation-verification-gates.js.map +0 -1
  826. package/dist/validation/param-utils.js +0 -139
  827. package/dist/validation/param-utils.js.map +0 -1
  828. package/dist/validation/protocol-common.js +0 -300
  829. package/dist/validation/protocol-common.js.map +0 -1
  830. package/dist/validation/protocols/consensus.js +0 -71
  831. package/dist/validation/protocols/consensus.js.map +0 -1
  832. package/dist/validation/protocols/contribution.js +0 -59
  833. package/dist/validation/protocols/contribution.js.map +0 -1
  834. package/dist/validation/protocols/decomposition.js +0 -59
  835. package/dist/validation/protocols/decomposition.js.map +0 -1
  836. package/dist/validation/protocols/implementation.js +0 -59
  837. package/dist/validation/protocols/implementation.js.map +0 -1
  838. package/dist/validation/protocols/release-protocol.js +0 -60
  839. package/dist/validation/protocols/release-protocol.js.map +0 -1
  840. package/dist/validation/protocols/research.js +0 -77
  841. package/dist/validation/protocols/research.js.map +0 -1
  842. package/dist/validation/protocols/specification.js +0 -84
  843. package/dist/validation/protocols/specification.js.map +0 -1
  844. package/dist/validation/protocols/testing-protocol.js +0 -70
  845. package/dist/validation/protocols/testing-protocol.js.map +0 -1
  846. package/dist/validation/protocols/validation-protocol.js +0 -70
  847. package/dist/validation/protocols/validation-protocol.js.map +0 -1
  848. package/dist/validation/schema-integrity.js +0 -170
  849. package/dist/validation/schema-integrity.js.map +0 -1
  850. package/dist/validation/schema-validator.js +0 -176
  851. package/dist/validation/schema-validator.js.map +0 -1
  852. package/dist/validation/validate-ops.js +0 -937
  853. package/dist/validation/validate-ops.js.map +0 -1
  854. package/dist/validation/validation-rules.js +0 -226
  855. package/dist/validation/validation-rules.js.map +0 -1
  856. package/dist/validation/verification.js +0 -321
  857. package/dist/validation/verification.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-archive.js","sourceRoot":"","sources":["../../src/sessions/session-archive.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAAmB,EACnB,SAAkB;IAElB,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;IAEhD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;IAE/C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ;YAAE,SAAS;QAC1C,sDAAsD;QACtD,IACE,OAAO,CAAC,MAAM,KAAK,OAAO;YAC1B,OAAO,CAAC,MAAM,KAAK,UAAU;YAC7B,OAAO,CAAC,MAAM,KAAK,WAAW;YAE9B,SAAS;QAEX,sBAAsB;QACtB,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;YACzD,IAAI,WAAW,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/D,SAAS;YACX,CAAC;QACH,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;AAC9D,CAAC"}
@@ -1,59 +0,0 @@
1
- /**
2
- * Remove orphaned sessions and clean up stale data.
3
- *
4
- * @task T4782
5
- * @task T2304
6
- * @epic T4654
7
- */
8
- import { getRawConfigValue } from '../config.js';
9
- import { getAccessor } from '../store/data-accessor.js';
10
- /** Default auto-end threshold when no config is set (7 days). */
11
- const DEFAULT_AUTO_END_DAYS = 7;
12
- /**
13
- * Remove orphaned sessions, auto-end stale active sessions, and clean up stale data.
14
- *
15
- * Stale active sessions (no activity beyond the configured threshold) are
16
- * transitioned to 'ended' with an auto-end note. The threshold is read from
17
- * `retention.autoEndActiveAfterDays` in the project config (default: 7 days).
18
- *
19
- * @task T2304
20
- */
21
- export async function cleanupSessions(projectRoot) {
22
- const accessor = await getAccessor(projectRoot);
23
- const sessions = await accessor.loadSessions();
24
- if (sessions.length === 0) {
25
- return { removed: [], autoEnded: [], cleaned: false };
26
- }
27
- const removed = [];
28
- const autoEnded = [];
29
- // Read auto-end threshold from config
30
- const configDays = await getRawConfigValue('retention.autoEndActiveAfterDays', projectRoot);
31
- const autoEndDays = typeof configDays === 'number' && configDays > 0 ? configDays : DEFAULT_AUTO_END_DAYS;
32
- const autoEndMs = autoEndDays * 24 * 60 * 60 * 1000;
33
- const now = Date.now();
34
- for (const session of sessions) {
35
- // Auto-end stale active sessions (T2304)
36
- if (session.status === 'active') {
37
- const sessionTime = new Date(session.startedAt).getTime();
38
- if (now - sessionTime > autoEndMs) {
39
- session.status = 'ended';
40
- session.endedAt = new Date().toISOString();
41
- if (!session.notes)
42
- session.notes = [];
43
- session.notes.push(`Auto-ended: session exceeded ${autoEndDays}-day inactivity threshold`);
44
- autoEnded.push(session.id);
45
- await accessor.upsertSingleSession(session);
46
- }
47
- }
48
- // Identify archived sessions to remove
49
- if (session.status === 'archived') {
50
- removed.push(session.id);
51
- }
52
- }
53
- // Remove archived sessions
54
- for (const id of removed) {
55
- await accessor.removeSingleSession(id);
56
- }
57
- return { removed, autoEnded, cleaned: removed.length > 0 || autoEnded.length > 0 };
58
- }
59
- //# sourceMappingURL=session-cleanup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-cleanup.js","sourceRoot":"","sources":["../../src/sessions/session-cleanup.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,iEAAiE;AACjE,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEhC;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAAmB;IAEnB,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;IAEhD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;IAE/C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACxD,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,sCAAsC;IACtC,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,kCAAkC,EAAE,WAAW,CAAC,CAAC;IAC5F,MAAM,WAAW,GACf,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC;IACxF,MAAM,SAAS,GAAG,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,yCAAyC;QACzC,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;YAC1D,IAAI,GAAG,GAAG,WAAW,GAAG,SAAS,EAAE,CAAC;gBAClC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;gBACzB,OAAO,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAC3C,IAAI,CAAC,OAAO,CAAC,KAAK;oBAAE,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;gBACvC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,WAAW,2BAA2B,CAAC,CAAC;gBAC3F,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC3B,MAAM,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,uCAAuC;QACvC,IAAK,OAAO,CAAC,MAAiB,KAAK,UAAU,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;AACrF,CAAC"}
@@ -1,134 +0,0 @@
1
- /**
2
- * Compute context drift score for a session.
3
- *
4
- * @task T4782
5
- * @epic T4654
6
- */
7
- import { ExitCode } from '@cleocode/contracts';
8
- import { CleoError } from '../errors.js';
9
- import { getAccessor } from '../store/data-accessor.js';
10
- /**
11
- * Collect all descendant task IDs for a given parent task.
12
- */
13
- function collectDescendantIds(parentId, tasks) {
14
- const result = new Set();
15
- for (const task of tasks) {
16
- if (task.parentId === parentId) {
17
- result.add(task.id);
18
- const grandchildren = collectDescendantIds(task.id, tasks);
19
- for (const gc of grandchildren) {
20
- result.add(gc);
21
- }
22
- }
23
- }
24
- return result;
25
- }
26
- /**
27
- * Compute context drift score for the current session.
28
- * Compares session progress against original scope by counting
29
- * completed vs total tasks in scope, and detecting out-of-scope work.
30
- */
31
- export async function getContextDrift(projectRoot, params) {
32
- const accessor = await getAccessor(projectRoot);
33
- const { tasks } = await accessor.queryTasks({});
34
- const focus = await accessor.getMetaValue('focus_state');
35
- const current = {
36
- tasks,
37
- focus: focus ?? undefined,
38
- };
39
- // Find the active session (or specified session)
40
- let session;
41
- if (params?.sessionId) {
42
- const sessions = await accessor.loadSessions();
43
- session = sessions.find((s) => s.id === params.sessionId);
44
- if (!session) {
45
- throw new CleoError(ExitCode.SESSION_NOT_FOUND, `Session '${params.sessionId}' not found`);
46
- }
47
- }
48
- else {
49
- const activeSession = await accessor.getActiveSession();
50
- session = activeSession ?? undefined;
51
- }
52
- const factors = [];
53
- // If no session with scope, compute a basic drift from focus state
54
- if (!session) {
55
- const focusTask = current.focus?.currentTask;
56
- if (!focusTask) {
57
- return {
58
- score: 0,
59
- factors: ['No active session or focus'],
60
- completedInScope: 0,
61
- totalInScope: 0,
62
- outOfScope: 0,
63
- };
64
- }
65
- const rootTaskId = focusTask;
66
- const inScopeIds = collectDescendantIds(rootTaskId, tasks);
67
- inScopeIds.add(rootTaskId);
68
- const inScopeTasks = tasks.filter((t) => inScopeIds.has(t.id));
69
- const completedInScope = inScopeTasks.filter((t) => t.status === 'done').length;
70
- const totalInScope = inScopeTasks.length;
71
- const score = totalInScope > 0 ? Math.round((completedInScope / totalInScope) * 100) : 0;
72
- factors.push('Single-session mode (focus-based scope)');
73
- if (completedInScope === 0)
74
- factors.push('No tasks completed in scope yet');
75
- return { score, factors, completedInScope, totalInScope, outOfScope: 0 };
76
- }
77
- // Multi-session: use session scope to determine in-scope tasks
78
- const rootTaskId = session.scope.rootTaskId ?? session.scope.epicId ?? '';
79
- const inScopeIds = new Set();
80
- if (session.scope.explicitTaskIds && session.scope.explicitTaskIds.length > 0) {
81
- for (const id of session.scope.explicitTaskIds) {
82
- inScopeIds.add(id);
83
- }
84
- }
85
- else {
86
- inScopeIds.add(rootTaskId);
87
- if (session.scope.includeDescendants !== false) {
88
- const descendants = collectDescendantIds(rootTaskId, tasks);
89
- for (const id of descendants) {
90
- inScopeIds.add(id);
91
- }
92
- }
93
- }
94
- if (session.scope.excludeTaskIds) {
95
- for (const id of session.scope.excludeTaskIds) {
96
- inScopeIds.delete(id);
97
- }
98
- }
99
- const inScopeTasks = tasks.filter((t) => inScopeIds.has(t.id));
100
- const completedInScope = inScopeTasks.filter((t) => t.status === 'done').length;
101
- const totalInScope = inScopeTasks.length;
102
- // Detect out-of-scope work: tasks completed during session that are NOT in scope
103
- let outOfScope = 0;
104
- const sessionStartTime = new Date(session.startedAt).getTime();
105
- for (const task of tasks) {
106
- if (!inScopeIds.has(task.id) && task.status === 'done') {
107
- const completedAt = typeof task.completedAt === 'string' ? new Date(task.completedAt).getTime() : 0;
108
- if (completedAt >= sessionStartTime) {
109
- outOfScope++;
110
- }
111
- }
112
- }
113
- // Calculate drift score (0 = no progress, 100 = all done in scope)
114
- let score = 0;
115
- if (totalInScope > 0) {
116
- const progressRatio = completedInScope / totalInScope;
117
- const driftPenalty = outOfScope > 0 ? Math.min(outOfScope / totalInScope, 0.5) : 0;
118
- score = Math.round(Math.max(0, Math.min(100, progressRatio * 100 - driftPenalty * 50)));
119
- }
120
- if (totalInScope === 0)
121
- factors.push('No tasks found in session scope');
122
- if (completedInScope === 0 && totalInScope > 0)
123
- factors.push('No tasks completed in scope yet');
124
- if (completedInScope === totalInScope && totalInScope > 0)
125
- factors.push('All in-scope tasks completed');
126
- if (outOfScope > 0)
127
- factors.push(`${outOfScope} task(s) completed outside of session scope`);
128
- if (outOfScope === 0 && completedInScope > 0)
129
- factors.push('All completed work is within scope');
130
- if (session.scope.type)
131
- factors.push(`Scope type: ${session.scope.type}`);
132
- return { score, factors, completedInScope, totalInScope, outOfScope };
133
- }
134
- //# sourceMappingURL=session-drift.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-drift.js","sourceRoot":"","sources":["../../src/sessions/session-drift.ts"],"names":[],"mappings":"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"}
@@ -1,140 +0,0 @@
1
- /**
2
- * Session enforcement - require active sessions for write operations.
3
- *
4
- * Part of the Epic-Bound Session architecture. Enforces that write operations
5
- * (add, update, complete) require an active session.
6
- *
7
- * @task T4454
8
- * @epic T4454
9
- */
10
- import { existsSync, readFileSync } from 'node:fs';
11
- import { join } from 'node:path';
12
- import { ExitCode } from '@cleocode/contracts';
13
- import { CleoError } from '../errors.js';
14
- import { getCleoDir } from '../paths.js';
15
- import { sessionStatus } from './index.js';
16
- /** Synchronous config value reader. */
17
- function readConfigValueSync(path, defaultValue, cwd) {
18
- try {
19
- const configPath = join(getCleoDir(cwd), 'config.json');
20
- if (!existsSync(configPath))
21
- return defaultValue;
22
- const config = JSON.parse(readFileSync(configPath, 'utf-8'));
23
- const keys = path.split('.');
24
- let value = config;
25
- for (const key of keys) {
26
- if (value == null || typeof value !== 'object')
27
- return defaultValue;
28
- value = value[key];
29
- }
30
- return value ?? defaultValue;
31
- }
32
- catch {
33
- return defaultValue;
34
- }
35
- }
36
- /** Get the current enforcement mode. */
37
- export function getEnforcementMode(cwd) {
38
- try {
39
- const requiredForMutate = readConfigValueSync('enforcement.session.requiredForMutate', true, cwd);
40
- if (requiredForMutate === false)
41
- return 'none';
42
- // Legacy mode fallback from config
43
- const mode = readConfigValueSync('session.enforcement', 'strict', cwd);
44
- if (mode === 'strict' || mode === 'warn' || mode === 'none')
45
- return mode;
46
- return 'strict'; // Default
47
- }
48
- catch {
49
- return 'strict';
50
- }
51
- }
52
- /** Check if session enforcement is enabled. */
53
- export function isSessionEnforcementEnabled(cwd) {
54
- return getEnforcementMode(cwd) !== 'none';
55
- }
56
- /** Get active session info. Returns null if no active session. */
57
- export async function getActiveSessionInfo(cwd) {
58
- const session = await sessionStatus(cwd);
59
- if (!session)
60
- return null;
61
- return {
62
- id: session.id,
63
- name: session.name,
64
- scope: session.scope,
65
- };
66
- }
67
- /**
68
- * Require an active session for write operations.
69
- * In strict mode, throws if no session is active.
70
- * In warn mode, returns a warning but allows the operation.
71
- * In none mode, always allows.
72
- */
73
- export async function requireActiveSession(operation, cwd) {
74
- const mode = getEnforcementMode(cwd);
75
- if (mode === 'none') {
76
- return { allowed: true, mode, session: null };
77
- }
78
- const session = await getActiveSessionInfo(cwd);
79
- if (session) {
80
- return { allowed: true, mode, session };
81
- }
82
- // No active session
83
- if (mode === 'strict') {
84
- throw new CleoError(ExitCode.SESSION_REQUIRED, `Operation '${operation}' requires an active session`, {
85
- fix: 'Start a session with \'cleo session start --scope epic:T### --auto-start --name "Work"\'',
86
- alternatives: [
87
- {
88
- action: 'Start session',
89
- command: 'cleo session start --scope epic:T001 --auto-start --name "Work"',
90
- },
91
- { action: 'List sessions', command: 'cleo session list' },
92
- ],
93
- });
94
- }
95
- // Warn mode
96
- return {
97
- allowed: true,
98
- mode,
99
- session: null,
100
- warning: `No active session for operation '${operation}'. Consider starting one.`,
101
- };
102
- }
103
- /**
104
- * Validate that a task is within the current session's scope.
105
- * Only enforced when a session is active.
106
- */
107
- export async function validateTaskInScope(taskId, taskEpicId, cwd) {
108
- const mode = getEnforcementMode(cwd);
109
- if (mode === 'none')
110
- return { inScope: true };
111
- const session = await getActiveSessionInfo(cwd);
112
- if (!session)
113
- return { inScope: true }; // No session = no scope enforcement
114
- // Global scope allows everything
115
- if (session.scope.type === 'global')
116
- return { inScope: true };
117
- // Epic scope: task must be within the session's epic
118
- if (session.scope.type === 'epic' && session.scope.epicId) {
119
- const epicId = session.scope.epicId;
120
- // Task is the epic itself or is a child
121
- if (taskId === epicId || taskEpicId === epicId) {
122
- return { inScope: true };
123
- }
124
- if (mode === 'strict') {
125
- throw new CleoError(ExitCode.TASK_NOT_IN_SCOPE, `Task ${taskId} is not in scope of session ${session.id} (epic: ${epicId})`, {
126
- fix: `Focus on tasks within epic ${epicId} or start a new session`,
127
- alternatives: [
128
- { action: 'View session', command: `cleo session status` },
129
- { action: 'End session', command: `cleo session end` },
130
- ],
131
- });
132
- }
133
- return {
134
- inScope: false,
135
- warning: `Task ${taskId} is outside session scope (epic: ${epicId})`,
136
- };
137
- }
138
- return { inScope: true };
139
- }
140
- //# sourceMappingURL=session-enforcement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-enforcement.js","sourceRoot":"","sources":["../../src/sessions/session-enforcement.ts"],"names":[],"mappings":"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"}
@@ -1,253 +0,0 @@
1
- /**
2
- * Session grading - rubric-based behavioral analysis of agent sessions.
3
- *
4
- * Reads audit log entries for a session and applies a 5-dimension rubric
5
- * to score agent behavior:
6
- * - Session discipline (20pts)
7
- * - Discovery efficiency (20pts)
8
- * - Task hygiene (20pts)
9
- * - Error protocol (20pts)
10
- * - Progressive disclosure use (20pts)
11
- *
12
- * @task T4916
13
- */
14
- import { existsSync } from 'node:fs';
15
- import { appendFile, mkdir, readFile } from 'node:fs/promises';
16
- import { join } from 'node:path';
17
- import { queryAudit } from '../audit.js';
18
- import { getCleoDirAbsolute } from '../paths.js';
19
- /**
20
- * Grade a session by sessionId using the 5-dimension behavioral rubric.
21
- */
22
- export async function gradeSession(sessionId, cwd) {
23
- const sessionEntries = await queryAudit({ sessionId });
24
- const result = {
25
- sessionId,
26
- totalScore: 0,
27
- maxScore: 100,
28
- dimensions: {
29
- sessionDiscipline: { score: 0, max: 20, evidence: [] },
30
- discoveryEfficiency: { score: 0, max: 20, evidence: [] },
31
- taskHygiene: { score: 0, max: 20, evidence: [] },
32
- errorProtocol: { score: 0, max: 20, evidence: [] },
33
- disclosureUse: { score: 0, max: 20, evidence: [] },
34
- },
35
- flags: [],
36
- timestamp: new Date().toISOString(),
37
- entryCount: sessionEntries.length,
38
- };
39
- if (sessionEntries.length === 0) {
40
- result.flags.push('No audit entries found for session (use --grade flag when starting session)');
41
- await appendGradeResult(result, cwd);
42
- return result;
43
- }
44
- // -- Dimension 1: Session Discipline (20pts) --
45
- const sessionListCalls = sessionEntries.filter((e) => e.domain === 'session' && e.operation === 'list');
46
- const sessionEndCalls = sessionEntries.filter((e) => e.domain === 'session' && e.operation === 'end');
47
- const taskOps = sessionEntries.filter((e) => e.domain === 'tasks');
48
- let disciplineScore = 0;
49
- if (sessionListCalls.length > 0) {
50
- const firstListTime = new Date(sessionListCalls[0].timestamp).getTime();
51
- const firstTaskTime = taskOps.length > 0 ? new Date(taskOps[0].timestamp).getTime() : Infinity;
52
- if (firstListTime <= firstTaskTime) {
53
- disciplineScore += 10;
54
- result.dimensions.sessionDiscipline.evidence.push('session.list called before first task op');
55
- }
56
- else {
57
- result.flags.push('session.list called after task ops (should check sessions first)');
58
- }
59
- }
60
- else {
61
- result.flags.push('session.list never called (check existing sessions before starting)');
62
- }
63
- if (sessionEndCalls.length > 0) {
64
- disciplineScore += 10;
65
- result.dimensions.sessionDiscipline.evidence.push('session.end called');
66
- }
67
- else {
68
- result.flags.push('session.end never called (always end sessions when done)');
69
- }
70
- result.dimensions.sessionDiscipline.score = disciplineScore;
71
- // -- Dimension 2: Discovery Efficiency (20pts) --
72
- const findCalls = sessionEntries.filter((e) => e.domain === 'tasks' && e.operation === 'find');
73
- const listCalls = sessionEntries.filter((e) => e.domain === 'tasks' && e.operation === 'list');
74
- const showCalls = sessionEntries.filter((e) => e.domain === 'tasks' && e.operation === 'show');
75
- let discoveryScore = 0;
76
- const totalDiscoveryCalls = findCalls.length + listCalls.length;
77
- if (totalDiscoveryCalls > 0) {
78
- const findRatio = findCalls.length / totalDiscoveryCalls;
79
- if (findRatio >= 0.8) {
80
- discoveryScore += 15;
81
- result.dimensions.discoveryEfficiency.evidence.push(`find:list ratio ${(findRatio * 100).toFixed(0)}% >= 80%`);
82
- }
83
- else {
84
- result.flags.push(`tasks.list used ${listCalls.length}x (prefer tasks.find for discovery)`);
85
- discoveryScore += Math.round(15 * findRatio);
86
- }
87
- }
88
- else {
89
- discoveryScore += 10;
90
- result.dimensions.discoveryEfficiency.evidence.push('No discovery calls needed');
91
- }
92
- if (showCalls.length > 0) {
93
- discoveryScore = Math.min(20, discoveryScore + 5);
94
- result.dimensions.discoveryEfficiency.evidence.push(`tasks.show used ${showCalls.length}x for detail`);
95
- }
96
- result.dimensions.discoveryEfficiency.score = Math.min(20, discoveryScore);
97
- // -- Dimension 3: Task Hygiene (20pts) --
98
- const addCalls = sessionEntries.filter((e) => e.domain === 'tasks' && e.operation === 'add' && e.result.success);
99
- const existsCalls = sessionEntries.filter((e) => e.domain === 'tasks' && e.operation === 'exists');
100
- let hygieneScore = 20;
101
- for (const addCall of addCalls) {
102
- const desc = addCall.params?.description;
103
- if (!desc || desc.trim().length === 0) {
104
- hygieneScore -= 5;
105
- result.flags.push(`tasks.add without description (taskId: ${addCall.metadata?.taskId ?? 'unknown'})`);
106
- }
107
- }
108
- const subtaskAdds = addCalls.filter((e) => e.params?.parent);
109
- if (subtaskAdds.length > 0 && existsCalls.length > 0) {
110
- result.dimensions.taskHygiene.evidence.push('Parent existence verified before subtask creation');
111
- }
112
- else if (subtaskAdds.length > 0) {
113
- result.flags.push('Subtasks created without tasks.exists parent check');
114
- hygieneScore -= 3;
115
- }
116
- if (addCalls.length > 0 && hygieneScore >= 20) {
117
- result.dimensions.taskHygiene.evidence.push(`All ${addCalls.length} tasks.add calls had descriptions`);
118
- }
119
- result.dimensions.taskHygiene.score = Math.max(0, hygieneScore);
120
- // -- Dimension 4: Error Protocol (20pts) --
121
- const notFoundErrors = sessionEntries.filter((e) => !e.result.success && e.result.exitCode === 4);
122
- let errorScore = 20;
123
- for (const errEntry of notFoundErrors) {
124
- const errIdx = sessionEntries.indexOf(errEntry);
125
- const nextEntries = sessionEntries.slice(errIdx + 1, errIdx + 5);
126
- const hasRecovery = nextEntries.some((e) => e.domain === 'tasks' && (e.operation === 'find' || e.operation === 'exists'));
127
- if (!hasRecovery) {
128
- errorScore -= 5;
129
- result.flags.push(`E_NOT_FOUND (${errEntry.domain}.${errEntry.operation}) not followed by recovery lookup`);
130
- }
131
- else {
132
- result.dimensions.errorProtocol.evidence.push('E_NOT_FOUND followed by recovery lookup');
133
- }
134
- }
135
- const duplicateCreates = detectDuplicateCreates(sessionEntries);
136
- if (duplicateCreates > 0) {
137
- errorScore -= 5;
138
- result.flags.push(`${duplicateCreates} potentially duplicate task create(s) detected`);
139
- }
140
- if (notFoundErrors.length === 0 && duplicateCreates === 0) {
141
- result.dimensions.errorProtocol.evidence.push('No error protocol violations');
142
- }
143
- result.dimensions.errorProtocol.score = Math.max(0, errorScore);
144
- // -- Dimension 5: Progressive Disclosure Use (20pts) --
145
- const helpCalls = sessionEntries.filter((e) => (e.domain === 'admin' && e.operation === 'help') ||
146
- (e.domain === 'tools' && (e.operation === 'skill.show' || e.operation === 'skill.list')) ||
147
- (e.domain === 'skills' && (e.operation === 'list' || e.operation === 'show')));
148
- // gateway is stored as 'query'/'mutate' in the audit log
149
- const mcpQueryCalls = sessionEntries.filter((e) => e.metadata?.gateway === 'query');
150
- let disclosureScore = 0;
151
- if (helpCalls.length > 0) {
152
- disclosureScore += 10;
153
- result.dimensions.disclosureUse.evidence.push(`Progressive disclosure used (${helpCalls.length}x)`);
154
- }
155
- else {
156
- result.flags.push('No admin.help or skill lookup calls (load ct-cleo for guidance)');
157
- }
158
- if (mcpQueryCalls.length > 0) {
159
- disclosureScore += 10;
160
- result.dimensions.disclosureUse.evidence.push(`query (MCP) used ${mcpQueryCalls.length}x`);
161
- }
162
- else {
163
- result.flags.push('No MCP query calls (prefer query over CLI for programmatic access)');
164
- }
165
- result.dimensions.disclosureUse.score = disclosureScore;
166
- // -- Total --
167
- result.totalScore = Object.values(result.dimensions).reduce((sum, d) => sum + d.score, 0);
168
- await feedGradeToBrain(result, cwd);
169
- await appendGradeResult(result, cwd);
170
- return result;
171
- }
172
- /** Detect potentially duplicate task creates (same title within session). */
173
- function detectDuplicateCreates(entries) {
174
- const creates = entries.filter((e) => e.domain === 'tasks' && e.operation === 'add' && e.result.success);
175
- const titles = creates
176
- .map((e) => e.params?.title?.toLowerCase().trim())
177
- .filter(Boolean);
178
- const unique = new Set(titles);
179
- return titles.length - unique.size;
180
- }
181
- /**
182
- * Feed grade insights back into brain.db as learnings.
183
- * Best-effort — errors are silently caught.
184
- */
185
- async function feedGradeToBrain(result, projectRoot) {
186
- if (!projectRoot)
187
- return;
188
- try {
189
- const { storeLearning } = await import('../memory/learnings.js');
190
- // Find dimensions scoring below 50% of max
191
- const weakDimensions = [];
192
- for (const [name, dim] of Object.entries(result.dimensions)) {
193
- if (dim.score < dim.max * 0.5) {
194
- weakDimensions.push(name);
195
- }
196
- }
197
- if (weakDimensions.length > 0) {
198
- await storeLearning(projectRoot, {
199
- insight: `Session ${result.sessionId} scored ${result.totalScore}/${result.maxScore}. Weak dimensions: ${weakDimensions.join(', ')}`,
200
- source: `grade:${result.sessionId}`,
201
- confidence: 0.8,
202
- actionable: true,
203
- application: `Improve in next session: ${weakDimensions.join(', ')}`,
204
- });
205
- }
206
- // Store protocol violations as separate learning
207
- if (result.flags.length > 0) {
208
- await storeLearning(projectRoot, {
209
- insight: `Session ${result.sessionId} protocol violations: ${result.flags.join('; ')}`,
210
- source: `grade:${result.sessionId}`,
211
- confidence: 0.7,
212
- actionable: true,
213
- application: 'Address protocol violations in next session',
214
- });
215
- }
216
- }
217
- catch {
218
- // Best-effort — grade feedback should never block
219
- }
220
- }
221
- /** Append a grade result to .cleo/metrics/GRADES.jsonl */
222
- async function appendGradeResult(result, cwd) {
223
- try {
224
- const cleoDir = getCleoDirAbsolute(cwd);
225
- const metricsDir = join(cleoDir, 'metrics');
226
- await mkdir(metricsDir, { recursive: true });
227
- const gradesPath = join(metricsDir, 'GRADES.jsonl');
228
- const line = JSON.stringify({ ...result, evaluator: 'auto' }) + '\n';
229
- await appendFile(gradesPath, line, 'utf8');
230
- }
231
- catch {
232
- // Best-effort
233
- }
234
- }
235
- /** Read past grade results from .cleo/metrics/GRADES.jsonl */
236
- export async function readGrades(sessionId, cwd) {
237
- try {
238
- const cleoDir = getCleoDirAbsolute(cwd);
239
- const gradesPath = join(cleoDir, 'metrics', 'GRADES.jsonl');
240
- if (!existsSync(gradesPath))
241
- return [];
242
- const content = await readFile(gradesPath, 'utf8');
243
- const results = content
244
- .split('\n')
245
- .filter((l) => l.trim())
246
- .map((l) => JSON.parse(l));
247
- return sessionId ? results.filter((r) => r.sessionId === sessionId) : results;
248
- }
249
- catch {
250
- return [];
251
- }
252
- }
253
- //# sourceMappingURL=session-grade.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-grade.js","sourceRoot":"","sources":["../../src/sessions/session-grade.ts"],"names":[],"mappings":"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"}