@poetic-ai/poetic 1.42.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/.github/SECURITY.md +47 -0
- package/.nvmrc +1 -0
- package/.poetic/README.md +37 -0
- package/.poetic/providers/catalog.json +12051 -0
- package/.poetic/providers/pricing.json +1272 -0
- package/.poetic/providers/registry.json +3369 -0
- package/CHANGELOG.md +552 -0
- package/CODE_OF_CONDUCT.md +40 -0
- package/CONTRIBUTING.md +23 -0
- package/INSTALL.md +454 -0
- package/LICENSE +21 -0
- package/README.md +474 -0
- package/dist/BasicOptimizationCompetitionRunner-5H5TBYO4.js +153 -0
- package/dist/ExecutionTracker-UVONC4C6.js +16 -0
- package/dist/OptimizationConfig-7DFY2TST.js +17 -0
- package/dist/OptimizationEngine-JIMGP3LY.js +1597 -0
- package/dist/PromptStore-U6ZD3ZMQ.js +18 -0
- package/dist/actions-LUJPINLJ.js +322 -0
- package/dist/agent-ingest-3DJUJ7FU.js +53 -0
- package/dist/aggregator-DNCBINFO.js +12 -0
- package/dist/ai-judge-5QT5QJVU.js +156 -0
- package/dist/allowlist-grounding-RO6HKUFI.js +16 -0
- package/dist/allowlist-utils-23V7TJ3G.js +28 -0
- package/dist/anchored-turn-service-JULUCUIK.js +489 -0
- package/dist/api-transport-4TYTNLTJ.js +1087 -0
- package/dist/apply-completion-mode-AW2MOS3R.js +89 -0
- package/dist/artifact-migrator-23L45ISD.js +267 -0
- package/dist/ask-HWVV6QFR.js +135 -0
- package/dist/auth-5KEDKAPP.js +67 -0
- package/dist/auth-7TT3JINV.js +78 -0
- package/dist/auth-E6XUNZ5M.js +68 -0
- package/dist/auth-H3XDZE22.js +134 -0
- package/dist/auth-OC4E6633.js +71 -0
- package/dist/auth-S4CTX4GQ.js +44 -0
- package/dist/auth-YLH3S7EY.js +69 -0
- package/dist/auth-liveness-TDDEZY3T.js +46 -0
- package/dist/auto-optimizer-VPRWOWGU.js +80 -0
- package/dist/autoloop-cleanup-JOGKTLWA.js +109 -0
- package/dist/autoloop-evidence-gates-PCDALGVJ.js +38 -0
- package/dist/autoloop-gate-policy-Z7FVJVXV.js +175 -0
- package/dist/autoloop-helpers-2KTK43GL.js +22 -0
- package/dist/autoloop-ledger-W7QO62PX.js +96 -0
- package/dist/autoloop-ledger-subscriber-Z5RW5EIE.js +162 -0
- package/dist/autoloop-run-defaults-FERGRZGP.js +19 -0
- package/dist/autoloop-run-lock-CT2NWSV3.js +197 -0
- package/dist/autoloop-success-J2VKKBXQ.js +85 -0
- package/dist/autoloop-termination-summary-RN75F422.js +58 -0
- package/dist/autoloop-trajectory-XFIEXP5Z.js +282 -0
- package/dist/autoloop-wall-clock-T7ZVIQOC.js +12 -0
- package/dist/autonomous-loop-controller-PW4XVFGQ.js +4120 -0
- package/dist/backend-P3DAYRP7.js +29 -0
- package/dist/background-executor-CBN552V4.js +257 -0
- package/dist/backlog-execution-intent-U4XYPTV6.js +15 -0
- package/dist/backup-active-store-5WXG6SXT.js +17 -0
- package/dist/backup-telemetry-db-XGLXAA3N.js +254 -0
- package/dist/basic-competition-master-VCSBJVRN.js +344 -0
- package/dist/branch-archive-manager-RP6FP3ZC.js +254 -0
- package/dist/branch-cleanup-manager-RSHAI7YR.js +20 -0
- package/dist/build-gate-YHGRB4QB.js +71 -0
- package/dist/change-summary-WY7J5TOX.js +33 -0
- package/dist/chunk-23A26CSN.js +123 -0
- package/dist/chunk-27UTJD3M.js +265 -0
- package/dist/chunk-2A5CILN3.js +310 -0
- package/dist/chunk-2AQUWJPW.js +225 -0
- package/dist/chunk-2BZ53J6J.js +2344 -0
- package/dist/chunk-2DY5KNVM.js +276 -0
- package/dist/chunk-2EIA4RBE.js +659 -0
- package/dist/chunk-2IUXIGQD.js +1064 -0
- package/dist/chunk-2N42MS2Z.js +2193 -0
- package/dist/chunk-2QJ3H3L7.js +42 -0
- package/dist/chunk-2QLYTVYX.js +791 -0
- package/dist/chunk-2VSQMRCB.js +18 -0
- package/dist/chunk-2XQXYBM2.js +130 -0
- package/dist/chunk-2YFUIER7.js +426 -0
- package/dist/chunk-34CNP2HB.js +148 -0
- package/dist/chunk-35P3W3JX.js +456 -0
- package/dist/chunk-36PEBZAF.js +18 -0
- package/dist/chunk-3AOKYKA7.js +22 -0
- package/dist/chunk-3BCUNHKF.js +475 -0
- package/dist/chunk-3FLXLLB7.js +26 -0
- package/dist/chunk-3FOZ2VHV.js +100 -0
- package/dist/chunk-3G6FZCRF.js +106 -0
- package/dist/chunk-3M57DADF.js +44 -0
- package/dist/chunk-3S62LLWJ.js +543 -0
- package/dist/chunk-3ZPQLGV7.js +2904 -0
- package/dist/chunk-44N5WZZH.js +45 -0
- package/dist/chunk-45FPSA3B.js +125 -0
- package/dist/chunk-4BJ3O4RQ.js +929 -0
- package/dist/chunk-4BOP7T6L.js +2321 -0
- package/dist/chunk-4BTDUT2S.js +42 -0
- package/dist/chunk-4CSS7WVI.js +143 -0
- package/dist/chunk-4CUY7AFY.js +247 -0
- package/dist/chunk-4GSN5O5J.js +62 -0
- package/dist/chunk-4HN6DF7V.js +1027 -0
- package/dist/chunk-4IAPOG5V.js +415 -0
- package/dist/chunk-4IYIZQWV.js +48 -0
- package/dist/chunk-4NXPXE62.js +84 -0
- package/dist/chunk-4RCCF5BR.js +712 -0
- package/dist/chunk-4V7NAQ4R.js +19527 -0
- package/dist/chunk-4VJITV4P.js +445 -0
- package/dist/chunk-4YX7J6QL.js +1859 -0
- package/dist/chunk-527OBWQB.js +338 -0
- package/dist/chunk-5D4A7E3D.js +448 -0
- package/dist/chunk-5DLKYTQX.js +4003 -0
- package/dist/chunk-5EERLVZB.js +139 -0
- package/dist/chunk-5H72XE4H.js +256 -0
- package/dist/chunk-5HDP7XZG.js +91 -0
- package/dist/chunk-5LAMRH4X.js +969 -0
- package/dist/chunk-5LTN43AS.js +1972 -0
- package/dist/chunk-5RBHQYDB.js +2206 -0
- package/dist/chunk-5WCQRDRB.js +588 -0
- package/dist/chunk-5WRLK5KW.js +700 -0
- package/dist/chunk-5ZCXC23G.js +595 -0
- package/dist/chunk-6BM72ZMG.js +31 -0
- package/dist/chunk-6EDAJH2I.js +68 -0
- package/dist/chunk-6EQKFDBH.js +457 -0
- package/dist/chunk-6MFRHTRI.js +115 -0
- package/dist/chunk-6TZJRKNW.js +321 -0
- package/dist/chunk-6V7HGQFZ.js +20 -0
- package/dist/chunk-6VWVO2TU.js +3746 -0
- package/dist/chunk-6Y5TWI7H.js +146 -0
- package/dist/chunk-6Y5U7UFY.js +91 -0
- package/dist/chunk-6ZLAK3XG.js +14 -0
- package/dist/chunk-72XCRQED.js +34 -0
- package/dist/chunk-72YTZMAM.js +589 -0
- package/dist/chunk-73BBJOKA.js +263 -0
- package/dist/chunk-73NCTWKL.js +188 -0
- package/dist/chunk-77I6G4CO.js +1 -0
- package/dist/chunk-7DHRDWFS.js +3104 -0
- package/dist/chunk-7DNSNKJV.js +78 -0
- package/dist/chunk-7FMJVYBS.js +307 -0
- package/dist/chunk-7GDRQBQC.js +419 -0
- package/dist/chunk-7GPCEFUV.js +270 -0
- package/dist/chunk-7IL4A2PP.js +948 -0
- package/dist/chunk-7MMLMXO6.js +3679 -0
- package/dist/chunk-7QCZSLBH.js +1 -0
- package/dist/chunk-7R2WLDOS.js +62 -0
- package/dist/chunk-7T7RUJI7.js +949 -0
- package/dist/chunk-A2WKSVX7.js +43 -0
- package/dist/chunk-A3YGID55.js +133 -0
- package/dist/chunk-A722DEVA.js +14 -0
- package/dist/chunk-ACDIT7OP.js +1376 -0
- package/dist/chunk-ACKIPAOJ.js +302 -0
- package/dist/chunk-APPNGGN7.js +365 -0
- package/dist/chunk-APV6MK5E.js +137 -0
- package/dist/chunk-ASEP3M2W.js +968 -0
- package/dist/chunk-AT4TNPWW.js +2931 -0
- package/dist/chunk-ATVKCSGT.js +250 -0
- package/dist/chunk-AURFMVCD.js +899 -0
- package/dist/chunk-AX6GWE7V.js +47 -0
- package/dist/chunk-AY5EWJPF.js +385 -0
- package/dist/chunk-BAV2HJXS.js +194 -0
- package/dist/chunk-BBHRN366.js +89 -0
- package/dist/chunk-BBPSTTPA.js +1004 -0
- package/dist/chunk-BDATUDDJ.js +992 -0
- package/dist/chunk-BKE5PG5L.js +20414 -0
- package/dist/chunk-BLPHWMDK.js +797 -0
- package/dist/chunk-BSE4R6XD.js +322 -0
- package/dist/chunk-BXGMAU4A.js +396 -0
- package/dist/chunk-BXI4NXL3.js +507 -0
- package/dist/chunk-BZU2O43F.js +1125 -0
- package/dist/chunk-C3L6YQ7P.js +147 -0
- package/dist/chunk-C57KJOUQ.js +121 -0
- package/dist/chunk-CCV7BPSY.js +118 -0
- package/dist/chunk-CD7ISXA4.js +826 -0
- package/dist/chunk-CE5OZBYY.js +21 -0
- package/dist/chunk-CFBIG37O.js +154 -0
- package/dist/chunk-CJC6GZ46.js +457 -0
- package/dist/chunk-CKCDGXIV.js +408 -0
- package/dist/chunk-CKNX3TTP.js +10338 -0
- package/dist/chunk-CLKSETWE.js +10 -0
- package/dist/chunk-CP7H3HSP.js +1552 -0
- package/dist/chunk-CPLEWXNZ.js +66 -0
- package/dist/chunk-CQM3A35X.js +844 -0
- package/dist/chunk-CS6P76D3.js +103 -0
- package/dist/chunk-CTLUBNCW.js +622 -0
- package/dist/chunk-CUSRN6RJ.js +632 -0
- package/dist/chunk-D5EP5D2W.js +26 -0
- package/dist/chunk-D5RYINO7.js +412 -0
- package/dist/chunk-DBFS4HMH.js +751 -0
- package/dist/chunk-DC4ZYMXJ.js +115 -0
- package/dist/chunk-DCBZP442.js +9243 -0
- package/dist/chunk-DCYF7EKG.js +26 -0
- package/dist/chunk-DDMAFNUK.js +5351 -0
- package/dist/chunk-DF5SLDE4.js +966 -0
- package/dist/chunk-DJFW7SMX.js +348 -0
- package/dist/chunk-DQFLLBJW.js +121 -0
- package/dist/chunk-DSFM56OA.js +1203 -0
- package/dist/chunk-DTY4APYV.js +218 -0
- package/dist/chunk-DXH5JBRS.js +437 -0
- package/dist/chunk-E3NTPHEO.js +194 -0
- package/dist/chunk-E74LUIID.js +302 -0
- package/dist/chunk-EI57M5BI.js +194 -0
- package/dist/chunk-EJ4ZAWLV.js +305 -0
- package/dist/chunk-EJGCZGUF.js +1483 -0
- package/dist/chunk-EK2U3YEG.js +486 -0
- package/dist/chunk-ELMFYNV7.js +109 -0
- package/dist/chunk-ENRGKNR5.js +25 -0
- package/dist/chunk-ETYDXCK7.js +679 -0
- package/dist/chunk-EYRH3W74.js +239 -0
- package/dist/chunk-F23DIWNN.js +1024 -0
- package/dist/chunk-F5JO7HAS.js +94 -0
- package/dist/chunk-F7ER6ANO.js +174 -0
- package/dist/chunk-FATUVIIN.js +374 -0
- package/dist/chunk-FC23CTXV.js +322 -0
- package/dist/chunk-FD4ERYEG.js +22 -0
- package/dist/chunk-FH7WOJAE.js +79 -0
- package/dist/chunk-FHOWVDF5.js +1342 -0
- package/dist/chunk-FKAUPHMR.js +96 -0
- package/dist/chunk-FONNFJXA.js +137 -0
- package/dist/chunk-FQ7FSZRW.js +75 -0
- package/dist/chunk-FRG57FPM.js +240 -0
- package/dist/chunk-FUVP64ER.js +31 -0
- package/dist/chunk-FYOILAN5.js +6818 -0
- package/dist/chunk-G35UYQ6Z.js +69 -0
- package/dist/chunk-G36W2T2S.js +1143 -0
- package/dist/chunk-G3L2L5XZ.js +49 -0
- package/dist/chunk-G4THLFV3.js +148 -0
- package/dist/chunk-GAFJEYLK.js +29 -0
- package/dist/chunk-GFGYB2ZU.js +1689 -0
- package/dist/chunk-GG6KJYW6.js +85 -0
- package/dist/chunk-GHHFDU2U.js +55 -0
- package/dist/chunk-GHTZSQB7.js +57 -0
- package/dist/chunk-GK37ILCX.js +1231 -0
- package/dist/chunk-GKN3HMN4.js +2809 -0
- package/dist/chunk-GNVDBVJP.js +156 -0
- package/dist/chunk-GPEL3FBM.js +924 -0
- package/dist/chunk-GPSNGPZS.js +1604 -0
- package/dist/chunk-GSGD5E4C.js +30 -0
- package/dist/chunk-GSUQJJXQ.js +331 -0
- package/dist/chunk-GSV226X6.js +110 -0
- package/dist/chunk-H2AYQIHW.js +224 -0
- package/dist/chunk-H66DXFS5.js +1374 -0
- package/dist/chunk-H6G7QRMQ.js +35 -0
- package/dist/chunk-H7JAGHZT.js +59 -0
- package/dist/chunk-H7ZEFECA.js +316 -0
- package/dist/chunk-HAC6EHZZ.js +79 -0
- package/dist/chunk-HIO33P3G.js +19 -0
- package/dist/chunk-HMVQIPH3.js +547 -0
- package/dist/chunk-HOYBYAOA.js +257 -0
- package/dist/chunk-HX5P3CSP.js +1784 -0
- package/dist/chunk-I46EG2XQ.js +65 -0
- package/dist/chunk-I4NPDSCB.js +279 -0
- package/dist/chunk-I5WRT7ZR.js +514 -0
- package/dist/chunk-IC7I6YIJ.js +301 -0
- package/dist/chunk-IDCSOZVN.js +78 -0
- package/dist/chunk-IFCBYECK.js +112 -0
- package/dist/chunk-IFZCPEY2.js +66 -0
- package/dist/chunk-IKFP2KUR.js +48 -0
- package/dist/chunk-IRFBN336.js +878 -0
- package/dist/chunk-IUXNGKA6.js +152 -0
- package/dist/chunk-IV2RVAN7.js +1356 -0
- package/dist/chunk-IZYIQQ7X.js +53 -0
- package/dist/chunk-J3UUR7DE.js +210 -0
- package/dist/chunk-J54VUAY2.js +566 -0
- package/dist/chunk-J62KPGII.js +464 -0
- package/dist/chunk-J6P3FWWW.js +130 -0
- package/dist/chunk-JKBHJQMT.js +434 -0
- package/dist/chunk-JLS65NUQ.js +14 -0
- package/dist/chunk-JOSYEJKY.js +141 -0
- package/dist/chunk-JPKSXKNB.js +94 -0
- package/dist/chunk-JQNJB2BB.js +2440 -0
- package/dist/chunk-JRVNSWSQ.js +2626 -0
- package/dist/chunk-JSWMRQYG.js +28 -0
- package/dist/chunk-JZKNBBIB.js +152 -0
- package/dist/chunk-K54Y7MLK.js +160 -0
- package/dist/chunk-K65546RE.js +183 -0
- package/dist/chunk-KM3F7SYE.js +702 -0
- package/dist/chunk-KNDYMVWN.js +102 -0
- package/dist/chunk-KNT72VR6.js +132 -0
- package/dist/chunk-KP6YILMU.js +482 -0
- package/dist/chunk-KQEBSK3T.js +274 -0
- package/dist/chunk-KT6VHSPF.js +84 -0
- package/dist/chunk-KTMW65UX.js +14 -0
- package/dist/chunk-KZ5CJVBP.js +1813 -0
- package/dist/chunk-L4427KOE.js +26 -0
- package/dist/chunk-L6OM4A22.js +189 -0
- package/dist/chunk-L7E6XCRA.js +1042 -0
- package/dist/chunk-L7JZLXQL.js +173 -0
- package/dist/chunk-LAMKBTXX.js +40 -0
- package/dist/chunk-LDCF2MKN.js +132 -0
- package/dist/chunk-LEIIWPWQ.js +78 -0
- package/dist/chunk-LFTQVYBB.js +31 -0
- package/dist/chunk-LG3PDRTR.js +2872 -0
- package/dist/chunk-LGHII5ET.js +23 -0
- package/dist/chunk-LH5QY22X.js +1205 -0
- package/dist/chunk-LIVJ6266.js +438 -0
- package/dist/chunk-LKRAR3IH.js +276 -0
- package/dist/chunk-LO23NABI.js +3063 -0
- package/dist/chunk-LO3X5NLS.js +326 -0
- package/dist/chunk-LPITVM7M.js +339 -0
- package/dist/chunk-LR5IJIGV.js +810 -0
- package/dist/chunk-LRGMHROI.js +79 -0
- package/dist/chunk-LUVKFFWR.js +315 -0
- package/dist/chunk-LWCBNGH6.js +35 -0
- package/dist/chunk-LWTN3WRV.js +260 -0
- package/dist/chunk-M3HQYKQX.js +308 -0
- package/dist/chunk-M6GVSPEH.js +1016 -0
- package/dist/chunk-MF5HP6XV.js +221 -0
- package/dist/chunk-MHLCBZJB.js +328 -0
- package/dist/chunk-MN6PL4AN.js +120 -0
- package/dist/chunk-MOEY65Z6.js +5678 -0
- package/dist/chunk-MQ4WA34C.js +206 -0
- package/dist/chunk-MWHF5V7U.js +223 -0
- package/dist/chunk-MWHLBPNU.js +211 -0
- package/dist/chunk-MWK5UZQ3.js +1068 -0
- package/dist/chunk-MYLH2S4G.js +64 -0
- package/dist/chunk-MZ5WYKNA.js +28 -0
- package/dist/chunk-N4VTRA7K.js +131 -0
- package/dist/chunk-N5DX4JAK.js +12 -0
- package/dist/chunk-N65O4XTH.js +5011 -0
- package/dist/chunk-NEQUQHOX.js +223 -0
- package/dist/chunk-NGK6PEOG.js +25 -0
- package/dist/chunk-NJVD4PWE.js +1033 -0
- package/dist/chunk-NM6PMYY4.js +768 -0
- package/dist/chunk-NN4PJDHP.js +708 -0
- package/dist/chunk-NP2V3L7K.js +226 -0
- package/dist/chunk-NRLY536M.js +260 -0
- package/dist/chunk-NRNE225N.js +1270 -0
- package/dist/chunk-NS2K2GTP.js +605 -0
- package/dist/chunk-NS33V3IM.js +51 -0
- package/dist/chunk-NSHASMZZ.js +71 -0
- package/dist/chunk-NWOYOA6H.js +378 -0
- package/dist/chunk-NWRUSEXG.js +322 -0
- package/dist/chunk-NZGDAWIP.js +1905 -0
- package/dist/chunk-O47UOKU3.js +395 -0
- package/dist/chunk-O4G2W3ST.js +9831 -0
- package/dist/chunk-O6V4PNLO.js +63 -0
- package/dist/chunk-OA4GPILI.js +624 -0
- package/dist/chunk-OGMSYL6J.js +227 -0
- package/dist/chunk-OIS7J26S.js +319 -0
- package/dist/chunk-OMX5VL43.js +79 -0
- package/dist/chunk-ON3G73BU.js +264 -0
- package/dist/chunk-OPYFYTWQ.js +220 -0
- package/dist/chunk-OQ6K46CK.js +1734 -0
- package/dist/chunk-OYZYO7TV.js +47 -0
- package/dist/chunk-OZ4REHIN.js +4386 -0
- package/dist/chunk-P47VN5F4.js +282 -0
- package/dist/chunk-P5I4X7A7.js +353 -0
- package/dist/chunk-P6VQROCO.js +594 -0
- package/dist/chunk-P7CQGPLS.js +30 -0
- package/dist/chunk-PCAGC5MR.js +1763 -0
- package/dist/chunk-PFTQBXS6.js +5181 -0
- package/dist/chunk-PGSPX4SU.js +15 -0
- package/dist/chunk-PIKLF7BM.js +432 -0
- package/dist/chunk-PJWJ3SAV.js +22 -0
- package/dist/chunk-PKIFMV72.js +100 -0
- package/dist/chunk-PL37JDNA.js +189 -0
- package/dist/chunk-PTH5E5XO.js +195 -0
- package/dist/chunk-PW6AXLQC.js +4128 -0
- package/dist/chunk-PYITM4N2.js +79 -0
- package/dist/chunk-PZ5AY32C.js +10 -0
- package/dist/chunk-Q3RO7N35.js +45 -0
- package/dist/chunk-Q3WIC6GQ.js +2670 -0
- package/dist/chunk-Q5XIXSHX.js +271 -0
- package/dist/chunk-QGJDMEOV.js +34 -0
- package/dist/chunk-QNOB37UH.js +58 -0
- package/dist/chunk-QOCOVLUH.js +462 -0
- package/dist/chunk-QTCJ5CC5.js +172 -0
- package/dist/chunk-QVFV5IP2.js +232 -0
- package/dist/chunk-QVZMFDYG.js +29 -0
- package/dist/chunk-R35PEUKH.js +511 -0
- package/dist/chunk-R4UWBC35.js +200 -0
- package/dist/chunk-R6MLCREW.js +44 -0
- package/dist/chunk-R6W23LKN.js +254 -0
- package/dist/chunk-R7XDDX2A.js +4007 -0
- package/dist/chunk-RDFRCT64.js +168 -0
- package/dist/chunk-RE5VZDFQ.js +58 -0
- package/dist/chunk-RGROYC2G.js +638 -0
- package/dist/chunk-RGWHUI5E.js +68 -0
- package/dist/chunk-RHVG6UNL.js +205 -0
- package/dist/chunk-RI4EX2QE.js +18 -0
- package/dist/chunk-RJAAKDRX.js +17 -0
- package/dist/chunk-ROMHOSMQ.js +185 -0
- package/dist/chunk-RWREC3KJ.js +517 -0
- package/dist/chunk-RYNETRDJ.js +118 -0
- package/dist/chunk-RZY7RKM5.js +500 -0
- package/dist/chunk-S2MNWFAG.js +52 -0
- package/dist/chunk-S2VQCZO4.js +22 -0
- package/dist/chunk-S54MKU6V.js +117 -0
- package/dist/chunk-S5OIDFRM.js +302 -0
- package/dist/chunk-SCW4ZF6R.js +150 -0
- package/dist/chunk-SLS2N4PH.js +2213 -0
- package/dist/chunk-SNLBO4BF.js +247 -0
- package/dist/chunk-SP3LFU6B.js +60 -0
- package/dist/chunk-SQQTDDQA.js +537 -0
- package/dist/chunk-STV6LYYE.js +45 -0
- package/dist/chunk-SURZ2WFE.js +326 -0
- package/dist/chunk-SZ7DL357.js +1047 -0
- package/dist/chunk-T5E4NQCM.js +5742 -0
- package/dist/chunk-TAJPCXSB.js +13 -0
- package/dist/chunk-TAOOYK3P.js +358 -0
- package/dist/chunk-TDSEX5CF.js +24 -0
- package/dist/chunk-TFTGP7Z7.js +174 -0
- package/dist/chunk-TGON4N4O.js +197 -0
- package/dist/chunk-TGQZHDY2.js +2373 -0
- package/dist/chunk-TJJZ2OKV.js +6783 -0
- package/dist/chunk-TRSVUPCX.js +25 -0
- package/dist/chunk-TSXGRLPR.js +107 -0
- package/dist/chunk-U2S3YEX3.js +224 -0
- package/dist/chunk-U45RTRGY.js +818 -0
- package/dist/chunk-U6C3VVWS.js +13 -0
- package/dist/chunk-UDMS5AD3.js +307 -0
- package/dist/chunk-UGX7GI37.js +94 -0
- package/dist/chunk-UH3JJSHK.js +1 -0
- package/dist/chunk-UHRBTZYY.js +208 -0
- package/dist/chunk-UHT2KRG5.js +193 -0
- package/dist/chunk-UI2F6DJ5.js +118 -0
- package/dist/chunk-UMAKSB4Z.js +284 -0
- package/dist/chunk-UR2IBGIM.js +521 -0
- package/dist/chunk-UUH2RVKS.js +585 -0
- package/dist/chunk-UVJ4PJDK.js +4533 -0
- package/dist/chunk-V53UG2OT.js +9924 -0
- package/dist/chunk-V72RMBM4.js +48 -0
- package/dist/chunk-VBNCKCCI.js +16 -0
- package/dist/chunk-VNSYKC25.js +24 -0
- package/dist/chunk-VPHVFK4A.js +1984 -0
- package/dist/chunk-VTLNJQ44.js +133 -0
- package/dist/chunk-VTW7HP3R.js +100 -0
- package/dist/chunk-VVGEPBPS.js +218 -0
- package/dist/chunk-VVLLL7I4.js +166 -0
- package/dist/chunk-VX3UMWB7.js +483 -0
- package/dist/chunk-VXF4Q3FW.js +20 -0
- package/dist/chunk-W3JMT2YY.js +712 -0
- package/dist/chunk-WDUORIHF.js +877 -0
- package/dist/chunk-WDVTY4U6.js +148 -0
- package/dist/chunk-WIFZCHEG.js +12566 -0
- package/dist/chunk-WIRN3F75.js +736 -0
- package/dist/chunk-WMPU2UOV.js +82 -0
- package/dist/chunk-WTOKKE2V.js +784 -0
- package/dist/chunk-WX5IRLF6.js +740 -0
- package/dist/chunk-WZ6U3O7I.js +1581 -0
- package/dist/chunk-XAONGNST.js +57 -0
- package/dist/chunk-XB5YLCLB.js +13 -0
- package/dist/chunk-XEP5NQ5Y.js +688 -0
- package/dist/chunk-XGYF2QMZ.js +351 -0
- package/dist/chunk-XHEKQENB.js +255 -0
- package/dist/chunk-XNO4FM6X.js +1124 -0
- package/dist/chunk-XPHKYHO4.js +878 -0
- package/dist/chunk-XPK2I4NC.js +405 -0
- package/dist/chunk-XPU2XADL.js +2175 -0
- package/dist/chunk-XQD2B6BB.js +507 -0
- package/dist/chunk-XT2ZQVTC.js +558 -0
- package/dist/chunk-XTXJGGUV.js +351 -0
- package/dist/chunk-XUXVDPSZ.js +50 -0
- package/dist/chunk-XV7NZL4B.js +57 -0
- package/dist/chunk-XZE4XARH.js +563 -0
- package/dist/chunk-XZYR5EDO.js +152 -0
- package/dist/chunk-Y3J4JMTU.js +61 -0
- package/dist/chunk-Y55LZN5U.js +52 -0
- package/dist/chunk-Y5VN7DMP.js +112 -0
- package/dist/chunk-Y67VAHN4.js +459 -0
- package/dist/chunk-YAXSKEUH.js +3544 -0
- package/dist/chunk-YB3JD4E6.js +975 -0
- package/dist/chunk-YESZJFK6.js +220 -0
- package/dist/chunk-YGXKOBQQ.js +292 -0
- package/dist/chunk-YMX76IOS.js +31 -0
- package/dist/chunk-YOTXESEH.js +257 -0
- package/dist/chunk-YTYIEZQY.js +119 -0
- package/dist/chunk-YVORHQ2S.js +579 -0
- package/dist/chunk-Z2CUQDAR.js +3429 -0
- package/dist/chunk-Z2KYOFHS.js +7000 -0
- package/dist/chunk-Z6PC7QX6.js +161 -0
- package/dist/chunk-ZDTGECTN.js +235 -0
- package/dist/chunk-ZIPWI2LY.js +151 -0
- package/dist/chunk-ZSKKMTQJ.js +554 -0
- package/dist/chunk-ZTT5IVPY.js +1160 -0
- package/dist/chunk-ZX65UI5W.js +78 -0
- package/dist/chunk-ZYG7GGKO.js +218 -0
- package/dist/chunk-ZZZUL4OF.js +38 -0
- package/dist/cli-utils-IXL26KJT.js +40 -0
- package/dist/cli-validation-WLXWLUJL.js +111 -0
- package/dist/commit-utils-P7CRJF5N.js +202 -0
- package/dist/compete-config-resolver-R5ULXMYH.js +76 -0
- package/dist/compete-request-62JESVET.js +364 -0
- package/dist/compete-results-QEPG6FZX.js +208 -0
- package/dist/competition-outcome-tracker-R32OOZ43.js +38 -0
- package/dist/config-JCOKXOQT.js +166 -0
- package/dist/config-audit-EL3GHXS7.js +360 -0
- package/dist/config-explain-TNILDEVJ.js +12 -0
- package/dist/config-loader-VPFPFO4B.js +38 -0
- package/dist/config-manager-7T4E2BQO.js +67 -0
- package/dist/config-validator-KKOHOW7O.js +72 -0
- package/dist/cost-YC42XUF3.js +53 -0
- package/dist/coverage-orchestrator-CISNKJC2.js +772 -0
- package/dist/coverage-scanner-YVD62MLH.js +12 -0
- package/dist/createCompetitionRunner-LJG6ZQSO.js +46 -0
- package/dist/data-migration-state-VJK64DLT.js +31 -0
- package/dist/db-migrator-XSEIOGWY.js +34 -0
- package/dist/discovery-JGYGDD25.js +25 -0
- package/dist/doctor-GJOYE7AE.js +186 -0
- package/dist/domain-analyzer-AWF3RP6E.js +29 -0
- package/dist/ensure-initialized-744DIZEZ.js +52 -0
- package/dist/entry.js +940 -0
- package/dist/environment-YS45U5ZI.js +81 -0
- package/dist/error-parser-core-PPZ36A4S.js +50 -0
- package/dist/escalation-ladder-MKTCEGSA.js +130 -0
- package/dist/evaluation-context-KV4GZNN7.js +35 -0
- package/dist/evidence-plan-resolver-GBSYSAPX.js +85 -0
- package/dist/execution-data-writer-3ODTBDLH.js +53 -0
- package/dist/execution-policy-applier-ZHD3DCF3.js +31 -0
- package/dist/execution-preflight-Z4Y64V3I.js +209 -0
- package/dist/execution-roles-R3DPPMD3.js +66 -0
- package/dist/exit-code-error-Z4SW2DVK.js +14 -0
- package/dist/external-temp-cleanup-N2RZH4QP.js +311 -0
- package/dist/factory-XBN7DFIM.js +149 -0
- package/dist/file-utils-XIVR2ZMA.js +47 -0
- package/dist/flywheel-autoloop-executor-UILGOFFK.js +249 -0
- package/dist/flywheel-competition-executor-JOBEXTRB.js +259 -0
- package/dist/flywheel-executor-6JFLA6J5.js +369 -0
- package/dist/flywheel-git-isolation-UC5NIEVU.js +48 -0
- package/dist/flywheel-manifest-5UC4VBMA.js +108 -0
- package/dist/flywheel-model-defaults-7CVKP53V.js +27 -0
- package/dist/flywheel-preflight-XEY5SHM6.js +104 -0
- package/dist/flywheel-resume-7HELH7QS.js +23 -0
- package/dist/flywheel-safety-7U7DPOAP.js +28 -0
- package/dist/flywheel-scope-decision-ZHKF6ZIN.js +11 -0
- package/dist/get-telemetry-logger-DPVWWIYY.js +73 -0
- package/dist/git-worktree-IY6V6DUO.js +18 -0
- package/dist/github-pr-manager-4LXEKJTA.js +211 -0
- package/dist/guidance-profile-config-E7XJL2VP.js +117 -0
- package/dist/guidance-profile-renderer-QK2YMAAP.js +21 -0
- package/dist/index-query-4JEUKA44.js +31 -0
- package/dist/index.js +108661 -0
- package/dist/instructions-6BURLQJC.js +64 -0
- package/dist/invoke-provider-auth-GRUYP44M.js +223 -0
- package/dist/judge-scoring.json +80 -0
- package/dist/judge-test.js +555 -0
- package/dist/lab-mode-OTWVHN63.js +39 -0
- package/dist/lab-utils-BJRFLGK4.js +23 -0
- package/dist/linux-host-class-UY4KVLFD.js +29 -0
- package/dist/llm-judge-executor-F7Z3HO77.js +133 -0
- package/dist/local-executor-CEHWE2PL.js +223 -0
- package/dist/logger-33TR6EE5.js +72 -0
- package/dist/loop-spec-XTLQAVZ7.js +191 -0
- package/dist/manager-2HJG5CLT.js +25 -0
- package/dist/matrix-prompt-builder-6UDN5X3F.js +497 -0
- package/dist/matrix-result-parser-7W35EUOV.js +15 -0
- package/dist/metadata-HQ43NDEK.js +22 -0
- package/dist/model-invocations-db-QBO4Y7WZ.js +38 -0
- package/dist/monitor-XGYBG2DW.js +72 -0
- package/dist/next-PB5ZXZKB.js +90 -0
- package/dist/next-ZBDK725T.js +69 -0
- package/dist/optimization-config-resolver-O6WKR47U.js +75 -0
- package/dist/package-3YCWIQQ5.js +10 -0
- package/dist/parallel-orchestrator-NL7YJJU2.js +297 -0
- package/dist/parallel-worker.js +279 -0
- package/dist/parse-git-status-PIAF3OTP.js +10 -0
- package/dist/path-security-ETTH6TZL.js +39 -0
- package/dist/pattern-bank-UNJR5ADV.js +15 -0
- package/dist/plan-backlog-list-fast-VAGYBV3J.js +270 -0
- package/dist/plan-backlog-show-fast-SG2CZPW3.js +406 -0
- package/dist/plan-sprint-list-fast-LURAX47V.js +162 -0
- package/dist/plan-sprint-status-fast-FJAODCHD.js +208 -0
- package/dist/plan-task-status-fast-HNYBMQI4.js +349 -0
- package/dist/plan-to-flywheel-Z4U3GWPN.js +456 -0
- package/dist/planning-backlog-3CQ5QQBQ.js +319 -0
- package/dist/poetic-root-V5DNXEAE.js +17 -0
- package/dist/preflight-OPANWMME.js +12 -0
- package/dist/process-registry-PDZJPTAS.js +27 -0
- package/dist/process-scanner-C22SYXYD.js +22 -0
- package/dist/processes-KMQUD7HY.js +29 -0
- package/dist/processes-json-fast-IBDXZ6WW.js +135 -0
- package/dist/profile-SE5EVXAP.js +149 -0
- package/dist/prompts-WZZPGWBX.js +168 -0
- package/dist/protected-branches-RNTEX7ET.js +57 -0
- package/dist/provider-aware-resource-manager-QBTZJMNP.js +18 -0
- package/dist/provider-matrix-N5X57V3Y.js +154 -0
- package/dist/provider-matrix-renderer-MZDWKKID.js +139 -0
- package/dist/provider-output-forwarding-DERID3TP.js +30 -0
- package/dist/provider-registry-J5NRBJKI.js +128 -0
- package/dist/provider-temp-cleanup-KYGLF6YU.js +14 -0
- package/dist/prune-engine-Q6E2DXBN.js +451 -0
- package/dist/quality-gate-YRHMQAEI.js +70 -0
- package/dist/quickstart-FIRLKGJI.js +62 -0
- package/dist/readiness-VZTMSG6J.js +96 -0
- package/dist/registry-YODFY77A.js +153 -0
- package/dist/repair-helpers-TTV5FEF4.js +117 -0
- package/dist/repo-root-2IGD4H7X.js +22 -0
- package/dist/resolution-engine-D6TX6FRG.js +127 -0
- package/dist/resolve-provider-cli-O2P6XZBZ.js +35 -0
- package/dist/restore-telemetry-db-BQL6DTQF.js +360 -0
- package/dist/result-streamer-WEHW476R.js +19 -0
- package/dist/routing-events-DHPUZDDF.js +27 -0
- package/dist/routing-history-store-UWCEXAP3.js +46 -0
- package/dist/routing-planner-F5WQEUOM.js +160 -0
- package/dist/run-poetic-tui-J6LWRJUP.js +13517 -0
- package/dist/run-simulation.js +376 -0
- package/dist/runner-CS2TNGHA.js +1092 -0
- package/dist/runner-HHH7ZN2Z.js +1571 -0
- package/dist/safety-OCC4KJJR.js +64 -0
- package/dist/safety-stanza-7SV3HGG3.js +60 -0
- package/dist/sandbox-32QXJEMV.js +81 -0
- package/dist/sandbox-RSO7VP6V.js +94 -0
- package/dist/schema-extensions.sql +234 -0
- package/dist/security-2KI5XNDG.js +17 -0
- package/dist/setup-bb-plugin-QAQWZCV5.js +738 -0
- package/dist/setup-claude-code-P7BTTSPO.js +317 -0
- package/dist/setup-temp-cleanup-GASCWZ2I.js +20 -0
- package/dist/shared-utils-D6U6UREP.js +37 -0
- package/dist/simple-artifact-goal-OTXNGZY6.js +25 -0
- package/dist/sprint-UIXPYOXQ.js +338 -0
- package/dist/sprint-bridge-4BHMSC3M.js +68 -0
- package/dist/sprint-execution-service-2B7WHL5L.js +311 -0
- package/dist/sprint-manager-IDQUDNQI.js +91 -0
- package/dist/sqlite-wrapper-UDWCTNLJ.js +17 -0
- package/dist/stale-cleanup-orchestrator-XWXV7KCZ.js +62 -0
- package/dist/storage-access-F6ALDN4S.js +22 -0
- package/dist/synthesis-XD6EDVHF.js +185 -0
- package/dist/task-classifier-LNLXSHOM.js +494 -0
- package/dist/task-list-fast-PTMA4LUC.js +147 -0
- package/dist/task-manager-XAT7GOWB.js +93 -0
- package/dist/task-splitter-U7DJ7W6A.js +79 -0
- package/dist/task-type-detector-OLVOMXZO.js +21 -0
- package/dist/task-type-resolver-KKNQYSB4.js +42 -0
- package/dist/telemetry-5HWBBXLX.js +131 -0
- package/dist/telemetry-health-tracker-DMSSGBZ2.js +11 -0
- package/dist/telemetry-path-resolver-7ICSG276.js +28 -0
- package/dist/telemetry-reliability-XUOZNZZ6.js +125 -0
- package/dist/token-estimator-MEQUL3EJ.js +37 -0
- package/dist/transports-KNSSV2V4.js +255 -0
- package/dist/unified-cost-tracker-4TFRBVPR.js +35 -0
- package/dist/unified-state-cleanup-LJPF2BOW.js +276 -0
- package/dist/universal-cost-calculator-BAJV35GA.js +42 -0
- package/dist/user-agents-GHUGCSKN.js +22 -0
- package/dist/variant-delivery-state-KLRNG6XA.js +33 -0
- package/dist/variant-state-cleanup-MZGGLQAJ.js +280 -0
- package/dist/variant-success-PJXWE3ZV.js +12 -0
- package/dist/variant-worker-KUWKBLAH.js +4196 -0
- package/dist/variant-worker.js +24 -0
- package/dist/variants-JE2FSAQS.js +233 -0
- package/dist/verification-toolchains-V24UHW6Q.js +28 -0
- package/dist/verify-commands-H3DTCSGI.js +37 -0
- package/dist/warning-EGQGUUIO.js +12 -0
- package/dist/work-edge-RWEDWJZF.js +49 -0
- package/dist/work-item-writer-WHAVZXAY.js +19 -0
- package/dist/worker-7SA2VS2Y.js +1435 -0
- package/dist/worker.js +19 -0
- package/dist/worktree-metrics-3DFUYVYE.js +26 -0
- package/dist/writeback-VZKHYHSN.js +44 -0
- package/docs/CLI_REFERENCE.md +7042 -0
- package/docs/PROVIDER_SETUP.md +1570 -0
- package/docs/README.md +96 -0
- package/docs/TROUBLESHOOTING.md +2232 -0
- package/docs/getting-started/QUICK_START.md +294 -0
- package/docs/getting-started/README.md +188 -0
- package/docs/getting-started/SETUP.md +52 -0
- package/docs/reference/AGENT_CONTEXT.md +38 -0
- package/docs/reference/PROVIDER_RELEASE_TIERS.md +34 -0
- package/docs/reference/README.md +381 -0
- package/docs/reference/SECURITY.md +262 -0
- package/integrations/bb-plugin-poetic/README.md +362 -0
- package/integrations/bb-plugin-poetic/app.css +341 -0
- package/integrations/bb-plugin-poetic/app.tsx +5059 -0
- package/integrations/bb-plugin-poetic/package.json +45 -0
- package/integrations/bb-plugin-poetic/server.ts +444 -0
- package/integrations/bb-plugin-poetic/src/adapter.ts +3312 -0
- package/integrations/bb-plugin-poetic/src/backlog-authoring-model.ts +150 -0
- package/integrations/bb-plugin-poetic/src/backlog-authoring-schema.ts +355 -0
- package/integrations/bb-plugin-poetic/src/backlog-authoring-service.ts +419 -0
- package/integrations/bb-plugin-poetic/src/backlog-authoring-view.ts +1026 -0
- package/integrations/bb-plugin-poetic/src/competition-defaults-schema.ts +122 -0
- package/integrations/bb-plugin-poetic/src/competition-defaults-service.ts +105 -0
- package/integrations/bb-plugin-poetic/src/competition-defaults-view.ts +138 -0
- package/integrations/bb-plugin-poetic/src/contract.ts +615 -0
- package/integrations/bb-plugin-poetic/src/finalize-model.ts +205 -0
- package/integrations/bb-plugin-poetic/src/finalize-schema.ts +158 -0
- package/integrations/bb-plugin-poetic/src/finalize-service.ts +382 -0
- package/integrations/bb-plugin-poetic/src/finalize-view.ts +159 -0
- package/integrations/bb-plugin-poetic/src/judge-operations-readback.ts +303 -0
- package/integrations/bb-plugin-poetic/src/judge-operations-schema.ts +33 -0
- package/integrations/bb-plugin-poetic/src/judge-operations-view.ts +459 -0
- package/integrations/bb-plugin-poetic/src/model.ts +1302 -0
- package/integrations/bb-plugin-poetic/src/monitor-service.ts +233 -0
- package/integrations/bb-plugin-poetic/src/panel-read-ux.ts +97 -0
- package/integrations/bb-plugin-poetic/src/patch-preview-schema.ts +166 -0
- package/integrations/bb-plugin-poetic/src/patch-preview-service.ts +480 -0
- package/integrations/bb-plugin-poetic/src/patch-preview-view.ts +109 -0
- package/integrations/bb-plugin-poetic/src/planning-readback.ts +204 -0
- package/integrations/bb-plugin-poetic/src/planning-service.ts +594 -0
- package/integrations/bb-plugin-poetic/src/planning-workspace-schema.ts +95 -0
- package/integrations/bb-plugin-poetic/src/planning-workspace.ts +323 -0
- package/integrations/bb-plugin-poetic/src/poll-handoff.ts +136 -0
- package/integrations/bb-plugin-poetic/src/project-target-server.ts +21 -0
- package/integrations/bb-plugin-poetic/src/project-target.ts +45 -0
- package/integrations/bb-plugin-poetic/src/reference-index.ts +192 -0
- package/integrations/bb-plugin-poetic/src/repository-schema.ts +30 -0
- package/integrations/bb-plugin-poetic/src/result-explorer-view.ts +597 -0
- package/integrations/bb-plugin-poetic/src/result-readback-model.ts +163 -0
- package/integrations/bb-plugin-poetic/src/result-readback-schema.ts +319 -0
- package/integrations/bb-plugin-poetic/src/result-readback-service.ts +333 -0
- package/integrations/bb-plugin-poetic/src/run-page-view.ts +177 -0
- package/integrations/bb-plugin-poetic/src/setup-config-schema.ts +291 -0
- package/integrations/bb-plugin-poetic/src/setup-config-service.ts +590 -0
- package/integrations/bb-plugin-poetic/src/setup-config-view.ts +413 -0
- package/integrations/bb-plugin-poetic/src/sprint-close-model.ts +150 -0
- package/integrations/bb-plugin-poetic/src/sprint-close-schema.ts +136 -0
- package/integrations/bb-plugin-poetic/src/sprint-close-service.ts +341 -0
- package/integrations/bb-plugin-poetic/src/sprint-close-view.ts +116 -0
- package/integrations/bb-plugin-poetic/src/sprint-composition-model.ts +714 -0
- package/integrations/bb-plugin-poetic/src/sprint-composition-readback.ts +231 -0
- package/integrations/bb-plugin-poetic/src/sprint-composition-schema.ts +601 -0
- package/integrations/bb-plugin-poetic/src/sprint-composition-service.ts +775 -0
- package/integrations/bb-plugin-poetic/src/sprint-composition-view.ts +1221 -0
- package/integrations/bb-plugin-poetic/src/task-authoring-model.ts +567 -0
- package/integrations/bb-plugin-poetic/src/task-authoring-schema.ts +635 -0
- package/integrations/bb-plugin-poetic/src/task-authoring-service.ts +842 -0
- package/integrations/bb-plugin-poetic/src/task-authoring-view.ts +1227 -0
- package/integrations/bb-plugin-poetic/src/task-detail-readback.ts +56 -0
- package/integrations/bb-plugin-poetic/src/task-detail-schema.ts +144 -0
- package/integrations/bb-plugin-poetic/src/task-navigation.ts +446 -0
- package/integrations/bb-plugin-poetic/src/workbench-route.ts +74 -0
- package/integrations/bb-plugin-poetic/tests/host-contract.test.ts +773 -0
- package/integrations/bb-plugin-poetic/tsconfig.json +18 -0
- package/integrations/bb-plugin-poetic/types/PROVENANCE.json +52 -0
- package/integrations/bb-plugin-poetic/types/bb-plugin-sdk-app.d.ts +1444 -0
- package/integrations/bb-plugin-poetic/types/bb-plugin-sdk.d.ts +13030 -0
- package/integrations/bb-plugin-poetic/vitest.host.config.ts +71 -0
- package/npm-shrinkwrap.json +4950 -0
- package/package.json +331 -0
- package/schemas/README.md +80 -0
- package/schemas/config-v1.schema.json +136 -0
- package/schemas/execution-config.schema.json +47 -0
- package/schemas/judge-scoring.schema.json +370 -0
- package/schemas/poetic.config.schema.json +2214 -0
- package/schemas/provider-config.schema.json +203 -0
- package/schemas/telemetry-config.schema.json +79 -0
- package/schemas/user-preferences.schema.json +141 -0
- package/scripts/assert-node-runtime.mjs +140 -0
- package/scripts/preflight-native.mjs +49 -0
- package/scripts/preinstall-node-check.mjs +78 -0
- package/scripts/setup-git-hooks.mjs +24 -0
- package/scripts/sync.sh +2722 -0
- package/scripts/write-node-launcher.sh +108 -0
- package/src/resources/gemini/slash-packs/default/plan.toml +15 -0
- package/src/resources/gemini/slash-packs/default/summary.toml +16 -0
- package/src/resources/gemini/slash-packs/default/tests.toml +16 -0
- package/templates/.poetic/README.md +37 -0
- package/templates/.poetic/agents/README.md +296 -0
- package/templates/.poetic/agents/api-documenter.md +147 -0
- package/templates/.poetic/agents/backend-architect.md +31 -0
- package/templates/.poetic/agents/code-reviewer.md +157 -0
- package/templates/.poetic/agents/data-scientist.md +179 -0
- package/templates/.poetic/agents/database-optimizer.md +145 -0
- package/templates/.poetic/agents/debugger.md +31 -0
- package/templates/.poetic/agents/deployment-engineer.md +164 -0
- package/templates/.poetic/agents/devops-troubleshooter.md +139 -0
- package/templates/.poetic/agents/frontend-developer.md +150 -0
- package/templates/.poetic/agents/javascript-pro.md +36 -0
- package/templates/.poetic/agents/performance-engineer.md +151 -0
- package/templates/.poetic/agents/python-pro.md +137 -0
- package/templates/.poetic/agents/test-automator.md +147 -0
- package/templates/.poetic/agents/typescript-pro.md +34 -0
- package/templates/.poetic/config/poetic.config.jsonc +69 -0
- package/templates/.poetic/config/project-context.template.json +6 -0
- package/templates/.poetic/config/task-type-aliases.presets/kanban.yaml +14 -0
- package/templates/.poetic/config/task-type-aliases.presets/scrum.yaml +17 -0
- package/templates/.poetic/config/task-type-aliases.presets/xp.yaml +12 -0
- package/templates/.poetic/config/task-type-aliases.yaml +28 -0
- package/templates/.poetic/gitignore.template +55 -0
- package/templates/.poetic/task-types/analysis.yaml +40 -0
- package/templates/.poetic/task-types/architecture.yaml +38 -0
- package/templates/.poetic/task-types/doc.yaml +35 -0
- package/templates/.poetic/task-types/feature.yaml +23 -0
- package/templates/.poetic/task-types/general.yaml +6 -0
- package/templates/.poetic/task-types/security.yaml +39 -0
- package/templates/AGENTS.template.md +99 -0
- package/templates/CLAUDE.template.md +1 -0
- package/templates/GEMINI.template.md +1 -0
- package/templates/builtin-workflows/code-review.yaml +73 -0
- package/templates/builtin-workflows/compete-streak.yaml +78 -0
- package/templates/builtin-workflows/hello-verify.yaml +10 -0
- package/templates/builtin-workflows/judge-regression.yaml +114 -0
- package/templates/builtin-workflows/skills/code-review/SKILL.md +60 -0
- package/templates/builtin-workflows/skills/hello-verify/SKILL.md +6 -0
- package/templates/guard-kit/GUARD_SETUP.md.template +255 -0
- package/templates/guard-kit/check.mjs.template +777 -0
- package/templates/guard-kit/config.json.template +6 -0
- package/templates/guard-kit/poetic-guard.yml.template +189 -0
- package/templates/profiles/README.md +56 -0
- package/templates/profiles/frontier-claude.json +27 -0
- package/templates/profiles/frontier-codex.json +26 -0
|
@@ -0,0 +1,878 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getBuckets
|
|
3
|
+
} from "./chunk-HOYBYAOA.js";
|
|
4
|
+
import {
|
|
5
|
+
SCHEMA_VERSION,
|
|
6
|
+
TelemetryDatabase,
|
|
7
|
+
checkSchemaVersion
|
|
8
|
+
} from "./chunk-FYOILAN5.js";
|
|
9
|
+
import {
|
|
10
|
+
hasMigratableRepoLocalData,
|
|
11
|
+
isDataMigrationComplete
|
|
12
|
+
} from "./chunk-CD7ISXA4.js";
|
|
13
|
+
import {
|
|
14
|
+
getGlobalTelemetryDir,
|
|
15
|
+
getProjectDataDir
|
|
16
|
+
} from "./chunk-UUH2RVKS.js";
|
|
17
|
+
import {
|
|
18
|
+
hasExplicitPoeticRoot,
|
|
19
|
+
resolvePoeticRepoStartDir,
|
|
20
|
+
resolveRepoRootOverride
|
|
21
|
+
} from "./chunk-L7JZLXQL.js";
|
|
22
|
+
|
|
23
|
+
// src/bootstrap/ensure-initialized.ts
|
|
24
|
+
import { AsyncLocalStorage } from "async_hooks";
|
|
25
|
+
import { execSync } from "child_process";
|
|
26
|
+
import * as fs from "fs";
|
|
27
|
+
import * as path from "path";
|
|
28
|
+
import { fileURLToPath } from "url";
|
|
29
|
+
import Database from "better-sqlite3";
|
|
30
|
+
import * as lockfile from "proper-lockfile";
|
|
31
|
+
|
|
32
|
+
// src/bootstrap/initialization-types.ts
|
|
33
|
+
var RuntimeRequirements = {
|
|
34
|
+
/** Required directories */
|
|
35
|
+
directories: [
|
|
36
|
+
// Note: all paths are relative to the `.poetic/` directory.
|
|
37
|
+
"artifacts",
|
|
38
|
+
"config",
|
|
39
|
+
"telemetry",
|
|
40
|
+
"telemetry/db",
|
|
41
|
+
"telemetry/state",
|
|
42
|
+
"telemetry/state/competitions",
|
|
43
|
+
"telemetry/state/decisions",
|
|
44
|
+
"telemetry/state/variants",
|
|
45
|
+
"telemetry/logs",
|
|
46
|
+
"cache",
|
|
47
|
+
"worktrees",
|
|
48
|
+
"state"
|
|
49
|
+
],
|
|
50
|
+
/** Required database files */
|
|
51
|
+
databases: ["telemetry/db/variants.db", "telemetry/db/validations.db"],
|
|
52
|
+
/** Required configuration files (created from embedded templates if missing) */
|
|
53
|
+
configFiles: [".gitignore"],
|
|
54
|
+
/** State marker file */
|
|
55
|
+
stateFile: "state/init.json",
|
|
56
|
+
/** Initialization lock file path (for cross-process safety) */
|
|
57
|
+
lockFile: "state/.init.lock"
|
|
58
|
+
};
|
|
59
|
+
var FullRequirements = {
|
|
60
|
+
/** Additional directories for full tier */
|
|
61
|
+
directories: [
|
|
62
|
+
// Note: all paths are relative to the `.poetic/` directory.
|
|
63
|
+
"templates",
|
|
64
|
+
"planning",
|
|
65
|
+
"reasoning"
|
|
66
|
+
],
|
|
67
|
+
/** Optional configuration files for full setup */
|
|
68
|
+
optionalConfig: ["config/user.yaml"]
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
// src/bootstrap/ensure-initialized.ts
|
|
72
|
+
var __filename = fileURLToPath(import.meta.url);
|
|
73
|
+
var __dirname = path.dirname(__filename);
|
|
74
|
+
function resolveRepoRootForPoeticDir(cwd, options = {}) {
|
|
75
|
+
const { honorPoeticRepo = true } = options;
|
|
76
|
+
if (honorPoeticRepo && hasExplicitPoeticRoot()) {
|
|
77
|
+
const explicitRoot = resolveRepoRootOverride();
|
|
78
|
+
if (explicitRoot) {
|
|
79
|
+
return explicitRoot;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const startDir = honorPoeticRepo ? resolvePoeticRepoStartDir(cwd) : cwd;
|
|
83
|
+
try {
|
|
84
|
+
const stdout = execSync("git rev-parse --show-toplevel", {
|
|
85
|
+
cwd: startDir,
|
|
86
|
+
stdio: ["ignore", "pipe", "ignore"]
|
|
87
|
+
}).toString().trim();
|
|
88
|
+
if (stdout) return stdout;
|
|
89
|
+
} catch {
|
|
90
|
+
}
|
|
91
|
+
let currentDir = path.resolve(startDir);
|
|
92
|
+
while (true) {
|
|
93
|
+
const gitDir = path.join(currentDir, ".git");
|
|
94
|
+
if (fs.existsSync(gitDir)) return currentDir;
|
|
95
|
+
const parentDir = path.dirname(currentDir);
|
|
96
|
+
if (parentDir === currentDir) break;
|
|
97
|
+
currentDir = parentDir;
|
|
98
|
+
}
|
|
99
|
+
return path.resolve(startDir);
|
|
100
|
+
}
|
|
101
|
+
function findPackageRoot(startDir) {
|
|
102
|
+
let current = startDir;
|
|
103
|
+
for (let i = 0; i < 12; i++) {
|
|
104
|
+
const pkgJsonPath = path.join(current, "package.json");
|
|
105
|
+
const templatesDir = path.join(current, "templates", ".poetic");
|
|
106
|
+
if (fs.existsSync(pkgJsonPath) && fs.existsSync(templatesDir)) {
|
|
107
|
+
return current;
|
|
108
|
+
}
|
|
109
|
+
const parent = path.dirname(current);
|
|
110
|
+
if (parent === current) break;
|
|
111
|
+
current = parent;
|
|
112
|
+
}
|
|
113
|
+
return path.resolve(startDir, "..");
|
|
114
|
+
}
|
|
115
|
+
var PACKAGE_ROOT = findPackageRoot(__dirname);
|
|
116
|
+
var TEMPLATE_POETIC_DIR = path.join(PACKAGE_ROOT, "templates", ".poetic");
|
|
117
|
+
var PACK_SAFE_TEMPLATE_SOURCES = {
|
|
118
|
+
".gitignore": "gitignore.template"
|
|
119
|
+
};
|
|
120
|
+
var POETIC_GITIGNORE_RUNTIME_ENTRY_FALLBACK = [
|
|
121
|
+
"runs/",
|
|
122
|
+
"blocker-answers/",
|
|
123
|
+
"merge-apply/",
|
|
124
|
+
"config/project-context.json",
|
|
125
|
+
"provider-history/",
|
|
126
|
+
"prompts/",
|
|
127
|
+
"planning/indexes/",
|
|
128
|
+
// Transient intent context-injection telemetry (see gitignore.template).
|
|
129
|
+
"logs/injection/"
|
|
130
|
+
];
|
|
131
|
+
function readPoeticGitignoreTemplateEntries() {
|
|
132
|
+
const templatePath = path.join(TEMPLATE_POETIC_DIR, templateSourceRelPath(".gitignore"));
|
|
133
|
+
try {
|
|
134
|
+
return fs.readFileSync(templatePath, "utf-8").split("\n").map((line) => line.trim()).filter((line) => line.length > 0 && !line.startsWith("#"));
|
|
135
|
+
} catch {
|
|
136
|
+
return [...POETIC_GITIGNORE_RUNTIME_ENTRY_FALLBACK];
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
function toPosixRelPath(relPath) {
|
|
140
|
+
return relPath.split(path.sep).join("/");
|
|
141
|
+
}
|
|
142
|
+
function templateSourceRelPath(destRelPath) {
|
|
143
|
+
return PACK_SAFE_TEMPLATE_SOURCES[toPosixRelPath(destRelPath)] ?? destRelPath;
|
|
144
|
+
}
|
|
145
|
+
function templateDestRelPath(sourceRelPath) {
|
|
146
|
+
const normalized = toPosixRelPath(sourceRelPath);
|
|
147
|
+
for (const [dest, source] of Object.entries(PACK_SAFE_TEMPLATE_SOURCES)) {
|
|
148
|
+
if (source === normalized) return dest;
|
|
149
|
+
}
|
|
150
|
+
return sourceRelPath;
|
|
151
|
+
}
|
|
152
|
+
function normalizeGitignoreEntry(entry) {
|
|
153
|
+
return entry.trim().replace(/^\/+/, "").replace(/\/+$/, "");
|
|
154
|
+
}
|
|
155
|
+
function hasPoeticGitignoreRuntimeEntries(poeticDir) {
|
|
156
|
+
const gitignorePath = path.join(poeticDir, ".gitignore");
|
|
157
|
+
try {
|
|
158
|
+
const entries = new Set(
|
|
159
|
+
fs.readFileSync(gitignorePath, "utf-8").split("\n").map((line) => line.trim()).filter((line) => line.length > 0 && !line.startsWith("#")).map(normalizeGitignoreEntry).filter(Boolean)
|
|
160
|
+
);
|
|
161
|
+
return readPoeticGitignoreTemplateEntries().every(
|
|
162
|
+
(entry) => entries.has(normalizeGitignoreEntry(entry))
|
|
163
|
+
);
|
|
164
|
+
} catch {
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
function ensurePoeticGitignoreRuntimeEntries(poeticDir, result, log) {
|
|
169
|
+
const gitignorePath = path.join(poeticDir, ".gitignore");
|
|
170
|
+
let existing = "";
|
|
171
|
+
try {
|
|
172
|
+
existing = fs.readFileSync(gitignorePath, "utf-8");
|
|
173
|
+
} catch {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
const present = new Set(
|
|
177
|
+
existing.split("\n").map((line) => line.trim()).filter((line) => line.length > 0 && !line.startsWith("#")).map(normalizeGitignoreEntry).filter(Boolean)
|
|
178
|
+
);
|
|
179
|
+
const missing = readPoeticGitignoreTemplateEntries().filter(
|
|
180
|
+
(entry) => !present.has(normalizeGitignoreEntry(entry))
|
|
181
|
+
);
|
|
182
|
+
if (missing.length === 0) return;
|
|
183
|
+
const needsTrailingNewline = existing.length > 0 && !existing.endsWith("\n");
|
|
184
|
+
const prefix = needsTrailingNewline ? "\n" : "";
|
|
185
|
+
fs.appendFileSync(gitignorePath, `${prefix}${missing.join("\n")}
|
|
186
|
+
`);
|
|
187
|
+
result.actions.repaired.push(gitignorePath);
|
|
188
|
+
log(`Updated runtime ignore entries: ${gitignorePath}`);
|
|
189
|
+
}
|
|
190
|
+
function hasTrackedInstanceBuckets(repoRoot) {
|
|
191
|
+
try {
|
|
192
|
+
return getBuckets(repoRoot).some((bucket) => {
|
|
193
|
+
const normalized = bucket.path.replace(/\\/g, "/");
|
|
194
|
+
return bucket.enabled && normalized.startsWith(".poetic/");
|
|
195
|
+
});
|
|
196
|
+
} catch {
|
|
197
|
+
return void 0;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
function reconcilePoeticDirGitExclude(repoRoot, tier, result, log) {
|
|
201
|
+
let gitInfoExcludePath;
|
|
202
|
+
try {
|
|
203
|
+
const insideWorkTree = execSync("git rev-parse --is-inside-work-tree", {
|
|
204
|
+
cwd: repoRoot,
|
|
205
|
+
stdio: ["ignore", "pipe", "ignore"]
|
|
206
|
+
}).toString().trim();
|
|
207
|
+
if (insideWorkTree !== "true") return;
|
|
208
|
+
const resolvedPath = execSync("git rev-parse --git-path info/exclude", {
|
|
209
|
+
cwd: repoRoot,
|
|
210
|
+
stdio: ["ignore", "pipe", "ignore"]
|
|
211
|
+
}).toString().trim();
|
|
212
|
+
if (!resolvedPath) return;
|
|
213
|
+
gitInfoExcludePath = path.isAbsolute(resolvedPath) ? resolvedPath : path.resolve(repoRoot, resolvedPath);
|
|
214
|
+
} catch {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
let existing = "";
|
|
218
|
+
try {
|
|
219
|
+
if (fs.existsSync(gitInfoExcludePath)) {
|
|
220
|
+
existing = fs.readFileSync(gitInfoExcludePath, "utf-8");
|
|
221
|
+
} else {
|
|
222
|
+
fs.mkdirSync(path.dirname(gitInfoExcludePath), { recursive: true });
|
|
223
|
+
}
|
|
224
|
+
} catch {
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
try {
|
|
228
|
+
const trackedInstanceBuckets = tier === "full" ? false : hasTrackedInstanceBuckets(repoRoot);
|
|
229
|
+
if (trackedInstanceBuckets === void 0) {
|
|
230
|
+
result.warnings.push(
|
|
231
|
+
"Could not resolve bucket paths; left git info exclude unchanged to avoid hiding managed .poetic work."
|
|
232
|
+
);
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
if (tier === "full" || trackedInstanceBuckets) {
|
|
236
|
+
const lines = existing.split("\n");
|
|
237
|
+
const filtered = lines.filter((line) => {
|
|
238
|
+
const trimmed = line.trim();
|
|
239
|
+
return trimmed !== ".poetic/" && trimmed !== "/.poetic/";
|
|
240
|
+
});
|
|
241
|
+
if (filtered.length === lines.length) return;
|
|
242
|
+
fs.writeFileSync(gitInfoExcludePath, filtered.join("\n"));
|
|
243
|
+
result.actions.repaired.push(gitInfoExcludePath);
|
|
244
|
+
log(`Removed wholesale .poetic exclude from git info exclude: ${gitInfoExcludePath}`);
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
const present = existing.split("\n").some((line) => line.trim() === ".poetic/" || line.trim() === "/.poetic/");
|
|
248
|
+
if (present) return;
|
|
249
|
+
const needsTrailingNewline = existing.length > 0 && !existing.endsWith("\n");
|
|
250
|
+
const prefix = needsTrailingNewline ? "\n" : "";
|
|
251
|
+
fs.appendFileSync(gitInfoExcludePath, `${prefix}.poetic/
|
|
252
|
+
`);
|
|
253
|
+
result.actions.repaired.push(gitInfoExcludePath);
|
|
254
|
+
log(`Added wholesale .poetic exclude to git info exclude: ${gitInfoExcludePath}`);
|
|
255
|
+
} catch (error) {
|
|
256
|
+
result.warnings.push(
|
|
257
|
+
`Failed to update git info exclude for .poetic/: ${error instanceof Error ? error.message : String(error)}`
|
|
258
|
+
);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
var LOCK_TIMEOUT_MS = 1e4;
|
|
262
|
+
var LOCK_OPTIONS = {
|
|
263
|
+
stale: 3e4,
|
|
264
|
+
// Consider lock stale after 30 seconds
|
|
265
|
+
retries: {
|
|
266
|
+
retries: 50,
|
|
267
|
+
minTimeout: 100,
|
|
268
|
+
maxTimeout: 1e3,
|
|
269
|
+
maxRetryTime: LOCK_TIMEOUT_MS
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
function getProjectInitializationLockPath(repoRoot) {
|
|
273
|
+
return path.join(getProjectDataDir(path.resolve(repoRoot)), "initialization.lock");
|
|
274
|
+
}
|
|
275
|
+
var heldProjectInitializationLocks = new AsyncLocalStorage();
|
|
276
|
+
async function withProjectInitializationLock(repoRoot, fn) {
|
|
277
|
+
const lockPath = getProjectInitializationLockPath(repoRoot);
|
|
278
|
+
const heldLocks = heldProjectInitializationLocks.getStore();
|
|
279
|
+
if (heldLocks?.has(lockPath)) return fn();
|
|
280
|
+
return withInitLock(
|
|
281
|
+
lockPath,
|
|
282
|
+
() => heldProjectInitializationLocks.run(/* @__PURE__ */ new Set([...heldLocks ?? [], lockPath]), fn)
|
|
283
|
+
);
|
|
284
|
+
}
|
|
285
|
+
async function ensurePoeticInitialized(options = {}) {
|
|
286
|
+
const repoRoot = resolveRepoRootForPoeticDir(options.cwd ?? process.cwd());
|
|
287
|
+
return withProjectInitializationLock(
|
|
288
|
+
repoRoot,
|
|
289
|
+
() => ensurePoeticInitializedLocked({ ...options, cwd: repoRoot })
|
|
290
|
+
);
|
|
291
|
+
}
|
|
292
|
+
async function ensurePoeticInitializedLocked(options) {
|
|
293
|
+
const startTime = Date.now();
|
|
294
|
+
const {
|
|
295
|
+
cwd = process.cwd(),
|
|
296
|
+
tier = "runtime",
|
|
297
|
+
verbose = false,
|
|
298
|
+
repair = false,
|
|
299
|
+
allowDegraded = true,
|
|
300
|
+
fullTemplateExcludes = []
|
|
301
|
+
} = options;
|
|
302
|
+
const repoRoot = resolveRepoRootForPoeticDir(cwd);
|
|
303
|
+
const poeticDir = path.join(repoRoot, ".poetic");
|
|
304
|
+
const stateFilePath = path.join(poeticDir, RuntimeRequirements.stateFile);
|
|
305
|
+
const result = {
|
|
306
|
+
status: "ok",
|
|
307
|
+
tier,
|
|
308
|
+
actions: { created: [], repaired: [], skipped: [] },
|
|
309
|
+
warnings: [],
|
|
310
|
+
errors: [],
|
|
311
|
+
nextSteps: [],
|
|
312
|
+
telemetryMode: "database",
|
|
313
|
+
initDurationMs: 0
|
|
314
|
+
};
|
|
315
|
+
const log = (message) => {
|
|
316
|
+
if (verbose) {
|
|
317
|
+
console.log(`[Init] ${message}`);
|
|
318
|
+
}
|
|
319
|
+
};
|
|
320
|
+
if (!repair) {
|
|
321
|
+
const fastState = readInitializationState(stateFilePath);
|
|
322
|
+
const hasDbFiles = fs.existsSync(path.join(poeticDir, "telemetry", "db", "variants.db")) && fs.existsSync(path.join(poeticDir, "telemetry", "db", "validations.db"));
|
|
323
|
+
const databasesOpenable = hasDbFiles && areDatabasesOpenable(poeticDir);
|
|
324
|
+
const hasGitignoreStub = fs.existsSync(path.join(poeticDir, ".gitignore"));
|
|
325
|
+
const hasRuntimeGitignoreEntries = hasPoeticGitignoreRuntimeEntries(poeticDir);
|
|
326
|
+
if (tier === "runtime" && fastState && fastState.schemaVersion === SCHEMA_VERSION && databasesOpenable && hasGitignoreStub && hasRuntimeGitignoreEntries && isTierSufficient(fastState.tier, tier)) {
|
|
327
|
+
reconcilePoeticDirGitExclude(repoRoot, maxTier(fastState.tier, tier), result, log);
|
|
328
|
+
if (result.status === "ok" || allowDegraded && result.status === "degraded") {
|
|
329
|
+
await warnIfDataMigrationPending(poeticDir, result);
|
|
330
|
+
if (result.actions.created.length > 0 || result.actions.repaired.length > 0) {
|
|
331
|
+
try {
|
|
332
|
+
await writeStateMarker(poeticDir, tier, result, log, true, {
|
|
333
|
+
materialChanges: true,
|
|
334
|
+
schemaNeedsHealing: false
|
|
335
|
+
});
|
|
336
|
+
} catch {
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
result.schemaVersion = fastState.schemaVersion;
|
|
340
|
+
result.nextSteps = generateNextSteps(result);
|
|
341
|
+
result.initDurationMs = Date.now() - startTime;
|
|
342
|
+
return finalizeInitializationResult(result, allowDegraded);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
try {
|
|
347
|
+
log("Ensuring base directory exists");
|
|
348
|
+
await ensureBaseDirectory(poeticDir, result, log);
|
|
349
|
+
const lockResult = await (async () => {
|
|
350
|
+
log("Checking required directories");
|
|
351
|
+
await ensureDirectories(poeticDir, tier, result, log, allowDegraded);
|
|
352
|
+
await ensureExternalDataDirectories(repoRoot, poeticDir, result, log);
|
|
353
|
+
log("Initializing databases");
|
|
354
|
+
await initializeDatabases(poeticDir, result, log, allowDegraded);
|
|
355
|
+
log("Checking configuration stubs");
|
|
356
|
+
await ensureConfigStubs(poeticDir, tier, result, log, fullTemplateExcludes);
|
|
357
|
+
const existingState = readInitializationState(stateFilePath);
|
|
358
|
+
const effectiveTier = maxTier(existingState?.tier ?? tier, tier);
|
|
359
|
+
reconcilePoeticDirGitExclude(repoRoot, effectiveTier, result, log);
|
|
360
|
+
log("Writing state marker");
|
|
361
|
+
const schemaNeedsHealing = typeof existingState?.schemaVersion === "number" && typeof result.schemaVersion === "number" && existingState.schemaVersion < result.schemaVersion;
|
|
362
|
+
const materialChangesBeforeState = result.actions.created.length > 0 || result.actions.repaired.length > 0;
|
|
363
|
+
const shouldUpdateState = repair || schemaNeedsHealing || materialChangesBeforeState;
|
|
364
|
+
await writeStateMarker(poeticDir, tier, result, log, shouldUpdateState, {
|
|
365
|
+
materialChanges: materialChangesBeforeState,
|
|
366
|
+
schemaNeedsHealing
|
|
367
|
+
});
|
|
368
|
+
return result;
|
|
369
|
+
})();
|
|
370
|
+
Object.assign(result, lockResult);
|
|
371
|
+
} catch (error) {
|
|
372
|
+
const errorCode = determineErrorCode(error);
|
|
373
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
374
|
+
result.status = "failed";
|
|
375
|
+
result.errors.push({
|
|
376
|
+
code: errorCode,
|
|
377
|
+
message: errorMessage,
|
|
378
|
+
cause: error
|
|
379
|
+
});
|
|
380
|
+
if (errorCode === "DB_LOCKED" /* DB_LOCKED */) {
|
|
381
|
+
result.nextSteps.push(
|
|
382
|
+
"Wait for other Poetic processes to complete",
|
|
383
|
+
"Check for a stale project initialization lock in the Poetic data directory",
|
|
384
|
+
`If issue persists, inspect ${getProjectInitializationLockPath(repoRoot)}`
|
|
385
|
+
);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
result.initDurationMs = Date.now() - startTime;
|
|
389
|
+
if (result.nextSteps.length === 0) {
|
|
390
|
+
result.nextSteps = generateNextSteps(result);
|
|
391
|
+
}
|
|
392
|
+
log(`Initialization complete: ${result.status} (${result.initDurationMs}ms)`);
|
|
393
|
+
return finalizeInitializationResult(result, allowDegraded);
|
|
394
|
+
}
|
|
395
|
+
async function withInitLock(lockPath, fn) {
|
|
396
|
+
const lockDir = path.dirname(lockPath);
|
|
397
|
+
if (!fs.existsSync(lockDir)) {
|
|
398
|
+
fs.mkdirSync(lockDir, { recursive: true });
|
|
399
|
+
}
|
|
400
|
+
if (!fs.existsSync(lockPath)) {
|
|
401
|
+
fs.writeFileSync(lockPath, "");
|
|
402
|
+
}
|
|
403
|
+
let release;
|
|
404
|
+
try {
|
|
405
|
+
try {
|
|
406
|
+
release = await lockfile.lock(lockPath, LOCK_OPTIONS);
|
|
407
|
+
} catch (error) {
|
|
408
|
+
if (error.code === "ELOCKED") {
|
|
409
|
+
throw new Error(
|
|
410
|
+
`Lock acquisition timeout after ${LOCK_TIMEOUT_MS}ms. Another Poetic process may be initializing.`,
|
|
411
|
+
{ cause: error }
|
|
412
|
+
);
|
|
413
|
+
}
|
|
414
|
+
throw error;
|
|
415
|
+
}
|
|
416
|
+
return await fn();
|
|
417
|
+
} finally {
|
|
418
|
+
if (release) {
|
|
419
|
+
try {
|
|
420
|
+
await release();
|
|
421
|
+
} catch (error) {
|
|
422
|
+
console.warn(
|
|
423
|
+
"[Init] Failed to release lock:",
|
|
424
|
+
error instanceof Error ? error.message : String(error)
|
|
425
|
+
);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
async function ensureBaseDirectory(poeticDir, result, log) {
|
|
431
|
+
try {
|
|
432
|
+
if (!fs.existsSync(poeticDir)) {
|
|
433
|
+
fs.mkdirSync(poeticDir, { recursive: true });
|
|
434
|
+
result.actions.created.push(poeticDir);
|
|
435
|
+
log(`Created: ${poeticDir}`);
|
|
436
|
+
} else {
|
|
437
|
+
result.actions.skipped.push(poeticDir);
|
|
438
|
+
}
|
|
439
|
+
} catch (error) {
|
|
440
|
+
const errorCode = determineErrorCode(error);
|
|
441
|
+
result.status = "failed";
|
|
442
|
+
result.errors.push({
|
|
443
|
+
code: errorCode,
|
|
444
|
+
message: `Failed to create base directory: ${error instanceof Error ? error.message : String(error)}`,
|
|
445
|
+
cause: error,
|
|
446
|
+
path: poeticDir
|
|
447
|
+
});
|
|
448
|
+
throw error;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
async function ensureDirectories(poeticDir, tier, result, log, allowDegraded = true) {
|
|
452
|
+
const directories = [...RuntimeRequirements.directories];
|
|
453
|
+
if (tier === "full") {
|
|
454
|
+
directories.push(...FullRequirements.directories);
|
|
455
|
+
}
|
|
456
|
+
for (const dir of directories) {
|
|
457
|
+
const fullPath = path.join(poeticDir, dir);
|
|
458
|
+
try {
|
|
459
|
+
if (!fs.existsSync(fullPath)) {
|
|
460
|
+
fs.mkdirSync(fullPath, { recursive: true });
|
|
461
|
+
result.actions.created.push(fullPath);
|
|
462
|
+
log(`Created: ${fullPath}`);
|
|
463
|
+
} else {
|
|
464
|
+
result.actions.skipped.push(fullPath);
|
|
465
|
+
}
|
|
466
|
+
} catch (error) {
|
|
467
|
+
const errorCode = determineErrorCode(error);
|
|
468
|
+
result.warnings.push(
|
|
469
|
+
`Failed to create directory ${fullPath}: ${error instanceof Error ? error.message : String(error)}`
|
|
470
|
+
);
|
|
471
|
+
if (dir.includes("telemetry") || dir.includes("config") || dir.includes("cache") || dir.includes("state") || dir.includes("worktrees")) {
|
|
472
|
+
result.errors.push({
|
|
473
|
+
code: errorCode,
|
|
474
|
+
message: `Failed to create critical directory: ${fullPath}`,
|
|
475
|
+
cause: error,
|
|
476
|
+
path: fullPath
|
|
477
|
+
});
|
|
478
|
+
if (allowDegraded) {
|
|
479
|
+
result.status = "degraded";
|
|
480
|
+
} else {
|
|
481
|
+
result.status = "failed";
|
|
482
|
+
throw error instanceof Error ? error : new Error(String(error));
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
async function ensureExternalDataDirectories(repoRoot, poeticDir, result, log) {
|
|
489
|
+
const globalTelemetryDir = getGlobalTelemetryDir();
|
|
490
|
+
const projectDataDir = getProjectDataDir(repoRoot);
|
|
491
|
+
const externalDirs = [
|
|
492
|
+
globalTelemetryDir,
|
|
493
|
+
path.join(globalTelemetryDir, "db"),
|
|
494
|
+
path.join(globalTelemetryDir, "logs"),
|
|
495
|
+
projectDataDir,
|
|
496
|
+
path.join(projectDataDir, "state"),
|
|
497
|
+
path.join(projectDataDir, "provider-history"),
|
|
498
|
+
path.join(projectDataDir, "labs"),
|
|
499
|
+
path.join(projectDataDir, "backups"),
|
|
500
|
+
path.join(projectDataDir, "lifecycle"),
|
|
501
|
+
path.join(projectDataDir, "cache")
|
|
502
|
+
];
|
|
503
|
+
for (const dir of externalDirs) {
|
|
504
|
+
try {
|
|
505
|
+
if (!fs.existsSync(dir)) {
|
|
506
|
+
fs.mkdirSync(dir, { recursive: true, mode: 448 });
|
|
507
|
+
result.actions.created.push(dir);
|
|
508
|
+
log(`Created external data dir: ${dir}`);
|
|
509
|
+
}
|
|
510
|
+
} catch (error) {
|
|
511
|
+
result.warnings.push(
|
|
512
|
+
`Failed to create external data directory ${dir}: ${error instanceof Error ? error.message : String(error)}`
|
|
513
|
+
);
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
await warnIfDataMigrationPending(poeticDir, result);
|
|
517
|
+
}
|
|
518
|
+
async function warnIfDataMigrationPending(poeticDir, result) {
|
|
519
|
+
if (isDataMigrationComplete(poeticDir)) {
|
|
520
|
+
return;
|
|
521
|
+
}
|
|
522
|
+
try {
|
|
523
|
+
if (!await hasMigratableRepoLocalData(poeticDir)) {
|
|
524
|
+
return;
|
|
525
|
+
}
|
|
526
|
+
} catch {
|
|
527
|
+
return;
|
|
528
|
+
}
|
|
529
|
+
result.warnings.push(
|
|
530
|
+
"Legacy telemetry data detected in .poetic/. Run `poetic data migrate preview` then `poetic data migrate execute` to externalize non-reproducible data."
|
|
531
|
+
);
|
|
532
|
+
}
|
|
533
|
+
async function initializeDatabases(poeticDir, result, log, allowDegraded) {
|
|
534
|
+
const dbDir = path.join(poeticDir, "telemetry", "db");
|
|
535
|
+
try {
|
|
536
|
+
if (!fs.existsSync(dbDir)) {
|
|
537
|
+
fs.mkdirSync(dbDir, { recursive: true });
|
|
538
|
+
result.actions.created.push(dbDir);
|
|
539
|
+
}
|
|
540
|
+
const progressReporter = (message) => log(message);
|
|
541
|
+
const db = new TelemetryDatabase(dbDir, progressReporter);
|
|
542
|
+
log("Initializing database schema");
|
|
543
|
+
db.init();
|
|
544
|
+
const health = db.getHealth();
|
|
545
|
+
log(`Database health: ${JSON.stringify(health)}`);
|
|
546
|
+
if (!health.available) {
|
|
547
|
+
throw new Error(health.lastInitError || "Database initialization failed");
|
|
548
|
+
}
|
|
549
|
+
const variantsDb = db.getVariantsDb();
|
|
550
|
+
if (variantsDb) {
|
|
551
|
+
const currentVersion = checkSchemaVersion(variantsDb);
|
|
552
|
+
result.schemaVersion = currentVersion;
|
|
553
|
+
if (currentVersion !== SCHEMA_VERSION) {
|
|
554
|
+
result.warnings.push(
|
|
555
|
+
`Schema version mismatch: expected ${SCHEMA_VERSION}, got ${currentVersion}`
|
|
556
|
+
);
|
|
557
|
+
} else {
|
|
558
|
+
log(`Schema version: ${currentVersion}`);
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
db.close();
|
|
562
|
+
result.telemetryMode = "database";
|
|
563
|
+
} catch (error) {
|
|
564
|
+
const errorCode = determineErrorCode(error);
|
|
565
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
566
|
+
log(`Database initialization failed: ${errorMessage}`);
|
|
567
|
+
result.errors.push({
|
|
568
|
+
code: errorCode,
|
|
569
|
+
message: `Database initialization failed: ${errorMessage}`,
|
|
570
|
+
cause: error,
|
|
571
|
+
path: dbDir
|
|
572
|
+
});
|
|
573
|
+
if (allowDegraded) {
|
|
574
|
+
result.status = "degraded";
|
|
575
|
+
result.telemetryMode = "jsonl-only";
|
|
576
|
+
result.warnings.push("Operating in JSONL-only mode (database unavailable)");
|
|
577
|
+
log("Entering degraded mode (JSONL-only)");
|
|
578
|
+
} else {
|
|
579
|
+
result.status = "failed";
|
|
580
|
+
throw error;
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
async function ensureConfigStubs(poeticDir, tier, result, log, fullTemplateExcludes = []) {
|
|
585
|
+
for (const relPath of RuntimeRequirements.configFiles) {
|
|
586
|
+
const destPath = path.join(poeticDir, relPath);
|
|
587
|
+
if (fs.existsSync(destPath)) {
|
|
588
|
+
result.actions.skipped.push(destPath);
|
|
589
|
+
if (relPath === ".gitignore") {
|
|
590
|
+
ensurePoeticGitignoreRuntimeEntries(poeticDir, result, log);
|
|
591
|
+
}
|
|
592
|
+
continue;
|
|
593
|
+
}
|
|
594
|
+
const sourcePath = path.join(TEMPLATE_POETIC_DIR, templateSourceRelPath(relPath));
|
|
595
|
+
if (!fs.existsSync(sourcePath)) {
|
|
596
|
+
const message = `Missing embedded template: ${sourcePath}`;
|
|
597
|
+
result.warnings.push(message);
|
|
598
|
+
continue;
|
|
599
|
+
}
|
|
600
|
+
try {
|
|
601
|
+
fs.mkdirSync(path.dirname(destPath), { recursive: true });
|
|
602
|
+
fs.copyFileSync(sourcePath, destPath);
|
|
603
|
+
if (relPath === ".gitignore") {
|
|
604
|
+
ensurePoeticGitignoreRuntimeEntries(poeticDir, result, log);
|
|
605
|
+
}
|
|
606
|
+
result.actions.created.push(destPath);
|
|
607
|
+
log(`Created: ${destPath}`);
|
|
608
|
+
} catch (error) {
|
|
609
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
610
|
+
const message = `Failed to copy template ${relPath}: ${errorMessage}`;
|
|
611
|
+
result.warnings.push(message);
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
if (tier === "full") {
|
|
615
|
+
await ensureTemplateTree(poeticDir, result, log, [
|
|
616
|
+
.../* @__PURE__ */ new Set([...fullTemplateExcludes, "config/providers.yaml"])
|
|
617
|
+
]);
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
async function ensureTemplateTree(poeticDir, result, log, fullTemplateExcludes = []) {
|
|
621
|
+
if (!fs.existsSync(TEMPLATE_POETIC_DIR)) {
|
|
622
|
+
const message = `Templates directory not found: ${TEMPLATE_POETIC_DIR}`;
|
|
623
|
+
result.status = "failed";
|
|
624
|
+
result.errors.push({
|
|
625
|
+
code: "TEMPLATE_COPY_FAILED" /* TEMPLATE_COPY_FAILED */,
|
|
626
|
+
message,
|
|
627
|
+
path: TEMPLATE_POETIC_DIR
|
|
628
|
+
});
|
|
629
|
+
throw new Error(message);
|
|
630
|
+
}
|
|
631
|
+
const copyMissing = (sourcePath, relPath) => {
|
|
632
|
+
if (isExcludedTemplatePath(relPath, fullTemplateExcludes)) {
|
|
633
|
+
return;
|
|
634
|
+
}
|
|
635
|
+
const destPath = path.join(poeticDir, relPath);
|
|
636
|
+
if (fs.existsSync(destPath)) {
|
|
637
|
+
result.actions.skipped.push(destPath);
|
|
638
|
+
return;
|
|
639
|
+
}
|
|
640
|
+
fs.mkdirSync(path.dirname(destPath), { recursive: true });
|
|
641
|
+
fs.copyFileSync(sourcePath, destPath);
|
|
642
|
+
result.actions.created.push(destPath);
|
|
643
|
+
log(`Created: ${destPath}`);
|
|
644
|
+
};
|
|
645
|
+
const walk = (dir, relBase) => {
|
|
646
|
+
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
647
|
+
const entrySourcePath = path.join(dir, entry.name);
|
|
648
|
+
const entryRelPath = relBase ? path.join(relBase, entry.name) : entry.name;
|
|
649
|
+
if (isExcludedTemplatePath(entryRelPath, fullTemplateExcludes)) {
|
|
650
|
+
continue;
|
|
651
|
+
}
|
|
652
|
+
if (entry.isDirectory()) {
|
|
653
|
+
const destDir = path.join(poeticDir, entryRelPath);
|
|
654
|
+
if (!fs.existsSync(destDir)) {
|
|
655
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
656
|
+
result.actions.created.push(destDir);
|
|
657
|
+
log(`Created: ${destDir}`);
|
|
658
|
+
} else {
|
|
659
|
+
result.actions.skipped.push(destDir);
|
|
660
|
+
}
|
|
661
|
+
walk(entrySourcePath, entryRelPath);
|
|
662
|
+
continue;
|
|
663
|
+
}
|
|
664
|
+
if (entry.isFile()) {
|
|
665
|
+
copyMissing(entrySourcePath, templateDestRelPath(entryRelPath));
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
};
|
|
669
|
+
try {
|
|
670
|
+
walk(TEMPLATE_POETIC_DIR, "");
|
|
671
|
+
} catch (error) {
|
|
672
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
673
|
+
result.status = "failed";
|
|
674
|
+
result.errors.push({
|
|
675
|
+
code: "TEMPLATE_COPY_FAILED" /* TEMPLATE_COPY_FAILED */,
|
|
676
|
+
message: `Failed to copy templates: ${errorMessage}`,
|
|
677
|
+
cause: error,
|
|
678
|
+
path: TEMPLATE_POETIC_DIR
|
|
679
|
+
});
|
|
680
|
+
throw error;
|
|
681
|
+
}
|
|
682
|
+
}
|
|
683
|
+
function isExcludedTemplatePath(relPath, excludedPrefixes) {
|
|
684
|
+
if (excludedPrefixes.length === 0) return false;
|
|
685
|
+
const normalizedRelPath = path.normalize(relPath);
|
|
686
|
+
return excludedPrefixes.some((prefix) => {
|
|
687
|
+
const normalizedPrefix = path.normalize(prefix);
|
|
688
|
+
return normalizedRelPath === normalizedPrefix || normalizedRelPath.startsWith(normalizedPrefix + path.sep);
|
|
689
|
+
});
|
|
690
|
+
}
|
|
691
|
+
async function writeStateMarker(poeticDir, tier, result, log, shouldUpdate, context = { materialChanges: false, schemaNeedsHealing: false }) {
|
|
692
|
+
const stateFile = path.join(poeticDir, RuntimeRequirements.stateFile);
|
|
693
|
+
try {
|
|
694
|
+
const existingState = readInitializationState(stateFile);
|
|
695
|
+
const stateFileExists = fs.existsSync(stateFile);
|
|
696
|
+
if (stateFileExists && !shouldUpdate) {
|
|
697
|
+
result.actions.skipped.push(stateFile);
|
|
698
|
+
return;
|
|
699
|
+
}
|
|
700
|
+
const version = readPackageVersion();
|
|
701
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
702
|
+
const effectiveTier = maxTier(existingState?.tier ?? tier, tier);
|
|
703
|
+
const state = {
|
|
704
|
+
version,
|
|
705
|
+
tier: effectiveTier,
|
|
706
|
+
initializedAt: existingState?.initializedAt ?? now,
|
|
707
|
+
lastCheckedAt: now,
|
|
708
|
+
schemaVersion: result.schemaVersion ?? existingState?.schemaVersion ?? SCHEMA_VERSION,
|
|
709
|
+
repairHistory: result.actions.repaired.length > 0 ? [
|
|
710
|
+
...existingState?.repairHistory ?? [],
|
|
711
|
+
{
|
|
712
|
+
timestamp: now,
|
|
713
|
+
repairs: result.actions.repaired
|
|
714
|
+
}
|
|
715
|
+
] : existingState?.repairHistory
|
|
716
|
+
};
|
|
717
|
+
fs.mkdirSync(path.dirname(stateFile), { recursive: true });
|
|
718
|
+
fs.writeFileSync(stateFile, `${JSON.stringify(state, null, 2)}
|
|
719
|
+
`);
|
|
720
|
+
if (!stateFileExists) {
|
|
721
|
+
result.actions.created.push(stateFile);
|
|
722
|
+
} else if (context.materialChanges || context.schemaNeedsHealing) {
|
|
723
|
+
result.actions.repaired.push(stateFile);
|
|
724
|
+
}
|
|
725
|
+
log(`Updated state marker: ${stateFile}`);
|
|
726
|
+
} catch (error) {
|
|
727
|
+
result.warnings.push(
|
|
728
|
+
`Failed to write state marker: ${error instanceof Error ? error.message : String(error)}`
|
|
729
|
+
);
|
|
730
|
+
log(
|
|
731
|
+
`Warning: Could not write state marker: ${error instanceof Error ? error.message : String(error)}`
|
|
732
|
+
);
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
function readPackageVersion() {
|
|
736
|
+
try {
|
|
737
|
+
const pkgPath = path.join(PACKAGE_ROOT, "package.json");
|
|
738
|
+
if (!fs.existsSync(pkgPath)) return "0.0.0";
|
|
739
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
|
|
740
|
+
return typeof pkg.version === "string" && pkg.version.trim() ? pkg.version.trim() : "0.0.0";
|
|
741
|
+
} catch {
|
|
742
|
+
return "0.0.0";
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
function readInitializationState(stateFilePath) {
|
|
746
|
+
try {
|
|
747
|
+
if (!fs.existsSync(stateFilePath)) return null;
|
|
748
|
+
const raw = fs.readFileSync(stateFilePath, "utf-8");
|
|
749
|
+
return JSON.parse(raw);
|
|
750
|
+
} catch {
|
|
751
|
+
return null;
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
function tierRank(tier) {
|
|
755
|
+
return tier === "full" ? 2 : 1;
|
|
756
|
+
}
|
|
757
|
+
function isTierSufficient(actual, required) {
|
|
758
|
+
return tierRank(actual) >= tierRank(required);
|
|
759
|
+
}
|
|
760
|
+
function maxTier(a, b) {
|
|
761
|
+
return tierRank(a) >= tierRank(b) ? a : b;
|
|
762
|
+
}
|
|
763
|
+
function areDatabasesOpenable(poeticDir) {
|
|
764
|
+
for (const rel of RuntimeRequirements.databases) {
|
|
765
|
+
const dbPath = path.join(poeticDir, rel);
|
|
766
|
+
if (!fs.existsSync(dbPath)) return false;
|
|
767
|
+
let db;
|
|
768
|
+
try {
|
|
769
|
+
db = new Database(dbPath, { readonly: true, fileMustExist: true });
|
|
770
|
+
db.prepare("SELECT 1").get();
|
|
771
|
+
} catch {
|
|
772
|
+
return false;
|
|
773
|
+
} finally {
|
|
774
|
+
try {
|
|
775
|
+
db?.close();
|
|
776
|
+
} catch {
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
return true;
|
|
781
|
+
}
|
|
782
|
+
function finalizeInitializationResult(result, allowDegraded) {
|
|
783
|
+
if (!allowDegraded && result.status === "degraded") {
|
|
784
|
+
result.status = "failed";
|
|
785
|
+
if (result.errors.length === 0) {
|
|
786
|
+
result.errors.push({
|
|
787
|
+
code: "UNKNOWN_ERROR" /* UNKNOWN_ERROR */,
|
|
788
|
+
message: "Initialization completed in degraded mode but allowDegraded=false"
|
|
789
|
+
});
|
|
790
|
+
}
|
|
791
|
+
if (result.nextSteps.length === 0 || result.nextSteps[0]?.includes("degraded")) {
|
|
792
|
+
result.nextSteps = generateNextSteps(result);
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
return result;
|
|
796
|
+
}
|
|
797
|
+
function determineErrorCode(error) {
|
|
798
|
+
const message = error instanceof Error ? error.message.toLowerCase() : String(error);
|
|
799
|
+
if (message.includes("locked") || message.includes("busy")) {
|
|
800
|
+
return "DB_LOCKED" /* DB_LOCKED */;
|
|
801
|
+
}
|
|
802
|
+
if (message.includes("corrupt") || message.includes("malformed") || message.includes("integrity")) {
|
|
803
|
+
return "DB_CORRUPT" /* DB_CORRUPT */;
|
|
804
|
+
}
|
|
805
|
+
if (message.includes("permission") || message.includes("eacces") || message.includes("eperm")) {
|
|
806
|
+
return "PERMISSION_DENIED" /* PERMISSION_DENIED */;
|
|
807
|
+
}
|
|
808
|
+
if (message.includes("migration")) {
|
|
809
|
+
return "MIGRATION_FAILED" /* MIGRATION_FAILED */;
|
|
810
|
+
}
|
|
811
|
+
if (message.includes("enospc") || message.includes("disk space")) {
|
|
812
|
+
return "UNKNOWN_ERROR" /* UNKNOWN_ERROR */;
|
|
813
|
+
}
|
|
814
|
+
if (message.includes("timeout") || message.includes("lock acquisition")) {
|
|
815
|
+
return "DB_LOCKED" /* DB_LOCKED */;
|
|
816
|
+
}
|
|
817
|
+
return "UNKNOWN_ERROR" /* UNKNOWN_ERROR */;
|
|
818
|
+
}
|
|
819
|
+
function generateNextSteps(result) {
|
|
820
|
+
const steps = [];
|
|
821
|
+
if (result.status === "ok") {
|
|
822
|
+
steps.push("Poetic is ready to use");
|
|
823
|
+
return steps;
|
|
824
|
+
}
|
|
825
|
+
if (result.status === "degraded") {
|
|
826
|
+
steps.push(
|
|
827
|
+
"Poetic is running in degraded mode (JSONL-only telemetry)",
|
|
828
|
+
"Check database errors above for details"
|
|
829
|
+
);
|
|
830
|
+
const hasDbError = result.errors.some(
|
|
831
|
+
(e) => e.code === "DB_CORRUPT" /* DB_CORRUPT */ || e.code === "DB_LOCKED" /* DB_LOCKED */
|
|
832
|
+
);
|
|
833
|
+
if (hasDbError) {
|
|
834
|
+
steps.push(
|
|
835
|
+
"Try removing .poetic/telemetry/db/ and restarting",
|
|
836
|
+
"If issue persists, check file permissions and disk space"
|
|
837
|
+
);
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
if (result.status === "failed") {
|
|
841
|
+
steps.push("Initialization failed - Poetic cannot run");
|
|
842
|
+
const hasPermissionError = result.errors.some(
|
|
843
|
+
(e) => e.code === "PERMISSION_DENIED" /* PERMISSION_DENIED */
|
|
844
|
+
);
|
|
845
|
+
if (hasPermissionError) {
|
|
846
|
+
steps.push(
|
|
847
|
+
"Check file permissions for .poetic directory",
|
|
848
|
+
"Ensure you have write access to the project directory"
|
|
849
|
+
);
|
|
850
|
+
}
|
|
851
|
+
const hasCorruptError = result.errors.some((e) => e.code === "DB_CORRUPT" /* DB_CORRUPT */);
|
|
852
|
+
if (hasCorruptError) {
|
|
853
|
+
steps.push(
|
|
854
|
+
"Database appears corrupted",
|
|
855
|
+
"Remove .poetic/telemetry/db/ and restart",
|
|
856
|
+
"If you need to preserve data, backup .poetic/ first"
|
|
857
|
+
);
|
|
858
|
+
}
|
|
859
|
+
const hasMigrationError = result.errors.some((e) => e.code === "MIGRATION_FAILED" /* MIGRATION_FAILED */);
|
|
860
|
+
if (hasMigrationError) {
|
|
861
|
+
steps.push(
|
|
862
|
+
"Schema migration failed",
|
|
863
|
+
"Check that Node.js version is 24.x",
|
|
864
|
+
"Remove .poetic/telemetry/db/ to reset schema"
|
|
865
|
+
);
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
return steps;
|
|
869
|
+
}
|
|
870
|
+
|
|
871
|
+
export {
|
|
872
|
+
RuntimeRequirements,
|
|
873
|
+
resolveRepoRootForPoeticDir,
|
|
874
|
+
withProjectInitializationLock,
|
|
875
|
+
ensurePoeticInitialized,
|
|
876
|
+
withInitLock
|
|
877
|
+
};
|
|
878
|
+
//# sourceMappingURL=chunk-IRFBN336.js.map
|