@autocode-cli/autocode 0.29.0 → 0.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.output/nitro.json +1 -1
- package/.output/public/_i18n/Ld0h1Adq/en/messages.json +1 -0
- package/.output/public/_i18n/Ld0h1Adq/fr/messages.json +1 -0
- package/.output/public/_nuxt/00BWY9Ij.js +10 -0
- package/.output/public/_nuxt/{Dmbsi9xE.js → 48RFRq_I.js} +1 -1
- package/.output/public/_nuxt/{CUrMRCov.js → 6gOFoOBv.js} +1 -1
- package/.output/public/_nuxt/7sR_btEk.js +1 -0
- package/.output/public/_nuxt/{C9F9DISc.js → Amqf1SBE.js} +1 -1
- package/.output/public/_nuxt/{QO28866g.js → B0yQK1au.js} +1 -1
- package/.output/public/_nuxt/{B-SoSAQ-.js → B3JaNZxX.js} +1 -1
- package/.output/public/_nuxt/{YFXx8Qjo.js → BAAiS_qy.js} +1 -1
- package/.output/public/_nuxt/{CL8Pd5Up.js → BAOdxXv4.js} +1 -1
- package/.output/public/_nuxt/BGJFtQgK.js +1 -0
- package/.output/public/_nuxt/BMQOAvhP.js +1 -0
- package/.output/public/_nuxt/{Dnk-IiYT.js → BPxDXB13.js} +1 -1
- package/.output/public/_nuxt/{Camk5F-_.js → BQMX0Vtg.js} +1 -1
- package/.output/public/_nuxt/{DEbgyyF-.js → BQPgjGfs.js} +1 -1
- package/.output/public/_nuxt/{MqYwBbea.js → BRNVrR0Q.js} +1 -1
- package/.output/public/_nuxt/{CftWxl87.js → BRR7H4VZ.js} +1 -1
- package/.output/public/_nuxt/{C2MG9-_i.js → BStRXLlp.js} +1 -1
- package/.output/public/_nuxt/{CGH8jYZ3.js → BTUypKON.js} +1 -1
- package/.output/public/_nuxt/{a0ULJgSn.js → BZ5eH4oZ.js} +1 -1
- package/.output/public/_nuxt/{C_XYgaP4.js → BcjH67ba.js} +1 -1
- package/.output/public/_nuxt/{C1majTdt.js → BrtBSWOq.js} +1 -1
- package/.output/public/_nuxt/{BKohRmb3.js → C0Gbbife.js} +1 -1
- package/.output/public/_nuxt/{DfzafmDP.js → C9P-GWig.js} +1 -1
- package/.output/public/_nuxt/{BiTHsA5D.js → C9Q_XE2y.js} +1 -1
- package/.output/public/_nuxt/{E037g09h.js → CCEPkO9Q.js} +1 -1
- package/.output/public/_nuxt/{5c4wy8Fe.js → CFJDHFu0.js} +1 -1
- package/.output/public/_nuxt/{Qp3vP2w-.js → CFQXrjRh.js} +1 -1
- package/.output/public/_nuxt/{ttDeS43_.js → CGNl3nJG.js} +1 -1
- package/.output/public/_nuxt/{BG7brVhY.js → CKjR6Oik.js} +1 -1
- package/.output/public/_nuxt/{DJ68wI4q.js → CTLXeCVr.js} +1 -1
- package/.output/public/_nuxt/{C8ykELcI.js → CXfoqgHV.js} +1 -1
- package/.output/public/_nuxt/{c9kaG6Mb.js → CZAptABr.js} +1 -1
- package/.output/public/_nuxt/{c7taDBy4.js → CaT6Gmvd.js} +1 -1
- package/.output/public/_nuxt/{2aYBL_7i.js → CeKi_uUO.js} +1 -1
- package/.output/public/_nuxt/CercIbuG.js +1 -0
- package/.output/public/_nuxt/{D2yqkPsk.js → CgTGeNUg.js} +1 -1
- package/.output/public/_nuxt/{ZxHW_Wwi.js → ChtvGXKc.js} +1 -1
- package/.output/public/_nuxt/{Cw9GjiQd.js → CkQJAsUV.js} +1 -1
- package/.output/public/_nuxt/{DS8c6APr.js → CnBvzpvA.js} +1 -1
- package/.output/public/_nuxt/{BvR2cHrU.js → Co4zaoac.js} +1 -1
- package/.output/public/_nuxt/CouFgKW5.js +1 -0
- package/.output/public/_nuxt/{DBRrdiDg.js → CpoLuEmz.js} +1 -1
- package/.output/public/_nuxt/{BhOptLaB.js → Cpxhv8Qg.js} +1 -1
- package/.output/public/_nuxt/{eAMnPBdX.js → D45sR6CZ.js} +1 -1
- package/.output/public/_nuxt/{DV1gbxJr.js → DAGJ7zg9.js} +1 -1
- package/.output/public/_nuxt/{DUT6s2Vc.js → DAlNcmKB.js} +1 -1
- package/.output/public/_nuxt/{DMLkLSSr.js → DDNH3Fq2.js} +1 -1
- package/.output/public/_nuxt/{WXFPFJGI.js → DQwsIvTZ.js} +1 -1
- package/.output/public/_nuxt/{s3F7y6k3.js → DRMwpGCv.js} +1 -1
- package/.output/public/_nuxt/{CDsqJjO8.js → DYqWq1Vn.js} +1 -1
- package/.output/public/_nuxt/Dfr112Jw.js +1 -0
- package/.output/public/_nuxt/{CMirklGN.js → DkJTip7e.js} +1 -1
- package/.output/public/_nuxt/{DwEf6snv.js → Dob4oaN0.js} +1 -1
- package/.output/public/_nuxt/{CuMOMF74.js → DpYdB9MN.js} +1 -1
- package/.output/public/_nuxt/{D0l9HWst.js → DxNPZ1bU.js} +1 -1
- package/.output/public/_nuxt/{BWuiHx6Z.js → I5zwxUB4.js} +1 -1
- package/.output/public/_nuxt/{CtihvsfH.js → NIeoUmDE.js} +1 -1
- package/.output/public/_nuxt/{tqfMB__6.js → NVsyChWu.js} +1 -1
- package/.output/public/_nuxt/SK7I1OsC.js +1 -0
- package/.output/public/_nuxt/{BsOUGgHX.js → Wm7exVxY.js} +1 -1
- package/.output/public/_nuxt/{CvtJgrAC.js → _hRtkQ2r.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/eddd3f97-dfcd-4aa3-a8e7-9f432f427e6d.json +1 -0
- package/.output/public/_nuxt/cIYz9vRR.js +1 -0
- package/.output/public/_nuxt/cli.D68WAxVv.css +1 -0
- package/.output/public/_nuxt/{W7VQVcj3.js → ge5HoFHn.js} +3 -3
- package/.output/public/_nuxt/{index.Dndk3KN9.css → index.B-MCQhP8.css} +1 -1
- package/.output/public/_nuxt/index.CPvzWVwd.css +1 -0
- package/.output/public/_nuxt/{Bb4iE1RK.js → ivFMXWZI.js} +1 -1
- package/.output/public/_nuxt/kdqZYFE6.js +1 -0
- package/.output/public/_nuxt/{mhFvEihp.js → nSLZfjDc.js} +3 -3
- package/.output/public/_nuxt/new.84MgEEsd.css +1 -0
- package/.output/public/_nuxt/prompt.CNw9EZnJ.css +1 -0
- package/.output/public/_nuxt/{BrN48gj6.js → t7k_e5FQ.js} +1 -1
- package/.output/public/_nuxt/{CFO65yNa.js → uL1fX62J.js} +1 -1
- package/.output/public/_payload.json +1 -1
- package/.output/public/api/_openapi.json +1 -1
- package/.output/public/docs/api/_payload.json +1 -1
- package/.output/public/docs/api/index.html +8 -4
- package/.output/public/docs/cli/_payload.json +1 -1
- package/.output/public/docs/cli/index.html +13 -13
- package/.output/public/index.html +1 -1
- package/.output/server/chunks/_/en.mjs +5 -1
- package/.output/server/chunks/_/en.mjs.map +1 -1
- package/.output/server/chunks/_/fr.mjs +5 -1
- package/.output/server/chunks/_/fr.mjs.map +1 -1
- package/.output/server/chunks/build/LandingFooter-styles.CudcJSR4.mjs +8 -0
- package/.output/server/chunks/build/LandingFooter-styles.CudcJSR4.mjs.map +1 -0
- package/.output/server/chunks/build/{cli-CZwbcgW5.mjs → cli-S2geGQoF.mjs} +27 -14
- package/.output/server/chunks/build/cli-S2geGQoF.mjs.map +1 -0
- package/.output/server/chunks/build/cli-styles.BonhH80m.mjs +8 -0
- package/.output/server/chunks/build/cli-styles.BonhH80m.mjs.map +1 -0
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/{en-BwRtQJL1.mjs → en-BhagfGAQ.mjs} +6 -2
- package/.output/server/chunks/build/{en-BwRtQJL1.mjs.map → en-BhagfGAQ.mjs.map} +1 -1
- package/.output/server/chunks/build/{fr-BAbxj8tA.mjs → fr-12bubW4G.mjs} +6 -2
- package/.output/server/chunks/build/{fr-BAbxj8tA.mjs.map → fr-12bubW4G.mjs.map} +1 -1
- package/.output/server/chunks/build/{index-CKZ58Ox2.mjs → index-BZJzUQ3B.mjs} +27 -17
- package/.output/server/chunks/build/index-BZJzUQ3B.mjs.map +1 -0
- package/.output/server/chunks/build/index-styles.BP9liX_F.mjs +8 -0
- package/.output/server/chunks/build/index-styles.BP9liX_F.mjs.map +1 -0
- package/.output/server/chunks/build/{index-3KvoAMZW.mjs → index-tBZcd_Xi.mjs} +78 -182
- package/.output/server/chunks/build/index-tBZcd_Xi.mjs.map +1 -0
- package/.output/server/chunks/build/{new-BI12IpeK.mjs → new-BqYiaSD7.mjs} +19 -19
- package/.output/server/chunks/build/{new-BI12IpeK.mjs.map → new-BqYiaSD7.mjs.map} +1 -1
- package/.output/server/chunks/build/new-styles.BPjkN6Iy.mjs +8 -0
- package/.output/server/chunks/build/new-styles.BPjkN6Iy.mjs.map +1 -0
- package/.output/server/chunks/build/{prompt-BjvwrM-J.mjs → prompt-D-xu1MtO.mjs} +41 -12
- package/.output/server/chunks/build/prompt-D-xu1MtO.mjs.map +1 -0
- package/.output/server/chunks/build/prompt-styles.Dvlc6Xra.mjs +8 -0
- package/.output/server/chunks/build/prompt-styles.Dvlc6Xra.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +9 -9
- package/.output/server/chunks/build/styles.mjs +19 -25
- package/.output/server/chunks/nitro/nitro.mjs +543 -513
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
- package/.output/server/chunks/routes/.well-known/appspecific/_...path_.mjs +34 -0
- package/.output/server/chunks/routes/.well-known/appspecific/_...path_.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id/history.get.mjs +3 -2
- package/.output/server/chunks/routes/api/issues/_id/history.get.mjs.map +1 -1
- package/.output/server/node_modules/.prisma/client/index.js +4 -3
- package/.output/server/node_modules/.prisma/client/package.json +1 -1
- package/.output/server/package.json +1 -1
- package/bin/autocode +176 -4
- package/package.json +5 -6
- package/prisma/migrations/20260104173538_init/migration.sql +142 -0
- package/prisma/migrations/20260104180000_pipeline_versioning/migration.sql +216 -0
- package/prisma/migrations/20260104190638_add_column_prompts/migration.sql +50 -0
- package/prisma/migrations/20260105120000_remove_column_prompts/migration.sql +3 -0
- package/prisma/migrations/20260105150000_normalize_pipeline_names/migration.sql +37 -0
- package/prisma/migrations/20260105170000_remove_slug_prefixes/migration.sql +16 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/schema.prisma +185 -0
- package/templates/prompts/_transition-decision.en.md +41 -25
- package/templates/prompts/_transition-decision.fr.md +28 -11
- package/templates/prompts/design.en.md +31 -9
- package/templates/prompts/design.fr.md +31 -9
- package/templates/prompts/git-tag.en.md +47 -11
- package/templates/prompts/git-tag.fr.md +47 -11
- package/templates/prompts/in-progress.en.md +43 -9
- package/templates/prompts/in-progress.fr.md +44 -10
- package/templates/prompts/qualification.en.md +48 -17
- package/templates/prompts/qualification.fr.md +48 -17
- package/templates/prompts/retest-cypress.en.md +14 -3
- package/templates/prompts/retest-cypress.fr.md +14 -3
- package/templates/prompts/review-security.en.md +35 -6
- package/templates/prompts/review-security.fr.md +35 -6
- package/templates/prompts/specification.en.md +29 -7
- package/templates/prompts/specification.fr.md +29 -7
- package/templates/prompts/splitter.en.md +50 -28
- package/templates/prompts/splitter.fr.md +52 -31
- package/templates/prompts/testing-cypress.en.md +14 -4
- package/templates/prompts/testing-cypress.fr.md +14 -4
- package/templates/prompts/testing-integration.en.md +39 -3
- package/templates/prompts/testing-integration.fr.md +39 -3
- package/.output/public/_i18n/_RCBbyrF/en/messages.json +0 -1
- package/.output/public/_i18n/_RCBbyrF/fr/messages.json +0 -1
- package/.output/public/_nuxt/B-QzFHDD.js +0 -1
- package/.output/public/_nuxt/Bn3kTsBm.js +0 -1
- package/.output/public/_nuxt/C2Vs_J-1.js +0 -1
- package/.output/public/_nuxt/CDVPefsv.js +0 -1
- package/.output/public/_nuxt/CSk34z2H.js +0 -1
- package/.output/public/_nuxt/DPWzdJ4S.js +0 -1
- package/.output/public/_nuxt/DrzMcrms.js +0 -1
- package/.output/public/_nuxt/_bAHEawb.js +0 -1
- package/.output/public/_nuxt/b2LQmhwq.js +0 -1
- package/.output/public/_nuxt/builds/meta/4d6876ea-4c52-49d1-a9d5-07bb0648a85e.json +0 -1
- package/.output/public/_nuxt/cli.e1u7fwy6.css +0 -1
- package/.output/public/_nuxt/hWy-7Z1L.js +0 -10
- package/.output/public/_nuxt/index.COVdL_Kx.css +0 -1
- package/.output/public/_nuxt/new.BFERdqdm.css +0 -1
- package/.output/public/_nuxt/prompt.DZ0wdOji.css +0 -1
- package/.output/server/chunks/build/LandingArchitecture-styles.Don6ug3a.mjs +0 -8
- package/.output/server/chunks/build/LandingArchitecture-styles.Don6ug3a.mjs.map +0 -1
- package/.output/server/chunks/build/LandingDocs-styles.FyNL7DNS.mjs +0 -8
- package/.output/server/chunks/build/LandingDocs-styles.FyNL7DNS.mjs.map +0 -1
- package/.output/server/chunks/build/LandingFooter-styles.sSpn5cgM.mjs +0 -8
- package/.output/server/chunks/build/LandingFooter-styles.sSpn5cgM.mjs.map +0 -1
- package/.output/server/chunks/build/LandingRoadmap-styles.DX5EsTsx.mjs +0 -8
- package/.output/server/chunks/build/LandingRoadmap-styles.DX5EsTsx.mjs.map +0 -1
- package/.output/server/chunks/build/cli-CZwbcgW5.mjs.map +0 -1
- package/.output/server/chunks/build/cli-styles.CSdcLhw8.mjs +0 -8
- package/.output/server/chunks/build/cli-styles.CSdcLhw8.mjs.map +0 -1
- package/.output/server/chunks/build/index-3KvoAMZW.mjs.map +0 -1
- package/.output/server/chunks/build/index-CKZ58Ox2.mjs.map +0 -1
- package/.output/server/chunks/build/index-styles.BJ7kZO7q.mjs +0 -8
- package/.output/server/chunks/build/index-styles.BJ7kZO7q.mjs.map +0 -1
- package/.output/server/chunks/build/new-styles.Chk5u_6M.mjs +0 -8
- package/.output/server/chunks/build/new-styles.Chk5u_6M.mjs.map +0 -1
- package/.output/server/chunks/build/prompt-BjvwrM-J.mjs.map +0 -1
- package/.output/server/chunks/build/prompt-styles.DWfublIG.mjs +0 -8
- package/.output/server/chunks/build/prompt-styles.DWfublIG.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nitro.mjs","sources":["../../../../node_modules/uncrypto/dist/crypto.node.mjs","../../../../node_modules/crossws/dist/shared/crossws.DfCzGthR.mjs","../../../../node_modules/crossws/dist/shared/crossws.D9ehKjSh.mjs","../../../../node_modules/crossws/dist/shared/crossws.By9qWDAI.mjs","../../../../node_modules/crossws/dist/shared/crossws.CipVM6lf.mjs","../../../../node_modules/crossws/dist/adapters/node.mjs","../../../../node_modules/destr/dist/index.mjs","../../../../node_modules/ufo/dist/index.mjs","../../../../node_modules/cookie-es/dist/index.mjs","../../../../node_modules/radix3/dist/index.mjs","../../../../node_modules/defu/dist/defu.mjs","../../../../node_modules/node-mock-http/dist/index.mjs","../../../../node_modules/h3/dist/index.mjs","../../../../node_modules/hookable/dist/index.mjs","../../../../node_modules/node-fetch-native/dist/native.mjs","../../../../node_modules/ofetch/dist/shared/ofetch.CWycOUEr.mjs","../../../../node_modules/ofetch/dist/node.mjs","../../../../node_modules/unstorage/dist/shared/unstorage.zVDD2mZo.mjs","../../../../node_modules/unstorage/dist/index.mjs","../../../../node_modules/unstorage/drivers/utils/index.mjs","../../../../node_modules/unstorage/drivers/memory.mjs","../../../../node_modules/unstorage/drivers/utils/node-fs.mjs","../../../../node_modules/unstorage/drivers/fs-lite.mjs","../../../../node_modules/nitropack/dist/runtime/internal/storage.mjs","../../../../node_modules/ohash/dist/shared/ohash.D__AXeF1.mjs","../../../../node_modules/ohash/dist/crypto/node/index.mjs","../../../../node_modules/ohash/dist/index.mjs","../../../../node_modules/nitropack/dist/runtime/internal/hash.mjs","../../../../node_modules/nitropack/dist/runtime/internal/cache.mjs","../../../../node_modules/klona/dist/index.mjs","../../../../node_modules/scule/dist/index.mjs","../../../../node_modules/nitropack/dist/runtime/internal/utils.env.mjs","../../../../node_modules/nitropack/dist/runtime/internal/config.mjs","../../../../node_modules/unctx/dist/index.mjs","../../../../node_modules/nitropack/dist/runtime/internal/context.mjs","../../../../node_modules/nitropack/dist/runtime/internal/route-rules.mjs","../../../../node_modules/nitropack/dist/runtime/internal/utils.mjs","../../../../node_modules/@nuxt/nitro-server/dist/runtime/utils/error.js","../../../../node_modules/@nuxt/nitro-server/dist/runtime/handlers/error.js","../../../../node_modules/nitropack/dist/runtime/internal/error/utils.mjs","../../../../node_modules/nitropack/dist/runtime/internal/error/prod.mjs","../../../../node_modules/@intlify/shared/dist/shared.mjs","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/messages.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/vue-i18n.js","../../../../node_modules/nitropack/dist/runtime/internal/plugin.mjs","../../../../node_modules/nitropack/dist/runtime/internal/renderer.mjs","../../../../node_modules/@nuxt/nitro-server/dist/runtime/utils/paths.js","../../../../node_modules/@intlify/utils/dist/shared/utils.9f8159f5.mjs","../../../../server/plugins/websocket.ts","../../../../server/utils/stats.ts","../../../../server/utils/logger.ts","../../../../server/utils/claude.ts","../../../../server/utils/columns.ts","../../../../server/utils/config.ts","../../../../server/utils/loop-detector.ts","../../../../server/utils/prisma.ts","../../../../server/services/sequence.service.ts","../../../../server/services/columns.service.ts","../../../../server/services/issues.service.ts","../../../../server/services/history.service.ts","../../../../server/utils/monitoring.ts","../../../../server/utils/slugify.ts","../../../../server/services/comments.service.ts","../../../../server/services/execution-logs.service.ts","../../../../server/utils/synthesis-generator.ts","../../../../server/utils/transition-decider.ts","../../../../server/utils/websocket.ts","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/utils.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/locales.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/server/context.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/kit/browser.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/kit/routing.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/domain.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/detection.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/matching.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/server/plugin.js","../../../../server/services/workflow.service.ts","../../../../server/plugins/auto-process.ts","../../../../shared/constants.ts","../../../../server/services/pipelines.service.ts","../../../../server/config/pipeline-templates.ts","../../../../server/plugins/database.ts","../../../../server/plugins/stats.ts","../../../../node_modules/pathe/dist/shared/pathe.M-eThtNZ.mjs","../../../../node_modules/nitropack/dist/runtime/internal/static.mjs","../../../../server/middleware/error-handler.ts","../../../../node_modules/@nuxtjs/i18n/dist/runtime/server/utils/cache.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/server/utils/messages.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/server/routes/messages.js","../../../../node_modules/nitropack/dist/runtime/internal/app.mjs","../../../../node_modules/nitropack/dist/runtime/internal/lib/http-graceful-shutdown.mjs","../../../../node_modules/nitropack/dist/runtime/internal/shutdown.mjs","../../../../node_modules/nitropack/dist/presets/node/runtime/node-server.mjs"],"names":["isPlainObject","require$$0$1","decode","getQuery","parse","serialize","createRouter","remove","f","h","c","i","l","createError","process","mergeHeaders","s","nodeFetch","fetch","Headers","Headers$1","AbortController$1","$fetch","normalizeKey","defineDriver","DRIVER_NAME","dirname","fsPromises","resolve","fsp","storage","hash","_inlineAppConfig","createRadixRouter","create","_localeCodes","broadcast","existsSync","join","debug","readFile","findAll","columnsService.findBySlugInActivePipeline","columnsService.findFirst","columnsService.findById","columnsService.findLast","findByIssue","columnsService.isActionableById","columnsService.isLastById","issuesService.findAll","historyService.findByIssue","_a","issuesService.getChildren","issuesService.findByKey","commentsService.findByIssue","executionLogsService.findByIssue","columnsService.findByPipeline","issuesService.moveToColumnById","columnsService.findNextById","columnsService.findActiveColumns","sorted","executionLogsService.generateSessionId","issuesService.acquireProcessingLock","executionLogsService.create","historyService.create","executionLogsService.updateTerminalLog","issuesService.releaseProcessingLock","workflowService.findActionableIssue","workflowService.processIssueInCurrentColumn","commentsService.create","mkdirSync","pipelinesService.findAll","pipelinesService.create","pipelinesService.finalizeDraft","pipelinesService.activate","nitroApp","callNodeRequestHandler","fetchNodeRequestHandler","gracefulShutdown","HttpsServer","HttpServer","wsAdapter"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,67,68,69,70,71,72,73,74,75,83,84,86,87,88,89,90,91,92]}
|
|
1
|
+
{"version":3,"file":"nitro.mjs","sources":["../../../../node_modules/uncrypto/dist/crypto.node.mjs","../../../../node_modules/crossws/dist/shared/crossws.DfCzGthR.mjs","../../../../node_modules/crossws/dist/shared/crossws.D9ehKjSh.mjs","../../../../node_modules/crossws/dist/shared/crossws.By9qWDAI.mjs","../../../../node_modules/crossws/dist/shared/crossws.CipVM6lf.mjs","../../../../node_modules/crossws/dist/adapters/node.mjs","../../../../node_modules/destr/dist/index.mjs","../../../../node_modules/ufo/dist/index.mjs","../../../../node_modules/cookie-es/dist/index.mjs","../../../../node_modules/radix3/dist/index.mjs","../../../../node_modules/defu/dist/defu.mjs","../../../../node_modules/node-mock-http/dist/index.mjs","../../../../node_modules/h3/dist/index.mjs","../../../../node_modules/hookable/dist/index.mjs","../../../../node_modules/node-fetch-native/dist/native.mjs","../../../../node_modules/ofetch/dist/shared/ofetch.CWycOUEr.mjs","../../../../node_modules/ofetch/dist/node.mjs","../../../../node_modules/unstorage/dist/shared/unstorage.zVDD2mZo.mjs","../../../../node_modules/unstorage/dist/index.mjs","../../../../node_modules/unstorage/drivers/utils/index.mjs","../../../../node_modules/unstorage/drivers/memory.mjs","../../../../node_modules/unstorage/drivers/utils/node-fs.mjs","../../../../node_modules/unstorage/drivers/fs-lite.mjs","../../../../node_modules/nitropack/dist/runtime/internal/storage.mjs","../../../../node_modules/ohash/dist/shared/ohash.D__AXeF1.mjs","../../../../node_modules/ohash/dist/crypto/node/index.mjs","../../../../node_modules/ohash/dist/index.mjs","../../../../node_modules/nitropack/dist/runtime/internal/hash.mjs","../../../../node_modules/nitropack/dist/runtime/internal/cache.mjs","../../../../node_modules/klona/dist/index.mjs","../../../../node_modules/scule/dist/index.mjs","../../../../node_modules/nitropack/dist/runtime/internal/utils.env.mjs","../../../../node_modules/nitropack/dist/runtime/internal/config.mjs","../../../../node_modules/unctx/dist/index.mjs","../../../../node_modules/nitropack/dist/runtime/internal/context.mjs","../../../../node_modules/nitropack/dist/runtime/internal/route-rules.mjs","../../../../node_modules/nitropack/dist/runtime/internal/utils.mjs","../../../../node_modules/@nuxt/nitro-server/dist/runtime/utils/error.js","../../../../node_modules/@nuxt/nitro-server/dist/runtime/handlers/error.js","../../../../node_modules/nitropack/dist/runtime/internal/error/utils.mjs","../../../../node_modules/nitropack/dist/runtime/internal/error/prod.mjs","../../../../node_modules/@intlify/shared/dist/shared.mjs","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/messages.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/vue-i18n.js","../../../../node_modules/nitropack/dist/runtime/internal/plugin.mjs","../../../../node_modules/nitropack/dist/runtime/internal/renderer.mjs","../../../../node_modules/@nuxt/nitro-server/dist/runtime/utils/paths.js","../../../../node_modules/@intlify/utils/dist/shared/utils.9f8159f5.mjs","../../../../server/plugins/websocket.ts","../../../../server/utils/stats.ts","../../../../server/utils/logger.ts","../../../../server/utils/claude.ts","../../../../server/utils/columns.ts","../../../../server/utils/config.ts","../../../../server/utils/loop-detector.ts","../../../../server/utils/prisma.ts","../../../../server/services/sequence.service.ts","../../../../server/services/columns.service.ts","../../../../server/services/issues.service.ts","../../../../server/services/history.service.ts","../../../../server/utils/monitoring.ts","../../../../server/utils/slugify.ts","../../../../server/services/comments.service.ts","../../../../server/services/execution-logs.service.ts","../../../../server/utils/synthesis-generator.ts","../../../../server/utils/transition-decider.ts","../../../../server/utils/websocket.ts","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/utils.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/locales.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/server/context.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/kit/browser.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/kit/routing.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/domain.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/detection.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/shared/matching.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/server/plugin.js","../../../../server/services/workflow.service.ts","../../../../server/plugins/auto-process.ts","../../../../shared/constants.ts","../../../../server/services/pipelines.service.ts","../../../../server/config/pipeline-templates.ts","../../../../server/plugins/database.ts","../../../../server/plugins/stats.ts","../../../../node_modules/pathe/dist/shared/pathe.M-eThtNZ.mjs","../../../../node_modules/nitropack/dist/runtime/internal/static.mjs","../../../../server/middleware/error-handler.ts","../../../../node_modules/@nuxtjs/i18n/dist/runtime/server/utils/cache.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/server/utils/messages.js","../../../../node_modules/@nuxtjs/i18n/dist/runtime/server/routes/messages.js","../../../../node_modules/nitropack/dist/runtime/internal/app.mjs","../../../../node_modules/nitropack/dist/runtime/internal/lib/http-graceful-shutdown.mjs","../../../../node_modules/nitropack/dist/runtime/internal/shutdown.mjs","../../../../node_modules/nitropack/dist/presets/node/runtime/node-server.mjs"],"names":["isPlainObject","require$$0$1","decode","getQuery","parse","serialize","createRouter","remove","f","h","c","i","l","createError","process","mergeHeaders","s","nodeFetch","fetch","Headers","Headers$1","AbortController$1","$fetch","normalizeKey","defineDriver","DRIVER_NAME","dirname","fsPromises","resolve","fsp","storage","hash","_inlineAppConfig","createRadixRouter","create","_localeCodes","broadcast","existsSync","join","debug","readFile","findAll","columnsService.findBySlugInActivePipeline","columnsService.findFirst","columnsService.findById","columnsService.findLast","findByIssue","columnsService.isActionableById","columnsService.isLastById","issuesService.findAll","historyService.findByIssue","_a","issuesService.getChildren","issuesService.findByKey","commentsService.findByIssue","executionLogsService.findByIssue","columnsService.findByPipeline","issuesService.moveToColumnById","columnsService.findNextById","columnsService.findActiveColumns","sorted","executionLogsService.generateSessionId","issuesService.acquireProcessingLock","executionLogsService.create","historyService.create","executionLogsService.updateTerminalLog","issuesService.releaseProcessingLock","workflowService.findActionableIssue","workflowService.processIssueInCurrentColumn","commentsService.create","__filename","__dirname","mkdirSync","pipelinesService.findAll","pipelinesService.create","pipelinesService.finalizeDraft","pipelinesService.activate","nitroApp","callNodeRequestHandler","fetchNodeRequestHandler","gracefulShutdown","HttpsServer","HttpServer","wsAdapter"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,67,68,69,70,71,72,73,74,75,83,84,86,87,88,89,90,91,92]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { d as defineEventHandler } from '../../../nitro/nitro.mjs';
|
|
2
|
+
import 'node:http';
|
|
3
|
+
import 'node:https';
|
|
4
|
+
import 'node:crypto';
|
|
5
|
+
import 'stream';
|
|
6
|
+
import 'events';
|
|
7
|
+
import 'http';
|
|
8
|
+
import 'crypto';
|
|
9
|
+
import 'buffer';
|
|
10
|
+
import 'zlib';
|
|
11
|
+
import 'https';
|
|
12
|
+
import 'net';
|
|
13
|
+
import 'tls';
|
|
14
|
+
import 'url';
|
|
15
|
+
import 'node:events';
|
|
16
|
+
import 'node:buffer';
|
|
17
|
+
import 'node:fs';
|
|
18
|
+
import 'node:path';
|
|
19
|
+
import 'vue-router';
|
|
20
|
+
import '@prisma/client';
|
|
21
|
+
import '@prisma/adapter-better-sqlite3';
|
|
22
|
+
import 'fs';
|
|
23
|
+
import 'path';
|
|
24
|
+
import 'fs/promises';
|
|
25
|
+
import 'child_process';
|
|
26
|
+
import 'node:child_process';
|
|
27
|
+
import 'node:url';
|
|
28
|
+
|
|
29
|
+
const ____path_ = defineEventHandler(() => {
|
|
30
|
+
return null;
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
export { ____path_ as default };
|
|
34
|
+
//# sourceMappingURL=_...path_.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_...path_.mjs","sources":["../../../../../../server/routes/.well-known/appspecific/[...path].ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,kBAAA,mBAAA,MAAA;AACA,EAAA,OAAA,IAAA;AACA,CAAA,CAAA;;;;"}
|
|
@@ -39,14 +39,15 @@ const history_get = defineEventHandler(async (event) => {
|
|
|
39
39
|
debug("api", "history.get: found", { id, count: history.length });
|
|
40
40
|
const enrichedHistory = await Promise.all(
|
|
41
41
|
history.map(async (entry) => {
|
|
42
|
-
var _a;
|
|
42
|
+
var _a, _b;
|
|
43
43
|
const baseEntry = {
|
|
44
44
|
at: entry.at.toISOString(),
|
|
45
45
|
action: entry.action,
|
|
46
46
|
from: entry.fromColumn,
|
|
47
47
|
to: entry.toColumn,
|
|
48
48
|
sessionId: (_a = entry.sessionId) != null ? _a : void 0,
|
|
49
|
-
changes: entry.changes ? parseChanges(entry) : void 0
|
|
49
|
+
changes: entry.changes ? parseChanges(entry) : void 0,
|
|
50
|
+
reason: (_b = entry.reason) != null ? _b : void 0
|
|
50
51
|
};
|
|
51
52
|
if (!entry.sessionId) {
|
|
52
53
|
return baseEntry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.get.mjs","sources":["../../../../../../../server/api/issues/[id]/history.get.ts"],"names":["historyService.findByIssue","historyService.parseChanges","executionLogsService.findBySessionId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"history.get.mjs","sources":["../../../../../../../server/api/issues/[id]/history.get.ts"],"names":["historyService.findByIssue","historyService.parseChanges","executionLogsService.findBySessionId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkEA,oBAAA,kBAAA,CAAA,OAAA,KAAA,KAAA;AACA,EAAA,MAAA,EAAA,GAAA,cAAA,CAAA,KAAA,EAAA,IAAA,CAAA;AACA,EAAA,KAAA,CAAA,KAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAEA,EAAA,IAAA,CAAA,EAAA,EAAA;AACA,IAAA,MAAA,WAAA,CAAA;AAAA,MACA,UAAA,EAAA,GAAA;AAAA,MACA,OAAA,EAAA;AAAA,KACA,CAAA;AAAA,EACA;AAEA,EAAA,MAAA,OAAA,GAAA,MAAAA,WAAA,CAAA,EAAA,CAAA;AACA,EAAA,KAAA,CAAA,OAAA,oBAAA,EAAA,EAAA,IAAA,KAAA,EAAA,OAAA,CAAA,QAAA,CAAA;AAGA,EAAA,MAAA,eAAA,GAAA,MAAA,OAAA,CAAA,GAAA;AAAA,IACA,OAAA,CAAA,GAAA,CAAA,OAAA,KAAA,KAAA;;AACA,MAAA,MAAA,SAAA,GAAA;AAAA,QACA,EAAA,EAAA,KAAA,CAAA,EAAA,CAAA,WAAA,EAAA;AAAA,QACA,QAAA,KAAA,CAAA,MAAA;AAAA,QACA,MAAA,KAAA,CAAA,UAAA;AAAA,QACA,IAAA,KAAA,CAAA,QAAA;AAAA,QACA,SAAA,EAAA,CAAA,EAAA,GAAA,KAAA,CAAA,SAAA,KAAA,IAAA,GAAA,EAAA,GAAA,MAAA;AAAA,QACA,SAAA,KAAA,CAAA,OAAA,GAAAC,YAAA,CAAA,KAAA,CAAA,GAAA,MAAA;AAAA,QACA,MAAA,EAAA,CAAA,EAAA,GAAA,KAAA,CAAA,MAAA,KAAA,IAAA,GAAA,EAAA,GAAA;AAAA,OACA;AAEA,MAAA,IAAA,CAAA,MAAA,SAAA,EAAA;AACA,QAAA,OAAA,SAAA;AAAA,MACA;AAGA,MAAA,MAAA,GAAA,GAAA,MAAAC,eAAA,CAAA,MAAA,SAAA,CAAA;AAEA,MAAA,OAAA;AAAA,QACA,GAAA,SAAA;AAAA,QACA,kBAAA,EAAA;AAAA,UACA,MAAA,EAAA,CAAA,EAAA,GAAA,IAAA,IAAA,GAAA,MAAA,GAAA,GAAA,CAAA,MAAA,CAAA;AAAA,UACA,QAAA,EAAA,CAAA,EAAA,GAAA,IAAA,IAAA,GAAA,MAAA,GAAA,GAAA,CAAA,WAAA;AAAA;AACA,OACA;AAAA,IACA,CAAA;AAAA,GACA;AAEA,EAAA,OAAA,eAAA;AACA,CAAA,CAAA;;;;"}
|
|
@@ -142,7 +142,8 @@ exports.Prisma.IssueHistoryScalarFieldEnum = {
|
|
|
142
142
|
fromColumn: 'fromColumn',
|
|
143
143
|
toColumn: 'toColumn',
|
|
144
144
|
sessionId: 'sessionId',
|
|
145
|
-
changes: 'changes'
|
|
145
|
+
changes: 'changes',
|
|
146
|
+
reason: 'reason'
|
|
146
147
|
};
|
|
147
148
|
|
|
148
149
|
exports.Prisma.ExecutionLogScalarFieldEnum = {
|
|
@@ -207,10 +208,10 @@ const config = {
|
|
|
207
208
|
"clientVersion": "7.2.0",
|
|
208
209
|
"engineVersion": "0c8ef2ce45c83248ab3df073180d5eda9e8be7a3",
|
|
209
210
|
"activeProvider": "sqlite",
|
|
210
|
-
"inlineSchema": "// AutoCode - Prisma Schema\n// Base de données SQLite par projet\n// VERSION 2.0 - Pipelines Versionnés & Immuables\n\ngenerator client {\n provider
|
|
211
|
+
"inlineSchema": "// AutoCode - Prisma Schema\n// Base de données SQLite par projet\n// VERSION 2.0 - Pipelines Versionnés & Immuables\n\n// Support multiple platforms for CLI distribution:\n// native (build platform), debian/rhel/alpine Linux, macOS Intel/ARM, Windows\ngenerator client {\n provider = \"prisma-client-js\"\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\", \"rhel-openssl-3.0.x\", \"linux-musl-openssl-3.0.x\", \"darwin\", \"darwin-arm64\", \"windows\"]\n}\n\ndatasource db {\n provider = \"sqlite\"\n}\n\n// ═══════════════════════════════════════════════════════════════\n// PIPELINES & COLUMNS - VERSIONNÉS ET IMMUABLES\n// ═══════════════════════════════════════════════════════════════\n\nmodel Pipeline {\n name String // Partie de la clé composite\n version Int // v1, v2, v3... (pas semver)\n description String?\n active Boolean @default(false)\n draft Boolean @default(true) // Brouillon éditable ou verrouillé\n createdAt DateTime @default(now()) @map(\"created_at\")\n createdFromVersion Int? @map(\"created_from_version\") // Version source du brouillon\n\n columns Column[]\n\n @@id([name, version]) // Clé composite: nom + version\n @@map(\"pipelines\")\n}\n\nmodel Column {\n id Int @id @default(autoincrement()) // ID stable pour références\n slug String // \"backlog\", \"testing-unit\" (slug lisible)\n name String // \"Backlog\", \"Testing Unit\"\n index Int // Position 0, 1, 2...\n segment String // 'definition' | 'action' | 'finish'\n pipelineName String @map(\"pipeline_name\")\n pipelineVersion Int @map(\"pipeline_version\")\n\n pipeline Pipeline @relation(fields: [pipelineName, pipelineVersion], references: [name, version], onDelete: Cascade)\n issues Issue[]\n executionLogs ExecutionLog[]\n\n @@unique([pipelineName, pipelineVersion, slug]) // Slug unique par version de pipeline\n @@index([pipelineName, pipelineVersion])\n @@index([index])\n @@map(\"columns\")\n}\n\n// ═══════════════════════════════════════════════════════════════\n// ISSUES\n// ═══════════════════════════════════════════════════════════════\n\nmodel Issue {\n key String @id // \"AC-000001\"\n title String\n description String? // Markdown\n priority String @default(\"P2\") // P0, P1, P2, P3\n semver String @default(\"patch\") // patch | minor | major\n labels String @default(\"[]\") // JSON array\n lang String @default(\"fr\") // 'fr' | 'en' - langue de l'utilisateur\n columnId Int @map(\"column_id\") // Référence stable par ID\n parentKey String? @map(\"parent_key\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n // Processing lock - prevents duplicate executions\n processingColumnId Int? @map(\"processing_column_id\")\n processingStartedAt DateTime? @map(\"processing_started_at\")\n processingSessionId String? @map(\"processing_session_id\")\n\n column Column @relation(fields: [columnId], references: [id])\n parent Issue? @relation(\"IssueHierarchy\", fields: [parentKey], references: [key], onDelete: SetNull)\n children Issue[] @relation(\"IssueHierarchy\")\n acceptanceCriteria AcceptanceCriterion[]\n history IssueHistory[]\n comments Comment[]\n attachments Attachment[]\n executionLogs ExecutionLog[]\n\n @@index([columnId])\n @@index([parentKey])\n @@index([priority])\n @@index([updatedAt(sort: Desc)])\n @@map(\"issues\")\n}\n\nmodel AcceptanceCriterion {\n id Int @id @default(autoincrement())\n issueKey String @map(\"issue_key\")\n criterion String\n position Int\n\n issue Issue @relation(fields: [issueKey], references: [key], onDelete: Cascade)\n\n @@index([issueKey])\n @@map(\"acceptance_criteria\")\n}\n\n// ═══════════════════════════════════════════════════════════════\n// HISTORY & EXECUTION\n// ═══════════════════════════════════════════════════════════════\n\nmodel IssueHistory {\n id Int @id @default(autoincrement())\n issueKey String @map(\"issue_key\")\n at DateTime\n action String // 'created' | 'moved' | 'started' | 'forced' | 'edited' | 'blocked'\n fromColumn String? @map(\"from_column\") // Slug pour historique (texte)\n toColumn String @map(\"to_column\") // Slug pour historique (texte)\n sessionId String? @map(\"session_id\") // 8 chars hex\n changes String? // JSON pour 'edited'\n reason String? // Raison du blocage (pour action 'blocked')\n\n issue Issue @relation(fields: [issueKey], references: [key], onDelete: Cascade)\n\n @@index([issueKey])\n @@index([sessionId])\n @@index([at(sort: Desc)])\n @@map(\"issue_history\")\n}\n\nmodel ExecutionLog {\n sessionId String @id @map(\"session_id\") // 8 chars hex\n issueKey String @map(\"issue_key\")\n columnId Int @map(\"column_id\") // Référence par ID\n prompt String? // Contenu du prompt\n terminalLog String? @map(\"terminal_log\") // Logs d'execution\n createdAt DateTime @default(now()) @map(\"created_at\")\n\n issue Issue @relation(fields: [issueKey], references: [key], onDelete: Cascade)\n column Column @relation(fields: [columnId], references: [id])\n\n @@index([issueKey])\n @@index([columnId])\n @@map(\"execution_logs\")\n}\n\n// ═══════════════════════════════════════════════════════════════\n// COMMENTS & ATTACHMENTS\n// ═══════════════════════════════════════════════════════════════\n\nmodel Comment {\n id String @id // Timestamp Unix en ms\n issueKey String @map(\"issue_key\")\n content String\n author String\n createdAt DateTime @default(now()) @map(\"created_at\")\n\n issue Issue @relation(fields: [issueKey], references: [key], onDelete: Cascade)\n\n @@index([issueKey])\n @@index([createdAt(sort: Desc)])\n @@map(\"comments\")\n}\n\nmodel Attachment {\n id Int @id @default(autoincrement())\n issueKey String @map(\"issue_key\")\n filename String // Nom original\n filepath String // Chemin relatif sur disque\n mimetype String?\n size Int? // Bytes\n createdAt DateTime @default(now()) @map(\"created_at\")\n\n issue Issue @relation(fields: [issueKey], references: [key], onDelete: Cascade)\n\n @@index([issueKey])\n @@map(\"attachments\")\n}\n\n// ═══════════════════════════════════════════════════════════════\n// SEQUENCE (pour generation AC-XXXXXX)\n// ═══════════════════════════════════════════════════════════════\n\nmodel Sequence {\n name String @id // 'issue_key'\n currentValue Int @default(0) @map(\"current_value\")\n\n @@map(\"sequences\")\n}\n"
|
|
211
212
|
}
|
|
212
213
|
|
|
213
|
-
config.runtimeDataModel = JSON.parse("{\"models\":{\"Pipeline\":{\"fields\":[{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"version\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"active\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"draft\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"createdFromVersion\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"created_from_version\"},{\"name\":\"columns\",\"kind\":\"object\",\"type\":\"Column\",\"relationName\":\"ColumnToPipeline\"}],\"dbName\":\"pipelines\"},\"Column\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"index\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"segment\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"pipelineName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"pipeline_name\"},{\"name\":\"pipelineVersion\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"pipeline_version\"},{\"name\":\"pipeline\",\"kind\":\"object\",\"type\":\"Pipeline\",\"relationName\":\"ColumnToPipeline\"},{\"name\":\"issues\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"ColumnToIssue\"},{\"name\":\"executionLogs\",\"kind\":\"object\",\"type\":\"ExecutionLog\",\"relationName\":\"ColumnToExecutionLog\"}],\"dbName\":\"columns\"},\"Issue\":{\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"priority\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"semver\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"labels\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lang\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"columnId\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"column_id\"},{\"name\":\"parentKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_key\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"processingColumnId\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"processing_column_id\"},{\"name\":\"processingStartedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"processing_started_at\"},{\"name\":\"processingSessionId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"processing_session_id\"},{\"name\":\"column\",\"kind\":\"object\",\"type\":\"Column\",\"relationName\":\"ColumnToIssue\"},{\"name\":\"parent\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"IssueHierarchy\"},{\"name\":\"children\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"IssueHierarchy\"},{\"name\":\"acceptanceCriteria\",\"kind\":\"object\",\"type\":\"AcceptanceCriterion\",\"relationName\":\"AcceptanceCriterionToIssue\"},{\"name\":\"history\",\"kind\":\"object\",\"type\":\"IssueHistory\",\"relationName\":\"IssueToIssueHistory\"},{\"name\":\"comments\",\"kind\":\"object\",\"type\":\"Comment\",\"relationName\":\"CommentToIssue\"},{\"name\":\"attachments\",\"kind\":\"object\",\"type\":\"Attachment\",\"relationName\":\"AttachmentToIssue\"},{\"name\":\"executionLogs\",\"kind\":\"object\",\"type\":\"ExecutionLog\",\"relationName\":\"ExecutionLogToIssue\"}],\"dbName\":\"issues\"},\"AcceptanceCriterion\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"issueKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"issue_key\"},{\"name\":\"criterion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"position\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"issue\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"AcceptanceCriterionToIssue\"}],\"dbName\":\"acceptance_criteria\"},\"IssueHistory\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"issueKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"issue_key\"},{\"name\":\"at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"action\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fromColumn\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"from_column\"},{\"name\":\"toColumn\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"to_column\"},{\"name\":\"sessionId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"session_id\"},{\"name\":\"changes\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"issue\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"IssueToIssueHistory\"}],\"dbName\":\"issue_history\"},\"ExecutionLog\":{\"fields\":[{\"name\":\"sessionId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"session_id\"},{\"name\":\"issueKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"issue_key\"},{\"name\":\"columnId\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"column_id\"},{\"name\":\"prompt\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"terminalLog\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"terminal_log\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"issue\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"ExecutionLogToIssue\"},{\"name\":\"column\",\"kind\":\"object\",\"type\":\"Column\",\"relationName\":\"ColumnToExecutionLog\"}],\"dbName\":\"execution_logs\"},\"Comment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"issueKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"issue_key\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"author\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"issue\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"CommentToIssue\"}],\"dbName\":\"comments\"},\"Attachment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"issueKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"issue_key\"},{\"name\":\"filename\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"filepath\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mimetype\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"size\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"issue\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"AttachmentToIssue\"}],\"dbName\":\"attachments\"},\"Sequence\":{\"fields\":[{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"currentValue\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"current_value\"}],\"dbName\":\"sequences\"}},\"enums\":{},\"types\":{}}")
|
|
214
|
+
config.runtimeDataModel = JSON.parse("{\"models\":{\"Pipeline\":{\"fields\":[{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"version\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"active\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"draft\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"createdFromVersion\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"created_from_version\"},{\"name\":\"columns\",\"kind\":\"object\",\"type\":\"Column\",\"relationName\":\"ColumnToPipeline\"}],\"dbName\":\"pipelines\"},\"Column\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"index\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"segment\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"pipelineName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"pipeline_name\"},{\"name\":\"pipelineVersion\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"pipeline_version\"},{\"name\":\"pipeline\",\"kind\":\"object\",\"type\":\"Pipeline\",\"relationName\":\"ColumnToPipeline\"},{\"name\":\"issues\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"ColumnToIssue\"},{\"name\":\"executionLogs\",\"kind\":\"object\",\"type\":\"ExecutionLog\",\"relationName\":\"ColumnToExecutionLog\"}],\"dbName\":\"columns\"},\"Issue\":{\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"priority\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"semver\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"labels\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lang\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"columnId\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"column_id\"},{\"name\":\"parentKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_key\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"processingColumnId\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"processing_column_id\"},{\"name\":\"processingStartedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"processing_started_at\"},{\"name\":\"processingSessionId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"processing_session_id\"},{\"name\":\"column\",\"kind\":\"object\",\"type\":\"Column\",\"relationName\":\"ColumnToIssue\"},{\"name\":\"parent\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"IssueHierarchy\"},{\"name\":\"children\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"IssueHierarchy\"},{\"name\":\"acceptanceCriteria\",\"kind\":\"object\",\"type\":\"AcceptanceCriterion\",\"relationName\":\"AcceptanceCriterionToIssue\"},{\"name\":\"history\",\"kind\":\"object\",\"type\":\"IssueHistory\",\"relationName\":\"IssueToIssueHistory\"},{\"name\":\"comments\",\"kind\":\"object\",\"type\":\"Comment\",\"relationName\":\"CommentToIssue\"},{\"name\":\"attachments\",\"kind\":\"object\",\"type\":\"Attachment\",\"relationName\":\"AttachmentToIssue\"},{\"name\":\"executionLogs\",\"kind\":\"object\",\"type\":\"ExecutionLog\",\"relationName\":\"ExecutionLogToIssue\"}],\"dbName\":\"issues\"},\"AcceptanceCriterion\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"issueKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"issue_key\"},{\"name\":\"criterion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"position\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"issue\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"AcceptanceCriterionToIssue\"}],\"dbName\":\"acceptance_criteria\"},\"IssueHistory\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"issueKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"issue_key\"},{\"name\":\"at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"action\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fromColumn\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"from_column\"},{\"name\":\"toColumn\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"to_column\"},{\"name\":\"sessionId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"session_id\"},{\"name\":\"changes\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reason\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"issue\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"IssueToIssueHistory\"}],\"dbName\":\"issue_history\"},\"ExecutionLog\":{\"fields\":[{\"name\":\"sessionId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"session_id\"},{\"name\":\"issueKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"issue_key\"},{\"name\":\"columnId\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"column_id\"},{\"name\":\"prompt\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"terminalLog\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"terminal_log\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"issue\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"ExecutionLogToIssue\"},{\"name\":\"column\",\"kind\":\"object\",\"type\":\"Column\",\"relationName\":\"ColumnToExecutionLog\"}],\"dbName\":\"execution_logs\"},\"Comment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"issueKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"issue_key\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"author\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"issue\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"CommentToIssue\"}],\"dbName\":\"comments\"},\"Attachment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"issueKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"issue_key\"},{\"name\":\"filename\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"filepath\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mimetype\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"size\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"issue\",\"kind\":\"object\",\"type\":\"Issue\",\"relationName\":\"AttachmentToIssue\"}],\"dbName\":\"attachments\"},\"Sequence\":{\"fields\":[{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"currentValue\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"current_value\"}],\"dbName\":\"sequences\"}},\"enums\":{},\"types\":{}}")
|
|
214
215
|
defineDmmfProperty(exports.Prisma, config.runtimeDataModel)
|
|
215
216
|
config.compilerWasm = {
|
|
216
217
|
getRuntime: async () => require('./query_compiler_bg.js'),
|
package/bin/autocode
CHANGED
|
@@ -43,6 +43,7 @@ Commands:
|
|
|
43
43
|
next <key> Advance issue to next column
|
|
44
44
|
move <key> <column> Move issue to a different column
|
|
45
45
|
new <title> [desc] Create a new issue
|
|
46
|
+
new-child <parent> <title> [desc] Create child issue under parent
|
|
46
47
|
parent <key> [parent] Manage parent relationships
|
|
47
48
|
health Check workflow health
|
|
48
49
|
stats Show usage statistics
|
|
@@ -97,6 +98,12 @@ New Issue Options:
|
|
|
97
98
|
-c, --column <slug> Target column (default: backlog)
|
|
98
99
|
--parent <key> Parent issue key
|
|
99
100
|
|
|
101
|
+
New-Child Options:
|
|
102
|
+
-p, --priority <P0-P3> Priority (default: P2)
|
|
103
|
+
-l, --labels <labels> Comma-separated labels
|
|
104
|
+
-a, --acceptance <crit> Acceptance criteria (can repeat)
|
|
105
|
+
-c, --column <slug> Target column (default: backlog)
|
|
106
|
+
|
|
100
107
|
Move Options:
|
|
101
108
|
-f, --force Force move (skip validation)
|
|
102
109
|
|
|
@@ -133,6 +140,7 @@ Examples:
|
|
|
133
140
|
autocode next AC-000001 Advance issue
|
|
134
141
|
autocode move AC-000001 07_in-progress Move issue
|
|
135
142
|
autocode new "Fix bug" -p P1 -l bug Create issue
|
|
143
|
+
autocode new-child AC-000001 "Sub-task" Create child issue
|
|
136
144
|
autocode parent AC-000001 Show parent/children
|
|
137
145
|
autocode parent AC-000001 AC-000002 Set parent
|
|
138
146
|
autocode health Check for stuck issues
|
|
@@ -163,10 +171,11 @@ function hasDebugFlag() {
|
|
|
163
171
|
return args.includes('--debug');
|
|
164
172
|
}
|
|
165
173
|
|
|
166
|
-
// Check if cloudflared is installed
|
|
174
|
+
// Check if cloudflared is installed (cross-platform)
|
|
167
175
|
function isCloudflaredInstalled() {
|
|
168
176
|
try {
|
|
169
|
-
|
|
177
|
+
// Use --version instead of 'which' for Windows compatibility
|
|
178
|
+
execSync('cloudflared --version', { stdio: 'ignore' });
|
|
170
179
|
return true;
|
|
171
180
|
} catch {
|
|
172
181
|
return false;
|
|
@@ -515,7 +524,9 @@ async function newCmd() {
|
|
|
515
524
|
|
|
516
525
|
if (!title) {
|
|
517
526
|
console.error('Usage: autocode new "<title>" ["<description>"] [options]');
|
|
518
|
-
console.error('Options: -p <priority> -l <labels> -a <acceptance> -c <column> --parent <key>
|
|
527
|
+
console.error('Options: -p <priority> -l <labels> -a <acceptance> -c <column> --parent <key>');
|
|
528
|
+
console.error(' --autocomplete --lang <en|fr>');
|
|
529
|
+
console.error('Note: Acceptance criteria are ALWAYS auto-generated if not provided via -a');
|
|
519
530
|
process.exit(1);
|
|
520
531
|
}
|
|
521
532
|
|
|
@@ -527,7 +538,7 @@ async function newCmd() {
|
|
|
527
538
|
};
|
|
528
539
|
|
|
529
540
|
if (opts.labels) body.labels = opts.labels.split(',').map(l => l.trim());
|
|
530
|
-
if (opts.acceptance) body.
|
|
541
|
+
if (opts.acceptance) body.acceptanceCriteria = opts.acceptance.split(',').map(c => c.trim());
|
|
531
542
|
if (opts.semver) body.semver = opts.semver;
|
|
532
543
|
if (opts.parent) body.parent_key = opts.parent;
|
|
533
544
|
|
|
@@ -546,6 +557,43 @@ async function newCmd() {
|
|
|
546
557
|
const result = await res.json();
|
|
547
558
|
const issue = result.data || result;
|
|
548
559
|
|
|
560
|
+
// Auto-generate acceptance criteria if not provided (mandatory)
|
|
561
|
+
const hasCriteria = opts.acceptance && opts.acceptance.trim().length > 0;
|
|
562
|
+
const shouldAutoGenerate = !hasCriteria && !opts.autocomplete;
|
|
563
|
+
|
|
564
|
+
if (shouldAutoGenerate) {
|
|
565
|
+
console.log(` ⏳ Generating acceptance criteria...`);
|
|
566
|
+
const autoRes = await fetch(`${getApiBase()}/api/issues/autocomplete`, {
|
|
567
|
+
method: 'POST',
|
|
568
|
+
headers: { 'Content-Type': 'application/json' },
|
|
569
|
+
body: JSON.stringify({
|
|
570
|
+
title: issue.title,
|
|
571
|
+
description: issue.description || '',
|
|
572
|
+
priority: issue.priority,
|
|
573
|
+
lang: opts.lang || 'fr'
|
|
574
|
+
})
|
|
575
|
+
});
|
|
576
|
+
|
|
577
|
+
if (autoRes.ok) {
|
|
578
|
+
const autoData = await autoRes.json();
|
|
579
|
+
if (autoData.acceptance_criteria && autoData.acceptance_criteria.length > 0) {
|
|
580
|
+
const patchRes = await fetch(`${getApiBase()}/api/issues/${issue.key}`, {
|
|
581
|
+
method: 'PATCH',
|
|
582
|
+
headers: { 'Content-Type': 'application/json' },
|
|
583
|
+
body: JSON.stringify({
|
|
584
|
+
acceptance_criteria: autoData.acceptance_criteria
|
|
585
|
+
})
|
|
586
|
+
});
|
|
587
|
+
|
|
588
|
+
if (patchRes.ok) {
|
|
589
|
+
console.log(` ✓ ${autoData.acceptance_criteria.length} acceptance criteria generated`);
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
} else {
|
|
593
|
+
console.log(` ⚠ Could not auto-generate criteria (server responded ${autoRes.status})`);
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
|
|
549
597
|
// Autocomplete if requested (generates acceptance criteria, description, etc.)
|
|
550
598
|
if (opts.autocomplete) {
|
|
551
599
|
console.log(` Generating acceptance criteria...`);
|
|
@@ -606,6 +654,127 @@ async function newCmd() {
|
|
|
606
654
|
}
|
|
607
655
|
}
|
|
608
656
|
|
|
657
|
+
// ============================================
|
|
658
|
+
// new-child - Create child issue under parent
|
|
659
|
+
// ============================================
|
|
660
|
+
async function newChildCmd() {
|
|
661
|
+
const parentKey = commandArgs[0];
|
|
662
|
+
const title = commandArgs[1];
|
|
663
|
+
|
|
664
|
+
// Validation parent key format
|
|
665
|
+
if (!parentKey || !/^AC-\d{6}$/.test(parentKey)) {
|
|
666
|
+
console.error('Usage: autocode new-child <parent-key> "<title>" ["<description>"] [options]');
|
|
667
|
+
console.error('Error: Valid parent key required (e.g., AC-000001)');
|
|
668
|
+
process.exit(1);
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
// Validation title
|
|
672
|
+
if (!title) {
|
|
673
|
+
console.error('Usage: autocode new-child <parent-key> "<title>" ["<description>"] [options]');
|
|
674
|
+
console.error('Options: -p <priority> -l <labels> -a <acceptance> -c <column>');
|
|
675
|
+
process.exit(1);
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
try {
|
|
679
|
+
// Verify parent exists
|
|
680
|
+
const parentRes = await fetch(`${getApiBase()}/api/issues/${parentKey}`);
|
|
681
|
+
if (!parentRes.ok) {
|
|
682
|
+
console.error(`Error: Parent issue ${parentKey} not found`);
|
|
683
|
+
process.exit(1);
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
// Parse remaining options (starting from index 2)
|
|
687
|
+
const opts = { priority: 'P2', acceptance: [], labels: [] };
|
|
688
|
+
let desc = '';
|
|
689
|
+
let i = 2;
|
|
690
|
+
|
|
691
|
+
while (i < commandArgs.length) {
|
|
692
|
+
const arg = commandArgs[i];
|
|
693
|
+
if (arg === '-p' || arg === '--priority') opts.priority = commandArgs[++i];
|
|
694
|
+
else if (arg === '-l' || arg === '--labels') opts.labels = commandArgs[++i].split(',').map(l => l.trim());
|
|
695
|
+
else if (arg === '-a' || arg === '--acceptance') opts.acceptance.push(commandArgs[++i]);
|
|
696
|
+
else if (arg === '-c' || arg === '--column') opts.column = commandArgs[++i];
|
|
697
|
+
else if (!desc) desc = arg;
|
|
698
|
+
i++;
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
const body = {
|
|
702
|
+
title,
|
|
703
|
+
description: desc || '',
|
|
704
|
+
priority: opts.priority,
|
|
705
|
+
parent: parentKey, // FORCED - this is the key difference (API expects 'parent')
|
|
706
|
+
};
|
|
707
|
+
|
|
708
|
+
if (opts.labels.length > 0) body.labels = opts.labels;
|
|
709
|
+
if (opts.acceptance.length > 0) body.acceptanceCriteria = opts.acceptance;
|
|
710
|
+
|
|
711
|
+
const res = await fetch(`${getApiBase()}/api/issues`, {
|
|
712
|
+
method: 'POST',
|
|
713
|
+
headers: { 'Content-Type': 'application/json' },
|
|
714
|
+
body: JSON.stringify(body)
|
|
715
|
+
});
|
|
716
|
+
|
|
717
|
+
if (!res.ok) {
|
|
718
|
+
const err = await res.json().catch(() => ({}));
|
|
719
|
+
console.error(`Failed: ${err.message || err.error || res.statusText}`);
|
|
720
|
+
process.exit(1);
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
const result = await res.json();
|
|
724
|
+
const issue = result.data || result;
|
|
725
|
+
|
|
726
|
+
// Auto-generate acceptance criteria if not provided
|
|
727
|
+
if (opts.acceptance.length === 0) {
|
|
728
|
+
console.log(` ⏳ Generating acceptance criteria...`);
|
|
729
|
+
const autoRes = await fetch(`${getApiBase()}/api/issues/autocomplete`, {
|
|
730
|
+
method: 'POST',
|
|
731
|
+
headers: { 'Content-Type': 'application/json' },
|
|
732
|
+
body: JSON.stringify({
|
|
733
|
+
title: issue.title,
|
|
734
|
+
description: issue.description || '',
|
|
735
|
+
priority: issue.priority,
|
|
736
|
+
lang: 'fr'
|
|
737
|
+
})
|
|
738
|
+
});
|
|
739
|
+
|
|
740
|
+
if (autoRes.ok) {
|
|
741
|
+
const autoData = await autoRes.json();
|
|
742
|
+
if (autoData.acceptance_criteria && autoData.acceptance_criteria.length > 0) {
|
|
743
|
+
const patchRes = await fetch(`${getApiBase()}/api/issues/${issue.key}`, {
|
|
744
|
+
method: 'PATCH',
|
|
745
|
+
headers: { 'Content-Type': 'application/json' },
|
|
746
|
+
body: JSON.stringify({
|
|
747
|
+
acceptance_criteria: autoData.acceptance_criteria
|
|
748
|
+
})
|
|
749
|
+
});
|
|
750
|
+
|
|
751
|
+
if (patchRes.ok) {
|
|
752
|
+
console.log(` ✓ ${autoData.acceptance_criteria.length} acceptance criteria generated`);
|
|
753
|
+
}
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
// Move to column if specified
|
|
759
|
+
if (opts.column && opts.column !== 'backlog') {
|
|
760
|
+
await fetch(`${getApiBase()}/api/issues/${issue.key}/move`, {
|
|
761
|
+
method: 'POST',
|
|
762
|
+
headers: { 'Content-Type': 'application/json' },
|
|
763
|
+
body: JSON.stringify({ column: opts.column, force: true })
|
|
764
|
+
});
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
console.log(`✓ Created ${issue.key} (child of ${parentKey})`);
|
|
768
|
+
console.log(` Title: ${issue.title}`);
|
|
769
|
+
console.log(` Priority: ${issue.priority}`);
|
|
770
|
+
console.log(` Parent: ${parentKey}`);
|
|
771
|
+
} catch (e) {
|
|
772
|
+
console.error(`Error: ${e.message}`);
|
|
773
|
+
console.error('Make sure autocode server is running');
|
|
774
|
+
process.exit(1);
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
|
|
609
778
|
// ============================================
|
|
610
779
|
// show - Show issue details
|
|
611
780
|
// ============================================
|
|
@@ -2404,6 +2573,9 @@ switch (command) {
|
|
|
2404
2573
|
case 'new':
|
|
2405
2574
|
newCmd();
|
|
2406
2575
|
break;
|
|
2576
|
+
case 'new-child':
|
|
2577
|
+
newChildCmd();
|
|
2578
|
+
break;
|
|
2407
2579
|
case 'parent':
|
|
2408
2580
|
parentCmd();
|
|
2409
2581
|
break;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@autocode-cli/autocode",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.36.0",
|
|
4
4
|
"description": "AutoCode Dashboard - Issue tracking with web interface",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"clean": "rm -rf .nuxt .output",
|
|
12
12
|
"build": "nuxt build",
|
|
13
13
|
"dev": "npm run kill-ports && npm run clean && (prisma studio --port 49152 &) && nuxt dev",
|
|
14
|
+
"dev:debug": "npm run kill-ports && npm run clean && (prisma studio --port 49152 &) && AUTOCODE_DEBUG=true nuxt dev",
|
|
14
15
|
"generate": "nuxt generate",
|
|
15
16
|
"preview": "nuxt preview",
|
|
16
17
|
"serve": "node .output/server/index.mjs",
|
|
@@ -37,7 +38,8 @@
|
|
|
37
38
|
"README.md",
|
|
38
39
|
".output",
|
|
39
40
|
"bin",
|
|
40
|
-
"templates"
|
|
41
|
+
"templates",
|
|
42
|
+
"prisma"
|
|
41
43
|
],
|
|
42
44
|
"keywords": [
|
|
43
45
|
"issues",
|
|
@@ -65,6 +67,7 @@
|
|
|
65
67
|
"@nuxtjs/i18n": "^10.2.1",
|
|
66
68
|
"@prisma/adapter-better-sqlite3": "^7.2.0",
|
|
67
69
|
"@prisma/client": "^7.2.0",
|
|
70
|
+
"prisma": "^7.2.0",
|
|
68
71
|
"@scalar/nuxt": "^0.5.35",
|
|
69
72
|
"@vueuse/core": "^14.1.0",
|
|
70
73
|
"@vueuse/nuxt": "^14.1.0",
|
|
@@ -93,12 +96,8 @@
|
|
|
93
96
|
"eslint": "^9.39.2",
|
|
94
97
|
"happy-dom": "^20.0.11",
|
|
95
98
|
"prettier": "^3.7.4",
|
|
96
|
-
"prisma": "^7.2.0",
|
|
97
99
|
"typescript": "^5.7.3",
|
|
98
100
|
"vitest": "^3.2.0",
|
|
99
101
|
"vue-tsc": "^2.2.10"
|
|
100
|
-
},
|
|
101
|
-
"optionalDependencies": {
|
|
102
|
-
"@oxc-parser/binding-linux-x64-gnu": "^0.106.0"
|
|
103
102
|
}
|
|
104
103
|
}
|