@autocode-cli/autocode 0.24.2 → 0.26.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 (74) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{CxCUB-jw.js → B5lFKq3G.js} +1 -1
  3. package/.output/public/_nuxt/{BB7mNyvB.js → BBMcfTGy.js} +1 -1
  4. package/.output/public/_nuxt/{vfCqvZ7p.js → BcawioR3.js} +1 -1
  5. package/.output/public/_nuxt/{DPY45j3g.js → Br7Y24-t.js} +1 -1
  6. package/.output/public/_nuxt/{BfvaD8zq.js → Btwtsr_u.js} +6 -6
  7. package/.output/public/_nuxt/{p0o0xQ7S.js → BvE9NWMw.js} +1 -1
  8. package/.output/public/_nuxt/{aL-hwrDv.js → C4itadaD.js} +1 -1
  9. package/.output/public/_nuxt/{C2zPiS0N.js → C4ybMJ7Z.js} +1 -1
  10. package/.output/public/_nuxt/{DerTgqhZ.js → C7Lp5NPF.js} +1 -1
  11. package/.output/public/_nuxt/{D3gHSFO1.js → CMcAFpoK.js} +1 -1
  12. package/.output/public/_nuxt/{C5qkUISE.js → CWZ6WSwr.js} +1 -1
  13. package/.output/public/_nuxt/{C9Z_Mjdv.js → CYH4f4uY.js} +1 -1
  14. package/.output/public/_nuxt/{BhrZFGnk.js → CuwYCM4v.js} +1 -1
  15. package/.output/public/_nuxt/{CG6fFX4R.js → CvcfIZU-.js} +1 -1
  16. package/.output/public/_nuxt/{DZQLsTee.js → CvmJj3tc.js} +1 -1
  17. package/.output/public/_nuxt/{aMXqd-8n.js → D-DgzaOC.js} +1 -1
  18. package/.output/public/_nuxt/{D44BzzMg.js → D2qvqRWP.js} +1 -1
  19. package/.output/public/_nuxt/{DrnWNKxr.js → D5ZS_G-Z.js} +1 -1
  20. package/.output/public/_nuxt/{CP8dHttY.js → D8M2gN6n.js} +1 -1
  21. package/.output/public/_nuxt/{jYOQFUDH.js → D90sdSc5.js} +1 -1
  22. package/.output/public/_nuxt/{Bz9WwRWr.js → DGmZExaA.js} +1 -1
  23. package/.output/public/_nuxt/{BbEo0CFB.js → DJIybA4c.js} +1 -1
  24. package/.output/public/_nuxt/{CQWl6TIZ.js → DXwIM0gJ.js} +1 -1
  25. package/.output/public/_nuxt/{CeVGNobe.js → DhNKaVRN.js} +1 -1
  26. package/.output/public/_nuxt/{Cu-0JJ8B.js → DkN85EyM.js} +1 -1
  27. package/.output/public/_nuxt/{BMvB5hkX.js → DmYbhlFa.js} +1 -1
  28. package/.output/public/_nuxt/{BcQFK3DA.js → DnOmfKyh.js} +1 -1
  29. package/.output/public/_nuxt/{BarhsfnG.js → DuqIS0qR.js} +1 -1
  30. package/.output/public/_nuxt/{DABo4_10.js → I-u8LDqX.js} +1 -1
  31. package/.output/public/_nuxt/builds/latest.json +1 -1
  32. package/.output/public/_nuxt/builds/meta/234711bd-452d-42ba-9430-4d79ebc81813.json +1 -0
  33. package/.output/public/_nuxt/{Bu1-IDNY.js → nnCcRJrE.js} +1 -1
  34. package/.output/public/_nuxt/{8PJti6tf.js → oH1B3N8m.js} +1 -1
  35. package/.output/public/_payload.json +1 -1
  36. package/.output/public/index.html +1 -1
  37. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  38. package/.output/server/chunks/build/nuxt-link-Cq8xZgFP.mjs +1 -1
  39. package/.output/server/chunks/build/server.mjs +3 -3
  40. package/.output/server/chunks/build/styles.mjs +15 -15
  41. package/.output/server/chunks/nitro/nitro.mjs +244 -231
  42. package/.output/server/chunks/routes/_ws.mjs +1 -1
  43. package/.output/server/chunks/routes/api/index.get4.mjs +1 -1
  44. package/.output/server/chunks/routes/api/index.post2.mjs +3 -1
  45. package/.output/server/chunks/routes/api/index.post2.mjs.map +1 -1
  46. package/.output/server/chunks/routes/api/index.post3.mjs +1 -1
  47. package/.output/server/chunks/routes/api/pipelines/_name/activate.put.mjs +1 -1
  48. package/.output/server/chunks/routes/api/pipelines/_name/versions/_version/activate.put.mjs +1 -1
  49. package/.output/server/chunks/routes/api/pipelines/_name/versions/_version/finalize.post.mjs +1 -1
  50. package/.output/server/chunks/routes/api/pipelines/_name/versions/_version_.delete.mjs +1 -1
  51. package/.output/server/chunks/routes/api/pipelines/_name/versions/_version_.get.mjs +1 -1
  52. package/.output/server/chunks/routes/api/pipelines/_name/versions/_version_.put.mjs +1 -1
  53. package/.output/server/chunks/routes/api/pipelines/_name/versions.get.mjs +1 -1
  54. package/.output/server/chunks/routes/api/pipelines/_name/versions.post.mjs +1 -1
  55. package/.output/server/chunks/routes/api/pipelines/_name_.delete.mjs +1 -1
  56. package/.output/server/chunks/routes/api/pipelines/_name_.get.mjs +1 -1
  57. package/.output/server/chunks/routes/api/pipelines/_name_.put.mjs +1 -1
  58. package/.output/server/chunks/routes/api/stats.get.mjs +1 -1
  59. package/.output/server/chunks/routes/api/workflow/health.get.mjs +1 -1
  60. package/.output/server/chunks/routes/api/ws/status.get.mjs +1 -1
  61. package/.output/server/chunks/routes/renderer.mjs +1 -1
  62. package/.output/server/node_modules/.prisma/client/index.js +3 -2
  63. package/.output/server/node_modules/.prisma/client/package.json +1 -1
  64. package/.output/server/package.json +1 -1
  65. package/package.json +3 -3
  66. package/templates/prompts/_transition-decision.en.md +2 -1
  67. package/templates/prompts/_transition-decision.fr.md +18 -18
  68. package/templates/prompts/retest-cypress.en.md +15 -0
  69. package/templates/prompts/retest-cypress.fr.md +15 -0
  70. package/templates/prompts/testing-cypress.en.md +15 -0
  71. package/templates/prompts/testing-cypress.fr.md +15 -0
  72. package/.output/public/_nuxt/builds/meta/fda5642b-b71a-476c-9e0f-eb15a462e2fe.json +0 -1
  73. /package/.output/public/_i18n/{fC3ee0mv → JmX-ZbAb}/en/messages.json +0 -0
  74. /package/.output/public/_i18n/{fC3ee0mv → JmX-ZbAb}/fr/messages.json +0 -0
