@autocode-cli/autocode 0.28.1 → 0.36.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 (194) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_i18n/Ld0h1Adq/en/messages.json +1 -0
  3. package/.output/public/_i18n/Ld0h1Adq/fr/messages.json +1 -0
  4. package/.output/public/_nuxt/00BWY9Ij.js +10 -0
  5. package/.output/public/_nuxt/{DqQxVbWA.js → 48RFRq_I.js} +1 -1
  6. package/.output/public/_nuxt/{AM5G3Gb5.js → 6gOFoOBv.js} +1 -1
  7. package/.output/public/_nuxt/7sR_btEk.js +1 -0
  8. package/.output/public/_nuxt/{DVrAHktU.js → Amqf1SBE.js} +1 -1
  9. package/.output/public/_nuxt/{B2zBdK3d.js → B0yQK1au.js} +1 -1
  10. package/.output/public/_nuxt/{DDhcSt_S.js → B3JaNZxX.js} +1 -1
  11. package/.output/public/_nuxt/{BHVpJd4P.js → BAAiS_qy.js} +1 -1
  12. package/.output/public/_nuxt/{hAo59O9E.js → BAOdxXv4.js} +1 -1
  13. package/.output/public/_nuxt/BGJFtQgK.js +1 -0
  14. package/.output/public/_nuxt/BMQOAvhP.js +1 -0
  15. package/.output/public/_nuxt/{CebUck3P.js → BPxDXB13.js} +1 -1
  16. package/.output/public/_nuxt/{Cm0Kz8KR.js → BQMX0Vtg.js} +1 -1
  17. package/.output/public/_nuxt/{H1ZdG1j9.js → BQPgjGfs.js} +1 -1
  18. package/.output/public/_nuxt/{BQNoAdwZ.js → BRNVrR0Q.js} +1 -1
  19. package/.output/public/_nuxt/{DUmRoRZn.js → BRR7H4VZ.js} +1 -1
  20. package/.output/public/_nuxt/{CPo_B76D.js → BStRXLlp.js} +1 -1
  21. package/.output/public/_nuxt/{D1bOowq2.js → BTUypKON.js} +1 -1
  22. package/.output/public/_nuxt/{Dg0UerBw.js → BZ5eH4oZ.js} +1 -1
  23. package/.output/public/_nuxt/{CTBcrkyt.js → BcjH67ba.js} +1 -1
  24. package/.output/public/_nuxt/{BeGyjVK0.js → BrtBSWOq.js} +1 -1
  25. package/.output/public/_nuxt/{E6PL7Nzd.js → C0Gbbife.js} +1 -1
  26. package/.output/public/_nuxt/{DrakT86i.js → C9P-GWig.js} +1 -1
  27. package/.output/public/_nuxt/{xpS189GL.js → C9Q_XE2y.js} +1 -1
  28. package/.output/public/_nuxt/{BPzjv_6i.js → CCEPkO9Q.js} +1 -1
  29. package/.output/public/_nuxt/{Dh-Zeb3O.js → CFJDHFu0.js} +1 -1
  30. package/.output/public/_nuxt/{Bpmmm66_.js → CFQXrjRh.js} +1 -1
  31. package/.output/public/_nuxt/{sXDQPz8X.js → CGNl3nJG.js} +1 -1
  32. package/.output/public/_nuxt/{Cx_L8WQj.js → CKjR6Oik.js} +1 -1
  33. package/.output/public/_nuxt/{B9C0HWuW.js → CTLXeCVr.js} +1 -1
  34. package/.output/public/_nuxt/{BWz5jw0L.js → CXfoqgHV.js} +1 -1
  35. package/.output/public/_nuxt/{5FWvGp_V.js → CZAptABr.js} +1 -1
  36. package/.output/public/_nuxt/{DGllJptg.js → CaT6Gmvd.js} +1 -1
  37. package/.output/public/_nuxt/{C2GaASXz.js → CeKi_uUO.js} +1 -1
  38. package/.output/public/_nuxt/CercIbuG.js +1 -0
  39. package/.output/public/_nuxt/{D8OjLiok.js → CgTGeNUg.js} +1 -1
  40. package/.output/public/_nuxt/{Dk0kqhok.js → ChtvGXKc.js} +1 -1
  41. package/.output/public/_nuxt/{Dn7Pqpyg.js → CkQJAsUV.js} +1 -1
  42. package/.output/public/_nuxt/{DBPjp5rm.js → CnBvzpvA.js} +1 -1
  43. package/.output/public/_nuxt/{D5ooCSL9.js → Co4zaoac.js} +1 -1
  44. package/.output/public/_nuxt/CouFgKW5.js +1 -0
  45. package/.output/public/_nuxt/{Ch6U-XfV.js → CpoLuEmz.js} +1 -1
  46. package/.output/public/_nuxt/{xPRPCEbj.js → Cpxhv8Qg.js} +1 -1
  47. package/.output/public/_nuxt/{BVJEdOBz.js → D45sR6CZ.js} +1 -1
  48. package/.output/public/_nuxt/{Dq2LFE1d.js → DAGJ7zg9.js} +1 -1
  49. package/.output/public/_nuxt/{CEVkryQZ.js → DAlNcmKB.js} +1 -1
  50. package/.output/public/_nuxt/{C6NP8L7w.js → DDNH3Fq2.js} +1 -1
  51. package/.output/public/_nuxt/{C7oKuzsd.js → DQwsIvTZ.js} +1 -1
  52. package/.output/public/_nuxt/{CKs1TwM-.js → DRMwpGCv.js} +1 -1
  53. package/.output/public/_nuxt/{7OrNJZ8q.js → DYqWq1Vn.js} +1 -1
  54. package/.output/public/_nuxt/Dfr112Jw.js +1 -0
  55. package/.output/public/_nuxt/{D2RHUlLB.js → DkJTip7e.js} +1 -1
  56. package/.output/public/_nuxt/{BTpkhX3G.js → Dob4oaN0.js} +1 -1
  57. package/.output/public/_nuxt/{B1Etvs3c.js → DpYdB9MN.js} +1 -1
  58. package/.output/public/_nuxt/{DDBIX1Ge.js → DxNPZ1bU.js} +1 -1
  59. package/.output/public/_nuxt/{BsL_VgkM.js → I5zwxUB4.js} +1 -1
  60. package/.output/public/_nuxt/{DHK6Urm7.js → NIeoUmDE.js} +1 -1
  61. package/.output/public/_nuxt/{DadxcRMs.js → NVsyChWu.js} +1 -1
  62. package/.output/public/_nuxt/SK7I1OsC.js +1 -0
  63. package/.output/public/_nuxt/{CBV4OF4H.js → Wm7exVxY.js} +1 -1
  64. package/.output/public/_nuxt/{CWOdQCPj.js → _hRtkQ2r.js} +1 -1
  65. package/.output/public/_nuxt/builds/latest.json +1 -1
  66. package/.output/public/_nuxt/builds/meta/eddd3f97-dfcd-4aa3-a8e7-9f432f427e6d.json +1 -0
  67. package/.output/public/_nuxt/cIYz9vRR.js +1 -0
  68. package/.output/public/_nuxt/cli.D68WAxVv.css +1 -0
  69. package/.output/public/_nuxt/{2UKQ6Srj.js → ge5HoFHn.js} +3 -3
  70. package/.output/public/_nuxt/{index.Dndk3KN9.css → index.B-MCQhP8.css} +1 -1
  71. package/.output/public/_nuxt/index.CPvzWVwd.css +1 -0
  72. package/.output/public/_nuxt/{BZwqSlWD.js → ivFMXWZI.js} +1 -1
  73. package/.output/public/_nuxt/kdqZYFE6.js +1 -0
  74. package/.output/public/_nuxt/{Dye3__N7.js → nSLZfjDc.js} +3 -3
  75. package/.output/public/_nuxt/new.84MgEEsd.css +1 -0
  76. package/.output/public/_nuxt/prompt.CNw9EZnJ.css +1 -0
  77. package/.output/public/_nuxt/{CGLkc3In.js → t7k_e5FQ.js} +1 -1
  78. package/.output/public/_nuxt/{CNa2gyMe.js → uL1fX62J.js} +1 -1
  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 +5 -1
  87. package/.output/server/chunks/_/en.mjs.map +1 -1
  88. package/.output/server/chunks/_/fr.mjs +5 -1
  89. package/.output/server/chunks/_/fr.mjs.map +1 -1
  90. package/.output/server/chunks/build/LandingFooter-styles.CudcJSR4.mjs +8 -0
  91. package/.output/server/chunks/build/LandingFooter-styles.CudcJSR4.mjs.map +1 -0
  92. package/.output/server/chunks/build/{cli-CZwbcgW5.mjs → cli-S2geGQoF.mjs} +27 -14
  93. package/.output/server/chunks/build/cli-S2geGQoF.mjs.map +1 -0
  94. package/.output/server/chunks/build/cli-styles.BonhH80m.mjs +8 -0
  95. package/.output/server/chunks/build/cli-styles.BonhH80m.mjs.map +1 -0
  96. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  97. package/.output/server/chunks/build/{en-BwRtQJL1.mjs → en-BhagfGAQ.mjs} +6 -2
  98. package/.output/server/chunks/build/{en-BwRtQJL1.mjs.map → en-BhagfGAQ.mjs.map} +1 -1
  99. package/.output/server/chunks/build/{fr-BAbxj8tA.mjs → fr-12bubW4G.mjs} +6 -2
  100. package/.output/server/chunks/build/{fr-BAbxj8tA.mjs.map → fr-12bubW4G.mjs.map} +1 -1
  101. package/.output/server/chunks/build/{index-CKZ58Ox2.mjs → index-BZJzUQ3B.mjs} +27 -17
  102. package/.output/server/chunks/build/index-BZJzUQ3B.mjs.map +1 -0
  103. package/.output/server/chunks/build/index-styles.BP9liX_F.mjs +8 -0
  104. package/.output/server/chunks/build/index-styles.BP9liX_F.mjs.map +1 -0
  105. package/.output/server/chunks/build/{index-3KvoAMZW.mjs → index-tBZcd_Xi.mjs} +78 -182
  106. package/.output/server/chunks/build/index-tBZcd_Xi.mjs.map +1 -0
  107. package/.output/server/chunks/build/{new-BI12IpeK.mjs → new-BqYiaSD7.mjs} +19 -19
  108. package/.output/server/chunks/build/{new-BI12IpeK.mjs.map → new-BqYiaSD7.mjs.map} +1 -1
  109. package/.output/server/chunks/build/new-styles.BPjkN6Iy.mjs +8 -0
  110. package/.output/server/chunks/build/new-styles.BPjkN6Iy.mjs.map +1 -0
  111. package/.output/server/chunks/build/{prompt-BjvwrM-J.mjs → prompt-D-xu1MtO.mjs} +41 -12
  112. package/.output/server/chunks/build/prompt-D-xu1MtO.mjs.map +1 -0
  113. package/.output/server/chunks/build/prompt-styles.Dvlc6Xra.mjs +8 -0
  114. package/.output/server/chunks/build/prompt-styles.Dvlc6Xra.mjs.map +1 -0
  115. package/.output/server/chunks/build/server.mjs +9 -9
  116. package/.output/server/chunks/build/styles.mjs +15 -21
  117. package/.output/server/chunks/nitro/nitro.mjs +545 -515
  118. package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
  119. package/.output/server/chunks/routes/.well-known/appspecific/_...path_.mjs +34 -0
  120. package/.output/server/chunks/routes/.well-known/appspecific/_...path_.mjs.map +1 -0
  121. package/.output/server/chunks/routes/api/issues/_id/history.get.mjs +3 -2
  122. package/.output/server/chunks/routes/api/issues/_id/history.get.mjs.map +1 -1
  123. package/.output/server/node_modules/.prisma/client/index.js +4 -3
  124. package/.output/server/node_modules/.prisma/client/package.json +1 -1
  125. package/.output/server/package.json +1 -1
  126. package/bin/autocode +176 -4
  127. package/package.json +5 -6
  128. package/prisma/migrations/20260104173538_init/migration.sql +142 -0
  129. package/prisma/migrations/20260104180000_pipeline_versioning/migration.sql +216 -0
  130. package/prisma/migrations/20260104190638_add_column_prompts/migration.sql +50 -0
  131. package/prisma/migrations/20260105120000_remove_column_prompts/migration.sql +3 -0
  132. package/prisma/migrations/20260105150000_normalize_pipeline_names/migration.sql +37 -0
  133. package/prisma/migrations/20260105170000_remove_slug_prefixes/migration.sql +16 -0
  134. package/prisma/migrations/migration_lock.toml +3 -0
  135. package/prisma/schema.prisma +185 -0
  136. package/templates/prompts/_transition-decision.en.md +41 -25
  137. package/templates/prompts/_transition-decision.fr.md +28 -11
  138. package/templates/prompts/design.en.md +31 -9
  139. package/templates/prompts/design.fr.md +31 -9
  140. package/templates/prompts/git-tag.en.md +47 -11
  141. package/templates/prompts/git-tag.fr.md +47 -11
  142. package/templates/prompts/in-progress.en.md +43 -9
  143. package/templates/prompts/in-progress.fr.md +44 -10
  144. package/templates/prompts/qualification.en.md +48 -17
  145. package/templates/prompts/qualification.fr.md +48 -17
  146. package/templates/prompts/retest-cypress.en.md +14 -3
  147. package/templates/prompts/retest-cypress.fr.md +14 -3
  148. package/templates/prompts/review-security.en.md +35 -6
  149. package/templates/prompts/review-security.fr.md +35 -6
  150. package/templates/prompts/specification.en.md +29 -7
  151. package/templates/prompts/specification.fr.md +29 -7
  152. package/templates/prompts/splitter.en.md +50 -28
  153. package/templates/prompts/splitter.fr.md +52 -31
  154. package/templates/prompts/testing-cypress.en.md +14 -4
  155. package/templates/prompts/testing-cypress.fr.md +14 -4
  156. package/templates/prompts/testing-integration.en.md +39 -3
  157. package/templates/prompts/testing-integration.fr.md +39 -3
  158. package/.output/public/_i18n/1tr7GMXh/en/messages.json +0 -1
  159. package/.output/public/_i18n/1tr7GMXh/fr/messages.json +0 -1
  160. package/.output/public/_nuxt/BLgRKHG3.js +0 -1
  161. package/.output/public/_nuxt/Bn3kTsBm.js +0 -1
  162. package/.output/public/_nuxt/D1HszwGo.js +0 -1
  163. package/.output/public/_nuxt/D3gNfEFX.js +0 -1
  164. package/.output/public/_nuxt/DYSILRDe.js +0 -1
  165. package/.output/public/_nuxt/F0VLILv_.js +0 -1
  166. package/.output/public/_nuxt/_bAHEawb.js +0 -1
  167. package/.output/public/_nuxt/builds/meta/869ae272-5034-4cd9-bcf3-c435cd504497.json +0 -1
  168. package/.output/public/_nuxt/cli.e1u7fwy6.css +0 -1
  169. package/.output/public/_nuxt/eYN6S-_a.js +0 -1
  170. package/.output/public/_nuxt/index.COVdL_Kx.css +0 -1
  171. package/.output/public/_nuxt/new.BFERdqdm.css +0 -1
  172. package/.output/public/_nuxt/prompt.DZ0wdOji.css +0 -1
  173. package/.output/public/_nuxt/x-ybRJG0.js +0 -10
  174. package/.output/public/_nuxt/xFbyDfcC.js +0 -1
  175. package/.output/server/chunks/build/LandingArchitecture-styles.Don6ug3a.mjs +0 -8
  176. package/.output/server/chunks/build/LandingArchitecture-styles.Don6ug3a.mjs.map +0 -1
  177. package/.output/server/chunks/build/LandingDocs-styles.FyNL7DNS.mjs +0 -8
  178. package/.output/server/chunks/build/LandingDocs-styles.FyNL7DNS.mjs.map +0 -1
  179. package/.output/server/chunks/build/LandingFooter-styles.sSpn5cgM.mjs +0 -8
  180. package/.output/server/chunks/build/LandingFooter-styles.sSpn5cgM.mjs.map +0 -1
  181. package/.output/server/chunks/build/LandingRoadmap-styles.DX5EsTsx.mjs +0 -8
  182. package/.output/server/chunks/build/LandingRoadmap-styles.DX5EsTsx.mjs.map +0 -1
  183. package/.output/server/chunks/build/cli-CZwbcgW5.mjs.map +0 -1
  184. package/.output/server/chunks/build/cli-styles.CSdcLhw8.mjs +0 -8
  185. package/.output/server/chunks/build/cli-styles.CSdcLhw8.mjs.map +0 -1
  186. package/.output/server/chunks/build/index-3KvoAMZW.mjs.map +0 -1
  187. package/.output/server/chunks/build/index-CKZ58Ox2.mjs.map +0 -1
  188. package/.output/server/chunks/build/index-styles.BJ7kZO7q.mjs +0 -8
  189. package/.output/server/chunks/build/index-styles.BJ7kZO7q.mjs.map +0 -1
  190. package/.output/server/chunks/build/new-styles.Chk5u_6M.mjs +0 -8
  191. package/.output/server/chunks/build/new-styles.Chk5u_6M.mjs.map +0 -1
  192. package/.output/server/chunks/build/prompt-BjvwrM-J.mjs.map +0 -1
  193. package/.output/server/chunks/build/prompt-styles.DWfublIG.mjs +0 -8
  194. 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.28.1",
