@ebrindley/build 0.0.0-stage → 1.42.1-rc28
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/.build-project/providers/catalog.json +13951 -0
- package/.build-project/providers/pricing.json +1978 -0
- package/.build-project/providers/registry.json +4103 -0
- package/.github/SECURITY.md +75 -0
- package/.nvmrc +1 -0
- package/CHANGELOG.md +661 -0
- package/CODE_OF_CONDUCT.md +44 -0
- package/CONTRIBUTING.md +24 -0
- package/INSTALL.md +623 -0
- package/LICENSE +21 -0
- package/README.md +118 -2
- package/THIRD_PARTY_NOTICES.txt +26 -0
- package/dist/ai-judge-UE5UOYOO.js +191 -0
- package/dist/allowlist-grounding-KPLN6NC5.js +16 -0
- package/dist/allowlist-utils-MZZKKXRD.js +31 -0
- package/dist/apply-completion-mode-EM37UZHB.js +110 -0
- package/dist/artifact-migrator-WPACNSEP.js +276 -0
- package/dist/ask-2OZ4JFQR.js +176 -0
- package/dist/auth-6UKBTJUQ.js +185 -0
- package/dist/auth-H5KJL6HL.js +165 -0
- package/dist/auth-LVJRJDMU.js +12 -0
- package/dist/auth-NHZOCNRR.js +94 -0
- package/dist/auth-PBXHWXGW.js +95 -0
- package/dist/auth-T7Y5DCAH.js +91 -0
- package/dist/auth-TVVKCHQW.js +13 -0
- package/dist/auth-UHB2UCSS.js +97 -0
- package/dist/auth-VACA3VUL.js +98 -0
- package/dist/auth-VVLC77S3.js +44 -0
- package/dist/auth-liveness-XO4AGDDD.js +53 -0
- package/dist/autoloop-cleanup-SI3VGAAR.js +106 -0
- package/dist/autoloop-evidence-gates-J5GG5YQB.js +39 -0
- package/dist/autoloop-gate-policy-SUNAEP6Q.js +169 -0
- package/dist/autoloop-helpers-VQGQNTT6.js +52 -0
- package/dist/autoloop-ledger-P6TIDP7C.js +96 -0
- package/dist/autoloop-ledger-subscriber-HFAGOZXH.js +161 -0
- package/dist/autoloop-run-defaults-GWGZBNT7.js +27 -0
- package/dist/autoloop-run-lock-GBWRM5A2.js +197 -0
- package/dist/autoloop-success-C32QVWOP.js +93 -0
- package/dist/autoloop-termination-summary-GI6IBQWD.js +58 -0
- package/dist/autoloop-trajectory-AMKSQISD.js +70 -0
- package/dist/autoloop-wall-clock-T7ZVIQOC.js +12 -0
- package/dist/automatic-branch-cleanup-R62X2C5O.js +49 -0
- package/dist/autonomous-loop-controller-2WL363LW.js +4386 -0
- package/dist/backend-YUTFDZXZ.js +30 -0
- package/dist/background-executor-Z3ODTMD7.js +260 -0
- package/dist/backlog-75QPEAMW.js +403 -0
- package/dist/backlog-execution-intent-GWUV5TUK.js +19 -0
- package/dist/backup-active-store-XHWLN34M.js +16 -0
- package/dist/backup-machine-stores-UI4LTJOY.js +251 -0
- package/dist/backup-telemetry-db-Z4ICYCNW.js +26 -0
- package/dist/branch-archive-manager-FMSQ7YJF.js +18 -0
- package/dist/branch-cleanup-manager-ST6FJGND.js +35 -0
- package/dist/build-gate-7NKWPY62.js +68 -0
- package/dist/build-root-S7DINODY.js +18 -0
- package/dist/change-summary-R6CB6VXJ.js +50 -0
- package/dist/chunk-24MNKKOM.js +173 -0
- package/dist/chunk-2H6VZFIO.js +235 -0
- package/dist/chunk-2JIX3EKV.js +39 -0
- package/dist/chunk-2KO7HVZM.js +106 -0
- package/dist/chunk-2L36U25O.js +100 -0
- package/dist/chunk-2NMNFUQA.js +475 -0
- package/dist/chunk-2OUAEH67.js +83 -0
- package/dist/chunk-2VLJUXJU.js +115 -0
- package/dist/chunk-2VUEDIUM.js +77 -0
- package/dist/chunk-2Y2IIHPI.js +430 -0
- package/dist/chunk-2YRG3LHZ.js +220 -0
- package/dist/chunk-2Z5Q3SUY.js +65 -0
- package/dist/chunk-32IYXIE5.js +873 -0
- package/dist/chunk-33IGPPUI.js +292 -0
- package/dist/chunk-352PCJLK.js +283 -0
- package/dist/chunk-35J4NE6S.js +226 -0
- package/dist/chunk-3C7WBIVK.js +1016 -0
- package/dist/chunk-3H3EY6U7.js +1225 -0
- package/dist/chunk-3H4MWYIC.js +198 -0
- package/dist/chunk-3HHWQR3N.js +2479 -0
- package/dist/chunk-3JKNRYEE.js +14 -0
- package/dist/chunk-3LECCYZY.js +128 -0
- package/dist/chunk-3LOY6YZI.js +852 -0
- package/dist/chunk-3M57DADF.js +44 -0
- package/dist/chunk-3NOTLVLG.js +3803 -0
- package/dist/chunk-3OPP2OZB.js +1480 -0
- package/dist/chunk-3P5IN5E7.js +9 -0
- package/dist/chunk-3PL22IYZ.js +20 -0
- package/dist/chunk-3REDAJUJ.js +14 -0
- package/dist/chunk-3S2R4XJI.js +203 -0
- package/dist/chunk-3UBZI5DW.js +61 -0
- package/dist/chunk-3VV5OBGG.js +308 -0
- package/dist/chunk-3WY5TU2O.js +823 -0
- package/dist/chunk-43OKHTW4.js +82 -0
- package/dist/chunk-45KUJBDI.js +112 -0
- package/dist/chunk-47X5LM7B.js +224 -0
- package/dist/chunk-4B6FQJ77.js +268 -0
- package/dist/chunk-4BTDUT2S.js +42 -0
- package/dist/chunk-4DJL2VXA.js +24 -0
- package/dist/chunk-4EBSXZ73.js +48 -0
- package/dist/chunk-4QKP6I4C.js +294 -0
- package/dist/chunk-4U6XK2DG.js +300 -0
- package/dist/chunk-4UMRUFBD.js +132 -0
- package/dist/chunk-4US4SYJ4.js +569 -0
- package/dist/chunk-4ZPLWEZO.js +154 -0
- package/dist/chunk-56WPYDJH.js +624 -0
- package/dist/chunk-57WRCJJW.js +50 -0
- package/dist/chunk-5AW4RMNG.js +24 -0
- package/dist/chunk-5EQN56OZ.js +155 -0
- package/dist/chunk-5F43TUIN.js +38 -0
- package/dist/chunk-5FKHIKTS.js +115 -0
- package/dist/chunk-5HDP7XZG.js +91 -0
- package/dist/chunk-5KQETTNS.js +152 -0
- package/dist/chunk-5PDVN2KO.js +498 -0
- package/dist/chunk-5UBIFVRD.js +509 -0
- package/dist/chunk-5YDE3Q62.js +46 -0
- package/dist/chunk-626AJVMU.js +302 -0
- package/dist/chunk-633XZ7UF.js +3583 -0
- package/dist/chunk-63DHNHGA.js +236 -0
- package/dist/chunk-666656AR.js +568 -0
- package/dist/chunk-67YRJPJO.js +19 -0
- package/dist/chunk-6CAU7VBA.js +20 -0
- package/dist/chunk-6CB3KJRY.js +21 -0
- package/dist/chunk-6DBMALXL.js +29 -0
- package/dist/chunk-6E25C4IA.js +269 -0
- package/dist/chunk-6FIBNIQU.js +73 -0
- package/dist/chunk-6G57FYBV.js +189 -0
- package/dist/chunk-6KZKRTG3.js +4885 -0
- package/dist/chunk-6LAH2UV2.js +525 -0
- package/dist/chunk-6PZY2TTU.js +921 -0
- package/dist/chunk-6T6NHXK4.js +230 -0
- package/dist/chunk-6TBEX4R4.js +432 -0
- package/dist/chunk-6TRD7TEE.js +911 -0
- package/dist/chunk-6XCP2RAI.js +47 -0
- package/dist/chunk-726G6WDL.js +351 -0
- package/dist/chunk-75EMT7BF.js +616 -0
- package/dist/chunk-762ACDZJ.js +4696 -0
- package/dist/chunk-77I6G4CO.js +1 -0
- package/dist/chunk-7DJ6SQH3.js +510 -0
- package/dist/chunk-7HPCIOMA.js +1383 -0
- package/dist/chunk-7HYBSRPZ.js +17503 -0
- package/dist/chunk-7KBEOPVB.js +73 -0
- package/dist/chunk-7LHJDJB3.js +2222 -0
- package/dist/chunk-7NVJMH52.js +306 -0
- package/dist/chunk-7RMARDVH.js +33 -0
- package/dist/chunk-7SEWU4QG.js +36 -0
- package/dist/chunk-7TUTZTI2.js +911 -0
- package/dist/chunk-7VBDFPUM.js +340 -0
- package/dist/chunk-7VRJHTGZ.js +6406 -0
- package/dist/chunk-7YAOUUKK.js +493 -0
- package/dist/chunk-AAAODV76.js +860 -0
- package/dist/chunk-AB4HUJVQ.js +339 -0
- package/dist/chunk-AEQWV746.js +611 -0
- package/dist/chunk-AHU3FKPA.js +11639 -0
- package/dist/chunk-AISTV5XU.js +226 -0
- package/dist/chunk-AJBTKGJZ.js +48 -0
- package/dist/chunk-AJJNW7XT.js +248 -0
- package/dist/chunk-AJN5Y5YZ.js +160 -0
- package/dist/chunk-ALDTFNZ3.js +150 -0
- package/dist/chunk-ARARVIZK.js +281 -0
- package/dist/chunk-ATBM6AW5.js +53 -0
- package/dist/chunk-ATKEKM3E.js +206 -0
- package/dist/chunk-AUJLW6JZ.js +92 -0
- package/dist/chunk-AY3MHEFM.js +24 -0
- package/dist/chunk-B7PYTV72.js +236 -0
- package/dist/chunk-B7YRSULE.js +1423 -0
- package/dist/chunk-BAWJNMWF.js +339 -0
- package/dist/chunk-BBPIILO2.js +88 -0
- package/dist/chunk-BD3PGW6A.js +957 -0
- package/dist/chunk-BDPYFAB4.js +44 -0
- package/dist/chunk-BIUV23HH.js +729 -0
- package/dist/chunk-BQ3VAGXH.js +243 -0
- package/dist/chunk-BQJOGAWT.js +31 -0
- package/dist/chunk-BT7EG7CO.js +68 -0
- package/dist/chunk-BV3XQQLU.js +27 -0
- package/dist/chunk-BY6ODHNZ.js +78 -0
- package/dist/chunk-BZRLSZNV.js +79 -0
- package/dist/chunk-C3DH3NCY.js +2773 -0
- package/dist/chunk-C3KCMAJP.js +756 -0
- package/dist/chunk-C7AGUJ5K.js +267 -0
- package/dist/chunk-CBSWKQCX.js +342 -0
- package/dist/chunk-CE5OZBYY.js +21 -0
- package/dist/chunk-CFCVYHSW.js +373 -0
- package/dist/chunk-CHA2HDE5.js +126 -0
- package/dist/chunk-CIHWPGS5.js +146 -0
- package/dist/chunk-CJBSZX3F.js +127 -0
- package/dist/chunk-CLA6QIJM.js +43 -0
- package/dist/chunk-CPSVQR2I.js +365 -0
- package/dist/chunk-CRPRVNQ4.js +254 -0
- package/dist/chunk-CSIE4Y7C.js +1093 -0
- package/dist/chunk-CSOPSYDY.js +142 -0
- package/dist/chunk-CSXLLEGB.js +205 -0
- package/dist/chunk-CTDLERWU.js +293 -0
- package/dist/chunk-CULBXMSK.js +110 -0
- package/dist/chunk-D2M2Y5ID.js +21 -0
- package/dist/chunk-D37WY7SH.js +1060 -0
- package/dist/chunk-D4VJFCGZ.js +89 -0
- package/dist/chunk-D6WTZMZB.js +48 -0
- package/dist/chunk-DBHOWDUH.js +976 -0
- package/dist/chunk-DCACX7BV.js +19364 -0
- package/dist/chunk-DFHX4XYA.js +128 -0
- package/dist/chunk-DIKBRRKE.js +176 -0
- package/dist/chunk-DJG5RIOR.js +9 -0
- package/dist/chunk-DNIOIISW.js +616 -0
- package/dist/chunk-DOA5G7IA.js +315 -0
- package/dist/chunk-DP7FKP6W.js +855 -0
- package/dist/chunk-DS2JZ677.js +79 -0
- package/dist/chunk-DSRLVYBS.js +82 -0
- package/dist/chunk-EAEVKNJA.js +209 -0
- package/dist/chunk-EEUESN3T.js +575 -0
- package/dist/chunk-EJ4LUU5Y.js +73 -0
- package/dist/chunk-EJIWTPSZ.js +1063 -0
- package/dist/chunk-EJVCDTAN.js +116 -0
- package/dist/chunk-EKLUBDBQ.js +627 -0
- package/dist/chunk-EN62WLFD.js +849 -0
- package/dist/chunk-ENYRCL43.js +26 -0
- package/dist/chunk-EP22ZMFO.js +273 -0
- package/dist/chunk-EP4SVAVI.js +87 -0
- package/dist/chunk-EPAMVGI3.js +1562 -0
- package/dist/chunk-EPRMH6HO.js +24 -0
- package/dist/chunk-ES6NWJ36.js +4057 -0
- package/dist/chunk-ETA2K4KI.js +30 -0
- package/dist/chunk-ETAD4NKD.js +31 -0
- package/dist/chunk-EUWIIDQ7.js +93 -0
- package/dist/chunk-EVE3OD2W.js +141 -0
- package/dist/chunk-EXA26FFC.js +459 -0
- package/dist/chunk-EXSPAA35.js +244 -0
- package/dist/chunk-F55YABKV.js +258 -0
- package/dist/chunk-F5DNGU5W.js +27 -0
- package/dist/chunk-F622MJYV.js +103 -0
- package/dist/chunk-F6NIQD74.js +5111 -0
- package/dist/chunk-FAWJTC34.js +43 -0
- package/dist/chunk-FAZBRHGG.js +47 -0
- package/dist/chunk-FIEUSGNJ.js +39 -0
- package/dist/chunk-FKCG7K6H.js +1146 -0
- package/dist/chunk-FOVVXV45.js +229 -0
- package/dist/chunk-FRBPKBFE.js +30 -0
- package/dist/chunk-FSA5BPFI.js +268 -0
- package/dist/chunk-FSJ5TTZ3.js +29 -0
- package/dist/chunk-FT7SGLXT.js +193 -0
- package/dist/chunk-FUUVZZUB.js +62 -0
- package/dist/chunk-FYMRVUNZ.js +1697 -0
- package/dist/chunk-FYTAA5FG.js +162 -0
- package/dist/chunk-G3VB2UCZ.js +3892 -0
- package/dist/chunk-G6OIMVXH.js +405 -0
- package/dist/chunk-G7PQCXVH.js +228 -0
- package/dist/chunk-GAB6UW52.js +1087 -0
- package/dist/chunk-GAFJEYLK.js +29 -0
- package/dist/chunk-GC4CRMTS.js +642 -0
- package/dist/chunk-GFHSIWHL.js +5297 -0
- package/dist/chunk-GI5M67YA.js +735 -0
- package/dist/chunk-GIJWHUWF.js +191 -0
- package/dist/chunk-GO6DRECI.js +1 -0
- package/dist/chunk-GOFVBTMN.js +314 -0
- package/dist/chunk-GQIP72ZJ.js +13 -0
- package/dist/chunk-GQXLXRFA.js +28 -0
- package/dist/chunk-GT6HFKJB.js +48 -0
- package/dist/chunk-GVJGSSKM.js +174 -0
- package/dist/chunk-GWHGTG37.js +36 -0
- package/dist/chunk-GZAJHLKO.js +18 -0
- package/dist/chunk-GZK62I3N.js +314 -0
- package/dist/chunk-H3HGMISG.js +483 -0
- package/dist/chunk-H3ISZJMJ.js +403 -0
- package/dist/chunk-H4HXVWEC.js +9 -0
- package/dist/chunk-H6MJGKAW.js +120 -0
- package/dist/chunk-HBTTGVR5.js +353 -0
- package/dist/chunk-HBZ322WZ.js +35 -0
- package/dist/chunk-HEP3ILP4.js +34 -0
- package/dist/chunk-HGFXODKO.js +106 -0
- package/dist/chunk-HHWDTB6S.js +59 -0
- package/dist/chunk-HKO45NLZ.js +286 -0
- package/dist/chunk-HLVTEA6A.js +89 -0
- package/dist/chunk-HS3SY6HN.js +160 -0
- package/dist/chunk-HT5OCGKN.js +899 -0
- package/dist/chunk-HXIIEMGF.js +78 -0
- package/dist/chunk-I56TH7VM.js +46 -0
- package/dist/chunk-I6FN3R5D.js +352 -0
- package/dist/chunk-I7SCBHJN.js +655 -0
- package/dist/chunk-IJM4GKAT.js +529 -0
- package/dist/chunk-IMEYU36R.js +344 -0
- package/dist/chunk-INJ3SS6A.js +936 -0
- package/dist/chunk-IUKOPCCE.js +441 -0
- package/dist/chunk-IVEPZQJO.js +33 -0
- package/dist/chunk-IVZEONFC.js +43 -0
- package/dist/chunk-IWBHRSG7.js +936 -0
- package/dist/chunk-IYY3HQAD.js +484 -0
- package/dist/chunk-J2ICMYDA.js +48 -0
- package/dist/chunk-J2QCFLUN.js +505 -0
- package/dist/chunk-J5HM6V5P.js +1039 -0
- package/dist/chunk-J6NZX6QH.js +398 -0
- package/dist/chunk-JBBB2Y47.js +432 -0
- package/dist/chunk-JDCZQZU7.js +42 -0
- package/dist/chunk-JEDNXGSS.js +169 -0
- package/dist/chunk-JHP7OT6K.js +89 -0
- package/dist/chunk-JLS65NUQ.js +14 -0
- package/dist/chunk-JNMWYMC6.js +38 -0
- package/dist/chunk-JNSTWNNW.js +25 -0
- package/dist/chunk-JOSK6GEU.js +9564 -0
- package/dist/chunk-JQUMSIGC.js +100 -0
- package/dist/chunk-JVHGMURQ.js +1106 -0
- package/dist/chunk-JYXS47FQ.js +951 -0
- package/dist/chunk-K2ZMW2Z5.js +2147 -0
- package/dist/chunk-K7FAFORM.js +14 -0
- package/dist/chunk-KBJXX3ON.js +333 -0
- package/dist/chunk-KHFKVQWY.js +486 -0
- package/dist/chunk-KHMEI3DQ.js +173 -0
- package/dist/chunk-KHW3UD7B.js +69 -0
- package/dist/chunk-KKQKWAMF.js +365 -0
- package/dist/chunk-KOKXJV2U.js +455 -0
- package/dist/chunk-KQ4NGOJI.js +14 -0
- package/dist/chunk-KQYQOXMS.js +342 -0
- package/dist/chunk-KTMW65UX.js +14 -0
- package/dist/chunk-KUEWV2JH.js +593 -0
- package/dist/chunk-KXYDV3HP.js +1523 -0
- package/dist/chunk-KZ4JMGZ5.js +96 -0
- package/dist/chunk-KZWGBUIO.js +2659 -0
- package/dist/chunk-L2CBG5IX.js +1892 -0
- package/dist/chunk-L2S235CU.js +314 -0
- package/dist/chunk-L32WD57F.js +98 -0
- package/dist/chunk-LDJCKAJP.js +123 -0
- package/dist/chunk-LDWNBEN7.js +541 -0
- package/dist/chunk-LJVH57G2.js +241 -0
- package/dist/chunk-LPQ7NZEN.js +209 -0
- package/dist/chunk-LRGH3CCV.js +148 -0
- package/dist/chunk-LULOGMMM.js +1133 -0
- package/dist/chunk-LWGKN2GY.js +8284 -0
- package/dist/chunk-LX4F24ZH.js +157 -0
- package/dist/chunk-M4BUEXXF.js +839 -0
- package/dist/chunk-M6UHOC4I.js +553 -0
- package/dist/chunk-MCBNWZNO.js +657 -0
- package/dist/chunk-MEMSY6VY.js +223 -0
- package/dist/chunk-MHLEZQQI.js +145 -0
- package/dist/chunk-MJ6WNSIX.js +192 -0
- package/dist/chunk-MKASIKWZ.js +442 -0
- package/dist/chunk-MNOVBYFU.js +60 -0
- package/dist/chunk-MO2BYAAF.js +2896 -0
- package/dist/chunk-MP6P7Y2A.js +180 -0
- package/dist/chunk-MQ4TFJAG.js +3365 -0
- package/dist/chunk-MT2WAIR3.js +131 -0
- package/dist/chunk-MTU7VTNN.js +1122 -0
- package/dist/chunk-MULMXX4V.js +150 -0
- package/dist/chunk-MW2DWWVA.js +147 -0
- package/dist/chunk-MY3ZPUN4.js +151 -0
- package/dist/chunk-MYLH2S4G.js +64 -0
- package/dist/chunk-MZ5WYKNA.js +28 -0
- package/dist/chunk-N3Q2JNPV.js +249 -0
- package/dist/chunk-N5DX4JAK.js +12 -0
- package/dist/chunk-NAINGKHF.js +35 -0
- package/dist/chunk-NEQUQHOX.js +223 -0
- package/dist/chunk-NHNPEZS4.js +1408 -0
- package/dist/chunk-NHTIXJCR.js +17 -0
- package/dist/chunk-NKLPMBNV.js +1154 -0
- package/dist/chunk-NMVZ5YES.js +199 -0
- package/dist/chunk-NRFRY3GE.js +256 -0
- package/dist/chunk-NTD6CSI6.js +1266 -0
- package/dist/chunk-NUO7B3SH.js +318 -0
- package/dist/chunk-NVOHIJKG.js +1319 -0
- package/dist/chunk-NXH3RX7O.js +523 -0
- package/dist/chunk-NXZ3DURF.js +257 -0
- package/dist/chunk-O26L6F7F.js +209 -0
- package/dist/chunk-O5RRIUEP.js +124 -0
- package/dist/chunk-O5X6BKAO.js +10 -0
- package/dist/chunk-O6ZQUVTR.js +31 -0
- package/dist/chunk-O7FE75QZ.js +306 -0
- package/dist/chunk-OC7Z6AJQ.js +81 -0
- package/dist/chunk-OH7IEZ63.js +307 -0
- package/dist/chunk-OI734GRS.js +115 -0
- package/dist/chunk-OJBH62DK.js +684 -0
- package/dist/chunk-OKJLVSTJ.js +247 -0
- package/dist/chunk-OMX5VL43.js +79 -0
- package/dist/chunk-ONHAMBN6.js +12 -0
- package/dist/chunk-ONYPLIVE.js +753 -0
- package/dist/chunk-OSK7QWPD.js +637 -0
- package/dist/chunk-OTXLMJKP.js +438 -0
- package/dist/chunk-OV5PKQMA.js +213 -0
- package/dist/chunk-OXK5HA4B.js +31 -0
- package/dist/chunk-OYDWFQA4.js +272 -0
- package/dist/chunk-OZAUKWHB.js +22 -0
- package/dist/chunk-P5P2EKGH.js +94 -0
- package/dist/chunk-P6SSWAKY.js +29 -0
- package/dist/chunk-P7CQGPLS.js +30 -0
- package/dist/chunk-P7RVCHQV.js +197 -0
- package/dist/chunk-PEBWDYIW.js +726 -0
- package/dist/chunk-PFCXFO7A.js +9193 -0
- package/dist/chunk-PFLDWMX6.js +168 -0
- package/dist/chunk-PHZGLQSK.js +15883 -0
- package/dist/chunk-PNFTPNSR.js +20 -0
- package/dist/chunk-PPHXX4W7.js +175 -0
- package/dist/chunk-PPZESPJT.js +262 -0
- package/dist/chunk-PRDHI2L5.js +296 -0
- package/dist/chunk-PSTKWHHN.js +32 -0
- package/dist/chunk-PV53ODOT.js +555 -0
- package/dist/chunk-PVJBTI7P.js +24 -0
- package/dist/chunk-PXKERBKX.js +100 -0
- package/dist/chunk-PZ5AY32C.js +10 -0
- package/dist/chunk-Q3DHEZA5.js +85 -0
- package/dist/chunk-Q5RZDVQK.js +204 -0
- package/dist/chunk-Q64IR2Z2.js +4933 -0
- package/dist/chunk-Q6Z5UGPL.js +398 -0
- package/dist/chunk-QAMAV4DT.js +627 -0
- package/dist/chunk-QBWF4444.js +112 -0
- package/dist/chunk-QDKYT4CI.js +22805 -0
- package/dist/chunk-QFLBRWCJ.js +126 -0
- package/dist/chunk-QILAQACE.js +107 -0
- package/dist/chunk-QJ6OEH4K.js +3683 -0
- package/dist/chunk-QK3NLYTV.js +320 -0
- package/dist/chunk-QOFLUS24.js +535 -0
- package/dist/chunk-QOIASNEJ.js +98 -0
- package/dist/chunk-QP4UTSOV.js +3587 -0
- package/dist/chunk-QP5ST7RI.js +904 -0
- package/dist/chunk-QS5AGRZN.js +167 -0
- package/dist/chunk-QTAOU53N.js +107 -0
- package/dist/chunk-QTCLJHLZ.js +351 -0
- package/dist/chunk-QTOLTG4L.js +119 -0
- package/dist/chunk-QWDV4OSL.js +142 -0
- package/dist/chunk-QWMQ74KD.js +508 -0
- package/dist/chunk-QX6LOMMH.js +158 -0
- package/dist/chunk-QXBKIHY7.js +238 -0
- package/dist/chunk-QXBKTJT6.js +270 -0
- package/dist/chunk-QYQOVOLR.js +196 -0
- package/dist/chunk-R2CKS6WT.js +73 -0
- package/dist/chunk-R2TIYG7U.js +68 -0
- package/dist/chunk-R2W3LESH.js +465 -0
- package/dist/chunk-R5EXHMUN.js +100 -0
- package/dist/chunk-RBBTBCHX.js +289 -0
- package/dist/chunk-RBKLOUXA.js +121 -0
- package/dist/chunk-RCP2Y6DQ.js +86 -0
- package/dist/chunk-RCYEJSD5.js +260 -0
- package/dist/chunk-RFDVSI4N.js +134 -0
- package/dist/chunk-RGJU63FV.js +1717 -0
- package/dist/chunk-RI4EX2QE.js +18 -0
- package/dist/chunk-RIMARPCF.js +152 -0
- package/dist/chunk-RJ6RSNT6.js +42 -0
- package/dist/chunk-RNI2GUIF.js +131 -0
- package/dist/chunk-RPHUWJ3K.js +264 -0
- package/dist/chunk-RPIMAMV7.js +361 -0
- package/dist/chunk-RQFX6YRN.js +49 -0
- package/dist/chunk-RRC5BL7B.js +285 -0
- package/dist/chunk-RSYTSBOO.js +79 -0
- package/dist/chunk-RWQQIKIC.js +35 -0
- package/dist/chunk-RZUBOZH2.js +373 -0
- package/dist/chunk-S2E632FQ.js +380 -0
- package/dist/chunk-S2VQCZO4.js +22 -0
- package/dist/chunk-S2XIMQJQ.js +681 -0
- package/dist/chunk-S47ISY27.js +183 -0
- package/dist/chunk-S6I4KISU.js +142 -0
- package/dist/chunk-S6TAFQI5.js +2403 -0
- package/dist/chunk-SBBNT5ZJ.js +27 -0
- package/dist/chunk-SDJV2DTQ.js +491 -0
- package/dist/chunk-SDPIFNLD.js +33 -0
- package/dist/chunk-SF6YK3JI.js +835 -0
- package/dist/chunk-SK3ZFONO.js +976 -0
- package/dist/chunk-SKTFRFQ7.js +1775 -0
- package/dist/chunk-SNGM452K.js +2002 -0
- package/dist/chunk-STW7OFOA.js +581 -0
- package/dist/chunk-SU6UFUQY.js +1351 -0
- package/dist/chunk-SVJM3LJA.js +27 -0
- package/dist/chunk-SVUNZOPG.js +129 -0
- package/dist/chunk-T5XLUYV3.js +34 -0
- package/dist/chunk-T7E5JS6N.js +57 -0
- package/dist/chunk-TA3N5MMO.js +450 -0
- package/dist/chunk-TAJPCXSB.js +13 -0
- package/dist/chunk-TDEMDRN2.js +1639 -0
- package/dist/chunk-TDSEX5CF.js +24 -0
- package/dist/chunk-TGCVL74Y.js +28 -0
- package/dist/chunk-TGXXYDL4.js +1012 -0
- package/dist/chunk-TIKTYUJO.js +296 -0
- package/dist/chunk-TIZAJD4M.js +6029 -0
- package/dist/chunk-TLSEZZCG.js +5549 -0
- package/dist/chunk-TMBDRHAX.js +19 -0
- package/dist/chunk-TRURQUBP.js +1217 -0
- package/dist/chunk-TSQ256N5.js +152 -0
- package/dist/chunk-TUQMMFEQ.js +2244 -0
- package/dist/chunk-U424MJLC.js +81 -0
- package/dist/chunk-U4DRS6ZW.js +11 -0
- package/dist/chunk-U5KS22IN.js +204 -0
- package/dist/chunk-UAPHFJPN.js +673 -0
- package/dist/chunk-UB7LQITD.js +1040 -0
- package/dist/chunk-UBVRHGAZ.js +237 -0
- package/dist/chunk-UDNNAQN5.js +98 -0
- package/dist/chunk-UJP3XM54.js +342 -0
- package/dist/chunk-UJYDH2MW.js +305 -0
- package/dist/chunk-UKMPASIC.js +399 -0
- package/dist/chunk-UKUL3EHK.js +763 -0
- package/dist/chunk-UPHU64NB.js +1327 -0
- package/dist/chunk-URMSZXAD.js +43 -0
- package/dist/chunk-US3RT6CY.js +525 -0
- package/dist/chunk-UTDEOPKV.js +30 -0
- package/dist/chunk-UUUDKV7N.js +13 -0
- package/dist/chunk-UVKWU3SM.js +39 -0
- package/dist/chunk-V2TVPO3X.js +521 -0
- package/dist/chunk-V3KLVK7B.js +398 -0
- package/dist/chunk-V3YFFHDR.js +17 -0
- package/dist/chunk-VAG6GUBR.js +1162 -0
- package/dist/chunk-VBENAHDA.js +1814 -0
- package/dist/chunk-VBNCKCCI.js +16 -0
- package/dist/chunk-VCGSWN5M.js +1300 -0
- package/dist/chunk-VE2O2I7M.js +115 -0
- package/dist/chunk-VIFHYTI5.js +31 -0
- package/dist/chunk-VJER3FUS.js +5080 -0
- package/dist/chunk-VLMDM56Q.js +268 -0
- package/dist/chunk-VMFZEVVX.js +99 -0
- package/dist/chunk-VNDPQVUZ.js +1853 -0
- package/dist/chunk-VSPJRLGA.js +4783 -0
- package/dist/chunk-VSWC5ZXI.js +103 -0
- package/dist/chunk-VYI4DSZP.js +2017 -0
- package/dist/chunk-W4BAIQ6L.js +1212 -0
- package/dist/chunk-W7VQAL2K.js +2203 -0
- package/dist/chunk-WEI3ZDZH.js +33 -0
- package/dist/chunk-WEIUS5NT.js +26 -0
- package/dist/chunk-WEW7UFWE.js +546 -0
- package/dist/chunk-WGQAXLNA.js +384 -0
- package/dist/chunk-WJAL4JL3.js +206 -0
- package/dist/chunk-WKFOJ5ZG.js +141 -0
- package/dist/chunk-WMWQEFLN.js +2177 -0
- package/dist/chunk-WNECKKO2.js +154 -0
- package/dist/chunk-WPKLYOAM.js +195 -0
- package/dist/chunk-WSH37YQN.js +243 -0
- package/dist/chunk-WV3KQDPE.js +84 -0
- package/dist/chunk-WZFC4V4U.js +389 -0
- package/dist/chunk-XCOIBNET.js +13 -0
- package/dist/chunk-XDM65LBX.js +53 -0
- package/dist/chunk-XGU6PBO5.js +645 -0
- package/dist/chunk-XHOI4V62.js +43 -0
- package/dist/chunk-XIBVFMLQ.js +6858 -0
- package/dist/chunk-XJ2E7YEJ.js +117 -0
- package/dist/chunk-XON4ZCYX.js +69 -0
- package/dist/chunk-XQPEWJPI.js +127 -0
- package/dist/chunk-XSJTIFUY.js +31 -0
- package/dist/chunk-XT7OVWM3.js +64 -0
- package/dist/chunk-XTXYIISX.js +1104 -0
- package/dist/chunk-XV7NZL4B.js +57 -0
- package/dist/chunk-XWIZ6B5S.js +109 -0
- package/dist/chunk-XWLIKOBX.js +240 -0
- package/dist/chunk-XZOXEIN4.js +156 -0
- package/dist/chunk-XZRS7I7W.js +3673 -0
- package/dist/chunk-Y4ZDDHB6.js +44 -0
- package/dist/chunk-Y733RB7T.js +194 -0
- package/dist/chunk-YBHUB4XR.js +14931 -0
- package/dist/chunk-YKC75XK4.js +147 -0
- package/dist/chunk-YKMXFVK7.js +27 -0
- package/dist/chunk-YO5BAJ55.js +225 -0
- package/dist/chunk-YPDCLXNZ.js +568 -0
- package/dist/chunk-YSQPGVFK.js +116 -0
- package/dist/chunk-YTVVTIWJ.js +716 -0
- package/dist/chunk-YVCMDVBB.js +698 -0
- package/dist/chunk-YYTOA6DP.js +114 -0
- package/dist/chunk-Z5WGNULV.js +88 -0
- package/dist/chunk-Z6NGVVXG.js +66 -0
- package/dist/chunk-Z7CDQNH3.js +20 -0
- package/dist/chunk-ZH4G3FU5.js +187 -0
- package/dist/chunk-ZJB6SQPA.js +257 -0
- package/dist/chunk-ZL6E4HMY.js +42 -0
- package/dist/chunk-ZMLOC3DW.js +62 -0
- package/dist/chunk-ZORW64QH.js +101 -0
- package/dist/chunk-ZVVD2XGV.js +1369 -0
- package/dist/cli-utils-ER33ODC5.js +31 -0
- package/dist/cli-validation-6CHPTANV.js +146 -0
- package/dist/commit-utils-3STAY7C7.js +49 -0
- package/dist/compatibility-notice-IHNXR2JR.js +21 -0
- package/dist/compete-config-resolver-V3GDNJMM.js +125 -0
- package/dist/compete-results-XUM3PJHS.js +318 -0
- package/dist/competition-outcome-tracker-NWSMVUPG.js +62 -0
- package/dist/config-4HHE4OIK.js +238 -0
- package/dist/config-D6YAZASH.js +10 -0
- package/dist/config-MIPRDYYV.js +46 -0
- package/dist/config-audit-GA5DCUAI.js +371 -0
- package/dist/config-explain-4LMO556H.js +71 -0
- package/dist/config-loader-RGP634PC.js +51 -0
- package/dist/config-manager-J2UTO635.js +114 -0
- package/dist/config-merger-TVUJBZTS.js +14 -0
- package/dist/config-validator-H4ZVIE56.js +122 -0
- package/dist/cost-HSIV5U2Y.js +85 -0
- package/dist/data-migration-state-OAUL2WPQ.js +35 -0
- package/dist/db-migrator-NUOW5NKR.js +34 -0
- package/dist/default-paths-UILB62BN.js +49 -0
- package/dist/discovery-V6GYUJUC.js +53 -0
- package/dist/doctor-BBSMCDWE.js +271 -0
- package/dist/doctor-context-blocks-LPY75VZA.js +231 -0
- package/dist/doctor-instructions-import-JXHDDOE5.js +70 -0
- package/dist/doctor-purpose-6YJOXPBE.js +30 -0
- package/dist/domain-analyzer-S35ABUNA.js +48 -0
- package/dist/ensure-initialized-Q6PEU55O.js +78 -0
- package/dist/entry.js +922 -0
- package/dist/error-parser-core-MZFMFANN.js +70 -0
- package/dist/evaluation-context-GQBYDAEV.js +63 -0
- package/dist/evidence-plan-resolver-5FUAP3SA.js +111 -0
- package/dist/execution-data-writer-YCG5UH37.js +72 -0
- package/dist/execution-policy-applier-PWZM5LNA.js +63 -0
- package/dist/execution-preflight-DASJWWQF.js +223 -0
- package/dist/execution-roles-KNSNNB2D.js +112 -0
- package/dist/exit-code-error-QIY5DOKF.js +18 -0
- package/dist/external-temp-cleanup-CAW7LQ6R.js +360 -0
- package/dist/factory-YCYCB7AE.js +209 -0
- package/dist/file-utils-ZQYNBQBW.js +45 -0
- package/dist/flywheel-allowlist-revert-H22HA6JE.js +21 -0
- package/dist/flywheel-autoloop-executor-PDOASJEZ.js +316 -0
- package/dist/flywheel-autoloop-unverified-TOKYFCDC.js +36 -0
- package/dist/flywheel-competition-executor-YJUMMEJO.js +320 -0
- package/dist/flywheel-executor-JWU43KAY.js +437 -0
- package/dist/flywheel-git-isolation-FQ2TRWMB.js +56 -0
- package/dist/flywheel-manifest-HDPNMWWF.js +114 -0
- package/dist/flywheel-model-defaults-UHAKTZT3.js +110 -0
- package/dist/flywheel-preflight-III2C7TH.js +163 -0
- package/dist/flywheel-resume-2O45MS7Y.js +31 -0
- package/dist/flywheel-resume-execution-lease-P2BK257J.js +59 -0
- package/dist/flywheel-safety-AVAVFXIJ.js +19 -0
- package/dist/flywheel-scope-decision-ALJUUNGG.js +14 -0
- package/dist/get-telemetry-logger-MPDVO2JA.js +155 -0
- package/dist/git-message-style-KCXGMTDT.js +104 -0
- package/dist/guidance-profile-config-G3K5YQOO.js +113 -0
- package/dist/guidance-profile-renderer-TX4TNDFL.js +23 -0
- package/dist/identity-XLQJ4YJF.js +25 -0
- package/dist/index-query-6NUY4FKX.js +37 -0
- package/dist/index.js +85588 -0
- package/dist/indexer-DL54CM3K.js +44 -0
- package/dist/init-OUZ72344.js +245 -0
- package/dist/instructions-import-offer-NSYXSITC.js +363 -0
- package/dist/instructions-run-NBII7W36.js +114 -0
- package/dist/interrupted-work-E4TLKJLE.js +43 -0
- package/dist/invoke-provider-auth-NEWEIHCI.js +38 -0
- package/dist/judge-scoring.json +64 -0
- package/dist/lab-mode-YXQ2Y3NG.js +44 -0
- package/dist/lab-utils-5QAMDJR5.js +29 -0
- package/dist/linux-host-class-YDWQX65O.js +31 -0
- package/dist/llm-judge-executor-OJSNCTFJ.js +179 -0
- package/dist/local-ci-config-VZ4WWDT5.js +48 -0
- package/dist/local-executor-DCMDDRX2.js +280 -0
- package/dist/logger-5KNKS3O4.js +154 -0
- package/dist/matrix-prompt-builder-4ZBOGZSB.js +527 -0
- package/dist/matrix-result-parser-EZJM4YXP.js +14 -0
- package/dist/merge-batch-RTEEMVDB.js +313 -0
- package/dist/merge-batch-members-VIWGVRHP.js +24 -0
- package/dist/merge-queue-TIIUSOY6.js +126 -0
- package/dist/merge-queue-trust-DUNZ4J65.js +21 -0
- package/dist/metadata-UKSMWM6J.js +29 -0
- package/dist/model-catalog-readiness-R5KJBP5M.js +202 -0
- package/dist/model-invocations-db-XTUPPQ34.js +70 -0
- package/dist/model-resolver-JFZ2MHOJ.js +39 -0
- package/dist/model-resolver-SCQ57KAQ.js +217 -0
- package/dist/model-roles-D3OR4NAH.js +110 -0
- package/dist/monitor-F4SIU5G2.js +96 -0
- package/dist/nested-worktrees-2WUWQ75N.js +23 -0
- package/dist/next-S3IRLVER.js +96 -0
- package/dist/next-UKPFRXOO.js +148 -0
- package/dist/opportunistic-TL4S26VX.js +86 -0
- package/dist/optimization-config-resolver-NAEIYU6A.js +148 -0
- package/dist/package-HJR4QJT4.js +10 -0
- package/dist/parse-git-status-7PIYFPS2.js +21 -0
- package/dist/path-security-5WJSY56G.js +41 -0
- package/dist/paths-JUI7C4KU.js +45 -0
- package/dist/plan-backlog-list-fast-SSTQL5XP.js +89 -0
- package/dist/plan-backlog-show-fast-PFRAQ3JB.js +114 -0
- package/dist/plan-sprint-list-fast-HD2KBZSY.js +110 -0
- package/dist/plan-sprint-status-fast-YFYH7WQF.js +116 -0
- package/dist/plan-task-status-fast-JU5PNLUU.js +114 -0
- package/dist/plan-to-flywheel-PY5MSY2H.js +529 -0
- package/dist/preflight-PJHGTJNZ.js +12 -0
- package/dist/process-registry-B4ZUCN7T.js +28 -0
- package/dist/process-scanner-TU3QHWVB.js +23 -0
- package/dist/processes-6FHVGT72.js +28 -0
- package/dist/processes-json-fast-YWTMUWXB.js +72 -0
- package/dist/profile-HWTC56SG.js +209 -0
- package/dist/project-runtime-paths-2UQNG5Y4.js +41 -0
- package/dist/protected-branches-N36LDBFY.js +71 -0
- package/dist/provider-aware-resource-manager-YTFAHNGJ.js +40 -0
- package/dist/provider-matrix-2KO2V5OM.js +214 -0
- package/dist/provider-matrix-renderer-MEC3PER7.js +139 -0
- package/dist/provider-output-forwarding-2AHL7YMA.js +26 -0
- package/dist/provider-registry-WCZ65QHC.js +136 -0
- package/dist/provider-temp-cleanup-IUNPJCZF.js +14 -0
- package/dist/prune-engine-EOQVWEP6.js +448 -0
- package/dist/publication-turn-S42RZTQF.js +44 -0
- package/dist/quality-gate-JQMVCKOO.js +72 -0
- package/dist/quickstart-3O6FRCFB.js +105 -0
- package/dist/readiness-GW6ABRHB.js +139 -0
- package/dist/readiness-KFZCXDTT.js +215 -0
- package/dist/registry-7XG376SY.js +217 -0
- package/dist/repair-helpers-TTV5FEF4.js +117 -0
- package/dist/repo-root-YG6MQZDW.js +28 -0
- package/dist/resolution-engine-FFEK7HQ2.js +187 -0
- package/dist/resolve-provider-cli-ZEXVZKET.js +44 -0
- package/dist/restore-telemetry-db-E7BR5PO7.js +459 -0
- package/dist/routing-events-AW6SRZ6G.js +13 -0
- package/dist/routing-history-store-FMDDQL6W.js +39 -0
- package/dist/routing-planner-C6OHO3EY.js +221 -0
- package/dist/runner-KHDNQ5KU.js +1194 -0
- package/dist/runner-PIS2BW7Y.js +1801 -0
- package/dist/safety-E3JJVSFL.js +67 -0
- package/dist/safety-stanza-HE6GXP4G.js +49 -0
- package/dist/sandbox-7LBZC5PE.js +72 -0
- package/dist/sandbox-ASWCDYZL.js +80 -0
- package/dist/schema-extensions.sql +234 -0
- package/dist/security-JI22TBEB.js +17 -0
- package/dist/setup-bb-plugin-FQXLA76Y.js +531 -0
- package/dist/setup-claude-code-NF4ZSHVE.js +197 -0
- package/dist/setup-temp-cleanup-2APZ4HMA.js +29 -0
- package/dist/shared-utils-34HJZ6JX.js +40 -0
- package/dist/simple-artifact-goal-MQLDDMMX.js +29 -0
- package/dist/sprint-N7JFTEGL.js +403 -0
- package/dist/sprint-bridge-KJXIBNRJ.js +117 -0
- package/dist/sprint-completion-dependents-34SR7JVL.js +43 -0
- package/dist/sprint-execution-service-A6JPUBWY.js +376 -0
- package/dist/sprint-manager-MU2ZUWN2.js +140 -0
- package/dist/sqlite-timeout-config-U2CT4LKU.js +13 -0
- package/dist/sqlite-wrapper-FSGJ2QEW.js +19 -0
- package/dist/stale-cleanup-orchestrator-4X6324VF.js +71 -0
- package/dist/storage-access-I3V5LER7.js +31 -0
- package/dist/store-XVG64ZR2.js +25 -0
- package/dist/task-classifier-MN2DYE5R.js +558 -0
- package/dist/task-list-fast-7AT6LTTA.js +112 -0
- package/dist/task-manager-LHPBBRRE.js +136 -0
- package/dist/task-report-OLPAWBTK.js +64 -0
- package/dist/task-type-detector-6RG3YNZF.js +27 -0
- package/dist/task-type-resolver-EQHOUIHT.js +64 -0
- package/dist/telemetry-5VYSK772.js +212 -0
- package/dist/telemetry-health-tracker-4GFW2EMP.js +12 -0
- package/dist/telemetry-path-resolver-H3NFHHQY.js +34 -0
- package/dist/telemetry-reliability-URJDTNPZ.js +76 -0
- package/dist/transports-NREZQTJK.js +106 -0
- package/dist/unified-cost-tracker-5MTBJ2CL.js +59 -0
- package/dist/unified-state-cleanup-GGAXLHXF.js +292 -0
- package/dist/universal-cost-calculator-JTFEJVWK.js +70 -0
- package/dist/user-agents-QLIGPLP2.js +30 -0
- package/dist/variant-execution-I4ZZUAWY.js +319 -0
- package/dist/variant-opt-parser-JHCXKY2K.js +251 -0
- package/dist/variant-request-input-PL37N3AN.js +11 -0
- package/dist/variant-state-cleanup-KHMXRBZN.js +287 -0
- package/dist/variant-worker-COB5YTJX.js +4517 -0
- package/dist/variant-worker.js +26 -0
- package/dist/variants-XGDSXYG3.js +267 -0
- package/dist/verification-command-YSPU4VBH.js +66 -0
- package/dist/verify-command-timeout-DQUYH33Z.js +11 -0
- package/dist/verify-commands-LOHMOFKC.js +65 -0
- package/dist/warning-JSKSFKBT.js +13 -0
- package/dist/work-edge-K65NHVWY.js +50 -0
- package/dist/work-item-writer-KY5ZWZWW.js +30 -0
- package/dist/worker-JNXXEIT6.js +1504 -0
- package/dist/worker.js +21 -0
- package/dist/workspace-tree-identity-JO5PSKTW.js +52 -0
- package/dist/worktree-environment-WTVABAQW.js +64 -0
- package/dist/worktree-metrics-VZRQI26T.js +66 -0
- package/dist/writeback-TQFQBJNU.js +50 -0
- package/docs/CLI_REFERENCE.md +8287 -0
- package/docs/PROVIDER_SETUP.md +1737 -0
- package/docs/README.md +96 -0
- package/docs/TROUBLESHOOTING.md +2209 -0
- package/docs/getting-started/QUICK_START.md +260 -0
- package/docs/getting-started/README.md +198 -0
- package/docs/getting-started/SETUP.md +25 -0
- package/docs/reference/AGENT_CONTEXT.md +84 -0
- package/docs/reference/DELIVERY_ONBOARDING.md +198 -0
- package/docs/reference/PROVIDER_RELEASE_TIERS.md +34 -0
- package/docs/reference/SECURITY.md +291 -0
- package/docs/reference/TELEMETRY_PRIVACY.md +259 -0
- package/integrations/bb-plugin-build/README.md +391 -0
- package/integrations/bb-plugin-build/app.css +431 -0
- package/integrations/bb-plugin-build/app.tsx +6210 -0
- package/integrations/bb-plugin-build/package.json +45 -0
- package/integrations/bb-plugin-build/server.ts +488 -0
- package/integrations/bb-plugin-build/src/adapter.ts +3672 -0
- package/integrations/bb-plugin-build/src/backlog-authoring-model.ts +150 -0
- package/integrations/bb-plugin-build/src/backlog-authoring-schema.ts +458 -0
- package/integrations/bb-plugin-build/src/backlog-authoring-service.ts +467 -0
- package/integrations/bb-plugin-build/src/backlog-authoring-view.ts +1025 -0
- package/integrations/bb-plugin-build/src/command-evidence-schema.ts +13 -0
- package/integrations/bb-plugin-build/src/competition-defaults-schema.ts +122 -0
- package/integrations/bb-plugin-build/src/competition-defaults-service.ts +105 -0
- package/integrations/bb-plugin-build/src/competition-defaults-view.ts +138 -0
- package/integrations/bb-plugin-build/src/contract.ts +718 -0
- package/integrations/bb-plugin-build/src/execution-activity-view.ts +98 -0
- package/integrations/bb-plugin-build/src/finalize-model.ts +205 -0
- package/integrations/bb-plugin-build/src/finalize-schema.ts +150 -0
- package/integrations/bb-plugin-build/src/finalize-service.ts +330 -0
- package/integrations/bb-plugin-build/src/finalize-view.ts +159 -0
- package/integrations/bb-plugin-build/src/judge-operations-readback.ts +303 -0
- package/integrations/bb-plugin-build/src/judge-operations-schema.ts +33 -0
- package/integrations/bb-plugin-build/src/judge-operations-view.ts +459 -0
- package/integrations/bb-plugin-build/src/model.ts +1318 -0
- package/integrations/bb-plugin-build/src/monitor-service.ts +233 -0
- package/integrations/bb-plugin-build/src/panel-read-ux.ts +97 -0
- package/integrations/bb-plugin-build/src/patch-preview-schema.ts +166 -0
- package/integrations/bb-plugin-build/src/patch-preview-service.ts +480 -0
- package/integrations/bb-plugin-build/src/patch-preview-view.ts +109 -0
- package/integrations/bb-plugin-build/src/planning-readback.ts +228 -0
- package/integrations/bb-plugin-build/src/planning-service.ts +647 -0
- package/integrations/bb-plugin-build/src/planning-sync-evidence.ts +37 -0
- package/integrations/bb-plugin-build/src/planning-workspace-readback.ts +33 -0
- package/integrations/bb-plugin-build/src/planning-workspace-schema.ts +131 -0
- package/integrations/bb-plugin-build/src/planning-workspace.ts +333 -0
- package/integrations/bb-plugin-build/src/poll-handoff.ts +136 -0
- package/integrations/bb-plugin-build/src/project-target-server.ts +21 -0
- package/integrations/bb-plugin-build/src/project-target.ts +45 -0
- package/integrations/bb-plugin-build/src/reference-index.ts +218 -0
- package/integrations/bb-plugin-build/src/repository-identity.ts +17 -0
- package/integrations/bb-plugin-build/src/repository-schema.ts +30 -0
- package/integrations/bb-plugin-build/src/result-explorer-view.ts +597 -0
- package/integrations/bb-plugin-build/src/result-readback-model.ts +163 -0
- package/integrations/bb-plugin-build/src/result-readback-schema.ts +319 -0
- package/integrations/bb-plugin-build/src/result-readback-service.ts +333 -0
- package/integrations/bb-plugin-build/src/run-page-view.ts +332 -0
- package/integrations/bb-plugin-build/src/setup-config-schema.ts +293 -0
- package/integrations/bb-plugin-build/src/setup-config-service.ts +620 -0
- package/integrations/bb-plugin-build/src/setup-config-view.ts +388 -0
- package/integrations/bb-plugin-build/src/sprint-close-model.ts +150 -0
- package/integrations/bb-plugin-build/src/sprint-close-schema.ts +128 -0
- package/integrations/bb-plugin-build/src/sprint-close-service.ts +293 -0
- package/integrations/bb-plugin-build/src/sprint-close-view.ts +116 -0
- package/integrations/bb-plugin-build/src/sprint-composition-model.ts +709 -0
- package/integrations/bb-plugin-build/src/sprint-composition-readback.ts +231 -0
- package/integrations/bb-plugin-build/src/sprint-composition-schema.ts +597 -0
- package/integrations/bb-plugin-build/src/sprint-composition-service.ts +773 -0
- package/integrations/bb-plugin-build/src/sprint-composition-view.ts +1221 -0
- package/integrations/bb-plugin-build/src/sprint-execution-schema.ts +188 -0
- package/integrations/bb-plugin-build/src/sprint-execution-service.ts +289 -0
- package/integrations/bb-plugin-build/src/sprint-execution-view.ts +54 -0
- package/integrations/bb-plugin-build/src/task-authoring-model.ts +563 -0
- package/integrations/bb-plugin-build/src/task-authoring-schema.ts +629 -0
- package/integrations/bb-plugin-build/src/task-authoring-service.ts +842 -0
- package/integrations/bb-plugin-build/src/task-authoring-view.ts +1227 -0
- package/integrations/bb-plugin-build/src/task-catalog-schema.ts +46 -0
- package/integrations/bb-plugin-build/src/task-catalog-service.ts +44 -0
- package/integrations/bb-plugin-build/src/task-detail-readback.ts +56 -0
- package/integrations/bb-plugin-build/src/task-detail-schema.ts +171 -0
- package/integrations/bb-plugin-build/src/task-navigation.ts +446 -0
- package/integrations/bb-plugin-build/src/workbench-route.ts +74 -0
- package/package.json +306 -4
- package/schemas/README.md +80 -0
- package/schemas/build.config.schema.json +2110 -0
- package/schemas/config-v1.schema.json +136 -0
- package/schemas/execution-config.schema.json +47 -0
- package/schemas/judge-scoring.schema.json +257 -0
- package/schemas/provider-config.schema.json +179 -0
- package/schemas/telemetry-config.schema.json +79 -0
- package/schemas/user-preferences.schema.json +141 -0
- package/scripts/assert-node-runtime.mjs +146 -0
- package/scripts/preflight-native.mjs +49 -0
- package/scripts/setup-git-hooks.mjs +39 -0
- package/scripts/sync.sh +2871 -0
- package/scripts/write-node-launcher.sh +138 -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/.build-project/README.md +41 -0
- package/templates/.build-project/agents/README.md +50 -0
- package/templates/.build-project/agents/architect.md +10 -0
- package/templates/.build-project/agents/code-reviewer.md +10 -0
- package/templates/.build-project/agents/debugger.md +10 -0
- package/templates/.build-project/agents/documenter.md +10 -0
- package/templates/.build-project/agents/test-automator.md +10 -0
- package/templates/.build-project/config/build.config.jsonc +64 -0
- package/templates/.build-project/config/project-context.template.json +6 -0
- package/templates/.build-project/config/task-type-aliases.presets/kanban.yaml +14 -0
- package/templates/.build-project/config/task-type-aliases.presets/scrum.yaml +17 -0
- package/templates/.build-project/config/task-type-aliases.presets/xp.yaml +12 -0
- package/templates/.build-project/config/task-type-aliases.yaml +29 -0
- package/templates/.build-project/gitignore.template +70 -0
- package/templates/.build-project/task-types/analysis.yaml +38 -0
- package/templates/.build-project/task-types/architecture.yaml +35 -0
- package/templates/.build-project/task-types/doc.yaml +34 -0
- package/templates/.build-project/task-types/feature.yaml +22 -0
- package/templates/.build-project/task-types/general.yaml +4 -0
- package/templates/.build-project/task-types/security.yaml +38 -0
- package/templates/AGENTS.template.md +85 -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/skills/code-review/SKILL.md +61 -0
- package/templates/builtin-workflows/skills/execution-contract-analysis/SKILL.md +24 -0
- package/templates/builtin-workflows/skills/execution-contract-code/SKILL.md +19 -0
- package/templates/builtin-workflows/skills/execution-contract-structured/SKILL.md +17 -0
- package/templates/ci/incident-intake.mjs +787 -0
- package/templates/ci/incidents.yml.template +103 -0
- package/templates/ci/node.yml.template +17 -0
- package/templates/ci/python.yml.template +17 -0
- package/templates/guard-kit/GUARD_SETUP.md.template +258 -0
- package/templates/guard-kit/build-guard.yml.template +189 -0
- package/templates/guard-kit/check.mjs.template +932 -0
- package/templates/guard-kit/config.json.template +7 -0
- package/templates/guard-kit/policy.json.template +1 -0
- package/templates/profiles/README.md +57 -0
- package/templates/profiles/frontier-claude.json +23 -0
- package/templates/profiles/frontier-codex.json +23 -0
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure presentation and navigation helpers for the read-only task surfaces of
|
|
3
|
+
* the existing Planning Workspace.
|
|
4
|
+
*
|
|
5
|
+
* Every value here comes from data the caller already read from Build. Nothing
|
|
6
|
+
* in this module reads Build internals, managed planning files, Git, the
|
|
7
|
+
* filesystem, or the network, and nothing mutates planning state: Build remains
|
|
8
|
+
* the planning authority.
|
|
9
|
+
*
|
|
10
|
+
* Dependency classification, blocker reasons, and next-candidate order are
|
|
11
|
+
* rendered exactly as Build published them. This module never recomputes
|
|
12
|
+
* dependency satisfaction, re-ranks candidates, or invents a status. Empty,
|
|
13
|
+
* missing, unavailable, archived, and diverged states stay separate and are
|
|
14
|
+
* never collapsed into one another.
|
|
15
|
+
*
|
|
16
|
+
* The navigation targets below address only Build's existing single-task detail
|
|
17
|
+
* read and the existing backlog-detail read. No second workspace, poller, task
|
|
18
|
+
* mirror, or competition/judge action is introduced here.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import type { CanonicalTaskStatus } from './planning-service.js';
|
|
22
|
+
import { PRESENTED_TASK_STATUS } from './planning-service.js';
|
|
23
|
+
import type {
|
|
24
|
+
PlanningBlockerRecord,
|
|
25
|
+
PlanningDependencyRecord,
|
|
26
|
+
PlanningNextCandidateView,
|
|
27
|
+
PlanningQueueView,
|
|
28
|
+
PlanningTaskStatus,
|
|
29
|
+
PlanningTaskView,
|
|
30
|
+
} from './planning-workspace.js';
|
|
31
|
+
import { PLANNING_QUEUE_LABELS } from './planning-workspace.js';
|
|
32
|
+
import type { TaskDetailFacts, TaskDetailResult } from './task-detail-schema.js';
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Where a read-only navigation action goes. Only surfaces that already exist are
|
|
36
|
+
* addressable: one canonical task detail read, or the existing backlog detail.
|
|
37
|
+
*/
|
|
38
|
+
export type PlanningNavigationTarget =
|
|
39
|
+
| { kind: 'task'; taskId: string }
|
|
40
|
+
| { kind: 'backlog'; backlogItemId: string };
|
|
41
|
+
|
|
42
|
+
export type PlanningTaskNavigationTarget = Extract<PlanningNavigationTarget, { kind: 'task' }>;
|
|
43
|
+
|
|
44
|
+
export type PlanningBacklogNavigationTarget = Extract<
|
|
45
|
+
PlanningNavigationTarget,
|
|
46
|
+
{ kind: 'backlog' }
|
|
47
|
+
>;
|
|
48
|
+
|
|
49
|
+
function taskTarget(taskId: string): PlanningTaskNavigationTarget {
|
|
50
|
+
return { kind: 'task', taskId };
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function backlogTarget(backlogItemId: string): PlanningBacklogNavigationTarget {
|
|
54
|
+
return { kind: 'backlog', backlogItemId };
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** One selectable task row inside a queue. */
|
|
58
|
+
export interface PlanningTaskRowView {
|
|
59
|
+
/** The queue task exactly as the workspace view reported it. */
|
|
60
|
+
task: PlanningTaskView;
|
|
61
|
+
/** Queue this row belongs to; every queue yields selectable rows. */
|
|
62
|
+
queue: PlanningTaskStatus;
|
|
63
|
+
selected: boolean;
|
|
64
|
+
/** Selecting a row reads fresh canonical detail for this task id. */
|
|
65
|
+
target: PlanningTaskNavigationTarget;
|
|
66
|
+
/** Existing backlog-detail target; null when Build published no link. */
|
|
67
|
+
linkedBacklog: PlanningBacklogNavigationTarget | null;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export interface PlanningTaskQueueRowsView {
|
|
71
|
+
status: PlanningTaskStatus;
|
|
72
|
+
label: string;
|
|
73
|
+
rows: readonly PlanningTaskRowView[];
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Make every queue's tasks selectable, preserving the queue order and the task
|
|
78
|
+
* order the workspace view already produced.
|
|
79
|
+
*/
|
|
80
|
+
export function buildTaskQueueRows(
|
|
81
|
+
queues: readonly PlanningQueueView[],
|
|
82
|
+
selectedTaskId: string | null
|
|
83
|
+
): readonly PlanningTaskQueueRowsView[] {
|
|
84
|
+
return queues.map((queue) => ({
|
|
85
|
+
status: queue.status,
|
|
86
|
+
label: queue.label,
|
|
87
|
+
rows: queue.tasks.map((task) => ({
|
|
88
|
+
task,
|
|
89
|
+
queue: queue.status,
|
|
90
|
+
selected: selectedTaskId !== null && task.id === selectedTaskId,
|
|
91
|
+
target: taskTarget(task.id),
|
|
92
|
+
linkedBacklog:
|
|
93
|
+
task.linkedBacklogItemId === null ? null : backlogTarget(task.linkedBacklogItemId),
|
|
94
|
+
})),
|
|
95
|
+
}));
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Find one selectable row by task id. Returns null when the id is not in this
|
|
100
|
+
* projection, which stays distinct from a task that is present but unselected.
|
|
101
|
+
*/
|
|
102
|
+
export function findTaskRow(
|
|
103
|
+
queues: readonly PlanningTaskQueueRowsView[],
|
|
104
|
+
taskId: string
|
|
105
|
+
): PlanningTaskRowView | null {
|
|
106
|
+
for (const queue of queues) {
|
|
107
|
+
const row = queue.rows.find((entry) => entry.task.id === taskId);
|
|
108
|
+
if (row) return row;
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export interface PlanningNextCandidateNavigationView {
|
|
114
|
+
/** Build's candidate, including its reasoning, passed through verbatim. */
|
|
115
|
+
candidate: PlanningNextCandidateView;
|
|
116
|
+
/** Build's published position (1-based), kept so the order stays auditable. */
|
|
117
|
+
order: number;
|
|
118
|
+
/** Null when Build's kind has no read-only detail surface in this panel. */
|
|
119
|
+
target: PlanningNavigationTarget | null;
|
|
120
|
+
/** Why no navigation is offered; null when a target exists. */
|
|
121
|
+
unnavigableReason: string | null;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Attach a navigation target to each next candidate in Build's order. Tasks go
|
|
126
|
+
* to canonical task detail and backlog items to the existing backlog detail;
|
|
127
|
+
* any other kind Build reports is disclosed rather than guessed at. This helper
|
|
128
|
+
* never sorts or re-ranks the list.
|
|
129
|
+
*/
|
|
130
|
+
export function buildNextCandidateNavigation(
|
|
131
|
+
candidates: readonly PlanningNextCandidateView[]
|
|
132
|
+
): readonly PlanningNextCandidateNavigationView[] {
|
|
133
|
+
return candidates.map((candidate, index) => {
|
|
134
|
+
const order = index + 1;
|
|
135
|
+
if (candidate.kind === 'task') {
|
|
136
|
+
return { candidate, order, target: taskTarget(candidate.id), unnavigableReason: null };
|
|
137
|
+
}
|
|
138
|
+
if (candidate.kind === 'backlog') {
|
|
139
|
+
return { candidate, order, target: backlogTarget(candidate.id), unnavigableReason: null };
|
|
140
|
+
}
|
|
141
|
+
return {
|
|
142
|
+
candidate,
|
|
143
|
+
order,
|
|
144
|
+
target: null,
|
|
145
|
+
unnavigableReason: `Build reports this candidate as kind "${candidate.kind}", which has no read-only detail surface in this panel.`,
|
|
146
|
+
};
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const TASK_STATUS_LABELS: Readonly<Record<CanonicalTaskStatus, string>> = {
|
|
151
|
+
todo: 'To do',
|
|
152
|
+
in_progress: 'In progress',
|
|
153
|
+
review: 'Review',
|
|
154
|
+
done: 'Done',
|
|
155
|
+
blocked: 'Blocked',
|
|
156
|
+
cancelled: 'Cancelled',
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
const TASK_LOCATION_LABELS: Readonly<Record<'active' | 'archive', string>> = {
|
|
160
|
+
active: 'Active',
|
|
161
|
+
archive: 'Archived',
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Build's dependency classification in words. `recorded-complete` keeps its own
|
|
166
|
+
* label so it is never read as a loaded task file or as a missing dependency.
|
|
167
|
+
*/
|
|
168
|
+
const DEPENDENCY_STATE_LABELS: Readonly<Record<PlanningDependencyRecord['state'], string>> = {
|
|
169
|
+
available: 'Dependency task is present in managed planning',
|
|
170
|
+
'recorded-complete': 'Recorded complete on the sprint; the task file is not present',
|
|
171
|
+
missing: 'Dependency task is not present in managed planning',
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
const BLOCKER_KIND_LABELS: Readonly<Record<PlanningBlockerRecord['kind'], string>> = {
|
|
175
|
+
'task-status': "This task's own recorded status",
|
|
176
|
+
dependency: 'Dependency',
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
export const UNREPORTED_TASK_STATUS_LABEL = 'Status not reported';
|
|
180
|
+
export const UNREPORTED_TASK_LOCATION_LABEL = 'Location not reported';
|
|
181
|
+
export const UNREPORTED_DEPENDENCY_STATUS_LABEL = 'Dependency status not reported';
|
|
182
|
+
export const UNREPORTED_BLOCKER_REASON_LABEL = 'Build recorded no reason for this blocker';
|
|
183
|
+
export const UNREPORTED_TASK_TITLE_LABEL = 'Title not reported';
|
|
184
|
+
export const NO_DEPENDENCIES_LABEL = 'Build reports no dependencies for this task.';
|
|
185
|
+
export const NO_BLOCKERS_LABEL = 'Build reports no blockers for this task.';
|
|
186
|
+
export const NO_LINKED_BACKLOG_LABEL = 'Build reports no linked backlog item.';
|
|
187
|
+
export const ARCHIVED_TASK_NOTICE =
|
|
188
|
+
'Build reports this task in the archive bucket, not in active planning.';
|
|
189
|
+
|
|
190
|
+
function taskStatusLabel(status: CanonicalTaskStatus | null): string {
|
|
191
|
+
return status === null ? UNREPORTED_TASK_STATUS_LABEL : TASK_STATUS_LABELS[status];
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
export interface TaskDetailTimestampView {
|
|
195
|
+
label: string;
|
|
196
|
+
/** Build's timestamp verbatim; null when Build reported none. */
|
|
197
|
+
value: string | null;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
export interface TaskDetailDependencyRowView {
|
|
201
|
+
id: string;
|
|
202
|
+
state: PlanningDependencyRecord['state'];
|
|
203
|
+
status: CanonicalTaskStatus | null;
|
|
204
|
+
satisfied: boolean;
|
|
205
|
+
stateLabel: string;
|
|
206
|
+
statusLabel: string;
|
|
207
|
+
satisfactionLabel: string;
|
|
208
|
+
/**
|
|
209
|
+
* A missing dependency stays navigable: the canonical read reports missing
|
|
210
|
+
* explicitly, which is more honest than hiding the id.
|
|
211
|
+
*/
|
|
212
|
+
target: PlanningTaskNavigationTarget;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
export interface TaskDetailBlockerRowView {
|
|
216
|
+
kind: PlanningBlockerRecord['kind'];
|
|
217
|
+
id: string;
|
|
218
|
+
kindLabel: string;
|
|
219
|
+
/** Build's reason, or an explicit label when Build recorded none. */
|
|
220
|
+
reason: string;
|
|
221
|
+
/**
|
|
222
|
+
* Null for a `task-status` blocker: it is this task's own status, so there is
|
|
223
|
+
* nowhere else to navigate.
|
|
224
|
+
*/
|
|
225
|
+
target: PlanningTaskNavigationTarget | null;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
export interface TaskDetailAvailableView {
|
|
229
|
+
state: 'available';
|
|
230
|
+
id: string;
|
|
231
|
+
title: string;
|
|
232
|
+
status: CanonicalTaskStatus | null;
|
|
233
|
+
statusLabel: string;
|
|
234
|
+
locationLabel: string;
|
|
235
|
+
/** True only when Build reported the archive bucket. */
|
|
236
|
+
archived: boolean;
|
|
237
|
+
archivedNotice: string | null;
|
|
238
|
+
assigneeLabel: string;
|
|
239
|
+
priorityLabel: string;
|
|
240
|
+
estimateLine: string;
|
|
241
|
+
/** All lifecycle timestamps, so an absent one is visible rather than omitted. */
|
|
242
|
+
timestamps: readonly TaskDetailTimestampView[];
|
|
243
|
+
dependencies: readonly TaskDetailDependencyRowView[];
|
|
244
|
+
dependenciesEmptyLabel: string;
|
|
245
|
+
blockers: readonly TaskDetailBlockerRowView[];
|
|
246
|
+
blockersEmptyLabel: string;
|
|
247
|
+
linkedBacklog: PlanningBacklogNavigationTarget | null;
|
|
248
|
+
linkedBacklogEmptyLabel: string;
|
|
249
|
+
/** Build's projection version, or null when it reported none. */
|
|
250
|
+
schemaVersion: string | null;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
export interface TaskDetailAbsentView {
|
|
254
|
+
state: 'missing' | 'unavailable';
|
|
255
|
+
taskId: string;
|
|
256
|
+
headline: string;
|
|
257
|
+
detail: string;
|
|
258
|
+
schemaVersion: string | null;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
export type TaskDetailView = TaskDetailAvailableView | TaskDetailAbsentView;
|
|
262
|
+
|
|
263
|
+
/** One canonical task-detail reply as the panel received it. */
|
|
264
|
+
export interface TaskDetailInput {
|
|
265
|
+
/** The task id BB asked for, used for missing and unavailable headlines. */
|
|
266
|
+
taskId: string;
|
|
267
|
+
schemaVersion: string | null;
|
|
268
|
+
task: TaskDetailResult;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
function estimateLine(estimates: TaskDetailFacts['estimates']): string {
|
|
272
|
+
const hours = estimates.hours === null ? 'unavailable' : String(estimates.hours);
|
|
273
|
+
const runtime =
|
|
274
|
+
estimates.runtimeMinutes === null ? 'unavailable' : String(estimates.runtimeMinutes);
|
|
275
|
+
return `estimate ${hours}h / ${runtime}m runtime`;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
function timestampViews(facts: TaskDetailFacts): TaskDetailTimestampView[] {
|
|
279
|
+
return [
|
|
280
|
+
{ label: 'Created', value: facts.created },
|
|
281
|
+
{ label: 'Updated', value: facts.updated },
|
|
282
|
+
{ label: 'Started', value: facts.started },
|
|
283
|
+
{ label: 'Completed', value: facts.completed },
|
|
284
|
+
{ label: 'Archived', value: facts.archived },
|
|
285
|
+
{ label: 'Cancelled', value: facts.cancelled },
|
|
286
|
+
];
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
function dependencyRows(facts: TaskDetailFacts): TaskDetailDependencyRowView[] {
|
|
290
|
+
// Build's order and classification pass through; satisfaction is never re-decided.
|
|
291
|
+
return facts.dependencies.map((dependency) => ({
|
|
292
|
+
id: dependency.id,
|
|
293
|
+
state: dependency.state,
|
|
294
|
+
status: dependency.status,
|
|
295
|
+
satisfied: dependency.satisfied,
|
|
296
|
+
stateLabel: DEPENDENCY_STATE_LABELS[dependency.state],
|
|
297
|
+
statusLabel:
|
|
298
|
+
dependency.status === null
|
|
299
|
+
? UNREPORTED_DEPENDENCY_STATUS_LABEL
|
|
300
|
+
: TASK_STATUS_LABELS[dependency.status],
|
|
301
|
+
satisfactionLabel: dependency.satisfied ? 'Satisfied' : 'Unsatisfied',
|
|
302
|
+
target: taskTarget(dependency.id),
|
|
303
|
+
}));
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
function blockerRows(facts: TaskDetailFacts): TaskDetailBlockerRowView[] {
|
|
307
|
+
return facts.blockers.map((blocker) => ({
|
|
308
|
+
kind: blocker.kind,
|
|
309
|
+
id: blocker.id,
|
|
310
|
+
kindLabel: BLOCKER_KIND_LABELS[blocker.kind],
|
|
311
|
+
reason: blocker.reason ?? UNREPORTED_BLOCKER_REASON_LABEL,
|
|
312
|
+
target: blocker.kind === 'dependency' ? taskTarget(blocker.id) : null,
|
|
313
|
+
}));
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Project one canonical task-detail reply into the panel's rendered shape.
|
|
318
|
+
*
|
|
319
|
+
* Missing and unavailable keep separate states and are never rendered as a
|
|
320
|
+
* healthy task. Archived is disclosed on an otherwise available task rather than
|
|
321
|
+
* being treated as absence.
|
|
322
|
+
*/
|
|
323
|
+
export function buildTaskDetailView(input: TaskDetailInput): TaskDetailView {
|
|
324
|
+
if (input.task.state === 'missing') {
|
|
325
|
+
return {
|
|
326
|
+
state: 'missing',
|
|
327
|
+
taskId: input.taskId,
|
|
328
|
+
headline: 'Task not found',
|
|
329
|
+
detail: `Build reports no managed task with id ${input.taskId}.`,
|
|
330
|
+
schemaVersion: input.schemaVersion,
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
if (input.task.state === 'unavailable') {
|
|
334
|
+
return {
|
|
335
|
+
state: 'unavailable',
|
|
336
|
+
taskId: input.taskId,
|
|
337
|
+
headline: 'Task detail unavailable',
|
|
338
|
+
detail: input.task.reason,
|
|
339
|
+
schemaVersion: input.schemaVersion,
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
const facts = input.task.value;
|
|
344
|
+
const archived = facts.location === 'archive';
|
|
345
|
+
return {
|
|
346
|
+
state: 'available',
|
|
347
|
+
id: facts.id,
|
|
348
|
+
title: facts.title ?? UNREPORTED_TASK_TITLE_LABEL,
|
|
349
|
+
status: facts.status,
|
|
350
|
+
statusLabel: taskStatusLabel(facts.status),
|
|
351
|
+
locationLabel:
|
|
352
|
+
facts.location === null
|
|
353
|
+
? UNREPORTED_TASK_LOCATION_LABEL
|
|
354
|
+
: TASK_LOCATION_LABELS[facts.location],
|
|
355
|
+
archived,
|
|
356
|
+
archivedNotice: archived ? ARCHIVED_TASK_NOTICE : null,
|
|
357
|
+
assigneeLabel: facts.assignee ?? 'Unassigned',
|
|
358
|
+
priorityLabel: facts.priority ?? 'No priority reported',
|
|
359
|
+
estimateLine: estimateLine(facts.estimates),
|
|
360
|
+
timestamps: timestampViews(facts),
|
|
361
|
+
dependencies: dependencyRows(facts),
|
|
362
|
+
dependenciesEmptyLabel: NO_DEPENDENCIES_LABEL,
|
|
363
|
+
blockers: blockerRows(facts),
|
|
364
|
+
blockersEmptyLabel: NO_BLOCKERS_LABEL,
|
|
365
|
+
linkedBacklog:
|
|
366
|
+
facts.linkedBacklogItemId === null ? null : backlogTarget(facts.linkedBacklogItemId),
|
|
367
|
+
linkedBacklogEmptyLabel: NO_LINKED_BACKLOG_LABEL,
|
|
368
|
+
schemaVersion: input.schemaVersion,
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* Whether the selected queue row still agrees with the freshly read canonical
|
|
374
|
+
* detail. `unknown` means the two cannot be compared at all, which stays
|
|
375
|
+
* distinct from an observed divergence.
|
|
376
|
+
*/
|
|
377
|
+
export interface TaskDetailFreshnessView {
|
|
378
|
+
state: 'consistent' | 'diverged' | 'unknown';
|
|
379
|
+
label: string;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* Compare the selected queue row with canonical detail on the one field both
|
|
384
|
+
* publish: task status. This is an equality check over two values Build already
|
|
385
|
+
* reported, not a recomputed planning decision, and the canonical detail always
|
|
386
|
+
* remains authoritative.
|
|
387
|
+
*/
|
|
388
|
+
export function buildTaskDetailFreshnessView(
|
|
389
|
+
row: PlanningTaskRowView | null,
|
|
390
|
+
detail: TaskDetailView
|
|
391
|
+
): TaskDetailFreshnessView {
|
|
392
|
+
if (detail.state !== 'available') {
|
|
393
|
+
return {
|
|
394
|
+
state: 'unknown',
|
|
395
|
+
label: 'Canonical task detail is not available, so the queue row cannot be compared with it.',
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
if (!row) {
|
|
399
|
+
return {
|
|
400
|
+
state: 'unknown',
|
|
401
|
+
label:
|
|
402
|
+
'This task is not in the current workspace projection; the canonical detail above is authoritative.',
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
if (detail.status === null) {
|
|
406
|
+
return {
|
|
407
|
+
state: 'unknown',
|
|
408
|
+
label:
|
|
409
|
+
'Build reported no status on the canonical detail, so the queue row cannot be compared with it.',
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
const canonicalQueue = PRESENTED_TASK_STATUS[detail.status];
|
|
413
|
+
if (canonicalQueue === row.task.status) {
|
|
414
|
+
return { state: 'consistent', label: 'The queue row matches the canonical task detail.' };
|
|
415
|
+
}
|
|
416
|
+
return {
|
|
417
|
+
state: 'diverged',
|
|
418
|
+
label: `The queue row shows ${PLANNING_QUEUE_LABELS[row.task.status]} and the canonical detail reports ${PLANNING_QUEUE_LABELS[canonicalQueue]}; the workspace projection is stale.`,
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
/**
|
|
423
|
+
* Identity of one task-detail read. `requestId` is monotonic per panel so two
|
|
424
|
+
* selections of the same task id stay distinguishable when their replies arrive
|
|
425
|
+
* out of order. Repository generation remains a separate guard.
|
|
426
|
+
*/
|
|
427
|
+
export interface TaskDetailRequestIdentity {
|
|
428
|
+
taskId: string;
|
|
429
|
+
requestId: number;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/** Allocate the next monotonic task-detail request id. */
|
|
433
|
+
export function nextTaskDetailRequestId(previousRequestId: number): number {
|
|
434
|
+
return previousRequestId + 1;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
/**
|
|
438
|
+
* Whether a task-detail reply still belongs to the newest request. Compared by
|
|
439
|
+
* request id so a same-id reselection discards an older in-flight reply.
|
|
440
|
+
*/
|
|
441
|
+
export function isCurrentTaskDetailRequest(
|
|
442
|
+
latest: TaskDetailRequestIdentity | null,
|
|
443
|
+
reply: TaskDetailRequestIdentity
|
|
444
|
+
): boolean {
|
|
445
|
+
return latest !== null && latest.requestId === reply.requestId;
|
|
446
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export type BuildWorkbenchRoute =
|
|
2
|
+
| { kind: 'overview' }
|
|
3
|
+
| { kind: 'plan' }
|
|
4
|
+
| { kind: 'task'; taskId: string }
|
|
5
|
+
| { kind: 'backlog' }
|
|
6
|
+
| { kind: 'backlog-detail'; backlogItemId: string }
|
|
7
|
+
| { kind: 'runs' }
|
|
8
|
+
| { kind: 'run'; runKey: string }
|
|
9
|
+
| { kind: 'settings' };
|
|
10
|
+
|
|
11
|
+
function decodeIdentity(value: string): string | null {
|
|
12
|
+
try {
|
|
13
|
+
const decoded = decodeURIComponent(value).trim();
|
|
14
|
+
return decoded.length > 0 ? decoded : null;
|
|
15
|
+
} catch {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function backlogDetail(identity: string | undefined): BuildWorkbenchRoute | null {
|
|
21
|
+
if (!identity) return null;
|
|
22
|
+
const backlogItemId = decodeIdentity(identity);
|
|
23
|
+
return backlogItemId ? { kind: 'backlog-detail', backlogItemId } : null;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function runDetail(identity: string | undefined): BuildWorkbenchRoute | null {
|
|
27
|
+
if (!identity) return null;
|
|
28
|
+
const runKey = decodeIdentity(identity);
|
|
29
|
+
return runKey ? { kind: 'run', runKey } : null;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** Parse BB's plugin-owned route remainder without adding another router. */
|
|
33
|
+
export function parseBuildWorkbenchRoute(subPath: string): BuildWorkbenchRoute {
|
|
34
|
+
const parts = subPath.split('/').filter(Boolean);
|
|
35
|
+
if (parts.length === 0 || parts[0] === 'overview') return { kind: 'overview' };
|
|
36
|
+
if (parts[0] === 'plan' && parts.length === 1) return { kind: 'plan' };
|
|
37
|
+
if (parts[0] === 'plan' && parts[1] === 'tasks' && parts.length === 3) {
|
|
38
|
+
const taskId = decodeIdentity(parts[2]);
|
|
39
|
+
if (taskId) return { kind: 'task', taskId };
|
|
40
|
+
}
|
|
41
|
+
if (parts[0] === 'plan' && parts[1] === 'backlog' && parts.length === 2) {
|
|
42
|
+
return { kind: 'backlog' };
|
|
43
|
+
}
|
|
44
|
+
if (parts[0] === 'plan' && parts[1] === 'backlog' && parts.length === 3) {
|
|
45
|
+
const detail = backlogDetail(parts[2]);
|
|
46
|
+
if (detail) return detail;
|
|
47
|
+
}
|
|
48
|
+
if (parts[0] === 'backlog' && parts.length === 1) return { kind: 'backlog' };
|
|
49
|
+
if (parts[0] === 'backlog' && parts.length === 2) {
|
|
50
|
+
const detail = backlogDetail(parts[1]);
|
|
51
|
+
if (detail) return detail;
|
|
52
|
+
}
|
|
53
|
+
if (parts[0] === 'run' && parts.length === 1) return { kind: 'runs' };
|
|
54
|
+
if (parts[0] === 'run' && parts.length === 2) {
|
|
55
|
+
const detail = runDetail(parts[1]);
|
|
56
|
+
if (detail) return detail;
|
|
57
|
+
}
|
|
58
|
+
if (parts[0] === 'runs' && parts.length === 1) return { kind: 'runs' };
|
|
59
|
+
if (parts[0] === 'runs' && parts.length === 2) {
|
|
60
|
+
const detail = runDetail(parts[1]);
|
|
61
|
+
if (detail) return detail;
|
|
62
|
+
}
|
|
63
|
+
if ((parts[0] === 'settings' || parts[0] === 'setup') && parts.length === 1) {
|
|
64
|
+
return { kind: 'settings' };
|
|
65
|
+
}
|
|
66
|
+
return { kind: 'overview' };
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export function buildEntitySubPath(kind: 'task' | 'backlog' | 'run', identity: string): string {
|
|
70
|
+
const encoded = encodeURIComponent(identity);
|
|
71
|
+
if (kind === 'task') return `plan/tasks/${encoded}`;
|
|
72
|
+
if (kind === 'backlog') return `plan/backlog/${encoded}`;
|
|
73
|
+
return `run/${encoded}`;
|
|
74
|
+
}
|