@@ -1,4 +1,4 @@
1
- import { a1 as defineWebSocketHandler, a2 as unregisterClient, a3 as handleMessage, a4 as registerClient } from '../nitro/nitro.mjs';
1
+ import { a2 as defineWebSocketHandler, a3 as unregisterClient, a4 as handleMessage, a5 as registerClient } from '../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, V as findAll } from '../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, W as findAll } from '../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, r as readBody, i as debug, c as createError, L as create, n as notifyIssueUpdate } from '../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, r as readBody, i as debug, c as createError, L as getCookie, M as create, n as notifyIssueUpdate } from '../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -42,8 +42,10 @@ const index_post = defineEventHandler(async (event) => {
42
42
  });
43
43
  }
44
44
  try {
45
+ const lang = getCookie(event, "autocode-lang") || "fr";
45
46
  const issue = await create({
46
47
  title: body.title,
48
+ lang,
47
49
  ...body.description ? { description: body.description } : {},
48
50
  ...body.priority ? { priority: body.priority } : {},
49
51
  ...body.parent ? { parentKey: body.parent } : {},
@@ -1 +1 @@
1
- {"version":3,"file":"index.post2.mjs","sources":["../../../../../server/api/issues/index.post.ts"],"names":["issuesService.create"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,mBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;;AACA,EAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAAA,KAAA,CAAA;AAEA,EAAA,KAAA,CAAA,OAAA,kBAAA,EAAA;AAAA,IACA,OAAA,IAAA,CAAA,KAAA;AAAA,IACA,QAAA,IAAA,CAAA,MAAA;AAAA,IACA,UAAA,IAAA,CAAA;AAAA,GACA,CAAA;AAEA,EAAA,IAAA,CAAA,KAAA,KAAA,EAAA;AACA,IAAA,KAAA,CAAA,KAAA,EAAA,gCAAA,EAAA,EAAA,QAAA,EAAA,OAAA,CAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,OAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,IAAA;AACA,IAAA,MAAA,KAAA,GAAA,MAAAA,MAAA,CAAA;AAAA,MACA,OAAA,IAAA,CAAA,KAAA;AAAA,MACA,GAAA,KAAA,WAAA,GAAA,EAAA,aAAA,IAAA,CAAA,WAAA,KAAA,EAAA;AAAA,MACA,GAAA,KAAA,QAAA,GAAA,EAAA,UAAA,IAAA,CAAA,QAAA,KAAA,EAAA;AAAA,MACA,GAAA,KAAA,MAAA,GAAA,EAAA,WAAA,IAAA,CAAA,MAAA,KAAA,EAAA;AAAA,MACA,GAAA,KAAA,kBAAA,GAAA,EAAA,oBAAA,IAAA,CAAA,kBAAA,KAAA;AAAA,KACA,CAAA;AAGA,IAAA,iBAAA,CAAA,KAAA,CAAA,KAAA,SAAA,CAAA;AAGA,IAAA,OAAA;AAAA,MACA,KAAA,KAAA,CAAA,GAAA;AAAA,MACA,OAAA,KAAA,CAAA,KAAA;AAAA,MACA,WAAA,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAA,MAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA,IAAA,GAAA,EAAA,GAAA,EAAA;AAAA,MACA,UAAA,EAAA,KAAA,CAAA,SAAA,CAAA,WAAA,EAAA;AAAA,MACA,UAAA,EAAA,KAAA,CAAA,SAAA,CAAA,WAAA,EAAA;AAAA,MACA,aAAA,KAAA,CAAA,WAAA;AAAA,MACA,UAAA,KAAA,CAAA,QAAA;AAAA,MACA,YAAA,KAAA,CAAA,SAAA;AAAA,MACA,qBAAA,KAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,CAAA,KAAA,EAAA,SAAA;AAAA,KACA;AAAA,EACA,SAAA,GAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,OAAA,EAAA,GAAA,YAAA,KAAA,GAAA,GAAA,CAAA,OAAA,GAAA;AAAA,KACA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"index.post2.mjs","sources":["../../../../../server/api/issues/index.post.ts"],"names":["issuesService.create"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,mBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;;AACA,EAAA,MAAA,IAAA,GAAA,MAAA,QAAA,CAAA,KAAA,CAAA;AAEA,EAAA,KAAA,CAAA,OAAA,kBAAA,EAAA;AAAA,IACA,OAAA,IAAA,CAAA,KAAA;AAAA,IACA,QAAA,IAAA,CAAA,MAAA;AAAA,IACA,UAAA,IAAA,CAAA;AAAA,GACA,CAAA;AAEA,EAAA,IAAA,CAAA,KAAA,KAAA,EAAA;AACA,IAAA,KAAA,CAAA,KAAA,EAAA,gCAAA,EAAA,EAAA,QAAA,EAAA,OAAA,CAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,OAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,IAAA;AAEA,IAAA,MAAA,IAAA,GAAA,SAAA,CAAA,KAAA,EAAA,eAAA,CAAA,IAAA,IAAA;AAEA,IAAA,MAAA,KAAA,GAAA,MAAAA,MAAA,CAAA;AAAA,MACA,OAAA,IAAA,CAAA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,GAAA,KAAA,WAAA,GAAA,EAAA,aAAA,IAAA,CAAA,WAAA,KAAA,EAAA;AAAA,MACA,GAAA,KAAA,QAAA,GAAA,EAAA,UAAA,IAAA,CAAA,QAAA,KAAA,EAAA;AAAA,MACA,GAAA,KAAA,MAAA,GAAA,EAAA,WAAA,IAAA,CAAA,MAAA,KAAA,EAAA;AAAA,MACA,GAAA,KAAA,kBAAA,GAAA,EAAA,oBAAA,IAAA,CAAA,kBAAA,KAAA;AAAA,KACA,CAAA;AAGA,IAAA,iBAAA,CAAA,KAAA,CAAA,KAAA,SAAA,CAAA;AAGA,IAAA,OAAA;AAAA,MACA,KAAA,KAAA,CAAA,GAAA;AAAA,MACA,OAAA,KAAA,CAAA,KAAA;AAAA,MACA,WAAA,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,KAAA,CAAA,MAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,SAAA,IAAA,GAAA,EAAA,GAAA,EAAA;AAAA,MACA,UAAA,EAAA,KAAA,CAAA,SAAA,CAAA,WAAA,EAAA;AAAA,MACA,UAAA,EAAA,KAAA,CAAA,SAAA,CAAA,WAAA,EAAA;AAAA,MACA,aAAA,KAAA,CAAA,WAAA;AAAA,MACA,UAAA,KAAA,CAAA,QAAA;AAAA,MACA,YAAA,KAAA,CAAA,SAAA;AAAA,MACA,qBAAA,KAAA,CAAA,kBAAA,CAAA,GAAA,CAAA,CAAA,CAAA,KAAA,EAAA,SAAA;AAAA,KACA;AAAA,EACA,SAAA,GAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,OAAA,EAAA,GAAA,YAAA,KAAA,GAAA,GAAA,CAAA,OAAA,GAAA;AAAA,KACA,CAAA;AAAA,EACA;AACA,CAAA,CAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, r as readBody, c as createError, W as create } from '../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, r as readBody, c as createError, X as create } from '../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, b as getRouterParam, r as readBody, c as createError, R as getLatestVersion, S as activate } from '../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, b as getRouterParam, r as readBody, c as createError, S as getLatestVersion, T as activate } from '../../../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, b as getRouterParam, c as createError, S as activate } from '../../../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, b as getRouterParam, c as createError, T as activate } from '../../../../../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, b as getRouterParam, c as createError, U as finalizeDraft } from '../../../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, b as getRouterParam, c as createError, V as finalizeDraft } from '../../../../../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, b as getRouterParam, c as createError, N as remove } from '../../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, b as getRouterParam, c as createError, O as remove } from '../../../../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, b as getRouterParam, c as createError, O as findByNameAndVersion } from '../../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, b as getRouterParam, c as createError, P as findByNameAndVersion } from '../../../../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, b as getRouterParam, r as readBody, c as createError, Q as updateDraft } from '../../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, b as getRouterParam, r as readBody, c as createError, R as updateDraft } from '../../../../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, b as getRouterParam, c as createError, T as listVersions } from '../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, b as getRouterParam, c as createError, U as listVersions } from '../../../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, b as getRouterParam, c as createError, P as createDraft } from '../../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, b as getRouterParam, c as createError, Q as createDraft } from '../../../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, b as getRouterParam, c as createError, M as findDraft, N as remove } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, b as getRouterParam, c as createError, N as findDraft, O as remove } from '../../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, b as getRouterParam, g as getQuery, c as createError, O as findByNameAndVersion } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, b as getRouterParam, g as getQuery, c as createError, P as findByNameAndVersion } from '../../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, b as getRouterParam, r as readBody, c as createError, M as findDraft, P as createDraft, Q as updateDraft } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, b as getRouterParam, r as readBody, c as createError, N as findDraft, Q as createDraft, R as updateDraft } from '../../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, u as useRuntimeConfig, X as initStats, Y as getStats, Z as isInitialized } from '../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, u as useRuntimeConfig, Y as initStats, Z as getStats, _ as isInitialized } from '../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, g as getQuery, _ as generateMonitoringReport, $ as getHealthStatus } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, g as getQuery, $ as generateMonitoringReport, a0 as getHealthStatus } from '../../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,4 +1,4 @@
1
- import { d as defineEventHandler, a0 as useWebSocketServer } from '../../../nitro/nitro.mjs';
1
+ import { d as defineEventHandler, a1 as useWebSocketServer } from '../../../nitro/nitro.mjs';
2
2
  import 'node:http';
