@cleocode/core 2026.3.59 → 2026.3.61

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 (826) hide show
  1. package/dist/adapters/adapter-registry.js +64 -0
  2. package/dist/adapters/adapter-registry.js.map +1 -0
  3. package/dist/adapters/discovery.js +83 -0
  4. package/dist/adapters/discovery.js.map +1 -0
  5. package/dist/adapters/index.js +9 -0
  6. package/dist/adapters/index.js.map +1 -0
  7. package/dist/adapters/manager.js +260 -0
  8. package/dist/adapters/manager.js.map +1 -0
  9. package/dist/admin/export-tasks.js +171 -0
  10. package/dist/admin/export-tasks.js.map +1 -0
  11. package/dist/admin/export.js +103 -0
  12. package/dist/admin/export.js.map +1 -0
  13. package/dist/admin/help.js +106 -0
  14. package/dist/admin/help.js.map +1 -0
  15. package/dist/admin/import-tasks.js +182 -0
  16. package/dist/admin/import-tasks.js.map +1 -0
  17. package/dist/admin/import.js +129 -0
  18. package/dist/admin/import.js.map +1 -0
  19. package/dist/admin/index.js +13 -0
  20. package/dist/admin/index.js.map +1 -0
  21. package/dist/adrs/find.js +134 -0
  22. package/dist/adrs/find.js.map +1 -0
  23. package/dist/adrs/index.js +15 -0
  24. package/dist/adrs/index.js.map +1 -0
  25. package/dist/adrs/link-pipeline.js +160 -0
  26. package/dist/adrs/link-pipeline.js.map +1 -0
  27. package/dist/adrs/list.js +43 -0
  28. package/dist/adrs/list.js.map +1 -0
  29. package/dist/adrs/parse.js +51 -0
  30. package/dist/adrs/parse.js.map +1 -0
  31. package/dist/adrs/show.js +22 -0
  32. package/dist/adrs/show.js.map +1 -0
  33. package/dist/adrs/sync.js +188 -0
  34. package/dist/adrs/sync.js.map +1 -0
  35. package/dist/adrs/types.js +9 -0
  36. package/dist/adrs/types.js.map +1 -0
  37. package/dist/adrs/validate.js +57 -0
  38. package/dist/adrs/validate.js.map +1 -0
  39. package/dist/agents/agent-registry.js +288 -0
  40. package/dist/agents/agent-registry.js.map +1 -0
  41. package/dist/agents/agent-schema.js +85 -0
  42. package/dist/agents/agent-schema.js.map +1 -0
  43. package/dist/agents/capacity.js +116 -0
  44. package/dist/agents/capacity.js.map +1 -0
  45. package/dist/agents/execution-learning.js +474 -0
  46. package/dist/agents/execution-learning.js.map +1 -0
  47. package/dist/agents/health-monitor.js +217 -0
  48. package/dist/agents/health-monitor.js.map +1 -0
  49. package/dist/agents/index.js +29 -0
  50. package/dist/agents/index.js.map +1 -0
  51. package/dist/agents/registry.js +314 -0
  52. package/dist/agents/registry.js.map +1 -0
  53. package/dist/agents/retry.js +229 -0
  54. package/dist/agents/retry.js.map +1 -0
  55. package/dist/audit-prune.js +94 -0
  56. package/dist/audit-prune.js.map +1 -0
  57. package/dist/audit.js +68 -0
  58. package/dist/audit.js.map +1 -0
  59. package/dist/backfill/index.js +229 -0
  60. package/dist/backfill/index.js.map +1 -0
  61. package/dist/bootstrap.d.ts +2 -1
  62. package/dist/bootstrap.d.ts.map +1 -1
  63. package/dist/bootstrap.js +367 -0
  64. package/dist/bootstrap.js.map +1 -0
  65. package/dist/caamp/adapter.js +434 -0
  66. package/dist/caamp/adapter.js.map +1 -0
  67. package/dist/caamp/capability-check.js +38 -0
  68. package/dist/caamp/capability-check.js.map +1 -0
  69. package/dist/caamp/index.js +23 -0
  70. package/dist/caamp/index.js.map +1 -0
  71. package/dist/caamp-init.js +16 -0
  72. package/dist/caamp-init.js.map +1 -0
  73. package/dist/cleo.d.ts +40 -0
  74. package/dist/cleo.d.ts.map +1 -1
  75. package/dist/cleo.js +267 -0
  76. package/dist/cleo.js.map +1 -0
  77. package/dist/codebase-map/analyzers/architecture.js +130 -0
  78. package/dist/codebase-map/analyzers/architecture.js.map +1 -0
  79. package/dist/codebase-map/analyzers/concerns.js +122 -0
  80. package/dist/codebase-map/analyzers/concerns.js.map +1 -0
  81. package/dist/codebase-map/analyzers/conventions.js +149 -0
  82. package/dist/codebase-map/analyzers/conventions.js.map +1 -0
  83. package/dist/codebase-map/analyzers/integrations.js +108 -0
  84. package/dist/codebase-map/analyzers/integrations.js.map +1 -0
  85. package/dist/codebase-map/analyzers/stack.js +117 -0
  86. package/dist/codebase-map/analyzers/stack.js.map +1 -0
  87. package/dist/codebase-map/analyzers/structure.js +137 -0
  88. package/dist/codebase-map/analyzers/structure.js.map +1 -0
  89. package/dist/codebase-map/analyzers/testing.js +118 -0
  90. package/dist/codebase-map/analyzers/testing.js.map +1 -0
  91. package/dist/codebase-map/index.js +57 -0
  92. package/dist/codebase-map/index.js.map +1 -0
  93. package/dist/codebase-map/store.js +122 -0
  94. package/dist/codebase-map/store.js.map +1 -0
  95. package/dist/codebase-map/summary.js +152 -0
  96. package/dist/codebase-map/summary.js.map +1 -0
  97. package/dist/compliance/index.js +288 -0
  98. package/dist/compliance/index.js.map +1 -0
  99. package/dist/compliance/protocol-enforcement.js +332 -0
  100. package/dist/compliance/protocol-enforcement.js.map +1 -0
  101. package/dist/compliance/protocol-rules.js +786 -0
  102. package/dist/compliance/protocol-rules.js.map +1 -0
  103. package/dist/compliance/protocol-types.js +80 -0
  104. package/dist/compliance/protocol-types.js.map +1 -0
  105. package/dist/compliance/store.js +53 -0
  106. package/dist/compliance/store.js.map +1 -0
  107. package/dist/config/build-config.js +29 -0
  108. package/dist/config/build-config.js.map +1 -0
  109. package/dist/config.js +370 -0
  110. package/dist/config.js.map +1 -0
  111. package/dist/constants.js +18 -0
  112. package/dist/constants.js.map +1 -0
  113. package/dist/context/index.js +137 -0
  114. package/dist/context/index.js.map +1 -0
  115. package/dist/engine-result.js +12 -0
  116. package/dist/engine-result.js.map +1 -0
  117. package/dist/error-catalog.js +404 -0
  118. package/dist/error-catalog.js.map +1 -0
  119. package/dist/error-registry.js +393 -0
  120. package/dist/error-registry.js.map +1 -0
  121. package/dist/errors.js +167 -0
  122. package/dist/errors.js.map +1 -0
  123. package/dist/hooks/handlers/error-hooks.js +43 -0
  124. package/dist/hooks/handlers/error-hooks.js.map +1 -0
  125. package/dist/hooks/handlers/file-hooks.js +80 -0
  126. package/dist/hooks/handlers/file-hooks.js.map +1 -0
  127. package/dist/hooks/handlers/index.js +19 -0
  128. package/dist/hooks/handlers/index.js.map +1 -0
  129. package/dist/hooks/handlers/mcp-hooks.js +80 -0
  130. package/dist/hooks/handlers/mcp-hooks.js.map +1 -0
  131. package/dist/hooks/handlers/session-hooks.js +73 -0
  132. package/dist/hooks/handlers/session-hooks.js.map +1 -0
  133. package/dist/hooks/handlers/task-hooks.js +63 -0
  134. package/dist/hooks/handlers/task-hooks.js.map +1 -0
  135. package/dist/hooks/index.js +13 -0
  136. package/dist/hooks/index.js.map +1 -0
  137. package/dist/hooks/payload-schemas.js +163 -0
  138. package/dist/hooks/payload-schemas.js.map +1 -0
  139. package/dist/hooks/provider-hooks.js +34 -0
  140. package/dist/hooks/provider-hooks.js.map +1 -0
  141. package/dist/hooks/registry.js +176 -0
  142. package/dist/hooks/registry.js.map +1 -0
  143. package/dist/hooks/types.js +62 -0
  144. package/dist/hooks/types.js.map +1 -0
  145. package/dist/hooks.js +136 -0
  146. package/dist/hooks.js.map +1 -0
  147. package/dist/index.js +193 -35
  148. package/dist/index.js.map +3 -3
  149. package/dist/init.js +711 -0
  150. package/dist/init.js.map +1 -0
  151. package/dist/inject/index.js +82 -0
  152. package/dist/inject/index.js.map +1 -0
  153. package/dist/injection.js +343 -0
  154. package/dist/injection.js.map +1 -0
  155. package/dist/intelligence/adaptive-validation.js +497 -0
  156. package/dist/intelligence/adaptive-validation.js.map +1 -0
  157. package/dist/intelligence/impact.js +675 -0
  158. package/dist/intelligence/impact.js.map +1 -0
  159. package/dist/intelligence/index.js +22 -0
  160. package/dist/intelligence/index.js.map +1 -0
  161. package/dist/intelligence/patterns.js +492 -0
  162. package/dist/intelligence/patterns.js.map +1 -0
  163. package/dist/intelligence/prediction.js +499 -0
  164. package/dist/intelligence/prediction.js.map +1 -0
  165. package/dist/intelligence/types.js +13 -0
  166. package/dist/intelligence/types.js.map +1 -0
  167. package/dist/internal.d.ts +1 -0
  168. package/dist/internal.d.ts.map +1 -1
  169. package/dist/internal.js +267 -0
  170. package/dist/internal.js.map +1 -0
  171. package/dist/issue/create.js +121 -0
  172. package/dist/issue/create.js.map +1 -0
  173. package/dist/issue/diagnostics.js +59 -0
  174. package/dist/issue/diagnostics.js.map +1 -0
  175. package/dist/issue/index.js +10 -0
  176. package/dist/issue/index.js.map +1 -0
  177. package/dist/issue/template-parser.js +267 -0
  178. package/dist/issue/template-parser.js.map +1 -0
  179. package/dist/json-schema-validator.js +76 -0
  180. package/dist/json-schema-validator.js.map +1 -0
  181. package/dist/lib/index.js +10 -0
  182. package/dist/lib/index.js.map +1 -0
  183. package/dist/lib/retry.js +152 -0
  184. package/dist/lib/retry.js.map +1 -0
  185. package/dist/lifecycle/chain-composition.js +152 -0
  186. package/dist/lifecycle/chain-composition.js.map +1 -0
  187. package/dist/lifecycle/chain-store.js +246 -0
  188. package/dist/lifecycle/chain-store.js.map +1 -0
  189. package/dist/lifecycle/consolidate-rcasd.js +352 -0
  190. package/dist/lifecycle/consolidate-rcasd.js.map +1 -0
  191. package/dist/lifecycle/default-chain.js +167 -0
  192. package/dist/lifecycle/default-chain.js.map +1 -0
  193. package/dist/lifecycle/evidence.js +180 -0
  194. package/dist/lifecycle/evidence.js.map +1 -0
  195. package/dist/lifecycle/frontmatter.js +363 -0
  196. package/dist/lifecycle/frontmatter.js.map +1 -0
  197. package/dist/lifecycle/index.js +753 -0
  198. package/dist/lifecycle/index.js.map +1 -0
  199. package/dist/lifecycle/pipeline.js +656 -0
  200. package/dist/lifecycle/pipeline.js.map +1 -0
  201. package/dist/lifecycle/rcasd-index.js +326 -0
  202. package/dist/lifecycle/rcasd-index.js.map +1 -0
  203. package/dist/lifecycle/rcasd-paths.js +220 -0
  204. package/dist/lifecycle/rcasd-paths.js.map +1 -0
  205. package/dist/lifecycle/resume.js +864 -0
  206. package/dist/lifecycle/resume.js.map +1 -0
  207. package/dist/lifecycle/stage-artifacts.js +94 -0
  208. package/dist/lifecycle/stage-artifacts.js.map +1 -0
  209. package/dist/lifecycle/stages.js +534 -0
  210. package/dist/lifecycle/stages.js.map +1 -0
  211. package/dist/lifecycle/state-machine.js +516 -0
  212. package/dist/lifecycle/state-machine.js.map +1 -0
  213. package/dist/lifecycle/tessera-engine.js +249 -0
  214. package/dist/lifecycle/tessera-engine.js.map +1 -0
  215. package/dist/logger.js +140 -0
  216. package/dist/logger.js.map +1 -0
  217. package/dist/mcp/index.js +146 -0
  218. package/dist/mcp/index.js.map +1 -0
  219. package/dist/memory/auto-extract.js +143 -0
  220. package/dist/memory/auto-extract.js.map +1 -0
  221. package/dist/memory/brain-embedding.js +49 -0
  222. package/dist/memory/brain-embedding.js.map +1 -0
  223. package/dist/memory/brain-lifecycle.js +298 -0
  224. package/dist/memory/brain-lifecycle.js.map +1 -0
  225. package/dist/memory/brain-links.js +148 -0
  226. package/dist/memory/brain-links.js.map +1 -0
  227. package/dist/memory/brain-migration.js +149 -0
  228. package/dist/memory/brain-migration.js.map +1 -0
  229. package/dist/memory/brain-reasoning.js +215 -0
  230. package/dist/memory/brain-reasoning.js.map +1 -0
  231. package/dist/memory/brain-retrieval.js +474 -0
  232. package/dist/memory/brain-retrieval.js.map +1 -0
  233. package/dist/memory/brain-row-types.js +10 -0
  234. package/dist/memory/brain-row-types.js.map +1 -0
  235. package/dist/memory/brain-search.js +519 -0
  236. package/dist/memory/brain-search.js.map +1 -0
  237. package/dist/memory/brain-similarity.js +145 -0
  238. package/dist/memory/brain-similarity.js.map +1 -0
  239. package/dist/memory/claude-mem-migration.js +277 -0
  240. package/dist/memory/claude-mem-migration.js.map +1 -0
  241. package/dist/memory/decisions.js +148 -0
  242. package/dist/memory/decisions.js.map +1 -0
  243. package/dist/memory/engine-compat.js +1030 -0
  244. package/dist/memory/engine-compat.js.map +1 -0
  245. package/dist/memory/index.js +773 -0
  246. package/dist/memory/index.js.map +1 -0
  247. package/dist/memory/learnings.js +121 -0
  248. package/dist/memory/learnings.js.map +1 -0
  249. package/dist/memory/memory-bridge.js +289 -0
  250. package/dist/memory/memory-bridge.js.map +1 -0
  251. package/dist/memory/patterns.js +122 -0
  252. package/dist/memory/patterns.js.map +1 -0
  253. package/dist/memory/pipeline-manifest-sqlite.js +975 -0
  254. package/dist/memory/pipeline-manifest-sqlite.js.map +1 -0
  255. package/dist/memory/session-memory.js +226 -0
  256. package/dist/memory/session-memory.js.map +1 -0
  257. package/dist/metrics/ab-test.js +260 -0
  258. package/dist/metrics/ab-test.js.map +1 -0
  259. package/dist/metrics/aggregation.js +363 -0
  260. package/dist/metrics/aggregation.js.map +1 -0
  261. package/dist/metrics/common.js +64 -0
  262. package/dist/metrics/common.js.map +1 -0
  263. package/dist/metrics/enums.js +78 -0
  264. package/dist/metrics/enums.js.map +1 -0
  265. package/dist/metrics/index.js +19 -0
  266. package/dist/metrics/index.js.map +1 -0
  267. package/dist/metrics/model-provider-registry.js +88 -0
  268. package/dist/metrics/model-provider-registry.js.map +1 -0
  269. package/dist/metrics/otel-integration.js +263 -0
  270. package/dist/metrics/otel-integration.js.map +1 -0
  271. package/dist/metrics/provider-detection.js +103 -0
  272. package/dist/metrics/provider-detection.js.map +1 -0
  273. package/dist/metrics/token-estimation.js +253 -0
  274. package/dist/metrics/token-estimation.js.map +1 -0
  275. package/dist/metrics/token-service.js +450 -0
  276. package/dist/metrics/token-service.js.map +1 -0
  277. package/dist/migration/agent-outputs.js +316 -0
  278. package/dist/migration/agent-outputs.js.map +1 -0
  279. package/dist/migration/checksum.js +92 -0
  280. package/dist/migration/checksum.js.map +1 -0
  281. package/dist/migration/index.js +282 -0
  282. package/dist/migration/index.js.map +1 -0
  283. package/dist/migration/logger.js +360 -0
  284. package/dist/migration/logger.js.map +1 -0
  285. package/dist/migration/preflight.js +9 -0
  286. package/dist/migration/preflight.js.map +1 -0
  287. package/dist/migration/state.js +421 -0
  288. package/dist/migration/state.js.map +1 -0
  289. package/dist/migration/validate.js +241 -0
  290. package/dist/migration/validate.js.map +1 -0
  291. package/dist/nexus/deps.js +375 -0
  292. package/dist/nexus/deps.js.map +1 -0
  293. package/dist/nexus/discover.js +288 -0
  294. package/dist/nexus/discover.js.map +1 -0
  295. package/dist/nexus/hash.js +10 -0
  296. package/dist/nexus/hash.js.map +1 -0
  297. package/dist/nexus/index.js +38 -0
  298. package/dist/nexus/index.js.map +1 -0
  299. package/dist/nexus/migrate-json-to-sqlite.js +115 -0
  300. package/dist/nexus/migrate-json-to-sqlite.js.map +1 -0
  301. package/dist/nexus/permissions.js +105 -0
  302. package/dist/nexus/permissions.js.map +1 -0
  303. package/dist/nexus/query.js +175 -0
  304. package/dist/nexus/query.js.map +1 -0
  305. package/dist/nexus/registry.js +584 -0
  306. package/dist/nexus/registry.js.map +1 -0
  307. package/dist/nexus/sharing/index.js +288 -0
  308. package/dist/nexus/sharing/index.js.map +1 -0
  309. package/dist/nexus/transfer-types.js +8 -0
  310. package/dist/nexus/transfer-types.js.map +1 -0
  311. package/dist/nexus/transfer.js +263 -0
  312. package/dist/nexus/transfer.js.map +1 -0
  313. package/dist/observability/index.js +103 -0
  314. package/dist/observability/index.js.map +1 -0
  315. package/dist/observability/log-filter.js +63 -0
  316. package/dist/observability/log-filter.js.map +1 -0
  317. package/dist/observability/log-parser.js +99 -0
  318. package/dist/observability/log-parser.js.map +1 -0
  319. package/dist/observability/log-reader.js +139 -0
  320. package/dist/observability/log-reader.js.map +1 -0
  321. package/dist/observability/types.js +19 -0
  322. package/dist/observability/types.js.map +1 -0
  323. package/dist/orchestration/analyze.js +107 -0
  324. package/dist/orchestration/analyze.js.map +1 -0
  325. package/dist/orchestration/bootstrap.js +132 -0
  326. package/dist/orchestration/bootstrap.js.map +1 -0
  327. package/dist/orchestration/context.js +56 -0
  328. package/dist/orchestration/context.js.map +1 -0
  329. package/dist/orchestration/critical-path.js +100 -0
  330. package/dist/orchestration/critical-path.js.map +1 -0
  331. package/dist/orchestration/index.js +286 -0
  332. package/dist/orchestration/index.js.map +1 -0
  333. package/dist/orchestration/parallel.js +89 -0
  334. package/dist/orchestration/parallel.js.map +1 -0
  335. package/dist/orchestration/protocol-validators.js +524 -0
  336. package/dist/orchestration/protocol-validators.js.map +1 -0
  337. package/dist/orchestration/skill-ops.js +98 -0
  338. package/dist/orchestration/skill-ops.js.map +1 -0
  339. package/dist/orchestration/status.js +107 -0
  340. package/dist/orchestration/status.js.map +1 -0
  341. package/dist/orchestration/unblock.js +103 -0
  342. package/dist/orchestration/unblock.js.map +1 -0
  343. package/dist/orchestration/validate-spawn.js +67 -0
  344. package/dist/orchestration/validate-spawn.js.map +1 -0
  345. package/dist/orchestration/waves.js +86 -0
  346. package/dist/orchestration/waves.js.map +1 -0
  347. package/dist/otel/index.js +163 -0
  348. package/dist/otel/index.js.map +1 -0
  349. package/dist/output.js +132 -0
  350. package/dist/output.js.map +1 -0
  351. package/dist/pagination.js +61 -0
  352. package/dist/pagination.js.map +1 -0
  353. package/dist/paths.js +337 -0
  354. package/dist/paths.js.map +1 -0
  355. package/dist/phases/deps.js +369 -0
  356. package/dist/phases/deps.js.map +1 -0
  357. package/dist/phases/index.js +349 -0
  358. package/dist/phases/index.js.map +1 -0
  359. package/dist/pipeline/index.js +10 -0
  360. package/dist/pipeline/index.js.map +1 -0
  361. package/dist/pipeline/phase.js +45 -0
  362. package/dist/pipeline/phase.js.map +1 -0
  363. package/dist/platform.js +211 -0
  364. package/dist/platform.js.map +1 -0
  365. package/dist/project-info.js +84 -0
  366. package/dist/project-info.js.map +1 -0
  367. package/dist/reconciliation/index.js +10 -0
  368. package/dist/reconciliation/index.js.map +1 -0
  369. package/dist/reconciliation/link-store.js +129 -0
  370. package/dist/reconciliation/link-store.js.map +1 -0
  371. package/dist/reconciliation/reconciliation-engine.js +298 -0
  372. package/dist/reconciliation/reconciliation-engine.js.map +1 -0
  373. package/dist/release/artifacts.js +427 -0
  374. package/dist/release/artifacts.js.map +1 -0
  375. package/dist/release/changelog-writer.js +151 -0
  376. package/dist/release/changelog-writer.js.map +1 -0
  377. package/dist/release/channel.js +144 -0
  378. package/dist/release/channel.js.map +1 -0
  379. package/dist/release/ci.js +166 -0
  380. package/dist/release/ci.js.map +1 -0
  381. package/dist/release/github-pr.js +225 -0
  382. package/dist/release/github-pr.js.map +1 -0
  383. package/dist/release/guards.js +116 -0
  384. package/dist/release/guards.js.map +1 -0
  385. package/dist/release/index.js +22 -0
  386. package/dist/release/index.js.map +1 -0
  387. package/dist/release/release-config.js +158 -0
  388. package/dist/release/release-config.js.map +1 -0
  389. package/dist/release/release-manifest.js +1019 -0
  390. package/dist/release/release-manifest.js.map +1 -0
  391. package/dist/release/version-bump.js +255 -0
  392. package/dist/release/version-bump.js.map +1 -0
  393. package/dist/remote/index.js +257 -0
  394. package/dist/remote/index.js.map +1 -0
  395. package/dist/repair.d.ts +7 -0
  396. package/dist/repair.d.ts.map +1 -1
  397. package/dist/repair.js +89 -0
  398. package/dist/repair.js.map +1 -0
  399. package/dist/research/index.js +2 -0
  400. package/dist/research/index.js.map +1 -0
  401. package/dist/roadmap/index.js +59 -0
  402. package/dist/roadmap/index.js.map +1 -0
  403. package/dist/routing/capability-matrix.js +1550 -0
  404. package/dist/routing/capability-matrix.js.map +1 -0
  405. package/dist/routing/index.js +9 -0
  406. package/dist/routing/index.js.map +1 -0
  407. package/dist/scaffold.d.ts.map +1 -1
  408. package/dist/scaffold.js +1178 -0
  409. package/dist/scaffold.js.map +1 -0
  410. package/dist/schema-management.js +295 -0
  411. package/dist/schema-management.js.map +1 -0
  412. package/dist/security/index.js +9 -0
  413. package/dist/security/index.js.map +1 -0
  414. package/dist/security/input-sanitization.js +321 -0
  415. package/dist/security/input-sanitization.js.map +1 -0
  416. package/dist/sequence/index.js +295 -0
  417. package/dist/sequence/index.js.map +1 -0
  418. package/dist/sessions/assumptions.js +54 -0
  419. package/dist/sessions/assumptions.js.map +1 -0
  420. package/dist/sessions/briefing.js +377 -0
  421. package/dist/sessions/briefing.js.map +1 -0
  422. package/dist/sessions/context-alert.js +222 -0
  423. package/dist/sessions/context-alert.js.map +1 -0
  424. package/dist/sessions/context-inject.js +61 -0
  425. package/dist/sessions/context-inject.js.map +1 -0
  426. package/dist/sessions/context-monitor.js +98 -0
  427. package/dist/sessions/context-monitor.js.map +1 -0
  428. package/dist/sessions/decisions.js +65 -0
  429. package/dist/sessions/decisions.js.map +1 -0
  430. package/dist/sessions/find.js +63 -0
  431. package/dist/sessions/find.js.map +1 -0
  432. package/dist/sessions/handoff.js +328 -0
  433. package/dist/sessions/handoff.js.map +1 -0
  434. package/dist/sessions/hitl-warnings.js +254 -0
  435. package/dist/sessions/hitl-warnings.js.map +1 -0
  436. package/dist/sessions/index.js +318 -0
  437. package/dist/sessions/index.js.map +1 -0
  438. package/dist/sessions/session-archive.js +40 -0
  439. package/dist/sessions/session-archive.js.map +1 -0
  440. package/dist/sessions/session-cleanup.js +59 -0
  441. package/dist/sessions/session-cleanup.js.map +1 -0
  442. package/dist/sessions/session-drift.js +134 -0
  443. package/dist/sessions/session-drift.js.map +1 -0
  444. package/dist/sessions/session-enforcement.js +144 -0
  445. package/dist/sessions/session-enforcement.js.map +1 -0
  446. package/dist/sessions/session-grade.js +253 -0
  447. package/dist/sessions/session-grade.js.map +1 -0
  448. package/dist/sessions/session-history.js +42 -0
  449. package/dist/sessions/session-history.js.map +1 -0
  450. package/dist/sessions/session-id.js +81 -0
  451. package/dist/sessions/session-id.js.map +1 -0
  452. package/dist/sessions/session-memory-bridge.js +52 -0
  453. package/dist/sessions/session-memory-bridge.js.map +1 -0
  454. package/dist/sessions/session-show.js +24 -0
  455. package/dist/sessions/session-show.js.map +1 -0
  456. package/dist/sessions/session-stats.js +69 -0
  457. package/dist/sessions/session-stats.js.map +1 -0
  458. package/dist/sessions/session-suspend.js +39 -0
  459. package/dist/sessions/session-suspend.js.map +1 -0
  460. package/dist/sessions/session-switch.js +51 -0
  461. package/dist/sessions/session-switch.js.map +1 -0
  462. package/dist/sessions/session-view.js +76 -0
  463. package/dist/sessions/session-view.js.map +1 -0
  464. package/dist/sessions/statusline-setup.js +85 -0
  465. package/dist/sessions/statusline-setup.js.map +1 -0
  466. package/dist/sessions/types.js +8 -0
  467. package/dist/sessions/types.js.map +1 -0
  468. package/dist/signaldock/claude-code-transport.js +107 -0
  469. package/dist/signaldock/claude-code-transport.js.map +1 -0
  470. package/dist/signaldock/factory.js +25 -0
  471. package/dist/signaldock/factory.js.map +1 -0
  472. package/dist/signaldock/index.js +9 -0
  473. package/dist/signaldock/index.js.map +1 -0
  474. package/dist/signaldock/signaldock-transport.js +122 -0
  475. package/dist/signaldock/signaldock-transport.js.map +1 -0
  476. package/dist/signaldock/transport.js +11 -0
  477. package/dist/signaldock/transport.js.map +1 -0
  478. package/dist/signaldock/types.js +11 -0
  479. package/dist/signaldock/types.js.map +1 -0
  480. package/dist/skills/agents/config.js +94 -0
  481. package/dist/skills/agents/config.js.map +1 -0
  482. package/dist/skills/agents/install.js +116 -0
  483. package/dist/skills/agents/install.js.map +1 -0
  484. package/dist/skills/agents/registry.js +161 -0
  485. package/dist/skills/agents/registry.js.map +1 -0
  486. package/dist/skills/discovery.js +333 -0
  487. package/dist/skills/discovery.js.map +1 -0
  488. package/dist/skills/dispatch.js +347 -0
  489. package/dist/skills/dispatch.js.map +1 -0
  490. package/dist/skills/dynamic-skill-generator.js +100 -0
  491. package/dist/skills/dynamic-skill-generator.js.map +1 -0
  492. package/dist/skills/index.js +44 -0
  493. package/dist/skills/index.js.map +1 -0
  494. package/dist/skills/injection/subagent.js +195 -0
  495. package/dist/skills/injection/subagent.js.map +1 -0
  496. package/dist/skills/injection/token.js +260 -0
  497. package/dist/skills/injection/token.js.map +1 -0
  498. package/dist/skills/install.js +40 -0
  499. package/dist/skills/install.js.map +1 -0
  500. package/dist/skills/manifests/contribution.js +175 -0
  501. package/dist/skills/manifests/contribution.js.map +1 -0
  502. package/dist/skills/manifests/research.js +281 -0
  503. package/dist/skills/manifests/research.js.map +1 -0
  504. package/dist/skills/manifests/resolver.js +146 -0
  505. package/dist/skills/manifests/resolver.js.map +1 -0
  506. package/dist/skills/marketplace.js +90 -0
  507. package/dist/skills/marketplace.js.map +1 -0
  508. package/dist/skills/orchestrator/spawn.js +178 -0
  509. package/dist/skills/orchestrator/spawn.js.map +1 -0
  510. package/dist/skills/orchestrator/startup.js +451 -0
  511. package/dist/skills/orchestrator/startup.js.map +1 -0
  512. package/dist/skills/orchestrator/validator.js +301 -0
  513. package/dist/skills/orchestrator/validator.js.map +1 -0
  514. package/dist/skills/precedence-integration.js +73 -0
  515. package/dist/skills/precedence-integration.js.map +1 -0
  516. package/dist/skills/precedence-types.js +16 -0
  517. package/dist/skills/precedence-types.js.map +1 -0
  518. package/dist/skills/routing-table.js +63 -0
  519. package/dist/skills/routing-table.js.map +1 -0
  520. package/dist/skills/skill-paths.js +220 -0
  521. package/dist/skills/skill-paths.js.map +1 -0
  522. package/dist/skills/test-utility.js +55 -0
  523. package/dist/skills/test-utility.js.map +1 -0
  524. package/dist/skills/types.js +118 -0
  525. package/dist/skills/types.js.map +1 -0
  526. package/dist/skills/validation.js +183 -0
  527. package/dist/skills/validation.js.map +1 -0
  528. package/dist/skills/version.js +57 -0
  529. package/dist/skills/version.js.map +1 -0
  530. package/dist/snapshot/index.js +188 -0
  531. package/dist/snapshot/index.js.map +1 -0
  532. package/dist/spawn/adapter-registry.js +246 -0
  533. package/dist/spawn/adapter-registry.js.map +1 -0
  534. package/dist/spawn/index.js +10 -0
  535. package/dist/spawn/index.js.map +1 -0
  536. package/dist/stats/index.js +341 -0
  537. package/dist/stats/index.js.map +1 -0
  538. package/dist/stats/workflow-telemetry.js +400 -0
  539. package/dist/stats/workflow-telemetry.js.map +1 -0
  540. package/dist/sticky/archive.js +47 -0
  541. package/dist/sticky/archive.js.map +1 -0
  542. package/dist/sticky/convert.js +235 -0
  543. package/dist/sticky/convert.js.map +1 -0
  544. package/dist/sticky/create.js +48 -0
  545. package/dist/sticky/create.js.map +1 -0
  546. package/dist/sticky/id.js +35 -0
  547. package/dist/sticky/id.js.map +1 -0
  548. package/dist/sticky/index.js +16 -0
  549. package/dist/sticky/index.js.map +1 -0
  550. package/dist/sticky/list.js +44 -0
  551. package/dist/sticky/list.js.map +1 -0
  552. package/dist/sticky/purge.js +45 -0
  553. package/dist/sticky/purge.js.map +1 -0
  554. package/dist/sticky/show.js +42 -0
  555. package/dist/sticky/show.js.map +1 -0
  556. package/dist/sticky/types.js +10 -0
  557. package/dist/sticky/types.js.map +1 -0
  558. package/dist/store/atomic.js +167 -0
  559. package/dist/store/atomic.js.map +1 -0
  560. package/dist/store/backup.js +94 -0
  561. package/dist/store/backup.js.map +1 -0
  562. package/dist/store/brain-accessor.js +397 -0
  563. package/dist/store/brain-accessor.js.map +1 -0
  564. package/dist/store/brain-schema.js +215 -0
  565. package/dist/store/brain-schema.js.map +1 -0
  566. package/dist/store/brain-sqlite.js +271 -0
  567. package/dist/store/brain-sqlite.js.map +1 -0
  568. package/dist/store/cache.js +168 -0
  569. package/dist/store/cache.js.map +1 -0
  570. package/dist/store/chain-schema.js +51 -0
  571. package/dist/store/chain-schema.js.map +1 -0
  572. package/dist/store/converters.js +122 -0
  573. package/dist/store/converters.js.map +1 -0
  574. package/dist/store/cross-db-cleanup.js +169 -0
  575. package/dist/store/cross-db-cleanup.js.map +1 -0
  576. package/dist/store/data-accessor.js +26 -0
  577. package/dist/store/data-accessor.js.map +1 -0
  578. package/dist/store/data-safety-central.js +269 -0
  579. package/dist/store/data-safety-central.js.map +1 -0
  580. package/dist/store/data-safety.js +274 -0
  581. package/dist/store/data-safety.js.map +1 -0
  582. package/dist/store/db-helpers.js +223 -0
  583. package/dist/store/db-helpers.js.map +1 -0
  584. package/dist/store/export.js +155 -0
  585. package/dist/store/export.js.map +1 -0
  586. package/dist/store/file-utils.js +270 -0
  587. package/dist/store/file-utils.js.map +1 -0
  588. package/dist/store/git-checkpoint.js +365 -0
  589. package/dist/store/git-checkpoint.js.map +1 -0
  590. package/dist/store/import-logging.js +139 -0
  591. package/dist/store/import-logging.js.map +1 -0
  592. package/dist/store/import-remap.js +145 -0
  593. package/dist/store/import-remap.js.map +1 -0
  594. package/dist/store/import-sort.js +121 -0
  595. package/dist/store/import-sort.js.map +1 -0
  596. package/dist/store/index.js +28 -0
  597. package/dist/store/index.js.map +1 -0
  598. package/dist/store/json.js +208 -0
  599. package/dist/store/json.js.map +1 -0
  600. package/dist/store/lifecycle-store.js +249 -0
  601. package/dist/store/lifecycle-store.js.map +1 -0
  602. package/dist/store/lock.js +70 -0
  603. package/dist/store/lock.js.map +1 -0
  604. package/dist/store/migration-sqlite.js +676 -0
  605. package/dist/store/migration-sqlite.js.map +1 -0
  606. package/dist/store/nexus-schema.js +62 -0
  607. package/dist/store/nexus-schema.js.map +1 -0
  608. package/dist/store/nexus-sqlite.js +217 -0
  609. package/dist/store/nexus-sqlite.js.map +1 -0
  610. package/dist/store/nexus-validation-schemas.js +40 -0
  611. package/dist/store/nexus-validation-schemas.js.map +1 -0
  612. package/dist/store/parsers.js +37 -0
  613. package/dist/store/parsers.js.map +1 -0
  614. package/dist/store/project-detect.js +457 -0
  615. package/dist/store/project-detect.js.map +1 -0
  616. package/dist/store/provider.js +101 -0
  617. package/dist/store/provider.js.map +1 -0
  618. package/dist/store/safety-data-accessor.js +243 -0
  619. package/dist/store/safety-data-accessor.js.map +1 -0
  620. package/dist/store/schema.js +7 -0
  621. package/dist/store/schema.js.map +1 -0
  622. package/dist/store/session-store.js +219 -0
  623. package/dist/store/session-store.js.map +1 -0
  624. package/dist/store/sqlite-backup.js +105 -0
  625. package/dist/store/sqlite-backup.js.map +1 -0
  626. package/dist/store/sqlite-data-accessor.js +734 -0
  627. package/dist/store/sqlite-data-accessor.js.map +1 -0
  628. package/dist/store/sqlite.d.ts.map +1 -1
  629. package/dist/store/sqlite.js +500 -0
  630. package/dist/store/sqlite.js.map +1 -0
  631. package/dist/store/status-registry.js +8 -0
  632. package/dist/store/status-registry.js.map +1 -0
  633. package/dist/store/task-store.js +348 -0
  634. package/dist/store/task-store.js.map +1 -0
  635. package/dist/store/tasks-schema.js +604 -0
  636. package/dist/store/tasks-schema.js.map +1 -0
  637. package/dist/store/typed-query.js +15 -0
  638. package/dist/store/typed-query.js.map +1 -0
  639. package/dist/store/validation-schemas.js +278 -0
  640. package/dist/store/validation-schemas.js.map +1 -0
  641. package/dist/system/archive-analytics.js +277 -0
  642. package/dist/system/archive-analytics.js.map +1 -0
  643. package/dist/system/archive-stats.js +64 -0
  644. package/dist/system/archive-stats.js.map +1 -0
  645. package/dist/system/audit.js +145 -0
  646. package/dist/system/audit.js.map +1 -0
  647. package/dist/system/backup.js +99 -0
  648. package/dist/system/backup.js.map +1 -0
  649. package/dist/system/cleanup.js +134 -0
  650. package/dist/system/cleanup.js.map +1 -0
  651. package/dist/system/health.js +1054 -0
  652. package/dist/system/health.js.map +1 -0
  653. package/dist/system/index.js +18 -0
  654. package/dist/system/index.js.map +1 -0
  655. package/dist/system/inject-generate.js +122 -0
  656. package/dist/system/inject-generate.js.map +1 -0
  657. package/dist/system/labels.js +38 -0
  658. package/dist/system/labels.js.map +1 -0
  659. package/dist/system/metrics.js +61 -0
  660. package/dist/system/metrics.js.map +1 -0
  661. package/dist/system/migrate.js +43 -0
  662. package/dist/system/migrate.js.map +1 -0
  663. package/dist/system/platform-paths.js +80 -0
  664. package/dist/system/platform-paths.js.map +1 -0
  665. package/dist/system/runtime.js +161 -0
  666. package/dist/system/runtime.js.map +1 -0
  667. package/dist/system/safestop.js +99 -0
  668. package/dist/system/safestop.js.map +1 -0
  669. package/dist/system/storage-preflight.js +123 -0
  670. package/dist/system/storage-preflight.js.map +1 -0
  671. package/dist/task-work/index.js +155 -0
  672. package/dist/task-work/index.js.map +1 -0
  673. package/dist/tasks/add.js +594 -0
  674. package/dist/tasks/add.js.map +1 -0
  675. package/dist/tasks/analyze.js +85 -0
  676. package/dist/tasks/analyze.js.map +1 -0
  677. package/dist/tasks/archive.js +90 -0
  678. package/dist/tasks/archive.js.map +1 -0
  679. package/dist/tasks/atomicity.js +83 -0
  680. package/dist/tasks/atomicity.js.map +1 -0
  681. package/dist/tasks/cancel-ops.js +83 -0
  682. package/dist/tasks/cancel-ops.js.map +1 -0
  683. package/dist/tasks/complete.js +235 -0
  684. package/dist/tasks/complete.js.map +1 -0
  685. package/dist/tasks/crossref-extract.js +73 -0
  686. package/dist/tasks/crossref-extract.js.map +1 -0
  687. package/dist/tasks/delete-preview.js +192 -0
  688. package/dist/tasks/delete-preview.js.map +1 -0
  689. package/dist/tasks/delete.js +120 -0
  690. package/dist/tasks/delete.js.map +1 -0
  691. package/dist/tasks/deletion-strategy.js +200 -0
  692. package/dist/tasks/deletion-strategy.js.map +1 -0
  693. package/dist/tasks/dependency-check.js +278 -0
  694. package/dist/tasks/dependency-check.js.map +1 -0
  695. package/dist/tasks/deps-ready.js +32 -0
  696. package/dist/tasks/deps-ready.js.map +1 -0
  697. package/dist/tasks/enforcement.js +89 -0
  698. package/dist/tasks/enforcement.js.map +1 -0
  699. package/dist/tasks/epic-enforcement.js +294 -0
  700. package/dist/tasks/epic-enforcement.js.map +1 -0
  701. package/dist/tasks/find.js +148 -0
  702. package/dist/tasks/find.js.map +1 -0
  703. package/dist/tasks/graph-cache.js +127 -0
  704. package/dist/tasks/graph-cache.js.map +1 -0
  705. package/dist/tasks/graph-ops.js +171 -0
  706. package/dist/tasks/graph-ops.js.map +1 -0
  707. package/dist/tasks/graph-rag.js +328 -0
  708. package/dist/tasks/graph-rag.js.map +1 -0
  709. package/dist/tasks/hierarchy-policy.js +149 -0
  710. package/dist/tasks/hierarchy-policy.js.map +1 -0
  711. package/dist/tasks/hierarchy.js +185 -0
  712. package/dist/tasks/hierarchy.js.map +1 -0
  713. package/dist/tasks/id-generator.js +65 -0
  714. package/dist/tasks/id-generator.js.map +1 -0
  715. package/dist/tasks/index.js +14 -0
  716. package/dist/tasks/index.js.map +1 -0
  717. package/dist/tasks/labels.js +52 -0
  718. package/dist/tasks/labels.js.map +1 -0
  719. package/dist/tasks/list.js +68 -0
  720. package/dist/tasks/list.js.map +1 -0
  721. package/dist/tasks/phase-tracking.js +133 -0
  722. package/dist/tasks/phase-tracking.js.map +1 -0
  723. package/dist/tasks/pipeline-stage.js +248 -0
  724. package/dist/tasks/pipeline-stage.js.map +1 -0
  725. package/dist/tasks/plan.js +268 -0
  726. package/dist/tasks/plan.js.map +1 -0
  727. package/dist/tasks/relates.js +89 -0
  728. package/dist/tasks/relates.js.map +1 -0
  729. package/dist/tasks/reparent.d.ts +38 -0
  730. package/dist/tasks/reparent.d.ts.map +1 -0
  731. package/dist/tasks/show.js +78 -0
  732. package/dist/tasks/show.js.map +1 -0
  733. package/dist/tasks/size-weighting.js +86 -0
  734. package/dist/tasks/size-weighting.js.map +1 -0
  735. package/dist/tasks/staleness.js +86 -0
  736. package/dist/tasks/staleness.js.map +1 -0
  737. package/dist/tasks/task-ops.js +1340 -0
  738. package/dist/tasks/task-ops.js.map +1 -0
  739. package/dist/tasks/update.js +271 -0
  740. package/dist/tasks/update.js.map +1 -0
  741. package/dist/templates/index.js +10 -0
  742. package/dist/templates/index.js.map +1 -0
  743. package/dist/templates/parser.js +254 -0
  744. package/dist/templates/parser.js.map +1 -0
  745. package/dist/ui/aliases.js +153 -0
  746. package/dist/ui/aliases.js.map +1 -0
  747. package/dist/ui/changelog.js +184 -0
  748. package/dist/ui/changelog.js.map +1 -0
  749. package/dist/ui/command-registry.js +168 -0
  750. package/dist/ui/command-registry.js.map +1 -0
  751. package/dist/ui/flags.js +94 -0
  752. package/dist/ui/flags.js.map +1 -0
  753. package/dist/ui/index.js +24 -0
  754. package/dist/ui/index.js.map +1 -0
  755. package/dist/ui/injection-legacy.d.ts +26 -0
  756. package/dist/ui/injection-legacy.d.ts.map +1 -0
  757. package/dist/ui/injection-legacy.js +42 -0
  758. package/dist/ui/injection-legacy.js.map +1 -0
  759. package/dist/upgrade.js +901 -0
  760. package/dist/upgrade.js.map +1 -0
  761. package/dist/validation/chain-validation.js +146 -0
  762. package/dist/validation/chain-validation.js.map +1 -0
  763. package/dist/validation/compliance.js +155 -0
  764. package/dist/validation/compliance.js.map +1 -0
  765. package/dist/validation/docs-sync.js +212 -0
  766. package/dist/validation/docs-sync.js.map +1 -0
  767. package/dist/validation/doctor/checks.js +1069 -0
  768. package/dist/validation/doctor/checks.js.map +1 -0
  769. package/dist/validation/doctor/index.js +9 -0
  770. package/dist/validation/doctor/index.js.map +1 -0
  771. package/dist/validation/doctor/project-cache.js +160 -0
  772. package/dist/validation/doctor/project-cache.js.map +1 -0
  773. package/dist/validation/doctor/utils.js +155 -0
  774. package/dist/validation/doctor/utils.js.map +1 -0
  775. package/dist/validation/engine.js +902 -0
  776. package/dist/validation/engine.js.map +1 -0
  777. package/dist/validation/gap-check.js +175 -0
  778. package/dist/validation/gap-check.js.map +1 -0
  779. package/dist/validation/index.js +40 -0
  780. package/dist/validation/index.js.map +1 -0
  781. package/dist/validation/manifest.js +237 -0
  782. package/dist/validation/manifest.js.map +1 -0
  783. package/dist/validation/operation-gate-validators.js +724 -0
  784. package/dist/validation/operation-gate-validators.js.map +1 -0
  785. package/dist/validation/operation-verification-gates.js +532 -0
  786. package/dist/validation/operation-verification-gates.js.map +1 -0
  787. package/dist/validation/param-utils.js +139 -0
  788. package/dist/validation/param-utils.js.map +1 -0
  789. package/dist/validation/protocol-common.js +300 -0
  790. package/dist/validation/protocol-common.js.map +1 -0
  791. package/dist/validation/protocols/consensus.js +71 -0
  792. package/dist/validation/protocols/consensus.js.map +1 -0
  793. package/dist/validation/protocols/contribution.js +59 -0
  794. package/dist/validation/protocols/contribution.js.map +1 -0
  795. package/dist/validation/protocols/decomposition.js +59 -0
  796. package/dist/validation/protocols/decomposition.js.map +1 -0
  797. package/dist/validation/protocols/implementation.js +59 -0
  798. package/dist/validation/protocols/implementation.js.map +1 -0
  799. package/dist/validation/protocols/release-protocol.js +60 -0
  800. package/dist/validation/protocols/release-protocol.js.map +1 -0
  801. package/dist/validation/protocols/research.js +77 -0
  802. package/dist/validation/protocols/research.js.map +1 -0
  803. package/dist/validation/protocols/specification.js +84 -0
  804. package/dist/validation/protocols/specification.js.map +1 -0
  805. package/dist/validation/protocols/testing-protocol.js +70 -0
  806. package/dist/validation/protocols/testing-protocol.js.map +1 -0
  807. package/dist/validation/protocols/validation-protocol.js +70 -0
  808. package/dist/validation/protocols/validation-protocol.js.map +1 -0
  809. package/dist/validation/schema-integrity.js +170 -0
  810. package/dist/validation/schema-integrity.js.map +1 -0
  811. package/dist/validation/schema-validator.js +176 -0
  812. package/dist/validation/schema-validator.js.map +1 -0
  813. package/dist/validation/validate-ops.js +937 -0
  814. package/dist/validation/validate-ops.js.map +1 -0
  815. package/dist/validation/validation-rules.js +226 -0
  816. package/dist/validation/validation-rules.js.map +1 -0
  817. package/dist/validation/verification.js +321 -0
  818. package/dist/validation/verification.js.map +1 -0
  819. package/package.json +5 -5
  820. package/src/agents/__tests__/agent-registry.test.ts +1 -1
  821. package/src/bootstrap.ts +171 -30
  822. package/src/cleo.ts +103 -2
  823. package/src/internal.ts +1 -1
  824. package/src/repair.ts +53 -2
  825. package/src/scaffold.ts +24 -2
  826. package/src/store/sqlite.ts +72 -5
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Topological sort for import order using Kahn's algorithm.
3
+ * Ported from lib/data/import-sort.sh
4
+ *
5
+ * Ensures tasks are imported in dependency order where:
6
+ * 1. Parents are imported before children (parentId references)
7
+ * 2. Dependencies are imported before dependents (depends[] references)
8
+ *
9
+ * @task T4552
10
+ * @epic T4545
11
+ */
12
+ import { ExitCode } from '@cleocode/contracts';
13
+ import { CleoError } from '../errors.js';
14
+ /**
15
+ * Topological sort for task import order using Kahn's algorithm.
16
+ *
17
+ * Ensures tasks are imported in dependency order:
18
+ * - Parents before children (parentId references)
19
+ * - Dependencies before dependents (depends[] references)
20
+ * - Only counts edges to tasks within the set (external deps ignored)
21
+ *
22
+ * @task T4552
23
+ */
24
+ export function topologicalSortTasks(tasks) {
25
+ if (tasks.length === 0)
26
+ return [];
27
+ // Build lookup from id to index
28
+ const idToIndex = new Map();
29
+ for (let i = 0; i < tasks.length; i++) {
30
+ idToIndex.set(tasks[i].id, i);
31
+ }
32
+ // Initialize graph nodes
33
+ const nodes = tasks.map((task) => {
34
+ // Count in-degree: edges from parentId + depends that are within the set
35
+ let inDegree = 0;
36
+ if (task.parentId && idToIndex.has(task.parentId)) {
37
+ inDegree++;
38
+ }
39
+ const deps = task.depends ?? [];
40
+ for (const dep of deps) {
41
+ if (idToIndex.has(dep)) {
42
+ inDegree++;
43
+ }
44
+ }
45
+ return {
46
+ id: task.id,
47
+ inDegree,
48
+ children: [],
49
+ dependents: [],
50
+ };
51
+ });
52
+ // Build reverse edges (parent -> children, dep -> dependents)
53
+ for (const task of tasks) {
54
+ // Add to parent's children list
55
+ if (task.parentId) {
56
+ const parentIdx = idToIndex.get(task.parentId);
57
+ if (parentIdx !== undefined) {
58
+ nodes[parentIdx].children.push(task.id);
59
+ }
60
+ }
61
+ // Add to each dep's dependents list
62
+ const deps = task.depends ?? [];
63
+ for (const dep of deps) {
64
+ const depIdx = idToIndex.get(dep);
65
+ if (depIdx !== undefined) {
66
+ nodes[depIdx].dependents.push(task.id);
67
+ }
68
+ }
69
+ }
70
+ // Build node lookup by ID for efficient access
71
+ const nodeById = new Map();
72
+ for (const node of nodes) {
73
+ nodeById.set(node.id, node);
74
+ }
75
+ // Kahn's algorithm: initialize queue with zero in-degree nodes
76
+ const queue = [];
77
+ for (const node of nodes) {
78
+ if (node.inDegree === 0) {
79
+ queue.push(node.id);
80
+ }
81
+ }
82
+ const result = [];
83
+ while (queue.length > 0) {
84
+ const current = queue.shift();
85
+ result.push(current);
86
+ const currentNode = nodeById.get(current);
87
+ // Process all successors (children + dependents)
88
+ const successors = [...currentNode.children, ...currentNode.dependents];
89
+ for (const successorId of successors) {
90
+ const successor = nodeById.get(successorId);
91
+ if (!successor)
92
+ continue;
93
+ successor.inDegree--;
94
+ if (successor.inDegree === 0) {
95
+ queue.push(successorId);
96
+ }
97
+ }
98
+ }
99
+ // Cycle detection
100
+ if (result.length !== tasks.length) {
101
+ const processed = new Set(result);
102
+ const unprocessed = tasks.map((t) => t.id).filter((id) => !processed.has(id));
103
+ throw new CleoError(ExitCode.VALIDATION_ERROR, `Cycle detected in task dependencies. Tasks in cycle: ${unprocessed.join(', ')}`);
104
+ }
105
+ return result;
106
+ }
107
+ /**
108
+ * Detect cycles in task dependency graph.
109
+ * Returns true if no cycles, false if cycles detected.
110
+ * @task T4552
111
+ */
112
+ export function detectCycles(tasks) {
113
+ try {
114
+ topologicalSortTasks(tasks);
115
+ return true; // No cycles
116
+ }
117
+ catch {
118
+ return false; // Cycles detected
119
+ }
120
+ }
121
+ //# sourceMappingURL=import-sort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-sort.js","sourceRoot":"","sources":["../../src/store/import-sort.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Unified store interface for CLEO V2 data access.
3
+ * @epic T4454
4
+ * @task T4457
5
+ * @task T4645
6
+ * @task T4745
7
+ */
8
+ export { atomicWrite, atomicWriteJson, safeReadFile } from './atomic.js';
9
+ export { createBackup, listBackups, restoreFromBackup } from './backup.js';
10
+ export { forceCheckpointBeforeOperation } from './data-safety.js';
11
+ export { DataSafetyError, disableSafety, enableSafety, forceSafetyCheckpoint, getSafetyStats, resetSafetyStats, runDataIntegrityCheck, } from './data-safety-central.js';
12
+ export { appendJsonl, computeChecksum, readJson, readJsonRequired, saveJson, } from './json.js';
13
+ export { acquireLock, isLocked, withLock } from './lock.js';
14
+ export { createStoreProvider } from './provider.js';
15
+ // Safety-enabled DataAccessor exports (@task T4745)
16
+ export { getSafetyStatus, isSafetyEnabled, SafetyDataAccessor, wrapWithSafety, } from './safety-data-accessor.js';
17
+ /**
18
+ * Get a StoreProvider instance for the given working directory.
19
+ * Convenience wrapper around createStoreProvider with auto-detection.
20
+ *
21
+ * @task T4645
22
+ * @epic T4638
23
+ */
24
+ export async function getStore(cwd) {
25
+ const { createStoreProvider: create } = await import('./provider.js');
26
+ return create(undefined, cwd);
27
+ }
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAElE,OAAO,EACL,eAAe,EACf,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,WAAW,EACX,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,QAAQ,GACT,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAyB5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,oDAAoD;AACpD,OAAO,EACL,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,cAAc,GACf,MAAM,2BAA2B,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAY;IACzC,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * JSON read/write with schema validation, locking, and backup.
3
+ * This is the primary data access layer for CLEO data files.
4
+ * @epic T4454
5
+ * @task T4457
6
+ */
7
+ import { createHash } from 'node:crypto';
8
+ import { ExitCode } from '@cleocode/contracts';
9
+ import { CleoError } from '../errors.js';
10
+ import { atomicWrite, atomicWriteJson, safeReadFile } from './atomic.js';
11
+ import { createBackup } from './backup.js';
12
+ import { withLock } from './lock.js';
13
+ /**
14
+ * Read and parse a JSON file.
15
+ * Returns null if the file does not exist.
16
+ */
17
+ export async function readJson(filePath) {
18
+ const content = await safeReadFile(filePath);
19
+ if (content === null)
20
+ return null;
21
+ try {
22
+ return JSON.parse(content);
23
+ }
24
+ catch (err) {
25
+ throw new CleoError(ExitCode.VALIDATION_ERROR, `Invalid JSON in: ${filePath}`, { cause: err });
26
+ }
27
+ }
28
+ /**
29
+ * Read a JSON file, throwing if it doesn't exist.
30
+ */
31
+ export async function readJsonRequired(filePath) {
32
+ const data = await readJson(filePath);
33
+ if (data === null) {
34
+ throw new CleoError(ExitCode.NOT_FOUND, `Required file not found: ${filePath}`);
35
+ }
36
+ return data;
37
+ }
38
+ /**
39
+ * Compute a truncated SHA-256 checksum of a value.
40
+ * Used for integrity verification (matches Bash CLI's 16-char hex format).
41
+ */
42
+ export function computeChecksum(data) {
43
+ const json = JSON.stringify(data);
44
+ const hash = createHash('sha256').update(json).digest('hex');
45
+ return hash.substring(0, 16);
46
+ }
47
+ /**
48
+ * Save JSON data with optional locking, backup, and validation.
49
+ * Follows the CLEO atomic write pattern:
50
+ * 1. Acquire lock
51
+ * 2. Validate data
52
+ * 3. Create backup of existing file
53
+ * 4. Atomic write (temp file -> rename)
54
+ * 5. Release lock
55
+ */
56
+ export async function saveJson(filePath, data, options) {
57
+ await withLock(filePath, async () => {
58
+ // Validate before write
59
+ if (options?.validate) {
60
+ try {
61
+ await options.validate(data);
62
+ }
63
+ catch (err) {
64
+ throw new CleoError(ExitCode.VALIDATION_ERROR, `Validation failed before write: ${filePath}`, { cause: err });
65
+ }
66
+ }
67
+ // Create backup if configured
68
+ if (options?.backupDir) {
69
+ try {
70
+ await createBackup(filePath, options.backupDir, options.maxBackups);
71
+ }
72
+ catch {
73
+ // Backup failure is non-fatal for first write (file may not exist yet)
74
+ }
75
+ }
76
+ // Atomic write
77
+ await atomicWriteJson(filePath, data, { indent: options?.indent });
78
+ // Dispatch onFileChange hook (best-effort, fire-and-forget)
79
+ import('../hooks/registry.js')
80
+ .then(({ hooks: h }) => h.dispatch('onFileChange', process.cwd(), {
81
+ timestamp: new Date().toISOString(),
82
+ filePath,
83
+ changeType: 'write',
84
+ }))
85
+ .catch(() => {
86
+ /* hook errors are non-fatal */
87
+ });
88
+ });
89
+ }
90
+ /**
91
+ * Append a line to a JSONL file atomically.
92
+ * Used for manifest entries and audit logs.
93
+ */
94
+ export async function appendJsonl(filePath, entry) {
95
+ const existing = await safeReadFile(filePath);
96
+ const line = JSON.stringify(entry);
97
+ const content = existing ? existing.trimEnd() + '\n' + line + '\n' : line + '\n';
98
+ await atomicWrite(filePath, content);
99
+ }
100
+ /**
101
+ * Read log entries from a hybrid JSON/JSONL file.
102
+ * Handles three formats:
103
+ * 1. Pure JSON: `{ "entries": [...] }` (legacy bash format)
104
+ * 2. Pure JSONL: one JSON object per line (new TS format)
105
+ * 3. Hybrid: JSON object followed by JSONL lines (migration state)
106
+ * Returns a flat array of all entries found.
107
+ * @task T4622
108
+ */
109
+ export async function readLogEntries(filePath) {
110
+ const content = await safeReadFile(filePath);
111
+ if (content === null)
112
+ return [];
113
+ const trimmed = content.trim();
114
+ if (!trimmed)
115
+ return [];
116
+ // Fast path: try parsing as a single JSON object
117
+ try {
118
+ const parsed = JSON.parse(trimmed);
119
+ if (Array.isArray(parsed))
120
+ return parsed;
121
+ if (parsed && typeof parsed === 'object' && Array.isArray(parsed.entries)) {
122
+ return parsed.entries;
123
+ }
124
+ // Single object, wrap in array
125
+ return [parsed];
126
+ }
127
+ catch {
128
+ // Not valid JSON - handle hybrid format
129
+ }
130
+ // Hybrid format: find where the initial JSON object ends, then parse JSONL after it
131
+ const entries = [];
132
+ if (trimmed.startsWith('{')) {
133
+ // Find the matching closing brace for the initial JSON object
134
+ let depth = 0;
135
+ let inString = false;
136
+ let escaped = false;
137
+ let jsonEnd = -1;
138
+ for (let i = 0; i < trimmed.length; i++) {
139
+ const ch = trimmed[i];
140
+ if (escaped) {
141
+ escaped = false;
142
+ continue;
143
+ }
144
+ if (ch === '\\' && inString) {
145
+ escaped = true;
146
+ continue;
147
+ }
148
+ if (ch === '"') {
149
+ inString = !inString;
150
+ continue;
151
+ }
152
+ if (inString)
153
+ continue;
154
+ if (ch === '{')
155
+ depth++;
156
+ else if (ch === '}') {
157
+ depth--;
158
+ if (depth === 0) {
159
+ jsonEnd = i + 1;
160
+ break;
161
+ }
162
+ }
163
+ }
164
+ if (jsonEnd > 0) {
165
+ // Parse the initial JSON object
166
+ try {
167
+ const initialJson = JSON.parse(trimmed.substring(0, jsonEnd));
168
+ if (initialJson && Array.isArray(initialJson.entries)) {
169
+ entries.push(...initialJson.entries);
170
+ }
171
+ }
172
+ catch {
173
+ // Corrupted initial JSON - skip it
174
+ }
175
+ // Parse remaining lines as JSONL
176
+ const remainder = trimmed.substring(jsonEnd).trim();
177
+ if (remainder) {
178
+ for (const line of remainder.split('\n')) {
179
+ const l = line.trim();
180
+ if (!l || !l.startsWith('{'))
181
+ continue;
182
+ try {
183
+ entries.push(JSON.parse(l));
184
+ }
185
+ catch {
186
+ // Skip unparseable lines
187
+ }
188
+ }
189
+ }
190
+ }
191
+ }
192
+ else {
193
+ // Pure JSONL (no initial JSON object)
194
+ for (const line of trimmed.split('\n')) {
195
+ const l = line.trim();
196
+ if (!l || !l.startsWith('{'))
197
+ continue;
198
+ try {
199
+ entries.push(JSON.parse(l));
200
+ }
201
+ catch {
202
+ // Skip unparseable lines
203
+ }
204
+ }
205
+ }
206
+ return entries;
207
+ }
208
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/store/json.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAc,QAAgB;IAC1D,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAElC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;IAClC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,oBAAoB,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IACjG,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAc,QAAgB;IAClE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAI,QAAQ,CAAC,CAAC;IACzC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,4BAA4B,QAAQ,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/B,CAAC;AAcD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,QAAgB,EAChB,IAAa,EACb,OAAyB;IAEzB,MAAM,QAAQ,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAClC,wBAAwB;QACxB,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,IAAI,SAAS,CACjB,QAAQ,CAAC,gBAAgB,EACzB,mCAAmC,QAAQ,EAAE,EAC7C,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAC;YACJ,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YACtE,CAAC;YAAC,MAAM,CAAC;gBACP,uEAAuE;YACzE,CAAC;QACH,CAAC;QAED,eAAe;QACf,MAAM,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnE,4DAA4D;QAC5D,MAAM,CAAC,sBAAsB,CAAC;aAC3B,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CACrB,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE;YACxC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ;YACR,UAAU,EAAE,OAAgB;SAC7B,CAAC,CACH;aACA,KAAK,CAAC,GAAG,EAAE;YACV,+BAA+B;QACjC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB,EAAE,KAAc;IAChE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;IACjF,MAAM,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB;IACnD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,iDAAiD;IACjD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,MAAmC,CAAC;QACtE,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1E,OAAO,MAAM,CAAC,OAAoC,CAAC;QACrD,CAAC;QACD,+BAA+B;QAC/B,OAAO,CAAC,MAAiC,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,wCAAwC;IAC1C,CAAC;IAED,oFAAoF;IACpF,MAAM,OAAO,GAA8B,EAAE,CAAC;IAE9C,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,8DAA8D;QAC9D,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;QAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;YACvB,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,GAAG,KAAK,CAAC;gBAChB,SAAS;YACX,CAAC;YACD,IAAI,EAAE,KAAK,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,OAAO,GAAG,IAAI,CAAC;gBACf,SAAS;YACX,CAAC;YACD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACf,QAAQ,GAAG,CAAC,QAAQ,CAAC;gBACrB,SAAS;YACX,CAAC;YACD,IAAI,QAAQ;gBAAE,SAAS;YACvB,IAAI,EAAE,KAAK,GAAG;gBAAE,KAAK,EAAE,CAAC;iBACnB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACpB,KAAK,EAAE,CAAC;gBACR,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;oBAChB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;oBAChB,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,gCAAgC;YAChC,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC9D,IAAI,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;oBACtD,OAAO,CAAC,IAAI,CAAC,GAAI,WAAW,CAAC,OAAqC,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,mCAAmC;YACrC,CAAC;YAED,iCAAiC;YACjC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACpD,IAAI,SAAS,EAAE,CAAC;gBACd,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBACtB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;wBAAE,SAAS;oBACvC,IAAI,CAAC;wBACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAA4B,CAAC,CAAC;oBACzD,CAAC;oBAAC,MAAM,CAAC;wBACP,yBAAyB;oBAC3B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,sCAAsC;QACtC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YACvC,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAA4B,CAAC,CAAC;YACzD,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,249 @@
1
+ /**
2
+ * SQLite-backed lifecycle store operations.
3
+ *
4
+ * Query and mutation functions for lifecycle pipeline tables:
5
+ * lifecycle_pipelines, lifecycle_stages, lifecycle_gate_results,
6
+ * lifecycle_evidence, lifecycle_transitions.
7
+ *
8
+ * Used by src/core/lifecycle/resume.ts to avoid direct store-layer imports.
9
+ *
10
+ * @task T4832
11
+ * @epic T4454
12
+ */
13
+ import { and, asc, desc, eq, inArray, sql } from 'drizzle-orm';
14
+ import { getDb } from './sqlite.js';
15
+ import * as schema from './tasks-schema.js';
16
+ // =============================================================================
17
+ // PIPELINE QUERIES
18
+ // =============================================================================
19
+ /**
20
+ * Find active pipelines joined with their stages and tasks.
21
+ * Optionally filters by specific task IDs.
22
+ *
23
+ * @param taskIds - Optional list of task IDs to filter by
24
+ * @param cwd - Working directory for database
25
+ * @returns Rows with pipeline, stage, and task data
26
+ */
27
+ export async function findActivePipelinesWithStagesAndTasks(taskIds, cwd) {
28
+ const db = await getDb(cwd);
29
+ const conditions = [eq(schema.lifecyclePipelines.status, 'active')];
30
+ if (taskIds && taskIds.length > 0) {
31
+ conditions.push(inArray(schema.lifecyclePipelines.taskId, taskIds));
32
+ }
33
+ return db
34
+ .select({
35
+ pipeline: schema.lifecyclePipelines,
36
+ stage: schema.lifecycleStages,
37
+ task: schema.tasks,
38
+ })
39
+ .from(schema.lifecyclePipelines)
40
+ .innerJoin(schema.lifecycleStages, eq(schema.lifecycleStages.pipelineId, schema.lifecyclePipelines.id))
41
+ .innerJoin(schema.tasks, eq(schema.tasks.id, schema.lifecyclePipelines.taskId))
42
+ .where(and(...conditions))
43
+ .orderBy(asc(schema.tasks.priority), desc(schema.lifecyclePipelines.startedAt))
44
+ .all();
45
+ }
46
+ /**
47
+ * Find a pipeline with its current stage and task by taskId.
48
+ * Matches stages where stageName equals the pipeline's currentStageId.
49
+ *
50
+ * @param taskId - Task ID to look up
51
+ * @param cwd - Working directory for database
52
+ * @returns Matching rows (typically 0 or 1)
53
+ */
54
+ export async function findPipelineWithCurrentStageAndTask(taskId, cwd) {
55
+ const db = await getDb(cwd);
56
+ return db
57
+ .select({
58
+ pipeline: schema.lifecyclePipelines,
59
+ stage: schema.lifecycleStages,
60
+ task: schema.tasks,
61
+ })
62
+ .from(schema.lifecyclePipelines)
63
+ .innerJoin(schema.lifecycleStages, eq(schema.lifecycleStages.pipelineId, schema.lifecyclePipelines.id))
64
+ .innerJoin(schema.tasks, eq(schema.tasks.id, schema.lifecyclePipelines.taskId))
65
+ .where(and(eq(schema.lifecyclePipelines.taskId, taskId), eq(schema.lifecycleStages.stageName, sql `${schema.lifecyclePipelines.currentStageId}`)))
66
+ .limit(1)
67
+ .all();
68
+ }
69
+ /**
70
+ * Find a pipeline and a specific stage by taskId and stageName.
71
+ *
72
+ * @param taskId - Task ID
73
+ * @param stageName - Stage name to match
74
+ * @param cwd - Working directory for database
75
+ * @returns Matching rows (typically 0 or 1)
76
+ */
77
+ export async function findPipelineWithStage(taskId, stageName, cwd) {
78
+ const db = await getDb(cwd);
79
+ return db
80
+ .select({
81
+ pipeline: schema.lifecyclePipelines,
82
+ stageRecord: schema.lifecycleStages,
83
+ })
84
+ .from(schema.lifecyclePipelines)
85
+ .innerJoin(schema.lifecycleStages, and(eq(schema.lifecycleStages.pipelineId, schema.lifecyclePipelines.id), eq(schema.lifecycleStages.stageName, stageName)))
86
+ .where(eq(schema.lifecyclePipelines.taskId, taskId))
87
+ .limit(1)
88
+ .all();
89
+ }
90
+ /**
91
+ * Update pipeline's currentStageId.
92
+ *
93
+ * @param pipelineId - Pipeline ID to update
94
+ * @param currentStageId - New current stage identifier
95
+ * @param cwd - Working directory for database
96
+ */
97
+ export async function updatePipelineCurrentStage(pipelineId, currentStageId, cwd) {
98
+ const db = await getDb(cwd);
99
+ await db
100
+ .update(schema.lifecyclePipelines)
101
+ .set({ currentStageId })
102
+ .where(eq(schema.lifecyclePipelines.id, pipelineId))
103
+ .run();
104
+ }
105
+ // =============================================================================
106
+ // STAGE QUERIES
107
+ // =============================================================================
108
+ /**
109
+ * Get all stages for a pipeline, ordered by sequence.
110
+ *
111
+ * @param pipelineId - Pipeline ID
112
+ * @param cwd - Working directory for database
113
+ * @returns All stage rows for the pipeline
114
+ */
115
+ export async function getStagesByPipelineId(pipelineId, cwd) {
116
+ const db = await getDb(cwd);
117
+ return db
118
+ .select()
119
+ .from(schema.lifecycleStages)
120
+ .where(eq(schema.lifecycleStages.pipelineId, pipelineId))
121
+ .orderBy(asc(schema.lifecycleStages.sequence))
122
+ .all();
123
+ }
124
+ /**
125
+ * Update a stage's status to 'in_progress' and clear block fields.
126
+ *
127
+ * @param stageId - Stage ID to update
128
+ * @param startedAt - ISO timestamp for when the stage started
129
+ * @param cwd - Working directory for database
130
+ */
131
+ export async function activateStage(stageId, startedAt, cwd) {
132
+ const db = await getDb(cwd);
133
+ await db
134
+ .update(schema.lifecycleStages)
135
+ .set({
136
+ status: 'in_progress',
137
+ startedAt,
138
+ blockedAt: null,
139
+ blockReason: null,
140
+ })
141
+ .where(eq(schema.lifecycleStages.id, stageId))
142
+ .run();
143
+ }
144
+ /**
145
+ * Find pipeline with current stage (no task join) by taskId.
146
+ * Used by checkBlockedStageDetails.
147
+ *
148
+ * @param taskId - Task ID
149
+ * @param cwd - Working directory for database
150
+ * @returns Matching rows
151
+ */
152
+ export async function findPipelineWithCurrentStage(taskId, cwd) {
153
+ const db = await getDb(cwd);
154
+ return db
155
+ .select({
156
+ pipeline: schema.lifecyclePipelines,
157
+ stageRecord: schema.lifecycleStages,
158
+ })
159
+ .from(schema.lifecyclePipelines)
160
+ .innerJoin(schema.lifecycleStages, eq(schema.lifecycleStages.pipelineId, schema.lifecyclePipelines.id))
161
+ .where(and(eq(schema.lifecyclePipelines.taskId, taskId), eq(schema.lifecycleStages.stageName, sql `${schema.lifecyclePipelines.currentStageId}`)))
162
+ .limit(1)
163
+ .all();
164
+ }
165
+ // =============================================================================
166
+ // GATE RESULT QUERIES
167
+ // =============================================================================
168
+ /**
169
+ * Get gate results for a stage, ordered by checkedAt descending.
170
+ *
171
+ * @param stageId - Stage ID
172
+ * @param cwd - Working directory for database
173
+ * @returns Gate result rows
174
+ */
175
+ export async function getGateResultsByStageId(stageId, cwd) {
176
+ const db = await getDb(cwd);
177
+ return db
178
+ .select()
179
+ .from(schema.lifecycleGateResults)
180
+ .where(eq(schema.lifecycleGateResults.stageId, stageId))
181
+ .orderBy(desc(schema.lifecycleGateResults.checkedAt))
182
+ .all();
183
+ }
184
+ /**
185
+ * Get gate results for a stage without ordering (for simple checks).
186
+ *
187
+ * @param stageId - Stage ID
188
+ * @param cwd - Working directory for database
189
+ * @returns Gate result rows
190
+ */
191
+ export async function getGateResultsByStageIdUnordered(stageId, cwd) {
192
+ const db = await getDb(cwd);
193
+ return db
194
+ .select()
195
+ .from(schema.lifecycleGateResults)
196
+ .where(eq(schema.lifecycleGateResults.stageId, stageId))
197
+ .all();
198
+ }
199
+ // =============================================================================
200
+ // EVIDENCE QUERIES
201
+ // =============================================================================
202
+ /**
203
+ * Get evidence for a stage, ordered by recordedAt descending.
204
+ *
205
+ * @param stageId - Stage ID
206
+ * @param cwd - Working directory for database
207
+ * @returns Evidence rows
208
+ */
209
+ export async function getEvidenceByStageId(stageId, cwd) {
210
+ const db = await getDb(cwd);
211
+ return db
212
+ .select()
213
+ .from(schema.lifecycleEvidence)
214
+ .where(eq(schema.lifecycleEvidence.stageId, stageId))
215
+ .orderBy(desc(schema.lifecycleEvidence.recordedAt))
216
+ .all();
217
+ }
218
+ // =============================================================================
219
+ // TRANSITION QUERIES & MUTATIONS
220
+ // =============================================================================
221
+ /**
222
+ * Get recent transitions for a pipeline, ordered by createdAt descending.
223
+ *
224
+ * @param pipelineId - Pipeline ID
225
+ * @param limit - Max rows to return (default: 10)
226
+ * @param cwd - Working directory for database
227
+ * @returns Transition rows
228
+ */
229
+ export async function getRecentTransitions(pipelineId, limit = 10, cwd) {
230
+ const db = await getDb(cwd);
231
+ return db
232
+ .select()
233
+ .from(schema.lifecycleTransitions)
234
+ .where(eq(schema.lifecycleTransitions.pipelineId, pipelineId))
235
+ .orderBy(desc(schema.lifecycleTransitions.createdAt))
236
+ .limit(limit)
237
+ .all();
238
+ }
239
+ /**
240
+ * Insert a new transition record.
241
+ *
242
+ * @param transition - Transition data to insert
243
+ * @param cwd - Working directory for database
244
+ */
245
+ export async function insertTransition(transition, cwd) {
246
+ const db = await getDb(cwd);
247
+ await db.insert(schema.lifecycleTransitions).values(transition).run();
248
+ }
249
+ //# sourceMappingURL=lifecycle-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-store.js","sourceRoot":"","sources":["../../src/store/lifecycle-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAmB5C,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,OAAkB,EAClB,GAAY;IAEZ,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAE5B,MAAM,UAAU,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEpE,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,EAAE;SACN,MAAM,CAAC;QACN,QAAQ,EAAE,MAAM,CAAC,kBAAkB;QACnC,KAAK,EAAE,MAAM,CAAC,eAAe;QAC7B,IAAI,EAAE,MAAM,CAAC,KAAK;KACnB,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;SAC/B,SAAS,CACR,MAAM,CAAC,eAAe,EACtB,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CACpE;SACA,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;SAC9E,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;SACzB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;SAC9E,GAAG,EAAE,CAAC;AACX,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,MAAc,EACd,GAAY;IAEZ,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,EAAE;SACN,MAAM,CAAC;QACN,QAAQ,EAAE,MAAM,CAAC,kBAAkB;QACnC,KAAK,EAAE,MAAM,CAAC,eAAe;QAC7B,IAAI,EAAE,MAAM,CAAC,KAAK;KACnB,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;SAC/B,SAAS,CACR,MAAM,CAAC,eAAe,EACtB,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CACpE;SACA,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;SAC9E,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5C,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,GAAG,CAAA,GAAG,MAAM,CAAC,kBAAkB,CAAC,cAAc,EAAE,CAAC,CACvF,CACF;SACA,KAAK,CAAC,CAAC,CAAC;SACR,GAAG,EAAE,CAAC;AACX,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAc,EACd,SAAiB,EACjB,GAAY;IAEZ,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,EAAE;SACN,MAAM,CAAC;QACN,QAAQ,EAAE,MAAM,CAAC,kBAAkB;QACnC,WAAW,EAAE,MAAM,CAAC,eAAe;KACpC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;SAC/B,SAAS,CACR,MAAM,CAAC,eAAe,EACtB,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,EACnE,EAAE,CACA,MAAM,CAAC,eAAe,CAAC,SAAS,EAChC,SAA0D,CAC3D,CACF,CACF;SACA,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACnD,KAAK,CAAC,CAAC,CAAC;SACR,GAAG,EAAE,CAAC;AACX,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,UAAkB,EAClB,cAAsB,EACtB,GAAY;IAEZ,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAE5B,MAAM,EAAE;SACL,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC;SACjC,GAAG,CAAC,EAAE,cAAc,EAAE,CAAC;SACvB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;SACnD,GAAG,EAAE,CAAC;AACX,CAAC;AAED,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,UAAkB,EAClB,GAAY;IAEZ,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,EAAE;SACN,MAAM,EAAE;SACR,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;SAC5B,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;SACxD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;SAC7C,GAAG,EAAE,CAAC;AACX,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAe,EACf,SAAiB,EACjB,GAAY;IAEZ,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAE5B,MAAM,EAAE;SACL,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;SAC9B,GAAG,CAAC;QACH,MAAM,EAAE,aAAa;QACrB,SAAS;QACT,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;KAClB,CAAC;SACD,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;SAC7C,GAAG,EAAE,CAAC;AACX,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,MAAc,EACd,GAAY;IAEZ,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,EAAE;SACN,MAAM,CAAC;QACN,QAAQ,EAAE,MAAM,CAAC,kBAAkB;QACnC,WAAW,EAAE,MAAM,CAAC,eAAe;KACpC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;SAC/B,SAAS,CACR,MAAM,CAAC,eAAe,EACtB,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CACpE;SACA,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5C,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,GAAG,CAAA,GAAG,MAAM,CAAC,kBAAkB,CAAC,cAAc,EAAE,CAAC,CACvF,CACF;SACA,KAAK,CAAC,CAAC,CAAC;SACR,GAAG,EAAE,CAAC;AACX,CAAC;AAED,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAe,EACf,GAAY;IAEZ,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,EAAE;SACN,MAAM,EAAE;SACR,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;SACjC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;SACvD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;SACpD,GAAG,EAAE,CAAC;AACX,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,OAAe,EACf,GAAY;IAEZ,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,EAAE;SACN,MAAM,EAAE;SACR,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;SACjC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;SACvD,GAAG,EAAE,CAAC;AACX,CAAC;AAED,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAe,EACf,GAAY;IAEZ,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,EAAE;SACN,MAAM,EAAE;SACR,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;SAC9B,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;SACpD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;SAClD,GAAG,EAAE,CAAC;AACX,CAAC;AAED,gFAAgF;AAChF,iCAAiC;AACjC,gFAAgF;AAEhF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,UAAkB,EAClB,QAAgB,EAAE,EAClB,GAAY;IAEZ,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,EAAE;SACN,MAAM,EAAE;SACR,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;SACjC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;SAC7D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;SACpD,KAAK,CAAC,KAAK,CAAC;SACZ,GAAG,EAAE,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAA2D,EAC3D,GAAY;IAEZ,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAE5B,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC;AACxE,CAAC"}