@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.
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{CxCUB-jw.js → B5lFKq3G.js} +1 -1
- package/.output/public/_nuxt/{BB7mNyvB.js → BBMcfTGy.js} +1 -1
- package/.output/public/_nuxt/{vfCqvZ7p.js → BcawioR3.js} +1 -1
- package/.output/public/_nuxt/{DPY45j3g.js → Br7Y24-t.js} +1 -1
- package/.output/public/_nuxt/{BfvaD8zq.js → Btwtsr_u.js} +6 -6
- package/.output/public/_nuxt/{p0o0xQ7S.js → BvE9NWMw.js} +1 -1
- package/.output/public/_nuxt/{aL-hwrDv.js → C4itadaD.js} +1 -1
- package/.output/public/_nuxt/{C2zPiS0N.js → C4ybMJ7Z.js} +1 -1
- package/.output/public/_nuxt/{DerTgqhZ.js → C7Lp5NPF.js} +1 -1
- package/.output/public/_nuxt/{D3gHSFO1.js → CMcAFpoK.js} +1 -1
- package/.output/public/_nuxt/{C5qkUISE.js → CWZ6WSwr.js} +1 -1
- package/.output/public/_nuxt/{C9Z_Mjdv.js → CYH4f4uY.js} +1 -1
- package/.output/public/_nuxt/{BhrZFGnk.js → CuwYCM4v.js} +1 -1
- package/.output/public/_nuxt/{CG6fFX4R.js → CvcfIZU-.js} +1 -1
- package/.output/public/_nuxt/{DZQLsTee.js → CvmJj3tc.js} +1 -1
- package/.output/public/_nuxt/{aMXqd-8n.js → D-DgzaOC.js} +1 -1
- package/.output/public/_nuxt/{D44BzzMg.js → D2qvqRWP.js} +1 -1
- package/.output/public/_nuxt/{DrnWNKxr.js → D5ZS_G-Z.js} +1 -1
- package/.output/public/_nuxt/{CP8dHttY.js → D8M2gN6n.js} +1 -1
- package/.output/public/_nuxt/{jYOQFUDH.js → D90sdSc5.js} +1 -1
- package/.output/public/_nuxt/{Bz9WwRWr.js → DGmZExaA.js} +1 -1
- package/.output/public/_nuxt/{BbEo0CFB.js → DJIybA4c.js} +1 -1
- package/.output/public/_nuxt/{CQWl6TIZ.js → DXwIM0gJ.js} +1 -1
- package/.output/public/_nuxt/{CeVGNobe.js → DhNKaVRN.js} +1 -1
- package/.output/public/_nuxt/{Cu-0JJ8B.js → DkN85EyM.js} +1 -1
- package/.output/public/_nuxt/{BMvB5hkX.js → DmYbhlFa.js} +1 -1
- package/.output/public/_nuxt/{BcQFK3DA.js → DnOmfKyh.js} +1 -1
- package/.output/public/_nuxt/{BarhsfnG.js → DuqIS0qR.js} +1 -1
- package/.output/public/_nuxt/{DABo4_10.js → I-u8LDqX.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/234711bd-452d-42ba-9430-4d79ebc81813.json +1 -0
- package/.output/public/_nuxt/{Bu1-IDNY.js → nnCcRJrE.js} +1 -1
- package/.output/public/_nuxt/{8PJti6tf.js → oH1B3N8m.js} +1 -1
- package/.output/public/_payload.json +1 -1
- package/.output/public/index.html +1 -1
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/nuxt-link-Cq8xZgFP.mjs +1 -1
- package/.output/server/chunks/build/server.mjs +3 -3
- package/.output/server/chunks/build/styles.mjs +15 -15
- package/.output/server/chunks/nitro/nitro.mjs +244 -231
- package/.output/server/chunks/routes/_ws.mjs +1 -1
- package/.output/server/chunks/routes/api/index.get4.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post2.mjs +3 -1
- package/.output/server/chunks/routes/api/index.post2.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.post3.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name/activate.put.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name/versions/_version/activate.put.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name/versions/_version/finalize.post.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name/versions/_version_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name/versions/_version_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name/versions/_version_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name/versions.get.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name/versions.post.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/stats.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workflow/health.get.mjs +1 -1
- package/.output/server/chunks/routes/api/ws/status.get.mjs +1 -1
- package/.output/server/chunks/routes/renderer.mjs +1 -1
- package/.output/server/node_modules/.prisma/client/index.js +3 -2
- package/.output/server/node_modules/.prisma/client/package.json +1 -1
- package/.output/server/package.json +1 -1
- package/package.json +3 -3
- package/templates/prompts/_transition-decision.en.md +2 -1
- package/templates/prompts/_transition-decision.fr.md +18 -18
- package/templates/prompts/retest-cypress.en.md +15 -0
- package/templates/prompts/retest-cypress.fr.md +15 -0
- package/templates/prompts/testing-cypress.en.md +15 -0
- package/templates/prompts/testing-cypress.fr.md +15 -0
- package/.output/public/_nuxt/builds/meta/fda5642b-b71a-476c-9e0f-eb15a462e2fe.json +0 -1
- /package/.output/public/_i18n/{fC3ee0mv → JmX-ZbAb}/en/messages.json +0 -0
- /package/.output/public/_i18n/{fC3ee0mv → JmX-ZbAb}/fr/messages.json +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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, 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;
|
|
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,
|
|
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,
|
|
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,
|
|
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';
|
package/.output/server/chunks/routes/api/pipelines/_name/versions/_version/finalize.post.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as defineEventHandler, b as getRouterParam, c as createError,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,5 +1,5 @@
|
|
|
1
1
|
import { createRenderer, getRequestDependencies, getPreloadLinks, getPrefetchLinks } from 'vue-bundle-renderer/runtime';
|
|
2
|
-
import {
|
|
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'),
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@autocode-cli/autocode",
|
|
3
|
-
"version": "0.
|
|
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
|
-
- **
|
|
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 |
|
|
25
|
-
|
|
26
|
-
| `NEXT` |
|
|
27
|
-
| `RETRY` |
|
|
28
|
-
| `BLOCKED` |
|
|
29
|
-
| `MOVE <
|
|
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 <
|
|
50
|
-
-
|
|
51
|
-
-
|
|
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":["/"]}
|
|
File without changes
|
|
File without changes
|