3
3
  import 'node:https';
4
4
  import 'node:crypto';
@@ -1,5 +1,5 @@
1
1
  import { createRenderer, getRequestDependencies, getPreloadLinks, getPrefetchLinks } from 'vue-bundle-renderer/runtime';
2
- import { a5 as buildAssetsURL, a6 as appRootTag, a7 as appRootAttrs, a8 as appSpaLoaderTag, a9 as appSpaLoaderAttrs, u as useRuntimeConfig, aa as getResponseStatusText, ab as getResponseStatus, ac as appId, ad as defineRenderHandler, ae as publicAssetsURL, af as appTeleportTag, ag as appTeleportAttrs, g as getQuery, c as createError, ah as appHead, ai as destr, aj as getRouteRules, ak as useNitroApp } from '../nitro/nitro.mjs';
2
+ import { a6 as buildAssetsURL, a7 as appRootTag, a8 as appRootAttrs, a9 as appSpaLoaderTag, aa as appSpaLoaderAttrs, u as useRuntimeConfig, ab as getResponseStatusText, ac as getResponseStatus, ad as appId, ae as defineRenderHandler, af as publicAssetsURL, ag as appTeleportTag, ah as appTeleportAttrs, g as getQuery, c as createError, ai as appHead, aj as destr, ak as getRouteRules, al as useNitroApp } from '../nitro/nitro.mjs';
3
3
  import { renderToString } from 'vue/server-renderer';
