@autocode-cli/autocode 0.29.0 → 0.37.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 (203) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_i18n/Mqu2gZRD/en/messages.json +1 -0
  3. package/.output/public/_i18n/Mqu2gZRD/fr/messages.json +1 -0
  4. package/.output/public/_nuxt/-DEWfUYv.js +1 -0
  5. package/.output/public/_nuxt/{CGH8jYZ3.js → 0VxesDuV.js} +1 -1
  6. package/.output/public/_nuxt/{Cw9GjiQd.js → 3dDT4orS.js} +1 -1
  7. package/.output/public/_nuxt/{DJ68wI4q.js → B-L8_kPw.js} +1 -1
  8. package/.output/public/_nuxt/{WXFPFJGI.js → B6_0bWxd.js} +1 -1
  9. package/.output/public/_nuxt/B8IBFC6T.js +1 -0
  10. package/.output/public/_nuxt/{mhFvEihp.js → B9-SkqjX.js} +3 -3
  11. package/.output/public/_nuxt/{DwEf6snv.js → BBTritm-.js} +1 -1
  12. package/.output/public/_nuxt/{D2yqkPsk.js → BDW6A7V8.js} +1 -1
  13. package/.output/public/_nuxt/{CuMOMF74.js → BE1Ftxsu.js} +1 -1
  14. package/.output/public/_nuxt/BF5itqHW.js +10 -0
  15. package/.output/public/_nuxt/{c7taDBy4.js → BHpbNCa8.js} +1 -1
  16. package/.output/public/_nuxt/{CUrMRCov.js → BJGB6i4C.js} +1 -1
  17. package/.output/public/_nuxt/{ttDeS43_.js → BJnlSHzy.js} +1 -1
  18. package/.output/public/_nuxt/{Dnk-IiYT.js → BNr40Cyx.js} +1 -1
  19. package/.output/public/_nuxt/{CftWxl87.js → BP-5A3ad.js} +1 -1
  20. package/.output/public/_nuxt/{CvtJgrAC.js → BPSRe1xo.js} +1 -1
  21. package/.output/public/_nuxt/{DV1gbxJr.js → BatC3POU.js} +1 -1
  22. package/.output/public/_nuxt/{QO28866g.js → BcwrT42V.js} +1 -1
  23. package/.output/public/_nuxt/{MqYwBbea.js → BmfOZEEG.js} +1 -1
  24. package/.output/public/_nuxt/BqOlVwUK.js +1 -0
  25. package/.output/public/_nuxt/{CMirklGN.js → Bx15WLHx.js} +1 -1
  26. package/.output/public/_nuxt/{s3F7y6k3.js → C1Dh6gFG.js} +1 -1
  27. package/.output/public/_nuxt/{Bb4iE1RK.js → C1d_VCXk.js} +1 -1
  28. package/.output/public/_nuxt/{YFXx8Qjo.js → C3g32ML-.js} +1 -1
  29. package/.output/public/_nuxt/{BiTHsA5D.js → C819KIPL.js} +1 -1
  30. package/.output/public/_nuxt/{DMLkLSSr.js → CDRiuU72.js} +1 -1
  31. package/.output/public/_nuxt/{BWuiHx6Z.js → CH4xRPqk.js} +1 -1
  32. package/.output/public/_nuxt/{Qp3vP2w-.js → CHFxtqug.js} +1 -1
  33. package/.output/public/_nuxt/{BhOptLaB.js → CHQoxcLf.js} +1 -1
  34. package/.output/public/_nuxt/CKyM99yH.js +1 -0
  35. package/.output/public/_nuxt/{2aYBL_7i.js → CORW7tev.js} +1 -1
  36. package/.output/public/_nuxt/{5c4wy8Fe.js → CQakkP7y.js} +1 -1
  37. package/.output/public/_nuxt/{C1majTdt.js → CTidC4T0.js} +1 -1
  38. package/.output/public/_nuxt/CWELpXTp.js +1 -0
  39. package/.output/public/_nuxt/{C8ykELcI.js → CjND9Y9S.js} +1 -1
  40. package/.output/public/_nuxt/{eAMnPBdX.js → Cm1brjPJ.js} +1 -1
  41. package/.output/public/_nuxt/{DUT6s2Vc.js → CohKcwVk.js} +1 -1
  42. package/.output/public/_nuxt/CpaAmOT1.js +1 -0
  43. package/.output/public/_nuxt/{BKohRmb3.js → CqtB_OH7.js} +1 -1
  44. package/.output/public/_nuxt/{DBRrdiDg.js → CvEn06t8.js} +1 -1
  45. package/.output/public/_nuxt/{D0l9HWst.js → D3FsoLQm.js} +1 -1
  46. package/.output/public/_nuxt/{ZxHW_Wwi.js → D3uRvzsu.js} +1 -1
  47. package/.output/public/_nuxt/{c9kaG6Mb.js → D6s--CDK.js} +1 -1
  48. package/.output/public/_nuxt/{CFO65yNa.js → DL-48EFA.js} +1 -1
  49. package/.output/public/_nuxt/{a0ULJgSn.js → DPdNpAt1.js} +1 -1
  50. package/.output/public/_nuxt/DbKMezC2.js +1 -0
  51. package/.output/public/_nuxt/{W7VQVcj3.js → DjSp0ni5.js} +3 -3
  52. package/.output/public/_nuxt/{C9F9DISc.js → Dku8fc7v.js} +1 -1
  53. package/.output/public/_nuxt/{B-SoSAQ-.js → DorDSzHT.js} +1 -1
  54. package/.output/public/_nuxt/{CtihvsfH.js → DpJr9JIo.js} +1 -1
  55. package/.output/public/_nuxt/{DS8c6APr.js → DvdVpK92.js} +1 -1
  56. package/.output/public/_nuxt/{DfzafmDP.js → DyAfzMRU.js} +1 -1
  57. package/.output/public/_nuxt/{tqfMB__6.js → G3ENYyJJ.js} +1 -1
  58. package/.output/public/_nuxt/{BvR2cHrU.js → G3RO7xM_.js} +1 -1
  59. package/.output/public/_nuxt/{BsOUGgHX.js → Q3VbeUEc.js} +1 -1
  60. package/.output/public/_nuxt/{E037g09h.js → _Lx_e17m.js} +1 -1
  61. package/.output/public/_nuxt/{DEbgyyF-.js → _S9g-Cdv.js} +1 -1
  62. package/.output/public/_nuxt/{C_XYgaP4.js → _dIH-mlE.js} +1 -1
  63. package/.output/public/_nuxt/builds/latest.json +1 -1
  64. package/.output/public/_nuxt/builds/meta/cbc2f99e-ecf0-446a-810b-808825114bc3.json +1 -0
  65. package/.output/public/_nuxt/{BrN48gj6.js → c0R8lEWK.js} +1 -1
  66. package/.output/public/_nuxt/cli.D68WAxVv.css +1 -0
  67. package/.output/public/_nuxt/{Dmbsi9xE.js → cm-fPQZs.js} +1 -1
  68. package/.output/public/_nuxt/{C2MG9-_i.js → hYe2UtEI.js} +1 -1
  69. package/.output/public/_nuxt/index.B4qqY6WX.css +1 -0
  70. package/.output/public/_nuxt/index.CPvzWVwd.css +1 -0
  71. package/.output/public/_nuxt/{Camk5F-_.js → mbPYOeR0.js} +1 -1
  72. package/.output/public/_nuxt/n-2mvXdi.js +1 -0
  73. package/.output/public/_nuxt/new.84MgEEsd.css +1 -0
  74. package/.output/public/_nuxt/prompt.CNw9EZnJ.css +1 -0
  75. package/.output/public/_nuxt/{CL8Pd5Up.js → qNJDhLpf.js} +1 -1
  76. package/.output/public/_nuxt/{CDsqJjO8.js → rFVztcxU.js} +1 -1
  77. package/.output/public/_nuxt/{BG7brVhY.js → up1a6xQr.js} +1 -1
  78. package/.output/public/_nuxt/x9aAWeiI.js +1 -0
  79. package/.output/public/_payload.json +1 -1
  80. package/.output/public/api/_openapi.json +1 -1
  81. package/.output/public/docs/api/_payload.json +1 -1
  82. package/.output/public/docs/api/index.html +8 -4
  83. package/.output/public/docs/cli/_payload.json +1 -1
  84. package/.output/public/docs/cli/index.html +13 -13
  85. package/.output/public/index.html +1 -1
  86. package/.output/server/chunks/_/en.mjs +16 -23
  87. package/.output/server/chunks/_/en.mjs.map +1 -1
  88. package/.output/server/chunks/_/fr.mjs +16 -23
  89. package/.output/server/chunks/_/fr.mjs.map +1 -1
  90. package/.output/server/chunks/build/LandingAutonomy-styles.Dvel3Juy.mjs +8 -0
  91. package/.output/server/chunks/build/LandingAutonomy-styles.Dvel3Juy.mjs.map +1 -0
  92. package/.output/server/chunks/build/LandingFooter-styles.CudcJSR4.mjs +8 -0
  93. package/.output/server/chunks/build/LandingFooter-styles.CudcJSR4.mjs.map +1 -0
  94. package/.output/server/chunks/build/LandingPipeline-styles.C8JPQYOV.mjs +8 -0
  95. package/.output/server/chunks/build/LandingPipeline-styles.C8JPQYOV.mjs.map +1 -0
  96. package/.output/server/chunks/build/{cli-CZwbcgW5.mjs → cli-S2geGQoF.mjs} +27 -14
  97. package/.output/server/chunks/build/cli-S2geGQoF.mjs.map +1 -0
  98. package/.output/server/chunks/build/cli-styles.BonhH80m.mjs +8 -0
  99. package/.output/server/chunks/build/cli-styles.BonhH80m.mjs.map +1 -0
  100. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  101. package/.output/server/chunks/build/{en-BwRtQJL1.mjs → en-nHmCjmd_.mjs} +17 -24
  102. package/.output/server/chunks/build/{en-BwRtQJL1.mjs.map → en-nHmCjmd_.mjs.map} +1 -1
  103. package/.output/server/chunks/build/{fr-BAbxj8tA.mjs → fr-7FZEU85C.mjs} +17 -24
  104. package/.output/server/chunks/build/{fr-BAbxj8tA.mjs.map → fr-7FZEU85C.mjs.map} +1 -1
  105. package/.output/server/chunks/build/{index-CKZ58Ox2.mjs → index-BZJzUQ3B.mjs} +27 -17
  106. package/.output/server/chunks/build/index-BZJzUQ3B.mjs.map +1 -0
  107. package/.output/server/chunks/build/{index-3KvoAMZW.mjs → index-DYwGkPcJ.mjs} +92 -275
  108. package/.output/server/chunks/build/index-DYwGkPcJ.mjs.map +1 -0
  109. package/.output/server/chunks/build/index-styles.BP9liX_F.mjs +8 -0
  110. package/.output/server/chunks/build/index-styles.BP9liX_F.mjs.map +1 -0
  111. package/.output/server/chunks/build/{new-BI12IpeK.mjs → new-BqYiaSD7.mjs} +19 -19
  112. package/.output/server/chunks/build/{new-BI12IpeK.mjs.map → new-BqYiaSD7.mjs.map} +1 -1
  113. package/.output/server/chunks/build/new-styles.BPjkN6Iy.mjs +8 -0
  114. package/.output/server/chunks/build/new-styles.BPjkN6Iy.mjs.map +1 -0
  115. package/.output/server/chunks/build/{prompt-BjvwrM-J.mjs → prompt-D-xu1MtO.mjs} +41 -12
  116. package/.output/server/chunks/build/prompt-D-xu1MtO.mjs.map +1 -0
  117. package/.output/server/chunks/build/prompt-styles.Dvlc6Xra.mjs +8 -0
  118. package/.output/server/chunks/build/prompt-styles.Dvlc6Xra.mjs.map +1 -0
  119. package/.output/server/chunks/build/server.mjs +9 -9
  120. package/.output/server/chunks/build/styles.mjs +29 -35
  121. package/.output/server/chunks/nitro/nitro.mjs +551 -521
  122. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  123. package/.output/server/chunks/routes/.well-known/appspecific/_...path_.mjs +34 -0
  124. package/.output/server/chunks/routes/.well-known/appspecific/_...path_.mjs.map +1 -0
  125. package/.output/server/chunks/routes/api/issues/_id/history.get.mjs +3 -2
  126. package/.output/server/chunks/routes/api/issues/_id/history.get.mjs.map +1 -1
  127. package/.output/server/node_modules/.prisma/client/index.js +4 -3
  128. package/.output/server/node_modules/.prisma/client/package.json +1 -1
  129. package/.output/server/package.json +1 -1
  130. package/bin/autocode +188 -4
  131. package/package.json +5 -6
  132. package/prisma/migrations/20260104173538_init/migration.sql +142 -0
  133. package/prisma/migrations/20260104180000_pipeline_versioning/migration.sql +216 -0
  134. package/prisma/migrations/20260104190638_add_column_prompts/migration.sql +50 -0
  135. package/prisma/migrations/20260105120000_remove_column_prompts/migration.sql +3 -0
  136. package/prisma/migrations/20260105150000_normalize_pipeline_names/migration.sql +37 -0
  137. package/prisma/migrations/20260105170000_remove_slug_prefixes/migration.sql +16 -0
  138. package/prisma/migrations/migration_lock.toml +3 -0
  139. package/prisma/schema.prisma +185 -0
  140. package/templates/prompts/_transition-decision.en.md +41 -25
  141. package/templates/prompts/_transition-decision.fr.md +28 -11
  142. package/templates/prompts/design.en.md +31 -9
  143. package/templates/prompts/design.fr.md +31 -9
  144. package/templates/prompts/git-tag.en.md +47 -11
  145. package/templates/prompts/git-tag.fr.md +47 -11
  146. package/templates/prompts/in-progress.en.md +43 -9
  147. package/templates/prompts/in-progress.fr.md +44 -10
  148. package/templates/prompts/qualification.en.md +48 -17
  149. package/templates/prompts/qualification.fr.md +48 -17
  150. package/templates/prompts/retest-cypress.en.md +14 -3
  151. package/templates/prompts/retest-cypress.fr.md +14 -3
  152. package/templates/prompts/review-security.en.md +35 -6
  153. package/templates/prompts/review-security.fr.md +35 -6
  154. package/templates/prompts/specification.en.md +29 -7
  155. package/templates/prompts/specification.fr.md +29 -7
  156. package/templates/prompts/splitter.en.md +50 -28
  157. package/templates/prompts/splitter.fr.md +52 -31
  158. package/templates/prompts/testing-cypress.en.md +14 -4
  159. package/templates/prompts/testing-cypress.fr.md +14 -4
  160. package/templates/prompts/testing-integration.en.md +39 -3
  161. package/templates/prompts/testing-integration.fr.md +39 -3
  162. package/.output/public/_i18n/_RCBbyrF/en/messages.json +0 -1
  163. package/.output/public/_i18n/_RCBbyrF/fr/messages.json +0 -1
  164. package/.output/public/_nuxt/B-QzFHDD.js +0 -1
  165. package/.output/public/_nuxt/Bn3kTsBm.js +0 -1
  166. package/.output/public/_nuxt/C2Vs_J-1.js +0 -1
  167. package/.output/public/_nuxt/CDVPefsv.js +0 -1
  168. package/.output/public/_nuxt/CSk34z2H.js +0 -1
  169. package/.output/public/_nuxt/DPWzdJ4S.js +0 -1
  170. package/.output/public/_nuxt/DrzMcrms.js +0 -1
  171. package/.output/public/_nuxt/_bAHEawb.js +0 -1
  172. package/.output/public/_nuxt/b2LQmhwq.js +0 -1
  173. package/.output/public/_nuxt/builds/meta/4d6876ea-4c52-49d1-a9d5-07bb0648a85e.json +0 -1
  174. package/.output/public/_nuxt/cli.e1u7fwy6.css +0 -1
  175. package/.output/public/_nuxt/hWy-7Z1L.js +0 -10
  176. package/.output/public/_nuxt/index.COVdL_Kx.css +0 -1
  177. package/.output/public/_nuxt/index.Dndk3KN9.css +0 -1
  178. package/.output/public/_nuxt/new.BFERdqdm.css +0 -1
  179. package/.output/public/_nuxt/prompt.DZ0wdOji.css +0 -1
  180. package/.output/server/chunks/build/LandingArchitecture-styles.Don6ug3a.mjs +0 -8
  181. package/.output/server/chunks/build/LandingArchitecture-styles.Don6ug3a.mjs.map +0 -1
  182. package/.output/server/chunks/build/LandingAutonomy-styles.D9JJFMEO.mjs +0 -8
  183. package/.output/server/chunks/build/LandingAutonomy-styles.D9JJFMEO.mjs.map +0 -1
  184. package/.output/server/chunks/build/LandingDemo-styles.WY8VUN9P.mjs +0 -8
  185. package/.output/server/chunks/build/LandingDemo-styles.WY8VUN9P.mjs.map +0 -1
  186. package/.output/server/chunks/build/LandingFooter-styles.sSpn5cgM.mjs +0 -8
  187. package/.output/server/chunks/build/LandingFooter-styles.sSpn5cgM.mjs.map +0 -1
  188. package/.output/server/chunks/build/LandingPipeline-styles.CL96fyQR.mjs +0 -8
  189. package/.output/server/chunks/build/LandingPipeline-styles.CL96fyQR.mjs.map +0 -1
  190. package/.output/server/chunks/build/LandingRoadmap-styles.DX5EsTsx.mjs +0 -8
  191. package/.output/server/chunks/build/LandingRoadmap-styles.DX5EsTsx.mjs.map +0 -1
  192. package/.output/server/chunks/build/cli-CZwbcgW5.mjs.map +0 -1
  193. package/.output/server/chunks/build/cli-styles.CSdcLhw8.mjs +0 -8
  194. package/.output/server/chunks/build/cli-styles.CSdcLhw8.mjs.map +0 -1
  195. package/.output/server/chunks/build/index-3KvoAMZW.mjs.map +0 -1
  196. package/.output/server/chunks/build/index-CKZ58Ox2.mjs.map +0 -1
  197. package/.output/server/chunks/build/index-styles.BJ7kZO7q.mjs +0 -8
  198. package/.output/server/chunks/build/index-styles.BJ7kZO7q.mjs.map +0 -1
  199. package/.output/server/chunks/build/new-styles.Chk5u_6M.mjs +0 -8
  200. package/.output/server/chunks/build/new-styles.Chk5u_6M.mjs.map +0 -1
  201. package/.output/server/chunks/build/prompt-BjvwrM-J.mjs.map +0 -1
  202. package/.output/server/chunks/build/prompt-styles.DWfublIG.mjs +0 -8
  203. package/.output/server/chunks/build/prompt-styles.DWfublIG.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"nitro.mjs","sources":["../../../../node_modules/uncrypto/dist/crypto.node.mjs","../../../../node_modules/crossws/dist/shared/crossws.DfCzGthR.mjs","../../../../node_modules/crossws/dist/shared/crossws.D9ehKjSh.mjs","../../../../node_modules/crossws/dist/shared/crossws.By9qWDAI.mjs","../../../../node_modules/crossws/dist/shared/crossws.CipVM6lf.mjs","../../../../node_modules/crossws/dist/adapters/node.mjs","../../../../node_modules/destr/dist/index.mjs","../../../../node_modules/ufo/dist/index.mjs","../../../../node_modules/cookie-es/dist/index.mjs","../../../../node_modules/radix3/dist/index.mjs","../../../../node_modules/defu/dist/defu.mjs","../../../../node_modules/node-mock-http/dist/index.mjs","../../../../node_modules/h3/dist/index.mjs","../../../../node_modules/hookable/dist/index.mjs","../../../../node_modules/node-fetch-native/dist/native.mjs","../../../../node_modules/ofetch/dist/shared/ofetch.CWycOUEr.mjs","../../../../node_modules/ofetch/dist/node.mjs","../../../../node_modules/unstorage/dist/shared/unstorage.zVDD2mZo.mjs","../../../../node_modules/unstorage/dist/index.mjs","../../../../node_modules/unstorage/drivers/utils/index.mjs","../../../../node_modules/unstorage/drivers/memory.mjs","../../../../node_modules/unstorage/drivers/utils/node-fs.mjs","../../../../node_modules/unstorage/drivers/fs-lite.mjs","../../../../node_modules/nitropack/dist/runtime/internal/storage.mjs","../../../../node_modules/ohash/dist/shared/ohash.D__AXeF1.mjs","../../../../node_modules/ohash/dist/crypto/node/index.mjs","../../../../node_modules/ohash/dist/index.mjs","../../../../node_modules/nitropack/dist/runtime/internal/hash.mjs","../../../../node_modules/nitropack/dist/runtime/internal/cache.mjs","../../../../node_modules/klona/dist/index.mjs","../../../../node_modules/scule/dist/index.mjs","../../../../node_modules/nitropack/dist/runtime/internal/utils.env.mjs","../../../../node_modules/nitropack/dist/runtime/internal/config.mjs","../../../../node_modules/unctx/dist/index.mjs","../../../../node_modules/nitropack/dist/runtime/internal/context.mjs","../../../../node_modules/nitropack/dist/runtime/internal/route-rules.mjs","../../../../node_modules/nitropack/dist/runtime/internal/utils.mjs","../../../../node_modules/@nuxt/nitro-server/dist/runtime/utils/error.js","../../../../node_modules/@nuxt/nitro-server/dist/runtime/handlers/error.js","../../../../node_modules/nitropack/dist/runtime/internal/error/utils.mjs","../../../../node_modules/nitropack/dist/runtime/internal/error/prod.mjs","../../../../node_modules/@intlify/shared/dist/shared.mjs","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/messages.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/vue-i18n.js","../../../../node_modules/nitropack/dist/runtime/internal/plugin.mjs","../../../../node_modules/nitropack/dist/runtime/internal/renderer.mjs","../../../../node_modules/@nuxt/nitro-server/dist/runtime/utils/paths.js","../../../../node_modules/@intlify/utils/dist/shared/utils.9f8159f5.mjs","../../../../server/plugins/websocket.ts","../../../../server/utils/stats.ts","../../../../server/utils/logger.ts","../../../../server/utils/claude.ts","../../../../server/utils/columns.ts","../../../../server/utils/config.ts","../../../../server/utils/loop-detector.ts","../../../../server/utils/prisma.ts","../../../../server/services/sequence.service.ts","../../../../server/services/columns.service.ts","../../../../server/services/issues.service.ts","../../../../server/services/history.service.ts","../../../../server/utils/monitoring.ts","../../../../server/utils/slugify.ts","../../../../server/services/comments.service.ts","../../../../server/services/execution-logs.service.ts","../../../../server/utils/synthesis-generator.ts","../../../../server/utils/transition-decider.ts","../../../../server/utils/websocket.ts","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/utils.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/locales.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/server/context.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/kit/browser.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/kit/routing.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/domain.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/detection.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/matching.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/server/plugin.js","../../../../server/services/workflow.service.ts","../../../../server/plugins/auto-process.ts","../../../../shared/constants.ts","../../../../server/services/pipelines.service.ts","../../../../server/config/pipeline-templates.ts","../../../../server/plugins/database.ts","../../../../server/plugins/stats.ts","../../../../node_modules/pathe/dist/shared/pathe.M-eThtNZ.mjs","../../../../node_modules/nitropack/dist/runtime/internal/static.mjs","../../../../server/middleware/error-handler.ts","../../../../node_modules/@nuxtjs/i18n/dist/runtime/server/utils/cache.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/server/utils/messages.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/server/routes/messages.js","../../../../node_modules/nitropack/dist/runtime/internal/app.mjs","../../../../node_modules/nitropack/dist/runtime/internal/lib/http-graceful-shutdown.mjs","../../../../node_modules/nitropack/dist/runtime/internal/shutdown.mjs","../../../../node_modules/nitropack/dist/presets/node/runtime/node-server.mjs"],"names":["isPlainObject","require$$0$1","decode","getQuery","parse","serialize","createRouter","remove","f","h","c","i","l","createError","process","mergeHeaders","s","nodeFetch","fetch","Headers","Headers$1","AbortController$1","$fetch","normalizeKey","defineDriver","DRIVER_NAME","dirname","fsPromises","resolve","fsp","storage","hash","_inlineAppConfig","createRadixRouter","create","_localeCodes","broadcast","existsSync","join","debug","readFile","findAll","columnsService.findBySlugInActivePipeline","columnsService.findFirst","columnsService.findById","columnsService.findLast","findByIssue","columnsService.isActionableById","columnsService.isLastById","issuesService.findAll","historyService.findByIssue","_a","issuesService.getChildren","issuesService.findByKey","commentsService.findByIssue","executionLogsService.findByIssue","columnsService.findByPipeline","issuesService.moveToColumnById","columnsService.findNextById","columnsService.findActiveColumns","sorted","executionLogsService.generateSessionId","issuesService.acquireProcessingLock","executionLogsService.create","historyService.create","executionLogsService.updateTerminalLog","issuesService.releaseProcessingLock","workflowService.findActionableIssue","workflowService.processIssueInCurrentColumn","commentsService.create","mkdirSync","pipelinesService.findAll","pipelinesService.create","pipelinesService.finalizeDraft","pipelinesService.activate","nitroApp","callNodeRequestHandler","fetchNodeRequestHandler","gracefulShutdown","HttpsServer","HttpServer","wsAdapter"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,67,68,69,70,71,72,73,74,75,83,84,86,87,88,89,90,91,92]}
