@winspan/claude-forge 3.7.8 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/dist/autopilot/quality-gate-utils.d.ts +6 -0
  2. package/dist/autopilot/quality-gate-utils.d.ts.map +1 -0
  3. package/dist/autopilot/quality-gate-utils.js +48 -0
  4. package/dist/autopilot/quality-gate-utils.js.map +1 -0
  5. package/dist/autopilot/quality-gate.d.ts +0 -8
  6. package/dist/autopilot/quality-gate.d.ts.map +1 -1
  7. package/dist/autopilot/quality-gate.js +6 -61
  8. package/dist/autopilot/quality-gate.js.map +1 -1
  9. package/dist/cli/commands/convention.d.ts.map +1 -1
  10. package/dist/cli/commands/convention.js +1 -115
  11. package/dist/cli/commands/convention.js.map +1 -1
  12. package/dist/cli/commands/init/index.d.ts.map +1 -1
  13. package/dist/cli/commands/init/index.js +0 -14
  14. package/dist/cli/commands/init/index.js.map +1 -1
  15. package/dist/cli/commands/init/project-doctor.d.ts.map +1 -1
  16. package/dist/cli/commands/init/project-doctor.js +0 -63
  17. package/dist/cli/commands/init/project-doctor.js.map +1 -1
  18. package/dist/cli/tui.d.ts.map +1 -1
  19. package/dist/cli/tui.js +7 -131
  20. package/dist/cli/tui.js.map +1 -1
  21. package/dist/constants.d.ts +0 -6
  22. package/dist/constants.d.ts.map +1 -1
  23. package/dist/constants.js +0 -6
  24. package/dist/constants.js.map +1 -1
  25. package/dist/convention/convention-loader.js +2 -2
  26. package/dist/convention/convention-loader.js.map +1 -1
  27. package/dist/convention/convention-manager.d.ts +24 -2
  28. package/dist/convention/convention-manager.d.ts.map +1 -1
  29. package/dist/convention/convention-manager.js +62 -4
  30. package/dist/convention/convention-manager.js.map +1 -1
  31. package/dist/convention/index.d.ts +1 -2
  32. package/dist/convention/index.d.ts.map +1 -1
  33. package/dist/convention/index.js +0 -1
  34. package/dist/convention/index.js.map +1 -1
  35. package/dist/convention/types.d.ts +4 -14
  36. package/dist/convention/types.d.ts.map +1 -1
  37. package/dist/daemon/engine-registry/init-governance.d.ts +10 -0
  38. package/dist/daemon/engine-registry/init-governance.d.ts.map +1 -0
  39. package/dist/daemon/engine-registry/init-governance.js +22 -0
  40. package/dist/daemon/engine-registry/init-governance.js.map +1 -0
  41. package/dist/daemon/engine-registry.d.ts.map +1 -1
  42. package/dist/daemon/engine-registry.js +5 -6
  43. package/dist/daemon/engine-registry.js.map +1 -1
  44. package/dist/daemon/handler-context.d.ts +4 -2
  45. package/dist/daemon/handler-context.d.ts.map +1 -1
  46. package/dist/daemon/handlers/post-tool-use-handler.d.ts.map +1 -1
  47. package/dist/daemon/handlers/post-tool-use-handler.js +28 -3
  48. package/dist/daemon/handlers/post-tool-use-handler.js.map +1 -1
  49. package/dist/daemon/handlers/pre-tool-use-handler.d.ts.map +1 -1
  50. package/dist/daemon/handlers/pre-tool-use-handler.js +32 -22
  51. package/dist/daemon/handlers/pre-tool-use-handler.js.map +1 -1
  52. package/dist/daemon/handlers/session-cleanup.d.ts +0 -4
  53. package/dist/daemon/handlers/session-cleanup.d.ts.map +1 -1
  54. package/dist/daemon/handlers/session-cleanup.js +0 -81
  55. package/dist/daemon/handlers/session-cleanup.js.map +1 -1
  56. package/dist/daemon/handlers/stages/07-pipeline-reply.d.ts.map +1 -1
  57. package/dist/daemon/handlers/stages/07-pipeline-reply.js +5 -1
  58. package/dist/daemon/handlers/stages/07-pipeline-reply.js.map +1 -1
  59. package/dist/daemon/handlers/stages/09-pipeline-active.d.ts.map +1 -1
  60. package/dist/daemon/handlers/stages/09-pipeline-active.js +5 -1
  61. package/dist/daemon/handlers/stages/09-pipeline-active.js.map +1 -1
  62. package/dist/daemon/handlers/stages/13-template-route.d.ts.map +1 -1
  63. package/dist/daemon/handlers/stages/13-template-route.js +5 -1
  64. package/dist/daemon/handlers/stages/13-template-route.js.map +1 -1
  65. package/dist/daemon/handlers/stages/18-complex-task.d.ts +5 -2
  66. package/dist/daemon/handlers/stages/18-complex-task.d.ts.map +1 -1
  67. package/dist/daemon/handlers/stages/18-complex-task.js +87 -9
  68. package/dist/daemon/handlers/stages/18-complex-task.js.map +1 -1
  69. package/dist/daemon/handlers/stop-handler.d.ts.map +1 -1
  70. package/dist/daemon/handlers/stop-handler.js +1 -13
  71. package/dist/daemon/handlers/stop-handler.js.map +1 -1
  72. package/dist/goal/goal-classifier.d.ts.map +1 -1
  73. package/dist/goal/goal-classifier.js +12 -5
  74. package/dist/goal/goal-classifier.js.map +1 -1
  75. package/dist/goal/goal-types.d.ts +1 -3
  76. package/dist/goal/goal-types.d.ts.map +1 -1
  77. package/dist/goal/index.d.ts +1 -1
  78. package/dist/goal/index.d.ts.map +1 -1
  79. package/dist/governance/contract-builder.d.ts +39 -0
  80. package/dist/governance/contract-builder.d.ts.map +1 -0
  81. package/dist/governance/contract-builder.js +216 -0
  82. package/dist/governance/contract-builder.js.map +1 -0
  83. package/dist/governance/engine.d.ts +33 -0
  84. package/dist/governance/engine.d.ts.map +1 -0
  85. package/dist/governance/engine.js +183 -0
  86. package/dist/governance/engine.js.map +1 -0
  87. package/dist/governance/evidence-collector.d.ts +42 -0
  88. package/dist/governance/evidence-collector.d.ts.map +1 -0
  89. package/dist/governance/evidence-collector.js +136 -0
  90. package/dist/governance/evidence-collector.js.map +1 -0
  91. package/dist/governance/plugins/correction-plugin.d.ts +20 -0
  92. package/dist/governance/plugins/correction-plugin.d.ts.map +1 -0
  93. package/dist/governance/plugins/correction-plugin.js +113 -0
  94. package/dist/governance/plugins/correction-plugin.js.map +1 -0
  95. package/dist/governance/plugins/guidance-plugin.d.ts +21 -0
  96. package/dist/governance/plugins/guidance-plugin.d.ts.map +1 -0
  97. package/dist/governance/plugins/guidance-plugin.js +69 -0
  98. package/dist/governance/plugins/guidance-plugin.js.map +1 -0
  99. package/dist/governance/plugins/memory-plugin.d.ts +22 -0
  100. package/dist/governance/plugins/memory-plugin.d.ts.map +1 -0
  101. package/dist/governance/plugins/memory-plugin.js +106 -0
  102. package/dist/governance/plugins/memory-plugin.js.map +1 -0
  103. package/dist/governance/plugins/policy-plugin.d.ts +16 -0
  104. package/dist/governance/plugins/policy-plugin.d.ts.map +1 -0
  105. package/dist/governance/plugins/policy-plugin.js +69 -0
  106. package/dist/governance/plugins/policy-plugin.js.map +1 -0
  107. package/dist/governance/plugins/verification-plugin.d.ts +15 -0
  108. package/dist/governance/plugins/verification-plugin.d.ts.map +1 -0
  109. package/dist/governance/plugins/verification-plugin.js +65 -0
  110. package/dist/governance/plugins/verification-plugin.js.map +1 -0
  111. package/dist/governance/types.d.ts +202 -0
  112. package/dist/governance/types.d.ts.map +1 -0
  113. package/dist/governance/types.js +10 -0
  114. package/dist/governance/types.js.map +1 -0
  115. package/dist/pipeline/completion-engine.js +7 -7
  116. package/dist/pipeline/completion-engine.js.map +1 -1
  117. package/dist/pipeline/completion-gate.js +3 -3
  118. package/dist/pipeline/completion-gate.js.map +1 -1
  119. package/dist/pipeline/diagnosis-service.d.ts +2 -1
  120. package/dist/pipeline/diagnosis-service.d.ts.map +1 -1
  121. package/dist/pipeline/diagnosis-service.js.map +1 -1
  122. package/dist/pipeline/dynamic-node-executor.js +1 -1
  123. package/dist/pipeline/dynamic-node-executor.js.map +1 -1
  124. package/dist/pipeline/execution-engine.d.ts +1 -6
  125. package/dist/pipeline/execution-engine.d.ts.map +1 -1
  126. package/dist/pipeline/execution-engine.js +1 -1
  127. package/dist/pipeline/execution-engine.js.map +1 -1
  128. package/dist/pipeline/execution-plan.js +1 -1
  129. package/dist/pipeline/execution-plan.js.map +1 -1
  130. package/dist/pipeline/i-node-executor.d.ts +4 -0
  131. package/dist/pipeline/i-node-executor.d.ts.map +1 -1
  132. package/dist/pipeline/node-type-evolver.js +1 -1
  133. package/dist/pipeline/node-type-evolver.js.map +1 -1
  134. package/dist/pipeline/node-type-sync.d.ts.map +1 -1
  135. package/dist/pipeline/node-type-sync.js +22 -43
  136. package/dist/pipeline/node-type-sync.js.map +1 -1
  137. package/dist/pipeline/pattern-types.d.ts +3 -1
  138. package/dist/pipeline/pattern-types.d.ts.map +1 -1
  139. package/dist/retrospective/types.d.ts +2 -4
  140. package/dist/retrospective/types.d.ts.map +1 -1
  141. package/dist/skill-registry/evolver/index.js +6 -2
  142. package/dist/skill-registry/evolver/index.js.map +1 -1
  143. package/dist/skill-registry/index.d.ts +5 -0
  144. package/dist/skill-registry/index.d.ts.map +1 -1
  145. package/dist/skill-registry/index.js +6 -0
  146. package/dist/skill-registry/index.js.map +1 -1
  147. package/dist/storage/repositories/dynamic-pipeline-repository.js +15 -5
  148. package/dist/storage/repositories/dynamic-pipeline-repository.js.map +1 -1
  149. package/dist/storage/repositories/node-attempt-repository.d.ts +1 -1
  150. package/dist/storage/repositories/node-attempt-repository.d.ts.map +1 -1
  151. package/dist/storage/repositories/node-attempt-repository.js +1 -1
  152. package/dist/storage/repositories/node-attempt-repository.js.map +1 -1
  153. package/dist/storage/repositories/pipeline-plan-repository.d.ts.map +1 -1
  154. package/dist/storage/repositories/pipeline-plan-repository.js +1 -1
  155. package/dist/storage/repositories/pipeline-plan-repository.js.map +1 -1
  156. package/dist/storage/repositories/template-evolution-repository.d.ts.map +1 -1
  157. package/dist/storage/repositories/template-evolution-repository.js.map +1 -1
  158. package/dist/storage/schema/migration-manager.d.ts +4 -9
  159. package/dist/storage/schema/migration-manager.d.ts.map +1 -1
  160. package/dist/storage/schema/migration-manager.js +24 -992
  161. package/dist/storage/schema/migration-manager.js.map +1 -1
  162. package/dist/storage/schema.sql +591 -0
  163. package/dist/storage/sqlite.d.ts.map +1 -1
  164. package/dist/storage/sqlite.js +22 -6
  165. package/dist/storage/sqlite.js.map +1 -1
  166. package/dist/web/routes/pipelines.d.ts.map +1 -1
  167. package/dist/web/routes/pipelines.js +16 -5
  168. package/dist/web/routes/pipelines.js.map +1 -1
  169. package/dist/web/routes/quality.d.ts.map +1 -1
  170. package/dist/web/routes/quality.js +18 -17
  171. package/dist/web/routes/quality.js.map +1 -1
  172. package/dist/web/server.d.ts.map +1 -1
  173. package/dist/web/server.js +0 -7
  174. package/dist/web/server.js.map +1 -1
  175. package/dist/web-static/assets/Analytics-Bo_OyY9A.js +36 -0
  176. package/dist/web-static/assets/BatchProgress-qW-6664M.js +1 -0
  177. package/dist/web-static/assets/Breadcrumb-C1Mua6se.js +1 -0
  178. package/dist/web-static/assets/Config-Dn-dtdo9.js +1 -0
  179. package/dist/web-static/assets/ConfirmDialog-bdDaAlT1.js +1 -0
  180. package/dist/web-static/assets/Conventions-ByV7r45c.js +1 -0
  181. package/dist/web-static/assets/Dashboard-C-7N8kYZ.js +1 -0
  182. package/dist/web-static/assets/ErrorState-CMLoMrQY.js +1 -0
  183. package/dist/web-static/assets/Events-DHuyQHQe.js +1 -0
  184. package/dist/web-static/assets/Evolution-Dzr5xOLD.js +1 -0
  185. package/dist/web-static/assets/Knowledge-ClwX4cnr.js +2 -0
  186. package/dist/web-static/assets/MiniCharts-DsV2Sqfk.js +1 -0
  187. package/dist/web-static/assets/NodeTypes-DFt8b5gi.js +1 -0
  188. package/dist/web-static/assets/Pagination-CR-eJz36.js +1 -0
  189. package/dist/web-static/assets/PipelineDetail-By1HJlaB.js +4 -0
  190. package/dist/web-static/assets/Pipelines--MGzCPtR.js +2 -0
  191. package/dist/web-static/assets/ProjectDetail-CrpekCeY.js +1 -0
  192. package/dist/web-static/assets/Projects-Dw1qYmjz.js +1 -0
  193. package/dist/web-static/assets/Quality-CYwODfQP.js +3 -0
  194. package/dist/web-static/assets/SessionDetail-c8MYnwnk.js +1 -0
  195. package/dist/web-static/assets/Sessions-BkDd4Mxb.js +2 -0
  196. package/dist/web-static/assets/Skeleton-DbL04wuz.js +1 -0
  197. package/dist/web-static/assets/Skills-2OPSAnaU.js +1 -0
  198. package/dist/web-static/assets/TemplateDetail-DbifRj4h.js +1 -0
  199. package/dist/web-static/assets/Templates-CDw-GGp8.js +1 -0
  200. package/dist/web-static/assets/Toast-CrwuIbKC.js +1 -0
  201. package/dist/web-static/assets/client-C_VWY70M.js +1 -0
  202. package/dist/web-static/assets/index-DD2Z15TY.css +2 -0
  203. package/dist/web-static/assets/index-DKyAorJ6.js +2 -0
  204. package/dist/web-static/assets/ui-DpI1N3yJ.js +1 -0
  205. package/dist/web-static/assets/useDebounce-BLryFdeo.js +1 -0
  206. package/dist/web-static/assets/vendor-2ObLXPrQ.js +9 -0
  207. package/dist/web-static/assets/vendor-motion-BryL_tAt.js +9 -0
  208. package/dist/web-static/assets/vendor-query-CjmRaY7o.js +4 -0
  209. package/dist/web-static/assets/vendor-react-DZi7brq3.js +11 -0
  210. package/dist/web-static/index.html +10 -13
  211. package/package.json +5 -9
  212. package/dist/convention/convention-distiller.d.ts +0 -28
  213. package/dist/convention/convention-distiller.d.ts.map +0 -1
  214. package/dist/convention/convention-distiller.js +0 -172
  215. package/dist/convention/convention-distiller.js.map +0 -1
  216. package/dist/convention/official-sync.d.ts +0 -21
  217. package/dist/convention/official-sync.d.ts.map +0 -1
  218. package/dist/convention/official-sync.js +0 -196
  219. package/dist/convention/official-sync.js.map +0 -1
  220. package/dist/daemon/handlers/stages/19-moderate-task.d.ts +0 -11
  221. package/dist/daemon/handlers/stages/19-moderate-task.d.ts.map +0 -1
  222. package/dist/daemon/handlers/stages/19-moderate-task.js +0 -78
  223. package/dist/daemon/handlers/stages/19-moderate-task.js.map +0 -1
  224. package/dist/web/routes/conventions.d.ts +0 -8
  225. package/dist/web/routes/conventions.d.ts.map +0 -1
  226. package/dist/web/routes/conventions.js +0 -308
  227. package/dist/web/routes/conventions.js.map +0 -1
  228. package/dist/web/routes/logs.d.ts +0 -4
  229. package/dist/web/routes/logs.d.ts.map +0 -1
  230. package/dist/web/routes/logs.js +0 -77
  231. package/dist/web/routes/logs.js.map +0 -1
  232. package/dist/web/routes/project-conventions.d.ts +0 -7
  233. package/dist/web/routes/project-conventions.d.ts.map +0 -1
  234. package/dist/web/routes/project-conventions.js +0 -145
  235. package/dist/web/routes/project-conventions.js.map +0 -1
  236. package/dist/web-static/assets/Analytics-txva5ugO.js +0 -1
  237. package/dist/web-static/assets/BatchProgress-BQ533tSf.js +0 -1
  238. package/dist/web-static/assets/Breadcrumb-DtfwnOx6.js +0 -1
  239. package/dist/web-static/assets/Config-CUb6-ddH.js +0 -1
  240. package/dist/web-static/assets/ConfirmDialog-BKfwMp04.js +0 -1
  241. package/dist/web-static/assets/Conventions-E_2yAYoB.js +0 -1
  242. package/dist/web-static/assets/Dashboard-Dskgf0jG.js +0 -1
  243. package/dist/web-static/assets/ErrorState-BOInXmfg.js +0 -1
  244. package/dist/web-static/assets/Events-CAY9kU9T.js +0 -1
  245. package/dist/web-static/assets/Evolution-Ck_BqRpt.js +0 -1
  246. package/dist/web-static/assets/Knowledge-BHLyFp2U.js +0 -2
  247. package/dist/web-static/assets/NodeTypes-B6wc7VnR.js +0 -1
  248. package/dist/web-static/assets/Pagination-lp8b_3NR.js +0 -1
  249. package/dist/web-static/assets/PipelineDetail-Bc6l2jqX.js +0 -4
  250. package/dist/web-static/assets/PipelineTemplates-sSL-9oRh.js +0 -1
  251. package/dist/web-static/assets/Pipelines-Drat9IqZ.js +0 -2
  252. package/dist/web-static/assets/ProjectDetail-Cx8VZp8O.js +0 -1
  253. package/dist/web-static/assets/Projects-qDolX6Y6.js +0 -1
  254. package/dist/web-static/assets/Quality-Bm7oRSun.js +0 -3
  255. package/dist/web-static/assets/SessionDetail-BMrqH8_W.js +0 -1
  256. package/dist/web-static/assets/Sessions-C0BmdDPK.js +0 -2
  257. package/dist/web-static/assets/Skeleton-B7PVDJJ_.js +0 -1
  258. package/dist/web-static/assets/Skills-B3c1_uFt.js +0 -1
  259. package/dist/web-static/assets/TemplateDetail-ep5h3Cu5.js +0 -1
  260. package/dist/web-static/assets/Templates-Dho__f4l.js +0 -1
  261. package/dist/web-static/assets/Toast-BbB3oD2a.js +0 -1
  262. package/dist/web-static/assets/client-BvVpIixG.js +0 -1
  263. package/dist/web-static/assets/index-By8HsUem.js +0 -2
  264. package/dist/web-static/assets/index-CqwJts5v.css +0 -2
  265. package/dist/web-static/assets/ui-CDL3BZ13.js +0 -1
  266. package/dist/web-static/assets/useDebounce-DNfPs3Tv.js +0 -1
  267. package/dist/web-static/assets/vendor-DRGPi8ui.js +0 -9
  268. package/dist/web-static/assets/vendor-charts-9eVsQvUV.js +0 -36
  269. package/dist/web-static/assets/vendor-editor-CYLOGES5.js +0 -11
  270. package/dist/web-static/assets/vendor-flow-CHpVij2M.css +0 -1
  271. package/dist/web-static/assets/vendor-flow-srkes8If.js +0 -7
  272. package/dist/web-static/assets/vendor-motion-CQmdgnI8.js +0 -9
  273. package/dist/web-static/assets/vendor-query-DqPOMnuX.js +0 -4
  274. package/dist/web-static/assets/vendor-react-DJI9oneq.js +0 -11
  275. /package/dist/web-static/assets/{exportCsv-Dm5Y5M_E.js → exportCsv-CO51kx6P.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"migration-manager.js","sourceRoot":"","sources":["../../../src/storage/schema/migration-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,qCAAqC;AACrC,MAAM,CAAC,MAAM,UAAU,GAAoD;IACvE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;QACR,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;OAYP,CAAC,CAAC;IACL,CAAC;IACD,8DAA8D;IAC9D,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;QACR,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuDP,CAAC,CAAC;IACL,CAAC;IACD,4DAA4D;IAC5D,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;QACR,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;OAcP,CAAC,CAAC;QACH,gDAAgD;QAChD,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YAAC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;gBAAE,MAAM,GAAG,CAAC;QAAC,CAAC;QAC/M,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YAAC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;gBAAE,MAAM,GAAG,CAAC;QAAC,CAAC;QACpN,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YAAC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;gBAAE,MAAM,GAAG,CAAC;QAAC,CAAC;QACxN,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YAAC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;gBAAE,MAAM,GAAG,CAAC;QAAC,CAAC;IACxM,CAAC;IACD,uEAAuE;IACvE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;QACR,0CAA0C;QAC1C,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YAAC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;gBAAE,MAAM,GAAG,CAAC;QAAC,CAAC;QACjN,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YAAC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;gBAAE,MAAM,GAAG,CAAC;QAAC,CAAC;QACzM,EAAE,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;QACjG,EAAE,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;QAEpF,UAAU;QACV,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BP,CAAC,CAAC;QAEH,eAAe;QACf,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;OAgBP,CAAC,CAAC;IACL,CAAC;IACD,+EAA+E;IAC/E,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;QACR,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,wEAAwE,CAAC,CAAC,GAAG,EAAE,CAAC;QAC/G,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC;gBAAC,EAAE,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;YAAC,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBAAC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;oBAAE,MAAM,GAAG,CAAC;YAAC,CAAC;QACzM,CAAC;IACH,CAAC;IACD,0HAA0H;IAC1H,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;QACR,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,wEAAwE,CAAC,CAAC,GAAG,EAAE,CAAC;QAC/G,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC;gBAAC,EAAE,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;YAAC,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBAAC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;oBAAE,MAAM,GAAG,CAAC;YAAC,CAAC;YACzM,IAAI,CAAC;gBAAC,EAAE,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;YAAC,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBAAC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;oBAAE,MAAM,GAAG,CAAC;YAAC,CAAC;YACvM,IAAI,CAAC;gBAAC,EAAE,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;YAAC,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBAAC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;oBAAE,MAAM,GAAG,CAAC;YAAC,CAAC;YACxM,IAAI,CAAC;gBAAC,EAAE,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YAAC,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBAAC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;oBAAE,MAAM,GAAG,CAAC;YAAC,CAAC;QACpM,CAAC;IACH,CAAC;IACD,oCAAoC;IACpC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;QACR,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsEP,CAAC,CAAC;QACH,cAAc;QACd,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC;;;;SAIP,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBAAE,MAAM,GAAG,CAAC;QACnF,CAAC;QACD,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YAAC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;gBAAE,MAAM,GAAG,CAAC;QAAC,CAAC;IACtM,CAAC;IACD,oCAAoC;IACpC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;QACR,EAAE,CAAC,IAAI,CAAC;;;;;;OAMP,CAAC,CAAC;IACL,CAAC;IACD,yBAAyB;IACzB,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,4EAA4E;QAC5E,EAAE,CAAC,IAAI,CAAC,+GAA+G,CAAC,CAAC;QACzH,kEAAkE;QAClE,EAAE,CAAC,IAAI,CAAC,0GAA0G,CAAC,CAAC;QACpH,6DAA6D;QAC7D,EAAE,CAAC,IAAI,CAAC,sIAAsI,CAAC,CAAC;QAChJ,8DAA8D;QAC9D,EAAE,CAAC,IAAI,CAAC,+GAA+G,CAAC,CAAC;QACzH,sFAAsF;QACtF,EAAE,CAAC,IAAI,CAAC,6GAA6G,CAAC,CAAC;QACvH,mCAAmC;QACnC,EAAE,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;IACtF,CAAC;IAED,qFAAqF;IACrF,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,6EAA6E,CAAC,CAAC,GAAG,EAAE,CAAC;QACpH,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC;gBAAC,EAAE,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;YAAC,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBAAC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;oBAAE,MAAM,GAAG,CAAC;YAAC,CAAC;QACtM,CAAC;IACH,CAAC;IAED,wGAAwG;IACxG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,6EAA6E,CAAC,CAAC,GAAG,EAAE,CAAC;QACpH,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC;gBAAC,EAAE,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;YAAC,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBAAC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;oBAAE,MAAM,GAAG,CAAC;YAAC,CAAC;YACxM,0DAA0D;YAC1D,EAAE,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YAAC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;gBAAE,MAAM,GAAG,CAAC;QAAC,CAAC;IACnN,CAAC;IAED,eAAe;IACf,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,EAAE,CAAC,IAAI,CAAC;;;;;;OAMP,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAC7E,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoDP,CAAC,CAAC;IACL,CAAC;IAED,8CAA8C;IAC9C,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,MAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAAC,wEAAwE,CAAC,CAAC,GAAG,EAAE,CAAC;QACnH,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,6EAA6E,CAAC,CAAC,GAAG,EAAE,CAAC;QAEpH,IAAI,CAAC,eAAe,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;QAErE,sCAAsC;QACtC,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,iBAAiB,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;SAgBpC,CAAC,CAAC,GAAG,EAAE,CAAC;YAET,MAAM,CAAC,IAAI,CAAC,gBAAgB,iBAAiB,CAAC,OAAO,qBAAqB,CAAC,CAAC;QAC9E,CAAC;QAED,uCAAuC;QACvC,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;SAuBhC,CAAC,CAAC,GAAG,EAAE,CAAC;YAET,MAAM,CAAC,IAAI,CAAC,gBAAgB,aAAa,CAAC,OAAO,iBAAiB,CAAC,CAAC;QACtE,CAAC;QAED,6BAA6B;QAC7B,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;SAclC,CAAC,CAAC,GAAG,EAAE,CAAC;YAET,MAAM,CAAC,IAAI,CAAC,gBAAgB,eAAe,CAAC,OAAO,QAAQ,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACjD,CAAC;IAED,0DAA0D;IAC1D,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,EAAE,CAAC,IAAI,CAAC;;;OAGP,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IAC1E,CAAC;IAED,+DAA+D;IAC/D,+EAA+E;IAC/E,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,MAAM,iBAAiB,GAAG,EAAE,CAAC,OAAO,CAAC,8EAA8E,CAAC,CAAC,GAAG,EAAE,CAAC;QAC3H,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QAEpE,+DAA+D;QAC/D,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;OAK7B,CAAC,CAAC,GAAG,EAAoC,CAAC;QAE3C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,oBAAoB,UAAU,CAAC,MAAM,iBAAiB,CAAC,CAAC;QAEpE,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;OAuBjC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4B9B,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;OAahC,CAAC,CAAC;QAEH,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,EAAE,WAAW,EAAE,IAAI,UAAU,EAAE,CAAC;YACzC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAChC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAChD,SAAS,IAAI,UAAU,CAAC,OAAO,CAAC;YAChC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC/B,aAAa,EAAE,CAAC;QAClB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,0BAA0B,aAAa,eAAe,SAAS,MAAM,CAAC,CAAC;IACrF,CAAC;IAED,8BAA8B;IAC9B,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAChD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;OAiBP,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;IAED,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAEhD,gCAAgC;QAChC,EAAE,CAAC,IAAI,CAAC;;;;;;;;OAQP,CAAC,CAAC;QAEH,UAAU;QACV,EAAE,CAAC,IAAI,CAAC;;;OAGP,CAAC,CAAC;QAEH,mCAAmC;QACnC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;OAoBP,CAAC,CAAC;QAEH,cAAc;QACd,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BP,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC1C,CAAC;IAED,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,MAAM,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;QAEjF,2BAA2B;QAC3B,EAAE,CAAC,IAAI,CAAC;;;OAGP,CAAC,CAAC;QAEH,yCAAyC;QACzC,EAAE,CAAC,IAAI,CAAC;;;OAGP,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;IAED,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,gBAAgB;QAChB,EAAE,CAAC,IAAI,CAAC;;;;OAIP,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACxC,CAAC;IAED,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAE/C,qCAAqC;QACrC,EAAE,CAAC,IAAI,CAAC;;;;;OAKP,CAAC,CAAC;QAEH,yCAAyC;QACzC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;OAsBP,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;IAED,wBAAwB;IACxB,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,0CAA0C;QAC1C,EAAE,CAAC,IAAI,CAAC;;;OAGP,CAAC,CAAC;QAEH,qDAAqD;QACrD,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC;;;SAGP,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC,CAAC,wBAAwB,CAAC,CAAC;QAEpC,6DAA6D;QAC7D,EAAE,CAAC,IAAI,CAAC;;;OAGP,CAAC,CAAC;QAEH,gEAAgE;QAChE,EAAE,CAAC,IAAI,CAAC;;;OAGP,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC1C,CAAC;IAED,kDAAkD;IAClD,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,mCAAmC;QACnC,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC;;;;SAIP,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAExB,aAAa;QACb,EAAE,CAAC,IAAI,CAAC;;;;;;OAMP,CAAC,CAAC;QAEH,yBAAyB;QACzB,EAAE,CAAC,IAAI,CAAC;;;;;;;;OAQP,CAAC,CAAC;QAEH,aAAa;QACb,EAAE,CAAC,IAAI,CAAC;;;;;;OAMP,CAAC,CAAC;QAEH,sBAAsB;QACtB,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;QACrF,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAExB,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IAClE,CAAC;IAED,0DAA0D;IAC1D,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YAAC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;gBAAE,MAAM,GAAG,CAAC;QAAC,CAAC;QAC5L,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YAAC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;gBAAE,MAAM,GAAG,CAAC;QAAC,CAAC;QAC7L,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YAAC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;gBAAE,MAAM,GAAG,CAAC;QAAC,CAAC;QACzM,EAAE,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;QAClF,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IACrE,CAAC;IAED,kGAAkG;IAClG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACT,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyDP,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,gGAAgG,CAAC,CAAC;IAChH,CAAC;CAEJ,CAAC,CAAC,iBAAiB;AAEpB;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,EAAqB;IACjD,wBAAwB;IACxB,EAAE,CAAC,IAAI,CAAC;;;;;GAKP,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EAAsC,CAAC;IACjH,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAEnC,IAAI,cAAc,GAAG,cAAc,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YAClC,KAAK,IAAI,CAAC,GAAG,cAAc,GAAG,CAAC,EAAE,CAAC,IAAI,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1D,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBACzB,IAAI,EAAE;oBAAE,EAAE,CAAC,EAAE,CAAC,CAAC;gBACf,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrE,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;QAEV,iBAAiB;QACjB,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,EAAE,CAAC;YAClF,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,uBAAuB,cAAc,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"migration-manager.js","sourceRoot":"","sources":["../../../src/storage/schema/migration-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC,MAAM,UAAU,aAAa,CAAC,EAAqB;IACjD,MAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAChC,0EAA0E,CAC3E,CAAC,GAAG,EAAE,CAAC;IAER,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EAA+B,CAAC;QAC1G,cAAc,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,cAAc,GAAG,cAAc,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC;QACvB,MAAM,UAAU,GAAG,GAAG,MAAM,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,wBAAwB,cAAc,SAAS,UAAU,MAAM,CAAC,CAAC;QAC7E,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACpC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QACzB,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAClF,MAAM,CAAC,IAAI,CAAC,uBAAuB,cAAc,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,uBAAuB,cAAc,EAAE,CAAC,CAAC;AACvD,CAAC"}
@@ -0,0 +1,591 @@
1
+ -- Claude Forge SQLite Schema (v1 baseline)
2
+ -- 所有表定义合并为单一基线,不再依赖增量迁移
3
+
4
+ -- ── 核心:事件与会话 ─────────────────────────────────────────────────────
5
+
6
+ CREATE TABLE IF NOT EXISTS events (
7
+ event_id TEXT PRIMARY KEY,
8
+ session_id TEXT NOT NULL,
9
+ project_path TEXT NOT NULL,
10
+ timestamp TEXT NOT NULL,
11
+ hook_type TEXT NOT NULL CHECK(hook_type IN ('PreToolUse', 'PostToolUse', 'UserPromptSubmit', 'Notification', 'Stop')),
12
+ tool_name TEXT,
13
+ tool_input TEXT,
14
+ tool_output TEXT,
15
+ user_prompt TEXT,
16
+ ai_response TEXT,
17
+ distilled INTEGER DEFAULT 0,
18
+ pipeline_id TEXT,
19
+ created_at TEXT DEFAULT (datetime('now'))
20
+ );
21
+
22
+ CREATE INDEX IF NOT EXISTS idx_events_session ON events(session_id);
23
+ CREATE INDEX IF NOT EXISTS idx_events_project ON events(project_path);
24
+ CREATE INDEX IF NOT EXISTS idx_events_timestamp ON events(timestamp DESC);
25
+ CREATE INDEX IF NOT EXISTS idx_events_distilled ON events(distilled);
26
+ CREATE INDEX IF NOT EXISTS idx_events_hook_type ON events(hook_type);
27
+ CREATE INDEX IF NOT EXISTS idx_events_pipeline ON events(pipeline_id);
28
+ CREATE INDEX IF NOT EXISTS idx_events_project_tool ON events(project_path, tool_name);
29
+ CREATE INDEX IF NOT EXISTS idx_events_project_date ON events(project_path, DATE(timestamp));
30
+ CREATE INDEX IF NOT EXISTS idx_events_pipeline_ts ON events(pipeline_id, timestamp DESC);
31
+
32
+ CREATE VIRTUAL TABLE IF NOT EXISTS events_fts USING fts5(
33
+ event_id UNINDEXED, session_id, project_path, tool_name, tool_input, user_prompt,
34
+ content=events, tokenize='unicode61'
35
+ );
36
+
37
+ CREATE TABLE IF NOT EXISTS sessions (
38
+ session_id TEXT PRIMARY KEY,
39
+ project_path TEXT NOT NULL,
40
+ status TEXT NOT NULL DEFAULT 'active' CHECK(status IN ('active', 'completed', 'interrupted', 'resumed', 'abandoned')),
41
+ start_time TEXT NOT NULL,
42
+ end_time TEXT,
43
+ last_event_time TEXT,
44
+ event_count INTEGER DEFAULT 0,
45
+ tags TEXT DEFAULT '[]',
46
+ notes TEXT DEFAULT NULL,
47
+ archived INTEGER NOT NULL DEFAULT 0,
48
+ created_at TEXT DEFAULT (datetime('now')),
49
+ updated_at TEXT DEFAULT (datetime('now'))
50
+ );
51
+
52
+ CREATE INDEX IF NOT EXISTS idx_sessions_project ON sessions(project_path);
53
+ CREATE INDEX IF NOT EXISTS idx_sessions_status ON sessions(status);
54
+ CREATE INDEX IF NOT EXISTS idx_sessions_archived ON sessions(archived);
55
+ CREATE INDEX IF NOT EXISTS idx_sessions_project_status ON sessions(project_path, status);
56
+
57
+ CREATE TABLE IF NOT EXISTS distill_queue (
58
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
59
+ session_id TEXT NOT NULL,
60
+ event_ids TEXT NOT NULL,
61
+ status TEXT DEFAULT 'pending' CHECK(status IN ('pending', 'processing', 'completed', 'failed')),
62
+ retry_count INTEGER DEFAULT 0,
63
+ error_message TEXT,
64
+ created_at TEXT DEFAULT (datetime('now')),
65
+ processed_at TEXT
66
+ );
67
+
68
+ CREATE INDEX IF NOT EXISTS idx_distill_queue_status ON distill_queue(status);
69
+
70
+ -- ── 任务复盘与失败信号 ─────────────────────────────────────────────────────
71
+
72
+ CREATE TABLE IF NOT EXISTS task_sessions (
73
+ id TEXT PRIMARY KEY,
74
+ session_id TEXT NOT NULL,
75
+ project_path TEXT NOT NULL,
76
+ pipeline_id TEXT,
77
+ requirement TEXT NOT NULL,
78
+ task_type TEXT NOT NULL DEFAULT 'other',
79
+ complexity TEXT NOT NULL DEFAULT 'moderate',
80
+ total_rounds INTEGER NOT NULL DEFAULT 0,
81
+ total_tool_calls INTEGER NOT NULL DEFAULT 0,
82
+ write_edit_count INTEGER NOT NULL DEFAULT 0,
83
+ fix_attempt_count INTEGER NOT NULL DEFAULT 0,
84
+ quality_fail_count INTEGER NOT NULL DEFAULT 0,
85
+ quality_pass_count INTEGER NOT NULL DEFAULT 0,
86
+ failure_signal_count INTEGER NOT NULL DEFAULT 0,
87
+ phase_distribution TEXT,
88
+ outcome TEXT NOT NULL DEFAULT 'in_progress',
89
+ duration_ms INTEGER,
90
+ satisfaction_score REAL DEFAULT NULL,
91
+ started_at TEXT NOT NULL,
92
+ ended_at TEXT,
93
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
94
+ );
95
+
96
+ CREATE INDEX IF NOT EXISTS idx_ts_session ON task_sessions(session_id);
97
+ CREATE INDEX IF NOT EXISTS idx_ts_project ON task_sessions(project_path);
98
+ CREATE INDEX IF NOT EXISTS idx_ts_task_type ON task_sessions(task_type);
99
+
100
+ CREATE TABLE IF NOT EXISTS failure_signals (
101
+ id TEXT PRIMARY KEY,
102
+ session_id TEXT NOT NULL,
103
+ project_path TEXT NOT NULL,
104
+ task_session_id TEXT,
105
+ signal_type TEXT NOT NULL,
106
+ raw_prompt TEXT NOT NULL,
107
+ matched_pattern TEXT,
108
+ context_phase TEXT,
109
+ is_iteration INTEGER NOT NULL DEFAULT 0,
110
+ preceding_tool_count INTEGER NOT NULL DEFAULT 0,
111
+ timestamp TEXT NOT NULL,
112
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
113
+ );
114
+
115
+ CREATE INDEX IF NOT EXISTS idx_fs_session ON failure_signals(session_id);
116
+ CREATE INDEX IF NOT EXISTS idx_fs_project ON failure_signals(project_path);
117
+ CREATE INDEX IF NOT EXISTS idx_fs_task_session ON failure_signals(task_session_id);
118
+
119
+ CREATE TABLE IF NOT EXISTS task_patterns (
120
+ id TEXT PRIMARY KEY,
121
+ task_type TEXT NOT NULL,
122
+ failure_pattern TEXT NOT NULL,
123
+ prevention_strategy TEXT NOT NULL,
124
+ confidence_score REAL NOT NULL DEFAULT 0.0,
125
+ sample_count INTEGER NOT NULL DEFAULT 0,
126
+ adoption_count INTEGER NOT NULL DEFAULT 0,
127
+ effectiveness_score REAL NOT NULL DEFAULT 0.5,
128
+ last_used TEXT DEFAULT NULL,
129
+ last_updated TEXT NOT NULL DEFAULT (datetime('now')),
130
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
131
+ );
132
+
133
+ CREATE INDEX IF NOT EXISTS idx_tp_task_type ON task_patterns(task_type);
134
+
135
+ CREATE TABLE IF NOT EXISTS satisfaction_signals (
136
+ id TEXT PRIMARY KEY,
137
+ session_id TEXT NOT NULL,
138
+ project_path TEXT NOT NULL,
139
+ task_session_id TEXT,
140
+ signal_type TEXT NOT NULL,
141
+ signal_value REAL NOT NULL,
142
+ weight REAL NOT NULL DEFAULT 1.0,
143
+ raw_data TEXT,
144
+ timestamp TEXT NOT NULL DEFAULT (datetime('now'))
145
+ );
146
+
147
+ CREATE INDEX IF NOT EXISTS idx_ss_session ON satisfaction_signals(session_id);
148
+ CREATE INDEX IF NOT EXISTS idx_ss_task_session ON satisfaction_signals(task_session_id);
149
+
150
+ -- ── API 与性能追踪 ─────────────────────────────────────────────────────
151
+
152
+ CREATE TABLE IF NOT EXISTS api_usage (
153
+ id TEXT PRIMARY KEY,
154
+ session_id TEXT NOT NULL,
155
+ label TEXT NOT NULL,
156
+ model TEXT NOT NULL DEFAULT '',
157
+ tokens_in INTEGER NOT NULL DEFAULT 0,
158
+ tokens_out INTEGER NOT NULL DEFAULT 0,
159
+ cost_usd REAL NOT NULL DEFAULT 0.0,
160
+ latency_ms INTEGER NOT NULL DEFAULT 0,
161
+ engine_name TEXT DEFAULT NULL,
162
+ timestamp TEXT NOT NULL DEFAULT (datetime('now'))
163
+ );
164
+
165
+ CREATE INDEX IF NOT EXISTS idx_au_session ON api_usage(session_id);
166
+ CREATE INDEX IF NOT EXISTS idx_au_timestamp ON api_usage(timestamp DESC);
167
+
168
+ CREATE TABLE IF NOT EXISTS latency_traces (
169
+ id TEXT PRIMARY KEY,
170
+ session_id TEXT NOT NULL,
171
+ project_path TEXT NOT NULL,
172
+ trace_type TEXT NOT NULL,
173
+ engine_name TEXT NOT NULL,
174
+ duration_ms INTEGER NOT NULL,
175
+ metadata TEXT,
176
+ timestamp TEXT NOT NULL DEFAULT (datetime('now'))
177
+ );
178
+
179
+ CREATE INDEX IF NOT EXISTS idx_lt_session ON latency_traces(session_id);
180
+
181
+ CREATE TABLE IF NOT EXISTS tracker_tool_calls (
182
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
183
+ session_id TEXT NOT NULL,
184
+ tool_name TEXT NOT NULL,
185
+ file_path TEXT,
186
+ timestamp TEXT NOT NULL,
187
+ created_at TEXT DEFAULT (datetime('now'))
188
+ );
189
+
190
+ CREATE INDEX IF NOT EXISTS idx_ttc_session ON tracker_tool_calls(session_id);
191
+
192
+ -- ── 知识图谱 ─────────────────────────────────────────────────────────
193
+
194
+ CREATE TABLE IF NOT EXISTS knowledge_nodes (
195
+ id TEXT PRIMARY KEY,
196
+ project_path TEXT NOT NULL,
197
+ node_type TEXT NOT NULL,
198
+ title TEXT NOT NULL,
199
+ content TEXT NOT NULL,
200
+ tags TEXT,
201
+ embedding_hint TEXT,
202
+ archived INTEGER NOT NULL DEFAULT 0,
203
+ last_accessed_at TEXT,
204
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
205
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
206
+ );
207
+
208
+ CREATE INDEX IF NOT EXISTS idx_kn_project ON knowledge_nodes(project_path);
209
+ CREATE INDEX IF NOT EXISTS idx_kn_type ON knowledge_nodes(node_type);
210
+
211
+ CREATE TABLE IF NOT EXISTS knowledge_edges (
212
+ id TEXT PRIMARY KEY,
213
+ from_node_id TEXT NOT NULL,
214
+ to_node_id TEXT NOT NULL,
215
+ edge_type TEXT NOT NULL,
216
+ weight REAL NOT NULL DEFAULT 1.0,
217
+ metadata TEXT,
218
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
219
+ );
220
+
221
+ CREATE INDEX IF NOT EXISTS idx_ke_from ON knowledge_edges(from_node_id);
222
+ CREATE INDEX IF NOT EXISTS idx_ke_to ON knowledge_edges(to_node_id);
223
+
224
+ CREATE VIRTUAL TABLE IF NOT EXISTS knowledge_nodes_fts
225
+ USING fts5(id UNINDEXED, project_path, title, content, embedding_hint,
226
+ content=knowledge_nodes, tokenize='unicode61');
227
+
228
+ CREATE TRIGGER IF NOT EXISTS knowledge_nodes_fts_insert
229
+ AFTER INSERT ON knowledge_nodes BEGIN
230
+ INSERT INTO knowledge_nodes_fts(rowid, id, project_path, title, content, embedding_hint)
231
+ VALUES (new.rowid, new.id, new.project_path, new.title, new.content, new.embedding_hint);
232
+ END;
233
+
234
+ CREATE TRIGGER IF NOT EXISTS knowledge_nodes_fts_update
235
+ AFTER UPDATE ON knowledge_nodes BEGIN
236
+ INSERT INTO knowledge_nodes_fts(knowledge_nodes_fts, rowid, id, project_path, title, content, embedding_hint)
237
+ VALUES ('delete', old.rowid, old.id, old.project_path, old.title, old.content, old.embedding_hint);
238
+ INSERT INTO knowledge_nodes_fts(rowid, id, project_path, title, content, embedding_hint)
239
+ VALUES (new.rowid, new.id, new.project_path, new.title, new.content, new.embedding_hint);
240
+ END;
241
+
242
+ CREATE TRIGGER IF NOT EXISTS knowledge_nodes_fts_delete
243
+ AFTER DELETE ON knowledge_nodes BEGIN
244
+ INSERT INTO knowledge_nodes_fts(knowledge_nodes_fts, rowid, id, project_path, title, content, embedding_hint)
245
+ VALUES ('delete', old.rowid, old.id, old.project_path, old.title, old.content, old.embedding_hint);
246
+ END;
247
+
248
+ -- ── 意图规则与决策 ─────────────────────────────────────────────────────
249
+
250
+ CREATE TABLE IF NOT EXISTS intent_rules (
251
+ id TEXT PRIMARY KEY,
252
+ rule_type TEXT NOT NULL,
253
+ pattern TEXT NOT NULL,
254
+ confidence REAL NOT NULL DEFAULT 0.8,
255
+ hit_count INTEGER NOT NULL DEFAULT 0,
256
+ miss_count INTEGER NOT NULL DEFAULT 0,
257
+ source TEXT NOT NULL DEFAULT 'distilled',
258
+ priority TEXT DEFAULT 'learned' CHECK(priority IN ('ground_truth', 'learned')),
259
+ success_count INTEGER DEFAULT 0,
260
+ failure_count INTEGER DEFAULT 0,
261
+ avg_satisfaction REAL DEFAULT 0.0,
262
+ is_active INTEGER DEFAULT 1 CHECK(is_active IN (0, 1)),
263
+ conflicts_with TEXT,
264
+ last_hit_at TEXT,
265
+ last_quality_update_at TEXT,
266
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
267
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
268
+ );
269
+
270
+ CREATE INDEX IF NOT EXISTS idx_intent_rules_priority_active ON intent_rules(priority, is_active);
271
+ CREATE INDEX IF NOT EXISTS idx_intent_rules_confidence_active ON intent_rules(confidence DESC, is_active);
272
+
273
+ CREATE VIEW IF NOT EXISTS intent_rules_quality AS
274
+ SELECT id, rule_type, pattern, priority, confidence,
275
+ hit_count, miss_count, success_count, failure_count, avg_satisfaction, is_active,
276
+ CASE WHEN (success_count + failure_count) > 0
277
+ THEN CAST(success_count AS REAL) / (success_count + failure_count) ELSE 0.0 END AS accuracy,
278
+ CASE WHEN (hit_count + miss_count) > 0
279
+ THEN CAST(hit_count AS REAL) / (hit_count + miss_count) ELSE 0.0 END AS hit_rate,
280
+ CASE WHEN (success_count + failure_count) > 0 AND (hit_count + miss_count) > 0
281
+ THEN (CAST(success_count AS REAL) / (success_count + failure_count) *
282
+ CAST(hit_count AS REAL) / (hit_count + miss_count) * avg_satisfaction)
283
+ ELSE 0.0 END AS quality_score,
284
+ conflicts_with, last_quality_update_at, created_at, updated_at
285
+ FROM intent_rules ORDER BY quality_score DESC, confidence DESC;
286
+
287
+ CREATE TABLE IF NOT EXISTS intent_decisions (
288
+ id TEXT PRIMARY KEY,
289
+ session_id TEXT NOT NULL,
290
+ project_path TEXT NOT NULL,
291
+ user_prompt TEXT NOT NULL,
292
+ matched_rule_id TEXT,
293
+ result_complexity TEXT NOT NULL,
294
+ result_task_type TEXT,
295
+ confidence REAL NOT NULL DEFAULT 0.0,
296
+ method TEXT NOT NULL DEFAULT 'ai',
297
+ feedback TEXT,
298
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
299
+ );
300
+
301
+ CREATE INDEX IF NOT EXISTS idx_intent_decisions_session ON intent_decisions(session_id);
302
+ CREATE INDEX IF NOT EXISTS idx_intent_decisions_rule ON intent_decisions(matched_rule_id);
303
+ CREATE INDEX IF NOT EXISTS idx_intent_decisions_created ON intent_decisions(created_at DESC);
304
+
305
+ -- ── 质量门禁 ─────────────────────────────────────────────────────────
306
+
307
+ CREATE TABLE IF NOT EXISTS quality_gate_history (
308
+ id TEXT PRIMARY KEY,
309
+ session_id TEXT NOT NULL,
310
+ project_path TEXT NOT NULL,
311
+ file_path TEXT NOT NULL,
312
+ category TEXT NOT NULL,
313
+ level TEXT NOT NULL,
314
+ message TEXT NOT NULL,
315
+ resolved INTEGER DEFAULT 0,
316
+ resolved_at TEXT DEFAULT NULL,
317
+ resolved_type TEXT DEFAULT NULL,
318
+ pipeline_id TEXT,
319
+ created_at TEXT DEFAULT (datetime('now'))
320
+ );
321
+
322
+ CREATE INDEX IF NOT EXISTS idx_qgh_session ON quality_gate_history(session_id);
323
+ CREATE INDEX IF NOT EXISTS idx_qgh_project ON quality_gate_history(project_path);
324
+ CREATE INDEX IF NOT EXISTS idx_qgh_pipeline ON quality_gate_history(pipeline_id);
325
+
326
+ CREATE TABLE IF NOT EXISTS quality_gate_suppressions (
327
+ id TEXT PRIMARY KEY,
328
+ category TEXT NOT NULL,
329
+ project_path TEXT NOT NULL,
330
+ suppression_count INTEGER NOT NULL DEFAULT 1,
331
+ first_suppressed_at TEXT NOT NULL,
332
+ last_suppressed_at TEXT NOT NULL,
333
+ expires_at TEXT DEFAULT NULL,
334
+ created_at TEXT DEFAULT (datetime('now'))
335
+ );
336
+
337
+ CREATE INDEX IF NOT EXISTS idx_qgs_project ON quality_gate_suppressions(project_path);
338
+
339
+ -- ── 动态流水线 ─────────────────────────────────────────────────────────
340
+
341
+ CREATE TABLE IF NOT EXISTS dynamic_pipelines (
342
+ id TEXT PRIMARY KEY,
343
+ requirement TEXT NOT NULL,
344
+ project_path TEXT NOT NULL,
345
+ session_id TEXT NOT NULL,
346
+ template_id TEXT,
347
+ convention_id TEXT,
348
+ complexity TEXT,
349
+ reasoning TEXT,
350
+ status TEXT NOT NULL DEFAULT 'in_progress',
351
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
352
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
353
+ );
354
+
355
+ CREATE INDEX IF NOT EXISTS idx_dp_session ON dynamic_pipelines(session_id);
356
+ CREATE INDEX IF NOT EXISTS idx_dp_project ON dynamic_pipelines(project_path);
357
+ CREATE INDEX IF NOT EXISTS idx_dp_status ON dynamic_pipelines(status);
358
+ CREATE INDEX IF NOT EXISTS idx_dp_project_status_created ON dynamic_pipelines(project_path, status, created_at DESC);
359
+
360
+ CREATE TABLE IF NOT EXISTS dynamic_nodes (
361
+ id TEXT PRIMARY KEY,
362
+ pipeline_id TEXT NOT NULL,
363
+ node_type_id TEXT NOT NULL,
364
+ status TEXT NOT NULL DEFAULT 'pending',
365
+ dependencies TEXT NOT NULL DEFAULT '[]',
366
+ bound_skill_name TEXT,
367
+ config_override TEXT,
368
+ output TEXT,
369
+ started_at TEXT,
370
+ completed_at TEXT,
371
+ current_step_id TEXT,
372
+ completed_steps TEXT DEFAULT '[]',
373
+ failed_steps TEXT DEFAULT '[]',
374
+ step_executions TEXT DEFAULT '[]',
375
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
376
+ updated_at TEXT NOT NULL DEFAULT (datetime('now')),
377
+ FOREIGN KEY (pipeline_id) REFERENCES dynamic_pipelines(id) ON DELETE CASCADE
378
+ );
379
+
380
+ CREATE INDEX IF NOT EXISTS idx_dn_pipeline ON dynamic_nodes(pipeline_id);
381
+ CREATE INDEX IF NOT EXISTS idx_dn_status ON dynamic_nodes(status);
382
+
383
+ CREATE TABLE IF NOT EXISTS dynamic_pipeline_templates (
384
+ id TEXT PRIMARY KEY,
385
+ name TEXT NOT NULL,
386
+ description TEXT NOT NULL,
387
+ source TEXT NOT NULL DEFAULT 'builtin',
388
+ convention_id TEXT,
389
+ convention_name TEXT,
390
+ trigger TEXT NOT NULL,
391
+ nodes TEXT NOT NULL,
392
+ quality_standards TEXT,
393
+ version TEXT,
394
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
395
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
396
+ );
397
+
398
+ CREATE INDEX IF NOT EXISTS idx_dpt_source ON dynamic_pipeline_templates(source);
399
+ CREATE INDEX IF NOT EXISTS idx_dpt_convention ON dynamic_pipeline_templates(convention_id);
400
+
401
+ CREATE TABLE IF NOT EXISTS step_executions (
402
+ id TEXT PRIMARY KEY,
403
+ pipeline_id TEXT NOT NULL,
404
+ node_id TEXT NOT NULL,
405
+ step_id TEXT NOT NULL,
406
+ status TEXT NOT NULL DEFAULT 'pending',
407
+ output TEXT,
408
+ error TEXT,
409
+ started_at TEXT,
410
+ completed_at TEXT,
411
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
412
+ );
413
+
414
+ CREATE INDEX IF NOT EXISTS idx_step_executions_pipeline ON step_executions(pipeline_id);
415
+ CREATE INDEX IF NOT EXISTS idx_step_executions_node ON step_executions(node_id);
416
+ CREATE INDEX IF NOT EXISTS idx_step_executions_status ON step_executions(status);
417
+ CREATE INDEX IF NOT EXISTS idx_step_exec_pipeline_status_created ON step_executions(pipeline_id, status, created_at DESC);
418
+
419
+ -- ── 节点类型 ─────────────────────────────────────────────────────────
420
+
421
+ CREATE TABLE IF NOT EXISTS node_types (
422
+ id TEXT PRIMARY KEY,
423
+ name TEXT NOT NULL,
424
+ description TEXT,
425
+ semantic_category TEXT,
426
+ completion_config TEXT NOT NULL,
427
+ activity_threshold TEXT NOT NULL,
428
+ default_skills TEXT,
429
+ completion_rules TEXT NOT NULL DEFAULT '[]',
430
+ expected_artifacts TEXT DEFAULT '[]',
431
+ instruction_suffix TEXT,
432
+ source TEXT NOT NULL DEFAULT 'builtin' CHECK(source IN ('builtin', 'convention')),
433
+ convention_id TEXT,
434
+ created_at TEXT DEFAULT (datetime('now')),
435
+ updated_at TEXT DEFAULT (datetime('now'))
436
+ );
437
+
438
+ CREATE INDEX IF NOT EXISTS idx_node_types_source ON node_types(source);
439
+ CREATE INDEX IF NOT EXISTS idx_node_types_convention ON node_types(convention_id);
440
+ CREATE INDEX IF NOT EXISTS idx_node_types_category ON node_types(semantic_category);
441
+
442
+ -- ── Pattern 执行与进化 ─────────────────────────────────────────────────
443
+
444
+ CREATE TABLE IF NOT EXISTS pattern_executions (
445
+ id TEXT PRIMARY KEY,
446
+ pattern_id TEXT NOT NULL,
447
+ session_id TEXT NOT NULL,
448
+ project_path TEXT NOT NULL,
449
+ phase_id TEXT NOT NULL,
450
+ status TEXT NOT NULL DEFAULT 'pending',
451
+ started_at TEXT,
452
+ completed_at TEXT,
453
+ duration_ms INTEGER,
454
+ output TEXT,
455
+ user_satisfaction INTEGER,
456
+ task_session_id TEXT DEFAULT NULL,
457
+ outcome TEXT DEFAULT NULL,
458
+ created_at TEXT DEFAULT (datetime('now'))
459
+ );
460
+
461
+ CREATE INDEX IF NOT EXISTS idx_pe_pattern ON pattern_executions(pattern_id);
462
+ CREATE INDEX IF NOT EXISTS idx_pe_session ON pattern_executions(session_id);
463
+
464
+ CREATE TABLE IF NOT EXISTS pattern_evolution_history (
465
+ id TEXT PRIMARY KEY,
466
+ pattern_id TEXT NOT NULL,
467
+ old_version TEXT NOT NULL,
468
+ new_version TEXT NOT NULL,
469
+ old_yaml TEXT NOT NULL,
470
+ new_yaml TEXT NOT NULL,
471
+ validation_status TEXT DEFAULT 'pending',
472
+ test_success_rate REAL DEFAULT NULL,
473
+ evolved_at TEXT NOT NULL,
474
+ validated_at TEXT DEFAULT NULL,
475
+ created_at TEXT DEFAULT (datetime('now'))
476
+ );
477
+
478
+ CREATE INDEX IF NOT EXISTS idx_peh_pattern ON pattern_evolution_history(pattern_id);
479
+
480
+ -- ── 执行计划(Execution Engine) ─────────────────────────────────────────
481
+
482
+ CREATE TABLE IF NOT EXISTS pipeline_plans (
483
+ plan_id TEXT PRIMARY KEY,
484
+ template_id TEXT NOT NULL,
485
+ template_version TEXT NOT NULL,
486
+ goal TEXT NOT NULL,
487
+ project_path TEXT NOT NULL,
488
+ session_id TEXT NOT NULL,
489
+ params TEXT,
490
+ status TEXT NOT NULL DEFAULT 'draft' CHECK(status IN ('draft', 'approved', 'running', 'completed', 'failed', 'aborted')),
491
+ created_at TEXT DEFAULT (datetime('now')),
492
+ updated_at TEXT DEFAULT (datetime('now'))
493
+ );
494
+
495
+ CREATE INDEX IF NOT EXISTS idx_pipeline_plans_project ON pipeline_plans(project_path);
496
+ CREATE INDEX IF NOT EXISTS idx_pipeline_plans_status ON pipeline_plans(status);
497
+
498
+ CREATE TABLE IF NOT EXISTS plan_nodes (
499
+ node_id TEXT PRIMARY KEY,
500
+ plan_id TEXT NOT NULL,
501
+ phase TEXT NOT NULL,
502
+ title TEXT NOT NULL,
503
+ instruction TEXT NOT NULL,
504
+ completion_rules TEXT NOT NULL,
505
+ strategy_pool TEXT NOT NULL,
506
+ retry_policy TEXT NOT NULL,
507
+ timeout_sec INTEGER NOT NULL,
508
+ dependencies TEXT,
509
+ status TEXT NOT NULL DEFAULT 'pending' CHECK(status IN ('pending', 'in_progress', 'retrying', 'blocked', 'done', 'failed', 'skipped')),
510
+ current_strategy_id TEXT,
511
+ attempt_count INTEGER DEFAULT 0,
512
+ created_at TEXT DEFAULT (datetime('now')),
513
+ updated_at TEXT DEFAULT (datetime('now')),
514
+ FOREIGN KEY (plan_id) REFERENCES pipeline_plans(plan_id)
515
+ );
516
+
517
+ CREATE INDEX IF NOT EXISTS idx_plan_nodes_plan ON plan_nodes(plan_id);
518
+
519
+ CREATE TABLE IF NOT EXISTS node_attempts (
520
+ attempt_id TEXT PRIMARY KEY,
521
+ node_id TEXT NOT NULL,
522
+ strategy_id TEXT NOT NULL,
523
+ attempt_number INTEGER NOT NULL,
524
+ started_at TEXT NOT NULL,
525
+ ended_at TEXT,
526
+ status TEXT NOT NULL CHECK(status IN ('running', 'passed', 'failed')),
527
+ verification_result TEXT,
528
+ diagnosis_result TEXT,
529
+ created_at TEXT DEFAULT (datetime('now'))
530
+ );
531
+
532
+ CREATE INDEX IF NOT EXISTS idx_node_attempts_node ON node_attempts(node_id);
533
+
534
+ -- ── 模板版本与进化 ─────────────────────────────────────────────────────
535
+
536
+ CREATE TABLE IF NOT EXISTS template_versions (
537
+ version_id TEXT PRIMARY KEY,
538
+ template_id TEXT NOT NULL,
539
+ version TEXT NOT NULL,
540
+ content TEXT NOT NULL,
541
+ evolved_from TEXT,
542
+ evolution_reason TEXT,
543
+ created_at TEXT DEFAULT (datetime('now'))
544
+ );
545
+
546
+ CREATE INDEX IF NOT EXISTS idx_template_versions_template ON template_versions(template_id);
547
+
548
+ CREATE TABLE IF NOT EXISTS template_evolution_events (
549
+ event_id TEXT PRIMARY KEY,
550
+ template_id TEXT NOT NULL,
551
+ plan_id TEXT NOT NULL,
552
+ signal_type TEXT NOT NULL,
553
+ evidence TEXT NOT NULL,
554
+ action TEXT NOT NULL,
555
+ new_version_id TEXT,
556
+ created_at TEXT DEFAULT (datetime('now'))
557
+ );
558
+
559
+ CREATE INDEX IF NOT EXISTS idx_tee_template ON template_evolution_events(template_id);
560
+
561
+ -- ── 基础设施 ─────────────────────────────────────────────────────────
562
+
563
+ CREATE TABLE IF NOT EXISTS daemon_state (
564
+ key TEXT PRIMARY KEY,
565
+ value TEXT NOT NULL,
566
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
567
+ );
568
+
569
+ CREATE TABLE IF NOT EXISTS config_history (
570
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
571
+ snapshot TEXT NOT NULL,
572
+ saved_at TEXT NOT NULL DEFAULT (datetime('now'))
573
+ );
574
+
575
+ CREATE TABLE IF NOT EXISTS project_meta (
576
+ project_path TEXT PRIMARY KEY,
577
+ notes TEXT NOT NULL DEFAULT '',
578
+ tags TEXT NOT NULL DEFAULT '[]',
579
+ archived INTEGER NOT NULL DEFAULT 0,
580
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
581
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
582
+ );
583
+
584
+ CREATE INDEX IF NOT EXISTS idx_project_meta_archived ON project_meta(archived);
585
+
586
+ -- ── Schema 版本追踪 ─────────────────────────────────────────────────────
587
+
588
+ CREATE TABLE IF NOT EXISTS schema_version (
589
+ version INTEGER NOT NULL,
590
+ applied_at TEXT DEFAULT (datetime('now'))
591
+ );