4
4
  import { createHead as createHead$1, propsToString, renderSSRHead } from 'unhead/server';
5
5
  import { stringify, uneval } from 'devalue';
@@ -117,6 +117,7 @@ exports.Prisma.IssueScalarFieldEnum = {
117
117
  priority: 'priority',
118
118
  semver: 'semver',
119
119
  labels: 'labels',
120
+ lang: 'lang',
120
121
  columnId: 'columnId',
121
122
  parentKey: 'parentKey',
122
123
  createdAt: 'createdAt',
@@ -206,10 +207,10 @@ const config = {
206
207
  "clientVersion": "7.2.0",
207
208
  "engineVersion": "0c8ef2ce45c83248ab3df073180d5eda9e8be7a3",
208
209
  "activeProvider": "sqlite",
209
- "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 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"
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"
210
211
  }
211
212
 
212
- 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\":\"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\":{}}")
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\":{}}")
213
214
  defineDmmfProperty(exports.Prisma, config.runtimeDataModel)
214
215
  config.compilerWasm = {
215
216
  getRuntime: async () => require('./query_compiler_bg.js'),
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "prisma-client-956ad81abe6338897dd1c237b5bfc9af457f5f0d4be93103549ea0efe49edf9f",
2
+ "name": "prisma-client-a881422e644bdf8aa68121def46e39ba314daad9e0c9cf905f7eecebe527c349",
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.24.2",
3
+ "version": "0.26.0",
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "dependencies": {
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@autocode-cli/autocode",
3
- "version": "0.24.2",
3
+ "version": "0.26.0",
4
4
  "description": "AutoCode Dashboard - Issue tracking with web interface",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "autocode": "bin/autocode"
8
8
  },
9
9
  "scripts": {
10
- "kill-ports": "lsof -ti:3000,24678 | xargs -r kill -9 2>/dev/null || true",
10
+ "kill-ports": "lsof -ti:3000,24678,49152 | xargs -r kill -9 2>/dev/null || true",
11
11
  "clean": "rm -rf .nuxt .output",
12
12
  "build": "nuxt build",
13
- "dev": "npm run kill-ports && npm run clean && nuxt dev",
13
+ "dev": "npm run kill-ports && npm run clean && (prisma studio --port 49152 &) && nuxt dev",
14
14
  "generate": "nuxt generate",
15
15
  "preview": "nuxt preview",
16
16
  "serve": "node .output/server/index.mjs",
@@ -31,7 +31,8 @@ Analyze the work done and decide the next action:
31
31
  ## Decision criteria
32
32
 
33
33
  ### NEXT - Move forward
34
- - Comment indicates work is complete
34
+ - Comment indicates work is complete (OK, passed, completed, successful)
35
+ - Comment contains "SKIP" indicating the column is not applicable for this feature
35
36
  - No blocking errors mentioned
36
37
  - Column objectives appear to be met
37
38
 
@@ -7,7 +7,13 @@ Tu es le **decideur de transition** d'AutoCode. Apres que Claude ait termine son
7
7
  - **Issue** : {key}
8
8
  - **Titre** : {title}
9
9
  - **Colonne actuelle** : {currentColumn}
10
- - **Colonnes disponibles** : {columnsList}
10
+ - **Colonne suivante** : {nextColumn}
11
+
12
+ ## Pipeline du projet (colonnes dans l'ordre)
13
+
14
+ ```
15
+ {columnsList}
16
+ ```
11
17
 
12
18
  ## Historique recent
13
19
 
@@ -21,17 +27,18 @@ Tu es le **decideur de transition** d'AutoCode. Apres que Claude ait termine son
21
27
 
22
28
  Analyse le travail effectue et decide de la prochaine action parmi :
23
29
 
24
- | Action | Quand l'utiliser |
25
- |--------|------------------|
26
- | `NEXT` | Travail termine avec succes, passer a la colonne suivante |
27
- | `RETRY` | Travail incomplet ou erreur recuperable, reessayer la meme colonne |
28
- | `BLOCKED` | Probleme bloquant detecte, intervention humaine necessaire |
29
- | `MOVE <column>` | Aller vers une colonne specifique (ex: retour en qualification) |
30
+ | Action | Description |
31
+ |--------|-------------|
32
+ | `NEXT` | Execute `autocode next` passe automatiquement a **{nextColumn}** |
33
+ | `RETRY` | Reessayer la meme colonne ({currentColumn}) |
34
+ | `BLOCKED` | Intervention humaine necessaire |
35
+ | `MOVE <slug>` | Aller vers une colonne specifique (utilise le slug exact du pipeline ci-dessus) |
30
36
 
31
37
  ## Criteres de decision
32
38
 
33
39
  ### NEXT - Passer a la suite
34
- - Le commentaire indique que le travail est termine
40
+ - Le commentaire indique que le travail est termine (OK, termine, complete, reussi)
41
+ - Le commentaire contient "SKIP" indiquant que la colonne n'est pas applicable
35
42
  - Pas d'erreur bloquante mentionnee
36
43
  - Les objectifs de la colonne semblent atteints
37
44
 
@@ -46,10 +53,9 @@ Analyse le travail effectue et decide de la prochaine action parmi :
46
53
  - Conflit ou ambiguite dans les requirements
47
54
  - Tests echoues de maniere repetee
48
55
 
49
- ### MOVE <column> - Rediriger
50
- - `MOVE 01_qualification` : informations manquantes dans le ticket
51
- - `MOVE 02_splitter` : ticket trop complexe, besoin de decoupage
52
- - Autre colonne selon le contexte
56
+ ### MOVE <slug> - Rediriger
57
+ - Utilise le **slug exact** d'une colonne du pipeline ci-dessus
58
+ - Cas typiques : retour en qualification, splitter, ou autre colonne selon le contexte
53
59
 
54
60
  ## Format de reponse
55
61
 
@@ -59,11 +65,5 @@ Reponds UNIQUEMENT avec une ligne au format :
59
65
  ACTION [raison courte]
60
66
  ```
61
67
 
62
- Exemples :
63
- - `NEXT [Qualification terminee avec succes]`
64
- - `RETRY [Erreur de build, correction necessaire]`
65
- - `BLOCKED [Tests echouent, cause inconnue]`
66
- - `MOVE 01_qualification [Criteres d'acceptation manquants]`
67
-
68
68
  ## Reponse
69
69
 
@@ -4,6 +4,21 @@
4
4
 
5
5
  Re-run all automated E2E tests to ensure refactoring did not introduce regressions.
6
6
 
7
+ ## Pre-verification (MANDATORY)
8
+
9
+ Before running tests, check if Cypress is applicable:
10
+
11
+ 1. **Sandbox feature**: If the feature is in `fake-features/`, it's isolated from the main app
12
+ - Comment: `autocode comment {key} "Retest Cypress: SKIP - Sandbox feature isolated in fake-features/, no Cypress tests required"`
13
+ - **STOP** - Do not run Cypress tests
14
+
15
+ 2. **No specific tests**: Check if Cypress tests exist for this feature
16
+ - Look in `cypress/e2e/` for files related to the feature
17
+ - If no tests found: `autocode comment {key} "Retest Cypress: SKIP - No Cypress tests specific to this feature"`
18
+ - **STOP** - Do not run the full suite
19
+
20
+ If the feature IS in the main app AND has Cypress tests, continue with the actions below.
21
+
7
22
  ## Actions
8
23
 
9
24
  1. Run full Cypress test suite: npx cypress run
@@ -4,6 +4,21 @@
4
4
 
5
5
  Re-executer tous les tests E2E automatises pour s'assurer que le refactoring n'a pas introduit de regressions.
6
6
 
7
+ ## Pre-verification (OBLIGATOIRE)
8
+
9
+ Avant d'executer les tests, verifier si Cypress est applicable:
10
+
11
+ 1. **Feature sandbox** : Si la feature est dans `fake-features/`, elle est isolee du main app
12
+ - Commenter: `autocode comment {key} "Retest Cypress: SKIP - Feature sandbox isolee dans fake-features/, pas de tests Cypress requis"`
13
+ - **TERMINER** - Ne pas executer de tests Cypress
14
+
15
+ 2. **Pas de tests specifiques** : Verifier si des tests Cypress existent pour cette feature
16
+ - Chercher dans `cypress/e2e/` des fichiers lies a la feature
17
+ - Si aucun test trouve: `autocode comment {key} "Retest Cypress: SKIP - Aucun test Cypress specifique pour cette feature"`
18
+ - **TERMINER** - Ne pas executer la suite complete
19
+
20
+ Si la feature EST dans le main app ET a des tests Cypress, continuer avec les actions ci-dessous.
21
+
7
22
  ## Actions
8
23
 
9
24
  1. Executer la suite complete de tests Cypress : npx cypress run
@@ -4,6 +4,21 @@
4
4
 
5
5
  Write AND execute E2E automated tests to prevent regressions.
6
6
 
7
+ ## Pre-verification (MANDATORY)
8
+
9
+ Before writing tests, check if Cypress is applicable:
10
+
11
+ 1. **Sandbox feature**: If the feature is in `fake-features/`, it's isolated from the main app
12
+ - Sandbox features use Playwright, NOT Cypress
13
+ - Comment: `autocode comment {key} "Testing Cypress: SKIP - Sandbox feature in fake-features/, uses Playwright instead"`
14
+ - **STOP** - Do not write Cypress tests
15
+
16
+ 2. **Feature without UI integration**: If the feature has no user interface in the main app
17
+ - Comment: `autocode comment {key} "Testing Cypress: SKIP - No UI integration in main app"`
18
+ - **STOP** - Do not write Cypress tests
19
+
20
+ If the feature IS in the main app AND requires E2E tests, continue with the actions below.
21
+
7
22
  ## Actions
8
23
 
9
24
  1. Analyze feature to test
@@ -4,6 +4,21 @@
4
4
 
5
5
  Rediger ET executer des tests E2E automatises pour prevenir les regressions.
6
6
 
7
+ ## Pre-verification (OBLIGATOIRE)
8
+
9
+ Avant d'ecrire des tests, verifier si Cypress est applicable:
10
+
11
+ 1. **Feature sandbox** : Si la feature est dans `fake-features/`, elle est isolee du main app
12
+ - Les features sandbox utilisent Playwright, PAS Cypress
13
+ - Commenter: `autocode comment {key} "Testing Cypress: SKIP - Feature sandbox dans fake-features/, utilise Playwright a la place"`
14
+ - **TERMINER** - Ne pas ecrire de tests Cypress
15
+
16
+ 2. **Feature sans integration UI** : Si la feature n'a pas d'interface utilisateur dans l'app principale
17
+ - Commenter: `autocode comment {key} "Testing Cypress: SKIP - Pas d'integration UI dans l'app principale"`
18
+ - **TERMINER** - Ne pas ecrire de tests Cypress
19
+
20
+ Si la feature EST dans le main app ET necessite des tests E2E, continuer avec les actions ci-dessous.
21
+
7
22
  ## Actions
8
23
 
9
24
  1. Analyser la feature a tester
@@ -1 +0,0 @@
1
- {"id":"fda5642b-b71a-476c-9e0f-eb15a462e2fe","timestamp":1767720235481,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":["/"]}