1
+ {"version":3,"file":"nitro.mjs","sources":["../../../../node_modules/uncrypto/dist/crypto.node.mjs","../../../../node_modules/crossws/dist/shared/crossws.DfCzGthR.mjs","../../../../node_modules/crossws/dist/shared/crossws.D9ehKjSh.mjs","../../../../node_modules/crossws/dist/shared/crossws.By9qWDAI.mjs","../../../../node_modules/crossws/dist/shared/crossws.CipVM6lf.mjs","../../../../node_modules/crossws/dist/adapters/node.mjs","../../../../node_modules/destr/dist/index.mjs","../../../../node_modules/ufo/dist/index.mjs","../../../../node_modules/cookie-es/dist/index.mjs","../../../../node_modules/radix3/dist/index.mjs","../../../../node_modules/defu/dist/defu.mjs","../../../../node_modules/node-mock-http/dist/index.mjs","../../../../node_modules/h3/dist/index.mjs","../../../../node_modules/hookable/dist/index.mjs","../../../../node_modules/node-fetch-native/dist/native.mjs","../../../../node_modules/ofetch/dist/shared/ofetch.CWycOUEr.mjs","../../../../node_modules/ofetch/dist/node.mjs","../../../../node_modules/unstorage/dist/shared/unstorage.zVDD2mZo.mjs","../../../../node_modules/unstorage/dist/index.mjs","../../../../node_modules/unstorage/drivers/utils/index.mjs","../../../../node_modules/unstorage/drivers/memory.mjs","../../../../node_modules/unstorage/drivers/utils/node-fs.mjs","../../../../node_modules/unstorage/drivers/fs-lite.mjs","../../../../node_modules/nitropack/dist/runtime/internal/storage.mjs","../../../../node_modules/ohash/dist/shared/ohash.D__AXeF1.mjs","../../../../node_modules/ohash/dist/crypto/node/index.mjs","../../../../node_modules/ohash/dist/index.mjs","../../../../node_modules/nitropack/dist/runtime/internal/hash.mjs","../../../../node_modules/nitropack/dist/runtime/internal/cache.mjs","../../../../node_modules/klona/dist/index.mjs","../../../../node_modules/scule/dist/index.mjs","../../../../node_modules/nitropack/dist/runtime/internal/utils.env.mjs","../../../../node_modules/nitropack/dist/runtime/internal/config.mjs","../../../../node_modules/unctx/dist/index.mjs","../../../../node_modules/nitropack/dist/runtime/internal/context.mjs","../../../../node_modules/nitropack/dist/runtime/internal/route-rules.mjs","../../../../node_modules/nitropack/dist/runtime/internal/utils.mjs","../../../../node_modules/@nuxt/nitro-server/dist/runtime/utils/error.js","../../../../node_modules/@nuxt/nitro-server/dist/runtime/handlers/error.js","../../../../node_modules/nitropack/dist/runtime/internal/error/utils.mjs","../../../../node_modules/nitropack/dist/runtime/internal/error/prod.mjs","../../../../node_modules/@intlify/shared/dist/shared.mjs","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/messages.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/vue-i18n.js","../../../../node_modules/nitropack/dist/runtime/internal/plugin.mjs","../../../../node_modules/nitropack/dist/runtime/internal/renderer.mjs","../../../../node_modules/@nuxt/nitro-server/dist/runtime/utils/paths.js","../../../../node_modules/@intlify/utils/dist/shared/utils.9f8159f5.mjs","../../../../server/plugins/websocket.ts","../../../../server/utils/stats.ts","../../../../server/utils/logger.ts","../../../../server/utils/claude.ts","../../../../server/utils/columns.ts","../../../../server/utils/config.ts","../../../../server/utils/loop-detector.ts","../../../../server/utils/prisma.ts","../../../../server/services/sequence.service.ts","../../../../server/services/columns.service.ts","../../../../server/services/issues.service.ts","../../../../server/services/history.service.ts","../../../../server/utils/monitoring.ts","../../../../server/utils/slugify.ts","../../../../server/services/comments.service.ts","../../../../server/services/execution-logs.service.ts","../../../../server/utils/synthesis-generator.ts","../../../../server/utils/transition-decider.ts","../../../../server/utils/websocket.ts","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/utils.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/locales.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/server/context.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/kit/browser.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/kit/routing.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/domain.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/detection.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/matching.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/server/plugin.js","../../../../server/services/workflow.service.ts","../../../../server/plugins/auto-process.ts","../../../../shared/constants.ts","../../../../server/services/pipelines.service.ts","../../../../server/config/pipeline-templates.ts","../../../../server/plugins/database.ts","../../../../server/plugins/stats.ts","../../../../node_modules/pathe/dist/shared/pathe.M-eThtNZ.mjs","../../../../node_modules/nitropack/dist/runtime/internal/static.mjs","../../../../server/middleware/error-handler.ts","../../../../node_modules/@nuxtjs/i18n/dist/runtime/server/utils/cache.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/server/utils/messages.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/server/routes/messages.js","../../../../node_modules/nitropack/dist/runtime/internal/app.mjs","../../../../node_modules/nitropack/dist/runtime/internal/lib/http-graceful-shutdown.mjs","../../../../node_modules/nitropack/dist/runtime/internal/shutdown.mjs","../../../../node_modules/nitropack/dist/presets/node/runtime/node-server.mjs"],"names":["isPlainObject","require$$0$1","decode","getQuery","parse","serialize","createRouter","remove","f","h","c","i","l","createError","process","mergeHeaders","s","nodeFetch","fetch","Headers","Headers$1","AbortController$1","$fetch","normalizeKey","defineDriver","DRIVER_NAME","dirname","fsPromises","resolve","fsp","storage","hash","_inlineAppConfig","createRadixRouter","create","_localeCodes","broadcast","existsSync","join","debug","readFile","findAll","columnsService.findBySlugInActivePipeline","columnsService.findFirst","columnsService.findById","columnsService.findLast","findByIssue","columnsService.isActionableById","columnsService.isLastById","issuesService.findAll","historyService.findByIssue","_a","issuesService.getChildren","issuesService.findByKey","commentsService.findByIssue","executionLogsService.findByIssue","columnsService.findByPipeline","issuesService.moveToColumnById","columnsService.findNextById","columnsService.findActiveColumns","sorted","executionLogsService.generateSessionId","issuesService.acquireProcessingLock","executionLogsService.create","historyService.create","executionLogsService.updateTerminalLog","issuesService.releaseProcessingLock","workflowService.findActionableIssue","workflowService.processIssueInCurrentColumn","commentsService.create","__filename","__dirname","mkdirSync","pipelinesService.findAll","pipelinesService.create","pipelinesService.finalizeDraft","pipelinesService.activate","nitroApp","callNodeRequestHandler","fetchNodeRequestHandler","gracefulShutdown","HttpsServer","HttpServer","wsAdapter"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,67,68,69,70,71,72,73,74,75,83,84,86,87,88,89,90,91,92]}
@@ -0,0 +1,34 @@
1
+ import { d as defineEventHandler } from '../../../nitro/nitro.mjs';
2
+ import 'node:http';
3
+ import 'node:https';
4
+ import 'node:crypto';
5
+ import 'stream';
6
+ import 'events';
7
+ import 'http';
8
+ import 'crypto';
9
+ import 'buffer';
10
+ import 'zlib';
11
+ import 'https';
12
+ import 'net';
13
+ import 'tls';
14
+ import 'url';
15
+ import 'node:events';
16
+ import 'node:buffer';
17
+ import 'node:fs';
18
+ import 'node:path';
19
+ import 'vue-router';
20
+ import '@prisma/client';
21
+ import '@prisma/adapter-better-sqlite3';
22
+ import 'fs';
23
+ import 'path';
24
+ import 'fs/promises';
25
+ import 'child_process';
26
+ import 'node:child_process';
27
+ import 'node:url';
28
+
29
+ const ____path_ = defineEventHandler(() => {
30
+ return null;
31
+ });
32
+
33
+ export { ____path_ as default };
34
+ //# sourceMappingURL=_...path_.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_...path_.mjs","sources":["../../../../../../server/routes/.well-known/appspecific/[...path].ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,kBAAA,mBAAA,MAAA;AACA,EAAA,OAAA,IAAA;AACA,CAAA,CAAA;;;;"}
@@ -39,14 +39,15 @@ const history_get = defineEventHandler(async (event) => {
39
39
  debug("api", "history.get: found", { id, count: history.length });
40
40
  const enrichedHistory = await Promise.all(
41
41
  history.map(async (entry) => {
42
- var _a;
42
+ var _a, _b;
43
43
  const baseEntry = {
44
44
  at: entry.at.toISOString(),
45
45
  action: entry.action,
46
46
  from: entry.fromColumn,
47
47
  to: entry.toColumn,
48
48
  sessionId: (_a = entry.sessionId) != null ? _a : void 0,
49
- changes: entry.changes ? parseChanges(entry) : void 0
49
+ changes: entry.changes ? parseChanges(entry) : void 0,
50
+ reason: (_b = entry.reason) != null ? _b : void 0
50
51
  };
51
52
  if (!entry.sessionId) {
52
53
  return baseEntry;
@@ -1 +1 @@
1
- {"version":3,"file":"history.get.mjs","sources":["../../../../../../../server/api/issues/[id]/history.get.ts"],"names":["historyService.findByIssue","historyService.parseChanges","executionLogsService.findBySessionId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEA,oBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,MAAA,EAAA,GAAA,cAAA,CAAA,KAAA,EAAA,IAAA,CAAA;AACA,EAAA,KAAA,CAAA,KAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAEA,EAAA,IAAA,CAAA,EAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,OAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,OAAA,GAAA,MAAAA,WAAA,CAAA,EAAA,CAAA;AACA,EAAA,KAAA,CAAA,OAAA,oBAAA,EAAA,EAAA,IAAA,KAAA,EAAA,OAAA,CAAA,QAAA,CAAA;AAGA,EAAA,MAAA,eAAA,GAAA,MAAA,OAAA,CAAA,GAAA;AAAA,IACA,OAAA,CAAA,GAAA,CAAA,OAAA,KAAA,KAAA;;AACA,MAAA,MAAA,SAAA,GAAA;AAAA,QACA,EAAA,EAAA,KAAA,CAAA,EAAA,CAAA,WAAA,EAAA;AAAA,QACA,QAAA,KAAA,CAAA,MAAA;AAAA,QACA,MAAA,KAAA,CAAA,UAAA;AAAA,QACA,IAAA,KAAA,CAAA,QAAA;AAAA,QACA,SAAA,EAAA,CAAA,EAAA,GAAA,KAAA,CAAA,SAAA,KAAA,IAAA,GAAA,EAAA,GAAA,MAAA;AAAA,QACA,SAAA,KAAA,CAAA,OAAA,GAAAC,YAAA,CAAA,KAAA,CAAA,GAAA;AAAA,OACA;AAEA,MAAA,IAAA,CAAA,MAAA,SAAA,EAAA;AACA,QAAA,OAAA,SAAA;AAAA,MACA;AAGA,MAAA,MAAA,GAAA,GAAA,MAAAC,eAAA,CAAA,MAAA,SAAA,CAAA;AAEA,MAAA,OAAA;AAAA,QACA,GAAA,SAAA;AAAA,QACA,kBAAA,EAAA;AAAA,UACA,MAAA,EAAA,CAAA,EAAA,GAAA,IAAA,IAAA,GAAA,MAAA,GAAA,GAAA,CAAA,MAAA,CAAA;AAAA,UACA,QAAA,EAAA,CAAA,EAAA,GAAA,IAAA,IAAA,GAAA,MAAA,GAAA,GAAA,CAAA,WAAA;AAAA;AACA,OACA;AAAA,IACA,CAAA;AAAA,GACA;AAEA,EAAA,OAAA,eAAA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"history.get.mjs","sources":["../../../../../../../server/api/issues/[id]/history.get.ts"],"names":["historyService.findByIssue","historyService.parseChanges","executionLogsService.findBySessionId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkEA,oBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,MAAA,EAAA,GAAA,cAAA,CAAA,KAAA,EAAA,IAAA,CAAA;AACA,EAAA,KAAA,CAAA,KAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAEA,EAAA,IAAA,CAAA,EAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,OAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,OAAA,GAAA,MAAAA,WAAA,CAAA,EAAA,CAAA;AACA,EAAA,KAAA,CAAA,OAAA,oBAAA,EAAA,EAAA,IAAA,KAAA,EAAA,OAAA,CAAA,QAAA,CAAA;AAGA,EAAA,MAAA,eAAA,GAAA,MAAA,OAAA,CAAA,GAAA;AAAA,IACA,OAAA,CAAA,GAAA,CAAA,OAAA,KAAA,KAAA;;AACA,MAAA,MAAA,SAAA,GAAA;AAAA,QACA,EAAA,EAAA,KAAA,CAAA,EAAA,CAAA,WAAA,EAAA;AAAA,QACA,QAAA,KAAA,CAAA,MAAA;AAAA,QACA,MAAA,KAAA,CAAA,UAAA;AAAA,QACA,IAAA,KAAA,CAAA,QAAA;AAAA,QACA,SAAA,EAAA,CAAA,EAAA,GAAA,KAAA,CAAA,SAAA,KAAA,IAAA,GAAA,EAAA,GAAA,MAAA;AAAA,QACA,SAAA,KAAA,CAAA,OAAA,GAAAC,YAAA,CAAA,KAAA,CAAA,GAAA,MAAA;AAAA,QACA,MAAA,EAAA,CAAA,EAAA,GAAA,KAAA,CAAA,MAAA,KAAA,IAAA,GAAA,EAAA,GAAA;AAAA,OACA;AAEA,MAAA,IAAA,CAAA,MAAA,SAAA,EAAA;AACA,QAAA,OAAA,SAAA;AAAA,MACA;AAGA,MAAA,MAAA,GAAA,GAAA,MAAAC,eAAA,CAAA,MAAA,SAAA,CAAA;AAEA,MAAA,OAAA;AAAA,QACA,GAAA,SAAA;AAAA,QACA,kBAAA,EAAA;AAAA,UACA,MAAA,EAAA,CAAA,EAAA,GAAA,IAAA,IAAA,GAAA,MAAA,GAAA,GAAA,CAAA,MAAA,CAAA;AAAA,UACA,QAAA,EAAA,CAAA,EAAA,GAAA,IAAA,IAAA,GAAA,MAAA,GAAA,GAAA,CAAA,WAAA;AAAA;AACA,OACA;AAAA,IACA,CAAA;AAAA,GACA;AAEA,EAAA,OAAA,eAAA;AACA,CAAA,CAAA;;;;"}
@@ -142,7 +142,8 @@ exports.Prisma.IssueHistoryScalarFieldEnum = {
142
142
  fromColumn: 'fromColumn',
143
143
  toColumn: 'toColumn',
144
144
  sessionId: 'sessionId',
145
- changes: 'changes'
145
+ changes: 'changes',
146
+ reason: 'reason'
146
147
  };
147
148
 
148
149
  exports.Prisma.ExecutionLogScalarFieldEnum = {
@@ -207,10 +208,10 @@ const config = {
207
208
  "clientVersion": "7.2.0",
208
209
  "engineVersion": "0c8ef2ce45c83248ab3df073180d5eda9e8be7a3",
209
210
  "activeProvider": "sqlite",
210
- "inlineSchema": "// AutoCode - Prisma Schema\n// Base de données SQLite par projet\n// VERSION 2.0 - Pipelines Versionnés & Immuables\n\ngenerator client {\n provider = \"prisma-client-js\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n}\n\n// ═══════════════════════════════════════════════════════════════\n// PIPELINES & COLUMNS - VERSIONNÉS ET IMMUABLES\n// ═══════════════════════════════════════════════════════════════\n\nmodel Pipeline {\n name String // Partie de la clé composite\n version Int // v1, v2, v3... (pas semver)\n description String?\n active Boolean @default(false)\n draft Boolean @default(true) // Brouillon éditable ou verrouillé\n createdAt DateTime @default(now()) @map(\"created_at\")\n createdFromVersion Int? @map(\"created_from_version\") // Version source du brouillon\n\n columns Column[]\n\n @@id([name, version]) // Clé composite: nom + version\n @@map(\"pipelines\")\n}\n\nmodel Column {\n id Int @id @default(autoincrement()) // ID stable pour références\n slug String // \"backlog\", \"testing-unit\" (slug lisible)\n name String // \"Backlog\", \"Testing Unit\"\n index Int // Position 0, 1, 2...\n segment String // 'definition' | 'action' | 'finish'\n pipelineName String @map(\"pipeline_name\")\n pipelineVersion Int @map(\"pipeline_version\")\n\n pipeline Pipeline @relation(fields: [pipelineName, pipelineVersion], references: [name, version], onDelete: Cascade)\n issues Issue[]\n executionLogs ExecutionLog[]\n\n @@unique([pipelineName, pipelineVersion, slug]) // Slug unique par version de pipeline\n @@index([pipelineName, pipelineVersion])\n @@index([index])\n @@map(\"columns\")\n}\n\n// ═══════════════════════════════════════════════════════════════\n// ISSUES\n// ═══════════════════════════════════════════════════════════════\n\nmodel Issue {\n key String @id // \"AC-000001\"\n title String\n description String? // Markdown\n priority String @default(\"P2\") // P0, P1, P2, P3\n semver String @default(\"patch\") // patch | minor | major\n labels String @default(\"[]\") // JSON array\n lang String @default(\"fr\") // 'fr' | 'en' - langue de l'utilisateur\n columnId Int @map(\"column_id\") // Référence stable par ID\n parentKey String? @map(\"parent_key\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n // Processing lock - prevents duplicate executions\n processingColumnId Int? @map(\"processing_column_id\")\n processingStartedAt DateTime? @map(\"processing_started_at\")\n processingSessionId String? @map(\"processing_session_id\")\n\n column Column @relation(fields: [columnId], references: [id])\n parent Issue? @relation(\"IssueHierarchy\", fields: [parentKey], references: [key], onDelete: SetNull)\n children Issue[] @relation(\"IssueHierarchy\")\n acceptanceCriteria AcceptanceCriterion[]\n history IssueHistory[]\n comments Comment[]\n attachments Attachment[]\n executionLogs ExecutionLog[]\n\n @@index([columnId])\n @@index([parentKey])\n @@index([priority])\n @@index([updatedAt(sort: Desc)])\n @@map(\"issues\")\n}\n\nmodel AcceptanceCriterion {\n id Int @id @default(autoincrement())\n issueKey String @map(\"issue_key\")\n criterion String\n position Int\n\n issue Issue @relation(fields: [issueKey], references: [key], onDelete: Cascade)\n\n @@index([issueKey])\n @@map(\"acceptance_criteria\")\n}\n\n// ═══════════════════════════════════════════════════════════════\n// HISTORY & EXECUTION\n// ═══════════════════════════════════════════════════════════════\n\nmodel IssueHistory {\n id Int @id @default(autoincrement())\n issueKey String @map(\"issue_key\")\n at DateTime\n action String // 'created' | 'moved' | 'started' | 'forced' | 'edited'\n fromColumn String? @map(\"from_column\") // Slug pour historique (texte)\n toColumn String @map(\"to_column\") // Slug pour historique (texte)\n sessionId String? @map(\"session_id\") // 8 chars hex\n changes String? // JSON pour 'edited'\n\n issue Issue @relation(fields: [issueKey], references: [key], onDelete: Cascade)\n\n @@index([issueKey])\n @@index([sessionId])\n @@index([at(sort: Desc)])\n @@map(\"issue_history\")\n}\n\nmodel ExecutionLog {\n sessionId String @id @map(\"session_id\") // 8 chars hex\n issueKey String @map(\"issue_key\")\n columnId Int @map(\"column_id\") // Référence par ID\n prompt String? // Contenu du prompt\n terminalLog String? @map(\"terminal_log\") // Logs d'execution\n createdAt DateTime @default(now()) @map(\"created_at\")\n\n issue Issue @relation(fields: [issueKey], references: [key], onDelete: Cascade)\n column Column @relation(fields: [columnId], references: [id])\n\n @@index([issueKey])\n @@index([columnId])\n @@map(\"execution_logs\")\n}\n\n// ═══════════════════════════════════════════════════════════════\n// COMMENTS & ATTACHMENTS\n// ═══════════════════════════════════════════════════════════════\n\nmodel Comment {\n id String @id // Timestamp Unix en ms\n issueKey String @map(\"issue_key\")\n content String\n author String\n createdAt DateTime @default(now()) @map(\"created_at\")\n\n issue Issue @relation(fields: [issueKey], references: [key], onDelete: Cascade)\n\n @@index([issueKey])\n @@index([createdAt(sort: Desc)])\n @@map(\"comments\")\n}\n\nmodel Attachment {\n id Int @id @default(autoincrement())\n issueKey String @map(\"issue_key\")\n filename String // Nom original\n filepath String // Chemin relatif sur disque\n mimetype String?\n size Int? // Bytes\n createdAt DateTime @default(now()) @map(\"created_at\")\n\n issue Issue @relation(fields: [issueKey], references: [key], onDelete: Cascade)\n\n @@index([issueKey])\n @@map(\"attachments\")\n}\n\n// ═══════════════════════════════════════════════════════════════\n// SEQUENCE (pour generation AC-XXXXXX)\n// ═══════════════════════════════════════════════════════════════\n\nmodel Sequence {\n name String @id // 'issue_key'\n currentValue Int @default(0) @map(\"current_value\")\n\n @@map(\"sequences\")\n}\n"
211
+ "inlineSchema": "// AutoCode - Prisma Schema\n// Base de données SQLite par projet\n// VERSION 2.0 - Pipelines Versionnés & Immuables\n\n// Support multiple platforms for CLI distribution:\n// native (build platform), debian/rhel/alpine Linux, macOS Intel/ARM, Windows\ngenerator client {\n provider = \"prisma-client-js\"\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\", \"rhel-openssl-3.0.x\", \"linux-musl-openssl-3.0.x\", \"darwin\", \"darwin-arm64\", \"windows\"]\n}\n\ndatasource db {\n provider = \"sqlite\"\n}\n\n// ═══════════════════════════════════════════════════════════════\n// PIPELINES & COLUMNS - VERSIONNÉS ET IMMUABLES\n// ═══════════════════════════════════════════════════════════════\n\nmodel Pipeline {\n name String // Partie de la clé composite\n version Int // v1, v2, v3... (pas semver)\n description String?\n active Boolean @default(false)\n draft Boolean @default(true) // Brouillon éditable ou verrouillé\n createdAt DateTime @default(now()) @map(\"created_at\")\n createdFromVersion Int? @map(\"created_from_version\") // Version source du brouillon\n\n columns Column[]\n\n @@id([name, version]) // Clé composite: nom + version\n @@map(\"pipelines\")\n}\n\nmodel Column {\n id Int @id @default(autoincrement()) // ID stable pour références\n slug String // \"backlog\", \"testing-unit\" (slug lisible)\n name String // \"Backlog\", \"Testing Unit\"\n index Int // Position 0, 1, 2...\n segment String // 'definition' | 'action' | 'finish'\n pipelineName String @map(\"pipeline_name\")\n pipelineVersion Int @map(\"pipeline_version\")\n\n pipeline Pipeline @relation(fields: [pipelineName, pipelineVersion], references: [name, version], onDelete: Cascade)\n issues Issue[]\n executionLogs ExecutionLog[]\n\n @@unique([pipelineName, pipelineVersion, slug]) // Slug unique par version de pipeline\n @@index([pipelineName, pipelineVersion])\n @@index([index])\n @@map(\"columns\")\n}\n\n// ═══════════════════════════════════════════════════════════════\n// ISSUES\n// ═══════════════════════════════════════════════════════════════\n\nmodel Issue {\n key String @id // \"AC-000001\"\n title String\n description String? // Markdown\n priority String @default(\"P2\") // P0, P1, P2, P3\n semver String @default(\"patch\") // patch | minor | major\n labels String @default(\"[]\") // JSON array\n lang String @default(\"fr\") // 'fr' | 'en' - langue de l'utilisateur\n columnId Int @map(\"column_id\") // Référence stable par ID\n parentKey String? @map(\"parent_key\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n // Processing lock - prevents duplicate executions\n processingColumnId Int? @map(\"processing_column_id\")\n processingStartedAt DateTime? @map(\"processing_started_at\")\n processingSessionId String? @map(\"processing_session_id\")\n\n column Column @relation(fields: [columnId], references: [id])\n parent Issue? @relation(\"IssueHierarchy\", fields: [parentKey], references: [key], onDelete: SetNull)\n children Issue[] @relation(\"IssueHierarchy\")\n acceptanceCriteria AcceptanceCriterion[]\n history IssueHistory[]\n comments Comment[]\n attachments Attachment[]\n executionLogs ExecutionLog[]\n\n @@index([columnId])\n @@index([parentKey])\n @@index([priority])\n @@index([updatedAt(sort: Desc)])\n @@map(\"issues\")\n}\n\nmodel AcceptanceCriterion {\n id Int @id @default(autoincrement())\n issueKey String @map(\"issue_key\")\n criterion String\n position Int\n\n issue Issue @relation(fields: [issueKey], references: [key], onDelete: Cascade)\n\n @@index([issueKey])\n @@map(\"acceptance_criteria\")\n}\n\n// ═══════════════════════════════════════════════════════════════\n// HISTORY & EXECUTION\n// ═══════════════════════════════════════════════════════════════\n\nmodel IssueHistory {\n id Int @id @default(autoincrement())\n issueKey String @map(\"issue_key\")\n at DateTime\n action String // 'created' | 'moved' | 'started' | 'forced' | 'edited' | 'blocked'\n fromColumn String? @map(\"from_column\") // Slug pour historique (texte)\n toColumn String @map(\"to_column\") // Slug pour historique (texte)\n sessionId String? @map(\"session_id\") // 8 chars hex\n changes String? // JSON pour 'edited'\n reason String? // Raison du blocage (pour action 'blocked')\n\n issue Issue @relation(fields: [issueKey], references: [key], onDelete: Cascade)\n\n @@index([issueKey])\n @@index([sessionId])\n @@index([at(sort: Desc)])\n @@map(\"issue_history\")\n}\n\nmodel ExecutionLog {\n sessionId String @id @map(\"session_id\") // 8 chars hex\n issueKey String @map(\"issue_key\")\n columnId Int @map(\"column_id\") // Référence par ID\n prompt String? // Contenu du prompt\n terminalLog String? @map(\"terminal_log\") // Logs d'execution\n createdAt DateTime @default(now()) @map(\"created_at\")\n\n issue Issue @relation(fields: [issueKey], references: [key], onDelete: Cascade)\n column Column @relation(fields: [columnId], references: [id])\n\n @@index([issueKey])\n @@index([columnId])\n @@map(\"execution_logs\")\n}\n\n// ═══════════════════════════════════════════════════════════════\n// COMMENTS & ATTACHMENTS\n// ═══════════════════════════════════════════════════════════════\n\nmodel Comment {\n id String @id // Timestamp Unix en ms\n issueKey String @map(\"issue_key\")\n content String\n author String\n createdAt DateTime @default(now()) @map(\"created_at\")\n\n issue Issue @relation(fields: [issueKey], references: [key], onDelete: Cascade)\n\n @@index([issueKey])\n @@index([createdAt(sort: Desc)])\n @@map(\"comments\")\n}\n\nmodel Attachment {\n id Int @id @default(autoincrement())\n issueKey String @map(\"issue_key\")\n filename String // Nom original\n filepath String // Chemin relatif sur disque\n mimetype String?\n size Int? // Bytes\n createdAt DateTime @default(now()) @map(\"created_at\")\n\n issue Issue @relation(fields: [issueKey], references: [key], onDelete: Cascade)\n\n @@index([issueKey])\n @@map(\"attachments\")\n}\n\n// ═══════════════════════════════════════════════════════════════\n// SEQUENCE (pour generation AC-XXXXXX)\n// ═══════════════════════════════════════════════════════════════\n\nmodel Sequence {\n name String @id // 'issue_key'\n currentValue Int @default(0) @map(\"current_value\")\n\n @@map(\"sequences\")\n}\n"
211
212
  }
212
213
 
213
- config.runtimeDataModel = JSON.parse("{\"models\":{\"Pipeline\":{\"fields\":[{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"version\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"active\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"draft\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"createdFromVersion\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"created_from_version\"},{\"name\":\"columns\",\"kind\":\"object\",\"type\":\"Column\",\"relationName\":\"ColumnToPipeline\"}],\"dbName\":\"pipelines\"},\"Column\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"index\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"segment\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"pipelineName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"pipeline_name\"},{\"name\":\"pipelineVersion\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"pipeline_version\"},{\"name\":\"pipeline\",\"kind\":\"object\",\"type\":\"Pipeline\",\"relationName\":\"ColumnToPipeline\"},{\"name\":\"issues\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"ColumnToIssue\"},{\"name\":\"executionLogs\",\"kind\":\"object\",\"type\":\"ExecutionLog\",\"relationName\":\"ColumnToExecutionLog\"}],\"dbName\":\"columns\"},\"Issue\":{\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"priority\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"semver\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"labels\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lang\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"columnId\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"column_id\"},{\"name\":\"parentKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_key\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"processingColumnId\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"processing_column_id\"},{\"name\":\"processingStartedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"processing_started_at\"},{\"name\":\"processingSessionId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"processing_session_id\"},{\"name\":\"column\",\"kind\":\"object\",\"type\":\"Column\",\"relationName\":\"ColumnToIssue\"},{\"name\":\"parent\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"IssueHierarchy\"},{\"name\":\"children\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"IssueHierarchy\"},{\"name\":\"acceptanceCriteria\",\"kind\":\"object\",\"type\":\"AcceptanceCriterion\",\"relationName\":\"AcceptanceCriterionToIssue\"},{\"name\":\"history\",\"kind\":\"object\",\"type\":\"IssueHistory\",\"relationName\":\"IssueToIssueHistory\"},{\"name\":\"comments\",\"kind\":\"object\",\"type\":\"Comment\",\"relationName\":\"CommentToIssue\"},{\"name\":\"attachments\",\"kind\":\"object\",\"type\":\"Attachment\",\"relationName\":\"AttachmentToIssue\"},{\"name\":\"executionLogs\",\"kind\":\"object\",\"type\":\"ExecutionLog\",\"relationName\":\"ExecutionLogToIssue\"}],\"dbName\":\"issues\"},\"AcceptanceCriterion\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"issueKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"issue_key\"},{\"name\":\"criterion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"position\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"issue\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"AcceptanceCriterionToIssue\"}],\"dbName\":\"acceptance_criteria\"},\"IssueHistory\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"issueKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"issue_key\"},{\"name\":\"at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"action\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fromColumn\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"from_column\"},{\"name\":\"toColumn\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"to_column\"},{\"name\":\"sessionId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"session_id\"},{\"name\":\"changes\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"issue\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"IssueToIssueHistory\"}],\"dbName\":\"issue_history\"},\"ExecutionLog\":{\"fields\":[{\"name\":\"sessionId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"session_id\"},{\"name\":\"issueKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"issue_key\"},{\"name\":\"columnId\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"column_id\"},{\"name\":\"prompt\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"terminalLog\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"terminal_log\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"issue\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"ExecutionLogToIssue\"},{\"name\":\"column\",\"kind\":\"object\",\"type\":\"Column\",\"relationName\":\"ColumnToExecutionLog\"}],\"dbName\":\"execution_logs\"},\"Comment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"issueKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"issue_key\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"author\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"issue\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"CommentToIssue\"}],\"dbName\":\"comments\"},\"Attachment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"issueKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"issue_key\"},{\"name\":\"filename\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"filepath\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mimetype\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"size\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"issue\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"AttachmentToIssue\"}],\"dbName\":\"attachments\"},\"Sequence\":{\"fields\":[{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"currentValue\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"current_value\"}],\"dbName\":\"sequences\"}},\"enums\":{},\"types\":{}}")
214
+ config.runtimeDataModel = JSON.parse("{\"models\":{\"Pipeline\":{\"fields\":[{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"version\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"active\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"draft\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"createdFromVersion\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"created_from_version\"},{\"name\":\"columns\",\"kind\":\"object\",\"type\":\"Column\",\"relationName\":\"ColumnToPipeline\"}],\"dbName\":\"pipelines\"},\"Column\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"index\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"segment\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"pipelineName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"pipeline_name\"},{\"name\":\"pipelineVersion\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"pipeline_version\"},{\"name\":\"pipeline\",\"kind\":\"object\",\"type\":\"Pipeline\",\"relationName\":\"ColumnToPipeline\"},{\"name\":\"issues\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"ColumnToIssue\"},{\"name\":\"executionLogs\",\"kind\":\"object\",\"type\":\"ExecutionLog\",\"relationName\":\"ColumnToExecutionLog\"}],\"dbName\":\"columns\"},\"Issue\":{\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"priority\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"semver\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"labels\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lang\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"columnId\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"column_id\"},{\"name\":\"parentKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_key\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"processingColumnId\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"processing_column_id\"},{\"name\":\"processingStartedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"processing_started_at\"},{\"name\":\"processingSessionId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"processing_session_id\"},{\"name\":\"column\",\"kind\":\"object\",\"type\":\"Column\",\"relationName\":\"ColumnToIssue\"},{\"name\":\"parent\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"IssueHierarchy\"},{\"name\":\"children\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"IssueHierarchy\"},{\"name\":\"acceptanceCriteria\",\"kind\":\"object\",\"type\":\"AcceptanceCriterion\",\"relationName\":\"AcceptanceCriterionToIssue\"},{\"name\":\"history\",\"kind\":\"object\",\"type\":\"IssueHistory\",\"relationName\":\"IssueToIssueHistory\"},{\"name\":\"comments\",\"kind\":\"object\",\"type\":\"Comment\",\"relationName\":\"CommentToIssue\"},{\"name\":\"attachments\",\"kind\":\"object\",\"type\":\"Attachment\",\"relationName\":\"AttachmentToIssue\"},{\"name\":\"executionLogs\",\"kind\":\"object\",\"type\":\"ExecutionLog\",\"relationName\":\"ExecutionLogToIssue\"}],\"dbName\":\"issues\"},\"AcceptanceCriterion\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"issueKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"issue_key\"},{\"name\":\"criterion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"position\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"issue\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"AcceptanceCriterionToIssue\"}],\"dbName\":\"acceptance_criteria\"},\"IssueHistory\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"issueKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"issue_key\"},{\"name\":\"at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"action\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fromColumn\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"from_column\"},{\"name\":\"toColumn\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"to_column\"},{\"name\":\"sessionId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"session_id\"},{\"name\":\"changes\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reason\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"issue\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"IssueToIssueHistory\"}],\"dbName\":\"issue_history\"},\"ExecutionLog\":{\"fields\":[{\"name\":\"sessionId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"session_id\"},{\"name\":\"issueKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"issue_key\"},{\"name\":\"columnId\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"column_id\"},{\"name\":\"prompt\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"terminalLog\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"terminal_log\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"issue\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"ExecutionLogToIssue\"},{\"name\":\"column\",\"kind\":\"object\",\"type\":\"Column\",\"relationName\":\"ColumnToExecutionLog\"}],\"dbName\":\"execution_logs\"},\"Comment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"issueKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"issue_key\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"author\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"issue\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"CommentToIssue\"}],\"dbName\":\"comments\"},\"Attachment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"issueKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"issue_key\"},{\"name\":\"filename\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"filepath\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mimetype\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"size\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"issue\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"AttachmentToIssue\"}],\"dbName\":\"attachments\"},\"Sequence\":{\"fields\":[{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"currentValue\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"current_value\"}],\"dbName\":\"sequences\"}},\"enums\":{},\"types\":{}}")
214
215
  defineDmmfProperty(exports.Prisma, config.runtimeDataModel)
215
216
  config.compilerWasm = {
216
217
  getRuntime: async () => require('./query_compiler_bg.js'),
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "prisma-client-a881422e644bdf8aa68121def46e39ba314daad9e0c9cf905f7eecebe527c349",
2
+ "name": "prisma-client-3ae76b7bbfa443da1cc41c5c54c591ea6ff7de6468679aab0a24cbeb84815f4f",
3
3
  "main": "index.js",
4
4
  "types": "index.d.ts",
5
5
  "browser": "default.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autocode-cli/autocode-prod",
3
- "version": "0.29.0",
3
+ "version": "0.37.0",
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "dependencies": {
package/bin/autocode CHANGED
@@ -43,6 +43,7 @@ Commands:
43
43
  next <key> Advance issue to next column
44
44
  move <key> <column> Move issue to a different column
45
45
  new <title> [desc] Create a new issue
46
+ new-child <parent> <title> [desc] Create child issue under parent
46
47
  parent <key> [parent] Manage parent relationships
47
48
  health Check workflow health
48
49
  stats Show usage statistics
@@ -51,6 +52,7 @@ Commands:
51
52
  catalog [action] List or manage column catalog
52
53
  pipeline <action> Manage pipelines
53
54
  help Show this help message
55
+ version Show version information
54
56
 
55
57
  Pipeline Commands:
56
58
  pipeline list List all pipelines
@@ -97,6 +99,12 @@ New Issue Options:
97
99
  -c, --column <slug> Target column (default: backlog)
98
100
  --parent <key> Parent issue key
99
101
 
102
+ New-Child Options:
103
+ -p, --priority <P0-P3> Priority (default: P2)
104
+ -l, --labels <labels> Comma-separated labels
105
+ -a, --acceptance <crit> Acceptance criteria (can repeat)
106
+ -c, --column <slug> Target column (default: backlog)
107
+
100
108
  Move Options:
101
109
  -f, --force Force move (skip validation)
102
110
 
@@ -133,6 +141,7 @@ Examples:
133
141
  autocode next AC-000001 Advance issue
134
142
  autocode move AC-000001 07_in-progress Move issue
135
143
  autocode new "Fix bug" -p P1 -l bug Create issue
144
+ autocode new-child AC-000001 "Sub-task" Create child issue
136
145
  autocode parent AC-000001 Show parent/children
137
146
  autocode parent AC-000001 AC-000002 Set parent
138
147
  autocode health Check for stuck issues
@@ -163,10 +172,11 @@ function hasDebugFlag() {
163
172
  return args.includes('--debug');
164
173
  }
165
174
 
166
- // Check if cloudflared is installed
175
+ // Check if cloudflared is installed (cross-platform)
167
176
  function isCloudflaredInstalled() {
168
177
  try {
169
- execSync('which cloudflared', { stdio: 'ignore' });
178
+ // Use --version instead of 'which' for Windows compatibility
179
+ execSync('cloudflared --version', { stdio: 'ignore' });
170
180
  return true;
171
181
  } catch {
172
182
  return false;
@@ -515,7 +525,9 @@ async function newCmd() {
515
525
 
516
526
  if (!title) {
517
527
  console.error('Usage: autocode new "<title>" ["<description>"] [options]');
518
- console.error('Options: -p <priority> -l <labels> -a <acceptance> -c <column> --parent <key> --autocomplete --lang <en|fr>');
528
+ console.error('Options: -p <priority> -l <labels> -a <acceptance> -c <column> --parent <key>');
529
+ console.error(' --autocomplete --lang <en|fr>');
530
+ console.error('Note: Acceptance criteria are ALWAYS auto-generated if not provided via -a');
519
531
  process.exit(1);
520
532
  }
521
533
 
@@ -527,7 +539,7 @@ async function newCmd() {
527
539
  };
528
540
 
529
541
  if (opts.labels) body.labels = opts.labels.split(',').map(l => l.trim());
530
- if (opts.acceptance) body.acceptance_criteria = opts.acceptance.split(',').map(c => c.trim());
542
+ if (opts.acceptance) body.acceptanceCriteria = opts.acceptance.split(',').map(c => c.trim());
531
543
  if (opts.semver) body.semver = opts.semver;
532
544
  if (opts.parent) body.parent_key = opts.parent;
533
545
 
@@ -546,6 +558,43 @@ async function newCmd() {
546
558
  const result = await res.json();
547
559
  const issue = result.data || result;
548
560
 
561
+ // Auto-generate acceptance criteria if not provided (mandatory)
562
+ const hasCriteria = opts.acceptance && opts.acceptance.trim().length > 0;
563
+ const shouldAutoGenerate = !hasCriteria && !opts.autocomplete;
564
+
565
+ if (shouldAutoGenerate) {
566
+ console.log(` ⏳ Generating acceptance criteria...`);
567
+ const autoRes = await fetch(`${getApiBase()}/api/issues/autocomplete`, {
568
+ method: 'POST',
569
+ headers: { 'Content-Type': 'application/json' },
570
+ body: JSON.stringify({
571
+ title: issue.title,
572
+ description: issue.description || '',
573
+ priority: issue.priority,
574
+ lang: opts.lang || 'fr'
575
+ })
576
+ });
577
+
578
+ if (autoRes.ok) {
579
+ const autoData = await autoRes.json();
580
+ if (autoData.acceptance_criteria && autoData.acceptance_criteria.length > 0) {
581
+ const patchRes = await fetch(`${getApiBase()}/api/issues/${issue.key}`, {
582
+ method: 'PATCH',
583
+ headers: { 'Content-Type': 'application/json' },
584
+ body: JSON.stringify({
585
+ acceptance_criteria: autoData.acceptance_criteria
586
+ })
587
+ });
588
+
589
+ if (patchRes.ok) {
590
+ console.log(` ✓ ${autoData.acceptance_criteria.length} acceptance criteria generated`);
591
+ }
592
+ }
593
+ } else {
594
+ console.log(` ⚠ Could not auto-generate criteria (server responded ${autoRes.status})`);
595
+ }
596
+ }
597
+
549
598
  // Autocomplete if requested (generates acceptance criteria, description, etc.)
550
599
  if (opts.autocomplete) {
551
600
  console.log(` Generating acceptance criteria...`);
@@ -606,6 +655,127 @@ async function newCmd() {
606
655
  }
607
656
  }
608
657
 
658
+ // ============================================
659
+ // new-child - Create child issue under parent
660
+ // ============================================
661
+ async function newChildCmd() {
662
+ const parentKey = commandArgs[0];
663
+ const title = commandArgs[1];
664
+
665
+ // Validation parent key format
666
+ if (!parentKey || !/^AC-\d{6}$/.test(parentKey)) {
667
+ console.error('Usage: autocode new-child <parent-key> "<title>" ["<description>"] [options]');
668
+ console.error('Error: Valid parent key required (e.g., AC-000001)');
669
+ process.exit(1);
670
+ }
671
+
672
+ // Validation title
673
+ if (!title) {
674
+ console.error('Usage: autocode new-child <parent-key> "<title>" ["<description>"] [options]');
675
+ console.error('Options: -p <priority> -l <labels> -a <acceptance> -c <column>');
676
+ process.exit(1);
677
+ }
678
+
679
+ try {
680
+ // Verify parent exists
681
+ const parentRes = await fetch(`${getApiBase()}/api/issues/${parentKey}`);
682
+ if (!parentRes.ok) {
683
+ console.error(`Error: Parent issue ${parentKey} not found`);
684
+ process.exit(1);
685
+ }
686
+
687
+ // Parse remaining options (starting from index 2)
688
+ const opts = { priority: 'P2', acceptance: [], labels: [] };
689
+ let desc = '';
690
+ let i = 2;
691
+
692
+ while (i < commandArgs.length) {
693
+ const arg = commandArgs[i];
694
+ if (arg === '-p' || arg === '--priority') opts.priority = commandArgs[++i];
695
+ else if (arg === '-l' || arg === '--labels') opts.labels = commandArgs[++i].split(',').map(l => l.trim());
696
+ else if (arg === '-a' || arg === '--acceptance') opts.acceptance.push(commandArgs[++i]);
697
+ else if (arg === '-c' || arg === '--column') opts.column = commandArgs[++i];
698
+ else if (!desc) desc = arg;
699
+ i++;
700
+ }
701
+
702
+ const body = {
703
+ title,
704
+ description: desc || '',
705
+ priority: opts.priority,
706
+ parent: parentKey, // FORCED - this is the key difference (API expects 'parent')
707
+ };
708
+
709
+ if (opts.labels.length > 0) body.labels = opts.labels;
710
+ if (opts.acceptance.length > 0) body.acceptanceCriteria = opts.acceptance;
711
+
712
+ const res = await fetch(`${getApiBase()}/api/issues`, {
713
+ method: 'POST',
714
+ headers: { 'Content-Type': 'application/json' },
715
+ body: JSON.stringify(body)
716
+ });
717
+
718
+ if (!res.ok) {
719
+ const err = await res.json().catch(() => ({}));
720
+ console.error(`Failed: ${err.message || err.error || res.statusText}`);
721
+ process.exit(1);
722
+ }
723
+
724
+ const result = await res.json();
725
+ const issue = result.data || result;
726
+
727
+ // Auto-generate acceptance criteria if not provided
728
+ if (opts.acceptance.length === 0) {
729
+ console.log(` ⏳ Generating acceptance criteria...`);
730
+ const autoRes = await fetch(`${getApiBase()}/api/issues/autocomplete`, {
731
+ method: 'POST',
732
+ headers: { 'Content-Type': 'application/json' },
733
+ body: JSON.stringify({
734
+ title: issue.title,
735
+ description: issue.description || '',
736
+ priority: issue.priority,
737
+ lang: 'fr'
738
+ })
739
+ });
740
+
741
+ if (autoRes.ok) {
742
+ const autoData = await autoRes.json();
743
+ if (autoData.acceptance_criteria && autoData.acceptance_criteria.length > 0) {
744
+ const patchRes = await fetch(`${getApiBase()}/api/issues/${issue.key}`, {
745
+ method: 'PATCH',
746
+ headers: { 'Content-Type': 'application/json' },
747
+ body: JSON.stringify({
748
+ acceptance_criteria: autoData.acceptance_criteria
749
+ })
750
+ });
751
+
752
+ if (patchRes.ok) {
753
+ console.log(` ✓ ${autoData.acceptance_criteria.length} acceptance criteria generated`);
754
+ }
755
+ }
756
+ }
757
+ }
758
+
759
+ // Move to column if specified
760
+ if (opts.column && opts.column !== 'backlog') {
761
+ await fetch(`${getApiBase()}/api/issues/${issue.key}/move`, {
762
+ method: 'POST',
763
+ headers: { 'Content-Type': 'application/json' },
764
+ body: JSON.stringify({ column: opts.column, force: true })
765
+ });
766
+ }
767
+
768
+ console.log(`✓ Created ${issue.key} (child of ${parentKey})`);
769
+ console.log(` Title: ${issue.title}`);
770
+ console.log(` Priority: ${issue.priority}`);
771
+ console.log(` Parent: ${parentKey}`);
772
+ } catch (e) {
773
+ console.error(`Error: ${e.message}`);
774
+ console.error('Make sure autocode server is running');
775
+ process.exit(1);
776
+ }
777
+ }
778
+
609
779
  // ============================================
610
780
  // show - Show issue details
611
781
  // ============================================
@@ -1568,6 +1738,12 @@ Examples:
1568
1738
  `);
1569
1739
  }
1570
1740
 
1741
+ function versionCmd() {
1742
+ const pkgPath = join(root, 'package.json');
1743
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
1744
+ console.log(`autocode v${pkg.version}`);
1745
+ }
1746
+
1571
1747
  // Helper: Get option value from args
1572
1748
  function getArgOption(args, flag) {
1573
1749
  const idx = args.findIndex(a => a === flag);
@@ -2404,6 +2580,9 @@ switch (command) {
2404
2580
  case 'new':
2405
2581
  newCmd();
2406
2582
  break;
2583
+ case 'new-child':
2584
+ newChildCmd();
2585
+ break;
2407
2586
  case 'parent':
2408
2587
  parentCmd();
2409
2588
  break;
@@ -2430,6 +2609,11 @@ switch (command) {
2430
2609
  case '-h':
2431
2610
  showHelp();
2432
2611
  break;
2612
+ case 'version':
2613
+ case '--version':
2614
+ case '-V':
2615
+ versionCmd();
2616
+ break;
2433
2617
  default:
2434
2618
  // Check if it's an issue key shortcut - show issue details
2435
2619
  if (command.match(/^AC-\d{6}$/)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autocode-cli/autocode",
3
- "version": "0.29.0",
3
+ "version": "0.37.0",
4
4
  "description": "AutoCode Dashboard - Issue tracking with web interface",
5
5
  "type": "module",
6
6
  "bin": {
@@ -11,6 +11,7 @@
11
11
  "clean": "rm -rf .nuxt .output",
12
12
  "build": "nuxt build",
13
13
  "dev": "npm run kill-ports && npm run clean && (prisma studio --port 49152 &) && nuxt dev",
14
+ "dev:debug": "npm run kill-ports && npm run clean && (prisma studio --port 49152 &) && AUTOCODE_DEBUG=true nuxt dev",
14
15
  "generate": "nuxt generate",
15
16
  "preview": "nuxt preview",
16
17
  "serve": "node .output/server/index.mjs",
@@ -37,7 +38,8 @@
37
38
  "README.md",
38
39
  ".output",
39
40
  "bin",
40
- "templates"
41
+ "templates",
42
+ "prisma"
41
43
  ],
42
44
  "keywords": [
43
45
  "issues",
@@ -65,6 +67,7 @@
65
67
  "@nuxtjs/i18n": "^10.2.1",
66
68
  "@prisma/adapter-better-sqlite3": "^7.2.0",
67
69
  "@prisma/client": "^7.2.0",
70
+ "prisma": "^7.2.0",
68
71
  "@scalar/nuxt": "^0.5.35",
69
72
  "@vueuse/core": "^14.1.0",
70
73
  "@vueuse/nuxt": "^14.1.0",
@@ -93,12 +96,8 @@
93
96
  "eslint": "^9.39.2",
94
97
  "happy-dom": "^20.0.11",
95
98
  "prettier": "^3.7.4",
96
- "prisma": "^7.2.0",
97
99
  "typescript": "^5.7.3",
98
100
  "vitest": "^3.2.0",
99
101
  "vue-tsc": "^2.2.10"
100
- },
101
- "optionalDependencies": {
102
- "@oxc-parser/binding-linux-x64-gnu": "^0.106.0"
103
102
  }
104
103
  }