@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,899 @@
|
|
|
1
|
+
import {
|
|
2
|
+
resolveProviderReleaseStatus
|
|
3
|
+
} from "./chunk-VBNCKCCI.js";
|
|
4
|
+
import {
|
|
5
|
+
isSkipAuthEnvActive
|
|
6
|
+
} from "./chunk-4VJITV4P.js";
|
|
7
|
+
import {
|
|
8
|
+
resolveProviderCliCommand
|
|
9
|
+
} from "./chunk-SURZ2WFE.js";
|
|
10
|
+
import {
|
|
11
|
+
formatSandboxCapabilityFailure,
|
|
12
|
+
probeProviderSandboxCapability
|
|
13
|
+
} from "./chunk-5WCQRDRB.js";
|
|
14
|
+
import {
|
|
15
|
+
formatLinuxHostClassNote,
|
|
16
|
+
resolveLinuxHostClass
|
|
17
|
+
} from "./chunk-RWREC3KJ.js";
|
|
18
|
+
import {
|
|
19
|
+
ProviderRegistry
|
|
20
|
+
} from "./chunk-AT4TNPWW.js";
|
|
21
|
+
import {
|
|
22
|
+
POETIC_SKIP_READINESS_PREFLIGHT,
|
|
23
|
+
POETIC_STRICT_READINESS,
|
|
24
|
+
readRawEnv
|
|
25
|
+
} from "./chunk-5DLKYTQX.js";
|
|
26
|
+
|
|
27
|
+
// src/core/providers/readiness.ts
|
|
28
|
+
import { constants as fsConstants } from "fs";
|
|
29
|
+
import { access } from "fs/promises";
|
|
30
|
+
import path from "path";
|
|
31
|
+
import { execa } from "execa";
|
|
32
|
+
function isProviderSkipAuthActive(config, env) {
|
|
33
|
+
const skipEnvVar = config.auth?.skip_env_var;
|
|
34
|
+
if (!skipEnvVar) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
return isSkipAuthEnvActive(skipEnvVar, env);
|
|
38
|
+
}
|
|
39
|
+
function resolveWriteBoundaryAdvisory(env) {
|
|
40
|
+
try {
|
|
41
|
+
const resolution = resolveLinuxHostClass(env ? { env } : {});
|
|
42
|
+
let detail;
|
|
43
|
+
if (resolution.hostClass === "desktop-unacked") {
|
|
44
|
+
detail = "Linux desktop write consent is not recorded. Run poetic sandbox trust linux --ack-desktop or poetic sandbox trust linux --host isolated.";
|
|
45
|
+
} else if (resolution.note) {
|
|
46
|
+
detail = resolution.note;
|
|
47
|
+
} else {
|
|
48
|
+
detail = formatLinuxHostClassNote(resolution) ?? `Host class ${resolution.hostClass} (source=${resolution.source})`;
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
hostClass: resolution.hostClass,
|
|
52
|
+
source: String(resolution.source),
|
|
53
|
+
writesAllowed: resolution.writesAllowed,
|
|
54
|
+
detail
|
|
55
|
+
};
|
|
56
|
+
} catch {
|
|
57
|
+
return void 0;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function resolveAuthLabel(readiness) {
|
|
61
|
+
if (readiness.readinessNote === "env-var-auth-assumed") return "assumed-env";
|
|
62
|
+
switch (readiness.authenticated) {
|
|
63
|
+
case "yes":
|
|
64
|
+
return "authenticated";
|
|
65
|
+
case "no":
|
|
66
|
+
return "not-authenticated";
|
|
67
|
+
default:
|
|
68
|
+
return "unknown";
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function resolveNamedReadiness(readiness, dryRun) {
|
|
72
|
+
const executableAvailable = readiness.installed && readiness.cliHealthy;
|
|
73
|
+
const configured = typeof readiness.configured === "boolean" ? readiness.configured : readiness.reasonCode !== "provider-not-found" && readiness.reasonCode !== "no-cli-channel" && readiness.known !== false;
|
|
74
|
+
const lastSuccessfulDryRun = dryRun?.fresh ? dryRun.lastSuccessMs : null;
|
|
75
|
+
const readyForRun = readiness.readinessNote === "env-var-auth-assumed" ? false : readiness.ready;
|
|
76
|
+
return {
|
|
77
|
+
configured,
|
|
78
|
+
authenticated: resolveAuthLabel(readiness),
|
|
79
|
+
executableAvailable,
|
|
80
|
+
lastSuccessfulDryRun,
|
|
81
|
+
readyForRun
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function resolveProviderParityLabel(readiness, resolved) {
|
|
85
|
+
const named = resolved ?? resolveNamedReadiness(readiness);
|
|
86
|
+
if (!named.configured || !readiness.installed) {
|
|
87
|
+
return "missing";
|
|
88
|
+
}
|
|
89
|
+
if (!readiness.cliHealthy && readiness.reasonCode === "cli-unhealthy") {
|
|
90
|
+
return "installed-unhealthy";
|
|
91
|
+
}
|
|
92
|
+
if (!readiness.cliHealthy && readiness.reasonCode !== "cli-present-unprobed") {
|
|
93
|
+
return "installed-unhealthy";
|
|
94
|
+
}
|
|
95
|
+
if (readiness.readinessNote === "env-var-auth-assumed" || named.authenticated === "assumed-env") {
|
|
96
|
+
return "env-assumed";
|
|
97
|
+
}
|
|
98
|
+
if (readiness.ready && named.readyForRun) {
|
|
99
|
+
return "verified-ready";
|
|
100
|
+
}
|
|
101
|
+
if (readiness.authenticated === "no" || named.authenticated === "not-authenticated") {
|
|
102
|
+
return "auth-no";
|
|
103
|
+
}
|
|
104
|
+
return "auth-unknown";
|
|
105
|
+
}
|
|
106
|
+
function resolveAuthEvidence(readiness) {
|
|
107
|
+
if (readiness.readinessNote === "env-var-auth-assumed") {
|
|
108
|
+
return {
|
|
109
|
+
authEvidence: "assumed-env-var",
|
|
110
|
+
authDetail: "Auth inferred from a configured env var for setup readiness; execution still verifies provider access."
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
if (readiness.authenticated === "yes") {
|
|
114
|
+
return {
|
|
115
|
+
authEvidence: "provider-reported",
|
|
116
|
+
authDetail: "Provider readiness reported authentication available."
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
if (readiness.authenticated === "no") {
|
|
120
|
+
return {
|
|
121
|
+
authEvidence: "reported-missing",
|
|
122
|
+
authDetail: readiness.reason ?? "Provider readiness reported authentication missing."
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
if (readiness.warning?.includes("active auth probe")) {
|
|
126
|
+
return {
|
|
127
|
+
authEvidence: "active-unverified",
|
|
128
|
+
authDetail: readiness.warning ?? "Active auth probe could not verify headless execution; this is not a confirmed credential failure."
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
if (readiness.warning || readiness.reason?.includes("Authentication status unknown")) {
|
|
132
|
+
return {
|
|
133
|
+
authEvidence: "passive-unknown",
|
|
134
|
+
authDetail: readiness.warning ?? readiness.reason ?? "Passive readiness could not verify provider-owned authentication state."
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
authEvidence: "not-collected",
|
|
139
|
+
authDetail: "Authentication status was not collected for this diagnostic."
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function classifyProviderReadiness(readiness, resolved) {
|
|
143
|
+
const auth = resolveAuthEvidence(readiness);
|
|
144
|
+
const named = resolved ?? resolveNamedReadiness(readiness);
|
|
145
|
+
if (!named.configured || !readiness.installed) {
|
|
146
|
+
return {
|
|
147
|
+
readinessStatus: "unavailable",
|
|
148
|
+
readinessStatusDetail: readiness.reason ?? "CLI is not installed.",
|
|
149
|
+
...auth
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
if (!readiness.cliHealthy && readiness.reasonCode !== "cli-present-unprobed") {
|
|
153
|
+
return {
|
|
154
|
+
readinessStatus: "broken",
|
|
155
|
+
readinessStatusDetail: readiness.reason ?? "CLI is installed but failed health probes.",
|
|
156
|
+
...auth
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
if (readiness.sandboxCapable === false) {
|
|
160
|
+
const sandboxDetail = readiness.sandboxReason ?? readiness.reason ?? "Execute-tier sandbox/policy probe blocked provider state access.";
|
|
161
|
+
return {
|
|
162
|
+
readinessStatus: "installed-but-unverified",
|
|
163
|
+
readinessStatusDetail: `Readiness caveat: ${sandboxDetail} This is not a broken CLI or confirmed auth failure.`,
|
|
164
|
+
...auth
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
if (readiness.readinessNote === "env-var-auth-assumed") {
|
|
168
|
+
return {
|
|
169
|
+
readinessStatus: "installed-but-unverified",
|
|
170
|
+
readinessStatusDetail: "CLI is installed and setup readiness is assumed from configured env auth; execution still verifies provider access.",
|
|
171
|
+
...auth
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
if (readiness.sandboxCapable === true && readiness.authenticated === "no") {
|
|
175
|
+
return {
|
|
176
|
+
readinessStatus: "contained-auth-needed",
|
|
177
|
+
readinessStatusDetail: "CLI is contained and healthy, but authentication is missing.",
|
|
178
|
+
...auth
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
if (readiness.sandboxCapable === true && readiness.ready) {
|
|
182
|
+
return {
|
|
183
|
+
readinessStatus: "contained-ready",
|
|
184
|
+
readinessStatusDetail: "CLI, auth, and execute-tier containment checks are ready.",
|
|
185
|
+
...auth
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
if (readiness.authenticated === "no" || resolved?.authenticated === "not-authenticated") {
|
|
189
|
+
return {
|
|
190
|
+
readinessStatus: "normal-auth-needed",
|
|
191
|
+
readinessStatusDetail: "CLI is installed and healthy, but authentication is missing.",
|
|
192
|
+
...auth
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
if (readiness.ready || resolved?.readyForRun) {
|
|
196
|
+
return {
|
|
197
|
+
readinessStatus: "normal-auth-ready",
|
|
198
|
+
readinessStatusDetail: "CLI is installed and auth readiness evidence is present.",
|
|
199
|
+
...auth
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
return {
|
|
203
|
+
readinessStatus: "installed-but-unverified",
|
|
204
|
+
readinessStatusDetail: readiness.reason ?? "CLI is installed and healthy, but auth or execution readiness is not verified.",
|
|
205
|
+
...auth
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
var SETUP_CHECK_READINESS_OPTIONS = {
|
|
209
|
+
mode: "setup",
|
|
210
|
+
sandboxProbeMode: "execute"
|
|
211
|
+
};
|
|
212
|
+
function resolveReadinessScopeLabel(readiness, resolved) {
|
|
213
|
+
if (!readiness.installed) return "unknown";
|
|
214
|
+
if (!readiness.cliHealthy && readiness.reasonCode !== "cli-present-unprobed") {
|
|
215
|
+
return "degraded";
|
|
216
|
+
}
|
|
217
|
+
if (readiness.sandboxCapable === false) return "degraded";
|
|
218
|
+
if (readiness.readinessNote === "env-var-auth-assumed") return "assumed";
|
|
219
|
+
if (readiness.ready && readiness.readinessNote !== "env-var-auth-assumed" || resolved?.readyForRun) {
|
|
220
|
+
return "execute-ready";
|
|
221
|
+
}
|
|
222
|
+
if (readiness.authenticated === "yes" || resolved?.authenticated === "authenticated") {
|
|
223
|
+
return "authenticated";
|
|
224
|
+
}
|
|
225
|
+
if (readiness.authenticated === "no" || resolved?.authenticated === "not-authenticated") {
|
|
226
|
+
return "auth-needed";
|
|
227
|
+
}
|
|
228
|
+
if (readiness.installed) return "installed";
|
|
229
|
+
return "unknown";
|
|
230
|
+
}
|
|
231
|
+
function resolveReadinessScope(readiness, resolved) {
|
|
232
|
+
const label = resolveReadinessScopeLabel(readiness, resolved);
|
|
233
|
+
switch (label) {
|
|
234
|
+
case "unknown":
|
|
235
|
+
if (!readiness.installed) {
|
|
236
|
+
return { label, detail: "CLI not installed" };
|
|
237
|
+
}
|
|
238
|
+
if (readiness.authenticated === "no" || resolved?.authenticated === "not-authenticated") {
|
|
239
|
+
return { label, detail: "Authentication not configured" };
|
|
240
|
+
}
|
|
241
|
+
return {
|
|
242
|
+
label,
|
|
243
|
+
detail: "Auth status not verified at this diagnostic scope"
|
|
244
|
+
};
|
|
245
|
+
case "degraded":
|
|
246
|
+
if (!readiness.cliHealthy) {
|
|
247
|
+
return { label, detail: readiness.reason ?? "CLI not healthy" };
|
|
248
|
+
}
|
|
249
|
+
if (readiness.sandboxCapable === false) {
|
|
250
|
+
const sandboxDetail = readiness.sandboxReason ?? readiness.reason ?? "execute-tier sandbox/policy blocked provider state access";
|
|
251
|
+
return {
|
|
252
|
+
label,
|
|
253
|
+
detail: `Readiness caveat: ${sandboxDetail}`
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
return { label, detail: readiness.reason ?? "Provider degraded" };
|
|
257
|
+
case "assumed":
|
|
258
|
+
return {
|
|
259
|
+
label,
|
|
260
|
+
detail: "Assumed from configured env var for setup only; execution still verifies provider access"
|
|
261
|
+
};
|
|
262
|
+
case "auth-needed":
|
|
263
|
+
return { label, detail: "Authentication not configured" };
|
|
264
|
+
case "installed":
|
|
265
|
+
return {
|
|
266
|
+
label,
|
|
267
|
+
detail: "CLI installed; auth not verified by passive setup-tier checks"
|
|
268
|
+
};
|
|
269
|
+
case "authenticated":
|
|
270
|
+
return { label, detail: "Authenticated; execute-tier checks incomplete" };
|
|
271
|
+
case "execute-ready":
|
|
272
|
+
return { label };
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
function readinessProbeContextForOptions(options = {}) {
|
|
276
|
+
const modeProbes = options.mode ? readinessProbesForMode(options.mode) : void 0;
|
|
277
|
+
const cliProbeMode = options.cliProbeMode ?? modeProbes?.cliProbeMode ?? "execute";
|
|
278
|
+
const authProbeMode = options.probeAuth !== void 0 ? "deferred" : options.authProbeMode ?? modeProbes?.authProbeMode ?? "passive";
|
|
279
|
+
return {
|
|
280
|
+
mode: options.mode ?? "execute",
|
|
281
|
+
cliProbeMode,
|
|
282
|
+
authProbeMode,
|
|
283
|
+
sandboxProbeMode: options.sandboxProbeMode ?? (options.mode === "setup" ? "none" : "execute")
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
var EXECUTE_CLI_PROBE_OPTIONS = {
|
|
287
|
+
timeoutMs: 15e3,
|
|
288
|
+
retries: 1
|
|
289
|
+
};
|
|
290
|
+
function readinessProbesForMode(mode) {
|
|
291
|
+
switch (mode) {
|
|
292
|
+
case "setup":
|
|
293
|
+
return { cliProbeMode: "execute", authProbeMode: "passive" };
|
|
294
|
+
case "execute":
|
|
295
|
+
return { cliProbeMode: "execute", authProbeMode: "passive" };
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
function formatAuthReadinessReason(displayName, authenticated, authProbeMode, authNote) {
|
|
299
|
+
if (authenticated === "yes") return void 0;
|
|
300
|
+
if (authenticated === "no") {
|
|
301
|
+
return authNote ? `Authentication missing. ${authNote}` : "Authentication missing";
|
|
302
|
+
}
|
|
303
|
+
if (authProbeMode === "active") {
|
|
304
|
+
const detail = authNote ? ` Detail: ${authNote}` : "";
|
|
305
|
+
return `${displayName} active auth probe could not verify headless execution; this is not a confirmed credential failure. Check provider runtime, sandbox, and CLI diagnostics.${detail}`;
|
|
306
|
+
}
|
|
307
|
+
return "Authentication status unknown; runtime will defer to the provider CLI.";
|
|
308
|
+
}
|
|
309
|
+
var ProviderNotReadyError = class extends Error {
|
|
310
|
+
provider;
|
|
311
|
+
readiness;
|
|
312
|
+
constructor(readiness, message = formatProviderNotReadyMessage(readiness)) {
|
|
313
|
+
super(message);
|
|
314
|
+
this.name = "ProviderNotReadyError";
|
|
315
|
+
this.provider = readiness.provider;
|
|
316
|
+
this.readiness = readiness;
|
|
317
|
+
}
|
|
318
|
+
};
|
|
319
|
+
var DEFAULT_CLI_PROBE_ARGS = [
|
|
320
|
+
["--version"],
|
|
321
|
+
["-v"],
|
|
322
|
+
["--help"]
|
|
323
|
+
];
|
|
324
|
+
var CLI_PRESENT_PATTERNS = [
|
|
325
|
+
/unknown (flag|option|argument)/i,
|
|
326
|
+
/unrecognized (flag|option|argument)/i,
|
|
327
|
+
/invalid (flag|option|argument)/i,
|
|
328
|
+
/no such option/i
|
|
329
|
+
];
|
|
330
|
+
async function pathIsExecutable(filePath) {
|
|
331
|
+
try {
|
|
332
|
+
await access(filePath, fsConstants.X_OK);
|
|
333
|
+
return true;
|
|
334
|
+
} catch {
|
|
335
|
+
return false;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
function pathEntries() {
|
|
339
|
+
return (process.env.PATH ?? "").split(path.delimiter).map((entry) => entry.trim()).filter(Boolean);
|
|
340
|
+
}
|
|
341
|
+
function providerSupportsCli(config) {
|
|
342
|
+
if (config.id === "openrouter") return false;
|
|
343
|
+
if (!config.cli?.command || config.cli.command === "N/A") return false;
|
|
344
|
+
if (!Array.isArray(config.channels)) return true;
|
|
345
|
+
return config.channels.includes("cli");
|
|
346
|
+
}
|
|
347
|
+
async function probeProviderCliOnce(command, preferredArgs, prefixArgs, timeoutMs) {
|
|
348
|
+
const probeArgs = [
|
|
349
|
+
...preferredArgs && preferredArgs.length > 0 ? [Array.from(preferredArgs)] : [],
|
|
350
|
+
...DEFAULT_CLI_PROBE_ARGS
|
|
351
|
+
];
|
|
352
|
+
let lastErrorMessage;
|
|
353
|
+
let sawUnknownFlag = false;
|
|
354
|
+
for (const args of probeArgs) {
|
|
355
|
+
try {
|
|
356
|
+
await execa(command, [...prefixArgs ?? [], ...args], {
|
|
357
|
+
timeout: timeoutMs
|
|
358
|
+
});
|
|
359
|
+
return { present: true, healthy: true, healthProbed: true };
|
|
360
|
+
} catch (error) {
|
|
361
|
+
const err = error;
|
|
362
|
+
const message = err?.message ?? "";
|
|
363
|
+
const stderr = err?.stderr ?? "";
|
|
364
|
+
const combined = `${message}
|
|
365
|
+
${stderr}`;
|
|
366
|
+
const isNotFound = err?.code === "ENOENT" || /spawn .* ENOENT/i.test(message) || /\bENOENT\b/i.test(message) || /command not found/i.test(combined) || /is not recognized as an internal or external command/i.test(combined);
|
|
367
|
+
if (isNotFound) {
|
|
368
|
+
return { present: false, healthy: false, healthProbed: true };
|
|
369
|
+
}
|
|
370
|
+
if (CLI_PRESENT_PATTERNS.some((pattern) => pattern.test(combined))) {
|
|
371
|
+
sawUnknownFlag = true;
|
|
372
|
+
continue;
|
|
373
|
+
}
|
|
374
|
+
lastErrorMessage = (stderr || message).trim() || lastErrorMessage;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
return {
|
|
378
|
+
present: true,
|
|
379
|
+
healthy: false,
|
|
380
|
+
healthProbed: true,
|
|
381
|
+
degradedReason: lastErrorMessage ?? (sawUnknownFlag ? "CLI found but did not accept version/help probes" : "CLI found but failed to respond to version/help probes")
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
async function probeProviderCli(command, preferredArgs, prefixArgs, options = {}) {
|
|
385
|
+
const timeoutMs = options.timeoutMs ?? 5e3;
|
|
386
|
+
const maxAttempts = (options.retries ?? 0) + 1;
|
|
387
|
+
let lastResult = { present: false, healthy: false };
|
|
388
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
389
|
+
lastResult = await probeProviderCliOnce(command, preferredArgs, prefixArgs, timeoutMs);
|
|
390
|
+
if (lastResult.present && lastResult.healthy) {
|
|
391
|
+
return lastResult;
|
|
392
|
+
}
|
|
393
|
+
if (!lastResult.present) {
|
|
394
|
+
return lastResult;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
return lastResult;
|
|
398
|
+
}
|
|
399
|
+
async function probeProviderCliPresence(command, prefixArgs) {
|
|
400
|
+
if (prefixArgs && prefixArgs.length > 0) {
|
|
401
|
+
return probeProviderCli(command, ["--version"], prefixArgs);
|
|
402
|
+
}
|
|
403
|
+
if (path.isAbsolute(command) || command.includes(path.sep)) {
|
|
404
|
+
return await pathIsExecutable(command) ? { present: true, healthy: false, healthProbed: false } : { present: false, healthy: false, healthProbed: false };
|
|
405
|
+
}
|
|
406
|
+
for (const entry of pathEntries()) {
|
|
407
|
+
const candidate = path.join(entry, command);
|
|
408
|
+
if (await pathIsExecutable(candidate)) {
|
|
409
|
+
return { present: true, healthy: false, healthProbed: false };
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
return { present: false, healthy: false, healthProbed: false };
|
|
413
|
+
}
|
|
414
|
+
var NATIVE_PROVIDER_AUTH_IDS = /* @__PURE__ */ new Set([
|
|
415
|
+
"claude",
|
|
416
|
+
"codex",
|
|
417
|
+
"cursor",
|
|
418
|
+
"gemini",
|
|
419
|
+
"grok",
|
|
420
|
+
"copilot",
|
|
421
|
+
"opencode",
|
|
422
|
+
"kiro",
|
|
423
|
+
"antigravity",
|
|
424
|
+
"pi"
|
|
425
|
+
]);
|
|
426
|
+
function isSetupTierReadiness(options) {
|
|
427
|
+
if (options.mode === "setup") return true;
|
|
428
|
+
if (options.mode === "execute") return false;
|
|
429
|
+
return options.cliProbeMode === "presence" && options.authProbeMode !== "active";
|
|
430
|
+
}
|
|
431
|
+
function readConfiguredEnvValue(env, key) {
|
|
432
|
+
return env ? env[key] : process.env[key];
|
|
433
|
+
}
|
|
434
|
+
function hasConfiguredEnvVarAuth(config, env) {
|
|
435
|
+
const envVars = config.auth?.env_vars ?? [];
|
|
436
|
+
return envVars.some((key) => {
|
|
437
|
+
const value = readConfiguredEnvValue(env, key);
|
|
438
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
function resolveEnvVarAuthReadinessPromotion(_providerId, config, authenticated, sandboxBlocked, options) {
|
|
442
|
+
if (authenticated !== "unknown" || sandboxBlocked) return void 0;
|
|
443
|
+
if (readRawEnv(POETIC_STRICT_READINESS) === "1") return void 0;
|
|
444
|
+
if (!hasConfiguredEnvVarAuth(config, options.authProbeEnv)) return void 0;
|
|
445
|
+
return "env-var-auth-assumed";
|
|
446
|
+
}
|
|
447
|
+
function normalizePassiveAuthForEnvVarPromotion(providerId, config, authenticated, authProbeMode, options) {
|
|
448
|
+
if (!isSetupTierReadiness(options)) return authenticated;
|
|
449
|
+
if (authenticated !== "no") return authenticated;
|
|
450
|
+
if (authProbeMode === "active") return authenticated;
|
|
451
|
+
if (providerId !== "opencode") return authenticated;
|
|
452
|
+
if (!hasConfiguredEnvVarAuth(config, options.authProbeEnv)) return authenticated;
|
|
453
|
+
return "unknown";
|
|
454
|
+
}
|
|
455
|
+
function shouldProbeSandboxCapability(executeTier, options) {
|
|
456
|
+
if (options.sandboxProbeMode === "none") return false;
|
|
457
|
+
if (options.probeSandboxCapability) return true;
|
|
458
|
+
if (options.sandboxProbeMode === "execute") {
|
|
459
|
+
const runningUnderVitest2 = Boolean(process.env.VITEST || process.env.VITEST_WORKER_ID) || process.env.NODE_ENV === "test";
|
|
460
|
+
return !runningUnderVitest2;
|
|
461
|
+
}
|
|
462
|
+
if (!executeTier) return false;
|
|
463
|
+
const runningUnderVitest = Boolean(process.env.VITEST || process.env.VITEST_WORKER_ID) || process.env.NODE_ENV === "test";
|
|
464
|
+
return !runningUnderVitest;
|
|
465
|
+
}
|
|
466
|
+
async function probeProviderAuthReadinessPassive(providerId, config, env) {
|
|
467
|
+
if (isProviderSkipAuthActive(config, env)) return "yes";
|
|
468
|
+
if (NATIVE_PROVIDER_AUTH_IDS.has(providerId)) {
|
|
469
|
+
const { invokeProviderAuthState } = await import("./invoke-provider-auth-GRUYP44M.js");
|
|
470
|
+
return invokeProviderAuthState(providerId, env ? { mode: "passive", env } : "passive");
|
|
471
|
+
}
|
|
472
|
+
return "unknown";
|
|
473
|
+
}
|
|
474
|
+
async function probeProviderAuthReadiness(providerId, config, options = {}) {
|
|
475
|
+
return (await probeProviderAuthReadinessDetailed(providerId, config, options)).state;
|
|
476
|
+
}
|
|
477
|
+
async function probeProviderAuthReadinessDetailed(providerId, config, options = {}) {
|
|
478
|
+
const providerConfig = config ?? ProviderRegistry.getProviderConfig(providerId);
|
|
479
|
+
const mode = options.mode ?? "passive";
|
|
480
|
+
if (mode === "passive") {
|
|
481
|
+
return {
|
|
482
|
+
state: await probeProviderAuthReadinessPassive(providerId, providerConfig, options.env)
|
|
483
|
+
};
|
|
484
|
+
}
|
|
485
|
+
if (isProviderSkipAuthActive(providerConfig, options.env)) return { state: "yes" };
|
|
486
|
+
if (NATIVE_PROVIDER_AUTH_IDS.has(providerId)) {
|
|
487
|
+
const { invokeProviderAuthReadiness } = await import("./invoke-provider-auth-GRUYP44M.js");
|
|
488
|
+
try {
|
|
489
|
+
return await invokeProviderAuthReadiness(
|
|
490
|
+
providerId,
|
|
491
|
+
options.env ? { mode: "active", env: options.env } : "active"
|
|
492
|
+
);
|
|
493
|
+
} catch {
|
|
494
|
+
return { state: "unknown" };
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
return { state: "unknown" };
|
|
498
|
+
}
|
|
499
|
+
async function getProviderReadiness(providerId, options = {}) {
|
|
500
|
+
let config;
|
|
501
|
+
try {
|
|
502
|
+
config = options.providers?.find((provider) => provider.id === providerId) ?? ProviderRegistry.getProviderConfig(providerId);
|
|
503
|
+
} catch (error) {
|
|
504
|
+
return {
|
|
505
|
+
provider: providerId,
|
|
506
|
+
displayName: providerId,
|
|
507
|
+
known: false,
|
|
508
|
+
configured: false,
|
|
509
|
+
installed: false,
|
|
510
|
+
cliHealthy: false,
|
|
511
|
+
authenticated: "unknown",
|
|
512
|
+
ready: false,
|
|
513
|
+
order: 99,
|
|
514
|
+
reasonCode: "provider-not-found",
|
|
515
|
+
reason: error instanceof Error ? error.message : "Provider not found"
|
|
516
|
+
};
|
|
517
|
+
}
|
|
518
|
+
const installCommand = config.cli?.install_command;
|
|
519
|
+
const normalizedProviderId = config.id ?? providerId;
|
|
520
|
+
const displayName = config.display_name ?? normalizedProviderId;
|
|
521
|
+
const order = config.order ?? 99;
|
|
522
|
+
const experimental = resolveProviderReleaseStatus(config) === "experimental";
|
|
523
|
+
if (!providerSupportsCli(config)) {
|
|
524
|
+
return {
|
|
525
|
+
provider: normalizedProviderId,
|
|
526
|
+
displayName,
|
|
527
|
+
known: true,
|
|
528
|
+
configured: false,
|
|
529
|
+
installed: false,
|
|
530
|
+
cliHealthy: false,
|
|
531
|
+
authenticated: "unknown",
|
|
532
|
+
ready: false,
|
|
533
|
+
installCommand,
|
|
534
|
+
authCommand: config.auth?.note,
|
|
535
|
+
order,
|
|
536
|
+
reasonCode: "no-cli-channel",
|
|
537
|
+
reason: "Provider does not expose a local CLI execution channel"
|
|
538
|
+
};
|
|
539
|
+
}
|
|
540
|
+
let cli;
|
|
541
|
+
try {
|
|
542
|
+
cli = (options.resolveCliCommand ?? resolveProviderCliCommand)(normalizedProviderId);
|
|
543
|
+
} catch (error) {
|
|
544
|
+
return {
|
|
545
|
+
provider: normalizedProviderId,
|
|
546
|
+
displayName,
|
|
547
|
+
known: true,
|
|
548
|
+
configured: true,
|
|
549
|
+
installed: false,
|
|
550
|
+
cliHealthy: false,
|
|
551
|
+
authenticated: "unknown",
|
|
552
|
+
ready: false,
|
|
553
|
+
installCommand,
|
|
554
|
+
authCommand: config.auth?.note,
|
|
555
|
+
order,
|
|
556
|
+
reasonCode: "cli-resolve-failed",
|
|
557
|
+
reason: error instanceof Error ? error.message : "Provider CLI could not be resolved"
|
|
558
|
+
};
|
|
559
|
+
}
|
|
560
|
+
const modeProbes = options.mode ? readinessProbesForMode(options.mode) : void 0;
|
|
561
|
+
const cliProbeMode = options.cliProbeMode ?? modeProbes?.cliProbeMode;
|
|
562
|
+
const authProbeMode = options.authProbeMode ?? modeProbes?.authProbeMode;
|
|
563
|
+
const executeTier = options.mode === "execute" || options.mode === void 0 && cliProbeMode === "execute";
|
|
564
|
+
const healthProbeRequested = cliProbeMode === "execute";
|
|
565
|
+
const setupTier = isSetupTierReadiness(options);
|
|
566
|
+
const probe = options.probeCli !== void 0 ? await options.probeCli(cli.command, ["--version"], cli.prefixArgs) : cliProbeMode === "presence" ? await probeProviderCliPresence(cli.command, cli.prefixArgs) : await probeProviderCli(
|
|
567
|
+
cli.command,
|
|
568
|
+
["--version"],
|
|
569
|
+
cli.prefixArgs,
|
|
570
|
+
healthProbeRequested ? EXECUTE_CLI_PROBE_OPTIONS : void 0
|
|
571
|
+
);
|
|
572
|
+
if (!probe.present) {
|
|
573
|
+
return {
|
|
574
|
+
provider: normalizedProviderId,
|
|
575
|
+
displayName,
|
|
576
|
+
known: true,
|
|
577
|
+
configured: true,
|
|
578
|
+
installed: false,
|
|
579
|
+
cliHealthy: false,
|
|
580
|
+
authenticated: "unknown",
|
|
581
|
+
ready: false,
|
|
582
|
+
command: cli.command,
|
|
583
|
+
prefixArgs: cli.prefixArgs,
|
|
584
|
+
installCommand,
|
|
585
|
+
authCommand: config.auth?.note,
|
|
586
|
+
order,
|
|
587
|
+
reasonCode: "cli-not-installed",
|
|
588
|
+
reason: "CLI is not installed"
|
|
589
|
+
};
|
|
590
|
+
}
|
|
591
|
+
const healthProbed = probe.healthProbed === true || probe.healthy === true;
|
|
592
|
+
const presenceOnly = cliProbeMode === "presence" && !healthProbed && !probe.healthy;
|
|
593
|
+
if (!probe.healthy && !presenceOnly) {
|
|
594
|
+
return {
|
|
595
|
+
provider: normalizedProviderId,
|
|
596
|
+
displayName,
|
|
597
|
+
known: true,
|
|
598
|
+
configured: true,
|
|
599
|
+
installed: true,
|
|
600
|
+
cliHealthy: false,
|
|
601
|
+
authenticated: "unknown",
|
|
602
|
+
ready: false,
|
|
603
|
+
command: cli.command,
|
|
604
|
+
prefixArgs: cli.prefixArgs,
|
|
605
|
+
installCommand,
|
|
606
|
+
authCommand: config.auth?.note,
|
|
607
|
+
order,
|
|
608
|
+
reasonCode: "cli-unhealthy",
|
|
609
|
+
reason: probe.degradedReason ?? "CLI found but failed health probes"
|
|
610
|
+
};
|
|
611
|
+
}
|
|
612
|
+
const cliHealthy = probe.healthy;
|
|
613
|
+
const presentUnprobed = presenceOnly;
|
|
614
|
+
const sandboxCapability = shouldProbeSandboxCapability(executeTier, options) ? options.probeSandboxCapability ? options.probeSandboxCapability(normalizedProviderId) : probeProviderSandboxCapability(normalizedProviderId, {
|
|
615
|
+
env: options.authProbeEnv
|
|
616
|
+
}) : void 0;
|
|
617
|
+
const sandboxCapable = sandboxCapability?.capable;
|
|
618
|
+
const sandboxReason = sandboxCapability && !sandboxCapability.capable ? formatSandboxCapabilityFailure(sandboxCapability) : void 0;
|
|
619
|
+
const sandboxBlocked = sandboxCapable === false;
|
|
620
|
+
const sandboxDeniedPaths = sandboxCapability?.missing.map((entry) => entry.path);
|
|
621
|
+
const writeBoundary = resolveWriteBoundaryAdvisory(options.authProbeEnv);
|
|
622
|
+
if (sandboxBlocked) {
|
|
623
|
+
return {
|
|
624
|
+
provider: normalizedProviderId,
|
|
625
|
+
displayName,
|
|
626
|
+
known: true,
|
|
627
|
+
configured: true,
|
|
628
|
+
installed: true,
|
|
629
|
+
// Presence-only leaves health unverified; execute probes that reached here were healthy.
|
|
630
|
+
cliHealthy: !presentUnprobed,
|
|
631
|
+
authenticated: "unknown",
|
|
632
|
+
sandboxCapable,
|
|
633
|
+
...sandboxReason ? { sandboxReason } : {},
|
|
634
|
+
...sandboxDeniedPaths && sandboxDeniedPaths.length > 0 ? { sandboxDeniedPaths } : {},
|
|
635
|
+
...writeBoundary ? { writeBoundary } : {},
|
|
636
|
+
ready: false,
|
|
637
|
+
command: cli.command,
|
|
638
|
+
prefixArgs: cli.prefixArgs,
|
|
639
|
+
installCommand,
|
|
640
|
+
authCommand: config.auth?.note,
|
|
641
|
+
order,
|
|
642
|
+
reasonCode: "sandbox-blocked",
|
|
643
|
+
reason: sandboxReason
|
|
644
|
+
};
|
|
645
|
+
}
|
|
646
|
+
const injectedAuthProbe = options.probeAuth;
|
|
647
|
+
const authReadiness = injectedAuthProbe ? { state: await injectedAuthProbe(normalizedProviderId, config) } : await probeProviderAuthReadinessDetailed(normalizedProviderId, config, {
|
|
648
|
+
mode: authProbeMode ?? "passive",
|
|
649
|
+
...options.authProbeEnv ? { env: options.authProbeEnv } : {}
|
|
650
|
+
});
|
|
651
|
+
const rawAuthenticated = authReadiness.state;
|
|
652
|
+
const normalizedAuthenticated = injectedAuthProbe ? rawAuthenticated : normalizePassiveAuthForEnvVarPromotion(
|
|
653
|
+
normalizedProviderId,
|
|
654
|
+
config,
|
|
655
|
+
rawAuthenticated,
|
|
656
|
+
authProbeMode,
|
|
657
|
+
options
|
|
658
|
+
);
|
|
659
|
+
const unverifiedEnvAuth = !injectedAuthProbe && authReadiness.evidence !== "execution" && !isProviderSkipAuthActive(config, options.authProbeEnv) && hasConfiguredEnvVarAuth(config, options.authProbeEnv);
|
|
660
|
+
const authenticated = unverifiedEnvAuth && !(authProbeMode === "active" && normalizedAuthenticated === "no") ? "unknown" : normalizedAuthenticated;
|
|
661
|
+
const readinessNote = resolveEnvVarAuthReadinessPromotion(
|
|
662
|
+
normalizedProviderId,
|
|
663
|
+
config,
|
|
664
|
+
authenticated,
|
|
665
|
+
sandboxBlocked,
|
|
666
|
+
options
|
|
667
|
+
);
|
|
668
|
+
const ready = readinessNote !== void 0 ? setupTier && cliHealthy : authenticated === "yes" && !sandboxBlocked && (cliHealthy || !presentUnprobed);
|
|
669
|
+
const attemptEligible = executeTier && !sandboxBlocked && (authenticated === "unknown" || readinessNote !== void 0) && authenticated !== "no";
|
|
670
|
+
const authReason = formatAuthReadinessReason(
|
|
671
|
+
displayName,
|
|
672
|
+
authenticated,
|
|
673
|
+
authProbeMode,
|
|
674
|
+
authReadiness.reason ?? config.auth?.note
|
|
675
|
+
);
|
|
676
|
+
const authWarning = authenticated === "unknown" ? authProbeMode === "active" ? `${displayName} active auth probe could not verify headless execution; runtime may still fail in the provider CLI.${authReadiness.reason ? ` Detail: ${authReadiness.reason}` : ""}` : "Auth status was not collected by passive readiness checks; runtime will defer to the provider CLI." : void 0;
|
|
677
|
+
const reasonCode = (() => {
|
|
678
|
+
if (ready && readinessNote === void 0) return "ready";
|
|
679
|
+
if (readinessNote !== void 0) return "env-var-auth-assumed";
|
|
680
|
+
if (authenticated === "no") return "auth-missing";
|
|
681
|
+
if (authProbeMode === "active" && authenticated === "unknown") {
|
|
682
|
+
return "auth-active-unverified";
|
|
683
|
+
}
|
|
684
|
+
if (authenticated === "unknown") return "auth-unknown";
|
|
685
|
+
if (presentUnprobed) return "cli-present-unprobed";
|
|
686
|
+
return "ready";
|
|
687
|
+
})();
|
|
688
|
+
return {
|
|
689
|
+
provider: normalizedProviderId,
|
|
690
|
+
displayName,
|
|
691
|
+
known: true,
|
|
692
|
+
configured: true,
|
|
693
|
+
installed: true,
|
|
694
|
+
cliHealthy,
|
|
695
|
+
authenticated,
|
|
696
|
+
...sandboxCapable !== void 0 ? { sandboxCapable } : {},
|
|
697
|
+
...sandboxReason ? { sandboxReason } : {},
|
|
698
|
+
...writeBoundary ? { writeBoundary } : {},
|
|
699
|
+
ready,
|
|
700
|
+
...readinessNote ? { readinessNote } : {},
|
|
701
|
+
...attemptEligible ? { attemptEligible: true } : {},
|
|
702
|
+
...experimental ? { experimental: true } : {},
|
|
703
|
+
command: cli.command,
|
|
704
|
+
prefixArgs: cli.prefixArgs,
|
|
705
|
+
installCommand,
|
|
706
|
+
authCommand: config.auth?.note,
|
|
707
|
+
order,
|
|
708
|
+
reasonCode,
|
|
709
|
+
reason: ready && readinessNote === void 0 ? void 0 : readinessNote ? "Auth assumed from configured env var; not verified for execute-tier readiness." : authReason,
|
|
710
|
+
warning: authWarning
|
|
711
|
+
};
|
|
712
|
+
}
|
|
713
|
+
async function getAllProviderReadiness(options = {}) {
|
|
714
|
+
const providers = (options.providers ?? ProviderRegistry.getEnabledProviders()).filter(
|
|
715
|
+
providerSupportsCli
|
|
716
|
+
);
|
|
717
|
+
const results = await Promise.all(
|
|
718
|
+
providers.map((provider) => getProviderReadiness(provider.id, { ...options, providers }))
|
|
719
|
+
);
|
|
720
|
+
return results.sort((a, b) => a.order - b.order);
|
|
721
|
+
}
|
|
722
|
+
function selectReadyProvider(readiness) {
|
|
723
|
+
const ready = readiness.filter((provider) => provider.ready).sort((a, b) => a.order - b.order);
|
|
724
|
+
if (ready.length === 0) {
|
|
725
|
+
return { kind: "none", candidates: readiness };
|
|
726
|
+
}
|
|
727
|
+
const stable = ready.filter((provider) => !provider.experimental);
|
|
728
|
+
const candidates = stable.length > 0 ? stable : ready;
|
|
729
|
+
if (candidates.length === 1 && candidates[0]) {
|
|
730
|
+
return { kind: "single", provider: candidates[0], candidates };
|
|
731
|
+
}
|
|
732
|
+
return { kind: "multiple", candidates };
|
|
733
|
+
}
|
|
734
|
+
function formatProviderSetupGuidance(readiness) {
|
|
735
|
+
const lines = ["No ready AI provider CLI found.", "", "Install or authenticate one provider:"];
|
|
736
|
+
const candidates = readiness.length > 0 ? readiness : [];
|
|
737
|
+
for (const provider of candidates) {
|
|
738
|
+
const action = provider.installed ? provider.authCommand ?? `Authenticate ${provider.displayName}` : provider.installCommand ?? `Install ${provider.displayName}`;
|
|
739
|
+
lines.push(` ${provider.displayName}: ${action}`);
|
|
740
|
+
}
|
|
741
|
+
lines.push("", "Run poetic provider list after setup completes.");
|
|
742
|
+
return lines.join("\n");
|
|
743
|
+
}
|
|
744
|
+
function formatProviderNotReadyMessage(readiness, options = {}) {
|
|
745
|
+
if (readiness.sandboxCapable === false) {
|
|
746
|
+
const roleSuffix = options.role ? ` (${options.role})` : "";
|
|
747
|
+
const deniedPaths = readiness.sandboxDeniedPaths?.join(", ");
|
|
748
|
+
const pathLine = deniedPaths ? `Denied path(s): ${deniedPaths}.` : void 0;
|
|
749
|
+
const reason2 = readiness.sandboxReason ?? readiness.reason ?? "Required state paths are not writable.";
|
|
750
|
+
return [
|
|
751
|
+
`${readiness.displayName}${roleSuffix} is blocked by sandbox/policy access, not an auth failure.`,
|
|
752
|
+
pathLine,
|
|
753
|
+
reason2,
|
|
754
|
+
"Action: grant write access to the denied path(s) in the effective sandbox, or run outside the inherited sandbox.",
|
|
755
|
+
`Run poetic doctor --provider ${readiness.provider} for execute-tier diagnostics.`
|
|
756
|
+
].filter((line) => Boolean(line)).join("\n");
|
|
757
|
+
}
|
|
758
|
+
const reason = readiness.reason ?? "provider is not ready";
|
|
759
|
+
const action = readiness.installed ? readiness.authCommand ?? `Authenticate ${readiness.displayName}` : readiness.installCommand ?? `Install ${readiness.displayName}`;
|
|
760
|
+
return [
|
|
761
|
+
`Configured provider ${readiness.displayName} is not ready: ${reason}.`,
|
|
762
|
+
`Action: ${action}`,
|
|
763
|
+
"Run poetic provider list after setup completes."
|
|
764
|
+
].join("\n");
|
|
765
|
+
}
|
|
766
|
+
function isSandboxOnlyReadinessBlock(readiness) {
|
|
767
|
+
return readiness.sandboxCapable === false && readiness.installed === true && readiness.cliHealthy === true && readiness.authenticated !== "no";
|
|
768
|
+
}
|
|
769
|
+
function shouldBlockOnProviderReadiness(readiness) {
|
|
770
|
+
if (readiness.ready) {
|
|
771
|
+
return false;
|
|
772
|
+
}
|
|
773
|
+
if (readiness.attemptEligible) {
|
|
774
|
+
return false;
|
|
775
|
+
}
|
|
776
|
+
return true;
|
|
777
|
+
}
|
|
778
|
+
async function assertProviderReady(providerId, options = {}) {
|
|
779
|
+
if (readRawEnv(POETIC_SKIP_READINESS_PREFLIGHT) === "1") {
|
|
780
|
+
return getProviderReadiness(providerId, {
|
|
781
|
+
mode: options.mode ?? "execute",
|
|
782
|
+
probeAuth: async () => "unknown"
|
|
783
|
+
});
|
|
784
|
+
}
|
|
785
|
+
const readiness = await getProviderReadiness(providerId, {
|
|
786
|
+
mode: options.mode ?? "execute",
|
|
787
|
+
probeAuth: async () => "unknown"
|
|
788
|
+
});
|
|
789
|
+
if (shouldBlockOnProviderReadiness(readiness)) {
|
|
790
|
+
throw new ProviderNotReadyError(readiness);
|
|
791
|
+
}
|
|
792
|
+
return readiness;
|
|
793
|
+
}
|
|
794
|
+
function isGateReadyProvider(readiness) {
|
|
795
|
+
if (readiness.ready) return true;
|
|
796
|
+
return readiness.cliHealthy && readiness.readinessNote === "env-var-auth-assumed";
|
|
797
|
+
}
|
|
798
|
+
function buildRemediation(readiness) {
|
|
799
|
+
if (isGateReadyProvider(readiness)) return void 0;
|
|
800
|
+
if (!readiness.configured || !readiness.known) {
|
|
801
|
+
return `${readiness.displayName}: provider is not configured for local CLI use`;
|
|
802
|
+
}
|
|
803
|
+
if (!readiness.installed) {
|
|
804
|
+
return readiness.installCommand ? `${readiness.displayName}: install with \`${readiness.installCommand}\`` : `${readiness.displayName}: install the provider CLI`;
|
|
805
|
+
}
|
|
806
|
+
if (!readiness.cliHealthy && readiness.reasonCode === "cli-unhealthy") {
|
|
807
|
+
return `${readiness.displayName}: CLI is installed but unhealthy${readiness.reason ? ` (${readiness.reason})` : ""}`;
|
|
808
|
+
}
|
|
809
|
+
if (readiness.authenticated === "no") {
|
|
810
|
+
return readiness.authCommand ? `${readiness.displayName}: authenticate with \`${readiness.authCommand}\`` : `${readiness.displayName}: authenticate the provider CLI`;
|
|
811
|
+
}
|
|
812
|
+
if (readiness.authenticated === "unknown") {
|
|
813
|
+
return `${readiness.displayName}: auth not verified; run \`poetic doctor --probe --provider ${readiness.provider}\` or \`poetic provider setup\``;
|
|
814
|
+
}
|
|
815
|
+
return readiness.reason ? `${readiness.displayName}: ${readiness.reason}` : `${readiness.displayName}: not ready`;
|
|
816
|
+
}
|
|
817
|
+
function toSnapshot(readiness, dryRun) {
|
|
818
|
+
const resolved = resolveNamedReadiness(readiness, dryRun);
|
|
819
|
+
const classification = classifyProviderReadiness(readiness, resolved);
|
|
820
|
+
const scope = resolveReadinessScope(readiness, resolved);
|
|
821
|
+
return {
|
|
822
|
+
readiness,
|
|
823
|
+
resolved,
|
|
824
|
+
classification,
|
|
825
|
+
scope,
|
|
826
|
+
parityLabel: resolveProviderParityLabel(readiness, resolved)
|
|
827
|
+
};
|
|
828
|
+
}
|
|
829
|
+
async function collectProviderReadinessGate(options = {}) {
|
|
830
|
+
const baseOptions = options.readinessOptions ?? {
|
|
831
|
+
mode: "setup",
|
|
832
|
+
sandboxProbeMode: "none"
|
|
833
|
+
};
|
|
834
|
+
let readinessList = await getAllProviderReadiness(baseOptions);
|
|
835
|
+
if (options.activeAuthWhenNeeded) {
|
|
836
|
+
readinessList = await Promise.all(
|
|
837
|
+
readinessList.map(async (entry) => {
|
|
838
|
+
if (isGateReadyProvider(entry)) return entry;
|
|
839
|
+
if (!entry.installed) return entry;
|
|
840
|
+
if (entry.authenticated === "no") return entry;
|
|
841
|
+
return getProviderReadiness(entry.provider, {
|
|
842
|
+
...baseOptions,
|
|
843
|
+
mode: baseOptions.mode ?? "execute",
|
|
844
|
+
authProbeMode: "active",
|
|
845
|
+
cliProbeMode: baseOptions.cliProbeMode ?? "execute",
|
|
846
|
+
providers: baseOptions.providers,
|
|
847
|
+
resolveCliCommand: baseOptions.resolveCliCommand,
|
|
848
|
+
probeCli: baseOptions.probeCli,
|
|
849
|
+
authProbeEnv: baseOptions.authProbeEnv,
|
|
850
|
+
probeSandboxCapability: baseOptions.probeSandboxCapability,
|
|
851
|
+
sandboxProbeMode: baseOptions.sandboxProbeMode
|
|
852
|
+
});
|
|
853
|
+
})
|
|
854
|
+
);
|
|
855
|
+
}
|
|
856
|
+
const providers = readinessList.map(
|
|
857
|
+
(entry) => toSnapshot(entry, options.dryRunForProvider?.(entry.provider))
|
|
858
|
+
);
|
|
859
|
+
const readyProviders = providers.filter((entry) => isGateReadyProvider(entry.readiness)).map((entry) => entry.readiness.provider);
|
|
860
|
+
const readyCount = readyProviders.length;
|
|
861
|
+
const gateLabel = readyCount === 0 ? "zero-ready" : readyCount === 1 ? "one-ready" : "multi-ready";
|
|
862
|
+
const requireAtLeastOneReady = options.requireAtLeastOneReady === true;
|
|
863
|
+
const gatePassed = !requireAtLeastOneReady || readyCount > 0;
|
|
864
|
+
const remediations = providers.map((entry) => buildRemediation(entry.readiness)).filter((line) => Boolean(line));
|
|
865
|
+
return {
|
|
866
|
+
providers,
|
|
867
|
+
readyCount,
|
|
868
|
+
readyProviders,
|
|
869
|
+
gatePassed,
|
|
870
|
+
gateLabel,
|
|
871
|
+
remediations
|
|
872
|
+
};
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
export {
|
|
876
|
+
resolveNamedReadiness,
|
|
877
|
+
resolveProviderParityLabel,
|
|
878
|
+
classifyProviderReadiness,
|
|
879
|
+
SETUP_CHECK_READINESS_OPTIONS,
|
|
880
|
+
resolveReadinessScope,
|
|
881
|
+
readinessProbeContextForOptions,
|
|
882
|
+
EXECUTE_CLI_PROBE_OPTIONS,
|
|
883
|
+
readinessProbesForMode,
|
|
884
|
+
ProviderNotReadyError,
|
|
885
|
+
probeProviderCli,
|
|
886
|
+
probeProviderCliPresence,
|
|
887
|
+
probeProviderAuthReadiness,
|
|
888
|
+
getProviderReadiness,
|
|
889
|
+
getAllProviderReadiness,
|
|
890
|
+
selectReadyProvider,
|
|
891
|
+
formatProviderSetupGuidance,
|
|
892
|
+
formatProviderNotReadyMessage,
|
|
893
|
+
isSandboxOnlyReadinessBlock,
|
|
894
|
+
shouldBlockOnProviderReadiness,
|
|
895
|
+
assertProviderReady,
|
|
896
|
+
isGateReadyProvider,
|
|
897
|
+
collectProviderReadinessGate
|
|
898
|
+
};
|
|
899
|
+
//# sourceMappingURL=chunk-AURFMVCD.js.map
|