@poetic-ai/poetic 1.42.1-bootstrap.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-MXTSOSST.js +1597 -0
- package/dist/PromptStore-U6ZD3ZMQ.js +18 -0
- package/dist/actions-M3AESHFF.js +322 -0
- package/dist/agent-ingest-HO77TH26.js +53 -0
- package/dist/aggregator-DNCBINFO.js +12 -0
- package/dist/ai-judge-LDWHURKK.js +156 -0
- package/dist/allowlist-grounding-RO6HKUFI.js +16 -0
- package/dist/allowlist-utils-23V7TJ3G.js +28 -0
- package/dist/anchored-turn-service-GFYU6GCQ.js +489 -0
- package/dist/api-transport-FS3CQRMN.js +1087 -0
- package/dist/apply-completion-mode-JBT2CTQO.js +89 -0
- package/dist/artifact-migrator-23L45ISD.js +267 -0
- package/dist/ask-UYVZY7JH.js +135 -0
- package/dist/auth-CSQP5RHJ.js +67 -0
- package/dist/auth-E6XUNZ5M.js +68 -0
- package/dist/auth-KQLJPZ2E.js +134 -0
- package/dist/auth-OC4E6633.js +71 -0
- package/dist/auth-R3NQ2ZF5.js +78 -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-HA3T23SF.js +80 -0
- package/dist/autoloop-cleanup-JOGKTLWA.js +109 -0
- package/dist/autoloop-evidence-gates-ACB5YW5G.js +36 -0
- package/dist/autoloop-gate-policy-XZA5EQFN.js +175 -0
- package/dist/autoloop-helpers-EFJLBQUP.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-OPR74YEX.js +85 -0
- package/dist/autoloop-termination-summary-RN75F422.js +58 -0
- package/dist/autoloop-trajectory-K5I45UBR.js +282 -0
- package/dist/autoloop-wall-clock-T7ZVIQOC.js +12 -0
- package/dist/autonomous-loop-controller-4QJMOIIN.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-WXZHUT42.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-YFASRB5Z.js +71 -0
- package/dist/change-summary-WY7J5TOX.js +33 -0
- package/dist/chunk-25QL3M3L.js +899 -0
- package/dist/chunk-2ABC6SEC.js +2626 -0
- package/dist/chunk-2AICM4P3.js +1763 -0
- package/dist/chunk-2AQUWJPW.js +225 -0
- package/dist/chunk-2DY5KNVM.js +276 -0
- package/dist/chunk-2QJ3H3L7.js +42 -0
- package/dist/chunk-2UH6VQRZ.js +328 -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-2YXZCZTX.js +1160 -0
- package/dist/chunk-32VLDFRT.js +797 -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-3733QTI7.js +6818 -0
- package/dist/chunk-3A5PDH5L.js +12513 -0
- package/dist/chunk-3AOKYKA7.js +22 -0
- package/dist/chunk-3BCUNHKF.js +475 -0
- package/dist/chunk-3C26DPFK.js +566 -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-3JWNRJSB.js +736 -0
- package/dist/chunk-3LUMR3D3.js +156 -0
- package/dist/chunk-3M57DADF.js +44 -0
- package/dist/chunk-3S62LLWJ.js +543 -0
- package/dist/chunk-3VABAKT2.js +1784 -0
- package/dist/chunk-44N5WZZH.js +45 -0
- package/dist/chunk-45FPSA3B.js +125 -0
- package/dist/chunk-4BIPZBT7.js +791 -0
- package/dist/chunk-4BJ3O4RQ.js +929 -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-4HN6DF7V.js +1027 -0
- package/dist/chunk-4HXKHDNH.js +1064 -0
- package/dist/chunk-4KKI477Q.js +44 -0
- package/dist/chunk-4NA7FSTV.js +595 -0
- package/dist/chunk-4NXPXE62.js +84 -0
- package/dist/chunk-4SALLK63.js +9831 -0
- package/dist/chunk-4SHKPCGK.js +110 -0
- package/dist/chunk-4VJITV4P.js +445 -0
- package/dist/chunk-4W2NRXQL.js +1205 -0
- package/dist/chunk-4XICK3HN.js +784 -0
- package/dist/chunk-55EJVV3C.js +385 -0
- package/dist/chunk-5DLKYTQX.js +4003 -0
- package/dist/chunk-5EERLVZB.js +139 -0
- package/dist/chunk-5HDP7XZG.js +91 -0
- package/dist/chunk-5LAMRH4X.js +969 -0
- package/dist/chunk-5REDMNLZ.js +310 -0
- package/dist/chunk-5UCJARII.js +1984 -0
- package/dist/chunk-5WCQRDRB.js +588 -0
- package/dist/chunk-5WRLK5KW.js +700 -0
- package/dist/chunk-66AGFTBQ.js +131 -0
- package/dist/chunk-66CIO2SV.js +48 -0
- package/dist/chunk-6BM72ZMG.js +31 -0
- package/dist/chunk-6BTFXYRO.js +276 -0
- package/dist/chunk-6EDAJH2I.js +68 -0
- package/dist/chunk-6EQKFDBH.js +457 -0
- package/dist/chunk-6KMJKHIQ.js +2193 -0
- package/dist/chunk-6MFRHTRI.js +115 -0
- package/dist/chunk-6QMUKUHH.js +632 -0
- package/dist/chunk-6TZJRKNW.js +321 -0
- package/dist/chunk-6V7HGQFZ.js +20 -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-73NCTWKL.js +188 -0
- package/dist/chunk-77I6G4CO.js +1 -0
- package/dist/chunk-7D7QT3BE.js +688 -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-7IL4A2PP.js +948 -0
- package/dist/chunk-7NPSXSHO.js +975 -0
- package/dist/chunk-7PS6INZP.js +302 -0
- package/dist/chunk-7QCZSLBH.js +1 -0
- package/dist/chunk-7R2WLDOS.js +62 -0
- package/dist/chunk-7XV3QXLT.js +878 -0
- package/dist/chunk-A2WKSVX7.js +43 -0
- package/dist/chunk-A3YGID55.js +133 -0
- package/dist/chunk-A5MRWHMI.js +1604 -0
- package/dist/chunk-A722DEVA.js +14 -0
- package/dist/chunk-AG2Z2SUZ.js +554 -0
- package/dist/chunk-AHWAZ2MU.js +137 -0
- package/dist/chunk-AIAQ3HS3.js +119 -0
- package/dist/chunk-ALAB3PBR.js +2206 -0
- package/dist/chunk-APPNGGN7.js +365 -0
- package/dist/chunk-APV6MK5E.js +137 -0
- package/dist/chunk-AQNPGRWS.js +395 -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-AX6GWE7V.js +47 -0
- package/dist/chunk-AZQILSNQ.js +1376 -0
- package/dist/chunk-B76KHLX6.js +13 -0
- package/dist/chunk-BAV2HJXS.js +194 -0
- package/dist/chunk-BBHRN366.js +89 -0
- package/dist/chunk-BCZAENOH.js +448 -0
- package/dist/chunk-BIGSACCY.js +19527 -0
- package/dist/chunk-BPYMCIVD.js +9243 -0
- package/dist/chunk-BSE4R6XD.js +322 -0
- package/dist/chunk-BVPWRDCO.js +2321 -0
- package/dist/chunk-BXI4NXL3.js +507 -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-CHQV73H5.js +408 -0
- package/dist/chunk-CJC6GZ46.js +457 -0
- package/dist/chunk-CJHRFSNY.js +924 -0
- package/dist/chunk-CKP2Q3TP.js +1905 -0
- package/dist/chunk-CLKSETWE.js +10 -0
- package/dist/chunk-CQM3A35X.js +844 -0
- package/dist/chunk-CSLAS5GW.js +4007 -0
- package/dist/chunk-CTLUBNCW.js +622 -0
- package/dist/chunk-CVMVZWG4.js +3544 -0
- package/dist/chunk-CYB6QDCT.js +263 -0
- package/dist/chunk-D5EP5D2W.js +26 -0
- package/dist/chunk-DC4ZYMXJ.js +115 -0
- package/dist/chunk-DCAVAABI.js +348 -0
- package/dist/chunk-DCYF7EKG.js +26 -0
- package/dist/chunk-DF5SLDE4.js +966 -0
- package/dist/chunk-DN7UMLF7.js +5678 -0
- package/dist/chunk-DSFM56OA.js +1203 -0
- package/dist/chunk-DTY4APYV.js +218 -0
- package/dist/chunk-E3NTPHEO.js +194 -0
- package/dist/chunk-E74LUIID.js +302 -0
- package/dist/chunk-EJ42BNGY.js +2904 -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-EQGIDAUF.js +62 -0
- package/dist/chunk-EX3OM35G.js +20414 -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-FCNAS3W2.js +1033 -0
- package/dist/chunk-FD4ERYEG.js +22 -0
- package/dist/chunk-FDVZLG6Z.js +3104 -0
- package/dist/chunk-FEPIFY7D.js +511 -0
- package/dist/chunk-FEQ4HXL7.js +412 -0
- package/dist/chunk-FFH5HHJU.js +5351 -0
- package/dist/chunk-FH7WOJAE.js +79 -0
- package/dist/chunk-FKAUPHMR.js +96 -0
- package/dist/chunk-FRG57FPM.js +240 -0
- package/dist/chunk-FUVP64ER.js +31 -0
- package/dist/chunk-G2PTLLEL.js +284 -0
- package/dist/chunk-G35UYQ6Z.js +69 -0
- package/dist/chunk-G36W2T2S.js +1143 -0
- package/dist/chunk-G4THLFV3.js +148 -0
- package/dist/chunk-GAFJEYLK.js +29 -0
- package/dist/chunk-GCCAPO3S.js +118 -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-GJTWJNLV.js +1374 -0
- package/dist/chunk-GKN3HMN4.js +2809 -0
- package/dist/chunk-GNH3QGTL.js +1342 -0
- package/dist/chunk-GOAQ2I7Y.js +7000 -0
- package/dist/chunk-GSGD5E4C.js +30 -0
- package/dist/chunk-GXWAJQOJ.js +5011 -0
- package/dist/chunk-H2AYQIHW.js +224 -0
- package/dist/chunk-H6G7QRMQ.js +35 -0
- package/dist/chunk-H7JAGHZT.js +59 -0
- package/dist/chunk-HAC6EHZZ.js +79 -0
- package/dist/chunk-HE2KH6EQ.js +161 -0
- package/dist/chunk-HIHENQDX.js +66 -0
- package/dist/chunk-HIO33P3G.js +19 -0
- package/dist/chunk-HK4AQZSR.js +438 -0
- package/dist/chunk-HMVQIPH3.js +547 -0
- package/dist/chunk-HOYBYAOA.js +257 -0
- package/dist/chunk-HQLGXODD.js +123 -0
- package/dist/chunk-HQXYYUNY.js +1231 -0
- package/dist/chunk-HY3ESWCA.js +708 -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-I6BL3PDH.js +1024 -0
- package/dist/chunk-IATQ7NBI.js +679 -0
- package/dist/chunk-IC7I6YIJ.js +301 -0
- package/dist/chunk-IDCSOZVN.js +78 -0
- package/dist/chunk-IEXU4RR6.js +5742 -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-IP7BYVUV.js +338 -0
- package/dist/chunk-IRJ2I6KH.js +166 -0
- package/dist/chunk-IUXNGKA6.js +152 -0
- package/dist/chunk-IZYIQQ7X.js +53 -0
- package/dist/chunk-IZZK3H6I.js +2175 -0
- package/dist/chunk-J3J4P7RW.js +353 -0
- package/dist/chunk-J62KPGII.js +464 -0
- package/dist/chunk-J6P3FWWW.js +130 -0
- package/dist/chunk-JD6SIZED.js +712 -0
- package/dist/chunk-JEV6UI7H.js +537 -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-JQD5VYKR.js +483 -0
- package/dist/chunk-JSOWEFEQ.js +351 -0
- package/dist/chunk-JSWMRQYG.js +28 -0
- package/dist/chunk-K4XK7SGB.js +6783 -0
- package/dist/chunk-K54Y7MLK.js +160 -0
- package/dist/chunk-KAT4RXUT.js +521 -0
- package/dist/chunk-KDMKKIRK.js +103 -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-KQEBSK3T.js +274 -0
- package/dist/chunk-KT6VHSPF.js +84 -0
- package/dist/chunk-KTMW65UX.js +14 -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-LGHII5ET.js +23 -0
- package/dist/chunk-LH34OGSB.js +265 -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-LUVKFFWR.js +315 -0
- package/dist/chunk-LWCBNGH6.js +35 -0
- package/dist/chunk-LWTN3WRV.js +260 -0
- package/dist/chunk-LZBBXYWF.js +1004 -0
- package/dist/chunk-M34PS4NE.js +2213 -0
- package/dist/chunk-M3HQYKQX.js +308 -0
- package/dist/chunk-MCPQNJMK.js +482 -0
- package/dist/chunk-MF5HP6XV.js +221 -0
- package/dist/chunk-MFADRRTR.js +112 -0
- package/dist/chunk-MN6PL4AN.js +120 -0
- package/dist/chunk-MQ4WA34C.js +206 -0
- package/dist/chunk-MTVZITQ2.js +185 -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-N5DX4JAK.js +12 -0
- package/dist/chunk-NEDCMN7E.js +415 -0
- package/dist/chunk-NEQUQHOX.js +223 -0
- package/dist/chunk-NGK6PEOG.js +25 -0
- package/dist/chunk-NM6PMYY4.js +768 -0
- package/dist/chunk-NOZGR2QO.js +2373 -0
- package/dist/chunk-NP2V3L7K.js +226 -0
- package/dist/chunk-NPZJMUZ4.js +194 -0
- package/dist/chunk-NRLY536M.js +260 -0
- package/dist/chunk-NS33V3IM.js +51 -0
- package/dist/chunk-NWOYOA6H.js +378 -0
- package/dist/chunk-NWRUSEXG.js +322 -0
- package/dist/chunk-O6V4PNLO.js +63 -0
- package/dist/chunk-OGMSYL6J.js +227 -0
- package/dist/chunk-OIS7J26S.js +319 -0
- package/dist/chunk-OKBTRSZI.js +205 -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-OSDYVKHW.js +2440 -0
- package/dist/chunk-OUM5S64R.js +3429 -0
- package/dist/chunk-OWB7JXUS.js +751 -0
- package/dist/chunk-OYZYO7TV.js +47 -0
- package/dist/chunk-P47VN5F4.js +282 -0
- package/dist/chunk-P6VQROCO.js +594 -0
- package/dist/chunk-P7CQGPLS.js +30 -0
- package/dist/chunk-PA6BCSOX.js +2872 -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-PTH5E5XO.js +195 -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-QGJDMEOV.js +34 -0
- package/dist/chunk-QJYIHVXT.js +100 -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-QU6JQJMH.js +3063 -0
- package/dist/chunk-QVFV5IP2.js +232 -0
- package/dist/chunk-QVZMFDYG.js +29 -0
- package/dist/chunk-R2ZYWNW3.js +1581 -0
- package/dist/chunk-R4UWBC35.js +200 -0
- package/dist/chunk-R6W23LKN.js +254 -0
- package/dist/chunk-RAK5HOIJ.js +459 -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-RIKFAWZF.js +71 -0
- package/dist/chunk-RJAAKDRX.js +17 -0
- package/dist/chunk-RSXSD4MH.js +1016 -0
- package/dist/chunk-RW7RVSDV.js +79 -0
- package/dist/chunk-RWREC3KJ.js +517 -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-S77XPALC.js +239 -0
- package/dist/chunk-SCW4ZF6R.js +150 -0
- package/dist/chunk-SKHGYQ7W.js +405 -0
- package/dist/chunk-SNLBO4BF.js +247 -0
- package/dist/chunk-SP3LFU6B.js +60 -0
- package/dist/chunk-SQZRPY23.js +5181 -0
- package/dist/chunk-SSB5UQHA.js +4128 -0
- package/dist/chunk-STJOHHSF.js +605 -0
- package/dist/chunk-STV6LYYE.js +45 -0
- package/dist/chunk-SUN4OFTW.js +740 -0
- package/dist/chunk-SURZ2WFE.js +326 -0
- package/dist/chunk-SUZ7UYZH.js +1972 -0
- package/dist/chunk-SZ7DL357.js +1047 -0
- package/dist/chunk-T2SZELJL.js +624 -0
- package/dist/chunk-T6VPI2XP.js +10338 -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-TIBZPAD2.js +9924 -0
- package/dist/chunk-TK644IOG.js +1813 -0
- package/dist/chunk-TRSVUPCX.js +25 -0
- package/dist/chunk-TSPQONRT.js +4533 -0
- package/dist/chunk-TSXGRLPR.js +107 -0
- package/dist/chunk-TWYLVAS2.js +152 -0
- package/dist/chunk-U2S3YEX3.js +224 -0
- package/dist/chunk-U32HWI76.js +437 -0
- package/dist/chunk-U45RTRGY.js +818 -0
- package/dist/chunk-U62VCQGR.js +49 -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-UKMAFG7A.js +189 -0
- package/dist/chunk-UUH2RVKS.js +585 -0
- package/dist/chunk-UVBBFDFQ.js +270 -0
- package/dist/chunk-UXZF3B7T.js +75 -0
- package/dist/chunk-V6YLL5WA.js +3746 -0
- package/dist/chunk-V72RMBM4.js +48 -0
- package/dist/chunk-VBNCKCCI.js +16 -0
- package/dist/chunk-VCAUV5XQ.js +3679 -0
- package/dist/chunk-VDSH7O4Y.js +152 -0
- package/dist/chunk-VNSYKC25.js +24 -0
- package/dist/chunk-VTLNJQ44.js +133 -0
- package/dist/chunk-VV6HOXRC.js +302 -0
- package/dist/chunk-VVGEPBPS.js +218 -0
- package/dist/chunk-VXF4Q3FW.js +20 -0
- package/dist/chunk-W3ZGW3C5.js +331 -0
- package/dist/chunk-W4OMESPG.js +271 -0
- package/dist/chunk-WDUORIHF.js +877 -0
- package/dist/chunk-WDVTY4U6.js +148 -0
- package/dist/chunk-WGXYDLMX.js +4386 -0
- package/dist/chunk-WMPU2UOV.js +82 -0
- package/dist/chunk-WOEVVPDP.js +1125 -0
- package/dist/chunk-WTLMSPBQ.js +256 -0
- package/dist/chunk-X43NMU4Z.js +1124 -0
- package/dist/chunk-X5NTI5U5.js +368 -0
- package/dist/chunk-X6UIEADS.js +949 -0
- package/dist/chunk-XAONGNST.js +57 -0
- package/dist/chunk-XB5YLCLB.js +13 -0
- package/dist/chunk-XGYF2QMZ.js +351 -0
- package/dist/chunk-XHEKQENB.js +255 -0
- package/dist/chunk-XPHKYHO4.js +878 -0
- package/dist/chunk-XQD2B6BB.js +507 -0
- package/dist/chunk-XT2ZQVTC.js +558 -0
- package/dist/chunk-XUSRFFA7.js +1859 -0
- package/dist/chunk-XUXVDPSZ.js +50 -0
- package/dist/chunk-XV7NZL4B.js +57 -0
- package/dist/chunk-XXCGJGSQ.js +121 -0
- package/dist/chunk-XYGDZCB5.js +659 -0
- package/dist/chunk-XZAMZUX5.js +992 -0
- package/dist/chunk-XZE4XARH.js +563 -0
- package/dist/chunk-Y34DUC4A.js +1356 -0
- package/dist/chunk-Y3J4JMTU.js +61 -0
- package/dist/chunk-Y4RC2YFX.js +1270 -0
- package/dist/chunk-Y55LZN5U.js +52 -0
- package/dist/chunk-Y5677NDO.js +183 -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-YQAAKTVH.js +712 -0
- package/dist/chunk-YVORHQ2S.js +579 -0
- package/dist/chunk-YWNAHW24.js +1552 -0
- package/dist/chunk-Z476RATD.js +1689 -0
- package/dist/chunk-ZDTGECTN.js +235 -0
- package/dist/chunk-ZDTMICNY.js +316 -0
- package/dist/chunk-ZIPWI2LY.js +151 -0
- package/dist/chunk-ZIVYXF7A.js +2344 -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-HUOTBRM3.js +40 -0
- package/dist/cli-validation-WLXWLUJL.js +111 -0
- package/dist/commit-utils-3QV2P6RA.js +202 -0
- package/dist/compete-config-resolver-SNH3TT2Q.js +76 -0
- package/dist/compete-request-XWNPOARL.js +364 -0
- package/dist/compete-results-PAP67LDR.js +208 -0
- package/dist/competition-outcome-tracker-GOZXNAQU.js +38 -0
- package/dist/config-HWHUNA72.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-L3VRNTSG.js +67 -0
- package/dist/config-validator-SIIQEOFQ.js +72 -0
- package/dist/cost-7CX37DU3.js +53 -0
- package/dist/coverage-orchestrator-MNKHD6YC.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-CGBCD7IQ.js +186 -0
- package/dist/domain-analyzer-DL6BDR2N.js +29 -0
- package/dist/ensure-initialized-4BY73HLE.js +52 -0
- package/dist/entry.js +940 -0
- package/dist/environment-IGVH5X53.js +81 -0
- package/dist/error-parser-core-PPZ36A4S.js +50 -0
- package/dist/escalation-ladder-NWY5BJ57.js +130 -0
- package/dist/evaluation-context-KMWDSDYD.js +35 -0
- package/dist/evidence-plan-resolver-YIVH76PU.js +85 -0
- package/dist/execution-data-writer-OHAQ7G5H.js +53 -0
- package/dist/execution-policy-applier-ZHD3DCF3.js +31 -0
- package/dist/execution-preflight-Z4Y64V3I.js +209 -0
- package/dist/execution-roles-KBH2MC3M.js +66 -0
- package/dist/exit-code-error-Z4SW2DVK.js +14 -0
- package/dist/external-temp-cleanup-N2RZH4QP.js +311 -0
- package/dist/factory-IYBMCZG7.js +149 -0
- package/dist/file-utils-XIVR2ZMA.js +47 -0
- package/dist/flywheel-autoloop-executor-R3KD2G4D.js +249 -0
- package/dist/flywheel-competition-executor-XCFGVJSK.js +259 -0
- package/dist/flywheel-executor-LTSIZN2L.js +369 -0
- package/dist/flywheel-git-isolation-CZ5YVVZY.js +48 -0
- package/dist/flywheel-manifest-5UC4VBMA.js +108 -0
- package/dist/flywheel-model-defaults-7CVKP53V.js +27 -0
- package/dist/flywheel-preflight-6E33DJDK.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-AZ46EPRP.js +73 -0
- package/dist/git-worktree-IY6V6DUO.js +18 -0
- package/dist/github-pr-manager-4XUO2YTM.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 +108644 -0
- package/dist/instructions-CM6THDV7.js +64 -0
- package/dist/invoke-provider-auth-V5TC5UDS.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-VA6VXNOV.js +23 -0
- package/dist/linux-host-class-UY4KVLFD.js +29 -0
- package/dist/llm-judge-executor-34YPIRJ7.js +133 -0
- package/dist/local-executor-LJJSCWZX.js +223 -0
- package/dist/logger-6PRYM56M.js +72 -0
- package/dist/loop-spec-XTLQAVZ7.js +191 -0
- package/dist/manager-2HJG5CLT.js +25 -0
- package/dist/matrix-prompt-builder-LHDTJ4TY.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-MCI3F4PX.js +72 -0
- package/dist/next-HQKDXIIR.js +90 -0
- package/dist/next-JC3V2UCS.js +69 -0
- package/dist/optimization-config-resolver-QPSFLCJU.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-DZK24LSZ.js +270 -0
- package/dist/plan-backlog-show-fast-63GBBH6Q.js +406 -0
- package/dist/plan-sprint-list-fast-TJ6ZUF5E.js +162 -0
- package/dist/plan-sprint-status-fast-YWE5X3NG.js +208 -0
- package/dist/plan-task-status-fast-K22BTTBW.js +349 -0
- package/dist/plan-to-flywheel-VFGCPINA.js +456 -0
- package/dist/planning-backlog-Y6TIJYWU.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-2XP3FWH2.js +149 -0
- package/dist/prompts-EPAAAMMF.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-KWTYA5QV.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-33SHK43X.js +70 -0
- package/dist/quickstart-E32SODTA.js +62 -0
- package/dist/readiness-REWW7OSV.js +96 -0
- package/dist/registry-N6L36RE2.js +153 -0
- package/dist/repair-helpers-TTV5FEF4.js +117 -0
- package/dist/repo-root-2IGD4H7X.js +22 -0
- package/dist/resolution-engine-LXQYDSKS.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-VGQU35QM.js +160 -0
- package/dist/run-poetic-tui-ZZXFDOQ4.js +13517 -0
- package/dist/run-simulation.js +376 -0
- package/dist/runner-2YPKOJ6A.js +1092 -0
- package/dist/runner-HEJJ65AJ.js +1571 -0
- package/dist/safety-OCC4KJJR.js +64 -0
- package/dist/safety-stanza-BSVE6OJU.js +60 -0
- package/dist/sandbox-3AG2WJLM.js +94 -0
- package/dist/sandbox-5JOFBS75.js +81 -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-QGXLN3SO.js +338 -0
- package/dist/sprint-bridge-FNKQCJGL.js +68 -0
- package/dist/sprint-execution-service-4ELKNJDS.js +311 -0
- package/dist/sprint-manager-7TNCXCIX.js +91 -0
- package/dist/sqlite-wrapper-UDWCTNLJ.js +17 -0
- package/dist/stale-cleanup-orchestrator-H5XKGZP2.js +62 -0
- package/dist/storage-access-F6ALDN4S.js +22 -0
- package/dist/synthesis-TGQUVAW3.js +185 -0
- package/dist/task-classifier-DZIRBSS2.js +494 -0
- package/dist/task-list-fast-PJ2EXVZE.js +147 -0
- package/dist/task-manager-5742GMJK.js +93 -0
- package/dist/task-splitter-6MBXSWF6.js +79 -0
- package/dist/task-type-detector-OLVOMXZO.js +21 -0
- package/dist/task-type-resolver-4HG6TXFV.js +42 -0
- package/dist/telemetry-JX7EMNOZ.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-2MLJ4J6B.js +125 -0
- package/dist/token-estimator-PDU345YE.js +37 -0
- package/dist/transports-3UEO6C5Y.js +255 -0
- package/dist/unified-cost-tracker-F3W5NMPG.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-XCOYVCM4.js +33 -0
- package/dist/variant-state-cleanup-QIEKRULB.js +280 -0
- package/dist/variant-success-PJXWE3ZV.js +12 -0
- package/dist/variant-worker-HPTUA37Z.js +4196 -0
- package/dist/variant-worker.js +24 -0
- package/dist/variants-2HDYZOCG.js +233 -0
- package/dist/verification-toolchains-VVKT3GBF.js +28 -0
- package/dist/verify-commands-5F6CJV4B.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-AGWHD4D2.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 +7040 -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/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,110 @@
|
|
|
1
|
+
import {
|
|
2
|
+
formatVariantIdentifier
|
|
3
|
+
} from "./chunk-YWNAHW24.js";
|
|
4
|
+
import {
|
|
5
|
+
assertSafePathComponent
|
|
6
|
+
} from "./chunk-S2VQCZO4.js";
|
|
7
|
+
import {
|
|
8
|
+
redactPersistedTestsExecuted
|
|
9
|
+
} from "./chunk-6Y5U7UFY.js";
|
|
10
|
+
import {
|
|
11
|
+
ProviderExecutionError
|
|
12
|
+
} from "./chunk-LUVKFFWR.js";
|
|
13
|
+
import {
|
|
14
|
+
LabPathResolver
|
|
15
|
+
} from "./chunk-7GDRQBQC.js";
|
|
16
|
+
import {
|
|
17
|
+
resolvePoeticRoot
|
|
18
|
+
} from "./chunk-LEIIWPWQ.js";
|
|
19
|
+
import {
|
|
20
|
+
sanitizeString
|
|
21
|
+
} from "./chunk-LPITVM7M.js";
|
|
22
|
+
|
|
23
|
+
// src/orchestrator/artifacts/provider-output-artifact-store.ts
|
|
24
|
+
import * as fs from "fs/promises";
|
|
25
|
+
import * as path from "path";
|
|
26
|
+
var PROVIDER_OUTPUT_ARTIFACT_SCHEMA_VERSION = 1;
|
|
27
|
+
var PROVIDER_OUTPUT_ARTIFACT_FILENAME = "provider-output.json";
|
|
28
|
+
function shouldPersistProviderOutputArtifact(variant) {
|
|
29
|
+
return variant.isCompetition !== true && variant.isBasicCompetition !== true;
|
|
30
|
+
}
|
|
31
|
+
function sanitizeVerification(verification) {
|
|
32
|
+
if (!verification) {
|
|
33
|
+
return verification;
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
...verification,
|
|
37
|
+
findings: verification.findings.map((finding) => ({
|
|
38
|
+
...finding,
|
|
39
|
+
...typeof finding.outputTail === "string" ? { outputTail: sanitizeString(finding.outputTail) } : {},
|
|
40
|
+
...Array.isArray(finding.failingTests) ? { failingTests: finding.failingTests.map((test) => sanitizeString(test)) } : {}
|
|
41
|
+
}))
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function buildProviderOutputArtifact(input) {
|
|
45
|
+
const providerResult = input.result.result;
|
|
46
|
+
const providerError = input.result.error instanceof ProviderExecutionError ? input.result.error : void 0;
|
|
47
|
+
const stdout = (typeof providerResult?.stdout === "string" ? providerResult.stdout : void 0) ?? providerError?.stdout ?? "";
|
|
48
|
+
const stderr = (typeof providerResult?.stderr === "string" ? providerResult.stderr : void 0) ?? providerError?.stderr ?? "";
|
|
49
|
+
const exitCode = typeof providerResult?.exitCode === "number" ? providerResult.exitCode : providerError?.exitCode;
|
|
50
|
+
const profile = input.variant.executionProfile;
|
|
51
|
+
const finishedAt = input.finishedAt ?? (/* @__PURE__ */ new Date()).toISOString();
|
|
52
|
+
const hostVerification = input.result.testStatus || input.result.testsExecuted || input.result.testMetrics || input.result.verification || input.result.worktreeSummary?.statusLines?.length ? {
|
|
53
|
+
testStatus: input.result.testStatus,
|
|
54
|
+
testsExecuted: redactPersistedTestsExecuted(input.result.testsExecuted),
|
|
55
|
+
testMetrics: input.result.testMetrics,
|
|
56
|
+
verification: sanitizeVerification(input.result.verification),
|
|
57
|
+
changedFiles: input.result.worktreeSummary?.statusLines?.filter((line) => typeof line === "string" && line.length >= 4).map((line) => line.slice(3).trim()).filter(Boolean)
|
|
58
|
+
} : void 0;
|
|
59
|
+
return {
|
|
60
|
+
schemaVersion: PROVIDER_OUTPUT_ARTIFACT_SCHEMA_VERSION,
|
|
61
|
+
taskId: input.taskId,
|
|
62
|
+
provider: input.result.provider ?? input.variant.provider,
|
|
63
|
+
model: input.result.resolvedModel ?? input.result.model ?? input.variant.model,
|
|
64
|
+
variant: input.result.variant || formatVariantIdentifier(input.variant),
|
|
65
|
+
executionProfileId: profile,
|
|
66
|
+
profile,
|
|
67
|
+
success: input.result.success,
|
|
68
|
+
exitCode,
|
|
69
|
+
stdout: sanitizeString(stdout),
|
|
70
|
+
stderr: sanitizeString(stderr),
|
|
71
|
+
errorMessage: typeof input.result.error?.message === "string" ? sanitizeString(input.result.error.message) : void 0,
|
|
72
|
+
...hostVerification ? { hostVerification } : {},
|
|
73
|
+
startedAt: input.startedAt,
|
|
74
|
+
finishedAt,
|
|
75
|
+
observedAt: finishedAt
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function resolveProviderOutputArtifactRoot(cwd) {
|
|
79
|
+
return cwd ?? resolvePoeticRoot();
|
|
80
|
+
}
|
|
81
|
+
function providerOutputArtifactPath(taskId, cwd) {
|
|
82
|
+
const root = resolveProviderOutputArtifactRoot(cwd);
|
|
83
|
+
const poeticDir = path.join(root, ".poetic");
|
|
84
|
+
const artifactBase = LabPathResolver.getInstance().getArtifactDir(poeticDir);
|
|
85
|
+
const safeTaskId = assertSafePathComponent(taskId, "taskId");
|
|
86
|
+
return path.join(artifactBase, safeTaskId, PROVIDER_OUTPUT_ARTIFACT_FILENAME);
|
|
87
|
+
}
|
|
88
|
+
async function persistProviderOutputArtifact(input) {
|
|
89
|
+
const artifact = buildProviderOutputArtifact(input);
|
|
90
|
+
const artifactPath = providerOutputArtifactPath(input.taskId, input.cwd);
|
|
91
|
+
const artifactDir = path.dirname(artifactPath);
|
|
92
|
+
await fs.mkdir(artifactDir, { recursive: true });
|
|
93
|
+
const tempPath = path.join(
|
|
94
|
+
artifactDir,
|
|
95
|
+
`.${PROVIDER_OUTPUT_ARTIFACT_FILENAME}.${process.pid}.${Date.now()}.tmp`
|
|
96
|
+
);
|
|
97
|
+
await fs.writeFile(tempPath, `${JSON.stringify(artifact, null, 2)}
|
|
98
|
+
`, "utf-8");
|
|
99
|
+
await fs.rename(tempPath, artifactPath);
|
|
100
|
+
return artifactPath;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export {
|
|
104
|
+
PROVIDER_OUTPUT_ARTIFACT_FILENAME,
|
|
105
|
+
shouldPersistProviderOutputArtifact,
|
|
106
|
+
resolveProviderOutputArtifactRoot,
|
|
107
|
+
providerOutputArtifactPath,
|
|
108
|
+
persistProviderOutputArtifact
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=chunk-4SHKPCGK.js.map
|
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
import {
|
|
2
|
+
expandHomeDir
|
|
3
|
+
} from "./chunk-C57KJOUQ.js";
|
|
4
|
+
import {
|
|
5
|
+
getDefaultPaths
|
|
6
|
+
} from "./chunk-UUH2RVKS.js";
|
|
7
|
+
import {
|
|
8
|
+
POETIC_ALLOW_SKIP_AUTH,
|
|
9
|
+
POETIC_SKIP_AUTH,
|
|
10
|
+
readEnv
|
|
11
|
+
} from "./chunk-5DLKYTQX.js";
|
|
12
|
+
|
|
13
|
+
// src/core/providers/shared/base-auth.ts
|
|
14
|
+
import { existsSync, readFileSync } from "fs";
|
|
15
|
+
import { chmod, copyFile, mkdir, readdir, rm, stat, writeFile } from "fs/promises";
|
|
16
|
+
import { homedir } from "os";
|
|
17
|
+
import * as path from "path";
|
|
18
|
+
import { execa } from "execa";
|
|
19
|
+
function readBooleanEnvFrom(env, name) {
|
|
20
|
+
const raw = env ? env[name] : process.env[name];
|
|
21
|
+
if (raw === void 0 || raw === "") return void 0;
|
|
22
|
+
const lower = raw.toLowerCase();
|
|
23
|
+
if (["1", "true", "yes", "on"].includes(lower)) return true;
|
|
24
|
+
if (["0", "false", "no", "off"].includes(lower)) return false;
|
|
25
|
+
throw new Error(
|
|
26
|
+
`Invalid boolean value for ${name}: "${raw}". Expected one of: 1, true, yes, on, 0, false, no, off`
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
function assertSkipAuthAllowed(env) {
|
|
30
|
+
const allowed = env === void 0 ? readEnv(POETIC_ALLOW_SKIP_AUTH).value : readBooleanEnvFrom(env, POETIC_ALLOW_SKIP_AUTH.name) ?? POETIC_ALLOW_SKIP_AUTH.default;
|
|
31
|
+
if (!allowed) {
|
|
32
|
+
throw new Error(
|
|
33
|
+
"POETIC_SKIP_AUTH is disabled unless POETIC_ALLOW_SKIP_AUTH=1 is explicitly set for a controlled test environment."
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function isSkipAuthEnvActive(skipEnvVar = POETIC_SKIP_AUTH.name, env) {
|
|
38
|
+
const value = skipEnvVar === POETIC_SKIP_AUTH.name ? readBooleanEnvFrom(env, POETIC_SKIP_AUTH.name) ?? POETIC_SKIP_AUTH.default : (env ? env[skipEnvVar] : process.env[skipEnvVar]) === "1";
|
|
39
|
+
if (!value) return false;
|
|
40
|
+
assertSkipAuthAllowed(env);
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
function resolveCredential(params) {
|
|
44
|
+
const { cliOverride, configFileValue, envValue } = params;
|
|
45
|
+
const trim = (s) => typeof s === "string" ? s.trim() || null : null;
|
|
46
|
+
return trim(cliOverride) ?? trim(configFileValue) ?? trim(envValue) ?? null;
|
|
47
|
+
}
|
|
48
|
+
var PROVIDER_CREDENTIALS_FILENAME = "provider-credentials.json";
|
|
49
|
+
function loadProviderCredentialsConfig() {
|
|
50
|
+
try {
|
|
51
|
+
const { userConfigDir } = getDefaultPaths();
|
|
52
|
+
const filePath = path.join(userConfigDir, PROVIDER_CREDENTIALS_FILENAME);
|
|
53
|
+
if (!existsSync(filePath)) return null;
|
|
54
|
+
const raw = readFileSync(filePath, "utf8");
|
|
55
|
+
const parsed = JSON.parse(raw);
|
|
56
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) return null;
|
|
57
|
+
const result = {};
|
|
58
|
+
for (const [provider, entry] of Object.entries(parsed)) {
|
|
59
|
+
if (entry !== null && typeof entry === "object" && !Array.isArray(entry)) {
|
|
60
|
+
const inner = {};
|
|
61
|
+
for (const [k, v] of Object.entries(entry)) {
|
|
62
|
+
if (typeof v === "string") inner[k] = v;
|
|
63
|
+
}
|
|
64
|
+
if (Object.keys(inner).length > 0) result[provider] = inner;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return result;
|
|
68
|
+
} catch {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async function isCliInstalled(command) {
|
|
73
|
+
try {
|
|
74
|
+
const result = await execa(command, ["--version"], {
|
|
75
|
+
timeout: 3e3,
|
|
76
|
+
reject: false
|
|
77
|
+
});
|
|
78
|
+
if (typeof result.exitCode === "number" && result.exitCode === 0) return true;
|
|
79
|
+
const out = `${result.stdout ?? ""}
|
|
80
|
+
${result.stderr ?? ""}`;
|
|
81
|
+
if (/not recognized as an internal or external command/i.test(out)) return false;
|
|
82
|
+
if (/command not found/i.test(out)) return false;
|
|
83
|
+
if (/No such file or directory/i.test(out)) return false;
|
|
84
|
+
return false;
|
|
85
|
+
} catch {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
var BaseProviderAuth = class {
|
|
90
|
+
/**
|
|
91
|
+
* Get environment variable names for provider credentials
|
|
92
|
+
* Override in subclass to specify which env vars to check
|
|
93
|
+
*/
|
|
94
|
+
getCredentialEnvVars() {
|
|
95
|
+
return [];
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Resolve credentials from multiple sources with priority ordering:
|
|
99
|
+
* 1. CLI arguments (highest priority)
|
|
100
|
+
* 2. Config file
|
|
101
|
+
* 3. Environment variables (lowest priority)
|
|
102
|
+
*
|
|
103
|
+
* @param options - Auth options including potential CLI credentials
|
|
104
|
+
* @returns Resolved credential value or undefined
|
|
105
|
+
*/
|
|
106
|
+
resolveCredentials(options) {
|
|
107
|
+
if (options?.cliCredentials) {
|
|
108
|
+
const cliValue = options.cliCredentials.apiKey || options.cliCredentials.token;
|
|
109
|
+
if (cliValue) {
|
|
110
|
+
return { source: "cli", value: cliValue };
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const configDir = this.resolveConfigDir(options);
|
|
114
|
+
const authFilePath = this.getAuthFilePath(configDir);
|
|
115
|
+
if (existsSync(authFilePath)) {
|
|
116
|
+
return { source: "config", value: authFilePath };
|
|
117
|
+
}
|
|
118
|
+
const envVars = this.getCredentialEnvVars();
|
|
119
|
+
for (const envVar of envVars) {
|
|
120
|
+
const envValue = process.env[envVar];
|
|
121
|
+
if (envValue && envValue.trim().length > 0) {
|
|
122
|
+
return { source: "env", value: envValue, envVar };
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return { source: "none" };
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Resolves the provider config directory
|
|
129
|
+
* Now uses XDG-compliant paths: ~/.config/poetic/providers/{provider}
|
|
130
|
+
*/
|
|
131
|
+
resolveConfigDir(options) {
|
|
132
|
+
if (options?.configDir !== void 0) {
|
|
133
|
+
return expandHomeDir(options.configDir);
|
|
134
|
+
}
|
|
135
|
+
const envDir = process.env[this.configDirEnvVar];
|
|
136
|
+
if (envDir) {
|
|
137
|
+
return expandHomeDir(envDir);
|
|
138
|
+
}
|
|
139
|
+
const { userConfigDir } = getDefaultPaths();
|
|
140
|
+
return path.join(userConfigDir, "providers", this.defaultConfigSubdir);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Gets the legacy (pre-XDG) config directory path
|
|
144
|
+
* Used for migration from old location to new location
|
|
145
|
+
*/
|
|
146
|
+
getLegacyConfigDir() {
|
|
147
|
+
return path.join(homedir(), ".poetic", this.defaultConfigSubdir);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Migrates provider authentication from legacy location to XDG-compliant location
|
|
151
|
+
* Uses copy-verify-deprecate pattern for safety
|
|
152
|
+
*/
|
|
153
|
+
async migrateFromLegacy(options) {
|
|
154
|
+
const legacyDir = this.getLegacyConfigDir();
|
|
155
|
+
const modernDir = this.resolveConfigDir(options);
|
|
156
|
+
if (!existsSync(legacyDir)) {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
if (existsSync(modernDir)) {
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
try {
|
|
163
|
+
console.log(`
|
|
164
|
+
Migrating ${this.metadata.name} credentials to XDG-compliant location...`);
|
|
165
|
+
console.log(` From: ${legacyDir}`);
|
|
166
|
+
console.log(` To: ${modernDir}
|
|
167
|
+
`);
|
|
168
|
+
await mkdir(modernDir, { recursive: true });
|
|
169
|
+
const files = await readdir(legacyDir);
|
|
170
|
+
for (const file of files) {
|
|
171
|
+
const srcPath = path.join(legacyDir, file);
|
|
172
|
+
const destPath = path.join(modernDir, file);
|
|
173
|
+
const srcStat = await stat(srcPath);
|
|
174
|
+
if (srcStat.isFile()) {
|
|
175
|
+
await copyFile(srcPath, destPath);
|
|
176
|
+
await this.enforceFilePermissions(destPath);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
const authPath = this.getAuthFilePath(modernDir);
|
|
180
|
+
await stat(authPath);
|
|
181
|
+
const deprecatedMarker = path.join(legacyDir, ".DEPRECATED");
|
|
182
|
+
const deprecationMessage = `This directory has been migrated to ${modernDir} on ${(/* @__PURE__ */ new Date()).toISOString()}
|
|
183
|
+
|
|
184
|
+
The new location follows the XDG Base Directory Specification.
|
|
185
|
+
This directory is safe to delete after verifying the new location works.
|
|
186
|
+
|
|
187
|
+
To clean up deprecated locations, run:
|
|
188
|
+
poetic config cleanup-deprecated
|
|
189
|
+
`;
|
|
190
|
+
await writeFile(deprecatedMarker, deprecationMessage, { encoding: "utf8" });
|
|
191
|
+
console.log(`Successfully migrated ${this.metadata.name} credentials
|
|
192
|
+
`);
|
|
193
|
+
return true;
|
|
194
|
+
} catch (error) {
|
|
195
|
+
console.error(`Warning: migration failed for ${this.metadata.name}:`, error);
|
|
196
|
+
console.error(` Falling back to legacy location: ${legacyDir}
|
|
197
|
+
`);
|
|
198
|
+
try {
|
|
199
|
+
if (existsSync(modernDir)) {
|
|
200
|
+
await rm(modernDir, { recursive: true, force: true });
|
|
201
|
+
}
|
|
202
|
+
} catch {
|
|
203
|
+
}
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Checks if authenticated by verifying credentials from any source
|
|
209
|
+
* Override to add custom validation logic
|
|
210
|
+
*/
|
|
211
|
+
async isAuthenticated(options) {
|
|
212
|
+
const credentialResolution = this.resolveCredentials(options);
|
|
213
|
+
if (credentialResolution.source === "cli" || credentialResolution.source === "env") {
|
|
214
|
+
return true;
|
|
215
|
+
}
|
|
216
|
+
if (credentialResolution.source === "config") {
|
|
217
|
+
const configDir = this.resolveConfigDir(options);
|
|
218
|
+
const authPath = this.getAuthFilePath(configDir);
|
|
219
|
+
try {
|
|
220
|
+
const stats = await stat(authPath);
|
|
221
|
+
if (stats.size === 0) {
|
|
222
|
+
return false;
|
|
223
|
+
}
|
|
224
|
+
await this.verifyFilePermissions(authPath);
|
|
225
|
+
return true;
|
|
226
|
+
} catch {
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (credentialResolution.source === "none") {
|
|
231
|
+
const configDir = this.resolveConfigDir(options);
|
|
232
|
+
const authPath = this.getAuthFilePath(configDir);
|
|
233
|
+
try {
|
|
234
|
+
const stats = await stat(authPath);
|
|
235
|
+
if (stats.size === 0) {
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
await this.verifyFilePermissions(authPath);
|
|
239
|
+
return true;
|
|
240
|
+
} catch {
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Creates a placeholder auth file for testing/dry-run mode
|
|
248
|
+
* Override to customize placeholder content
|
|
249
|
+
*/
|
|
250
|
+
async createPlaceholder(configDir) {
|
|
251
|
+
const authPath = this.getAuthFilePath(configDir);
|
|
252
|
+
const dir = path.dirname(authPath);
|
|
253
|
+
await mkdir(dir, { recursive: true });
|
|
254
|
+
await writeFile(authPath, "{}", { encoding: "utf8" });
|
|
255
|
+
await this.enforceFilePermissions(authPath);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Enforces secure file permissions (0600) on credential files
|
|
259
|
+
* Only owner can read/write, no access for group or others
|
|
260
|
+
*/
|
|
261
|
+
async enforceFilePermissions(filePath) {
|
|
262
|
+
try {
|
|
263
|
+
await chmod(filePath, 384);
|
|
264
|
+
} catch (error) {
|
|
265
|
+
if (process.platform !== "win32") {
|
|
266
|
+
console.warn(`Warning: Could not set permissions on ${filePath}:`, error);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Verifies that credential file has secure permissions
|
|
272
|
+
* Throws error if permissions are too permissive (on Unix systems)
|
|
273
|
+
*/
|
|
274
|
+
async verifyFilePermissions(filePath) {
|
|
275
|
+
if (process.platform === "win32") {
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
try {
|
|
279
|
+
const stats = await stat(filePath);
|
|
280
|
+
const mode = stats.mode;
|
|
281
|
+
const hasInsecurePermissions = (mode & 63) !== 0;
|
|
282
|
+
if (hasInsecurePermissions) {
|
|
283
|
+
throw new Error(
|
|
284
|
+
`Insecure permissions on ${filePath}. Credentials must be readable only by owner. Run: chmod 600 ${filePath}`
|
|
285
|
+
);
|
|
286
|
+
}
|
|
287
|
+
} catch (error) {
|
|
288
|
+
if (error.code === "ENOENT") {
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
throw error;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Runs the CLI authentication command
|
|
296
|
+
* Override to customize authentication flow
|
|
297
|
+
*/
|
|
298
|
+
async runAuthCommand(_configDir) {
|
|
299
|
+
throw new Error("runAuthCommand must be implemented by subclass");
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Checks if CLI is installed and shows helpful error if not
|
|
303
|
+
*/
|
|
304
|
+
async checkCliInstalled() {
|
|
305
|
+
const cliInstalled = await isCliInstalled(this.metadata.cliBinary);
|
|
306
|
+
if (!cliInstalled) {
|
|
307
|
+
this.showCliNotInstalledError();
|
|
308
|
+
throw new Error(`${this.metadata.name} CLI is not installed.`);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Shows a formatted error message when CLI is not installed
|
|
313
|
+
*/
|
|
314
|
+
showCliNotInstalledError(additionalInstructions) {
|
|
315
|
+
console.error("\n");
|
|
316
|
+
console.error(` Warning: ${this.metadata.name} CLI not installed`);
|
|
317
|
+
console.error("");
|
|
318
|
+
console.error(`
|
|
319
|
+
The '${this.metadata.cliBinary}' command is not available.`);
|
|
320
|
+
console.error(`Please install ${this.metadata.name} CLI first:
|
|
321
|
+
`);
|
|
322
|
+
console.error(` ${this.metadata.installCommand}
|
|
323
|
+
`);
|
|
324
|
+
if (additionalInstructions) {
|
|
325
|
+
console.error(additionalInstructions);
|
|
326
|
+
}
|
|
327
|
+
console.error("\n");
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Handles errors from CLI command execution
|
|
331
|
+
* Returns true if error was ENOENT/command not found, false otherwise
|
|
332
|
+
*/
|
|
333
|
+
handleCliError(_error) {
|
|
334
|
+
const err = _error;
|
|
335
|
+
const stderr = err?.stderr ?? "";
|
|
336
|
+
const message = err?.message ?? "";
|
|
337
|
+
const notFound = err?.code === "ENOENT" || /not recognized as an internal or external command/i.test(stderr || message) || /command not found/i.test(stderr || message) || /No such file or directory/i.test(stderr || message);
|
|
338
|
+
if (notFound) {
|
|
339
|
+
console.error("\n");
|
|
340
|
+
console.error(` Warning: ${this.metadata.name} CLI not found`);
|
|
341
|
+
console.error("");
|
|
342
|
+
console.error(`
|
|
343
|
+
'${this.metadata.cliBinary}' command failed because the CLI is missing.`);
|
|
344
|
+
console.error(`Please install ${this.metadata.name} CLI before trying again:
|
|
345
|
+
`);
|
|
346
|
+
console.error(` ${this.metadata.installCommand}
|
|
347
|
+
`);
|
|
348
|
+
console.error("\n");
|
|
349
|
+
throw new Error(`${this.metadata.name} CLI is not installed.`);
|
|
350
|
+
}
|
|
351
|
+
return false;
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Ensures authentication, running setup if needed
|
|
355
|
+
* Main entry point for authentication flow
|
|
356
|
+
*/
|
|
357
|
+
async ensureAuth(options) {
|
|
358
|
+
await this.migrateFromLegacy(options);
|
|
359
|
+
const configDir = this.resolveConfigDir(options);
|
|
360
|
+
if (await this.isAuthenticated(options)) {
|
|
361
|
+
return true;
|
|
362
|
+
}
|
|
363
|
+
if (readEnv(POETIC_SKIP_AUTH).value) {
|
|
364
|
+
assertSkipAuthAllowed();
|
|
365
|
+
try {
|
|
366
|
+
await this.createPlaceholder(configDir);
|
|
367
|
+
return true;
|
|
368
|
+
} catch (_error) {
|
|
369
|
+
this.showAuthSetupInstructions();
|
|
370
|
+
throw new Error("Authentication incomplete");
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
try {
|
|
374
|
+
await this.checkCliInstalled();
|
|
375
|
+
} catch (_error) {
|
|
376
|
+
this.showAuthSetupInstructions();
|
|
377
|
+
throw new Error("Authentication incomplete");
|
|
378
|
+
}
|
|
379
|
+
try {
|
|
380
|
+
await this.runAuthCommand(configDir);
|
|
381
|
+
} catch (_error) {
|
|
382
|
+
this.showAuthSetupInstructions();
|
|
383
|
+
throw new Error("Authentication incomplete");
|
|
384
|
+
}
|
|
385
|
+
const authPath = this.getAuthFilePath(configDir);
|
|
386
|
+
await this.enforceFilePermissions(authPath);
|
|
387
|
+
if (await this.isAuthenticated(options)) {
|
|
388
|
+
return true;
|
|
389
|
+
}
|
|
390
|
+
this.showAuthSetupInstructions();
|
|
391
|
+
throw new Error("Authentication incomplete. Auth file was not created.");
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Shows helpful authentication setup instructions
|
|
395
|
+
* Override in subclass to provide provider-specific instructions
|
|
396
|
+
*/
|
|
397
|
+
showAuthSetupInstructions() {
|
|
398
|
+
console.error("\n");
|
|
399
|
+
console.error(` Warning: ${this.metadata.name} authentication required`);
|
|
400
|
+
console.error("");
|
|
401
|
+
console.error(`
|
|
402
|
+
To use ${this.metadata.name}, you need to set up authentication first.`);
|
|
403
|
+
console.error("\nSetup:");
|
|
404
|
+
if (this.metadata.setupCommand) {
|
|
405
|
+
console.error(` Run: ${this.metadata.setupCommand}`);
|
|
406
|
+
}
|
|
407
|
+
console.error(` 1. Install ${this.metadata.name} CLI:`);
|
|
408
|
+
console.error(` ${this.metadata.installCommand}`);
|
|
409
|
+
console.error("\n 2. Follow the authentication guide:");
|
|
410
|
+
console.error(" See: docs/PROVIDER_SETUP.md");
|
|
411
|
+
console.error("\n 3. Verify authentication:");
|
|
412
|
+
console.error(" Run your command again after setup");
|
|
413
|
+
console.error("\n\n");
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Clears all authentication data
|
|
417
|
+
*/
|
|
418
|
+
async clearAuth(options) {
|
|
419
|
+
const configDir = this.resolveConfigDir(options);
|
|
420
|
+
const authPaths = this.getAuthPaths(configDir);
|
|
421
|
+
await Promise.all(
|
|
422
|
+
authPaths.map(async (authPath) => {
|
|
423
|
+
try {
|
|
424
|
+
await rm(authPath, { force: true, recursive: true });
|
|
425
|
+
} catch {
|
|
426
|
+
}
|
|
427
|
+
})
|
|
428
|
+
);
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Returns the next auth menu action based on current auth state
|
|
432
|
+
*/
|
|
433
|
+
async nextAuthMenuAction(options) {
|
|
434
|
+
return await this.isAuthenticated(options) ? "logout" : "login";
|
|
435
|
+
}
|
|
436
|
+
};
|
|
437
|
+
|
|
438
|
+
export {
|
|
439
|
+
assertSkipAuthAllowed,
|
|
440
|
+
isSkipAuthEnvActive,
|
|
441
|
+
resolveCredential,
|
|
442
|
+
loadProviderCredentialsConfig,
|
|
443
|
+
BaseProviderAuth
|
|
444
|
+
};
|
|
445
|
+
//# sourceMappingURL=chunk-4VJITV4P.js.map
|