@autocode-cli/autocode 0.8.37 → 0.22.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 +15 -0
- package/.output/public/_i18n/zP5M_e1m/en/messages.json +1 -0
- package/.output/public/_i18n/zP5M_e1m/fr/messages.json +1 -0
- package/.output/public/_nuxt/BBgAVlXU.js +1 -0
- package/.output/public/_nuxt/BZUmpBmU.js +2 -0
- package/.output/public/_nuxt/BmGeRwzG.js +1 -0
- package/.output/public/_nuxt/Bsd2P-Xc.js +1 -0
- package/.output/public/_nuxt/BthlfLoK.js +1 -0
- package/.output/public/_nuxt/Bu1Qq2g-.js +1 -0
- package/.output/public/_nuxt/BvF9_V7p.js +1 -0
- package/.output/public/_nuxt/BvUbqlcZ.js +2 -0
- package/.output/public/_nuxt/Bxcwuw3U.js +1 -0
- package/.output/public/_nuxt/C0Rlrcoy.js +59 -0
- package/.output/public/_nuxt/CTV7-Iux.js +1 -0
- package/.output/public/_nuxt/CWENDdnZ.js +1 -0
- package/.output/public/_nuxt/CjVJcaTo.js +7 -0
- package/.output/public/_nuxt/CoGBQbLh.js +1 -0
- package/.output/public/_nuxt/CtVoJCjv.js +1 -0
- package/.output/public/_nuxt/D4lcVP-d.js +1 -0
- package/.output/public/_nuxt/D8RlVVzC.js +1 -0
- package/.output/public/_nuxt/DBuWa6JT.js +1 -0
- package/.output/public/_nuxt/DFQ30pd7.js +1 -0
- package/.output/public/_nuxt/DNUcHFTN.js +1 -0
- package/.output/public/_nuxt/DRo5NaOZ.js +1 -0
- package/.output/public/_nuxt/DU0awelf.js +1 -0
- package/.output/public/_nuxt/DYYF8rpr.js +1 -0
- package/.output/public/_nuxt/DaYBQX26.js +1 -0
- package/.output/public/_nuxt/DwfwVH0w.js +1 -0
- package/.output/public/_nuxt/DykwyQae.js +1 -0
- package/.output/public/_nuxt/FIIaIpPb.js +1 -0
- package/.output/public/_nuxt/IssueHeader.BKYJE9Ko.css +1 -0
- package/.output/public/_nuxt/LangSwitcher.DDTh1sNN.css +1 -0
- package/.output/public/_nuxt/QtPIr4OQ.js +1 -0
- package/.output/public/_nuxt/TA-NBooC.js +1 -0
- package/.output/public/_nuxt/TB1o0NrH.js +13 -0
- package/.output/public/_nuxt/Zzp33YZj.js +1 -0
- package/.output/public/_nuxt/_HJO0SwU.js +1 -0
- package/.output/public/_nuxt/_id_.CYj9w2Sw.css +1 -0
- package/.output/public/_nuxt/_name_.OOW3Ydwv.css +1 -0
- package/.output/public/_nuxt/autocreate.-iJ9Pxhm.css +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -0
- package/.output/public/_nuxt/builds/meta/83d9a3fc-c99e-4e26-adef-e7f5b329b81a.json +1 -0
- package/.output/public/_nuxt/changelog.CziWegef.css +1 -0
- package/.output/public/_nuxt/comments.BcvjcN1z.css +1 -0
- package/.output/public/_nuxt/default.BaZU2Ea8.css +1 -0
- package/.output/public/_nuxt/entry.CzscD3wg.css +1 -0
- package/.output/public/_nuxt/graph.BbpRRv0M.css +1 -0
- package/.output/public/_nuxt/iHS1jy-1.js +1 -0
- package/.output/public/_nuxt/index.CDND7dpO.css +1 -0
- package/.output/public/_nuxt/index.COVdL_Kx.css +1 -0
- package/.output/public/_nuxt/index.CTkgb9uR.css +1 -0
- package/.output/public/_nuxt/index.DkNg_n4G.css +1 -0
- package/.output/public/_nuxt/jYigECdj.js +1 -0
- package/.output/public/_nuxt/kanban.BuPOCLgG.css +1 -0
- package/.output/public/_nuxt/landing.D5KkDm1b.css +1 -0
- package/.output/public/_nuxt/new.BFERdqdm.css +1 -0
- package/.output/public/_nuxt/new.BzaiohPo.css +1 -0
- package/.output/public/_nuxt/prompt.CbFHjm-L.css +1 -0
- package/.output/public/_nuxt/prompt.DM4VdPnn.css +1 -0
- package/.output/public/_nuxt/prompt.DZ0wdOji.css +1 -0
- package/.output/public/_nuxt/stats.CXzKxZ71.css +1 -0
- package/.output/public/_nuxt/terminal.BL0EPPyU.css +1 -0
- package/.output/public/_nuxt/terminal.D3JI44PH.css +1 -0
- package/.output/public/_nuxt/terminal.YXDzS4Ng.css +1 -0
- package/.output/public/_payload.json +1 -0
- package/.output/public/favicon.svg +11 -0
- package/.output/public/index.html +1 -0
- package/.output/public/media/podcast/en.m4a +0 -0
- package/.output/public/media/podcast/fr.m4a +0 -0
- package/.output/public/og-image.svg +58 -0
- package/.output/public/robots.txt +5 -0
- package/.output/server/chunks/_/attachments.service.mjs +33 -0
- package/.output/server/chunks/_/attachments.service.mjs.map +1 -0
- package/.output/server/chunks/_/comments.service.mjs +26 -0
- package/.output/server/chunks/_/comments.service.mjs.map +1 -0
- package/.output/server/chunks/_/en.mjs +538 -0
- package/.output/server/chunks/_/en.mjs.map +1 -0
- package/.output/server/chunks/_/error-500.mjs +10 -0
- package/.output/server/chunks/_/error-500.mjs.map +1 -0
- package/.output/server/chunks/_/fr.mjs +538 -0
- package/.output/server/chunks/_/fr.mjs.map +1 -0
- package/.output/server/chunks/build/AppHeader-styles.D4cFmBur.mjs +8 -0
- package/.output/server/chunks/build/AppHeader-styles.D4cFmBur.mjs.map +1 -0
- package/.output/server/chunks/build/CatalogPanel-styles.BJ_ozkvH.mjs +8 -0
- package/.output/server/chunks/build/CatalogPanel-styles.BJ_ozkvH.mjs.map +1 -0
- package/.output/server/chunks/build/IssueHeader-BKlqeUoH.mjs +127 -0
- package/.output/server/chunks/build/IssueHeader-BKlqeUoH.mjs.map +1 -0
- package/.output/server/chunks/build/IssueHeader-styles.aWkocVax.mjs +8 -0
- package/.output/server/chunks/build/IssueHeader-styles.aWkocVax.mjs.map +1 -0
- package/.output/server/chunks/build/LandingArchitecture-styles.Don6ug3a.mjs +8 -0
- package/.output/server/chunks/build/LandingArchitecture-styles.Don6ug3a.mjs.map +1 -0
- package/.output/server/chunks/build/LandingAutonomy-styles.D9JJFMEO.mjs +8 -0
- package/.output/server/chunks/build/LandingAutonomy-styles.D9JJFMEO.mjs.map +1 -0
- package/.output/server/chunks/build/LandingCommands-styles.BoLpFQgT.mjs +8 -0
- package/.output/server/chunks/build/LandingCommands-styles.BoLpFQgT.mjs.map +1 -0
- package/.output/server/chunks/build/LandingDemo-styles.WY8VUN9P.mjs +8 -0
- package/.output/server/chunks/build/LandingDemo-styles.WY8VUN9P.mjs.map +1 -0
- package/.output/server/chunks/build/LandingFooter-styles.CEshuzKW.mjs +8 -0
- package/.output/server/chunks/build/LandingFooter-styles.CEshuzKW.mjs.map +1 -0
- package/.output/server/chunks/build/LandingMatrixBg-styles.DKJoYVuG.mjs +8 -0
- package/.output/server/chunks/build/LandingMatrixBg-styles.DKJoYVuG.mjs.map +1 -0
- package/.output/server/chunks/build/LandingPipeline-styles.CL96fyQR.mjs +8 -0
- package/.output/server/chunks/build/LandingPipeline-styles.CL96fyQR.mjs.map +1 -0
- package/.output/server/chunks/build/LandingPodcast-styles.BUxvpRMa.mjs +8 -0
- package/.output/server/chunks/build/LandingPodcast-styles.BUxvpRMa.mjs.map +1 -0
- package/.output/server/chunks/build/LandingRoadmap-styles.DX5EsTsx.mjs +8 -0
- package/.output/server/chunks/build/LandingRoadmap-styles.DX5EsTsx.mjs.map +1 -0
- package/.output/server/chunks/build/LangSwitcher-BcmlkZkS.mjs +32 -0
- package/.output/server/chunks/build/LangSwitcher-BcmlkZkS.mjs.map +1 -0
- package/.output/server/chunks/build/LangSwitcher-styles.DjejY3Ry.mjs +8 -0
- package/.output/server/chunks/build/LangSwitcher-styles.DjejY3Ry.mjs.map +1 -0
- package/.output/server/chunks/build/NotificationContainer-styles.CWuUTY5_.mjs +8 -0
- package/.output/server/chunks/build/NotificationContainer-styles.CWuUTY5_.mjs.map +1 -0
- package/.output/server/chunks/build/PipelineColumn-styles.DeCMKSUU.mjs +8 -0
- package/.output/server/chunks/build/PipelineColumn-styles.DeCMKSUU.mjs.map +1 -0
- package/.output/server/chunks/build/PipelineSegments-styles.Cx1F1okc.mjs +8 -0
- package/.output/server/chunks/build/PipelineSegments-styles.Cx1F1okc.mjs.map +1 -0
- package/.output/server/chunks/build/_id_-CE9OXhn_.mjs +78 -0
- package/.output/server/chunks/build/_id_-CE9OXhn_.mjs.map +1 -0
- package/.output/server/chunks/build/_id_-styles.DrupDd6T.mjs +8 -0
- package/.output/server/chunks/build/_id_-styles.DrupDd6T.mjs.map +1 -0
- package/.output/server/chunks/build/_name_-UJA12Rs2.mjs +810 -0
- package/.output/server/chunks/build/_name_-UJA12Rs2.mjs.map +1 -0
- package/.output/server/chunks/build/_name_-styles.megXcys0.mjs +8 -0
- package/.output/server/chunks/build/_name_-styles.megXcys0.mjs.map +1 -0
- package/.output/server/chunks/build/autocreate-DrAjWR5B.mjs +113 -0
- package/.output/server/chunks/build/autocreate-DrAjWR5B.mjs.map +1 -0
- package/.output/server/chunks/build/autocreate-styles.BkUFXyS7.mjs +8 -0
- package/.output/server/chunks/build/autocreate-styles.BkUFXyS7.mjs.map +1 -0
- package/.output/server/chunks/build/changelog-CVp1u2jo.mjs +159 -0
- package/.output/server/chunks/build/changelog-CVp1u2jo.mjs.map +1 -0
- package/.output/server/chunks/build/changelog-styles.Ct3EgGku.mjs +8 -0
- package/.output/server/chunks/build/changelog-styles.Ct3EgGku.mjs.map +1 -0
- package/.output/server/chunks/build/client.precomputed.mjs +4 -0
- package/.output/server/chunks/build/client.precomputed.mjs.map +1 -0
- package/.output/server/chunks/build/comments-CZn-fPmX.mjs +119 -0
- package/.output/server/chunks/build/comments-CZn-fPmX.mjs.map +1 -0
- package/.output/server/chunks/build/comments-styles.CMP7TEvm.mjs +8 -0
- package/.output/server/chunks/build/comments-styles.CMP7TEvm.mjs.map +1 -0
- package/.output/server/chunks/build/default-BovpaVrS.mjs +180 -0
- package/.output/server/chunks/build/default-BovpaVrS.mjs.map +1 -0
- package/.output/server/chunks/build/default-styles.DCCKRaIF.mjs +8 -0
- package/.output/server/chunks/build/default-styles.DCCKRaIF.mjs.map +1 -0
- package/.output/server/chunks/build/en-1t1dLE2e.mjs +516 -0
- package/.output/server/chunks/build/en-1t1dLE2e.mjs.map +1 -0
- package/.output/server/chunks/build/error-styles.DYHGS7iv.mjs +8 -0
- package/.output/server/chunks/build/error-styles.DYHGS7iv.mjs.map +1 -0
- package/.output/server/chunks/build/fetch-B5NxMLIO.mjs +468 -0
- package/.output/server/chunks/build/fetch-B5NxMLIO.mjs.map +1 -0
- package/.output/server/chunks/build/fr-DHi8X16R.mjs +516 -0
- package/.output/server/chunks/build/fr-DHi8X16R.mjs.map +1 -0
- package/.output/server/chunks/build/graph-C-r91hz6.mjs +153 -0
- package/.output/server/chunks/build/graph-C-r91hz6.mjs.map +1 -0
- package/.output/server/chunks/build/graph-styles.BX4kyxPV.mjs +8 -0
- package/.output/server/chunks/build/graph-styles.BX4kyxPV.mjs.map +1 -0
- package/.output/server/chunks/build/index-Bm8ROtfk.mjs +239 -0
- package/.output/server/chunks/build/index-Bm8ROtfk.mjs.map +1 -0
- package/.output/server/chunks/build/index-C0DupdV0.mjs +89 -0
- package/.output/server/chunks/build/index-C0DupdV0.mjs.map +1 -0
- package/.output/server/chunks/build/index-CqyAV1ko.mjs +741 -0
- package/.output/server/chunks/build/index-CqyAV1ko.mjs.map +1 -0
- package/.output/server/chunks/build/index-D2tcUNO-.mjs +193 -0
- package/.output/server/chunks/build/index-D2tcUNO-.mjs.map +1 -0
- package/.output/server/chunks/build/index-styles.BJ7kZO7q.mjs +8 -0
- package/.output/server/chunks/build/index-styles.BJ7kZO7q.mjs.map +1 -0
- package/.output/server/chunks/build/index-styles.BaICoyCD.mjs +8 -0
- package/.output/server/chunks/build/index-styles.BaICoyCD.mjs.map +1 -0
- package/.output/server/chunks/build/index-styles.Cy221X-R.mjs +8 -0
- package/.output/server/chunks/build/index-styles.Cy221X-R.mjs.map +1 -0
- package/.output/server/chunks/build/kanban-CMVmXpCA.mjs +304 -0
- package/.output/server/chunks/build/kanban-CMVmXpCA.mjs.map +1 -0
- package/.output/server/chunks/build/kanban-styles.CWalvI0C.mjs +8 -0
- package/.output/server/chunks/build/kanban-styles.CWalvI0C.mjs.map +1 -0
- package/.output/server/chunks/build/landing-DK6wjn6b.mjs +52 -0
- package/.output/server/chunks/build/landing-DK6wjn6b.mjs.map +1 -0
- package/.output/server/chunks/build/landing-styles.Bx73xEdX.mjs +8 -0
- package/.output/server/chunks/build/landing-styles.Bx73xEdX.mjs.map +1 -0
- package/.output/server/chunks/build/new-BUvtXOoH.mjs +107 -0
- package/.output/server/chunks/build/new-BUvtXOoH.mjs.map +1 -0
- package/.output/server/chunks/build/new-DMctSKBX.mjs +171 -0
- package/.output/server/chunks/build/new-DMctSKBX.mjs.map +1 -0
- package/.output/server/chunks/build/new-styles.Chk5u_6M.mjs +8 -0
- package/.output/server/chunks/build/new-styles.Chk5u_6M.mjs.map +1 -0
- package/.output/server/chunks/build/new-styles.KSbzjZvD.mjs +8 -0
- package/.output/server/chunks/build/new-styles.KSbzjZvD.mjs.map +1 -0
- package/.output/server/chunks/build/nuxt-link-Cq8xZgFP.mjs +286 -0
- package/.output/server/chunks/build/nuxt-link-Cq8xZgFP.mjs.map +1 -0
- package/.output/server/chunks/build/prompt-BD-UncOd.mjs +167 -0
- package/.output/server/chunks/build/prompt-BD-UncOd.mjs.map +1 -0
- package/.output/server/chunks/build/prompt-BzvhmzrW.mjs +121 -0
- package/.output/server/chunks/build/prompt-BzvhmzrW.mjs.map +1 -0
- package/.output/server/chunks/build/prompt-evT7Aaj_.mjs +118 -0
- package/.output/server/chunks/build/prompt-evT7Aaj_.mjs.map +1 -0
- package/.output/server/chunks/build/prompt-styles.ByKVLx31.mjs +8 -0
- package/.output/server/chunks/build/prompt-styles.ByKVLx31.mjs.map +1 -0
- package/.output/server/chunks/build/prompt-styles.DWfublIG.mjs +8 -0
- package/.output/server/chunks/build/prompt-styles.DWfublIG.mjs.map +1 -0
- package/.output/server/chunks/build/prompt-styles.i7UlDRDv.mjs +8 -0
- package/.output/server/chunks/build/prompt-styles.i7UlDRDv.mjs.map +1 -0
- package/.output/server/chunks/build/server.mjs +6262 -0
- package/.output/server/chunks/build/server.mjs.map +1 -0
- package/.output/server/chunks/build/stats-Cxo5MAfa.mjs +184 -0
- package/.output/server/chunks/build/stats-Cxo5MAfa.mjs.map +1 -0
- package/.output/server/chunks/build/stats-styles.B6f61PbZ.mjs +8 -0
- package/.output/server/chunks/build/stats-styles.B6f61PbZ.mjs.map +1 -0
- package/.output/server/chunks/build/styles.mjs +82 -0
- package/.output/server/chunks/build/styles.mjs.map +1 -0
- package/.output/server/chunks/build/terminal-B0__67-c.mjs +134 -0
- package/.output/server/chunks/build/terminal-B0__67-c.mjs.map +1 -0
- package/.output/server/chunks/build/terminal-BtTmOD6s.mjs +128 -0
- package/.output/server/chunks/build/terminal-BtTmOD6s.mjs.map +1 -0
- package/.output/server/chunks/build/terminal-D_WbT8Ri.mjs +134 -0
- package/.output/server/chunks/build/terminal-D_WbT8Ri.mjs.map +1 -0
- package/.output/server/chunks/build/terminal-styles.C3XDlIUb.mjs +8 -0
- package/.output/server/chunks/build/terminal-styles.C3XDlIUb.mjs.map +1 -0
- package/.output/server/chunks/build/terminal-styles.CPOm0b7Y.mjs +8 -0
- package/.output/server/chunks/build/terminal-styles.CPOm0b7Y.mjs.map +1 -0
- package/.output/server/chunks/build/terminal-styles.TrVlIkii.mjs +8 -0
- package/.output/server/chunks/build/terminal-styles.TrVlIkii.mjs.map +1 -0
- package/.output/server/chunks/build/useApiError-BSStUojq.mjs +54 -0
- package/.output/server/chunks/build/useApiError-BSStUojq.mjs.map +1 -0
- package/.output/server/chunks/build/useNotification-BqDqaGnC.mjs +49 -0
- package/.output/server/chunks/build/useNotification-BqDqaGnC.mjs.map +1 -0
- package/.output/server/chunks/build/usePipeline-ZPHbtOs6.mjs +158 -0
- package/.output/server/chunks/build/usePipeline-ZPHbtOs6.mjs.map +1 -0
- package/.output/server/chunks/build/useWebSocket-UbMCn0vY.mjs +47 -0
- package/.output/server/chunks/build/useWebSocket-UbMCn0vY.mjs.map +1 -0
- package/.output/server/chunks/nitro/nitro.mjs +14666 -0
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -0
- package/.output/server/chunks/routes/_ws.mjs +50 -0
- package/.output/server/chunks/routes/_ws.mjs.map +1 -0
- package/.output/server/chunks/routes/api/catalog/autocreate/apply.post.mjs +67 -0
- package/.output/server/chunks/routes/api/catalog/autocreate/apply.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/catalog/autocreate.post.mjs +158 -0
- package/.output/server/chunks/routes/api/catalog/autocreate.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/changelog/summary.post.mjs +140 -0
- package/.output/server/chunks/routes/api/changelog/summary.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/changelog.get.mjs +83 -0
- package/.output/server/chunks/routes/api/changelog.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/columns/_slug/actions.get.mjs +43 -0
- package/.output/server/chunks/routes/api/columns/_slug/actions.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/columns/_slug/prompt.get.mjs +44 -0
- package/.output/server/chunks/routes/api/columns/_slug/prompt.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/health.get.mjs +61 -0
- package/.output/server/chunks/routes/api/health.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/index.get.mjs +80 -0
- package/.output/server/chunks/routes/api/index.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/index.get2.mjs +39 -0
- package/.output/server/chunks/routes/api/index.get2.mjs.map +1 -0
- package/.output/server/chunks/routes/api/index.get3.mjs +55 -0
- package/.output/server/chunks/routes/api/index.get3.mjs.map +1 -0
- package/.output/server/chunks/routes/api/index.get4.mjs +46 -0
- package/.output/server/chunks/routes/api/index.get4.mjs.map +1 -0
- package/.output/server/chunks/routes/api/index.post.mjs +104 -0
- package/.output/server/chunks/routes/api/index.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/index.post2.mjs +73 -0
- package/.output/server/chunks/routes/api/index.post2.mjs.map +1 -0
- package/.output/server/chunks/routes/api/index.post3.mjs +64 -0
- package/.output/server/chunks/routes/api/index.post3.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id/_column/log.get.mjs +90 -0
- package/.output/server/chunks/routes/api/issues/_id/_column/log.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id/ancestors.get.mjs +57 -0
- package/.output/server/chunks/routes/api/issues/_id/ancestors.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id/archive.delete.mjs +67 -0
- package/.output/server/chunks/routes/api/issues/_id/archive.delete.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id/attachments/_attachmentId_.delete.mjs +75 -0
- package/.output/server/chunks/routes/api/issues/_id/attachments/_attachmentId_.delete.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id/attachments/_attachmentId_.get.mjs +73 -0
- package/.output/server/chunks/routes/api/issues/_id/attachments/_attachmentId_.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id/attachments.get.mjs +51 -0
- package/.output/server/chunks/routes/api/issues/_id/attachments.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id/attachments.post.mjs +103 -0
- package/.output/server/chunks/routes/api/issues/_id/attachments.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id/children.get.mjs +57 -0
- package/.output/server/chunks/routes/api/issues/_id/children.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id/comments.get.mjs +50 -0
- package/.output/server/chunks/routes/api/issues/_id/comments.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id/comments.post.mjs +66 -0
- package/.output/server/chunks/routes/api/issues/_id/comments.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id/full-history.get.mjs +79 -0
- package/.output/server/chunks/routes/api/issues/_id/full-history.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id/full-terminal.get.mjs +88 -0
- package/.output/server/chunks/routes/api/issues/_id/full-terminal.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id/history/_sessionId/log.get.mjs +84 -0
- package/.output/server/chunks/routes/api/issues/_id/history/_sessionId/log.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id/history/_sessionId/prompt.get.mjs +57 -0
- package/.output/server/chunks/routes/api/issues/_id/history/_sessionId/prompt.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id/history.get.mjs +68 -0
- package/.output/server/chunks/routes/api/issues/_id/history.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id/log.get.mjs +75 -0
- package/.output/server/chunks/routes/api/issues/_id/log.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id/move.post.mjs +87 -0
- package/.output/server/chunks/routes/api/issues/_id/move.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id/next.post.mjs +78 -0
- package/.output/server/chunks/routes/api/issues/_id/next.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id_.get.mjs +63 -0
- package/.output/server/chunks/routes/api/issues/_id_.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/_id_.patch.mjs +70 -0
- package/.output/server/chunks/routes/api/issues/_id_.patch.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/actionable.get.mjs +60 -0
- package/.output/server/chunks/routes/api/issues/actionable.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/autocomplete.post.mjs +110 -0
- package/.output/server/chunks/routes/api/issues/autocomplete.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/issues/graph.get.mjs +69 -0
- package/.output/server/chunks/routes/api/issues/graph.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/pipelines/_name/activate.put.mjs +59 -0
- package/.output/server/chunks/routes/api/pipelines/_name/activate.put.mjs.map +1 -0
- package/.output/server/chunks/routes/api/pipelines/_name/versions/_version/activate.put.mjs +58 -0
- package/.output/server/chunks/routes/api/pipelines/_name/versions/_version/activate.put.mjs.map +1 -0
- package/.output/server/chunks/routes/api/pipelines/_name/versions/_version/finalize.post.mjs +69 -0
- package/.output/server/chunks/routes/api/pipelines/_name/versions/_version/finalize.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/pipelines/_name/versions/_version_.delete.mjs +58 -0
- package/.output/server/chunks/routes/api/pipelines/_name/versions/_version_.delete.mjs.map +1 -0
- package/.output/server/chunks/routes/api/pipelines/_name/versions/_version_.get.mjs +68 -0
- package/.output/server/chunks/routes/api/pipelines/_name/versions/_version_.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/pipelines/_name/versions/_version_.put.mjs +70 -0
- package/.output/server/chunks/routes/api/pipelines/_name/versions/_version_.put.mjs.map +1 -0
- package/.output/server/chunks/routes/api/pipelines/_name/versions.get.mjs +49 -0
- package/.output/server/chunks/routes/api/pipelines/_name/versions.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/pipelines/_name/versions.post.mjs +61 -0
- package/.output/server/chunks/routes/api/pipelines/_name/versions.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/pipelines/_name_.delete.mjs +54 -0
- package/.output/server/chunks/routes/api/pipelines/_name_.delete.mjs.map +1 -0
- package/.output/server/chunks/routes/api/pipelines/_name_.get.mjs +63 -0
- package/.output/server/chunks/routes/api/pipelines/_name_.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/pipelines/_name_.put.mjs +78 -0
- package/.output/server/chunks/routes/api/pipelines/_name_.put.mjs.map +1 -0
- package/.output/server/chunks/routes/api/stats.get.mjs +39 -0
- package/.output/server/chunks/routes/api/stats.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/status.get.mjs +38 -0
- package/.output/server/chunks/routes/api/status.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workflow/health.get.mjs +40 -0
- package/.output/server/chunks/routes/api/workflow/health.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/ws/status.get.mjs +38 -0
- package/.output/server/chunks/routes/api/ws/status.get.mjs.map +1 -0
- package/.output/server/chunks/routes/renderer.mjs +399 -0
- package/.output/server/chunks/routes/renderer.mjs.map +1 -0
- package/.output/server/chunks/virtual/_virtual_spa-template.mjs +4 -0
- package/.output/server/chunks/virtual/_virtual_spa-template.mjs.map +1 -0
- package/.output/server/index.mjs +28 -0
- package/.output/server/index.mjs.map +1 -0
- package/.output/server/node_modules/.prisma/client/default.js +5 -0
- package/.output/server/node_modules/.prisma/client/index.js +224 -0
- package/.output/server/node_modules/.prisma/client/package.json +144 -0
- package/.output/server/node_modules/.prisma/client/query_compiler_bg.js +2 -0
- package/.output/server/node_modules/.prisma/client/query_compiler_bg.wasm-base64.js +2 -0
- package/.output/server/node_modules/.prisma/package.json +4 -0
- package/.output/server/node_modules/@babel/parser/lib/index.js +14662 -0
- package/.output/server/node_modules/@babel/parser/package.json +50 -0
- package/.output/server/node_modules/@intlify/core/dist/core.mjs +31 -0
- package/.output/server/node_modules/@intlify/core/package.json +82 -0
- package/.output/server/node_modules/@intlify/core-base/dist/core-base.mjs +1886 -0
- package/.output/server/node_modules/@intlify/core-base/package.json +80 -0
- package/.output/server/node_modules/@intlify/h3/dist/index.mjs +65 -0
- package/.output/server/node_modules/@intlify/h3/package.json +122 -0
- package/.output/server/node_modules/@intlify/message-compiler/dist/message-compiler.mjs +1530 -0
- package/.output/server/node_modules/@intlify/message-compiler/package.json +79 -0
- package/.output/server/node_modules/@intlify/shared/dist/shared.mjs +281 -0
- package/.output/server/node_modules/@intlify/shared/package.json +69 -0
- package/.output/server/node_modules/@intlify/utils/dist/h3.mjs +89 -0
- package/.output/server/node_modules/@intlify/utils/dist/shared/utils.9f8159f5.mjs +108 -0
- package/.output/server/node_modules/@intlify/utils/package.json +129 -0
- package/.output/server/node_modules/@prisma/adapter-better-sqlite3/dist/index.mjs +619 -0
- package/.output/server/node_modules/@prisma/adapter-better-sqlite3/package.json +45 -0
- package/.output/server/node_modules/@prisma/client/default.js +3 -0
- package/.output/server/node_modules/@prisma/client/package.json +281 -0
- package/.output/server/node_modules/@prisma/client/runtime/client.js +82 -0
- package/.output/server/node_modules/@prisma/client-runtime-utils/dist/index.js +2552 -0
- package/.output/server/node_modules/@prisma/client-runtime-utils/package.json +39 -0
- package/.output/server/node_modules/@prisma/debug/dist/index.mjs +213 -0
- package/.output/server/node_modules/@prisma/debug/package.json +47 -0
- package/.output/server/node_modules/@prisma/driver-adapter-utils/dist/index.mjs +245 -0
- package/.output/server/node_modules/@prisma/driver-adapter-utils/package.json +40 -0
- package/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6763 -0
- package/.output/server/node_modules/@vue/compiler-core/package.json +58 -0
- package/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +689 -0
- package/.output/server/node_modules/@vue/compiler-dom/package.json +57 -0
- package/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1413 -0
- package/.output/server/node_modules/@vue/compiler-ssr/package.json +34 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/api.js +2 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/app.js +2 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/component.js +2 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/context.js +2 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/hooks.js +2 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/index.js +22 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/util.js +2 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/const.js +5 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/env.js +17 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/index.js +45 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/plugin.js +2 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/proxy.js +111 -0
- package/.output/server/node_modules/@vue/devtools-api/lib/cjs/time.js +28 -0
- package/.output/server/node_modules/@vue/devtools-api/package.json +37 -0
- package/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1853 -0
- package/.output/server/node_modules/@vue/reactivity/package.json +55 -0
- package/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6770 -0
- package/.output/server/node_modules/@vue/runtime-core/package.json +52 -0
- package/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1732 -0
- package/.output/server/node_modules/@vue/runtime-dom/package.json +60 -0
- package/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +879 -0
- package/.output/server/node_modules/@vue/server-renderer/package.json +55 -0
- package/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +604 -0
- package/.output/server/node_modules/@vue/shared/package.json +47 -0
- package/.output/server/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
- package/.output/server/node_modules/better-sqlite3/lib/database.js +90 -0
- package/.output/server/node_modules/better-sqlite3/lib/index.js +3 -0
- package/.output/server/node_modules/better-sqlite3/lib/methods/aggregate.js +43 -0
- package/.output/server/node_modules/better-sqlite3/lib/methods/backup.js +67 -0
- package/.output/server/node_modules/better-sqlite3/lib/methods/function.js +31 -0
- package/.output/server/node_modules/better-sqlite3/lib/methods/inspect.js +7 -0
- package/.output/server/node_modules/better-sqlite3/lib/methods/pragma.js +12 -0
- package/.output/server/node_modules/better-sqlite3/lib/methods/serialize.js +16 -0
- package/.output/server/node_modules/better-sqlite3/lib/methods/table.js +189 -0
- package/.output/server/node_modules/better-sqlite3/lib/methods/transaction.js +78 -0
- package/.output/server/node_modules/better-sqlite3/lib/methods/wrappers.js +54 -0
- package/.output/server/node_modules/better-sqlite3/lib/sqlite-error.js +20 -0
- package/.output/server/node_modules/better-sqlite3/lib/util.js +12 -0
- package/.output/server/node_modules/better-sqlite3/package.json +59 -0
- package/.output/server/node_modules/bindings/bindings.js +221 -0
- package/.output/server/node_modules/bindings/package.json +28 -0
- package/.output/server/node_modules/cookie-es/dist/index.mjs +262 -0
- package/.output/server/node_modules/cookie-es/package.json +46 -0
- package/.output/server/node_modules/d3/package.json +92 -0
- package/.output/server/node_modules/d3/src/index.js +30 -0
- package/.output/server/node_modules/d3-array/package.json +61 -0
- package/.output/server/node_modules/d3-array/src/array.js +4 -0
- package/.output/server/node_modules/d3-array/src/ascending.js +3 -0
- package/.output/server/node_modules/d3-array/src/bin.js +125 -0
- package/.output/server/node_modules/d3-array/src/bisect.js +9 -0
- package/.output/server/node_modules/d3-array/src/bisector.js +56 -0
- package/.output/server/node_modules/d3-array/src/blur.js +115 -0
- package/.output/server/node_modules/d3-array/src/constant.js +3 -0
- package/.output/server/node_modules/d3-array/src/count.js +18 -0
- package/.output/server/node_modules/d3-array/src/cross.js +33 -0
- package/.output/server/node_modules/d3-array/src/cumsum.js +6 -0
- package/.output/server/node_modules/d3-array/src/descending.js +7 -0
- package/.output/server/node_modules/d3-array/src/deviation.js +6 -0
- package/.output/server/node_modules/d3-array/src/difference.js +11 -0
- package/.output/server/node_modules/d3-array/src/disjoint.js +15 -0
- package/.output/server/node_modules/d3-array/src/every.js +10 -0
- package/.output/server/node_modules/d3-array/src/extent.js +29 -0
- package/.output/server/node_modules/d3-array/src/filter.js +11 -0
- package/.output/server/node_modules/d3-array/src/fsum.js +69 -0
- package/.output/server/node_modules/d3-array/src/greatest.js +29 -0
- package/.output/server/node_modules/d3-array/src/greatestIndex.js +19 -0
- package/.output/server/node_modules/d3-array/src/group.js +65 -0
- package/.output/server/node_modules/d3-array/src/groupSort.js +10 -0
- package/.output/server/node_modules/d3-array/src/identity.js +3 -0
- package/.output/server/node_modules/d3-array/src/index.js +57 -0
- package/.output/server/node_modules/d3-array/src/intersection.js +19 -0
- package/.output/server/node_modules/d3-array/src/least.js +29 -0
- package/.output/server/node_modules/d3-array/src/leastIndex.js +19 -0
- package/.output/server/node_modules/d3-array/src/map.js +5 -0
- package/.output/server/node_modules/d3-array/src/max.js +20 -0
- package/.output/server/node_modules/d3-array/src/maxIndex.js +22 -0
- package/.output/server/node_modules/d3-array/src/mean.js +19 -0
- package/.output/server/node_modules/d3-array/src/median.js +9 -0
- package/.output/server/node_modules/d3-array/src/merge.js +9 -0
- package/.output/server/node_modules/d3-array/src/min.js +20 -0
- package/.output/server/node_modules/d3-array/src/minIndex.js +22 -0
- package/.output/server/node_modules/d3-array/src/mode.js +28 -0
- package/.output/server/node_modules/d3-array/src/nice.js +18 -0
- package/.output/server/node_modules/d3-array/src/number.js +20 -0
- package/.output/server/node_modules/d3-array/src/pairs.js +15 -0
- package/.output/server/node_modules/d3-array/src/permute.js +3 -0
- package/.output/server/node_modules/d3-array/src/quantile.js +47 -0
- package/.output/server/node_modules/d3-array/src/quickselect.js +53 -0
- package/.output/server/node_modules/d3-array/src/range.js +13 -0
- package/.output/server/node_modules/d3-array/src/rank.js +24 -0
- package/.output/server/node_modules/d3-array/src/reduce.js +14 -0
- package/.output/server/node_modules/d3-array/src/reverse.js +4 -0
- package/.output/server/node_modules/d3-array/src/scan.js +6 -0
- package/.output/server/node_modules/d3-array/src/shuffle.js +13 -0
- package/.output/server/node_modules/d3-array/src/some.js +10 -0
- package/.output/server/node_modules/d3-array/src/sort.js +39 -0
- package/.output/server/node_modules/d3-array/src/subset.js +5 -0
- package/.output/server/node_modules/d3-array/src/sum.js +18 -0
- package/.output/server/node_modules/d3-array/src/superset.js +19 -0
- package/.output/server/node_modules/d3-array/src/threshold/freedmanDiaconis.js +7 -0
- package/.output/server/node_modules/d3-array/src/threshold/scott.js +7 -0
- package/.output/server/node_modules/d3-array/src/threshold/sturges.js +5 -0
- package/.output/server/node_modules/d3-array/src/ticks.js +55 -0
- package/.output/server/node_modules/d3-array/src/transpose.js +15 -0
- package/.output/server/node_modules/d3-array/src/union.js +11 -0
- package/.output/server/node_modules/d3-array/src/variance.js +25 -0
- package/.output/server/node_modules/d3-array/src/zip.js +5 -0
- package/.output/server/node_modules/d3-axis/package.json +54 -0
- package/.output/server/node_modules/d3-axis/src/axis.js +174 -0
- package/.output/server/node_modules/d3-axis/src/identity.js +3 -0
- package/.output/server/node_modules/d3-axis/src/index.js +6 -0
- package/.output/server/node_modules/d3-brush/package.json +55 -0
- package/.output/server/node_modules/d3-brush/src/brush.js +621 -0
- package/.output/server/node_modules/d3-brush/src/constant.js +1 -0
- package/.output/server/node_modules/d3-brush/src/event.js +16 -0
- package/.output/server/node_modules/d3-brush/src/index.js +6 -0
- package/.output/server/node_modules/d3-brush/src/noevent.js +8 -0
- package/.output/server/node_modules/d3-chord/package.json +54 -0
- package/.output/server/node_modules/d3-chord/src/array.js +1 -0
- package/.output/server/node_modules/d3-chord/src/chord.js +122 -0
- package/.output/server/node_modules/d3-chord/src/constant.js +5 -0
- package/.output/server/node_modules/d3-chord/src/index.js +2 -0
- package/.output/server/node_modules/d3-chord/src/math.js +8 -0
- package/.output/server/node_modules/d3-chord/src/ribbon.js +134 -0
- package/.output/server/node_modules/d3-color/package.json +54 -0
- package/.output/server/node_modules/d3-color/src/color.js +396 -0
- package/.output/server/node_modules/d3-color/src/cubehelix.js +61 -0
- package/.output/server/node_modules/d3-color/src/define.js +10 -0
- package/.output/server/node_modules/d3-color/src/index.js +3 -0
- package/.output/server/node_modules/d3-color/src/lab.js +123 -0
- package/.output/server/node_modules/d3-color/src/math.js +2 -0
- package/.output/server/node_modules/d3-contour/package.json +66 -0
- package/.output/server/node_modules/d3-contour/src/area.js +5 -0
- package/.output/server/node_modules/d3-contour/src/array.js +3 -0
- package/.output/server/node_modules/d3-contour/src/ascending.js +3 -0
- package/.output/server/node_modules/d3-contour/src/constant.js +1 -0
- package/.output/server/node_modules/d3-contour/src/contains.js +27 -0
- package/.output/server/node_modules/d3-contour/src/contours.js +225 -0
- package/.output/server/node_modules/d3-contour/src/density.js +149 -0
- package/.output/server/node_modules/d3-contour/src/index.js +2 -0
- package/.output/server/node_modules/d3-contour/src/noop.js +1 -0
- package/.output/server/node_modules/d3-delaunay/package.json +62 -0
- package/.output/server/node_modules/d3-delaunay/src/delaunay.js +248 -0
- package/.output/server/node_modules/d3-delaunay/src/index.js +2 -0
- package/.output/server/node_modules/d3-delaunay/src/path.js +37 -0
- package/.output/server/node_modules/d3-delaunay/src/polygon.js +17 -0
- package/.output/server/node_modules/d3-delaunay/src/voronoi.js +332 -0
- package/.output/server/node_modules/d3-dispatch/package.json +50 -0
- package/.output/server/node_modules/d3-dispatch/src/dispatch.js +84 -0
- package/.output/server/node_modules/d3-dispatch/src/index.js +1 -0
- package/.output/server/node_modules/d3-drag/package.json +54 -0
- package/.output/server/node_modules/d3-drag/src/constant.js +1 -0
- package/.output/server/node_modules/d3-drag/src/drag.js +194 -0
- package/.output/server/node_modules/d3-drag/src/event.js +28 -0
- package/.output/server/node_modules/d3-drag/src/index.js +2 -0
- package/.output/server/node_modules/d3-drag/src/nodrag.js +28 -0
- package/.output/server/node_modules/d3-drag/src/noevent.js +13 -0
- package/.output/server/node_modules/d3-dsv/package.json +68 -0
- package/.output/server/node_modules/d3-dsv/src/autoType.js +20 -0
- package/.output/server/node_modules/d3-dsv/src/csv.js +11 -0
- package/.output/server/node_modules/d3-dsv/src/dsv.js +164 -0
- package/.output/server/node_modules/d3-dsv/src/index.js +4 -0
- package/.output/server/node_modules/d3-dsv/src/tsv.js +11 -0
- package/.output/server/node_modules/d3-ease/package.json +51 -0
- package/.output/server/node_modules/d3-ease/src/back.js +37 -0
- package/.output/server/node_modules/d3-ease/src/bounce.js +22 -0
- package/.output/server/node_modules/d3-ease/src/circle.js +11 -0
- package/.output/server/node_modules/d3-ease/src/cubic.js +11 -0
- package/.output/server/node_modules/d3-ease/src/elastic.js +46 -0
- package/.output/server/node_modules/d3-ease/src/exp.js +13 -0
- package/.output/server/node_modules/d3-ease/src/index.js +66 -0
- package/.output/server/node_modules/d3-ease/src/linear.js +1 -0
- package/.output/server/node_modules/d3-ease/src/math.js +4 -0
- package/.output/server/node_modules/d3-ease/src/poly.js +37 -0
- package/.output/server/node_modules/d3-ease/src/quad.js +11 -0
- package/.output/server/node_modules/d3-ease/src/sin.js +14 -0
- package/.output/server/node_modules/d3-fetch/package.json +53 -0
- package/.output/server/node_modules/d3-fetch/src/blob.js +8 -0
- package/.output/server/node_modules/d3-fetch/src/buffer.js +8 -0
- package/.output/server/node_modules/d3-fetch/src/dsv.js +22 -0
- package/.output/server/node_modules/d3-fetch/src/image.js +9 -0
- package/.output/server/node_modules/d3-fetch/src/index.js +7 -0
- package/.output/server/node_modules/d3-fetch/src/json.js +9 -0
- package/.output/server/node_modules/d3-fetch/src/text.js +8 -0
- package/.output/server/node_modules/d3-fetch/src/xml.js +12 -0
- package/.output/server/node_modules/d3-force/package.json +58 -0
- package/.output/server/node_modules/d3-force/src/center.js +40 -0
- package/.output/server/node_modules/d3-force/src/collide.js +100 -0
- package/.output/server/node_modules/d3-force/src/constant.js +5 -0
- package/.output/server/node_modules/d3-force/src/index.js +8 -0
- package/.output/server/node_modules/d3-force/src/jiggle.js +3 -0
- package/.output/server/node_modules/d3-force/src/lcg.js +9 -0
- package/.output/server/node_modules/d3-force/src/link.js +117 -0
- package/.output/server/node_modules/d3-force/src/manyBody.js +116 -0
- package/.output/server/node_modules/d3-force/src/radial.js +57 -0
- package/.output/server/node_modules/d3-force/src/simulation.js +156 -0
- package/.output/server/node_modules/d3-force/src/x.js +41 -0
- package/.output/server/node_modules/d3-force/src/y.js +41 -0
- package/.output/server/node_modules/d3-format/package.json +55 -0
- package/.output/server/node_modules/d3-format/src/defaultLocale.js +18 -0
- package/.output/server/node_modules/d3-format/src/exponent.js +5 -0
- package/.output/server/node_modules/d3-format/src/formatDecimal.js +20 -0
- package/.output/server/node_modules/d3-format/src/formatGroup.js +18 -0
- package/.output/server/node_modules/d3-format/src/formatNumerals.js +7 -0
- package/.output/server/node_modules/d3-format/src/formatPrefixAuto.js +16 -0
- package/.output/server/node_modules/d3-format/src/formatRounded.js +11 -0
- package/.output/server/node_modules/d3-format/src/formatSpecifier.js +47 -0
- package/.output/server/node_modules/d3-format/src/formatTrim.js +11 -0
- package/.output/server/node_modules/d3-format/src/formatTypes.js +19 -0
- package/.output/server/node_modules/d3-format/src/identity.js +3 -0
- package/.output/server/node_modules/d3-format/src/index.js +6 -0
- package/.output/server/node_modules/d3-format/src/locale.js +148 -0
- package/.output/server/node_modules/d3-format/src/precisionFixed.js +5 -0
- package/.output/server/node_modules/d3-format/src/precisionPrefix.js +5 -0
- package/.output/server/node_modules/d3-format/src/precisionRound.js +6 -0
- package/.output/server/node_modules/d3-geo/package.json +59 -0
- package/.output/server/node_modules/d3-geo/src/area.js +76 -0
- package/.output/server/node_modules/d3-geo/src/bounds.js +179 -0
- package/.output/server/node_modules/d3-geo/src/cartesian.js +33 -0
- package/.output/server/node_modules/d3-geo/src/centroid.js +143 -0
- package/.output/server/node_modules/d3-geo/src/circle.js +72 -0
- package/.output/server/node_modules/d3-geo/src/clip/antimeridian.js +92 -0
- package/.output/server/node_modules/d3-geo/src/clip/buffer.js +24 -0
- package/.output/server/node_modules/d3-geo/src/clip/circle.js +177 -0
- package/.output/server/node_modules/d3-geo/src/clip/extent.js +20 -0
- package/.output/server/node_modules/d3-geo/src/clip/index.js +131 -0
- package/.output/server/node_modules/d3-geo/src/clip/line.js +59 -0
- package/.output/server/node_modules/d3-geo/src/clip/rectangle.js +168 -0
- package/.output/server/node_modules/d3-geo/src/clip/rejoin.js +103 -0
- package/.output/server/node_modules/d3-geo/src/compose.js +12 -0
- package/.output/server/node_modules/d3-geo/src/constant.js +5 -0
- package/.output/server/node_modules/d3-geo/src/contains.js +97 -0
- package/.output/server/node_modules/d3-geo/src/distance.js +10 -0
- package/.output/server/node_modules/d3-geo/src/graticule.js +105 -0
- package/.output/server/node_modules/d3-geo/src/identity.js +1 -0
- package/.output/server/node_modules/d3-geo/src/index.js +34 -0
- package/.output/server/node_modules/d3-geo/src/interpolate.js +36 -0
- package/.output/server/node_modules/d3-geo/src/length.js +53 -0
- package/.output/server/node_modules/d3-geo/src/math.js +36 -0
- package/.output/server/node_modules/d3-geo/src/noop.js +1 -0
- package/.output/server/node_modules/d3-geo/src/path/area.js +50 -0
- package/.output/server/node_modules/d3-geo/src/path/bounds.js +28 -0
- package/.output/server/node_modules/d3-geo/src/path/centroid.js +100 -0
- package/.output/server/node_modules/d3-geo/src/path/context.js +45 -0
- package/.output/server/node_modules/d3-geo/src/path/index.js +76 -0
- package/.output/server/node_modules/d3-geo/src/path/measure.js +45 -0
- package/.output/server/node_modules/d3-geo/src/path/string.js +86 -0
- package/.output/server/node_modules/d3-geo/src/pointEqual.js +5 -0
- package/.output/server/node_modules/d3-geo/src/polygonContains.js +74 -0
- package/.output/server/node_modules/d3-geo/src/projection/albers.js +10 -0
- package/.output/server/node_modules/d3-geo/src/projection/albersUsa.js +111 -0
- package/.output/server/node_modules/d3-geo/src/projection/azimuthal.js +27 -0
- package/.output/server/node_modules/d3-geo/src/projection/azimuthalEqualArea.js +17 -0
- package/.output/server/node_modules/d3-geo/src/projection/azimuthalEquidistant.js +17 -0
- package/.output/server/node_modules/d3-geo/src/projection/conic.js +15 -0
- package/.output/server/node_modules/d3-geo/src/projection/conicConformal.js +38 -0
- package/.output/server/node_modules/d3-geo/src/projection/conicEqualArea.js +33 -0
- package/.output/server/node_modules/d3-geo/src/projection/conicEquidistant.js +32 -0
- package/.output/server/node_modules/d3-geo/src/projection/cylindricalEqualArea.js +15 -0
- package/.output/server/node_modules/d3-geo/src/projection/equalEarth.js +36 -0
- package/.output/server/node_modules/d3-geo/src/projection/equirectangular.js +12 -0
- package/.output/server/node_modules/d3-geo/src/projection/fit.js +47 -0
- package/.output/server/node_modules/d3-geo/src/projection/gnomonic.js +16 -0
- package/.output/server/node_modules/d3-geo/src/projection/identity.js +85 -0
- package/.output/server/node_modules/d3-geo/src/projection/index.js +177 -0
- package/.output/server/node_modules/d3-geo/src/projection/mercator.js +52 -0
- package/.output/server/node_modules/d3-geo/src/projection/naturalEarth1.js +28 -0
- package/.output/server/node_modules/d3-geo/src/projection/orthographic.js +15 -0
- package/.output/server/node_modules/d3-geo/src/projection/resample.js +102 -0
- package/.output/server/node_modules/d3-geo/src/projection/stereographic.js +18 -0
- package/.output/server/node_modules/d3-geo/src/projection/transverseMercator.js +27 -0
- package/.output/server/node_modules/d3-geo/src/rotation.js +79 -0
- package/.output/server/node_modules/d3-geo/src/stream.js +69 -0
- package/.output/server/node_modules/d3-geo/src/transform.js +26 -0
- package/.output/server/node_modules/d3-hierarchy/package.json +56 -0
- package/.output/server/node_modules/d3-hierarchy/src/accessors.js +8 -0
- package/.output/server/node_modules/d3-hierarchy/src/array.js +20 -0
- package/.output/server/node_modules/d3-hierarchy/src/cluster.js +84 -0
- package/.output/server/node_modules/d3-hierarchy/src/constant.js +9 -0
- package/.output/server/node_modules/d3-hierarchy/src/hierarchy/ancestors.js +7 -0
- package/.output/server/node_modules/d3-hierarchy/src/hierarchy/count.js +12 -0
- package/.output/server/node_modules/d3-hierarchy/src/hierarchy/descendants.js +3 -0
- package/.output/server/node_modules/d3-hierarchy/src/hierarchy/each.js +7 -0
- package/.output/server/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js +15 -0
- package/.output/server/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js +12 -0
- package/.output/server/node_modules/d3-hierarchy/src/hierarchy/find.js +8 -0
- package/.output/server/node_modules/d3-hierarchy/src/hierarchy/index.js +91 -0
- package/.output/server/node_modules/d3-hierarchy/src/hierarchy/iterator.js +14 -0
- package/.output/server/node_modules/d3-hierarchy/src/hierarchy/leaves.js +9 -0
- package/.output/server/node_modules/d3-hierarchy/src/hierarchy/links.js +9 -0
- package/.output/server/node_modules/d3-hierarchy/src/hierarchy/path.js +30 -0
- package/.output/server/node_modules/d3-hierarchy/src/hierarchy/sort.js +7 -0
- package/.output/server/node_modules/d3-hierarchy/src/hierarchy/sum.js +9 -0
- package/.output/server/node_modules/d3-hierarchy/src/index.js +15 -0
- package/.output/server/node_modules/d3-hierarchy/src/lcg.js +9 -0
- package/.output/server/node_modules/d3-hierarchy/src/pack/enclose.js +123 -0
- package/.output/server/node_modules/d3-hierarchy/src/pack/index.js +81 -0
- package/.output/server/node_modules/d3-hierarchy/src/pack/siblings.js +120 -0
- package/.output/server/node_modules/d3-hierarchy/src/partition.js +52 -0
- package/.output/server/node_modules/d3-hierarchy/src/stratify.js +145 -0
- package/.output/server/node_modules/d3-hierarchy/src/tree.js +237 -0
- package/.output/server/node_modules/d3-hierarchy/src/treemap/binary.js +46 -0
- package/.output/server/node_modules/d3-hierarchy/src/treemap/dice.js +12 -0
- package/.output/server/node_modules/d3-hierarchy/src/treemap/index.js +94 -0
- package/.output/server/node_modules/d3-hierarchy/src/treemap/resquarify.js +36 -0
- package/.output/server/node_modules/d3-hierarchy/src/treemap/round.js +6 -0
- package/.output/server/node_modules/d3-hierarchy/src/treemap/slice.js +12 -0
- package/.output/server/node_modules/d3-hierarchy/src/treemap/sliceDice.js +6 -0
- package/.output/server/node_modules/d3-hierarchy/src/treemap/squarify.js +66 -0
- package/.output/server/node_modules/d3-interpolate/package.json +53 -0
- package/.output/server/node_modules/d3-interpolate/src/array.js +22 -0
- package/.output/server/node_modules/d3-interpolate/src/basis.js +19 -0
- package/.output/server/node_modules/d3-interpolate/src/basisClosed.js +13 -0
- package/.output/server/node_modules/d3-interpolate/src/color.js +29 -0
- package/.output/server/node_modules/d3-interpolate/src/constant.js +1 -0
- package/.output/server/node_modules/d3-interpolate/src/cubehelix.js +29 -0
- package/.output/server/node_modules/d3-interpolate/src/date.js +6 -0
- package/.output/server/node_modules/d3-interpolate/src/discrete.js +6 -0
- package/.output/server/node_modules/d3-interpolate/src/hcl.js +21 -0
- package/.output/server/node_modules/d3-interpolate/src/hsl.js +21 -0
- package/.output/server/node_modules/d3-interpolate/src/hue.js +9 -0
- package/.output/server/node_modules/d3-interpolate/src/index.js +21 -0
- package/.output/server/node_modules/d3-interpolate/src/lab.js +16 -0
- package/.output/server/node_modules/d3-interpolate/src/number.js +5 -0
- package/.output/server/node_modules/d3-interpolate/src/numberArray.js +14 -0
- package/.output/server/node_modules/d3-interpolate/src/object.js +23 -0
- package/.output/server/node_modules/d3-interpolate/src/piecewise.js +11 -0
- package/.output/server/node_modules/d3-interpolate/src/quantize.js +5 -0
- package/.output/server/node_modules/d3-interpolate/src/rgb.js +55 -0
- package/.output/server/node_modules/d3-interpolate/src/round.js +5 -0
- package/.output/server/node_modules/d3-interpolate/src/string.js +64 -0
- package/.output/server/node_modules/d3-interpolate/src/transform/decompose.js +26 -0
- package/.output/server/node_modules/d3-interpolate/src/transform/index.js +63 -0
- package/.output/server/node_modules/d3-interpolate/src/transform/parse.js +18 -0
- package/.output/server/node_modules/d3-interpolate/src/value.js +22 -0
- package/.output/server/node_modules/d3-interpolate/src/zoom.js +71 -0
- package/.output/server/node_modules/d3-path/package.json +54 -0
- package/.output/server/node_modules/d3-path/src/index.js +1 -0
- package/.output/server/node_modules/d3-path/src/path.js +156 -0
- package/.output/server/node_modules/d3-polygon/package.json +51 -0
- package/.output/server/node_modules/d3-polygon/src/area.js +15 -0
- package/.output/server/node_modules/d3-polygon/src/centroid.js +20 -0
- package/.output/server/node_modules/d3-polygon/src/contains.js +16 -0
- package/.output/server/node_modules/d3-polygon/src/cross.js +7 -0
- package/.output/server/node_modules/d3-polygon/src/hull.js +49 -0
- package/.output/server/node_modules/d3-polygon/src/index.js +5 -0
- package/.output/server/node_modules/d3-polygon/src/length.js +23 -0
- package/.output/server/node_modules/d3-quadtree/package.json +49 -0
- package/.output/server/node_modules/d3-quadtree/src/add.js +84 -0
- package/.output/server/node_modules/d3-quadtree/src/cover.js +43 -0
- package/.output/server/node_modules/d3-quadtree/src/data.js +7 -0
- package/.output/server/node_modules/d3-quadtree/src/extent.js +5 -0
- package/.output/server/node_modules/d3-quadtree/src/find.js +70 -0
- package/.output/server/node_modules/d3-quadtree/src/index.js +1 -0
- package/.output/server/node_modules/d3-quadtree/src/quad.js +7 -0
- package/.output/server/node_modules/d3-quadtree/src/quadtree.js +73 -0
- package/.output/server/node_modules/d3-quadtree/src/remove.js +62 -0
- package/.output/server/node_modules/d3-quadtree/src/root.js +3 -0
- package/.output/server/node_modules/d3-quadtree/src/size.js +7 -0
- package/.output/server/node_modules/d3-quadtree/src/visit.js +16 -0
- package/.output/server/node_modules/d3-quadtree/src/visitAfter.js +21 -0
- package/.output/server/node_modules/d3-quadtree/src/x.js +7 -0
- package/.output/server/node_modules/d3-quadtree/src/y.js +7 -0
- package/.output/server/node_modules/d3-random/package.json +51 -0
- package/.output/server/node_modules/d3-random/src/bates.js +19 -0
- package/.output/server/node_modules/d3-random/src/bernoulli.js +14 -0
- package/.output/server/node_modules/d3-random/src/beta.js +19 -0
- package/.output/server/node_modules/d3-random/src/binomial.js +38 -0
- package/.output/server/node_modules/d3-random/src/cauchy.js +15 -0
- package/.output/server/node_modules/d3-random/src/defaultSource.js +1 -0
- package/.output/server/node_modules/d3-random/src/exponential.js +13 -0
- package/.output/server/node_modules/d3-random/src/gamma.js +34 -0
- package/.output/server/node_modules/d3-random/src/geometric.js +17 -0
- package/.output/server/node_modules/d3-random/src/index.js +18 -0
- package/.output/server/node_modules/d3-random/src/int.js +16 -0
- package/.output/server/node_modules/d3-random/src/irwinHall.js +15 -0
- package/.output/server/node_modules/d3-random/src/lcg.js +9 -0
- package/.output/server/node_modules/d3-random/src/logNormal.js +17 -0
- package/.output/server/node_modules/d3-random/src/logistic.js +16 -0
- package/.output/server/node_modules/d3-random/src/normal.js +28 -0
- package/.output/server/node_modules/d3-random/src/pareto.js +15 -0
- package/.output/server/node_modules/d3-random/src/poisson.js +27 -0
- package/.output/server/node_modules/d3-random/src/uniform.js +17 -0
- package/.output/server/node_modules/d3-random/src/weibull.js +22 -0
- package/.output/server/node_modules/d3-scale/package.json +57 -0
- package/.output/server/node_modules/d3-scale/src/band.js +101 -0
- package/.output/server/node_modules/d3-scale/src/constant.js +5 -0
- package/.output/server/node_modules/d3-scale/src/continuous.js +125 -0
- package/.output/server/node_modules/d3-scale/src/diverging.js +104 -0
- package/.output/server/node_modules/d3-scale/src/identity.js +28 -0
- package/.output/server/node_modules/d3-scale/src/index.js +78 -0
- package/.output/server/node_modules/d3-scale/src/init.js +26 -0
- package/.output/server/node_modules/d3-scale/src/linear.js +70 -0
- package/.output/server/node_modules/d3-scale/src/log.js +140 -0
- package/.output/server/node_modules/d3-scale/src/nice.js +18 -0
- package/.output/server/node_modules/d3-scale/src/number.js +3 -0
- package/.output/server/node_modules/d3-scale/src/ordinal.js +46 -0
- package/.output/server/node_modules/d3-scale/src/pow.js +50 -0
- package/.output/server/node_modules/d3-scale/src/quantile.js +57 -0
- package/.output/server/node_modules/d3-scale/src/quantize.js +56 -0
- package/.output/server/node_modules/d3-scale/src/radial.js +63 -0
- package/.output/server/node_modules/d3-scale/src/sequential.js +107 -0
- package/.output/server/node_modules/d3-scale/src/sequentialQuantile.js +38 -0
- package/.output/server/node_modules/d3-scale/src/symlog.js +35 -0
- package/.output/server/node_modules/d3-scale/src/threshold.js +39 -0
- package/.output/server/node_modules/d3-scale/src/tickFormat.js +29 -0
- package/.output/server/node_modules/d3-scale/src/time.js +71 -0
- package/.output/server/node_modules/d3-scale/src/utcTime.js +8 -0
- package/.output/server/node_modules/d3-scale-chromatic/package.json +55 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/categorical/Accent.js +3 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/categorical/Dark2.js +3 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/categorical/Paired.js +3 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/categorical/Pastel1.js +3 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/categorical/Pastel2.js +3 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/categorical/Set1.js +3 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/categorical/Set2.js +3 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/categorical/Set3.js +3 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/categorical/Tableau10.js +3 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/categorical/category10.js +3 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/categorical/observable10.js +3 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/colors.js +5 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/diverging/BrBG.js +16 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/diverging/PRGn.js +16 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/diverging/PiYG.js +16 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/diverging/PuOr.js +16 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/diverging/RdBu.js +16 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/diverging/RdGy.js +16 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js +16 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js +16 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/diverging/Spectral.js +16 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/index.js +44 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/ramp.js +3 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js +14 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js +14 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js +14 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js +14 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js +14 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js +14 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js +14 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js +14 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js +14 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js +14 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js +14 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js +14 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js +8 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js +4 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js +17 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js +14 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js +8 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js +16 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-single/Blues.js +14 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-single/Greens.js +14 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-single/Greys.js +14 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js +14 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-single/Purples.js +14 -0
- package/.output/server/node_modules/d3-scale-chromatic/src/sequential-single/Reds.js +14 -0
- package/.output/server/node_modules/d3-selection/package.json +51 -0
- package/.output/server/node_modules/d3-selection/src/array.js +9 -0
- package/.output/server/node_modules/d3-selection/src/constant.js +5 -0
- package/.output/server/node_modules/d3-selection/src/create.js +6 -0
- package/.output/server/node_modules/d3-selection/src/creator.js +25 -0
- package/.output/server/node_modules/d3-selection/src/index.js +15 -0
- package/.output/server/node_modules/d3-selection/src/local.js +27 -0
- package/.output/server/node_modules/d3-selection/src/matcher.js +12 -0
- package/.output/server/node_modules/d3-selection/src/namespace.js +7 -0
- package/.output/server/node_modules/d3-selection/src/namespaces.js +9 -0
- package/.output/server/node_modules/d3-selection/src/pointer.js +20 -0
- package/.output/server/node_modules/d3-selection/src/pointers.js +11 -0
- package/.output/server/node_modules/d3-selection/src/select.js +7 -0
- package/.output/server/node_modules/d3-selection/src/selectAll.js +8 -0
- package/.output/server/node_modules/d3-selection/src/selection/append.js +8 -0
- package/.output/server/node_modules/d3-selection/src/selection/attr.js +57 -0
- package/.output/server/node_modules/d3-selection/src/selection/call.js +6 -0
- package/.output/server/node_modules/d3-selection/src/selection/classed.js +75 -0
- package/.output/server/node_modules/d3-selection/src/selection/clone.js +13 -0
- package/.output/server/node_modules/d3-selection/src/selection/data.js +128 -0
- package/.output/server/node_modules/d3-selection/src/selection/datum.js +5 -0
- package/.output/server/node_modules/d3-selection/src/selection/dispatch.js +34 -0
- package/.output/server/node_modules/d3-selection/src/selection/each.js +10 -0
- package/.output/server/node_modules/d3-selection/src/selection/empty.js +3 -0
- package/.output/server/node_modules/d3-selection/src/selection/enter.js +22 -0
- package/.output/server/node_modules/d3-selection/src/selection/exit.js +6 -0
- package/.output/server/node_modules/d3-selection/src/selection/filter.js +16 -0
- package/.output/server/node_modules/d3-selection/src/selection/html.js +25 -0
- package/.output/server/node_modules/d3-selection/src/selection/index.js +90 -0
- package/.output/server/node_modules/d3-selection/src/selection/insert.js +14 -0
- package/.output/server/node_modules/d3-selection/src/selection/iterator.js +7 -0
- package/.output/server/node_modules/d3-selection/src/selection/join.js +15 -0
- package/.output/server/node_modules/d3-selection/src/selection/lower.js +7 -0
- package/.output/server/node_modules/d3-selection/src/selection/merge.js +19 -0
- package/.output/server/node_modules/d3-selection/src/selection/node.js +11 -0
- package/.output/server/node_modules/d3-selection/src/selection/nodes.js +3 -0
- package/.output/server/node_modules/d3-selection/src/selection/on.js +67 -0
- package/.output/server/node_modules/d3-selection/src/selection/order.js +13 -0
- package/.output/server/node_modules/d3-selection/src/selection/property.js +28 -0
- package/.output/server/node_modules/d3-selection/src/selection/raise.js +7 -0
- package/.output/server/node_modules/d3-selection/src/selection/remove.js +8 -0
- package/.output/server/node_modules/d3-selection/src/selection/select.js +17 -0
- package/.output/server/node_modules/d3-selection/src/selection/selectAll.js +25 -0
- package/.output/server/node_modules/d3-selection/src/selection/selectChild.js +18 -0
- package/.output/server/node_modules/d3-selection/src/selection/selectChildren.js +18 -0
- package/.output/server/node_modules/d3-selection/src/selection/size.js +5 -0
- package/.output/server/node_modules/d3-selection/src/selection/sort.js +24 -0
- package/.output/server/node_modules/d3-selection/src/selection/sparse.js +3 -0
- package/.output/server/node_modules/d3-selection/src/selection/style.js +35 -0
- package/.output/server/node_modules/d3-selection/src/selection/text.js +25 -0
- package/.output/server/node_modules/d3-selection/src/selector.js +7 -0
- package/.output/server/node_modules/d3-selection/src/selectorAll.js +9 -0
- package/.output/server/node_modules/d3-selection/src/sourceEvent.js +5 -0
- package/.output/server/node_modules/d3-selection/src/window.js +5 -0
- package/.output/server/node_modules/d3-shape/package.json +55 -0
- package/.output/server/node_modules/d3-shape/src/arc.js +268 -0
- package/.output/server/node_modules/d3-shape/src/area.js +112 -0
- package/.output/server/node_modules/d3-shape/src/areaRadial.js +29 -0
- package/.output/server/node_modules/d3-shape/src/array.js +7 -0
- package/.output/server/node_modules/d3-shape/src/constant.js +5 -0
- package/.output/server/node_modules/d3-shape/src/curve/basis.js +51 -0
- package/.output/server/node_modules/d3-shape/src/curve/basisClosed.js +52 -0
- package/.output/server/node_modules/d3-shape/src/curve/basisOpen.js +39 -0
- package/.output/server/node_modules/d3-shape/src/curve/bump.js +75 -0
- package/.output/server/node_modules/d3-shape/src/curve/bundle.js +56 -0
- package/.output/server/node_modules/d3-shape/src/curve/cardinal.js +61 -0
- package/.output/server/node_modules/d3-shape/src/curve/cardinalClosed.js +61 -0
- package/.output/server/node_modules/d3-shape/src/curve/cardinalOpen.js +49 -0
- package/.output/server/node_modules/d3-shape/src/curve/catmullRom.js +88 -0
- package/.output/server/node_modules/d3-shape/src/curve/catmullRomClosed.js +74 -0
- package/.output/server/node_modules/d3-shape/src/curve/catmullRomOpen.js +62 -0
- package/.output/server/node_modules/d3-shape/src/curve/linear.js +31 -0
- package/.output/server/node_modules/d3-shape/src/curve/linearClosed.js +25 -0
- package/.output/server/node_modules/d3-shape/src/curve/monotone.js +104 -0
- package/.output/server/node_modules/d3-shape/src/curve/natural.js +65 -0
- package/.output/server/node_modules/d3-shape/src/curve/radial.js +36 -0
- package/.output/server/node_modules/d3-shape/src/curve/step.js +53 -0
- package/.output/server/node_modules/d3-shape/src/descending.js +3 -0
- package/.output/server/node_modules/d3-shape/src/identity.js +3 -0
- package/.output/server/node_modules/d3-shape/src/index.js +53 -0
- package/.output/server/node_modules/d3-shape/src/line.js +58 -0
- package/.output/server/node_modules/d3-shape/src/lineRadial.js +19 -0
- package/.output/server/node_modules/d3-shape/src/link.js +73 -0
- package/.output/server/node_modules/d3-shape/src/math.js +20 -0
- package/.output/server/node_modules/d3-shape/src/noop.js +1 -0
- package/.output/server/node_modules/d3-shape/src/offset/diverging.js +14 -0
- package/.output/server/node_modules/d3-shape/src/offset/expand.js +10 -0
- package/.output/server/node_modules/d3-shape/src/offset/none.js +9 -0
- package/.output/server/node_modules/d3-shape/src/offset/silhouette.js +10 -0
- package/.output/server/node_modules/d3-shape/src/offset/wiggle.js +24 -0
- package/.output/server/node_modules/d3-shape/src/order/appearance.js +12 -0
- package/.output/server/node_modules/d3-shape/src/order/ascending.js +12 -0
- package/.output/server/node_modules/d3-shape/src/order/descending.js +5 -0
- package/.output/server/node_modules/d3-shape/src/order/insideOut.js +27 -0
- package/.output/server/node_modules/d3-shape/src/order/none.js +5 -0
- package/.output/server/node_modules/d3-shape/src/order/reverse.js +5 -0
- package/.output/server/node_modules/d3-shape/src/path.js +19 -0
- package/.output/server/node_modules/d3-shape/src/pie.js +80 -0
- package/.output/server/node_modules/d3-shape/src/point.js +7 -0
- package/.output/server/node_modules/d3-shape/src/pointRadial.js +3 -0
- package/.output/server/node_modules/d3-shape/src/stack.js +58 -0
- package/.output/server/node_modules/d3-shape/src/symbol/asterisk.js +17 -0
- package/.output/server/node_modules/d3-shape/src/symbol/circle.js +9 -0
- package/.output/server/node_modules/d3-shape/src/symbol/cross.js +20 -0
- package/.output/server/node_modules/d3-shape/src/symbol/diamond.js +16 -0
- package/.output/server/node_modules/d3-shape/src/symbol/diamond2.js +12 -0
- package/.output/server/node_modules/d3-shape/src/symbol/plus.js +11 -0
- package/.output/server/node_modules/d3-shape/src/symbol/square.js +9 -0
- package/.output/server/node_modules/d3-shape/src/symbol/square2.js +12 -0
- package/.output/server/node_modules/d3-shape/src/symbol/star.js +24 -0
- package/.output/server/node_modules/d3-shape/src/symbol/times.js +11 -0
- package/.output/server/node_modules/d3-shape/src/symbol/triangle.js +13 -0
- package/.output/server/node_modules/d3-shape/src/symbol/triangle2.js +15 -0
- package/.output/server/node_modules/d3-shape/src/symbol/wye.js +25 -0
- package/.output/server/node_modules/d3-shape/src/symbol.js +66 -0
- package/.output/server/node_modules/d3-time/package.json +53 -0
- package/.output/server/node_modules/d3-time/src/day.js +35 -0
- package/.output/server/node_modules/d3-time/src/duration.js +7 -0
- package/.output/server/node_modules/d3-time/src/hour.js +26 -0
- package/.output/server/node_modules/d3-time/src/index.js +96 -0
- package/.output/server/node_modules/d3-time/src/interval.js +69 -0
- package/.output/server/node_modules/d3-time/src/millisecond.js +25 -0
- package/.output/server/node_modules/d3-time/src/minute.js +26 -0
- package/.output/server/node_modules/d3-time/src/month.js +27 -0
- package/.output/server/node_modules/d3-time/src/second.js +14 -0
- package/.output/server/node_modules/d3-time/src/ticks.js +58 -0
- package/.output/server/node_modules/d3-time/src/week.js +56 -0
- package/.output/server/node_modules/d3-time/src/year.js +49 -0
- package/.output/server/node_modules/d3-time-format/package.json +60 -0
- package/.output/server/node_modules/d3-time-format/src/defaultLocale.js +27 -0
- package/.output/server/node_modules/d3-time-format/src/index.js +4 -0
- package/.output/server/node_modules/d3-time-format/src/isoFormat.js +13 -0
- package/.output/server/node_modules/d3-time-format/src/isoParse.js +13 -0
- package/.output/server/node_modules/d3-time-format/src/locale.js +697 -0
- package/.output/server/node_modules/d3-timer/package.json +53 -0
- package/.output/server/node_modules/d3-timer/src/index.js +13 -0
- package/.output/server/node_modules/d3-timer/src/interval.js +17 -0
- package/.output/server/node_modules/d3-timer/src/timeout.js +11 -0
- package/.output/server/node_modules/d3-timer/src/timer.js +110 -0
- package/.output/server/node_modules/d3-transition/package.json +65 -0
- package/.output/server/node_modules/d3-transition/src/active.js +21 -0
- package/.output/server/node_modules/d3-transition/src/index.js +4 -0
- package/.output/server/node_modules/d3-transition/src/interrupt.js +24 -0
- package/.output/server/node_modules/d3-transition/src/selection/index.js +6 -0
- package/.output/server/node_modules/d3-transition/src/selection/interrupt.js +7 -0
- package/.output/server/node_modules/d3-transition/src/selection/transition.js +42 -0
- package/.output/server/node_modules/d3-transition/src/transition/attr.js +78 -0
- package/.output/server/node_modules/d3-transition/src/transition/attrTween.js +44 -0
- package/.output/server/node_modules/d3-transition/src/transition/delay.js +23 -0
- package/.output/server/node_modules/d3-transition/src/transition/duration.js +23 -0
- package/.output/server/node_modules/d3-transition/src/transition/ease.js +16 -0
- package/.output/server/node_modules/d3-transition/src/transition/easeVarying.js +14 -0
- package/.output/server/node_modules/d3-transition/src/transition/end.js +29 -0
- package/.output/server/node_modules/d3-transition/src/transition/filter.js +16 -0
- package/.output/server/node_modules/d3-transition/src/transition/index.js +73 -0
- package/.output/server/node_modules/d3-transition/src/transition/interpolate.js +10 -0
- package/.output/server/node_modules/d3-transition/src/transition/merge.js +19 -0
- package/.output/server/node_modules/d3-transition/src/transition/on.js +32 -0
- package/.output/server/node_modules/d3-transition/src/transition/remove.js +11 -0
- package/.output/server/node_modules/d3-transition/src/transition/schedule.js +153 -0
- package/.output/server/node_modules/d3-transition/src/transition/select.js +22 -0
- package/.output/server/node_modules/d3-transition/src/transition/selectAll.js +26 -0
- package/.output/server/node_modules/d3-transition/src/transition/selection.js +7 -0
- package/.output/server/node_modules/d3-transition/src/transition/style.js +80 -0
- package/.output/server/node_modules/d3-transition/src/transition/styleTween.js +24 -0
- package/.output/server/node_modules/d3-transition/src/transition/text.js +20 -0
- package/.output/server/node_modules/d3-transition/src/transition/textTween.js +24 -0
- package/.output/server/node_modules/d3-transition/src/transition/transition.js +24 -0
- package/.output/server/node_modules/d3-transition/src/transition/tween.js +81 -0
- package/.output/server/node_modules/d3-zoom/package.json +57 -0
- package/.output/server/node_modules/d3-zoom/src/constant.js +1 -0
- package/.output/server/node_modules/d3-zoom/src/event.js +14 -0
- package/.output/server/node_modules/d3-zoom/src/index.js +2 -0
- package/.output/server/node_modules/d3-zoom/src/noevent.js +8 -0
- package/.output/server/node_modules/d3-zoom/src/transform.js +51 -0
- package/.output/server/node_modules/d3-zoom/src/zoom.js +447 -0
- package/.output/server/node_modules/defu/dist/defu.mjs +69 -0
- package/.output/server/node_modules/defu/package.json +43 -0
- package/.output/server/node_modules/delaunator/index.js +480 -0
- package/.output/server/node_modules/delaunator/package.json +56 -0
- package/.output/server/node_modules/destr/dist/index.mjs +72 -0
- package/.output/server/node_modules/destr/package.json +47 -0
- package/.output/server/node_modules/devalue/index.js +4 -0
- package/.output/server/node_modules/devalue/package.json +37 -0
- package/.output/server/node_modules/devalue/src/base64.js +110 -0
- package/.output/server/node_modules/devalue/src/constants.js +6 -0
- package/.output/server/node_modules/devalue/src/parse.js +205 -0
- package/.output/server/node_modules/devalue/src/stringify.js +265 -0
- package/.output/server/node_modules/devalue/src/uneval.js +407 -0
- package/.output/server/node_modules/devalue/src/utils.js +118 -0
- package/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
- package/.output/server/node_modules/entities/dist/commonjs/decode.js +568 -0
- package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
- package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
- package/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
- package/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
- package/.output/server/node_modules/entities/dist/commonjs/package.json +3 -0
- package/.output/server/node_modules/entities/package.json +113 -0
- package/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
- package/.output/server/node_modules/estree-walker/package.json +37 -0
- package/.output/server/node_modules/file-uri-to-path/index.js +66 -0
- package/.output/server/node_modules/file-uri-to-path/package.json +32 -0
- package/.output/server/node_modules/h3/dist/index.mjs +2478 -0
- package/.output/server/node_modules/h3/package.json +75 -0
- package/.output/server/node_modules/hookable/dist/index.mjs +290 -0
- package/.output/server/node_modules/hookable/package.json +49 -0
- package/.output/server/node_modules/internmap/package.json +43 -0
- package/.output/server/node_modules/internmap/src/index.js +61 -0
- package/.output/server/node_modules/iron-webcrypto/dist/index.js +298 -0
- package/.output/server/node_modules/iron-webcrypto/package.json +72 -0
- package/.output/server/node_modules/marked/lib/marked.esm.js +72 -0
- package/.output/server/node_modules/marked/package.json +103 -0
- package/.output/server/node_modules/node-mock-http/dist/_polyfill/buffer/node.mjs +1 -0
- package/.output/server/node_modules/node-mock-http/dist/_polyfill/events/node.mjs +1 -0
- package/.output/server/node_modules/node-mock-http/dist/index.mjs +1 -0
- package/.output/server/node_modules/node-mock-http/package.json +63 -0
- package/.output/server/node_modules/radix3/dist/index.mjs +262 -0
- package/.output/server/node_modules/radix3/package.json +52 -0
- package/.output/server/node_modules/robust-predicates/esm/incircle.js +765 -0
- package/.output/server/node_modules/robust-predicates/esm/insphere.js +766 -0
- package/.output/server/node_modules/robust-predicates/esm/orient2d.js +184 -0
- package/.output/server/node_modules/robust-predicates/esm/orient3d.js +462 -0
- package/.output/server/node_modules/robust-predicates/esm/util.js +138 -0
- package/.output/server/node_modules/robust-predicates/index.js +5 -0
- package/.output/server/node_modules/robust-predicates/package.json +75 -0
- package/.output/server/node_modules/sortablejs/Sortable.min.js +2 -0
- package/.output/server/node_modules/sortablejs/package.json +56 -0
- package/.output/server/node_modules/source-map-js/lib/array-set.js +121 -0
- package/.output/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
- package/.output/server/node_modules/source-map-js/lib/base64.js +67 -0
- package/.output/server/node_modules/source-map-js/lib/binary-search.js +111 -0
- package/.output/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
- package/.output/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
- package/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
- package/.output/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
- package/.output/server/node_modules/source-map-js/lib/source-node.js +413 -0
- package/.output/server/node_modules/source-map-js/lib/util.js +594 -0
- package/.output/server/node_modules/source-map-js/package.json +71 -0
- package/.output/server/node_modules/source-map-js/source-map.js +8 -0
- package/.output/server/node_modules/ufo/dist/index.mjs +638 -0
- package/.output/server/node_modules/ufo/package.json +47 -0
- package/.output/server/node_modules/uncrypto/dist/crypto.node.mjs +16 -0
- package/.output/server/node_modules/uncrypto/package.json +60 -0
- package/.output/server/node_modules/unhead/dist/index.mjs +9 -0
- package/.output/server/node_modules/unhead/dist/parser.mjs +508 -0
- package/.output/server/node_modules/unhead/dist/plugins.mjs +101 -0
- package/.output/server/node_modules/unhead/dist/scripts.mjs +30 -0
- package/.output/server/node_modules/unhead/dist/server.mjs +182 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.B578PsDV.mjs +266 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.BPM0-cfG.mjs +44 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.BYvz9V1x.mjs +43 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.CApf5sj3.mjs +148 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.CGCfDSEL.mjs +180 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.CYpwL2hc.mjs +194 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.CbpEuj3y.mjs +71 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +196 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.ckV6dpEQ.mjs +166 -0
- package/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +38 -0
- package/.output/server/node_modules/unhead/dist/utils.mjs +5 -0
- package/.output/server/node_modules/unhead/package.json +105 -0
- package/.output/server/node_modules/vue/dist/vue.cjs.js +80 -0
- package/.output/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
- package/.output/server/node_modules/vue/index.js +7 -0
- package/.output/server/node_modules/vue/index.mjs +1 -0
- package/.output/server/node_modules/vue/package.json +112 -0
- package/.output/server/node_modules/vue/server-renderer/index.mjs +1 -0
- package/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +301 -0
- package/.output/server/node_modules/vue-bundle-renderer/package.json +55 -0
- package/.output/server/node_modules/vue-devtools-stub/dist/index.mjs +11 -0
- package/.output/server/node_modules/vue-devtools-stub/package.json +41 -0
- package/.output/server/node_modules/vue-router/dist/devtools-EWN81iOl.mjs +1220 -0
- package/.output/server/node_modules/vue-router/dist/vue-router.mjs +1557 -0
- package/.output/server/node_modules/vue-router/package.json +153 -0
- package/.output/server/node_modules/vue-router/vue-router.node.mjs +2 -0
- package/.output/server/node_modules/vuedraggable/dist/vuedraggable.umd.min.js +2 -0
- package/.output/server/node_modules/vuedraggable/package.json +97 -0
- package/.output/server/node_modules/yaml/dist/compose/compose-collection.js +90 -0
- package/.output/server/node_modules/yaml/dist/compose/compose-doc.js +45 -0
- package/.output/server/node_modules/yaml/dist/compose/compose-node.js +105 -0
- package/.output/server/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
- package/.output/server/node_modules/yaml/dist/compose/composer.js +222 -0
- package/.output/server/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
- package/.output/server/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
- package/.output/server/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
- package/.output/server/node_modules/yaml/dist/compose/resolve-end.js +39 -0
- package/.output/server/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
- package/.output/server/node_modules/yaml/dist/compose/resolve-flow-scalar.js +225 -0
- package/.output/server/node_modules/yaml/dist/compose/resolve-props.js +148 -0
- package/.output/server/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
- package/.output/server/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
- package/.output/server/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
- package/.output/server/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
- package/.output/server/node_modules/yaml/dist/doc/Document.js +337 -0
- package/.output/server/node_modules/yaml/dist/doc/anchors.js +76 -0
- package/.output/server/node_modules/yaml/dist/doc/applyReviver.js +57 -0
- package/.output/server/node_modules/yaml/dist/doc/createNode.js +90 -0
- package/.output/server/node_modules/yaml/dist/doc/directives.js +178 -0
- package/.output/server/node_modules/yaml/dist/errors.js +62 -0
- package/.output/server/node_modules/yaml/dist/index.js +50 -0
- package/.output/server/node_modules/yaml/dist/log.js +19 -0
- package/.output/server/node_modules/yaml/dist/nodes/Alias.js +116 -0
- package/.output/server/node_modules/yaml/dist/nodes/Collection.js +151 -0
- package/.output/server/node_modules/yaml/dist/nodes/Node.js +40 -0
- package/.output/server/node_modules/yaml/dist/nodes/Pair.js +39 -0
- package/.output/server/node_modules/yaml/dist/nodes/Scalar.js +27 -0
- package/.output/server/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
- package/.output/server/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
- package/.output/server/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
- package/.output/server/node_modules/yaml/dist/nodes/identity.js +53 -0
- package/.output/server/node_modules/yaml/dist/nodes/toJS.js +39 -0
- package/.output/server/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
- package/.output/server/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
- package/.output/server/node_modules/yaml/dist/parse/cst-visit.js +99 -0
- package/.output/server/node_modules/yaml/dist/parse/cst.js +112 -0
- package/.output/server/node_modules/yaml/dist/parse/lexer.js +719 -0
- package/.output/server/node_modules/yaml/dist/parse/line-counter.js +41 -0
- package/.output/server/node_modules/yaml/dist/parse/parser.js +972 -0
- package/.output/server/node_modules/yaml/dist/public-api.js +107 -0
- package/.output/server/node_modules/yaml/dist/schema/Schema.js +39 -0
- package/.output/server/node_modules/yaml/dist/schema/common/map.js +19 -0
- package/.output/server/node_modules/yaml/dist/schema/common/null.js +17 -0
- package/.output/server/node_modules/yaml/dist/schema/common/seq.js +19 -0
- package/.output/server/node_modules/yaml/dist/schema/common/string.js +16 -0
- package/.output/server/node_modules/yaml/dist/schema/core/bool.js +21 -0
- package/.output/server/node_modules/yaml/dist/schema/core/float.js +47 -0
- package/.output/server/node_modules/yaml/dist/schema/core/int.js +42 -0
- package/.output/server/node_modules/yaml/dist/schema/core/schema.js +25 -0
- package/.output/server/node_modules/yaml/dist/schema/json/schema.js +64 -0
- package/.output/server/node_modules/yaml/dist/schema/tags.js +99 -0
- package/.output/server/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
- package/.output/server/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
- package/.output/server/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
- package/.output/server/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
- package/.output/server/node_modules/yaml/dist/schema/yaml-1.1/merge.js +68 -0
- package/.output/server/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
- package/.output/server/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
- package/.output/server/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
- package/.output/server/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
- package/.output/server/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
- package/.output/server/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
- package/.output/server/node_modules/yaml/dist/stringify/stringify.js +131 -0
- package/.output/server/node_modules/yaml/dist/stringify/stringifyCollection.js +145 -0
- package/.output/server/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
- package/.output/server/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
- package/.output/server/node_modules/yaml/dist/stringify/stringifyNumber.js +26 -0
- package/.output/server/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
- package/.output/server/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
- package/.output/server/node_modules/yaml/dist/visit.js +236 -0
- package/.output/server/node_modules/yaml/package.json +97 -0
- package/.output/server/package.json +90 -0
- package/README.md +396 -117
- package/bin/autocode +2337 -1
- package/package.json +61 -23
- package/templates/prompts/ready.en.md +29 -0
- package/templates/prompts/ready.fr.md +29 -0
- package/dist/cli/commands/comment.d.ts +0 -9
- package/dist/cli/commands/comment.d.ts.map +0 -1
- package/dist/cli/commands/comment.js +0 -40
- package/dist/cli/commands/comment.js.map +0 -1
- package/dist/cli/commands/health.d.ts +0 -9
- package/dist/cli/commands/health.d.ts.map +0 -1
- package/dist/cli/commands/health.js +0 -101
- package/dist/cli/commands/health.js.map +0 -1
- package/dist/cli/commands/init.d.ts +0 -9
- package/dist/cli/commands/init.d.ts.map +0 -1
- package/dist/cli/commands/init.js +0 -63
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/cli/commands/list.d.ts +0 -9
- package/dist/cli/commands/list.d.ts.map +0 -1
- package/dist/cli/commands/list.js +0 -121
- package/dist/cli/commands/list.js.map +0 -1
- package/dist/cli/commands/move.d.ts +0 -9
- package/dist/cli/commands/move.d.ts.map +0 -1
- package/dist/cli/commands/move.js +0 -66
- package/dist/cli/commands/move.js.map +0 -1
- package/dist/cli/commands/new.d.ts +0 -9
- package/dist/cli/commands/new.d.ts.map +0 -1
- package/dist/cli/commands/new.js +0 -105
- package/dist/cli/commands/new.js.map +0 -1
- package/dist/cli/commands/next.d.ts +0 -9
- package/dist/cli/commands/next.d.ts.map +0 -1
- package/dist/cli/commands/next.js +0 -46
- package/dist/cli/commands/next.js.map +0 -1
- package/dist/cli/commands/parent.d.ts +0 -9
- package/dist/cli/commands/parent.d.ts.map +0 -1
- package/dist/cli/commands/parent.js +0 -94
- package/dist/cli/commands/parent.js.map +0 -1
- package/dist/cli/commands/pipeline.d.ts +0 -9
- package/dist/cli/commands/pipeline.d.ts.map +0 -1
- package/dist/cli/commands/pipeline.js +0 -68
- package/dist/cli/commands/pipeline.js.map +0 -1
- package/dist/cli/commands/pipeline.test.d.ts +0 -5
- package/dist/cli/commands/pipeline.test.d.ts.map +0 -1
- package/dist/cli/commands/pipeline.test.js +0 -171
- package/dist/cli/commands/pipeline.test.js.map +0 -1
- package/dist/cli/commands/serve.d.ts +0 -9
- package/dist/cli/commands/serve.d.ts.map +0 -1
- package/dist/cli/commands/serve.js +0 -249
- package/dist/cli/commands/serve.js.map +0 -1
- package/dist/cli/commands/show.d.ts +0 -9
- package/dist/cli/commands/show.d.ts.map +0 -1
- package/dist/cli/commands/show.js +0 -111
- package/dist/cli/commands/show.js.map +0 -1
- package/dist/cli/commands/stats.d.ts +0 -9
- package/dist/cli/commands/stats.d.ts.map +0 -1
- package/dist/cli/commands/stats.js +0 -108
- package/dist/cli/commands/stats.js.map +0 -1
- package/dist/cli/commands/sync.d.ts +0 -9
- package/dist/cli/commands/sync.d.ts.map +0 -1
- package/dist/cli/commands/sync.js +0 -91
- package/dist/cli/commands/sync.js.map +0 -1
- package/dist/cli/commands/tunnel.d.ts +0 -9
- package/dist/cli/commands/tunnel.d.ts.map +0 -1
- package/dist/cli/commands/tunnel.js +0 -90
- package/dist/cli/commands/tunnel.js.map +0 -1
- package/dist/cli/parser.d.ts +0 -13
- package/dist/cli/parser.d.ts.map +0 -1
- package/dist/cli/parser.js +0 -67
- package/dist/cli/parser.js.map +0 -1
- package/dist/core/catalog.d.ts +0 -52
- package/dist/core/catalog.d.ts.map +0 -1
- package/dist/core/catalog.js +0 -102
- package/dist/core/catalog.js.map +0 -1
- package/dist/core/column.d.ts +0 -50
- package/dist/core/column.d.ts.map +0 -1
- package/dist/core/column.js +0 -134
- package/dist/core/column.js.map +0 -1
- package/dist/core/config.d.ts +0 -20
- package/dist/core/config.d.ts.map +0 -1
- package/dist/core/config.js +0 -54
- package/dist/core/config.js.map +0 -1
- package/dist/core/features.d.ts +0 -24
- package/dist/core/features.d.ts.map +0 -1
- package/dist/core/features.js +0 -33
- package/dist/core/features.js.map +0 -1
- package/dist/core/hierarchy.d.ts +0 -121
- package/dist/core/hierarchy.d.ts.map +0 -1
- package/dist/core/hierarchy.js +0 -350
- package/dist/core/hierarchy.js.map +0 -1
- package/dist/core/implementations/FilesystemIssueRepository.d.ts +0 -18
- package/dist/core/implementations/FilesystemIssueRepository.d.ts.map +0 -1
- package/dist/core/implementations/FilesystemIssueRepository.js +0 -149
- package/dist/core/implementations/FilesystemIssueRepository.js.map +0 -1
- package/dist/core/interfaces/IHierarchyService.d.ts +0 -32
- package/dist/core/interfaces/IHierarchyService.d.ts.map +0 -1
- package/dist/core/interfaces/IHierarchyService.js +0 -2
- package/dist/core/interfaces/IHierarchyService.js.map +0 -1
- package/dist/core/interfaces/IIssueRepository.d.ts +0 -55
- package/dist/core/interfaces/IIssueRepository.d.ts.map +0 -1
- package/dist/core/interfaces/IIssueRepository.js +0 -2
- package/dist/core/interfaces/IIssueRepository.js.map +0 -1
- package/dist/core/interfaces/IPipelineService.d.ts +0 -38
- package/dist/core/interfaces/IPipelineService.d.ts.map +0 -1
- package/dist/core/interfaces/IPipelineService.js +0 -2
- package/dist/core/interfaces/IPipelineService.js.map +0 -1
- package/dist/core/interfaces/IWorkflowService.d.ts +0 -38
- package/dist/core/interfaces/IWorkflowService.d.ts.map +0 -1
- package/dist/core/interfaces/IWorkflowService.js +0 -2
- package/dist/core/interfaces/IWorkflowService.js.map +0 -1
- package/dist/core/interfaces/index.d.ts +0 -5
- package/dist/core/interfaces/index.d.ts.map +0 -1
- package/dist/core/interfaces/index.js +0 -2
- package/dist/core/interfaces/index.js.map +0 -1
- package/dist/core/issue.d.ts +0 -62
- package/dist/core/issue.d.ts.map +0 -1
- package/dist/core/issue.js +0 -255
- package/dist/core/issue.js.map +0 -1
- package/dist/core/loop-detector.d.ts +0 -45
- package/dist/core/loop-detector.d.ts.map +0 -1
- package/dist/core/loop-detector.js +0 -81
- package/dist/core/loop-detector.js.map +0 -1
- package/dist/core/pipeline.d.ts +0 -70
- package/dist/core/pipeline.d.ts.map +0 -1
- package/dist/core/pipeline.js +0 -199
- package/dist/core/pipeline.js.map +0 -1
- package/dist/core/sync.d.ts +0 -41
- package/dist/core/sync.d.ts.map +0 -1
- package/dist/core/sync.js +0 -272
- package/dist/core/sync.js.map +0 -1
- package/dist/core/validation.d.ts +0 -26
- package/dist/core/validation.d.ts.map +0 -1
- package/dist/core/validation.js +0 -67
- package/dist/core/validation.js.map +0 -1
- package/dist/core/workflow.d.ts +0 -68
- package/dist/core/workflow.d.ts.map +0 -1
- package/dist/core/workflow.js +0 -226
- package/dist/core/workflow.js.map +0 -1
- package/dist/index.d.ts +0 -8
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -12
- package/dist/index.js.map +0 -1
- package/dist/server/api-autocomplete.test.d.ts +0 -6
- package/dist/server/api-autocomplete.test.d.ts.map +0 -1
- package/dist/server/api-autocomplete.test.js +0 -249
- package/dist/server/api-autocomplete.test.js.map +0 -1
- package/dist/server/api.d.ts +0 -9
- package/dist/server/api.d.ts.map +0 -1
- package/dist/server/api.js +0 -1377
- package/dist/server/api.js.map +0 -1
- package/dist/server/dashboard/index.d.ts +0 -10
- package/dist/server/dashboard/index.d.ts.map +0 -1
- package/dist/server/dashboard/index.js +0 -16
- package/dist/server/dashboard/index.js.map +0 -1
- package/dist/server/dashboard/pages/autocreate.d.ts +0 -9
- package/dist/server/dashboard/pages/autocreate.d.ts.map +0 -1
- package/dist/server/dashboard/pages/autocreate.js +0 -854
- package/dist/server/dashboard/pages/autocreate.js.map +0 -1
- package/dist/server/dashboard/pages/changelog.d.ts +0 -9
- package/dist/server/dashboard/pages/changelog.d.ts.map +0 -1
- package/dist/server/dashboard/pages/changelog.js +0 -160
- package/dist/server/dashboard/pages/changelog.js.map +0 -1
- package/dist/server/dashboard/pages/column-edit.d.ts +0 -8
- package/dist/server/dashboard/pages/column-edit.d.ts.map +0 -1
- package/dist/server/dashboard/pages/column-edit.js +0 -303
- package/dist/server/dashboard/pages/column-edit.js.map +0 -1
- package/dist/server/dashboard/pages/column-prompt.d.ts +0 -8
- package/dist/server/dashboard/pages/column-prompt.d.ts.map +0 -1
- package/dist/server/dashboard/pages/column-prompt.js +0 -249
- package/dist/server/dashboard/pages/column-prompt.js.map +0 -1
- package/dist/server/dashboard/pages/column-terminal.d.ts +0 -8
- package/dist/server/dashboard/pages/column-terminal.d.ts.map +0 -1
- package/dist/server/dashboard/pages/column-terminal.js +0 -550
- package/dist/server/dashboard/pages/column-terminal.js.map +0 -1
- package/dist/server/dashboard/pages/index.d.ts +0 -21
- package/dist/server/dashboard/pages/index.d.ts.map +0 -1
- package/dist/server/dashboard/pages/index.js +0 -21
- package/dist/server/dashboard/pages/index.js.map +0 -1
- package/dist/server/dashboard/pages/issue-comments.d.ts +0 -8
- package/dist/server/dashboard/pages/issue-comments.d.ts.map +0 -1
- package/dist/server/dashboard/pages/issue-comments.js +0 -283
- package/dist/server/dashboard/pages/issue-comments.js.map +0 -1
- package/dist/server/dashboard/pages/issue-graph.d.ts +0 -9
- package/dist/server/dashboard/pages/issue-graph.d.ts.map +0 -1
- package/dist/server/dashboard/pages/issue-graph.js +0 -629
- package/dist/server/dashboard/pages/issue-graph.js.map +0 -1
- package/dist/server/dashboard/pages/issue-history.d.ts +0 -8
- package/dist/server/dashboard/pages/issue-history.d.ts.map +0 -1
- package/dist/server/dashboard/pages/issue-history.js +0 -149
- package/dist/server/dashboard/pages/issue-history.js.map +0 -1
- package/dist/server/dashboard/pages/issue-shared.d.ts +0 -27
- package/dist/server/dashboard/pages/issue-shared.d.ts.map +0 -1
- package/dist/server/dashboard/pages/issue-shared.js +0 -297
- package/dist/server/dashboard/pages/issue-shared.js.map +0 -1
- package/dist/server/dashboard/pages/issue-terminal.d.ts +0 -8
- package/dist/server/dashboard/pages/issue-terminal.d.ts.map +0 -1
- package/dist/server/dashboard/pages/issue-terminal.js +0 -363
- package/dist/server/dashboard/pages/issue-terminal.js.map +0 -1
- package/dist/server/dashboard/pages/issue-view.d.ts +0 -8
- package/dist/server/dashboard/pages/issue-view.d.ts.map +0 -1
- package/dist/server/dashboard/pages/issue-view.js +0 -386
- package/dist/server/dashboard/pages/issue-view.js.map +0 -1
- package/dist/server/dashboard/pages/main-dashboard.d.ts +0 -11
- package/dist/server/dashboard/pages/main-dashboard.d.ts.map +0 -1
- package/dist/server/dashboard/pages/main-dashboard.js +0 -228
- package/dist/server/dashboard/pages/main-dashboard.js.map +0 -1
- package/dist/server/dashboard/pages/new-issue.d.ts +0 -8
- package/dist/server/dashboard/pages/new-issue.d.ts.map +0 -1
- package/dist/server/dashboard/pages/new-issue.js +0 -898
- package/dist/server/dashboard/pages/new-issue.js.map +0 -1
- package/dist/server/dashboard/pages/new-issue.test.d.ts +0 -6
- package/dist/server/dashboard/pages/new-issue.test.d.ts.map +0 -1
- package/dist/server/dashboard/pages/new-issue.test.js +0 -824
- package/dist/server/dashboard/pages/new-issue.test.js.map +0 -1
- package/dist/server/dashboard/pages/pipeline-configurator.d.ts +0 -8
- package/dist/server/dashboard/pages/pipeline-configurator.d.ts.map +0 -1
- package/dist/server/dashboard/pages/pipeline-configurator.js +0 -1783
- package/dist/server/dashboard/pages/pipeline-configurator.js.map +0 -1
- package/dist/server/dashboard/pages/shared.d.ts +0 -8
- package/dist/server/dashboard/pages/shared.d.ts.map +0 -1
- package/dist/server/dashboard/pages/shared.js +0 -58
- package/dist/server/dashboard/pages/shared.js.map +0 -1
- package/dist/server/dashboard/pages/stats-page.d.ts +0 -8
- package/dist/server/dashboard/pages/stats-page.d.ts.map +0 -1
- package/dist/server/dashboard/pages/stats-page.js +0 -558
- package/dist/server/dashboard/pages/stats-page.js.map +0 -1
- package/dist/server/dashboard/pages/water-quality-form.d.ts +0 -10
- package/dist/server/dashboard/pages/water-quality-form.d.ts.map +0 -1
- package/dist/server/dashboard/pages/water-quality-form.js +0 -910
- package/dist/server/dashboard/pages/water-quality-form.js.map +0 -1
- package/dist/server/dashboard/scripts/index.d.ts +0 -11
- package/dist/server/dashboard/scripts/index.d.ts.map +0 -1
- package/dist/server/dashboard/scripts/index.js +0 -1278
- package/dist/server/dashboard/scripts/index.js.map +0 -1
- package/dist/server/dashboard/shared/header.d.ts +0 -88
- package/dist/server/dashboard/shared/header.d.ts.map +0 -1
- package/dist/server/dashboard/shared/header.js +0 -209
- package/dist/server/dashboard/shared/header.js.map +0 -1
- package/dist/server/dashboard/shared/i18n-script.d.ts +0 -45
- package/dist/server/dashboard/shared/i18n-script.d.ts.map +0 -1
- package/dist/server/dashboard/shared/i18n-script.js +0 -204
- package/dist/server/dashboard/shared/i18n-script.js.map +0 -1
- package/dist/server/dashboard/shared/index.d.ts +0 -19
- package/dist/server/dashboard/shared/index.d.ts.map +0 -1
- package/dist/server/dashboard/shared/index.js +0 -22
- package/dist/server/dashboard/shared/index.js.map +0 -1
- package/dist/server/dashboard/shared/translations.d.ts +0 -515
- package/dist/server/dashboard/shared/translations.d.ts.map +0 -1
- package/dist/server/dashboard/shared/translations.js +0 -591
- package/dist/server/dashboard/shared/translations.js.map +0 -1
- package/dist/server/dashboard/styles/base.d.ts +0 -5
- package/dist/server/dashboard/styles/base.d.ts.map +0 -1
- package/dist/server/dashboard/styles/base.js +0 -130
- package/dist/server/dashboard/styles/base.js.map +0 -1
- package/dist/server/dashboard/styles/board.d.ts +0 -5
- package/dist/server/dashboard/styles/board.d.ts.map +0 -1
- package/dist/server/dashboard/styles/board.js +0 -168
- package/dist/server/dashboard/styles/board.js.map +0 -1
- package/dist/server/dashboard/styles/comments.d.ts +0 -5
- package/dist/server/dashboard/styles/comments.d.ts.map +0 -1
- package/dist/server/dashboard/styles/comments.js +0 -249
- package/dist/server/dashboard/styles/comments.js.map +0 -1
- package/dist/server/dashboard/styles/components.d.ts +0 -5
- package/dist/server/dashboard/styles/components.d.ts.map +0 -1
- package/dist/server/dashboard/styles/components.js +0 -360
- package/dist/server/dashboard/styles/components.js.map +0 -1
- package/dist/server/dashboard/styles/footer.d.ts +0 -5
- package/dist/server/dashboard/styles/footer.d.ts.map +0 -1
- package/dist/server/dashboard/styles/footer.js +0 -40
- package/dist/server/dashboard/styles/footer.js.map +0 -1
- package/dist/server/dashboard/styles/index.d.ts +0 -8
- package/dist/server/dashboard/styles/index.d.ts.map +0 -1
- package/dist/server/dashboard/styles/index.js +0 -27
- package/dist/server/dashboard/styles/index.js.map +0 -1
- package/dist/server/dashboard/styles/logs.d.ts +0 -5
- package/dist/server/dashboard/styles/logs.d.ts.map +0 -1
- package/dist/server/dashboard/styles/logs.js +0 -89
- package/dist/server/dashboard/styles/logs.js.map +0 -1
- package/dist/server/dashboard/styles/notifications.d.ts +0 -5
- package/dist/server/dashboard/styles/notifications.d.ts.map +0 -1
- package/dist/server/dashboard/styles/notifications.js +0 -51
- package/dist/server/dashboard/styles/notifications.js.map +0 -1
- package/dist/server/dashboard/styles/variables.d.ts +0 -5
- package/dist/server/dashboard/styles/variables.d.ts.map +0 -1
- package/dist/server/dashboard/styles/variables.js +0 -29
- package/dist/server/dashboard/styles/variables.js.map +0 -1
- package/dist/server/dashboard/utils.d.ts +0 -8
- package/dist/server/dashboard/utils.d.ts.map +0 -1
- package/dist/server/dashboard/utils.js +0 -14
- package/dist/server/dashboard/utils.js.map +0 -1
- package/dist/server/dashboard.d.ts +0 -8
- package/dist/server/dashboard.d.ts.map +0 -1
- package/dist/server/dashboard.js +0 -8
- package/dist/server/dashboard.js.map +0 -1
- package/dist/server/index.d.ts +0 -8
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js +0 -274
- package/dist/server/index.js.map +0 -1
- package/dist/server/watcher.d.ts +0 -13
- package/dist/server/watcher.d.ts.map +0 -1
- package/dist/server/watcher.js +0 -62
- package/dist/server/watcher.js.map +0 -1
- package/dist/server/websocket.d.ts +0 -46
- package/dist/server/websocket.d.ts.map +0 -1
- package/dist/server/websocket.js +0 -204
- package/dist/server/websocket.js.map +0 -1
- package/dist/services/autocreate.d.ts +0 -34
- package/dist/services/autocreate.d.ts.map +0 -1
- package/dist/services/autocreate.js +0 -503
- package/dist/services/autocreate.js.map +0 -1
- package/dist/services/claude.d.ts +0 -79
- package/dist/services/claude.d.ts.map +0 -1
- package/dist/services/claude.js +0 -519
- package/dist/services/claude.js.map +0 -1
- package/dist/services/issue-io.d.ts +0 -81
- package/dist/services/issue-io.d.ts.map +0 -1
- package/dist/services/issue-io.js +0 -249
- package/dist/services/issue-io.js.map +0 -1
- package/dist/services/monitoring.d.ts +0 -47
- package/dist/services/monitoring.d.ts.map +0 -1
- package/dist/services/monitoring.js +0 -136
- package/dist/services/monitoring.js.map +0 -1
- package/dist/services/stats.d.ts +0 -58
- package/dist/services/stats.d.ts.map +0 -1
- package/dist/services/stats.js +0 -196
- package/dist/services/stats.js.map +0 -1
- package/dist/types/index.d.ts +0 -213
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -8
- package/dist/types/index.js.map +0 -1
- package/dist/utils/config.d.ts +0 -101
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js +0 -98
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/fs.d.ts +0 -60
- package/dist/utils/fs.d.ts.map +0 -1
- package/dist/utils/fs.js +0 -129
- package/dist/utils/fs.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -23
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -56
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/tunnel.d.ts +0 -62
- package/dist/utils/tunnel.d.ts.map +0 -1
- package/dist/utils/tunnel.js +0 -240
- package/dist/utils/tunnel.js.map +0 -1
- package/dist/utils/version-check.d.ts +0 -26
- package/dist/utils/version-check.d.ts.map +0 -1
- package/dist/utils/version-check.js +0 -234
- package/dist/utils/version-check.js.map +0 -1
package/bin/autocode
CHANGED
|
@@ -1,2 +1,2338 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
import { spawn, execSync } from 'node:child_process';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { dirname, resolve, join } from 'node:path';
|
|
6
|
+
import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'node:fs';
|
|
7
|
+
|
|
8
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
const root = resolve(__dirname, '..');
|
|
10
|
+
|
|
11
|
+
// Parse arguments
|
|
12
|
+
const args = process.argv.slice(2);
|
|
13
|
+
const command = args[0] || 'serve';
|
|
14
|
+
const commandArgs = args.slice(1);
|
|
15
|
+
|
|
16
|
+
// API base URL for CLI commands (required for API calls)
|
|
17
|
+
function getApiBase() {
|
|
18
|
+
const url = process.env.AUTOCODE_API_URL;
|
|
19
|
+
if (!url) {
|
|
20
|
+
console.error('Error: AUTOCODE_API_URL environment variable is required');
|
|
21
|
+
console.error('Example: export AUTOCODE_API_URL=http://localhost:3000');
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
return url;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Help message
|
|
28
|
+
function showHelp() {
|
|
29
|
+
console.log(`
|
|
30
|
+
AutoCode CLI - Issue tracking dashboard
|
|
31
|
+
|
|
32
|
+
Usage:
|
|
33
|
+
autocode [command] [options]
|
|
34
|
+
|
|
35
|
+
Commands:
|
|
36
|
+
serve [options] Start the dashboard server (default)
|
|
37
|
+
show <key> Show issue details
|
|
38
|
+
history <key> Show full issue history
|
|
39
|
+
list [options] List issues
|
|
40
|
+
comment <key> <text> Add comment to an issue
|
|
41
|
+
start <key> Start issue (move from backlog only)
|
|
42
|
+
next <key> Advance issue to next column
|
|
43
|
+
move <key> <column> Move issue to a different column
|
|
44
|
+
new <title> [desc] Create a new issue
|
|
45
|
+
parent <key> [parent] Manage parent relationships
|
|
46
|
+
health Check workflow health
|
|
47
|
+
stats Show usage statistics
|
|
48
|
+
init Initialize project structure
|
|
49
|
+
catalog [action] List or manage column catalog
|
|
50
|
+
pipeline <action> Manage pipelines
|
|
51
|
+
help Show this help message
|
|
52
|
+
|
|
53
|
+
Pipeline Commands:
|
|
54
|
+
pipeline list List all pipelines
|
|
55
|
+
pipeline show <name> Show pipeline with columns
|
|
56
|
+
pipeline create <name> Create new pipeline
|
|
57
|
+
pipeline delete <name> Delete pipeline version
|
|
58
|
+
pipeline activate <name> Activate pipeline version
|
|
59
|
+
pipeline versions <name> List all versions
|
|
60
|
+
pipeline draft <name> Create draft from latest
|
|
61
|
+
pipeline finalize <name> Finalize draft (--activate)
|
|
62
|
+
pipeline add-column Add column to pipeline
|
|
63
|
+
pipeline remove-column Remove column from pipeline
|
|
64
|
+
pipeline move-column Move column between segments
|
|
65
|
+
|
|
66
|
+
Catalog Commands:
|
|
67
|
+
catalog List available columns
|
|
68
|
+
catalog add <slug> Add new column to catalog
|
|
69
|
+
|
|
70
|
+
Serve Options:
|
|
71
|
+
-p, --port <port> Server port (default: 3000)
|
|
72
|
+
-e, --expose Expose via Cloudflare tunnel
|
|
73
|
+
--debug Enable debug logging to autocode/debug.log
|
|
74
|
+
|
|
75
|
+
Show Options:
|
|
76
|
+
--json Output as JSON
|
|
77
|
+
|
|
78
|
+
History Options:
|
|
79
|
+
--json Output as JSON (includes all data)
|
|
80
|
+
--full Show complete prompt and terminal content
|
|
81
|
+
--limit <N> Show only last N entries
|
|
82
|
+
|
|
83
|
+
List Options:
|
|
84
|
+
-c, --column <slug> Filter by column
|
|
85
|
+
-p, --priority <P0-P3> Filter by priority
|
|
86
|
+
-l, --label <label> Filter by label
|
|
87
|
+
--parent <key> Filter by parent
|
|
88
|
+
--tree Display as tree
|
|
89
|
+
--json Output as JSON
|
|
90
|
+
|
|
91
|
+
New Issue Options:
|
|
92
|
+
-p, --priority <P0-P3> Priority (default: P2)
|
|
93
|
+
-l, --labels <labels> Comma-separated labels
|
|
94
|
+
-a, --acceptance <crit> Acceptance criteria
|
|
95
|
+
-c, --column <slug> Target column (default: backlog)
|
|
96
|
+
--parent <key> Parent issue key
|
|
97
|
+
|
|
98
|
+
Move Options:
|
|
99
|
+
-f, --force Force move (skip validation)
|
|
100
|
+
|
|
101
|
+
Health Options:
|
|
102
|
+
--json Output as JSON
|
|
103
|
+
-v, --verbose Show detailed information
|
|
104
|
+
|
|
105
|
+
Stats Options:
|
|
106
|
+
--json Output as JSON
|
|
107
|
+
--session Show only session stats
|
|
108
|
+
--totals Show only total stats
|
|
109
|
+
|
|
110
|
+
Pipeline Options:
|
|
111
|
+
--version <N> Specific version
|
|
112
|
+
--json Output as JSON
|
|
113
|
+
--description "..." Pipeline description
|
|
114
|
+
--segment <segment> Segment (definition|action|finish)
|
|
115
|
+
--position <N> Position in segment
|
|
116
|
+
--name "Display Name" Column display name
|
|
117
|
+
--activate Activate after finalizing
|
|
118
|
+
|
|
119
|
+
Examples:
|
|
120
|
+
autocode Start server
|
|
121
|
+
autocode serve -p 8080 Start on port 8080
|
|
122
|
+
autocode show AC-000001 Show issue details
|
|
123
|
+
autocode history AC-000001 Show full issue history
|
|
124
|
+
autocode list -c 07_in-progress List issues in column
|
|
125
|
+
autocode list --tree Show issue hierarchy
|
|
126
|
+
autocode comment AC-000001 "Done" Add comment
|
|
127
|
+
autocode start AC-000001 Start issue from backlog
|
|
128
|
+
autocode next AC-000001 Advance issue
|
|
129
|
+
autocode move AC-000001 07_in-progress Move issue
|
|
130
|
+
autocode new "Fix bug" -p P1 -l bug Create issue
|
|
131
|
+
autocode parent AC-000001 Show parent/children
|
|
132
|
+
autocode parent AC-000001 AC-000002 Set parent
|
|
133
|
+
autocode health Check for stuck issues
|
|
134
|
+
autocode stats Show Claude usage stats
|
|
135
|
+
autocode pipeline list List all pipelines
|
|
136
|
+
autocode pipeline show default Show pipeline details
|
|
137
|
+
autocode pipeline add-column default review --segment action
|
|
138
|
+
autocode catalog add my-col --segment action --name "My Column"
|
|
139
|
+
`);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// Parse port from arguments
|
|
143
|
+
function getPort() {
|
|
144
|
+
const portIndex = args.findIndex(a => a === '-p' || a === '--port');
|
|
145
|
+
if (portIndex !== -1 && args[portIndex + 1]) {
|
|
146
|
+
return parseInt(args[portIndex + 1], 10);
|
|
147
|
+
}
|
|
148
|
+
return 3000;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// Check if --expose flag is present
|
|
152
|
+
function hasExposeFlag() {
|
|
153
|
+
return args.includes('-e') || args.includes('--expose');
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// Check if --debug flag is present
|
|
157
|
+
function hasDebugFlag() {
|
|
158
|
+
return args.includes('--debug');
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Check if cloudflared is installed
|
|
162
|
+
function isCloudflaredInstalled() {
|
|
163
|
+
try {
|
|
164
|
+
execSync('which cloudflared', { stdio: 'ignore' });
|
|
165
|
+
return true;
|
|
166
|
+
} catch {
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// Start cloudflare tunnel
|
|
172
|
+
function startTunnel(port) {
|
|
173
|
+
return new Promise((resolve, reject) => {
|
|
174
|
+
console.log('Starting Cloudflare tunnel...');
|
|
175
|
+
|
|
176
|
+
const tunnel = spawn('cloudflared', ['tunnel', '--url', `http://localhost:${port}`], {
|
|
177
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
if (!tunnel.pid) {
|
|
181
|
+
reject(new Error('Failed to start cloudflared process'));
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
let url = null;
|
|
186
|
+
let resolved = false;
|
|
187
|
+
const urlRegex = /https:\/\/[a-zA-Z0-9-]+\.trycloudflare\.com/;
|
|
188
|
+
|
|
189
|
+
// Timeout for URL extraction
|
|
190
|
+
const timeout = setTimeout(() => {
|
|
191
|
+
if (!resolved) {
|
|
192
|
+
resolved = true;
|
|
193
|
+
if (url) {
|
|
194
|
+
resolve({ tunnel, url });
|
|
195
|
+
} else {
|
|
196
|
+
reject(new Error('Timeout waiting for tunnel URL'));
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}, 30000);
|
|
200
|
+
|
|
201
|
+
// Parse URL from stderr (cloudflared outputs to stderr)
|
|
202
|
+
tunnel.stderr.on('data', (data) => {
|
|
203
|
+
const output = data.toString();
|
|
204
|
+
const match = output.match(urlRegex);
|
|
205
|
+
if (match && !resolved) {
|
|
206
|
+
url = match[0];
|
|
207
|
+
resolved = true;
|
|
208
|
+
clearTimeout(timeout);
|
|
209
|
+
resolve({ tunnel, url });
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
tunnel.on('exit', (code) => {
|
|
214
|
+
if (!resolved) {
|
|
215
|
+
resolved = true;
|
|
216
|
+
clearTimeout(timeout);
|
|
217
|
+
reject(new Error(`cloudflared exited with code ${code}`));
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
tunnel.on('error', (err) => {
|
|
222
|
+
if (!resolved) {
|
|
223
|
+
resolved = true;
|
|
224
|
+
clearTimeout(timeout);
|
|
225
|
+
reject(err);
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// Start the Nitro server
|
|
232
|
+
async function startServer() {
|
|
233
|
+
const serverPath = resolve(root, '.output/server/index.mjs');
|
|
234
|
+
|
|
235
|
+
if (!existsSync(serverPath)) {
|
|
236
|
+
console.error('Error: .output/server/index.mjs not found');
|
|
237
|
+
console.error('Please run "npm run build" first');
|
|
238
|
+
process.exit(1);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
const port = getPort();
|
|
242
|
+
const expose = hasExposeFlag();
|
|
243
|
+
|
|
244
|
+
// Check cloudflared if expose is requested
|
|
245
|
+
if (expose && !isCloudflaredInstalled()) {
|
|
246
|
+
console.error('Error: cloudflared is not installed');
|
|
247
|
+
console.error('Install: https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/');
|
|
248
|
+
process.exit(1);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
const debugMode = hasDebugFlag();
|
|
252
|
+
|
|
253
|
+
const env = {
|
|
254
|
+
...process.env,
|
|
255
|
+
PORT: String(port),
|
|
256
|
+
NITRO_PORT: String(port),
|
|
257
|
+
AUTOCODE_DEBUG: String(debugMode),
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
console.log(`Starting AutoCode dashboard on port ${port}...`);
|
|
261
|
+
|
|
262
|
+
const server = spawn('node', [serverPath], {
|
|
263
|
+
stdio: 'inherit',
|
|
264
|
+
env,
|
|
265
|
+
});
|
|
266
|
+
|
|
267
|
+
let tunnelProcess = null;
|
|
268
|
+
|
|
269
|
+
// Start tunnel if requested
|
|
270
|
+
if (expose) {
|
|
271
|
+
try {
|
|
272
|
+
const { tunnel, url } = await startTunnel(port);
|
|
273
|
+
tunnelProcess = tunnel;
|
|
274
|
+
console.log(`\n🌐 Public URL: ${url}\n`);
|
|
275
|
+
} catch (err) {
|
|
276
|
+
console.error('Failed to start tunnel:', err.message);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
server.on('error', (err) => {
|
|
281
|
+
console.error('Failed to start server:', err);
|
|
282
|
+
if (tunnelProcess) tunnelProcess.kill();
|
|
283
|
+
process.exit(1);
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
server.on('exit', (code) => {
|
|
287
|
+
if (tunnelProcess) tunnelProcess.kill();
|
|
288
|
+
process.exit(code || 0);
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
// Handle Ctrl+C
|
|
292
|
+
process.on('SIGINT', () => {
|
|
293
|
+
console.log('\nShutting down...');
|
|
294
|
+
server.kill('SIGTERM');
|
|
295
|
+
if (tunnelProcess) tunnelProcess.kill();
|
|
296
|
+
process.exit(0);
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
// ============================================
|
|
301
|
+
// CLI Commands (use API)
|
|
302
|
+
// ============================================
|
|
303
|
+
|
|
304
|
+
async function commentCmd() {
|
|
305
|
+
const key = commandArgs[0];
|
|
306
|
+
const text = commandArgs.slice(1).join(' ');
|
|
307
|
+
|
|
308
|
+
if (!key || !text) {
|
|
309
|
+
console.error('Usage: autocode comment <issue-key> "<text>"');
|
|
310
|
+
process.exit(1);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
if (!key.match(/^AC-\d{6}$/)) {
|
|
314
|
+
console.error(`Invalid issue key: ${key}`);
|
|
315
|
+
process.exit(1);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
try {
|
|
319
|
+
const res = await fetch(`${getApiBase()}/api/issues/${key}/comments`, {
|
|
320
|
+
method: 'POST',
|
|
321
|
+
headers: { 'Content-Type': 'application/json' },
|
|
322
|
+
body: JSON.stringify({ content: text, author: 'Claude' })
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
if (!res.ok) {
|
|
326
|
+
const err = await res.json().catch(() => ({}));
|
|
327
|
+
console.error(`Failed: ${err.message || res.statusText}`);
|
|
328
|
+
process.exit(1);
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
console.log(`✓ Added comment to ${key}`);
|
|
332
|
+
} catch (e) {
|
|
333
|
+
console.error(`Error: ${e.message}`);
|
|
334
|
+
console.error('Make sure autocode server is running');
|
|
335
|
+
process.exit(1);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
async function startCmd() {
|
|
340
|
+
const key = commandArgs[0];
|
|
341
|
+
|
|
342
|
+
if (!key) {
|
|
343
|
+
console.error('Usage: autocode start <issue-key>');
|
|
344
|
+
process.exit(1);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
if (!key.match(/^AC-\d{6}$/)) {
|
|
348
|
+
console.error(`Invalid issue key: ${key}`);
|
|
349
|
+
process.exit(1);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
try {
|
|
353
|
+
// Get current column
|
|
354
|
+
const issueRes = await fetch(`${getApiBase()}/api/issues/${key}`);
|
|
355
|
+
if (!issueRes.ok) {
|
|
356
|
+
console.error(`Issue '${key}' not found`);
|
|
357
|
+
process.exit(1);
|
|
358
|
+
}
|
|
359
|
+
const issue = await issueRes.json();
|
|
360
|
+
const fromCol = issue.column_slug;
|
|
361
|
+
|
|
362
|
+
// Check if already started (not in backlog)
|
|
363
|
+
if (!fromCol.includes('backlog')) {
|
|
364
|
+
console.log(`✓ Issue ${key} already started`);
|
|
365
|
+
console.log(` Current column: ${fromCol}`);
|
|
366
|
+
console.log(` (start only works from backlog)`);
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
// Advance from backlog
|
|
371
|
+
const res = await fetch(`${getApiBase()}/api/issues/${key}/next`, {
|
|
372
|
+
method: 'POST',
|
|
373
|
+
headers: { 'Content-Type': 'application/json' },
|
|
374
|
+
body: JSON.stringify({})
|
|
375
|
+
});
|
|
376
|
+
|
|
377
|
+
if (!res.ok) {
|
|
378
|
+
const err = await res.json().catch(() => ({}));
|
|
379
|
+
console.error(`Failed: ${err.message || err.error || res.statusText}`);
|
|
380
|
+
process.exit(1);
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
const result = await res.json();
|
|
384
|
+
console.log(`✓ Started ${key}`);
|
|
385
|
+
console.log(` From: ${fromCol}`);
|
|
386
|
+
console.log(` To: ${result.data?.column_slug || 'next'}`);
|
|
387
|
+
} catch (e) {
|
|
388
|
+
console.error(`Error: ${e.message}`);
|
|
389
|
+
console.error('Make sure autocode server is running');
|
|
390
|
+
process.exit(1);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
async function nextCmd() {
|
|
395
|
+
const key = commandArgs[0];
|
|
396
|
+
|
|
397
|
+
if (!key) {
|
|
398
|
+
console.error('Usage: autocode next <issue-key>');
|
|
399
|
+
process.exit(1);
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
if (!key.match(/^AC-\d{6}$/)) {
|
|
403
|
+
console.error(`Invalid issue key: ${key}`);
|
|
404
|
+
process.exit(1);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
try {
|
|
408
|
+
// Get current column
|
|
409
|
+
const issueRes = await fetch(`${getApiBase()}/api/issues/${key}`);
|
|
410
|
+
if (!issueRes.ok) {
|
|
411
|
+
console.error(`Issue '${key}' not found`);
|
|
412
|
+
process.exit(1);
|
|
413
|
+
}
|
|
414
|
+
const issue = await issueRes.json();
|
|
415
|
+
const fromCol = issue.column_slug;
|
|
416
|
+
|
|
417
|
+
// Advance
|
|
418
|
+
const res = await fetch(`${getApiBase()}/api/issues/${key}/next`, {
|
|
419
|
+
method: 'POST',
|
|
420
|
+
headers: { 'Content-Type': 'application/json' },
|
|
421
|
+
body: JSON.stringify({})
|
|
422
|
+
});
|
|
423
|
+
|
|
424
|
+
if (!res.ok) {
|
|
425
|
+
const err = await res.json().catch(() => ({}));
|
|
426
|
+
console.error(`Failed: ${err.message || err.error || res.statusText}`);
|
|
427
|
+
process.exit(1);
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
const result = await res.json();
|
|
431
|
+
console.log(`✓ Advanced ${key}`);
|
|
432
|
+
console.log(` From: ${fromCol}`);
|
|
433
|
+
console.log(` To: ${result.data?.column_slug || 'next'}`);
|
|
434
|
+
} catch (e) {
|
|
435
|
+
console.error(`Error: ${e.message}`);
|
|
436
|
+
console.error('Make sure autocode server is running');
|
|
437
|
+
process.exit(1);
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
async function moveCmd() {
|
|
442
|
+
const key = commandArgs[0];
|
|
443
|
+
const column = commandArgs[1];
|
|
444
|
+
const force = commandArgs.includes('--force') || commandArgs.includes('-f');
|
|
445
|
+
|
|
446
|
+
if (!key || !column) {
|
|
447
|
+
console.error('Usage: autocode move <issue-key> <column-slug> [--force]');
|
|
448
|
+
process.exit(1);
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
if (!key.match(/^AC-\d{6}$/)) {
|
|
452
|
+
console.error(`Invalid issue key: ${key}`);
|
|
453
|
+
process.exit(1);
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
try {
|
|
457
|
+
const issueRes = await fetch(`${getApiBase()}/api/issues/${key}`);
|
|
458
|
+
if (!issueRes.ok) {
|
|
459
|
+
console.error(`Issue '${key}' not found`);
|
|
460
|
+
process.exit(1);
|
|
461
|
+
}
|
|
462
|
+
const issue = await issueRes.json();
|
|
463
|
+
const fromCol = issue.column_slug;
|
|
464
|
+
|
|
465
|
+
const res = await fetch(`${getApiBase()}/api/issues/${key}/move`, {
|
|
466
|
+
method: 'POST',
|
|
467
|
+
headers: { 'Content-Type': 'application/json' },
|
|
468
|
+
body: JSON.stringify({ column, force })
|
|
469
|
+
});
|
|
470
|
+
|
|
471
|
+
if (!res.ok) {
|
|
472
|
+
const err = await res.json().catch(() => ({}));
|
|
473
|
+
console.error(`Failed: ${err.message || err.error || res.statusText}`);
|
|
474
|
+
if (!force) console.error('Use --force to override');
|
|
475
|
+
process.exit(1);
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
const result = await res.json();
|
|
479
|
+
console.log(`✓ Moved ${key}`);
|
|
480
|
+
console.log(` From: ${fromCol}`);
|
|
481
|
+
console.log(` To: ${result.data?.column_slug || column}`);
|
|
482
|
+
} catch (e) {
|
|
483
|
+
console.error(`Error: ${e.message}`);
|
|
484
|
+
console.error('Make sure autocode server is running');
|
|
485
|
+
process.exit(1);
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
async function newCmd() {
|
|
490
|
+
// Parse options
|
|
491
|
+
const opts = {};
|
|
492
|
+
let title = '';
|
|
493
|
+
let desc = '';
|
|
494
|
+
let i = 0;
|
|
495
|
+
|
|
496
|
+
while (i < commandArgs.length) {
|
|
497
|
+
const arg = commandArgs[i];
|
|
498
|
+
if (arg === '-p' || arg === '--priority') opts.priority = commandArgs[++i];
|
|
499
|
+
else if (arg === '-l' || arg === '--labels') opts.labels = commandArgs[++i];
|
|
500
|
+
else if (arg === '-a' || arg === '--acceptance') opts.acceptance = commandArgs[++i];
|
|
501
|
+
else if (arg === '-s' || arg === '--semver') opts.semver = commandArgs[++i];
|
|
502
|
+
else if (arg === '-c' || arg === '--column') opts.column = commandArgs[++i];
|
|
503
|
+
else if (arg === '--parent') opts.parent = commandArgs[++i];
|
|
504
|
+
else if (arg === '--autocomplete') opts.autocomplete = true;
|
|
505
|
+
else if (arg === '--lang') opts.lang = commandArgs[++i];
|
|
506
|
+
else if (!title) title = arg;
|
|
507
|
+
else if (!desc) desc = arg;
|
|
508
|
+
i++;
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
if (!title) {
|
|
512
|
+
console.error('Usage: autocode new "<title>" ["<description>"] [options]');
|
|
513
|
+
console.error('Options: -p <priority> -l <labels> -a <acceptance> -c <column> --parent <key> --autocomplete --lang <en|fr>');
|
|
514
|
+
process.exit(1);
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
try {
|
|
518
|
+
const body = {
|
|
519
|
+
title,
|
|
520
|
+
description: desc || '',
|
|
521
|
+
priority: opts.priority || 'P2',
|
|
522
|
+
};
|
|
523
|
+
|
|
524
|
+
if (opts.labels) body.labels = opts.labels.split(',').map(l => l.trim());
|
|
525
|
+
if (opts.acceptance) body.acceptance_criteria = opts.acceptance.split(',').map(c => c.trim());
|
|
526
|
+
if (opts.semver) body.semver = opts.semver;
|
|
527
|
+
if (opts.parent) body.parent_key = opts.parent;
|
|
528
|
+
|
|
529
|
+
const res = await fetch(`${getApiBase()}/api/issues`, {
|
|
530
|
+
method: 'POST',
|
|
531
|
+
headers: { 'Content-Type': 'application/json' },
|
|
532
|
+
body: JSON.stringify(body)
|
|
533
|
+
});
|
|
534
|
+
|
|
535
|
+
if (!res.ok) {
|
|
536
|
+
const err = await res.json().catch(() => ({}));
|
|
537
|
+
console.error(`Failed: ${err.message || err.error || res.statusText}`);
|
|
538
|
+
process.exit(1);
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
const result = await res.json();
|
|
542
|
+
const issue = result.data || result;
|
|
543
|
+
|
|
544
|
+
// Autocomplete if requested (generates acceptance criteria, description, etc.)
|
|
545
|
+
if (opts.autocomplete) {
|
|
546
|
+
console.log(` Generating acceptance criteria...`);
|
|
547
|
+
const autoRes = await fetch(`${getApiBase()}/api/issues/autocomplete`, {
|
|
548
|
+
method: 'POST',
|
|
549
|
+
headers: { 'Content-Type': 'application/json' },
|
|
550
|
+
body: JSON.stringify({
|
|
551
|
+
title: issue.title,
|
|
552
|
+
description: issue.description,
|
|
553
|
+
priority: issue.priority,
|
|
554
|
+
lang: opts.lang || 'fr'
|
|
555
|
+
})
|
|
556
|
+
});
|
|
557
|
+
|
|
558
|
+
if (autoRes.ok) {
|
|
559
|
+
const autoData = await autoRes.json();
|
|
560
|
+
// Update issue with generated fields
|
|
561
|
+
const patchRes = await fetch(`${getApiBase()}/api/issues/${issue.key}`, {
|
|
562
|
+
method: 'PATCH',
|
|
563
|
+
headers: { 'Content-Type': 'application/json' },
|
|
564
|
+
body: JSON.stringify({
|
|
565
|
+
description: autoData.description || issue.description,
|
|
566
|
+
priority: autoData.priority || issue.priority,
|
|
567
|
+
labels: autoData.labels || [],
|
|
568
|
+
acceptance_criteria: autoData.acceptance_criteria || [],
|
|
569
|
+
semver: autoData.semver || 'patch'
|
|
570
|
+
})
|
|
571
|
+
});
|
|
572
|
+
|
|
573
|
+
if (patchRes.ok) {
|
|
574
|
+
const updated = await patchRes.json();
|
|
575
|
+
console.log(` ✓ Autocomplete: ${(updated.acceptance_criteria || []).length} criteria generated`);
|
|
576
|
+
} else {
|
|
577
|
+
console.error(` ⚠ Autocomplete update failed`);
|
|
578
|
+
}
|
|
579
|
+
} else {
|
|
580
|
+
console.error(` ⚠ Autocomplete generation failed`);
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
// Move to column if specified
|
|
585
|
+
if (opts.column && opts.column !== '00_backlog') {
|
|
586
|
+
await fetch(`${getApiBase()}/api/issues/${issue.key}/move`, {
|
|
587
|
+
method: 'POST',
|
|
588
|
+
headers: { 'Content-Type': 'application/json' },
|
|
589
|
+
body: JSON.stringify({ column: opts.column, force: true })
|
|
590
|
+
});
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
console.log(`✓ Created ${issue.key}`);
|
|
594
|
+
console.log(` Title: ${issue.title}`);
|
|
595
|
+
console.log(` Priority: ${issue.priority || 'P2'}`);
|
|
596
|
+
console.log(` Column: ${opts.column || '00_backlog'}`);
|
|
597
|
+
} catch (e) {
|
|
598
|
+
console.error(`Error: ${e.message}`);
|
|
599
|
+
console.error('Make sure autocode server is running');
|
|
600
|
+
process.exit(1);
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
// ============================================
|
|
605
|
+
// show - Show issue details
|
|
606
|
+
// ============================================
|
|
607
|
+
async function showCmd() {
|
|
608
|
+
const key = commandArgs[0];
|
|
609
|
+
const jsonOutput = commandArgs.includes('--json');
|
|
610
|
+
|
|
611
|
+
if (!key) {
|
|
612
|
+
console.error('Usage: autocode show <issue-key> [--json]');
|
|
613
|
+
process.exit(1);
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
if (!key.match(/^AC-\d{6}$/)) {
|
|
617
|
+
console.error(`Invalid issue key: ${key}`);
|
|
618
|
+
process.exit(1);
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
try {
|
|
622
|
+
const API = getApiBase();
|
|
623
|
+
const [issueRes, childrenRes, ancestorsRes] = await Promise.all([
|
|
624
|
+
fetch(`${API}/api/issues/${key}`),
|
|
625
|
+
fetch(`${API}/api/issues/${key}/children`),
|
|
626
|
+
fetch(`${API}/api/issues/${key}/ancestors`)
|
|
627
|
+
]);
|
|
628
|
+
|
|
629
|
+
if (!issueRes.ok) {
|
|
630
|
+
console.error(`Issue '${key}' not found`);
|
|
631
|
+
process.exit(1);
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
const issue = await issueRes.json();
|
|
635
|
+
const children = childrenRes.ok ? await childrenRes.json() : [];
|
|
636
|
+
const ancestors = ancestorsRes.ok ? await ancestorsRes.json() : [];
|
|
637
|
+
|
|
638
|
+
if (jsonOutput) {
|
|
639
|
+
console.log(JSON.stringify({ ...issue, children, ancestors }, null, 2));
|
|
640
|
+
return;
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
// Pretty print
|
|
644
|
+
console.log();
|
|
645
|
+
console.log(`\x1b[1m${issue.key}: ${issue.title}\x1b[0m`);
|
|
646
|
+
console.log('─'.repeat(60));
|
|
647
|
+
|
|
648
|
+
console.log(` Status: ${issue.column_slug}`);
|
|
649
|
+
console.log(` Priority: ${issue.priority}`);
|
|
650
|
+
console.log(` Semver: ${issue.semver || '-'}`);
|
|
651
|
+
|
|
652
|
+
if (issue.labels?.length > 0) {
|
|
653
|
+
console.log(` Labels: ${issue.labels.join(', ')}`);
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
if (issue.parent_key) {
|
|
657
|
+
console.log(` Parent: ${issue.parent_key}`);
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
if (children.length > 0) {
|
|
661
|
+
console.log(` Children: ${children.length} issue(s)`);
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
console.log();
|
|
665
|
+
console.log(` Created: ${issue.created_at}`);
|
|
666
|
+
console.log(` Updated: ${issue.updated_at}`);
|
|
667
|
+
|
|
668
|
+
if (issue.description && issue.description !== '[Description]') {
|
|
669
|
+
console.log();
|
|
670
|
+
console.log('\x1b[1mDescription:\x1b[0m');
|
|
671
|
+
console.log(issue.description);
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
if (issue.acceptance_criteria?.length > 0) {
|
|
675
|
+
console.log();
|
|
676
|
+
console.log('\x1b[1mAcceptance Criteria:\x1b[0m');
|
|
677
|
+
for (const c of issue.acceptance_criteria) {
|
|
678
|
+
console.log(` - ${c}`);
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
if (issue.comments?.length > 0) {
|
|
683
|
+
console.log();
|
|
684
|
+
console.log(`\x1b[1mComments (${issue.comments.length}):\x1b[0m`);
|
|
685
|
+
for (const c of issue.comments) {
|
|
686
|
+
console.log();
|
|
687
|
+
console.log(` \x1b[2m[${c.column}] ${c.created_at}\x1b[0m`);
|
|
688
|
+
console.log(` ${c.text}`);
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
if (children.length > 0) {
|
|
693
|
+
console.log();
|
|
694
|
+
console.log(`\x1b[1mChildren (${children.length}):\x1b[0m`);
|
|
695
|
+
for (const child of children) {
|
|
696
|
+
const status = child.column_slug?.substring(0, 15).padEnd(15) || '';
|
|
697
|
+
console.log(` \x1b[36m${child.key}\x1b[0m [${status}] ${child.title.substring(0, 40)}`);
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
if (issue.history?.length > 0) {
|
|
702
|
+
console.log();
|
|
703
|
+
console.log('\x1b[1mHistory:\x1b[0m');
|
|
704
|
+
for (const h of issue.history) {
|
|
705
|
+
console.log(` \x1b[2m${h.at}: ${h.action} ${h.from || '-'} → ${h.to}\x1b[0m`);
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
console.log();
|
|
710
|
+
} catch (e) {
|
|
711
|
+
console.error(`Error: ${e.message}`);
|
|
712
|
+
console.error('Make sure autocode server is running');
|
|
713
|
+
process.exit(1);
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
// ============================================
|
|
718
|
+
// history - Show full issue history
|
|
719
|
+
// ============================================
|
|
720
|
+
async function historyCmd() {
|
|
721
|
+
const key = commandArgs[0];
|
|
722
|
+
const jsonOutput = commandArgs.includes('--json');
|
|
723
|
+
const fullOutput = commandArgs.includes('--full');
|
|
724
|
+
const limitIdx = commandArgs.findIndex(a => a === '--limit');
|
|
725
|
+
const limit = limitIdx !== -1 ? parseInt(commandArgs[limitIdx + 1], 10) : undefined;
|
|
726
|
+
|
|
727
|
+
if (!key) {
|
|
728
|
+
console.error('Usage: autocode history <issue-key> [--json] [--full] [--limit N]');
|
|
729
|
+
process.exit(1);
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
if (!key.match(/^AC-\d{6}$/)) {
|
|
733
|
+
console.error(`Invalid issue key: ${key}`);
|
|
734
|
+
process.exit(1);
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
try {
|
|
738
|
+
const API = getApiBase();
|
|
739
|
+
|
|
740
|
+
// Fetch full history (includes execution logs)
|
|
741
|
+
const res = await fetch(`${API}/api/issues/${key}/full-history`);
|
|
742
|
+
|
|
743
|
+
if (!res.ok) {
|
|
744
|
+
if (res.status === 404) {
|
|
745
|
+
console.error(`Issue '${key}' not found`);
|
|
746
|
+
} else {
|
|
747
|
+
console.error(`Failed to get history: ${res.statusText}`);
|
|
748
|
+
}
|
|
749
|
+
process.exit(1);
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
const data = await res.json();
|
|
753
|
+
let history = data.entries || [];
|
|
754
|
+
|
|
755
|
+
// Apply limit if specified
|
|
756
|
+
if (limit && limit > 0) {
|
|
757
|
+
history = history.slice(-limit);
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
if (jsonOutput) {
|
|
761
|
+
console.log(JSON.stringify(history, null, 2));
|
|
762
|
+
return;
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
if (history.length === 0) {
|
|
766
|
+
console.log(`No history found for ${key}`);
|
|
767
|
+
return;
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
console.log();
|
|
771
|
+
console.log(`\x1b[1mHistory for ${key}\x1b[0m`);
|
|
772
|
+
console.log('═'.repeat(80));
|
|
773
|
+
|
|
774
|
+
for (let i = 0; i < history.length; i++) {
|
|
775
|
+
const entry = history[i];
|
|
776
|
+
const timestamp = entry.at.substring(0, 19).replace('T', ' ');
|
|
777
|
+
const action = formatAction(entry.action);
|
|
778
|
+
const from = entry.fromColumn || entry.from || '-';
|
|
779
|
+
const to = entry.toColumn || entry.to;
|
|
780
|
+
const sessionId = entry.sessionId ? `[${entry.sessionId}]` : '';
|
|
781
|
+
|
|
782
|
+
// Entry header
|
|
783
|
+
console.log();
|
|
784
|
+
console.log(`\x1b[1m#${i + 1}\x1b[0m ${timestamp} ${action}`);
|
|
785
|
+
|
|
786
|
+
// Transition details
|
|
787
|
+
if (entry.action === 'moved' || entry.action === 'started') {
|
|
788
|
+
console.log(` Transition: ${from} → ${to}`);
|
|
789
|
+
} else if (entry.action === 'created') {
|
|
790
|
+
console.log(` Created in: ${to}`);
|
|
791
|
+
} else if (entry.action === 'edited') {
|
|
792
|
+
console.log(` Edited in: ${to}`);
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
if (entry.sessionId) {
|
|
796
|
+
console.log(` Session: ${sessionId}`);
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
// Show changes if present (for edited action)
|
|
800
|
+
if (entry.changes && entry.changes.length > 0) {
|
|
801
|
+
console.log();
|
|
802
|
+
console.log(' \x1b[35mChanges:\x1b[0m');
|
|
803
|
+
for (const change of entry.changes) {
|
|
804
|
+
const field = change.field;
|
|
805
|
+
console.log(` \x1b[36m${field}:\x1b[0m`);
|
|
806
|
+
if (fullOutput || String(change.from || '').length < 100) {
|
|
807
|
+
console.log(` \x1b[31m- ${formatValue(change.from)}\x1b[0m`);
|
|
808
|
+
console.log(` \x1b[32m+ ${formatValue(change.to)}\x1b[0m`);
|
|
809
|
+
} else {
|
|
810
|
+
console.log(` \x1b[31m- ${truncate(String(change.from || ''), 80)}\x1b[0m`);
|
|
811
|
+
console.log(` \x1b[32m+ ${truncate(String(change.to || ''), 80)}\x1b[0m`);
|
|
812
|
+
}
|
|
813
|
+
}
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
// Show prompt if available
|
|
817
|
+
if (entry.prompt) {
|
|
818
|
+
console.log();
|
|
819
|
+
console.log(' \x1b[33mPrompt:\x1b[0m');
|
|
820
|
+
if (fullOutput) {
|
|
821
|
+
const lines = entry.prompt.split('\n');
|
|
822
|
+
for (const line of lines) {
|
|
823
|
+
console.log(` ${line}`);
|
|
824
|
+
}
|
|
825
|
+
} else {
|
|
826
|
+
const preview = entry.prompt.substring(0, 200).replace(/\n/g, ' ');
|
|
827
|
+
console.log(` ${preview}${entry.prompt.length > 200 ? '...' : ''}`);
|
|
828
|
+
console.log(` \x1b[2m(${entry.prompt.length} chars, use --full to see all)\x1b[0m`);
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
// Show terminal output if available
|
|
833
|
+
const terminalLog = entry.terminalLog || entry.terminal;
|
|
834
|
+
if (terminalLog) {
|
|
835
|
+
console.log();
|
|
836
|
+
console.log(' \x1b[32mTerminal Output:\x1b[0m');
|
|
837
|
+
if (fullOutput) {
|
|
838
|
+
const lines = terminalLog.split('\n');
|
|
839
|
+
for (const line of lines) {
|
|
840
|
+
console.log(` ${line}`);
|
|
841
|
+
}
|
|
842
|
+
} else {
|
|
843
|
+
const preview = terminalLog.substring(0, 300).replace(/\n/g, ' ');
|
|
844
|
+
console.log(` ${preview}${terminalLog.length > 300 ? '...' : ''}`);
|
|
845
|
+
console.log(` \x1b[2m(${terminalLog.length} chars, use --full to see all)\x1b[0m`);
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
// Separator between entries
|
|
850
|
+
if (i < history.length - 1) {
|
|
851
|
+
console.log();
|
|
852
|
+
console.log('─'.repeat(80));
|
|
853
|
+
}
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
console.log();
|
|
857
|
+
console.log('═'.repeat(80));
|
|
858
|
+
console.log(`Total: ${history.length} entries`);
|
|
859
|
+
|
|
860
|
+
// Summary of artifacts
|
|
861
|
+
const withPrompt = history.filter(h => h.prompt).length;
|
|
862
|
+
const withTerminal = history.filter(h => h.terminalLog || h.terminal).length;
|
|
863
|
+
if (withPrompt > 0 || withTerminal > 0) {
|
|
864
|
+
console.log(`Artifacts: ${withPrompt} prompts, ${withTerminal} terminal logs`);
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
if (!fullOutput && (withPrompt > 0 || withTerminal > 0)) {
|
|
868
|
+
console.log('\x1b[2mTip: Use --full to see complete prompt and terminal content\x1b[0m');
|
|
869
|
+
}
|
|
870
|
+
} catch (e) {
|
|
871
|
+
console.error(`Error: ${e.message}`);
|
|
872
|
+
console.error('Make sure autocode server is running');
|
|
873
|
+
process.exit(1);
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
function formatValue(val) {
|
|
878
|
+
if (val === null || val === undefined) return '(empty)';
|
|
879
|
+
if (typeof val === 'string') return val.replace(/\n/g, '\\n');
|
|
880
|
+
return JSON.stringify(val);
|
|
881
|
+
}
|
|
882
|
+
|
|
883
|
+
function formatAction(action) {
|
|
884
|
+
const width = 8;
|
|
885
|
+
switch (action) {
|
|
886
|
+
case 'created': return `\x1b[32m${'created'.padEnd(width)}\x1b[0m`;
|
|
887
|
+
case 'moved': return `\x1b[36m${'moved'.padEnd(width)}\x1b[0m`;
|
|
888
|
+
case 'started': return `\x1b[33m${'started'.padEnd(width)}\x1b[0m`;
|
|
889
|
+
case 'edited': return `\x1b[35m${'edited'.padEnd(width)}\x1b[0m`;
|
|
890
|
+
default: return action.padEnd(width);
|
|
891
|
+
}
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
function truncate(str, maxLen) {
|
|
895
|
+
if (str.length <= maxLen) return str;
|
|
896
|
+
return str.substring(0, maxLen - 3) + '...';
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
// ============================================
|
|
900
|
+
// list - List issues
|
|
901
|
+
// ============================================
|
|
902
|
+
async function listCmd() {
|
|
903
|
+
const opts = {};
|
|
904
|
+
let i = 0;
|
|
905
|
+
|
|
906
|
+
while (i < commandArgs.length) {
|
|
907
|
+
const arg = commandArgs[i];
|
|
908
|
+
if (arg === '-c' || arg === '--column') opts.column = commandArgs[++i];
|
|
909
|
+
else if (arg === '-p' || arg === '--priority') opts.priority = commandArgs[++i];
|
|
910
|
+
else if (arg === '-l' || arg === '--label') opts.label = commandArgs[++i];
|
|
911
|
+
else if (arg === '--parent') opts.parent = commandArgs[++i];
|
|
912
|
+
else if (arg === '--tree') opts.tree = true;
|
|
913
|
+
else if (arg === '--json') opts.json = true;
|
|
914
|
+
i++;
|
|
915
|
+
}
|
|
916
|
+
|
|
917
|
+
try {
|
|
918
|
+
const API = getApiBase();
|
|
919
|
+
const params = new URLSearchParams();
|
|
920
|
+
if (opts.column) params.set('column', opts.column);
|
|
921
|
+
if (opts.priority) params.set('priority', opts.priority);
|
|
922
|
+
if (opts.label) params.set('label', opts.label);
|
|
923
|
+
if (opts.parent) params.set('parent', opts.parent);
|
|
924
|
+
|
|
925
|
+
const url = `${API}/api/issues${params.toString() ? '?' + params.toString() : ''}`;
|
|
926
|
+
const res = await fetch(url);
|
|
927
|
+
|
|
928
|
+
if (!res.ok) {
|
|
929
|
+
const err = await res.json().catch(() => ({}));
|
|
930
|
+
console.error(`Failed: ${err.message || res.statusText}`);
|
|
931
|
+
process.exit(1);
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
let issues = await res.json();
|
|
935
|
+
|
|
936
|
+
// Sort by priority then key
|
|
937
|
+
const priorityOrder = { P0: 0, P1: 1, P2: 2, P3: 3 };
|
|
938
|
+
issues.sort((a, b) => {
|
|
939
|
+
const pDiff = (priorityOrder[a.priority] || 2) - (priorityOrder[b.priority] || 2);
|
|
940
|
+
if (pDiff !== 0) return pDiff;
|
|
941
|
+
return a.key.localeCompare(b.key);
|
|
942
|
+
});
|
|
943
|
+
|
|
944
|
+
if (opts.json) {
|
|
945
|
+
console.log(JSON.stringify(issues, null, 2));
|
|
946
|
+
return;
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
if (issues.length === 0) {
|
|
950
|
+
console.log('No issues found');
|
|
951
|
+
return;
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
if (opts.tree) {
|
|
955
|
+
console.log(`Issue hierarchy:`);
|
|
956
|
+
console.log('─'.repeat(60));
|
|
957
|
+
printTree(issues, null, 0);
|
|
958
|
+
return;
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
console.log(`Found ${issues.length} issue(s)`);
|
|
962
|
+
console.log('─'.repeat(60));
|
|
963
|
+
|
|
964
|
+
for (const issue of issues) {
|
|
965
|
+
const key = `\x1b[36m${issue.key}\x1b[0m`;
|
|
966
|
+
const priority = colorPriority(issue.priority);
|
|
967
|
+
const title = issue.title.substring(0, 50) + (issue.title.length > 50 ? '...' : '');
|
|
968
|
+
const status = `\x1b[2m[${issue.column_slug}]\x1b[0m`;
|
|
969
|
+
console.log(`${key} ${priority} ${title} ${status}`);
|
|
970
|
+
}
|
|
971
|
+
} catch (e) {
|
|
972
|
+
console.error(`Error: ${e.message}`);
|
|
973
|
+
console.error('Make sure autocode server is running');
|
|
974
|
+
process.exit(1);
|
|
975
|
+
}
|
|
976
|
+
}
|
|
977
|
+
|
|
978
|
+
function printTree(issues, parentKey, indent) {
|
|
979
|
+
// Filter: null, undefined, or empty string all mean "root level"
|
|
980
|
+
const children = issues.filter(t => {
|
|
981
|
+
const parent = t.parent_key;
|
|
982
|
+
if (parentKey === null) {
|
|
983
|
+
return !parent || parent === '';
|
|
984
|
+
}
|
|
985
|
+
return parent === parentKey;
|
|
986
|
+
});
|
|
987
|
+
|
|
988
|
+
const priorityOrder = { P0: 0, P1: 1, P2: 2, P3: 3 };
|
|
989
|
+
|
|
990
|
+
children.sort((a, b) => {
|
|
991
|
+
const pDiff = (priorityOrder[a.priority] || 2) - (priorityOrder[b.priority] || 2);
|
|
992
|
+
if (pDiff !== 0) return pDiff;
|
|
993
|
+
return a.key.localeCompare(b.key);
|
|
994
|
+
});
|
|
995
|
+
|
|
996
|
+
for (const issue of children) {
|
|
997
|
+
const prefix = indent > 0 ? ' '.repeat(indent - 1) + '└─ ' : '';
|
|
998
|
+
const key = `\x1b[36m${issue.key}\x1b[0m`;
|
|
999
|
+
const priority = colorPriority(issue.priority);
|
|
1000
|
+
const title = issue.title.substring(0, 40) + (issue.title.length > 40 ? '...' : '');
|
|
1001
|
+
const status = `\x1b[2m[${(issue.column_slug || '').substring(0, 12)}]\x1b[0m`;
|
|
1002
|
+
console.log(`${prefix}${key} ${priority} ${title} ${status}`);
|
|
1003
|
+
printTree(issues, issue.key, indent + 1);
|
|
1004
|
+
}
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
function colorPriority(p) {
|
|
1008
|
+
switch (p) {
|
|
1009
|
+
case 'P0': return '\x1b[31mP0\x1b[0m';
|
|
1010
|
+
case 'P1': return '\x1b[33mP1\x1b[0m';
|
|
1011
|
+
case 'P2': return '\x1b[32mP2\x1b[0m';
|
|
1012
|
+
case 'P3': return '\x1b[2mP3\x1b[0m';
|
|
1013
|
+
default: return p || 'P2';
|
|
1014
|
+
}
|
|
1015
|
+
}
|
|
1016
|
+
|
|
1017
|
+
// ============================================
|
|
1018
|
+
// health - Check workflow health
|
|
1019
|
+
// ============================================
|
|
1020
|
+
async function healthCmd() {
|
|
1021
|
+
const jsonOutput = commandArgs.includes('--json');
|
|
1022
|
+
const verbose = commandArgs.includes('-v') || commandArgs.includes('--verbose');
|
|
1023
|
+
|
|
1024
|
+
try {
|
|
1025
|
+
const res = await fetch(`${getApiBase()}/api/workflow/health`);
|
|
1026
|
+
|
|
1027
|
+
if (!res.ok) {
|
|
1028
|
+
console.error('Failed to get health status');
|
|
1029
|
+
process.exit(1);
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1032
|
+
const report = await res.json();
|
|
1033
|
+
|
|
1034
|
+
if (jsonOutput) {
|
|
1035
|
+
console.log(JSON.stringify(report, null, 2));
|
|
1036
|
+
return;
|
|
1037
|
+
}
|
|
1038
|
+
|
|
1039
|
+
if (report.healthy) {
|
|
1040
|
+
console.log('\x1b[32m✓ All issues healthy\x1b[0m');
|
|
1041
|
+
console.log(` Total issues: ${report.issueCount || report.summary?.totalIssues || 0}`);
|
|
1042
|
+
return;
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
// Simple format from API
|
|
1046
|
+
if (report.message) {
|
|
1047
|
+
console.log(`\x1b[33m⚠ ${report.message}\x1b[0m`);
|
|
1048
|
+
console.log(` Issues: ${report.issueCount || 0}`);
|
|
1049
|
+
return;
|
|
1050
|
+
}
|
|
1051
|
+
|
|
1052
|
+
// Extended format with stuckIssues
|
|
1053
|
+
const stuckIssues = report.stuckIssues || [];
|
|
1054
|
+
const errorCount = stuckIssues.filter(s => s.severity === 'error').length;
|
|
1055
|
+
const warningCount = stuckIssues.filter(s => s.severity === 'warning').length;
|
|
1056
|
+
|
|
1057
|
+
if (errorCount > 0) {
|
|
1058
|
+
console.log(`\x1b[31m✗ ${errorCount} issue(s) need attention\x1b[0m`);
|
|
1059
|
+
}
|
|
1060
|
+
if (warningCount > 0) {
|
|
1061
|
+
console.log(`\x1b[33m⚠ ${warningCount} warning(s)\x1b[0m`);
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1064
|
+
if (stuckIssues.length === 0) {
|
|
1065
|
+
return;
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1068
|
+
console.log('─'.repeat(60));
|
|
1069
|
+
|
|
1070
|
+
// Group by reason
|
|
1071
|
+
const byReason = new Map();
|
|
1072
|
+
for (const stuck of stuckIssues) {
|
|
1073
|
+
const list = byReason.get(stuck.reason) || [];
|
|
1074
|
+
list.push(stuck);
|
|
1075
|
+
byReason.set(stuck.reason, list);
|
|
1076
|
+
}
|
|
1077
|
+
|
|
1078
|
+
const reasonLabels = {
|
|
1079
|
+
no_criteria: 'Missing Acceptance Criteria',
|
|
1080
|
+
loop_detected: 'Loop Detected',
|
|
1081
|
+
stale: 'Stale Issues',
|
|
1082
|
+
hierarchy_conflict: 'Hierarchy Conflicts'
|
|
1083
|
+
};
|
|
1084
|
+
|
|
1085
|
+
for (const [reason, issues] of byReason) {
|
|
1086
|
+
console.log();
|
|
1087
|
+
console.log(`${reasonLabels[reason] || reason} (${issues.length})`);
|
|
1088
|
+
|
|
1089
|
+
for (const stuck of issues) {
|
|
1090
|
+
const severity = stuck.severity === 'error' ? '\x1b[31m!\x1b[0m' : '\x1b[33m?\x1b[0m';
|
|
1091
|
+
const key = `\x1b[36m${stuck.key}\x1b[0m`;
|
|
1092
|
+
const details = `\x1b[2m${stuck.details}\x1b[0m`;
|
|
1093
|
+
console.log(` ${severity} ${key} ${details}`);
|
|
1094
|
+
|
|
1095
|
+
if (verbose) {
|
|
1096
|
+
console.log(` Column: ${stuck.column}`);
|
|
1097
|
+
}
|
|
1098
|
+
}
|
|
1099
|
+
}
|
|
1100
|
+
|
|
1101
|
+
if (report.recommendations?.length > 0) {
|
|
1102
|
+
console.log();
|
|
1103
|
+
console.log('Recommendations:');
|
|
1104
|
+
for (const rec of report.recommendations) {
|
|
1105
|
+
console.log(` - ${rec}`);
|
|
1106
|
+
}
|
|
1107
|
+
}
|
|
1108
|
+
|
|
1109
|
+
if (verbose && report.summary) {
|
|
1110
|
+
console.log();
|
|
1111
|
+
console.log('Summary:');
|
|
1112
|
+
console.log(` Total issues: ${report.summary.totalIssues}`);
|
|
1113
|
+
console.log(` Without criteria: ${report.summary.issuesWithoutCriteria}`);
|
|
1114
|
+
console.log(` Looping: ${report.summary.loopingIssues}`);
|
|
1115
|
+
console.log(` Hierarchy conflicts: ${report.summary.hierarchyConflicts}`);
|
|
1116
|
+
console.log(` Stale: ${report.summary.staleIssues}`);
|
|
1117
|
+
}
|
|
1118
|
+
} catch (e) {
|
|
1119
|
+
console.error(`Error: ${e.message}`);
|
|
1120
|
+
console.error('Make sure autocode server is running');
|
|
1121
|
+
process.exit(1);
|
|
1122
|
+
}
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
// ============================================
|
|
1126
|
+
// parent - Manage parent relationships
|
|
1127
|
+
// ============================================
|
|
1128
|
+
async function parentCmd() {
|
|
1129
|
+
const key = commandArgs[0];
|
|
1130
|
+
const parentKey = commandArgs[1];
|
|
1131
|
+
|
|
1132
|
+
if (!key) {
|
|
1133
|
+
console.error('Usage: autocode parent <issue-key> [parent-key|none]');
|
|
1134
|
+
process.exit(1);
|
|
1135
|
+
}
|
|
1136
|
+
|
|
1137
|
+
if (!key.match(/^AC-\d{6}$/)) {
|
|
1138
|
+
console.error(`Invalid issue key: ${key}`);
|
|
1139
|
+
process.exit(1);
|
|
1140
|
+
}
|
|
1141
|
+
|
|
1142
|
+
try {
|
|
1143
|
+
const API = getApiBase();
|
|
1144
|
+
|
|
1145
|
+
// Show current parent/children if no argument
|
|
1146
|
+
if (!parentKey) {
|
|
1147
|
+
const [issueRes, childrenRes, ancestorsRes] = await Promise.all([
|
|
1148
|
+
fetch(`${API}/api/issues/${key}`),
|
|
1149
|
+
fetch(`${API}/api/issues/${key}/children`),
|
|
1150
|
+
fetch(`${API}/api/issues/${key}/ancestors`)
|
|
1151
|
+
]);
|
|
1152
|
+
|
|
1153
|
+
if (!issueRes.ok) {
|
|
1154
|
+
console.error(`Issue '${key}' not found`);
|
|
1155
|
+
process.exit(1);
|
|
1156
|
+
}
|
|
1157
|
+
|
|
1158
|
+
const issue = await issueRes.json();
|
|
1159
|
+
const children = childrenRes.ok ? await childrenRes.json() : [];
|
|
1160
|
+
const ancestors = ancestorsRes.ok ? await ancestorsRes.json() : [];
|
|
1161
|
+
|
|
1162
|
+
console.log();
|
|
1163
|
+
console.log(`\x1b[1m${issue.key}: ${issue.title}\x1b[0m`);
|
|
1164
|
+
console.log('─'.repeat(60));
|
|
1165
|
+
|
|
1166
|
+
if (issue.parent_key) {
|
|
1167
|
+
const parentRes = await fetch(`${API}/api/issues/${issue.parent_key}`);
|
|
1168
|
+
const parent = parentRes.ok ? await parentRes.json() : null;
|
|
1169
|
+
console.log(` Parent: ${issue.parent_key}${parent ? ` (${parent.title.substring(0, 40)})` : ''}`);
|
|
1170
|
+
} else {
|
|
1171
|
+
console.log(' Parent: None (root issue)');
|
|
1172
|
+
}
|
|
1173
|
+
|
|
1174
|
+
if (ancestors.length > 0) {
|
|
1175
|
+
console.log();
|
|
1176
|
+
console.log('\x1b[1mAncestors:\x1b[0m');
|
|
1177
|
+
for (let i = ancestors.length - 1; i >= 0; i--) {
|
|
1178
|
+
const a = ancestors[i];
|
|
1179
|
+
const indent = ' '.repeat(ancestors.length - 1 - i);
|
|
1180
|
+
console.log(`${indent}\x1b[36m${a.key}\x1b[0m ${a.title.substring(0, 40)}`);
|
|
1181
|
+
}
|
|
1182
|
+
}
|
|
1183
|
+
|
|
1184
|
+
if (children.length > 0) {
|
|
1185
|
+
console.log();
|
|
1186
|
+
console.log(`\x1b[1mChildren (${children.length}):\x1b[0m`);
|
|
1187
|
+
for (const child of children) {
|
|
1188
|
+
console.log(` \x1b[36m${child.key}\x1b[0m [${(child.column_slug || '').substring(0, 12)}] ${child.title.substring(0, 40)}`);
|
|
1189
|
+
}
|
|
1190
|
+
}
|
|
1191
|
+
|
|
1192
|
+
console.log();
|
|
1193
|
+
return;
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1196
|
+
// Set or remove parent
|
|
1197
|
+
const newParentKey = parentKey.toLowerCase() === 'none' ? null : parentKey;
|
|
1198
|
+
|
|
1199
|
+
if (newParentKey && !newParentKey.match(/^AC-\d{6}$/)) {
|
|
1200
|
+
console.error(`Invalid parent key: ${parentKey}`);
|
|
1201
|
+
process.exit(1);
|
|
1202
|
+
}
|
|
1203
|
+
|
|
1204
|
+
const res = await fetch(`${API}/api/issues/${key}`, {
|
|
1205
|
+
method: 'PATCH',
|
|
1206
|
+
headers: { 'Content-Type': 'application/json' },
|
|
1207
|
+
body: JSON.stringify({ parent_key: newParentKey })
|
|
1208
|
+
});
|
|
1209
|
+
|
|
1210
|
+
if (!res.ok) {
|
|
1211
|
+
const err = await res.json().catch(() => ({}));
|
|
1212
|
+
console.error(`Failed: ${err.message || err.error || res.statusText}`);
|
|
1213
|
+
process.exit(1);
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
if (newParentKey) {
|
|
1217
|
+
console.log(`✓ Set parent of ${key} to ${newParentKey}`);
|
|
1218
|
+
} else {
|
|
1219
|
+
console.log(`✓ Removed parent from ${key}`);
|
|
1220
|
+
}
|
|
1221
|
+
} catch (e) {
|
|
1222
|
+
console.error(`Error: ${e.message}`);
|
|
1223
|
+
console.error('Make sure autocode server is running');
|
|
1224
|
+
process.exit(1);
|
|
1225
|
+
}
|
|
1226
|
+
}
|
|
1227
|
+
|
|
1228
|
+
// ============================================
|
|
1229
|
+
// stats - Show usage statistics
|
|
1230
|
+
// ============================================
|
|
1231
|
+
async function statsCmd() {
|
|
1232
|
+
const jsonOutput = commandArgs.includes('--json');
|
|
1233
|
+
const sessionOnly = commandArgs.includes('--session');
|
|
1234
|
+
const totalsOnly = commandArgs.includes('--totals');
|
|
1235
|
+
|
|
1236
|
+
try {
|
|
1237
|
+
const res = await fetch(`${getApiBase()}/api/stats`);
|
|
1238
|
+
|
|
1239
|
+
if (!res.ok) {
|
|
1240
|
+
console.error('Failed to get stats');
|
|
1241
|
+
process.exit(1);
|
|
1242
|
+
}
|
|
1243
|
+
|
|
1244
|
+
const stats = await res.json();
|
|
1245
|
+
|
|
1246
|
+
if (jsonOutput) {
|
|
1247
|
+
if (sessionOnly) console.log(JSON.stringify(stats.session, null, 2));
|
|
1248
|
+
else if (totalsOnly) console.log(JSON.stringify(stats.totals, null, 2));
|
|
1249
|
+
else console.log(JSON.stringify(stats, null, 2));
|
|
1250
|
+
return;
|
|
1251
|
+
}
|
|
1252
|
+
|
|
1253
|
+
console.log('Claude Usage Statistics');
|
|
1254
|
+
console.log('─'.repeat(60));
|
|
1255
|
+
|
|
1256
|
+
console.log(` Profile: \x1b[36m${stats.profile || 'default'}\x1b[0m`);
|
|
1257
|
+
console.log(` Model: \x1b[2m${stats.model || 'N/A'}\x1b[0m`);
|
|
1258
|
+
console.log();
|
|
1259
|
+
|
|
1260
|
+
if (!totalsOnly && stats.session) {
|
|
1261
|
+
const sessionTotal = (stats.session.tokensInput || 0) + (stats.session.tokensOutput || 0);
|
|
1262
|
+
console.log(` \x1b[36mSession\x1b[0m (started: ${formatDate(stats.session.startedAt)})`);
|
|
1263
|
+
console.log(` Calls: ${stats.session.callCount || 0}`);
|
|
1264
|
+
console.log(` Input tokens: ${formatNumber(stats.session.tokensInput || 0)}`);
|
|
1265
|
+
console.log(` Output tokens: ${formatNumber(stats.session.tokensOutput || 0)}`);
|
|
1266
|
+
console.log(` Total tokens: ${formatNumber(sessionTotal)}`);
|
|
1267
|
+
console.log(` Cost: $${(stats.session.costUsd || 0).toFixed(2)}`);
|
|
1268
|
+
console.log();
|
|
1269
|
+
}
|
|
1270
|
+
|
|
1271
|
+
if (!sessionOnly && stats.totals) {
|
|
1272
|
+
const total = (stats.totals.tokensInput || 0) + (stats.totals.tokensOutput || 0);
|
|
1273
|
+
console.log(` \x1b[36mAll Time\x1b[0m`);
|
|
1274
|
+
console.log(` Calls: ${stats.totals.callCount || 0}`);
|
|
1275
|
+
console.log(` Input tokens: ${formatNumber(stats.totals.tokensInput || 0)}`);
|
|
1276
|
+
console.log(` Output tokens: ${formatNumber(stats.totals.tokensOutput || 0)}`);
|
|
1277
|
+
console.log(` Total tokens: ${formatNumber(total)}`);
|
|
1278
|
+
console.log(` Cost: $${(stats.totals.costUsd || 0).toFixed(2)}`);
|
|
1279
|
+
console.log();
|
|
1280
|
+
}
|
|
1281
|
+
|
|
1282
|
+
if (!sessionOnly && !totalsOnly && stats.history?.length > 0) {
|
|
1283
|
+
console.log(` \x1b[36mRecent Calls\x1b[0m (last 5)`);
|
|
1284
|
+
const recent = stats.history.slice(0, 5);
|
|
1285
|
+
for (const call of recent) {
|
|
1286
|
+
const issue = call.issue ? `\x1b[36m${call.issue}\x1b[0m` : '-';
|
|
1287
|
+
const tokens = `${formatNumber(call.tokensInput || 0)}/${formatNumber(call.tokensOutput || 0)}`;
|
|
1288
|
+
const cost = call.costUsd ? `$${call.costUsd.toFixed(2)}` : '';
|
|
1289
|
+
const duration = formatDuration(call.duration || 0);
|
|
1290
|
+
console.log(` ${formatTime(call.timestamp)} ${issue} ${tokens} tokens ${cost} (${duration})`);
|
|
1291
|
+
}
|
|
1292
|
+
}
|
|
1293
|
+
} catch (e) {
|
|
1294
|
+
console.error(`Error: ${e.message}`);
|
|
1295
|
+
console.error('Make sure autocode server is running');
|
|
1296
|
+
process.exit(1);
|
|
1297
|
+
}
|
|
1298
|
+
}
|
|
1299
|
+
|
|
1300
|
+
function formatNumber(n) {
|
|
1301
|
+
if (n >= 1000000) return (n / 1000000).toFixed(1) + 'M';
|
|
1302
|
+
if (n >= 1000) return (n / 1000).toFixed(1) + 'K';
|
|
1303
|
+
return n.toString();
|
|
1304
|
+
}
|
|
1305
|
+
|
|
1306
|
+
function formatDate(iso) {
|
|
1307
|
+
if (!iso) return 'N/A';
|
|
1308
|
+
const d = new Date(iso);
|
|
1309
|
+
return d.toLocaleDateString() + ' ' + d.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });
|
|
1310
|
+
}
|
|
1311
|
+
|
|
1312
|
+
function formatTime(iso) {
|
|
1313
|
+
if (!iso) return 'N/A';
|
|
1314
|
+
const d = new Date(iso);
|
|
1315
|
+
return d.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' });
|
|
1316
|
+
}
|
|
1317
|
+
|
|
1318
|
+
function formatDuration(ms) {
|
|
1319
|
+
if (ms < 1000) return ms + 'ms';
|
|
1320
|
+
return (ms / 1000).toFixed(1) + 's';
|
|
1321
|
+
}
|
|
1322
|
+
|
|
1323
|
+
// ============================================
|
|
1324
|
+
// init - Initialize project structure
|
|
1325
|
+
// ============================================
|
|
1326
|
+
function initCmd() {
|
|
1327
|
+
const rootDir = commandArgs.find(a => !a.startsWith('-')) || 'autocode';
|
|
1328
|
+
|
|
1329
|
+
console.log(`Initializing autocode in ${rootDir}...`);
|
|
1330
|
+
|
|
1331
|
+
// Create directories
|
|
1332
|
+
const columns = [
|
|
1333
|
+
'00_backlog',
|
|
1334
|
+
'01_ready',
|
|
1335
|
+
'02_in-progress',
|
|
1336
|
+
'03_review',
|
|
1337
|
+
'04_done',
|
|
1338
|
+
'_archive'
|
|
1339
|
+
];
|
|
1340
|
+
|
|
1341
|
+
try {
|
|
1342
|
+
mkdirSync(rootDir, { recursive: true });
|
|
1343
|
+
mkdirSync(join(rootDir, '.autocode'), { recursive: true });
|
|
1344
|
+
|
|
1345
|
+
for (const col of columns) {
|
|
1346
|
+
mkdirSync(join(rootDir, col), { recursive: true });
|
|
1347
|
+
}
|
|
1348
|
+
|
|
1349
|
+
// Create .seq file
|
|
1350
|
+
const seqFile = join(rootDir, '.autocode', '.seq');
|
|
1351
|
+
if (!existsSync(seqFile)) {
|
|
1352
|
+
writeFileSync(seqFile, '0');
|
|
1353
|
+
}
|
|
1354
|
+
|
|
1355
|
+
// Setup .gitignore
|
|
1356
|
+
const gitignorePath = join(process.cwd(), '.gitignore');
|
|
1357
|
+
const pattern = `/${rootDir}/*/.claude_prompt_*.md`;
|
|
1358
|
+
|
|
1359
|
+
let content = '';
|
|
1360
|
+
if (existsSync(gitignorePath)) {
|
|
1361
|
+
content = readFileSync(gitignorePath, 'utf-8');
|
|
1362
|
+
if (!content.includes(pattern)) {
|
|
1363
|
+
const newContent = content.trim()
|
|
1364
|
+
? `${content.trim()}\n\n# AutoCode temporary files\n${pattern}\n`
|
|
1365
|
+
: `# AutoCode temporary files\n${pattern}\n`;
|
|
1366
|
+
writeFileSync(gitignorePath, newContent);
|
|
1367
|
+
console.log('Updated .gitignore with AutoCode patterns');
|
|
1368
|
+
}
|
|
1369
|
+
} else {
|
|
1370
|
+
writeFileSync(gitignorePath, `# AutoCode temporary files\n${pattern}\n`);
|
|
1371
|
+
console.log('Created .gitignore with AutoCode patterns');
|
|
1372
|
+
}
|
|
1373
|
+
|
|
1374
|
+
console.log(`✓ Autocode initialized in ${rootDir}`);
|
|
1375
|
+
console.log('');
|
|
1376
|
+
console.log('Created columns:');
|
|
1377
|
+
for (const col of columns) {
|
|
1378
|
+
console.log(` - ${col}`);
|
|
1379
|
+
}
|
|
1380
|
+
console.log('');
|
|
1381
|
+
console.log('Next: Run `autocode new "Your first issue"` to create an issue');
|
|
1382
|
+
} catch (e) {
|
|
1383
|
+
console.error(`Error: ${e.message}`);
|
|
1384
|
+
process.exit(1);
|
|
1385
|
+
}
|
|
1386
|
+
}
|
|
1387
|
+
|
|
1388
|
+
// ============================================
|
|
1389
|
+
// pipeline - Pipeline management commands
|
|
1390
|
+
// ============================================
|
|
1391
|
+
async function pipelineCmd() {
|
|
1392
|
+
const subCommand = commandArgs[0];
|
|
1393
|
+
const subArgs = commandArgs.slice(1);
|
|
1394
|
+
|
|
1395
|
+
switch (subCommand) {
|
|
1396
|
+
case 'list':
|
|
1397
|
+
case undefined:
|
|
1398
|
+
await pipelineListCmd(subArgs);
|
|
1399
|
+
break;
|
|
1400
|
+
case 'show':
|
|
1401
|
+
await pipelineShowCmd(subArgs);
|
|
1402
|
+
break;
|
|
1403
|
+
case 'create':
|
|
1404
|
+
await pipelineCreateCmd(subArgs);
|
|
1405
|
+
break;
|
|
1406
|
+
case 'delete':
|
|
1407
|
+
await pipelineDeleteCmd(subArgs);
|
|
1408
|
+
break;
|
|
1409
|
+
case 'activate':
|
|
1410
|
+
await pipelineActivateCmd(subArgs);
|
|
1411
|
+
break;
|
|
1412
|
+
case 'versions':
|
|
1413
|
+
await pipelineVersionsCmd(subArgs);
|
|
1414
|
+
break;
|
|
1415
|
+
case 'draft':
|
|
1416
|
+
await pipelineDraftCmd(subArgs);
|
|
1417
|
+
break;
|
|
1418
|
+
case 'finalize':
|
|
1419
|
+
await pipelineFinalizeCmd(subArgs);
|
|
1420
|
+
break;
|
|
1421
|
+
case 'add-column':
|
|
1422
|
+
await pipelineAddColumnCmd(subArgs);
|
|
1423
|
+
break;
|
|
1424
|
+
case 'remove-column':
|
|
1425
|
+
await pipelineRemoveColumnCmd(subArgs);
|
|
1426
|
+
break;
|
|
1427
|
+
case 'move-column':
|
|
1428
|
+
await pipelineMoveColumnCmd(subArgs);
|
|
1429
|
+
break;
|
|
1430
|
+
default:
|
|
1431
|
+
console.error(`Unknown pipeline command: ${subCommand}`);
|
|
1432
|
+
showPipelineHelp();
|
|
1433
|
+
process.exit(1);
|
|
1434
|
+
}
|
|
1435
|
+
}
|
|
1436
|
+
|
|
1437
|
+
function showPipelineHelp() {
|
|
1438
|
+
console.log(`
|
|
1439
|
+
Pipeline Commands:
|
|
1440
|
+
pipeline list List all pipelines
|
|
1441
|
+
pipeline show <name> Show pipeline with columns
|
|
1442
|
+
pipeline create <name> Create new pipeline
|
|
1443
|
+
pipeline delete <name> Delete pipeline version
|
|
1444
|
+
pipeline activate <name> Activate pipeline version
|
|
1445
|
+
pipeline versions <name> List all versions
|
|
1446
|
+
pipeline draft <name> Create draft from latest
|
|
1447
|
+
pipeline finalize <name> Finalize draft
|
|
1448
|
+
|
|
1449
|
+
Column Commands:
|
|
1450
|
+
pipeline add-column <pipeline> <slug> --segment <seg>
|
|
1451
|
+
pipeline remove-column <pipeline> <slug>
|
|
1452
|
+
pipeline move-column <pipeline> <slug> --segment <seg>
|
|
1453
|
+
|
|
1454
|
+
Options:
|
|
1455
|
+
--version <N> Specific version
|
|
1456
|
+
--json Output as JSON
|
|
1457
|
+
--description "..." Pipeline description
|
|
1458
|
+
--segment <segment> Target segment (definition|action|finish)
|
|
1459
|
+
--position <N> Position within segment
|
|
1460
|
+
--name "Display Name" Column display name
|
|
1461
|
+
--activate Also activate after finalizing
|
|
1462
|
+
|
|
1463
|
+
Examples:
|
|
1464
|
+
autocode pipeline list
|
|
1465
|
+
autocode pipeline show default
|
|
1466
|
+
autocode pipeline create my-pipeline --description "Custom workflow"
|
|
1467
|
+
autocode pipeline add-column default review-security --segment action
|
|
1468
|
+
autocode pipeline finalize default --activate
|
|
1469
|
+
`);
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1472
|
+
// Helper: Get option value from args
|
|
1473
|
+
function getArgOption(args, flag) {
|
|
1474
|
+
const idx = args.findIndex(a => a === flag);
|
|
1475
|
+
if (idx !== -1 && args[idx + 1]) {
|
|
1476
|
+
return args[idx + 1];
|
|
1477
|
+
}
|
|
1478
|
+
return undefined;
|
|
1479
|
+
}
|
|
1480
|
+
|
|
1481
|
+
// Helper: Check if flag is present
|
|
1482
|
+
function hasArgFlag(args, flag) {
|
|
1483
|
+
return args.includes(flag);
|
|
1484
|
+
}
|
|
1485
|
+
|
|
1486
|
+
// Helper: Convert slug to display name
|
|
1487
|
+
function slugToName(slug) {
|
|
1488
|
+
return slug
|
|
1489
|
+
.split('-')
|
|
1490
|
+
.map(w => w.charAt(0).toUpperCase() + w.slice(1))
|
|
1491
|
+
.join(' ');
|
|
1492
|
+
}
|
|
1493
|
+
|
|
1494
|
+
// Helper: Format pipeline status with color
|
|
1495
|
+
function formatPipelineStatus(pipeline) {
|
|
1496
|
+
if (pipeline.active) return '\x1b[32mactive\x1b[0m';
|
|
1497
|
+
if (pipeline.draft) return '\x1b[33mdraft\x1b[0m';
|
|
1498
|
+
return 'locked';
|
|
1499
|
+
}
|
|
1500
|
+
|
|
1501
|
+
// Helper: Get or create draft for a pipeline
|
|
1502
|
+
async function getOrCreateDraft(pipelineName) {
|
|
1503
|
+
const API = getApiBase();
|
|
1504
|
+
|
|
1505
|
+
// Get versions
|
|
1506
|
+
const versionsRes = await fetch(`${API}/api/pipelines/${pipelineName}/versions`);
|
|
1507
|
+
if (!versionsRes.ok) {
|
|
1508
|
+
throw new Error(`Pipeline '${pipelineName}' not found`);
|
|
1509
|
+
}
|
|
1510
|
+
const versionList = await versionsRes.json();
|
|
1511
|
+
|
|
1512
|
+
// Find existing draft
|
|
1513
|
+
const draftInfo = versionList.find(v => v.draft);
|
|
1514
|
+
if (draftInfo) {
|
|
1515
|
+
// Get full draft data
|
|
1516
|
+
const res = await fetch(`${API}/api/pipelines/${pipelineName}?version=${draftInfo.version}`);
|
|
1517
|
+
if (!res.ok) throw new Error('Failed to get draft');
|
|
1518
|
+
return res.json();
|
|
1519
|
+
}
|
|
1520
|
+
|
|
1521
|
+
// Create new draft
|
|
1522
|
+
console.log(`Creating draft from latest locked version...`);
|
|
1523
|
+
const res = await fetch(`${API}/api/pipelines/${pipelineName}/versions`, { method: 'POST' });
|
|
1524
|
+
if (!res.ok) {
|
|
1525
|
+
const err = await res.json().catch(() => ({}));
|
|
1526
|
+
throw new Error(err.message || 'Failed to create draft');
|
|
1527
|
+
}
|
|
1528
|
+
return res.json();
|
|
1529
|
+
}
|
|
1530
|
+
|
|
1531
|
+
// pipeline list
|
|
1532
|
+
async function pipelineListCmd(args) {
|
|
1533
|
+
const jsonOutput = hasArgFlag(args, '--json');
|
|
1534
|
+
|
|
1535
|
+
try {
|
|
1536
|
+
const res = await fetch(`${getApiBase()}/api/pipelines`);
|
|
1537
|
+
if (!res.ok) {
|
|
1538
|
+
console.error('Failed to list pipelines');
|
|
1539
|
+
process.exit(1);
|
|
1540
|
+
}
|
|
1541
|
+
|
|
1542
|
+
const pipelines = await res.json();
|
|
1543
|
+
|
|
1544
|
+
if (jsonOutput) {
|
|
1545
|
+
console.log(JSON.stringify(pipelines, null, 2));
|
|
1546
|
+
return;
|
|
1547
|
+
}
|
|
1548
|
+
|
|
1549
|
+
if (pipelines.length === 0) {
|
|
1550
|
+
console.log('No pipelines found');
|
|
1551
|
+
return;
|
|
1552
|
+
}
|
|
1553
|
+
|
|
1554
|
+
console.log('Pipelines:');
|
|
1555
|
+
console.log('─'.repeat(60));
|
|
1556
|
+
console.log(' ' + 'NAME'.padEnd(20) + 'VERSION'.padEnd(10) + 'STATUS'.padEnd(12) + 'COLUMNS');
|
|
1557
|
+
|
|
1558
|
+
for (const p of pipelines) {
|
|
1559
|
+
const name = p.name.substring(0, 19).padEnd(20);
|
|
1560
|
+
const version = `v${p.version}`.padEnd(10);
|
|
1561
|
+
const status = formatPipelineStatus(p).padEnd(20); // Extra padding for ANSI codes
|
|
1562
|
+
const cols = (p.definition?.length || 0) + (p.action?.length || 0) + (p.finish?.length || 0);
|
|
1563
|
+
console.log(` ${name}${version}${status}${cols} columns`);
|
|
1564
|
+
}
|
|
1565
|
+
|
|
1566
|
+
console.log();
|
|
1567
|
+
console.log(`Total: ${pipelines.length} pipeline version(s)`);
|
|
1568
|
+
} catch (e) {
|
|
1569
|
+
console.error(`Error: ${e.message}`);
|
|
1570
|
+
console.error('Make sure autocode server is running');
|
|
1571
|
+
process.exit(1);
|
|
1572
|
+
}
|
|
1573
|
+
}
|
|
1574
|
+
|
|
1575
|
+
// pipeline show <name>
|
|
1576
|
+
async function pipelineShowCmd(args) {
|
|
1577
|
+
const name = args.find(a => !a.startsWith('-'));
|
|
1578
|
+
const version = getArgOption(args, '--version');
|
|
1579
|
+
const jsonOutput = hasArgFlag(args, '--json');
|
|
1580
|
+
|
|
1581
|
+
if (!name) {
|
|
1582
|
+
console.error('Usage: autocode pipeline show <name> [--version N] [--json]');
|
|
1583
|
+
process.exit(1);
|
|
1584
|
+
}
|
|
1585
|
+
|
|
1586
|
+
try {
|
|
1587
|
+
const API = getApiBase();
|
|
1588
|
+
const url = version
|
|
1589
|
+
? `${API}/api/pipelines/${name}?version=${version}`
|
|
1590
|
+
: `${API}/api/pipelines/${name}`;
|
|
1591
|
+
|
|
1592
|
+
const res = await fetch(url);
|
|
1593
|
+
if (!res.ok) {
|
|
1594
|
+
console.error(`Pipeline '${name}' not found`);
|
|
1595
|
+
process.exit(1);
|
|
1596
|
+
}
|
|
1597
|
+
|
|
1598
|
+
const pipeline = await res.json();
|
|
1599
|
+
|
|
1600
|
+
if (jsonOutput) {
|
|
1601
|
+
console.log(JSON.stringify(pipeline, null, 2));
|
|
1602
|
+
return;
|
|
1603
|
+
}
|
|
1604
|
+
|
|
1605
|
+
const status = pipeline.active ? '(active)' : pipeline.draft ? '(draft)' : '(locked)';
|
|
1606
|
+
console.log();
|
|
1607
|
+
console.log(`\x1b[1mPipeline: ${pipeline.name} v${pipeline.version} ${status}\x1b[0m`);
|
|
1608
|
+
console.log('─'.repeat(60));
|
|
1609
|
+
|
|
1610
|
+
if (pipeline.description) {
|
|
1611
|
+
console.log(`Description: ${pipeline.description}`);
|
|
1612
|
+
console.log();
|
|
1613
|
+
}
|
|
1614
|
+
|
|
1615
|
+
let index = 1;
|
|
1616
|
+
|
|
1617
|
+
// Definition segment
|
|
1618
|
+
const defCols = pipeline.definition || [];
|
|
1619
|
+
console.log(`\x1b[36mDEFINITION\x1b[0m (${defCols.length}):`);
|
|
1620
|
+
for (const col of defCols) {
|
|
1621
|
+
const num = String(index++).padStart(3);
|
|
1622
|
+
const slug = col.slug.padEnd(20);
|
|
1623
|
+
console.log(` ${num}. ${slug} ${col.name}`);
|
|
1624
|
+
}
|
|
1625
|
+
console.log();
|
|
1626
|
+
|
|
1627
|
+
// Action segment
|
|
1628
|
+
const actCols = pipeline.action || [];
|
|
1629
|
+
console.log(`\x1b[33mACTION\x1b[0m (${actCols.length}):`);
|
|
1630
|
+
for (const col of actCols) {
|
|
1631
|
+
const num = String(index++).padStart(3);
|
|
1632
|
+
const slug = col.slug.padEnd(20);
|
|
1633
|
+
console.log(` ${num}. ${slug} ${col.name}`);
|
|
1634
|
+
}
|
|
1635
|
+
console.log();
|
|
1636
|
+
|
|
1637
|
+
// Finish segment
|
|
1638
|
+
const finCols = pipeline.finish || [];
|
|
1639
|
+
console.log(`\x1b[32mFINISH\x1b[0m (${finCols.length}):`);
|
|
1640
|
+
for (const col of finCols) {
|
|
1641
|
+
const num = String(index++).padStart(3);
|
|
1642
|
+
const slug = col.slug.padEnd(20);
|
|
1643
|
+
console.log(` ${num}. ${slug} ${col.name}`);
|
|
1644
|
+
}
|
|
1645
|
+
console.log();
|
|
1646
|
+
|
|
1647
|
+
const totalCols = defCols.length + actCols.length + finCols.length;
|
|
1648
|
+
console.log(`Total: ${totalCols} columns`);
|
|
1649
|
+
|
|
1650
|
+
if (pipeline.createdAt) {
|
|
1651
|
+
console.log(`Created: ${formatDate(pipeline.createdAt)}`);
|
|
1652
|
+
}
|
|
1653
|
+
if (pipeline.createdFromVersion) {
|
|
1654
|
+
console.log(`Based on: v${pipeline.createdFromVersion}`);
|
|
1655
|
+
}
|
|
1656
|
+
} catch (e) {
|
|
1657
|
+
console.error(`Error: ${e.message}`);
|
|
1658
|
+
console.error('Make sure autocode server is running');
|
|
1659
|
+
process.exit(1);
|
|
1660
|
+
}
|
|
1661
|
+
}
|
|
1662
|
+
|
|
1663
|
+
// pipeline versions <name>
|
|
1664
|
+
async function pipelineVersionsCmd(args) {
|
|
1665
|
+
const name = args.find(a => !a.startsWith('-'));
|
|
1666
|
+
const jsonOutput = hasArgFlag(args, '--json');
|
|
1667
|
+
|
|
1668
|
+
if (!name) {
|
|
1669
|
+
console.error('Usage: autocode pipeline versions <name> [--json]');
|
|
1670
|
+
process.exit(1);
|
|
1671
|
+
}
|
|
1672
|
+
|
|
1673
|
+
try {
|
|
1674
|
+
const res = await fetch(`${getApiBase()}/api/pipelines/${name}/versions`);
|
|
1675
|
+
if (!res.ok) {
|
|
1676
|
+
console.error(`Pipeline '${name}' not found`);
|
|
1677
|
+
process.exit(1);
|
|
1678
|
+
}
|
|
1679
|
+
|
|
1680
|
+
const versions = await res.json();
|
|
1681
|
+
|
|
1682
|
+
if (jsonOutput) {
|
|
1683
|
+
console.log(JSON.stringify(versions, null, 2));
|
|
1684
|
+
return;
|
|
1685
|
+
}
|
|
1686
|
+
|
|
1687
|
+
console.log(`Versions of: ${name}`);
|
|
1688
|
+
console.log('─'.repeat(60));
|
|
1689
|
+
console.log(' ' + 'VERSION'.padEnd(10) + 'STATUS'.padEnd(12) + 'CREATED'.padEnd(22) + 'BASED ON'.padEnd(10) + 'COLUMNS');
|
|
1690
|
+
|
|
1691
|
+
for (const v of versions) {
|
|
1692
|
+
const ver = `v${v.version}`.padEnd(10);
|
|
1693
|
+
const status = (v.active ? '\x1b[32mactive\x1b[0m' : v.draft ? '\x1b[33mdraft\x1b[0m' : 'locked').padEnd(20);
|
|
1694
|
+
const created = formatDate(v.createdAt).padEnd(22);
|
|
1695
|
+
const basedOn = v.createdFromVersion ? `v${v.createdFromVersion}`.padEnd(10) : '-'.padEnd(10);
|
|
1696
|
+
const cols = v.columnCount || 0;
|
|
1697
|
+
console.log(` ${ver}${status}${created}${basedOn}${cols}`);
|
|
1698
|
+
}
|
|
1699
|
+
|
|
1700
|
+
console.log();
|
|
1701
|
+
console.log(`Total: ${versions.length} version(s)`);
|
|
1702
|
+
} catch (e) {
|
|
1703
|
+
console.error(`Error: ${e.message}`);
|
|
1704
|
+
console.error('Make sure autocode server is running');
|
|
1705
|
+
process.exit(1);
|
|
1706
|
+
}
|
|
1707
|
+
}
|
|
1708
|
+
|
|
1709
|
+
// pipeline create <name>
|
|
1710
|
+
async function pipelineCreateCmd(args) {
|
|
1711
|
+
const name = args.find(a => !a.startsWith('-'));
|
|
1712
|
+
const description = getArgOption(args, '--description');
|
|
1713
|
+
|
|
1714
|
+
if (!name) {
|
|
1715
|
+
console.error('Usage: autocode pipeline create <name> [--description "..."]');
|
|
1716
|
+
process.exit(1);
|
|
1717
|
+
}
|
|
1718
|
+
|
|
1719
|
+
try {
|
|
1720
|
+
const body = { name };
|
|
1721
|
+
if (description) body.description = description;
|
|
1722
|
+
|
|
1723
|
+
const res = await fetch(`${getApiBase()}/api/pipelines`, {
|
|
1724
|
+
method: 'POST',
|
|
1725
|
+
headers: { 'Content-Type': 'application/json' },
|
|
1726
|
+
body: JSON.stringify(body)
|
|
1727
|
+
});
|
|
1728
|
+
|
|
1729
|
+
if (!res.ok) {
|
|
1730
|
+
const err = await res.json().catch(() => ({}));
|
|
1731
|
+
console.error(`Failed: ${err.message || res.statusText}`);
|
|
1732
|
+
process.exit(1);
|
|
1733
|
+
}
|
|
1734
|
+
|
|
1735
|
+
const pipeline = await res.json();
|
|
1736
|
+
|
|
1737
|
+
console.log(`✓ Created pipeline: ${pipeline.name} v${pipeline.version} (draft)`);
|
|
1738
|
+
console.log();
|
|
1739
|
+
console.log('Next steps:');
|
|
1740
|
+
console.log(` 1. Add columns: autocode pipeline add-column ${name} <slug> --segment <definition|action|finish>`);
|
|
1741
|
+
console.log(` 2. Finalize: autocode pipeline finalize ${name}`);
|
|
1742
|
+
console.log(` 3. Activate: autocode pipeline activate ${name}`);
|
|
1743
|
+
} catch (e) {
|
|
1744
|
+
console.error(`Error: ${e.message}`);
|
|
1745
|
+
console.error('Make sure autocode server is running');
|
|
1746
|
+
process.exit(1);
|
|
1747
|
+
}
|
|
1748
|
+
}
|
|
1749
|
+
|
|
1750
|
+
// pipeline delete <name>
|
|
1751
|
+
async function pipelineDeleteCmd(args) {
|
|
1752
|
+
const name = args.find(a => !a.startsWith('-'));
|
|
1753
|
+
const version = getArgOption(args, '--version');
|
|
1754
|
+
const force = hasArgFlag(args, '--force') || hasArgFlag(args, '-f');
|
|
1755
|
+
|
|
1756
|
+
if (!name) {
|
|
1757
|
+
console.error('Usage: autocode pipeline delete <name> [--version N] [--force]');
|
|
1758
|
+
process.exit(1);
|
|
1759
|
+
}
|
|
1760
|
+
|
|
1761
|
+
try {
|
|
1762
|
+
const API = getApiBase();
|
|
1763
|
+
|
|
1764
|
+
// If no version specified, find draft
|
|
1765
|
+
let targetVersion = version;
|
|
1766
|
+
if (!targetVersion) {
|
|
1767
|
+
const versionsRes = await fetch(`${API}/api/pipelines/${name}/versions`);
|
|
1768
|
+
if (!versionsRes.ok) {
|
|
1769
|
+
console.error(`Pipeline '${name}' not found`);
|
|
1770
|
+
process.exit(1);
|
|
1771
|
+
}
|
|
1772
|
+
const versions = await versionsRes.json();
|
|
1773
|
+
const draft = versions.find(v => v.draft);
|
|
1774
|
+
if (draft) {
|
|
1775
|
+
targetVersion = draft.version;
|
|
1776
|
+
} else {
|
|
1777
|
+
console.error(`No draft found for '${name}'. Use --version to specify which version to delete.`);
|
|
1778
|
+
process.exit(1);
|
|
1779
|
+
}
|
|
1780
|
+
}
|
|
1781
|
+
|
|
1782
|
+
const res = await fetch(`${API}/api/pipelines/${name}/versions/${targetVersion}`, {
|
|
1783
|
+
method: 'DELETE'
|
|
1784
|
+
});
|
|
1785
|
+
|
|
1786
|
+
if (!res.ok) {
|
|
1787
|
+
const err = await res.json().catch(() => ({}));
|
|
1788
|
+
console.error(`Failed: ${err.message || res.statusText}`);
|
|
1789
|
+
process.exit(1);
|
|
1790
|
+
}
|
|
1791
|
+
|
|
1792
|
+
console.log(`✓ Deleted: ${name} v${targetVersion}`);
|
|
1793
|
+
} catch (e) {
|
|
1794
|
+
console.error(`Error: ${e.message}`);
|
|
1795
|
+
console.error('Make sure autocode server is running');
|
|
1796
|
+
process.exit(1);
|
|
1797
|
+
}
|
|
1798
|
+
}
|
|
1799
|
+
|
|
1800
|
+
// pipeline activate <name>
|
|
1801
|
+
async function pipelineActivateCmd(args) {
|
|
1802
|
+
const name = args.find(a => !a.startsWith('-'));
|
|
1803
|
+
const version = getArgOption(args, '--version');
|
|
1804
|
+
|
|
1805
|
+
if (!name) {
|
|
1806
|
+
console.error('Usage: autocode pipeline activate <name> [--version N]');
|
|
1807
|
+
process.exit(1);
|
|
1808
|
+
}
|
|
1809
|
+
|
|
1810
|
+
try {
|
|
1811
|
+
const API = getApiBase();
|
|
1812
|
+
|
|
1813
|
+
// If no version specified, find latest locked
|
|
1814
|
+
let targetVersion = version;
|
|
1815
|
+
if (!targetVersion) {
|
|
1816
|
+
const versionsRes = await fetch(`${API}/api/pipelines/${name}/versions`);
|
|
1817
|
+
if (!versionsRes.ok) {
|
|
1818
|
+
console.error(`Pipeline '${name}' not found`);
|
|
1819
|
+
process.exit(1);
|
|
1820
|
+
}
|
|
1821
|
+
const versions = await versionsRes.json();
|
|
1822
|
+
const locked = versions.filter(v => !v.draft).sort((a, b) => b.version - a.version);
|
|
1823
|
+
if (locked.length === 0) {
|
|
1824
|
+
console.error(`No locked version found for '${name}'. Finalize a draft first.`);
|
|
1825
|
+
process.exit(1);
|
|
1826
|
+
}
|
|
1827
|
+
targetVersion = locked[0].version;
|
|
1828
|
+
}
|
|
1829
|
+
|
|
1830
|
+
const res = await fetch(`${API}/api/pipelines/${name}/versions/${targetVersion}/activate`, {
|
|
1831
|
+
method: 'PUT'
|
|
1832
|
+
});
|
|
1833
|
+
|
|
1834
|
+
if (!res.ok) {
|
|
1835
|
+
const err = await res.json().catch(() => ({}));
|
|
1836
|
+
console.error(`Failed: ${err.message || res.statusText}`);
|
|
1837
|
+
process.exit(1);
|
|
1838
|
+
}
|
|
1839
|
+
|
|
1840
|
+
console.log(`✓ Activated: ${name} v${targetVersion}`);
|
|
1841
|
+
} catch (e) {
|
|
1842
|
+
console.error(`Error: ${e.message}`);
|
|
1843
|
+
console.error('Make sure autocode server is running');
|
|
1844
|
+
process.exit(1);
|
|
1845
|
+
}
|
|
1846
|
+
}
|
|
1847
|
+
|
|
1848
|
+
// pipeline draft <name>
|
|
1849
|
+
async function pipelineDraftCmd(args) {
|
|
1850
|
+
const name = args.find(a => !a.startsWith('-'));
|
|
1851
|
+
|
|
1852
|
+
if (!name) {
|
|
1853
|
+
console.error('Usage: autocode pipeline draft <name>');
|
|
1854
|
+
process.exit(1);
|
|
1855
|
+
}
|
|
1856
|
+
|
|
1857
|
+
try {
|
|
1858
|
+
const res = await fetch(`${getApiBase()}/api/pipelines/${name}/versions`, {
|
|
1859
|
+
method: 'POST'
|
|
1860
|
+
});
|
|
1861
|
+
|
|
1862
|
+
if (!res.ok) {
|
|
1863
|
+
const err = await res.json().catch(() => ({}));
|
|
1864
|
+
console.error(`Failed: ${err.message || res.statusText}`);
|
|
1865
|
+
process.exit(1);
|
|
1866
|
+
}
|
|
1867
|
+
|
|
1868
|
+
const pipeline = await res.json();
|
|
1869
|
+
const colCount = (pipeline.definition?.length || 0) + (pipeline.action?.length || 0) + (pipeline.finish?.length || 0);
|
|
1870
|
+
|
|
1871
|
+
console.log(`✓ Created draft: ${name} v${pipeline.version}`);
|
|
1872
|
+
if (pipeline.createdFromVersion) {
|
|
1873
|
+
console.log(` Based on: v${pipeline.createdFromVersion} (${colCount} columns copied)`);
|
|
1874
|
+
}
|
|
1875
|
+
console.log();
|
|
1876
|
+
console.log('Edit columns:');
|
|
1877
|
+
console.log(` autocode pipeline add-column ${name} <slug> --segment <segment>`);
|
|
1878
|
+
console.log(` autocode pipeline remove-column ${name} <slug>`);
|
|
1879
|
+
console.log(` autocode pipeline move-column ${name} <slug> --segment <segment>`);
|
|
1880
|
+
console.log();
|
|
1881
|
+
console.log('Finalize when ready:');
|
|
1882
|
+
console.log(` autocode pipeline finalize ${name}`);
|
|
1883
|
+
} catch (e) {
|
|
1884
|
+
console.error(`Error: ${e.message}`);
|
|
1885
|
+
console.error('Make sure autocode server is running');
|
|
1886
|
+
process.exit(1);
|
|
1887
|
+
}
|
|
1888
|
+
}
|
|
1889
|
+
|
|
1890
|
+
// pipeline finalize <name>
|
|
1891
|
+
async function pipelineFinalizeCmd(args) {
|
|
1892
|
+
const name = args.find(a => !a.startsWith('-'));
|
|
1893
|
+
const activate = hasArgFlag(args, '--activate');
|
|
1894
|
+
|
|
1895
|
+
if (!name) {
|
|
1896
|
+
console.error('Usage: autocode pipeline finalize <name> [--activate]');
|
|
1897
|
+
process.exit(1);
|
|
1898
|
+
}
|
|
1899
|
+
|
|
1900
|
+
try {
|
|
1901
|
+
const API = getApiBase();
|
|
1902
|
+
|
|
1903
|
+
// Find draft version
|
|
1904
|
+
const versionsRes = await fetch(`${API}/api/pipelines/${name}/versions`);
|
|
1905
|
+
if (!versionsRes.ok) {
|
|
1906
|
+
console.error(`Pipeline '${name}' not found`);
|
|
1907
|
+
process.exit(1);
|
|
1908
|
+
}
|
|
1909
|
+
const versions = await versionsRes.json();
|
|
1910
|
+
const draft = versions.find(v => v.draft);
|
|
1911
|
+
if (!draft) {
|
|
1912
|
+
console.error(`No draft found for '${name}'`);
|
|
1913
|
+
process.exit(1);
|
|
1914
|
+
}
|
|
1915
|
+
|
|
1916
|
+
// Finalize
|
|
1917
|
+
const finalizeRes = await fetch(`${API}/api/pipelines/${name}/versions/${draft.version}/finalize`, {
|
|
1918
|
+
method: 'POST'
|
|
1919
|
+
});
|
|
1920
|
+
|
|
1921
|
+
if (!finalizeRes.ok) {
|
|
1922
|
+
const err = await finalizeRes.json().catch(() => ({}));
|
|
1923
|
+
console.error(`Failed: ${err.message || finalizeRes.statusText}`);
|
|
1924
|
+
process.exit(1);
|
|
1925
|
+
}
|
|
1926
|
+
|
|
1927
|
+
if (activate) {
|
|
1928
|
+
const activateRes = await fetch(`${API}/api/pipelines/${name}/versions/${draft.version}/activate`, {
|
|
1929
|
+
method: 'PUT'
|
|
1930
|
+
});
|
|
1931
|
+
|
|
1932
|
+
if (!activateRes.ok) {
|
|
1933
|
+
console.error(`Finalized but failed to activate`);
|
|
1934
|
+
process.exit(1);
|
|
1935
|
+
}
|
|
1936
|
+
|
|
1937
|
+
console.log(`✓ Finalized and activated: ${name} v${draft.version}`);
|
|
1938
|
+
} else {
|
|
1939
|
+
console.log(`✓ Finalized: ${name} v${draft.version}`);
|
|
1940
|
+
console.log(` Status: locked (immutable)`);
|
|
1941
|
+
console.log();
|
|
1942
|
+
console.log(`To activate: autocode pipeline activate ${name} --version ${draft.version}`);
|
|
1943
|
+
}
|
|
1944
|
+
} catch (e) {
|
|
1945
|
+
console.error(`Error: ${e.message}`);
|
|
1946
|
+
console.error('Make sure autocode server is running');
|
|
1947
|
+
process.exit(1);
|
|
1948
|
+
}
|
|
1949
|
+
}
|
|
1950
|
+
|
|
1951
|
+
// pipeline add-column <pipeline> <slug>
|
|
1952
|
+
async function pipelineAddColumnCmd(args) {
|
|
1953
|
+
const pipeline = args[0];
|
|
1954
|
+
const slug = args[1];
|
|
1955
|
+
const segment = getArgOption(args, '--segment');
|
|
1956
|
+
const position = getArgOption(args, '--position');
|
|
1957
|
+
const name = getArgOption(args, '--name') || slugToName(slug || '');
|
|
1958
|
+
|
|
1959
|
+
if (!pipeline || !slug || !segment) {
|
|
1960
|
+
console.error('Usage: autocode pipeline add-column <pipeline> <slug> --segment <definition|action|finish> [--position N] [--name "..."]');
|
|
1961
|
+
process.exit(1);
|
|
1962
|
+
}
|
|
1963
|
+
|
|
1964
|
+
if (!['definition', 'action', 'finish'].includes(segment)) {
|
|
1965
|
+
console.error('Segment must be: definition, action, or finish');
|
|
1966
|
+
process.exit(1);
|
|
1967
|
+
}
|
|
1968
|
+
|
|
1969
|
+
try {
|
|
1970
|
+
const API = getApiBase();
|
|
1971
|
+
|
|
1972
|
+
// Get or create draft
|
|
1973
|
+
const draft = await getOrCreateDraft(pipeline);
|
|
1974
|
+
|
|
1975
|
+
// Get current columns for segment
|
|
1976
|
+
const columns = [...(draft[segment] || [])];
|
|
1977
|
+
|
|
1978
|
+
// Check if column already exists
|
|
1979
|
+
const allColumns = [...(draft.definition || []), ...(draft.action || []), ...(draft.finish || [])];
|
|
1980
|
+
if (allColumns.some(c => c.slug === slug)) {
|
|
1981
|
+
console.error(`Column '${slug}' already exists in pipeline`);
|
|
1982
|
+
process.exit(1);
|
|
1983
|
+
}
|
|
1984
|
+
|
|
1985
|
+
// Insert at position or end
|
|
1986
|
+
const pos = position !== undefined ? parseInt(position, 10) : columns.length;
|
|
1987
|
+
columns.splice(pos, 0, { slug, name });
|
|
1988
|
+
|
|
1989
|
+
// Update draft
|
|
1990
|
+
const updateRes = await fetch(`${API}/api/pipelines/${pipeline}/versions/${draft.version}`, {
|
|
1991
|
+
method: 'PUT',
|
|
1992
|
+
headers: { 'Content-Type': 'application/json' },
|
|
1993
|
+
body: JSON.stringify({ [segment]: columns })
|
|
1994
|
+
});
|
|
1995
|
+
|
|
1996
|
+
if (!updateRes.ok) {
|
|
1997
|
+
const err = await updateRes.json().catch(() => ({}));
|
|
1998
|
+
console.error(`Failed: ${err.message || updateRes.statusText}`);
|
|
1999
|
+
process.exit(1);
|
|
2000
|
+
}
|
|
2001
|
+
|
|
2002
|
+
console.log(`✓ Added column: ${slug} to ${segment} segment (position ${pos})`);
|
|
2003
|
+
console.log(` Draft: ${pipeline} v${draft.version}`);
|
|
2004
|
+
console.log();
|
|
2005
|
+
console.log(`To finalize: autocode pipeline finalize ${pipeline}`);
|
|
2006
|
+
} catch (e) {
|
|
2007
|
+
console.error(`Error: ${e.message}`);
|
|
2008
|
+
console.error('Make sure autocode server is running');
|
|
2009
|
+
process.exit(1);
|
|
2010
|
+
}
|
|
2011
|
+
}
|
|
2012
|
+
|
|
2013
|
+
// pipeline remove-column <pipeline> <slug>
|
|
2014
|
+
async function pipelineRemoveColumnCmd(args) {
|
|
2015
|
+
const pipeline = args[0];
|
|
2016
|
+
const slug = args[1];
|
|
2017
|
+
|
|
2018
|
+
if (!pipeline || !slug) {
|
|
2019
|
+
console.error('Usage: autocode pipeline remove-column <pipeline> <slug>');
|
|
2020
|
+
process.exit(1);
|
|
2021
|
+
}
|
|
2022
|
+
|
|
2023
|
+
// Cannot remove locked columns
|
|
2024
|
+
if (slug === 'backlog' || slug === 'done') {
|
|
2025
|
+
console.error(`Cannot remove locked column: ${slug}`);
|
|
2026
|
+
process.exit(1);
|
|
2027
|
+
}
|
|
2028
|
+
|
|
2029
|
+
try {
|
|
2030
|
+
const API = getApiBase();
|
|
2031
|
+
|
|
2032
|
+
// Get or create draft
|
|
2033
|
+
const draft = await getOrCreateDraft(pipeline);
|
|
2034
|
+
|
|
2035
|
+
// Find and remove column
|
|
2036
|
+
let found = false;
|
|
2037
|
+
let foundSegment = '';
|
|
2038
|
+
const segments = ['definition', 'action', 'finish'];
|
|
2039
|
+
|
|
2040
|
+
for (const seg of segments) {
|
|
2041
|
+
const columns = draft[seg] || [];
|
|
2042
|
+
const idx = columns.findIndex(c => c.slug === slug);
|
|
2043
|
+
if (idx !== -1) {
|
|
2044
|
+
columns.splice(idx, 1);
|
|
2045
|
+
found = true;
|
|
2046
|
+
foundSegment = seg;
|
|
2047
|
+
|
|
2048
|
+
// Update draft
|
|
2049
|
+
const updateRes = await fetch(`${API}/api/pipelines/${pipeline}/versions/${draft.version}`, {
|
|
2050
|
+
method: 'PUT',
|
|
2051
|
+
headers: { 'Content-Type': 'application/json' },
|
|
2052
|
+
body: JSON.stringify({ [seg]: columns })
|
|
2053
|
+
});
|
|
2054
|
+
|
|
2055
|
+
if (!updateRes.ok) {
|
|
2056
|
+
const err = await updateRes.json().catch(() => ({}));
|
|
2057
|
+
console.error(`Failed: ${err.message || updateRes.statusText}`);
|
|
2058
|
+
process.exit(1);
|
|
2059
|
+
}
|
|
2060
|
+
break;
|
|
2061
|
+
}
|
|
2062
|
+
}
|
|
2063
|
+
|
|
2064
|
+
if (!found) {
|
|
2065
|
+
console.error(`Column '${slug}' not found in pipeline`);
|
|
2066
|
+
process.exit(1);
|
|
2067
|
+
}
|
|
2068
|
+
|
|
2069
|
+
console.log(`✓ Removed column: ${slug} from ${foundSegment} segment`);
|
|
2070
|
+
console.log(` Draft: ${pipeline} v${draft.version}`);
|
|
2071
|
+
} catch (e) {
|
|
2072
|
+
console.error(`Error: ${e.message}`);
|
|
2073
|
+
console.error('Make sure autocode server is running');
|
|
2074
|
+
process.exit(1);
|
|
2075
|
+
}
|
|
2076
|
+
}
|
|
2077
|
+
|
|
2078
|
+
// pipeline move-column <pipeline> <slug>
|
|
2079
|
+
async function pipelineMoveColumnCmd(args) {
|
|
2080
|
+
const pipeline = args[0];
|
|
2081
|
+
const slug = args[1];
|
|
2082
|
+
const targetSegment = getArgOption(args, '--segment');
|
|
2083
|
+
const position = getArgOption(args, '--position');
|
|
2084
|
+
|
|
2085
|
+
if (!pipeline || !slug || !targetSegment) {
|
|
2086
|
+
console.error('Usage: autocode pipeline move-column <pipeline> <slug> --segment <definition|action|finish> [--position N]');
|
|
2087
|
+
process.exit(1);
|
|
2088
|
+
}
|
|
2089
|
+
|
|
2090
|
+
if (!['definition', 'action', 'finish'].includes(targetSegment)) {
|
|
2091
|
+
console.error('Segment must be: definition, action, or finish');
|
|
2092
|
+
process.exit(1);
|
|
2093
|
+
}
|
|
2094
|
+
|
|
2095
|
+
// Cannot move locked columns
|
|
2096
|
+
if (slug === 'backlog' || slug === 'done') {
|
|
2097
|
+
console.error(`Cannot move locked column: ${slug}`);
|
|
2098
|
+
process.exit(1);
|
|
2099
|
+
}
|
|
2100
|
+
|
|
2101
|
+
try {
|
|
2102
|
+
const API = getApiBase();
|
|
2103
|
+
|
|
2104
|
+
// Get or create draft
|
|
2105
|
+
const draft = await getOrCreateDraft(pipeline);
|
|
2106
|
+
|
|
2107
|
+
// Find column in current segment
|
|
2108
|
+
let found = null;
|
|
2109
|
+
let sourceSegment = '';
|
|
2110
|
+
const segments = ['definition', 'action', 'finish'];
|
|
2111
|
+
|
|
2112
|
+
for (const seg of segments) {
|
|
2113
|
+
const columns = draft[seg] || [];
|
|
2114
|
+
const idx = columns.findIndex(c => c.slug === slug);
|
|
2115
|
+
if (idx !== -1) {
|
|
2116
|
+
found = columns[idx];
|
|
2117
|
+
sourceSegment = seg;
|
|
2118
|
+
columns.splice(idx, 1);
|
|
2119
|
+
break;
|
|
2120
|
+
}
|
|
2121
|
+
}
|
|
2122
|
+
|
|
2123
|
+
if (!found) {
|
|
2124
|
+
console.error(`Column '${slug}' not found in pipeline`);
|
|
2125
|
+
process.exit(1);
|
|
2126
|
+
}
|
|
2127
|
+
|
|
2128
|
+
// Insert at new position
|
|
2129
|
+
const targetColumns = draft[targetSegment] || [];
|
|
2130
|
+
const pos = position !== undefined ? parseInt(position, 10) : targetColumns.length;
|
|
2131
|
+
targetColumns.splice(pos, 0, found);
|
|
2132
|
+
|
|
2133
|
+
// Update draft
|
|
2134
|
+
const updateBody = {};
|
|
2135
|
+
if (sourceSegment !== targetSegment) {
|
|
2136
|
+
updateBody[sourceSegment] = draft[sourceSegment];
|
|
2137
|
+
}
|
|
2138
|
+
updateBody[targetSegment] = targetColumns;
|
|
2139
|
+
|
|
2140
|
+
const updateRes = await fetch(`${API}/api/pipelines/${pipeline}/versions/${draft.version}`, {
|
|
2141
|
+
method: 'PUT',
|
|
2142
|
+
headers: { 'Content-Type': 'application/json' },
|
|
2143
|
+
body: JSON.stringify(updateBody)
|
|
2144
|
+
});
|
|
2145
|
+
|
|
2146
|
+
if (!updateRes.ok) {
|
|
2147
|
+
const err = await updateRes.json().catch(() => ({}));
|
|
2148
|
+
console.error(`Failed: ${err.message || updateRes.statusText}`);
|
|
2149
|
+
process.exit(1);
|
|
2150
|
+
}
|
|
2151
|
+
|
|
2152
|
+
console.log(`✓ Moved column: ${slug}`);
|
|
2153
|
+
console.log(` From: ${sourceSegment}`);
|
|
2154
|
+
console.log(` To: ${targetSegment} (position ${pos})`);
|
|
2155
|
+
console.log(` Draft: ${pipeline} v${draft.version}`);
|
|
2156
|
+
} catch (e) {
|
|
2157
|
+
console.error(`Error: ${e.message}`);
|
|
2158
|
+
console.error('Make sure autocode server is running');
|
|
2159
|
+
process.exit(1);
|
|
2160
|
+
}
|
|
2161
|
+
}
|
|
2162
|
+
|
|
2163
|
+
// ============================================
|
|
2164
|
+
// catalog - List available columns
|
|
2165
|
+
// ============================================
|
|
2166
|
+
async function catalogCmd() {
|
|
2167
|
+
const subCmd = commandArgs[0];
|
|
2168
|
+
|
|
2169
|
+
// Handle 'catalog add' subcommand
|
|
2170
|
+
if (subCmd === 'add') {
|
|
2171
|
+
await catalogAddCmd(commandArgs.slice(1));
|
|
2172
|
+
return;
|
|
2173
|
+
}
|
|
2174
|
+
|
|
2175
|
+
const jsonOutput = commandArgs.includes('--json');
|
|
2176
|
+
|
|
2177
|
+
try {
|
|
2178
|
+
const res = await fetch(`${getApiBase()}/api/catalog`);
|
|
2179
|
+
|
|
2180
|
+
if (!res.ok) {
|
|
2181
|
+
console.error('Failed to get catalog');
|
|
2182
|
+
process.exit(1);
|
|
2183
|
+
}
|
|
2184
|
+
|
|
2185
|
+
const catalog = await res.json();
|
|
2186
|
+
|
|
2187
|
+
if (jsonOutput) {
|
|
2188
|
+
console.log(JSON.stringify(catalog, null, 2));
|
|
2189
|
+
return;
|
|
2190
|
+
}
|
|
2191
|
+
|
|
2192
|
+
const segmentDescriptions = {
|
|
2193
|
+
definition: 'Define what needs to be done',
|
|
2194
|
+
action: 'Execute the work',
|
|
2195
|
+
finish: 'Validate and complete'
|
|
2196
|
+
};
|
|
2197
|
+
|
|
2198
|
+
let totalCount = 0;
|
|
2199
|
+
|
|
2200
|
+
// Handle both formats: array or { segments: {...} }
|
|
2201
|
+
const segments = catalog.segments || catalog;
|
|
2202
|
+
const segmentEntries = Array.isArray(segments)
|
|
2203
|
+
? segments.map(s => [s.segment, s])
|
|
2204
|
+
: Object.entries(segments);
|
|
2205
|
+
|
|
2206
|
+
for (const [segmentName, segmentData] of segmentEntries) {
|
|
2207
|
+
console.log();
|
|
2208
|
+
console.log(`\x1b[1m${segmentName.toUpperCase()}\x1b[0m`);
|
|
2209
|
+
console.log(`\x1b[2m${segmentDescriptions[segmentName] || segmentData.description || ''}\x1b[0m`);
|
|
2210
|
+
console.log('─'.repeat(60));
|
|
2211
|
+
|
|
2212
|
+
const columns = segmentData.columns || [];
|
|
2213
|
+
for (const column of columns) {
|
|
2214
|
+
const slug = `\x1b[36m${column.slug.padEnd(25)}\x1b[0m`;
|
|
2215
|
+
const name = (column.name || '').padEnd(30);
|
|
2216
|
+
const desc = column.description?.substring(0, 40) + (column.description?.length > 40 ? '...' : '') || '';
|
|
2217
|
+
console.log(` ${slug} ${name} \x1b[2m${desc}\x1b[0m`);
|
|
2218
|
+
totalCount++;
|
|
2219
|
+
}
|
|
2220
|
+
}
|
|
2221
|
+
|
|
2222
|
+
console.log();
|
|
2223
|
+
console.log(`Total: ${totalCount} column(s) available`);
|
|
2224
|
+
} catch (e) {
|
|
2225
|
+
console.error(`Error: ${e.message}`);
|
|
2226
|
+
console.error('Make sure autocode server is running');
|
|
2227
|
+
process.exit(1);
|
|
2228
|
+
}
|
|
2229
|
+
}
|
|
2230
|
+
|
|
2231
|
+
// catalog add <slug>
|
|
2232
|
+
async function catalogAddCmd(args) {
|
|
2233
|
+
const slug = args.find(a => !a.startsWith('-'));
|
|
2234
|
+
const segment = getArgOption(args, '--segment');
|
|
2235
|
+
const name = getArgOption(args, '--name') || slugToName(slug || '');
|
|
2236
|
+
const description = getArgOption(args, '--description');
|
|
2237
|
+
|
|
2238
|
+
if (!slug || !segment) {
|
|
2239
|
+
console.error('Usage: autocode catalog add <slug> --segment <definition|action|finish> [--name "..."] [--description "..."]');
|
|
2240
|
+
process.exit(1);
|
|
2241
|
+
}
|
|
2242
|
+
|
|
2243
|
+
if (!['definition', 'action', 'finish'].includes(segment)) {
|
|
2244
|
+
console.error('Segment must be: definition, action, or finish');
|
|
2245
|
+
process.exit(1);
|
|
2246
|
+
}
|
|
2247
|
+
|
|
2248
|
+
try {
|
|
2249
|
+
const body = { slug, name, segment };
|
|
2250
|
+
if (description) body.description = description;
|
|
2251
|
+
|
|
2252
|
+
const res = await fetch(`${getApiBase()}/api/catalog`, {
|
|
2253
|
+
method: 'POST',
|
|
2254
|
+
headers: { 'Content-Type': 'application/json' },
|
|
2255
|
+
body: JSON.stringify(body)
|
|
2256
|
+
});
|
|
2257
|
+
|
|
2258
|
+
if (!res.ok) {
|
|
2259
|
+
const err = await res.json().catch(() => ({}));
|
|
2260
|
+
console.error(`Failed: ${err.message || res.statusText}`);
|
|
2261
|
+
process.exit(1);
|
|
2262
|
+
}
|
|
2263
|
+
|
|
2264
|
+
console.log(`✓ Added to catalog: ${slug} (${segment} segment)`);
|
|
2265
|
+
console.log(` Name: ${name}`);
|
|
2266
|
+
if (description) console.log(` Description: ${description}`);
|
|
2267
|
+
} catch (e) {
|
|
2268
|
+
console.error(`Error: ${e.message}`);
|
|
2269
|
+
console.error('Make sure autocode server is running');
|
|
2270
|
+
process.exit(1);
|
|
2271
|
+
}
|
|
2272
|
+
}
|
|
2273
|
+
|
|
2274
|
+
// Main
|
|
2275
|
+
switch (command) {
|
|
2276
|
+
case 'serve':
|
|
2277
|
+
case undefined:
|
|
2278
|
+
startServer();
|
|
2279
|
+
break;
|
|
2280
|
+
case 'show':
|
|
2281
|
+
showCmd();
|
|
2282
|
+
break;
|
|
2283
|
+
case 'history':
|
|
2284
|
+
historyCmd();
|
|
2285
|
+
break;
|
|
2286
|
+
case 'list':
|
|
2287
|
+
case 'ls':
|
|
2288
|
+
listCmd();
|
|
2289
|
+
break;
|
|
2290
|
+
case 'comment':
|
|
2291
|
+
commentCmd();
|
|
2292
|
+
break;
|
|
2293
|
+
case 'start':
|
|
2294
|
+
startCmd();
|
|
2295
|
+
break;
|
|
2296
|
+
case 'next':
|
|
2297
|
+
nextCmd();
|
|
2298
|
+
break;
|
|
2299
|
+
case 'move':
|
|
2300
|
+
moveCmd();
|
|
2301
|
+
break;
|
|
2302
|
+
case 'new':
|
|
2303
|
+
newCmd();
|
|
2304
|
+
break;
|
|
2305
|
+
case 'parent':
|
|
2306
|
+
parentCmd();
|
|
2307
|
+
break;
|
|
2308
|
+
case 'health':
|
|
2309
|
+
healthCmd();
|
|
2310
|
+
break;
|
|
2311
|
+
case 'stats':
|
|
2312
|
+
statsCmd();
|
|
2313
|
+
break;
|
|
2314
|
+
case 'init':
|
|
2315
|
+
initCmd();
|
|
2316
|
+
break;
|
|
2317
|
+
case 'catalog':
|
|
2318
|
+
catalogCmd();
|
|
2319
|
+
break;
|
|
2320
|
+
case 'pipeline':
|
|
2321
|
+
pipelineCmd();
|
|
2322
|
+
break;
|
|
2323
|
+
case 'help':
|
|
2324
|
+
case '--help':
|
|
2325
|
+
case '-h':
|
|
2326
|
+
showHelp();
|
|
2327
|
+
break;
|
|
2328
|
+
default:
|
|
2329
|
+
// Check if it's an issue key shortcut - show issue details
|
|
2330
|
+
if (command.match(/^AC-\d{6}$/)) {
|
|
2331
|
+
commandArgs.unshift(command);
|
|
2332
|
+
showCmd();
|
|
2333
|
+
} else {
|
|
2334
|
+
console.error(`Unknown command: ${command}`);
|
|
2335
|
+
showHelp();
|
|
2336
|
+
process.exit(1);
|
|
2337
|
+
}
|
|
2338
|
+
}
|