@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,638 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isTelemetryPersistenceEnabled
|
|
3
|
+
} from "./chunk-H6G7QRMQ.js";
|
|
4
|
+
import {
|
|
5
|
+
TelemetryPathResolver
|
|
6
|
+
} from "./chunk-ZDTGECTN.js";
|
|
7
|
+
import {
|
|
8
|
+
redactPersistedTelemetryValue
|
|
9
|
+
} from "./chunk-6Y5U7UFY.js";
|
|
10
|
+
import {
|
|
11
|
+
getRuntimeEnv
|
|
12
|
+
} from "./chunk-ENRGKNR5.js";
|
|
13
|
+
import {
|
|
14
|
+
ProviderRegistry
|
|
15
|
+
} from "./chunk-AT4TNPWW.js";
|
|
16
|
+
import {
|
|
17
|
+
resolvePoeticRoot
|
|
18
|
+
} from "./chunk-LEIIWPWQ.js";
|
|
19
|
+
import {
|
|
20
|
+
POETIC_ROUTING_HISTORY_DB,
|
|
21
|
+
POETIC_TELEMETRY_DIR,
|
|
22
|
+
readEnv
|
|
23
|
+
} from "./chunk-5DLKYTQX.js";
|
|
24
|
+
|
|
25
|
+
// src/telemetry/routing-history-store.ts
|
|
26
|
+
import { existsSync, mkdirSync } from "fs";
|
|
27
|
+
import { dirname, join } from "path";
|
|
28
|
+
import Database from "better-sqlite3";
|
|
29
|
+
var SAFE_SQL_IDENTIFIER = /^[A-Za-z_][A-Za-z0-9_]*$/u;
|
|
30
|
+
var SAFE_COLUMN_DEFINITION = /^(TEXT|INTEGER|REAL|BLOB|NUMERIC)$/iu;
|
|
31
|
+
function validateSqlIdentifier(value, label) {
|
|
32
|
+
if (!SAFE_SQL_IDENTIFIER.test(value)) {
|
|
33
|
+
throw new Error(`Invalid SQL ${label}: ${value}`);
|
|
34
|
+
}
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
function validateColumnDefinition(value) {
|
|
38
|
+
if (!SAFE_COLUMN_DEFINITION.test(value)) {
|
|
39
|
+
throw new Error(`Invalid SQL column definition: ${value}`);
|
|
40
|
+
}
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
function resolveOutcomeQuality(qualityScore, qualityProvenance) {
|
|
44
|
+
if (qualityProvenance === "absent") {
|
|
45
|
+
return { qualityScore: void 0, qualityProvenance: "absent" };
|
|
46
|
+
}
|
|
47
|
+
if (qualityProvenance === "unknown") {
|
|
48
|
+
return typeof qualityScore === "number" && Number.isFinite(qualityScore) ? { qualityScore, qualityProvenance: "unknown" } : { qualityScore: void 0, qualityProvenance: "absent" };
|
|
49
|
+
}
|
|
50
|
+
if (typeof qualityScore === "number" && Number.isFinite(qualityScore)) {
|
|
51
|
+
return { qualityScore, qualityProvenance: "judged" };
|
|
52
|
+
}
|
|
53
|
+
return { qualityScore: void 0, qualityProvenance: "absent" };
|
|
54
|
+
}
|
|
55
|
+
var RoutingHistoryStore = class {
|
|
56
|
+
db = null;
|
|
57
|
+
dbPath;
|
|
58
|
+
isMemory;
|
|
59
|
+
constructor(dbPath = ":memory:") {
|
|
60
|
+
this.dbPath = dbPath;
|
|
61
|
+
this.isMemory = dbPath === ":memory:";
|
|
62
|
+
this.initialize();
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Initialize database and schema
|
|
66
|
+
*/
|
|
67
|
+
initialize() {
|
|
68
|
+
if (!isTelemetryPersistenceEnabled()) {
|
|
69
|
+
this.db = null;
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
if (!this.isMemory) {
|
|
74
|
+
const dir = dirname(this.dbPath);
|
|
75
|
+
if (!existsSync(dir)) {
|
|
76
|
+
mkdirSync(dir, { recursive: true });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
this.db = new Database(this.dbPath);
|
|
80
|
+
if (this.db) {
|
|
81
|
+
this.db.pragma("journal_mode = WAL");
|
|
82
|
+
this.db.pragma("foreign_keys = ON");
|
|
83
|
+
}
|
|
84
|
+
this.createSchema();
|
|
85
|
+
} catch (error) {
|
|
86
|
+
console.warn(
|
|
87
|
+
"[RoutingHistoryStore] Failed to initialize SQLite, falling back to no-op mode:",
|
|
88
|
+
error
|
|
89
|
+
);
|
|
90
|
+
this.db = null;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Create database schema
|
|
95
|
+
*/
|
|
96
|
+
createSchema() {
|
|
97
|
+
if (!this.db) return;
|
|
98
|
+
this.db.exec(`
|
|
99
|
+
CREATE TABLE IF NOT EXISTS routing_events (
|
|
100
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
101
|
+
type TEXT NOT NULL,
|
|
102
|
+
timestamp INTEGER NOT NULL,
|
|
103
|
+
provider TEXT,
|
|
104
|
+
model TEXT,
|
|
105
|
+
domain TEXT,
|
|
106
|
+
payload TEXT NOT NULL,
|
|
107
|
+
created_at TEXT DEFAULT CURRENT_TIMESTAMP
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
CREATE TABLE IF NOT EXISTS routing_outcomes (
|
|
111
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
112
|
+
routing_id TEXT NOT NULL,
|
|
113
|
+
provider TEXT NOT NULL,
|
|
114
|
+
model TEXT,
|
|
115
|
+
domain TEXT,
|
|
116
|
+
success INTEGER NOT NULL,
|
|
117
|
+
quality_score REAL,
|
|
118
|
+
quality_provenance TEXT,
|
|
119
|
+
quality_source TEXT,
|
|
120
|
+
duration_ms REAL,
|
|
121
|
+
token_cost REAL,
|
|
122
|
+
timestamp INTEGER NOT NULL,
|
|
123
|
+
created_at TEXT DEFAULT CURRENT_TIMESTAMP
|
|
124
|
+
);
|
|
125
|
+
`);
|
|
126
|
+
this.ensureColumnExists("routing_events", "model", "TEXT");
|
|
127
|
+
this.ensureColumnExists("routing_outcomes", "model", "TEXT");
|
|
128
|
+
this.ensureColumnExists("routing_outcomes", "quality_provenance", "TEXT");
|
|
129
|
+
this.ensureColumnExists("routing_outcomes", "quality_source", "TEXT");
|
|
130
|
+
this.db.exec(`
|
|
131
|
+
UPDATE routing_outcomes
|
|
132
|
+
SET quality_provenance = CASE
|
|
133
|
+
WHEN quality_score IS NULL THEN 'absent'
|
|
134
|
+
ELSE 'unknown'
|
|
135
|
+
END
|
|
136
|
+
WHERE quality_provenance IS NULL;
|
|
137
|
+
`);
|
|
138
|
+
this.db.exec(`
|
|
139
|
+
CREATE INDEX IF NOT EXISTS idx_outcomes_routing_id ON routing_outcomes(routing_id);
|
|
140
|
+
CREATE INDEX IF NOT EXISTS idx_outcomes_provider_model ON routing_outcomes(provider, model);
|
|
141
|
+
CREATE INDEX IF NOT EXISTS idx_outcomes_provider ON routing_outcomes(provider);
|
|
142
|
+
CREATE INDEX IF NOT EXISTS idx_outcomes_domain ON routing_outcomes(domain);
|
|
143
|
+
CREATE INDEX IF NOT EXISTS idx_outcomes_timestamp ON routing_outcomes(timestamp);
|
|
144
|
+
CREATE INDEX IF NOT EXISTS idx_events_provider_model ON routing_events(provider, model);
|
|
145
|
+
CREATE INDEX IF NOT EXISTS idx_events_type ON routing_events(type);
|
|
146
|
+
CREATE INDEX IF NOT EXISTS idx_events_timestamp ON routing_events(timestamp);
|
|
147
|
+
`);
|
|
148
|
+
}
|
|
149
|
+
ensureColumnExists(tableName, columnName, columnDef) {
|
|
150
|
+
if (!this.db) return;
|
|
151
|
+
const safeTableName = validateSqlIdentifier(tableName, "table name");
|
|
152
|
+
const safeColumnName = validateSqlIdentifier(columnName, "column name");
|
|
153
|
+
const safeColumnDef = validateColumnDefinition(columnDef);
|
|
154
|
+
try {
|
|
155
|
+
const rows = this.db.prepare(`PRAGMA table_info(${safeTableName})`).all();
|
|
156
|
+
const hasColumn = rows.some((row) => row.name === safeColumnName);
|
|
157
|
+
if (!hasColumn) {
|
|
158
|
+
this.db.exec(`ALTER TABLE ${safeTableName} ADD COLUMN ${safeColumnName} ${safeColumnDef}`);
|
|
159
|
+
}
|
|
160
|
+
} catch (error) {
|
|
161
|
+
console.warn(
|
|
162
|
+
`[RoutingHistoryStore] Failed to ensure column ${tableName}.${columnName}:`,
|
|
163
|
+
error
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Persist a routing telemetry event
|
|
169
|
+
*/
|
|
170
|
+
persistEvent(event) {
|
|
171
|
+
if (!this.db) return;
|
|
172
|
+
try {
|
|
173
|
+
const stmt = this.db.prepare(`
|
|
174
|
+
INSERT INTO routing_events (type, timestamp, provider, model, domain, payload)
|
|
175
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
176
|
+
`);
|
|
177
|
+
const timestamp = new Date(event.timestamp).getTime();
|
|
178
|
+
const provider = "provider" in event ? event.provider : null;
|
|
179
|
+
const model = "model" in event && typeof event.model === "string" ? event.model : null;
|
|
180
|
+
const domain = "domain" in event ? event.domain : null;
|
|
181
|
+
const payload = JSON.stringify(redactPersistedTelemetryValue(event));
|
|
182
|
+
stmt.run(event.type, timestamp, provider, model, domain, payload);
|
|
183
|
+
} catch (error) {
|
|
184
|
+
console.warn("[RoutingHistoryStore] Failed to persist event:", error);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Record a routing outcome (success/failure with quality score).
|
|
189
|
+
* Quality is normalized via resolveOutcomeQuality so non-finite values and
|
|
190
|
+
* explicit `qualityProvenance: 'absent'` never become judged quality samples;
|
|
191
|
+
* operational success is independent.
|
|
192
|
+
*/
|
|
193
|
+
recordOutcome(outcome) {
|
|
194
|
+
if (!this.db) return;
|
|
195
|
+
try {
|
|
196
|
+
const { qualityScore, qualityProvenance } = resolveOutcomeQuality(
|
|
197
|
+
outcome.qualityScore,
|
|
198
|
+
outcome.qualityProvenance
|
|
199
|
+
);
|
|
200
|
+
const existing = this.db.prepare("SELECT id FROM routing_outcomes WHERE routing_id = ? ORDER BY id DESC LIMIT 1").get(outcome.routingId);
|
|
201
|
+
const values = [
|
|
202
|
+
outcome.provider,
|
|
203
|
+
outcome.model ?? null,
|
|
204
|
+
outcome.domain,
|
|
205
|
+
outcome.success ? 1 : 0,
|
|
206
|
+
qualityScore ?? null,
|
|
207
|
+
qualityProvenance,
|
|
208
|
+
outcome.qualitySource ?? null,
|
|
209
|
+
outcome.duration ?? null,
|
|
210
|
+
outcome.tokenCost ?? null,
|
|
211
|
+
outcome.timestamp
|
|
212
|
+
];
|
|
213
|
+
if (existing) {
|
|
214
|
+
this.db.prepare(`
|
|
215
|
+
UPDATE routing_outcomes
|
|
216
|
+
SET provider = ?, model = ?, domain = ?, success = ?, quality_score = ?,
|
|
217
|
+
quality_provenance = ?, quality_source = ?, duration_ms = ?, token_cost = ?,
|
|
218
|
+
timestamp = ?
|
|
219
|
+
WHERE id = ?
|
|
220
|
+
`).run(...values, existing.id);
|
|
221
|
+
} else {
|
|
222
|
+
this.db.prepare(`
|
|
223
|
+
INSERT INTO routing_outcomes (
|
|
224
|
+
routing_id, provider, model, domain, success, quality_score,
|
|
225
|
+
quality_provenance, quality_source, duration_ms, token_cost, timestamp
|
|
226
|
+
)
|
|
227
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
228
|
+
`).run(outcome.routingId, ...values);
|
|
229
|
+
}
|
|
230
|
+
} catch (error) {
|
|
231
|
+
console.warn("[RoutingHistoryStore] Failed to record outcome:", error);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Get provider success rate (0-1) for a domain within a time window
|
|
236
|
+
*/
|
|
237
|
+
getProviderSuccessRate(providerId, domain, windowDays = 30, model) {
|
|
238
|
+
if (!this.db) return 0.5;
|
|
239
|
+
try {
|
|
240
|
+
const cutoffTime = Date.now() - windowDays * 24 * 60 * 60 * 1e3;
|
|
241
|
+
let query = `
|
|
242
|
+
SELECT AVG(success) as success_rate
|
|
243
|
+
FROM routing_outcomes
|
|
244
|
+
WHERE provider = ? AND timestamp >= ?
|
|
245
|
+
AND id = (SELECT MAX(latest.id) FROM routing_outcomes latest WHERE latest.routing_id = routing_outcomes.routing_id)
|
|
246
|
+
`;
|
|
247
|
+
const params = [providerId, cutoffTime];
|
|
248
|
+
if (model) {
|
|
249
|
+
query += " AND model = ?";
|
|
250
|
+
params.push(model);
|
|
251
|
+
}
|
|
252
|
+
if (domain) {
|
|
253
|
+
query += " AND domain = ?";
|
|
254
|
+
params.push(domain);
|
|
255
|
+
}
|
|
256
|
+
const result = this.db.prepare(query).get(...params);
|
|
257
|
+
return result?.success_rate ?? 0.5;
|
|
258
|
+
} catch (error) {
|
|
259
|
+
console.warn("[RoutingHistoryStore] Failed to get success rate:", error);
|
|
260
|
+
return 0.5;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Get provider average quality score (0-100) for a domain within a time window.
|
|
265
|
+
* Returns null when no judged quality samples exist — never a synthetic default
|
|
266
|
+
* (e.g. 50) that would pretend quality was observed.
|
|
267
|
+
*/
|
|
268
|
+
getProviderAverageScore(providerId, domain, windowDays = 30, model) {
|
|
269
|
+
if (!this.db) return null;
|
|
270
|
+
try {
|
|
271
|
+
const cutoffTime = Date.now() - windowDays * 24 * 60 * 60 * 1e3;
|
|
272
|
+
let query = `
|
|
273
|
+
SELECT AVG(quality_score) as avg_score
|
|
274
|
+
FROM routing_outcomes
|
|
275
|
+
WHERE provider = ? AND timestamp >= ?
|
|
276
|
+
AND quality_provenance = 'judged' AND quality_score IS NOT NULL
|
|
277
|
+
AND id = (SELECT MAX(latest.id) FROM routing_outcomes latest WHERE latest.routing_id = routing_outcomes.routing_id)
|
|
278
|
+
`;
|
|
279
|
+
const params = [providerId, cutoffTime];
|
|
280
|
+
if (model) {
|
|
281
|
+
query += " AND model = ?";
|
|
282
|
+
params.push(model);
|
|
283
|
+
}
|
|
284
|
+
if (domain) {
|
|
285
|
+
query += " AND domain = ?";
|
|
286
|
+
params.push(domain);
|
|
287
|
+
}
|
|
288
|
+
const result = this.db.prepare(query).get(...params);
|
|
289
|
+
const avg = result?.avg_score;
|
|
290
|
+
return typeof avg === "number" && Number.isFinite(avg) ? avg : null;
|
|
291
|
+
} catch (error) {
|
|
292
|
+
console.warn("[RoutingHistoryStore] Failed to get average score:", error);
|
|
293
|
+
return null;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Get operational sample size for a provider/domain combination
|
|
298
|
+
* (all outcomes, with or without judged quality).
|
|
299
|
+
*/
|
|
300
|
+
getSampleSize(providerId, domain, windowDays = 30, model) {
|
|
301
|
+
if (!this.db) return 0;
|
|
302
|
+
try {
|
|
303
|
+
const cutoffTime = Date.now() - windowDays * 24 * 60 * 60 * 1e3;
|
|
304
|
+
let query = `
|
|
305
|
+
SELECT COUNT(*) as count
|
|
306
|
+
FROM routing_outcomes
|
|
307
|
+
WHERE provider = ? AND timestamp >= ?
|
|
308
|
+
AND id = (SELECT MAX(latest.id) FROM routing_outcomes latest WHERE latest.routing_id = routing_outcomes.routing_id)
|
|
309
|
+
`;
|
|
310
|
+
const params = [providerId, cutoffTime];
|
|
311
|
+
if (model) {
|
|
312
|
+
query += " AND model = ?";
|
|
313
|
+
params.push(model);
|
|
314
|
+
}
|
|
315
|
+
if (domain) {
|
|
316
|
+
query += " AND domain = ?";
|
|
317
|
+
params.push(domain);
|
|
318
|
+
}
|
|
319
|
+
const result = this.db.prepare(query).get(...params);
|
|
320
|
+
return result?.count ?? 0;
|
|
321
|
+
} catch (error) {
|
|
322
|
+
console.warn("[RoutingHistoryStore] Failed to get sample size:", error);
|
|
323
|
+
return 0;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Get quality-sample size: only outcomes with a real judged quality_score.
|
|
328
|
+
* Missing quality must not inflate quality confidence, averages, or rankings.
|
|
329
|
+
*/
|
|
330
|
+
getQualitySampleSize(providerId, domain, windowDays = 30, model) {
|
|
331
|
+
if (!this.db) return 0;
|
|
332
|
+
try {
|
|
333
|
+
const cutoffTime = Date.now() - windowDays * 24 * 60 * 60 * 1e3;
|
|
334
|
+
let query = `
|
|
335
|
+
SELECT COUNT(*) as count
|
|
336
|
+
FROM routing_outcomes
|
|
337
|
+
WHERE provider = ? AND timestamp >= ?
|
|
338
|
+
AND quality_provenance = 'judged' AND quality_score IS NOT NULL
|
|
339
|
+
AND id = (SELECT MAX(latest.id) FROM routing_outcomes latest WHERE latest.routing_id = routing_outcomes.routing_id)
|
|
340
|
+
`;
|
|
341
|
+
const params = [providerId, cutoffTime];
|
|
342
|
+
if (model) {
|
|
343
|
+
query += " AND model = ?";
|
|
344
|
+
params.push(model);
|
|
345
|
+
}
|
|
346
|
+
if (domain) {
|
|
347
|
+
query += " AND domain = ?";
|
|
348
|
+
params.push(domain);
|
|
349
|
+
}
|
|
350
|
+
const result = this.db.prepare(query).get(...params);
|
|
351
|
+
return result?.count ?? 0;
|
|
352
|
+
} catch (error) {
|
|
353
|
+
console.warn("[RoutingHistoryStore] Failed to get quality sample size:", error);
|
|
354
|
+
return 0;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Get domain provider rankings sorted by performance
|
|
359
|
+
*/
|
|
360
|
+
getDomainProviderRankings(domain, windowDays = 30) {
|
|
361
|
+
if (!this.db) return [];
|
|
362
|
+
try {
|
|
363
|
+
const cutoffTime = Date.now() - windowDays * 24 * 60 * 60 * 1e3;
|
|
364
|
+
const query = `
|
|
365
|
+
SELECT
|
|
366
|
+
provider,
|
|
367
|
+
AVG(quality_score) as score,
|
|
368
|
+
COUNT(*) as count
|
|
369
|
+
FROM routing_outcomes
|
|
370
|
+
WHERE domain = ? AND timestamp >= ?
|
|
371
|
+
AND quality_provenance = 'judged' AND quality_score IS NOT NULL
|
|
372
|
+
AND id = (SELECT MAX(latest.id) FROM routing_outcomes latest WHERE latest.routing_id = routing_outcomes.routing_id)
|
|
373
|
+
GROUP BY provider
|
|
374
|
+
ORDER BY score DESC
|
|
375
|
+
`;
|
|
376
|
+
const results = this.db.prepare(query).all(domain, cutoffTime);
|
|
377
|
+
return results;
|
|
378
|
+
} catch (error) {
|
|
379
|
+
console.warn("[RoutingHistoryStore] Failed to get provider rankings:", error);
|
|
380
|
+
return [];
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Prune old records (older than N days)
|
|
385
|
+
* Returns number of records deleted
|
|
386
|
+
*/
|
|
387
|
+
pruneOlderThan(days) {
|
|
388
|
+
if (!this.db) return 0;
|
|
389
|
+
try {
|
|
390
|
+
const cutoffTime = Date.now() - days * 24 * 60 * 60 * 1e3;
|
|
391
|
+
const eventsDeleted = this.db.prepare("DELETE FROM routing_events WHERE timestamp < ?").run(cutoffTime);
|
|
392
|
+
const outcomesDeleted = this.db.prepare("DELETE FROM routing_outcomes WHERE timestamp < ?").run(cutoffTime);
|
|
393
|
+
return (eventsDeleted.changes ?? 0) + (outcomesDeleted.changes ?? 0);
|
|
394
|
+
} catch (error) {
|
|
395
|
+
console.warn("[RoutingHistoryStore] Failed to prune old records:", error);
|
|
396
|
+
return 0;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Get store statistics
|
|
401
|
+
*/
|
|
402
|
+
getStats() {
|
|
403
|
+
if (!this.db) {
|
|
404
|
+
return {
|
|
405
|
+
totalEvents: 0,
|
|
406
|
+
oldestEvent: null,
|
|
407
|
+
providers: []
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
try {
|
|
411
|
+
const totalEvents = this.db.prepare("SELECT COUNT(*) as count FROM routing_events").get().count;
|
|
412
|
+
const oldestEventResult = this.db.prepare("SELECT MIN(timestamp) as oldest FROM routing_events").get();
|
|
413
|
+
const oldestEvent = oldestEventResult.oldest ? new Date(oldestEventResult.oldest) : null;
|
|
414
|
+
const providerResults = this.db.prepare(`
|
|
415
|
+
SELECT DISTINCT provider
|
|
416
|
+
FROM routing_outcomes
|
|
417
|
+
WHERE id = (
|
|
418
|
+
SELECT MAX(latest.id)
|
|
419
|
+
FROM routing_outcomes latest
|
|
420
|
+
WHERE latest.routing_id = routing_outcomes.routing_id
|
|
421
|
+
)
|
|
422
|
+
`).all();
|
|
423
|
+
const providers = providerResults.map((r) => r.provider);
|
|
424
|
+
return {
|
|
425
|
+
totalEvents,
|
|
426
|
+
oldestEvent,
|
|
427
|
+
providers
|
|
428
|
+
};
|
|
429
|
+
} catch (error) {
|
|
430
|
+
console.warn("[RoutingHistoryStore] Failed to get stats:", error);
|
|
431
|
+
return {
|
|
432
|
+
totalEvents: 0,
|
|
433
|
+
oldestEvent: null,
|
|
434
|
+
providers: []
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Close database connection
|
|
440
|
+
*/
|
|
441
|
+
close() {
|
|
442
|
+
if (this.db) {
|
|
443
|
+
try {
|
|
444
|
+
this.db.close();
|
|
445
|
+
} catch (error) {
|
|
446
|
+
console.warn("[RoutingHistoryStore] Failed to close database:", error);
|
|
447
|
+
}
|
|
448
|
+
this.db = null;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
};
|
|
452
|
+
var SqliteRoutingTelemetryCollector = class {
|
|
453
|
+
constructor(store) {
|
|
454
|
+
this.store = store;
|
|
455
|
+
}
|
|
456
|
+
store;
|
|
457
|
+
async emitEvent(event) {
|
|
458
|
+
this.store.persistEvent(event);
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* @internal Not yet implemented. Returns zeroed defaults rather than querying
|
|
462
|
+
* the SQLite store; no public CLI surface should present its result as real
|
|
463
|
+
* routing statistics.
|
|
464
|
+
*/
|
|
465
|
+
async getRoutingStats(_startTime, _endTime) {
|
|
466
|
+
return {
|
|
467
|
+
totalRoutings: 0,
|
|
468
|
+
averageAnalysisTime: 0,
|
|
469
|
+
averageRoutingTime: 0,
|
|
470
|
+
providerUsageCounts: buildZeroedProviderMap(),
|
|
471
|
+
successRate: null,
|
|
472
|
+
cacheHitRate: null
|
|
473
|
+
};
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* @internal Not yet implemented. Returns zeroed per-provider defaults rather
|
|
477
|
+
* than querying the SQLite store; no public CLI surface should present its
|
|
478
|
+
* result as real provider-performance analytics.
|
|
479
|
+
*/
|
|
480
|
+
async getProviderPerformance(_startTime, _endTime) {
|
|
481
|
+
const emptyMetrics = {
|
|
482
|
+
assignments: 0,
|
|
483
|
+
averageConfidence: 0,
|
|
484
|
+
successRate: null,
|
|
485
|
+
averageRoutingTime: 0,
|
|
486
|
+
domainDistribution: {}
|
|
487
|
+
};
|
|
488
|
+
const result = {};
|
|
489
|
+
for (const providerId of resolveRegistryProviderIds()) {
|
|
490
|
+
result[providerId] = { ...emptyMetrics };
|
|
491
|
+
}
|
|
492
|
+
return result;
|
|
493
|
+
}
|
|
494
|
+
};
|
|
495
|
+
function resolveRegistryProviderIds() {
|
|
496
|
+
try {
|
|
497
|
+
return ProviderRegistry.getAllProviderIds();
|
|
498
|
+
} catch {
|
|
499
|
+
return [];
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
function buildZeroedProviderMap() {
|
|
503
|
+
const map = {};
|
|
504
|
+
for (const providerId of resolveRegistryProviderIds()) {
|
|
505
|
+
map[providerId] = 0;
|
|
506
|
+
}
|
|
507
|
+
return map;
|
|
508
|
+
}
|
|
509
|
+
var globalRoutingHistoryStores = /* @__PURE__ */ new Map();
|
|
510
|
+
function getGlobalRoutingHistoryStore() {
|
|
511
|
+
const configuredPath = readEnv(POETIC_ROUTING_HISTORY_DB).value;
|
|
512
|
+
const dbPath = configuredPath ? configuredPath : (() => {
|
|
513
|
+
const poeticDir = getRuntimeEnv(POETIC_TELEMETRY_DIR.name) ?? join(resolvePoeticRoot(process.cwd()), ".poetic");
|
|
514
|
+
const resolver = TelemetryPathResolver.getInstance();
|
|
515
|
+
return join(resolver.resolveDbDir(poeticDir), "routing-history.db");
|
|
516
|
+
})();
|
|
517
|
+
const existing = globalRoutingHistoryStores.get(dbPath);
|
|
518
|
+
if (existing) {
|
|
519
|
+
return existing;
|
|
520
|
+
}
|
|
521
|
+
const store = new RoutingHistoryStore(dbPath);
|
|
522
|
+
globalRoutingHistoryStores.set(dbPath, store);
|
|
523
|
+
return store;
|
|
524
|
+
}
|
|
525
|
+
var ROUTING_SAMPLE_FLOOR = 2;
|
|
526
|
+
var ROUTING_FULL_CONFIDENCE_SAMPLES = 20;
|
|
527
|
+
function computeHistoricalAdjustment(providerId, domain, store, windowDays = 30, model) {
|
|
528
|
+
if (model) {
|
|
529
|
+
return computeHistoricalAdjustmentWithModelFallback(
|
|
530
|
+
providerId,
|
|
531
|
+
domain,
|
|
532
|
+
store,
|
|
533
|
+
windowDays,
|
|
534
|
+
model
|
|
535
|
+
);
|
|
536
|
+
}
|
|
537
|
+
return computeAdjustmentFromSamples(providerId, domain, store, windowDays, void 0);
|
|
538
|
+
}
|
|
539
|
+
function computeAdjustmentFromSamples(providerId, domain, store, windowDays, model) {
|
|
540
|
+
const sampleSize = store.getSampleSize(providerId, domain, windowDays, model);
|
|
541
|
+
const qualitySampleSize = store.getQualitySampleSize(providerId, domain, windowDays, model);
|
|
542
|
+
if (sampleSize < ROUTING_SAMPLE_FLOOR) {
|
|
543
|
+
return {
|
|
544
|
+
adjustment: 0,
|
|
545
|
+
confidence: 0,
|
|
546
|
+
sampleSize,
|
|
547
|
+
reason: "insufficient data"
|
|
548
|
+
};
|
|
549
|
+
}
|
|
550
|
+
const successRate = store.getProviderSuccessRate(providerId, domain, windowDays, model);
|
|
551
|
+
const qualityScore = store.getProviderAverageScore(providerId, domain, windowDays, model);
|
|
552
|
+
const hasQualitySamples = qualityScore != null && qualitySampleSize > 0;
|
|
553
|
+
const successConfidence = Math.min(1, sampleSize / ROUTING_FULL_CONFIDENCE_SAMPLES);
|
|
554
|
+
const qualityConfidence = hasQualitySamples ? Math.min(1, qualitySampleSize / ROUTING_FULL_CONFIDENCE_SAMPLES) : 0;
|
|
555
|
+
const confidence = hasQualitySamples ? successConfidence * 0.7 + qualityConfidence * 0.3 : successConfidence;
|
|
556
|
+
const successAdjustment = (successRate - 0.5) * 30;
|
|
557
|
+
const qualityAdjustment = hasQualitySamples ? (qualityScore - 50) / 50 * 15 : 0;
|
|
558
|
+
const scaledAdjustment = hasQualitySamples ? successAdjustment * 0.7 * successConfidence + qualityAdjustment * 0.3 * qualityConfidence : successAdjustment * successConfidence;
|
|
559
|
+
const adjustment = Math.max(-15, Math.min(15, scaledAdjustment));
|
|
560
|
+
const reasons = [];
|
|
561
|
+
if (successRate < 0.4) {
|
|
562
|
+
reasons.push("low success rate");
|
|
563
|
+
} else if (successRate > 0.6) {
|
|
564
|
+
reasons.push("high success rate");
|
|
565
|
+
}
|
|
566
|
+
if (hasQualitySamples) {
|
|
567
|
+
if (qualityScore < 40) {
|
|
568
|
+
reasons.push("low quality");
|
|
569
|
+
} else if (qualityScore > 60) {
|
|
570
|
+
reasons.push("high quality");
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
if (sampleSize < ROUTING_FULL_CONFIDENCE_SAMPLES) {
|
|
574
|
+
reasons.push("limited samples");
|
|
575
|
+
}
|
|
576
|
+
const reason = reasons.length > 0 ? reasons.join(", ") : hasQualitySamples ? `success=${(successRate * 100).toFixed(0)}%, quality=${qualityScore.toFixed(0)}` : `success=${(successRate * 100).toFixed(0)}% (no quality samples)`;
|
|
577
|
+
return { adjustment, confidence, sampleSize, reason };
|
|
578
|
+
}
|
|
579
|
+
function computeHistoricalAdjustmentWithModelFallback(providerId, domain, store, windowDays, model) {
|
|
580
|
+
const modelCount = store.getSampleSize(providerId, domain, windowDays, model);
|
|
581
|
+
const providerCount = store.getSampleSize(providerId, domain, windowDays, void 0);
|
|
582
|
+
const modelAboveFloor = modelCount >= ROUTING_SAMPLE_FLOOR;
|
|
583
|
+
const providerAboveFloor = providerCount >= ROUTING_SAMPLE_FLOOR;
|
|
584
|
+
if (!modelAboveFloor && !providerAboveFloor) {
|
|
585
|
+
return {
|
|
586
|
+
adjustment: 0,
|
|
587
|
+
confidence: 0,
|
|
588
|
+
sampleSize: modelCount,
|
|
589
|
+
reason: "insufficient data"
|
|
590
|
+
};
|
|
591
|
+
}
|
|
592
|
+
if (modelAboveFloor && !providerAboveFloor) {
|
|
593
|
+
return computeAdjustmentFromSamples(providerId, domain, store, windowDays, model);
|
|
594
|
+
}
|
|
595
|
+
if (!modelAboveFloor && providerAboveFloor) {
|
|
596
|
+
const base = computeAdjustmentFromSamples(providerId, domain, store, windowDays, void 0);
|
|
597
|
+
return {
|
|
598
|
+
...base,
|
|
599
|
+
sampleSize: modelCount,
|
|
600
|
+
reason: `${base.reason} (provider fallback, n=${providerCount})`
|
|
601
|
+
};
|
|
602
|
+
}
|
|
603
|
+
const modelResult = computeAdjustmentFromSamples(providerId, domain, store, windowDays, model);
|
|
604
|
+
const providerResult = computeAdjustmentFromSamples(
|
|
605
|
+
providerId,
|
|
606
|
+
domain,
|
|
607
|
+
store,
|
|
608
|
+
windowDays,
|
|
609
|
+
void 0
|
|
610
|
+
);
|
|
611
|
+
const modelWeight = Math.min(0.8, modelCount / providerCount);
|
|
612
|
+
const providerWeight = 1 - modelWeight;
|
|
613
|
+
const blendedAdjustment = Math.max(
|
|
614
|
+
-15,
|
|
615
|
+
Math.min(15, modelResult.adjustment * modelWeight + providerResult.adjustment * providerWeight)
|
|
616
|
+
);
|
|
617
|
+
const blendedConfidence = Math.min(
|
|
618
|
+
1,
|
|
619
|
+
modelResult.confidence * modelWeight + providerResult.confidence * providerWeight
|
|
620
|
+
);
|
|
621
|
+
return {
|
|
622
|
+
adjustment: blendedAdjustment,
|
|
623
|
+
confidence: blendedConfidence,
|
|
624
|
+
sampleSize: modelCount,
|
|
625
|
+
reason: `${modelResult.reason} (model+provider blend, mw=${modelWeight.toFixed(2)})`
|
|
626
|
+
};
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
export {
|
|
630
|
+
resolveOutcomeQuality,
|
|
631
|
+
RoutingHistoryStore,
|
|
632
|
+
SqliteRoutingTelemetryCollector,
|
|
633
|
+
getGlobalRoutingHistoryStore,
|
|
634
|
+
ROUTING_SAMPLE_FLOOR,
|
|
635
|
+
ROUTING_FULL_CONFIDENCE_SAMPLES,
|
|
636
|
+
computeHistoricalAdjustment
|
|
637
|
+
};
|
|
638
|
+
//# sourceMappingURL=chunk-RGROYC2G.js.map
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getProjectDataDir,
|
|
3
|
+
getStableRepoIdentity
|
|
4
|
+
} from "./chunk-UUH2RVKS.js";
|
|
5
|
+
|
|
6
|
+
// src/core/config/project-runtime-paths.ts
|
|
7
|
+
import fs from "fs";
|
|
8
|
+
import path from "path";
|
|
9
|
+
function repoRootFromPoeticDir(poeticDir) {
|
|
10
|
+
const resolved = path.resolve(poeticDir);
|
|
11
|
+
return path.basename(resolved) === ".poetic" ? path.dirname(resolved) : resolved;
|
|
12
|
+
}
|
|
13
|
+
function getRepoDataMigrationMarkerPath(poeticDir) {
|
|
14
|
+
return path.join(repoRootFromPoeticDir(poeticDir), ".poetic", "state", "data-migration.json");
|
|
15
|
+
}
|
|
16
|
+
function getSharedDataMigrationMarkerPath(poeticDir) {
|
|
17
|
+
const repoRoot = repoRootFromPoeticDir(poeticDir);
|
|
18
|
+
return path.join(getProjectDataDir(repoRoot), "state", "data-migration.json");
|
|
19
|
+
}
|
|
20
|
+
function readMarker(markerPath) {
|
|
21
|
+
try {
|
|
22
|
+
const parsed = JSON.parse(
|
|
23
|
+
fs.readFileSync(markerPath, "utf8")
|
|
24
|
+
);
|
|
25
|
+
if (parsed.version === 1 && typeof parsed.migratedAt === "string" && typeof parsed.repoRoot === "string" && typeof parsed.projectId === "string" && typeof parsed.globalTelemetryDir === "string" && typeof parsed.projectDataDir === "string") {
|
|
26
|
+
return parsed;
|
|
27
|
+
}
|
|
28
|
+
} catch {
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
function isSameDirectory(left, right) {
|
|
33
|
+
const resolvedLeft = path.resolve(left);
|
|
34
|
+
const resolvedRight = path.resolve(right);
|
|
35
|
+
if (resolvedLeft === resolvedRight) return true;
|
|
36
|
+
try {
|
|
37
|
+
return fs.realpathSync(resolvedLeft) === fs.realpathSync(resolvedRight);
|
|
38
|
+
} catch {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function readProjectDataMigrationMarker(poeticDir) {
|
|
43
|
+
const repoRoot = repoRootFromPoeticDir(poeticDir);
|
|
44
|
+
const expectedProjectId = getStableRepoIdentity(repoRoot);
|
|
45
|
+
const expectedProjectDataDir = path.resolve(getProjectDataDir(repoRoot));
|
|
46
|
+
const shared = readMarker(getSharedDataMigrationMarkerPath(poeticDir));
|
|
47
|
+
if (shared?.projectId === expectedProjectId && isSameDirectory(shared.projectDataDir, expectedProjectDataDir)) {
|
|
48
|
+
return shared;
|
|
49
|
+
}
|
|
50
|
+
const local = readMarker(getRepoDataMigrationMarkerPath(poeticDir));
|
|
51
|
+
if (local?.projectId === expectedProjectId && isSameDirectory(local.projectDataDir, expectedProjectDataDir)) {
|
|
52
|
+
return local;
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
function resolveProjectRuntimeDir(poeticDir, category) {
|
|
57
|
+
const marker = readProjectDataMigrationMarker(poeticDir);
|
|
58
|
+
if (marker) return path.join(marker.projectDataDir, category);
|
|
59
|
+
return path.join(repoRootFromPoeticDir(poeticDir), ".poetic", category);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export {
|
|
63
|
+
getRepoDataMigrationMarkerPath,
|
|
64
|
+
getSharedDataMigrationMarkerPath,
|
|
65
|
+
readProjectDataMigrationMarker,
|
|
66
|
+
resolveProjectRuntimeDir
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=chunk-RGWHUI5E.js.map
|