3
+ "version": "0.36.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
@@ -97,6 +98,12 @@ New Issue Options:
97
98
  -c, --column <slug> Target column (default: backlog)
98
99
  --parent <key> Parent issue key
99
100
 
101
+ New-Child Options:
102
+ -p, --priority <P0-P3> Priority (default: P2)
103
+ -l, --labels <labels> Comma-separated labels
104
+ -a, --acceptance <crit> Acceptance criteria (can repeat)
105
+ -c, --column <slug> Target column (default: backlog)
106
+
100
107
  Move Options:
101
108
  -f, --force Force move (skip validation)
102
109
 
@@ -133,6 +140,7 @@ Examples:
133
140
  autocode next AC-000001 Advance issue
134
141
  autocode move AC-000001 07_in-progress Move issue
135
142
  autocode new "Fix bug" -p P1 -l bug Create issue
143
+ autocode new-child AC-000001 "Sub-task" Create child issue
136
144
  autocode parent AC-000001 Show parent/children
137
145
  autocode parent AC-000001 AC-000002 Set parent
138
146
  autocode health Check for stuck issues
@@ -163,10 +171,11 @@ function hasDebugFlag() {
163
171
  return args.includes('--debug');
164
172
  }
165
173
 
166
- // Check if cloudflared is installed
174
+ // Check if cloudflared is installed (cross-platform)
167
175
  function isCloudflaredInstalled() {
168
176
  try {
169
- execSync('which cloudflared', { stdio: 'ignore' });
177
+ // Use --version instead of 'which' for Windows compatibility
178
+ execSync('cloudflared --version', { stdio: 'ignore' });
170
179
  return true;
171
180
  } catch {
172
181
  return false;
@@ -515,7 +524,9 @@ async function newCmd() {
515
524
 
516
525
  if (!title) {
517
526
  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>');
527
+ console.error('Options: -p <priority> -l <labels> -a <acceptance> -c <column> --parent <key>');
528
+ console.error(' --autocomplete --lang <en|fr>');
529
+ console.error('Note: Acceptance criteria are ALWAYS auto-generated if not provided via -a');
519
530
  process.exit(1);
520
531
  }
521
532
 
@@ -527,7 +538,7 @@ async function newCmd() {
527
538
  };
528
539
 
529
540
  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());
541
+ if (opts.acceptance) body.acceptanceCriteria = opts.acceptance.split(',').map(c => c.trim());
531
542
  if (opts.semver) body.semver = opts.semver;
532
543
  if (opts.parent) body.parent_key = opts.parent;
533
544
 
@@ -546,6 +557,43 @@ async function newCmd() {
546
557
  const result = await res.json();
547
558
  const issue = result.data || result;
548
559
 
560
+ // Auto-generate acceptance criteria if not provided (mandatory)
561
+ const hasCriteria = opts.acceptance && opts.acceptance.trim().length > 0;
562
+ const shouldAutoGenerate = !hasCriteria && !opts.autocomplete;
563
+
564
+ if (shouldAutoGenerate) {
565
+ console.log(` ⏳ Generating acceptance criteria...`);
566
+ const autoRes = await fetch(`${getApiBase()}/api/issues/autocomplete`, {
567
+ method: 'POST',
568
+ headers: { 'Content-Type': 'application/json' },
569
+ body: JSON.stringify({
570
+ title: issue.title,
571
+ description: issue.description || '',
572
+ priority: issue.priority,
573
+ lang: opts.lang || 'fr'
574
+ })
575
+ });
576
+
577
+ if (autoRes.ok) {
578
+ const autoData = await autoRes.json();
579
+ if (autoData.acceptance_criteria && autoData.acceptance_criteria.length > 0) {
580
+ const patchRes = await fetch(`${getApiBase()}/api/issues/${issue.key}`, {
581
+ method: 'PATCH',
582
+ headers: { 'Content-Type': 'application/json' },
583
+ body: JSON.stringify({
584
+ acceptance_criteria: autoData.acceptance_criteria
585
+ })
586
+ });
587
+
588
+ if (patchRes.ok) {
589
+ console.log(` ✓ ${autoData.acceptance_criteria.length} acceptance criteria generated`);
590
+ }
591
+ }
592
+ } else {
593
+ console.log(` ⚠ Could not auto-generate criteria (server responded ${autoRes.status})`);
594
+ }
595
+ }
596
+
549
597
  // Autocomplete if requested (generates acceptance criteria, description, etc.)
550
598
  if (opts.autocomplete) {
551
599
  console.log(` Generating acceptance criteria...`);
@@ -606,6 +654,127 @@ async function newCmd() {
606
654
  }
607
655
  }
608
656
 
657
+ // ============================================
658
+ // new-child - Create child issue under parent
659
+ // ============================================
660
+ async function newChildCmd() {
661
+ const parentKey = commandArgs[0];
662
+ const title = commandArgs[1];
663
+
664
+ // Validation parent key format
665
+ if (!parentKey || !/^AC-\d{6}$/.test(parentKey)) {
666
+ console.error('Usage: autocode new-child <parent-key> "<title>" ["<description>"] [options]');
667
+ console.error('Error: Valid parent key required (e.g., AC-000001)');
668
+ process.exit(1);
669
+ }
670
+
671
+ // Validation title
672
+ if (!title) {
673
+ console.error('Usage: autocode new-child <parent-key> "<title>" ["<description>"] [options]');
674
+ console.error('Options: -p <priority> -l <labels> -a <acceptance> -c <column>');
675
+ process.exit(1);
676
+ }
677
+
678
+ try {
679
+ // Verify parent exists
680
+ const parentRes = await fetch(`${getApiBase()}/api/issues/${parentKey}`);
681
+ if (!parentRes.ok) {
682
+ console.error(`Error: Parent issue ${parentKey} not found`);
683
+ process.exit(1);
684
+ }
685
+
686
+ // Parse remaining options (starting from index 2)
687
+ const opts = { priority: 'P2', acceptance: [], labels: [] };
688
+ let desc = '';
689
+ let i = 2;
690
+
691
+ while (i < commandArgs.length) {
692
+ const arg = commandArgs[i];
693
+ if (arg === '-p' || arg === '--priority') opts.priority = commandArgs[++i];
694
+ else if (arg === '-l' || arg === '--labels') opts.labels = commandArgs[++i].split(',').map(l => l.trim());
695
+ else if (arg === '-a' || arg === '--acceptance') opts.acceptance.push(commandArgs[++i]);
696
+ else if (arg === '-c' || arg === '--column') opts.column = commandArgs[++i];
697
+ else if (!desc) desc = arg;
698
+ i++;
699
+ }
700
+
701
+ const body = {
702
+ title,
703
+ description: desc || '',
704
+ priority: opts.priority,
705
+ parent: parentKey, // FORCED - this is the key difference (API expects 'parent')
706
+ };
707
+
708
+ if (opts.labels.length > 0) body.labels = opts.labels;
709
+ if (opts.acceptance.length > 0) body.acceptanceCriteria = opts.acceptance;
710
+
711
+ const res = await fetch(`${getApiBase()}/api/issues`, {
712
+ method: 'POST',
713
+ headers: { 'Content-Type': 'application/json' },
714
+ body: JSON.stringify(body)
715
+ });
716
+
717
+ if (!res.ok) {
718
+ const err = await res.json().catch(() => ({}));
719
+ console.error(`Failed: ${err.message || err.error || res.statusText}`);
720
+ process.exit(1);
721
+ }
722
+
723
+ const result = await res.json();
724
+ const issue = result.data || result;
725
+
726
+ // Auto-generate acceptance criteria if not provided
727
+ if (opts.acceptance.length === 0) {
728
+ console.log(` ⏳ Generating acceptance criteria...`);
729
+ const autoRes = await fetch(`${getApiBase()}/api/issues/autocomplete`, {
730
+ method: 'POST',
731
+ headers: { 'Content-Type': 'application/json' },
732
+ body: JSON.stringify({
733
+ title: issue.title,
734
+ description: issue.description || '',
735
+ priority: issue.priority,
736
+ lang: 'fr'
737
+ })
738
+ });
739
+
740
+ if (autoRes.ok) {
741
+ const autoData = await autoRes.json();
742
+ if (autoData.acceptance_criteria && autoData.acceptance_criteria.length > 0) {
743
+ const patchRes = await fetch(`${getApiBase()}/api/issues/${issue.key}`, {
744
+ method: 'PATCH',
745
+ headers: { 'Content-Type': 'application/json' },
746
+ body: JSON.stringify({
747
+ acceptance_criteria: autoData.acceptance_criteria
748
+ })
749
+ });
750
+
751
+ if (patchRes.ok) {
752
+ console.log(` ✓ ${autoData.acceptance_criteria.length} acceptance criteria generated`);
753
+ }
754
+ }
755
+ }
756
+ }
757
+
758
+ // Move to column if specified
759
+ if (opts.column && opts.column !== 'backlog') {
760
+ await fetch(`${getApiBase()}/api/issues/${issue.key}/move`, {
761
+ method: 'POST',
762
+ headers: { 'Content-Type': 'application/json' },
763
+ body: JSON.stringify({ column: opts.column, force: true })
764
+ });
765
+ }
766
+
767
+ console.log(`✓ Created ${issue.key} (child of ${parentKey})`);
768
+ console.log(` Title: ${issue.title}`);
769
+ console.log(` Priority: ${issue.priority}`);
770
+ console.log(` Parent: ${parentKey}`);
771
+ } catch (e) {
772
+ console.error(`Error: ${e.message}`);
773
+ console.error('Make sure autocode server is running');
774
+ process.exit(1);
775
+ }
776
+ }
777
+
609
778
  // ============================================
610
779
  // show - Show issue details
611
780
  // ============================================
@@ -2404,6 +2573,9 @@ switch (command) {
2404
2573
  case 'new':
2405
2574
  newCmd();
2406
2575
  break;
2576
+ case 'new-child':
2577
+ newChildCmd();
2578
+ break;
2407
2579
  case 'parent':
2408
2580
  parentCmd();
2409
2581
  break;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autocode-cli/autocode",
3
- "version": "0.28.1",
3
+ "version": "0.36.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
  }