@ashlr/hub 3.11.0 → 3.11.2
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/CHANGELOG.md +96 -0
- package/dist/authority-surface.json +12 -7
- package/dist/build-identity.json +2 -2
- package/dist/core/universe/builtins/preparation/manifest.json +1 -1
- package/dist/core/universe/builtins/preparation/preparation-bridge.mjs +5 -4
- package/dist/core/universe/builtins/preparation/preparation-verification-fixtures.mjs +4 -3
- package/dist/core/universe/campaign.js +9 -1
- package/dist/core/universe/campaign.js.map +1 -1
- package/dist/core/universe/runner.d.ts +3 -0
- package/dist/core/universe/runner.js +7 -3
- package/dist/core/universe/runner.js.map +1 -1
- package/dist/core/verse/compaction-point.d.ts +55 -0
- package/dist/core/verse/compaction-point.js +75 -0
- package/dist/core/verse/compaction-point.js.map +1 -0
- package/dist/core/verse/context-math.d.ts +1 -38
- package/dist/core/verse/context-math.js +5 -59
- package/dist/core/verse/context-math.js.map +1 -1
- package/dist/core/web/public/next/assets/{ActionMenu-CQvNJvHY.js → ActionMenu-_DhtX2gO.js} +2 -2
- package/dist/core/web/public/next/assets/{ActionMenu-CQvNJvHY.js.map → ActionMenu-_DhtX2gO.js.map} +1 -1
- package/dist/core/web/public/next/assets/Advanced-CAAfaBke.js +2 -0
- package/dist/core/web/public/next/assets/{Advanced-DEM93sKI.js.map → Advanced-CAAfaBke.js.map} +1 -1
- package/dist/core/web/public/next/assets/App-BAywyjE8.js +7 -0
- package/dist/core/web/public/next/assets/{App-CimXmK0L.js.map → App-BAywyjE8.js.map} +1 -1
- package/dist/core/web/public/next/assets/AppsSection-CUypKeog.js +2 -0
- package/dist/core/web/public/next/assets/{AppsSection-D6U-dSj6.js.map → AppsSection-CUypKeog.js.map} +1 -1
- package/dist/core/web/public/next/assets/{AreaTrend-LD9lCPkT.js → AreaTrend-CblDqC8Q.js} +2 -2
- package/dist/core/web/public/next/assets/{AreaTrend-LD9lCPkT.js.map → AreaTrend-CblDqC8Q.js.map} +1 -1
- package/dist/core/web/public/next/assets/AutonomySection-D3d8lYO3.js +2 -0
- package/dist/core/web/public/next/assets/{AutonomySection-3V9pUyxm.js.map → AutonomySection-D3d8lYO3.js.map} +1 -1
- package/dist/core/web/public/next/assets/BranchBar-DU0jAV1E.js +2 -0
- package/dist/core/web/public/next/assets/{BranchBar-U8UdpfEB.js.map → BranchBar-DU0jAV1E.js.map} +1 -1
- package/dist/core/web/public/next/assets/{BudgetControl-DOTlMSmW.js → BudgetControl-Mm1ZL4u6.js} +2 -2
- package/dist/core/web/public/next/assets/{BudgetControl-DOTlMSmW.js.map → BudgetControl-Mm1ZL4u6.js.map} +1 -1
- package/dist/core/web/public/next/assets/{BurnDown-x4PWH9JF.js → BurnDown-C1fgcFqo.js} +2 -2
- package/dist/core/web/public/next/assets/{BurnDown-x4PWH9JF.js.map → BurnDown-C1fgcFqo.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Button-DYv_KKxr.js → Button-DqgLUZvd.js} +2 -2
- package/dist/core/web/public/next/assets/{Button-DYv_KKxr.js.map → Button-DqgLUZvd.js.map} +1 -1
- package/dist/core/web/public/next/assets/CapacityStrip-nWFHvqFB.js +2 -0
- package/dist/core/web/public/next/assets/CapacityStrip-nWFHvqFB.js.map +1 -0
- package/dist/core/web/public/next/assets/ChatSection-DUZNpiVr.js +3 -0
- package/dist/core/web/public/next/assets/ChatSection-DUZNpiVr.js.map +1 -0
- package/dist/core/web/public/next/assets/{CloudBudgetForm-DJeJvBEu.js → CloudBudgetForm-2OW38o_C.js} +2 -2
- package/dist/core/web/public/next/assets/{CloudBudgetForm-DJeJvBEu.js.map → CloudBudgetForm-2OW38o_C.js.map} +1 -1
- package/dist/core/web/public/next/assets/CommandPalette-C5w2o1-r.js +2 -0
- package/dist/core/web/public/next/assets/{CommandPalette-FiD4N8XD.js.map → CommandPalette-C5w2o1-r.js.map} +1 -1
- package/dist/core/web/public/next/assets/CommandSection-Bx2knNqY.js +2 -0
- package/dist/core/web/public/next/assets/{CommandSection-DN8KwH-X.js.map → CommandSection-Bx2knNqY.js.map} +1 -1
- package/dist/core/web/public/next/assets/ConfirmDialog-B7ZwCQOX.js +2 -0
- package/dist/core/web/public/next/assets/ConfirmDialog-B7ZwCQOX.js.map +1 -0
- package/dist/core/web/public/next/assets/ConfirmDialog-Dx15x0Ho.css +1 -0
- package/dist/core/web/public/next/assets/Dialog-BpgcEW6b.js +2 -0
- package/dist/core/web/public/next/assets/Dialog-BpgcEW6b.js.map +1 -0
- package/dist/core/web/public/next/assets/Dialog-tQ8kFulD.css +1 -0
- package/dist/core/web/public/next/assets/{DiffPane-DLJ3gGGK.js → DiffPane-DpqRUtCx.js} +2 -2
- package/dist/core/web/public/next/assets/{DiffPane-DLJ3gGGK.js.map → DiffPane-DpqRUtCx.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DiffViewer-B7NWPjIO.js → DiffViewer-CoV5-nUf.js} +2 -2
- package/dist/core/web/public/next/assets/{DiffViewer-B7NWPjIO.js.map → DiffViewer-CoV5-nUf.js.map} +1 -1
- package/dist/core/web/public/next/assets/DockHost-C0Pq7Jak.js +2 -0
- package/dist/core/web/public/next/assets/{DockHost-DvR-hPhZ.js.map → DockHost-C0Pq7Jak.js.map} +1 -1
- package/dist/core/web/public/next/assets/{EmptyState-DhNgDDrF.js → EmptyState-DYW29ncw.js} +2 -2
- package/dist/core/web/public/next/assets/{EmptyState-DhNgDDrF.js.map → EmptyState-DYW29ncw.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Epistemic-uARPnx9x.js → Epistemic-DVx6oHzp.js} +2 -2
- package/dist/core/web/public/next/assets/{Epistemic-uARPnx9x.js.map → Epistemic-DVx6oHzp.js.map} +1 -1
- package/dist/core/web/public/next/assets/FleetSection-DSETviPK.js +3 -0
- package/dist/core/web/public/next/assets/{FleetSection-D_zRBCub.js.map → FleetSection-DSETviPK.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Funnel-CL8uHONq.js → Funnel-DxiGqJrt.js} +2 -2
- package/dist/core/web/public/next/assets/{Funnel-CL8uHONq.js.map → Funnel-DxiGqJrt.js.map} +1 -1
- package/dist/core/web/public/next/assets/GearTray-C3I89sIt.js +2 -0
- package/dist/core/web/public/next/assets/{GearTray-C7k4l_BW.js.map → GearTray-C3I89sIt.js.map} +1 -1
- package/dist/core/web/public/next/assets/{GrowthSection-DwdNSGj8.js → GrowthSection-C3m2bPEz.js} +2 -2
- package/dist/core/web/public/next/assets/{GrowthSection-DwdNSGj8.js.map → GrowthSection-C3m2bPEz.js.map} +1 -1
- package/dist/core/web/public/next/assets/HandoffDialog-Bjb96a0N.js +2 -0
- package/dist/core/web/public/next/assets/{HandoffDialog-FPVOqOMN.js.map → HandoffDialog-Bjb96a0N.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Input-B9-VLcHS.js → Input-ekTehVaH.js} +2 -2
- package/dist/core/web/public/next/assets/{Input-B9-VLcHS.js.map → Input-ekTehVaH.js.map} +1 -1
- package/dist/core/web/public/next/assets/LeaderCard-85VBbbaZ.js +2 -0
- package/dist/core/web/public/next/assets/{LeaderCard-4R0BhDzT.js.map → LeaderCard-85VBbbaZ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MatrixHeatmap-DiuushcS.js → MatrixHeatmap-Bo8j0QPC.js} +2 -2
- package/dist/core/web/public/next/assets/{MatrixHeatmap-DiuushcS.js.map → MatrixHeatmap-Bo8j0QPC.js.map} +1 -1
- package/dist/core/web/public/next/assets/McpSection-DvHFaVyp.js +2 -0
- package/dist/core/web/public/next/assets/{McpSection-CJ__OJKl.js.map → McpSection-DvHFaVyp.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdown-qWKyJvAQ.js → MessageMarkdown-fsY_ltVa.js} +3 -3
- package/dist/core/web/public/next/assets/{MessageMarkdown-qWKyJvAQ.js.map → MessageMarkdown-fsY_ltVa.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-x05TrsrW.js → MessageMarkdownRenderer-DDdtu82l.js} +2 -2
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-x05TrsrW.js.map → MessageMarkdownRenderer-DDdtu82l.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Meter-D-hncpkO.js → Meter-CeGDXdDM.js} +2 -2
- package/dist/core/web/public/next/assets/{Meter-D-hncpkO.js.map → Meter-CeGDXdDM.js.map} +1 -1
- package/dist/core/web/public/next/assets/MindSection-CDVhHvXl.js +2 -0
- package/dist/core/web/public/next/assets/{MindSection-BjXHkQPS.js.map → MindSection-CDVhHvXl.js.map} +1 -1
- package/dist/core/web/public/next/assets/MutationTokenDialog-CrfJ0PdD.css +1 -0
- package/dist/core/web/public/next/assets/MutationTokenDialog-DTQzEOHR.js +2 -0
- package/dist/core/web/public/next/assets/MutationTokenDialog-DTQzEOHR.js.map +1 -0
- package/dist/core/web/public/next/assets/NeedsYouDrawer-6AuN0BF3.js +2 -0
- package/dist/core/web/public/next/assets/{NeedsYouDrawer-rSd1ZHAR.js.map → NeedsYouDrawer-6AuN0BF3.js.map} +1 -1
- package/dist/core/web/public/next/assets/{NeedsYouList-CG-nB1tr.js → NeedsYouList-ChnRmbSk.js} +2 -2
- package/dist/core/web/public/next/assets/{NeedsYouList-CG-nB1tr.js.map → NeedsYouList-ChnRmbSk.js.map} +1 -1
- package/dist/core/web/public/next/assets/NewChatDialog-B06E7sqg.js +3 -0
- package/dist/core/web/public/next/assets/{NewChatDialog-BeDQ1eW3.js.map → NewChatDialog-B06E7sqg.js.map} +1 -1
- package/dist/core/web/public/next/assets/OnboardingFlow-C2M3zov9.js +2 -0
- package/dist/core/web/public/next/assets/{OnboardingFlow-CkTZtt-m.js.map → OnboardingFlow-C2M3zov9.js.map} +1 -1
- package/dist/core/web/public/next/assets/PreviewPane-Bd6HsX1k.js +2 -0
- package/dist/core/web/public/next/assets/{PreviewPane-kzbbSK4u.js.map → PreviewPane-Bd6HsX1k.js.map} +1 -1
- package/dist/core/web/public/next/assets/ProviderLogo-Bz7KR5j3.js +2 -0
- package/dist/core/web/public/next/assets/ProviderLogo-Bz7KR5j3.js.map +1 -0
- package/dist/core/web/public/next/assets/{RailStatus-D-t2gPae.js → RailStatus-CctCuuLy.js} +2 -2
- package/dist/core/web/public/next/assets/{RailStatus-D-t2gPae.js.map → RailStatus-CctCuuLy.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RefreshIndicator-BLnr9IOM.js → RefreshIndicator-CKY5BGdD.js} +2 -2
- package/dist/core/web/public/next/assets/{RefreshIndicator-BLnr9IOM.js.map → RefreshIndicator-CKY5BGdD.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-CM_8pJs6.css → ResourcePoolConsoleApp-BX9JLkT4.css} +1 -1
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-BeG0gBif.js → ResourcePoolConsoleApp-CspIsW_G.js} +5 -5
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-BeG0gBif.js.map → ResourcePoolConsoleApp-CspIsW_G.js.map} +1 -1
- package/dist/core/web/public/next/assets/ResourcesChrome-B7fHZ6zX.js +3 -0
- package/dist/core/web/public/next/assets/ResourcesChrome-B7fHZ6zX.js.map +1 -0
- package/dist/core/web/public/next/assets/ResourcesChrome-uZEqC2EM.css +1 -0
- package/dist/core/web/public/next/assets/ResourcesDrawer-B7-N9n7-.js +2 -0
- package/dist/core/web/public/next/assets/ResourcesDrawer-B7-N9n7-.js.map +1 -0
- package/dist/core/web/public/next/assets/RouteErrorBoundary-C_B11J0s.js +2 -0
- package/dist/core/web/public/next/assets/RouteErrorBoundary-C_B11J0s.js.map +1 -0
- package/dist/core/web/public/next/assets/RouteErrorBoundary-DdxhTdZ6.css +1 -0
- package/dist/core/web/public/next/assets/{RunInCloudAction-C3LBp7C4.js → RunInCloudAction-_juw4EXd.js} +2 -2
- package/dist/core/web/public/next/assets/{RunInCloudAction-C3LBp7C4.js.map → RunInCloudAction-_juw4EXd.js.map} +1 -1
- package/dist/core/web/public/next/assets/SeatSelector-D_YXvkPy.js +3 -0
- package/dist/core/web/public/next/assets/{SeatSelector-DpvvbjNm.js.map → SeatSelector-D_YXvkPy.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Segmented-BL40udoO.js → Segmented-DnKP6rr7.js} +2 -2
- package/dist/core/web/public/next/assets/{Segmented-BL40udoO.js.map → Segmented-DnKP6rr7.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Select-FWLnAw_j.js → Select-DlbUupTX.js} +2 -2
- package/dist/core/web/public/next/assets/{Select-FWLnAw_j.js.map → Select-DlbUupTX.js.map} +1 -1
- package/dist/core/web/public/next/assets/SessionGate-DnuTZACL.js +2 -0
- package/dist/core/web/public/next/assets/SessionGate-DnuTZACL.js.map +1 -0
- package/dist/core/web/public/next/assets/SessionGate-DvMpXNpJ.css +1 -0
- package/dist/core/web/public/next/assets/SessionInsightChip-C33-k-Q5.js +2 -0
- package/dist/core/web/public/next/assets/{SessionInsightChip-CWye87Ju.js.map → SessionInsightChip-C33-k-Q5.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionSearch-YvCHFUuN.js → SessionSearch-DhhR9Csg.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionSearch-YvCHFUuN.js.map → SessionSearch-DhhR9Csg.js.map} +1 -1
- package/dist/core/web/public/next/assets/SettingsSection-C0xQvCz3.js +2 -0
- package/dist/core/web/public/next/assets/SettingsSection-C0xQvCz3.js.map +1 -0
- package/dist/core/web/public/next/assets/Sheet-BvNYOYv5.js +2 -0
- package/dist/core/web/public/next/assets/{Sheet-DZKcQXQg.js.map → Sheet-BvNYOYv5.js.map} +1 -1
- package/dist/core/web/public/next/assets/ShortcutsOverlay-1nUBVO-Z.js +2 -0
- package/dist/core/web/public/next/assets/{ShortcutsOverlay-BpDimdPq.js.map → ShortcutsOverlay-1nUBVO-Z.js.map} +1 -1
- package/dist/core/web/public/next/assets/Sidebar-YrVvvBNM.js +3 -0
- package/dist/core/web/public/next/assets/{Sidebar-BoBzBEFX.js.map → Sidebar-YrVvvBNM.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Slider-DUMo9HDD.js → Slider-B2c-dbQb.js} +2 -2
- package/dist/core/web/public/next/assets/{Slider-DUMo9HDD.js.map → Slider-B2c-dbQb.js.map} +1 -1
- package/dist/core/web/public/next/assets/{StatusBadge-BwnBNFQr.js → StatusBadge-Q9YYkijx.js} +2 -2
- package/dist/core/web/public/next/assets/{StatusBadge-BwnBNFQr.js.map → StatusBadge-Q9YYkijx.js.map} +1 -1
- package/dist/core/web/public/next/assets/{StepBand-PDXMIlRk.js → StepBand-Ci-C0GUG.js} +2 -2
- package/dist/core/web/public/next/assets/{StepBand-PDXMIlRk.js.map → StepBand-Ci-C0GUG.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Surface-B3TZVoER.js → Surface-DBovMq4P.js} +2 -2
- package/dist/core/web/public/next/assets/{Surface-B3TZVoER.js.map → Surface-DBovMq4P.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Swimlane-DR4OgON_.js → Swimlane-Cdc4TqDe.js} +2 -2
- package/dist/core/web/public/next/assets/{Swimlane-DR4OgON_.js.map → Swimlane-Cdc4TqDe.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Switch-CcR5Llk5.js → Switch-CUrvzO2k.js} +2 -2
- package/dist/core/web/public/next/assets/{Switch-CcR5Llk5.js.map → Switch-CUrvzO2k.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Tag-_-K1h7Hk.js → Tag-Bv8u6APt.js} +2 -2
- package/dist/core/web/public/next/assets/{Tag-_-K1h7Hk.js.map → Tag-Bv8u6APt.js.map} +1 -1
- package/dist/core/web/public/next/assets/TerminalPane-BE4Xlqi5.js +7 -0
- package/dist/core/web/public/next/assets/{TerminalPane-_1aH4ndN.js.map → TerminalPane-BE4Xlqi5.js.map} +1 -1
- package/dist/core/web/public/next/assets/UniverseConsoleApp-BGwejf0m.js +2 -0
- package/dist/core/web/public/next/assets/{UniverseConsoleApp-BUsq-inZ.js.map → UniverseConsoleApp-BGwejf0m.js.map} +1 -1
- package/dist/core/web/public/next/assets/{UniverseConsoleApp-Dh7A-hLD.css → UniverseConsoleApp-DfuT-wFw.css} +1 -1
- package/dist/core/web/public/next/assets/{UniverseView-Dogy_dsB.js → UniverseView-CgKa-WXC.js} +4 -4
- package/dist/core/web/public/next/assets/{UniverseView-Dogy_dsB.js.map → UniverseView-CgKa-WXC.js.map} +1 -1
- package/dist/core/web/public/next/assets/UsageSection-CazsHm1f.js +2 -0
- package/dist/core/web/public/next/assets/{UsageSection-DiX_dTyo.js.map → UsageSection-CazsHm1f.js.map} +1 -1
- package/dist/core/web/public/next/assets/VerseConsoleApp-CTF3Shs0.js +3 -0
- package/dist/core/web/public/next/assets/VerseConsoleApp-CTF3Shs0.js.map +1 -0
- package/dist/core/web/public/next/assets/Workspace-CgdyXiEV.js +10 -0
- package/dist/core/web/public/next/assets/Workspace-CgdyXiEV.js.map +1 -0
- package/dist/core/web/public/next/assets/Workspace-Dwri2jFJ.css +1 -0
- package/dist/core/web/public/next/assets/actions-MtxBGS5B.js +2 -0
- package/dist/core/web/public/next/assets/{actions-s2lfm_5k.js.map → actions-MtxBGS5B.js.map} +1 -1
- package/dist/core/web/public/next/assets/budget-queries-CP7hgR-p.js +2 -0
- package/dist/core/web/public/next/assets/{budget-queries-wUshcovN.js.map → budget-queries-CP7hgR-p.js.map} +1 -1
- package/dist/core/web/public/next/assets/{capacity-strip-model-Bj_9ztzs.js → capacity-strip-model-fHfu5cph.js} +2 -2
- package/dist/core/web/public/next/assets/{capacity-strip-model-Bj_9ztzs.js.map → capacity-strip-model-fHfu5cph.js.map} +1 -1
- package/dist/core/web/public/next/assets/{charts-CMSgAUKn.js → charts-Bis9WSiS.js} +2 -2
- package/dist/core/web/public/next/assets/{charts-CMSgAUKn.js.map → charts-Bis9WSiS.js.map} +1 -1
- package/dist/core/web/public/next/assets/cloud-queries-BsOepFz6.js +2 -0
- package/dist/core/web/public/next/assets/{cloud-queries-CnV1yaNG.js.map → cloud-queries-BsOepFz6.js.map} +1 -1
- package/dist/core/web/public/next/assets/{cloud.module-CiwatLj3.js → cloud.module-DoFnr8ZH.js} +2 -2
- package/dist/core/web/public/next/assets/{cloud.module-CiwatLj3.js.map → cloud.module-DoFnr8ZH.js.map} +1 -1
- package/dist/core/web/public/next/assets/{command-bus-DqimKCUY.js → command-bus-CMvbYP5K.js} +2 -2
- package/dist/core/web/public/next/assets/{command-bus-DqimKCUY.js.map → command-bus-CMvbYP5K.js.map} +1 -1
- package/dist/core/web/public/next/assets/command-catalog-Bb_PxC5w.js +2 -0
- package/dist/core/web/public/next/assets/command-catalog-Bb_PxC5w.js.map +1 -0
- package/dist/core/web/public/next/assets/compaction-point-VL9oegWS.js +2 -0
- package/dist/core/web/public/next/assets/compaction-point-VL9oegWS.js.map +1 -0
- package/dist/core/web/public/next/assets/{composer-keys-DBRymxQn.js → composer-keys-su0g1h9o.js} +2 -2
- package/dist/core/web/public/next/assets/{composer-keys-DBRymxQn.js.map → composer-keys-su0g1h9o.js.map} +1 -1
- package/dist/core/web/public/next/assets/context-model-Ci3Ch9t5.js +2 -0
- package/dist/core/web/public/next/assets/{context-model-Dwd49-dp.js.map → context-model-Ci3Ch9t5.js.map} +1 -1
- package/dist/core/web/public/next/assets/context-model-CjiJTnf1.js +2 -0
- package/dist/core/web/public/next/assets/{context-model-MT17V86_.js.map → context-model-CjiJTnf1.js.map} +1 -1
- package/dist/core/web/public/next/assets/context-queries-BDXT6LQ3.js +2 -0
- package/dist/core/web/public/next/assets/{context-queries-xVKIeynP.js.map → context-queries-BDXT6LQ3.js.map} +1 -1
- package/dist/core/web/public/next/assets/control-queries-Dv-h1Clu.js +2 -0
- package/dist/core/web/public/next/assets/{control-queries-DOZR-D8G.js.map → control-queries-Dv-h1Clu.js.map} +1 -1
- package/dist/core/web/public/next/assets/{dock-icons-8EtARwUm.js → dock-icons-t--Eugrd.js} +2 -2
- package/dist/core/web/public/next/assets/{dock-icons-8EtARwUm.js.map → dock-icons-t--Eugrd.js.map} +1 -1
- package/dist/core/web/public/next/assets/{dock-store-BA1cHOYA.js → dock-store-qIu7kSQE.js} +2 -2
- package/dist/core/web/public/next/assets/{dock-store-BA1cHOYA.js.map → dock-store-qIu7kSQE.js.map} +1 -1
- package/dist/core/web/public/next/assets/{fleet-model-CNe8Wh-s.js → fleet-model-IRbwfhkR.js} +2 -2
- package/dist/core/web/public/next/assets/{fleet-model-CNe8Wh-s.js.map → fleet-model-IRbwfhkR.js.map} +1 -1
- package/dist/core/web/public/next/assets/fleet-queries-7FVNByX1.js +2 -0
- package/dist/core/web/public/next/assets/{fleet-queries-BSdRlUwJ.js.map → fleet-queries-7FVNByX1.js.map} +1 -1
- package/dist/core/web/public/next/assets/focus-trap-QqQxQdvH.js +2 -0
- package/dist/core/web/public/next/assets/focus-trap-QqQxQdvH.js.map +1 -0
- package/dist/core/web/public/next/assets/{format-B8DAVcn2.js → format-CaMmVQCn.js} +2 -2
- package/dist/core/web/public/next/assets/{format-B8DAVcn2.js.map → format-CaMmVQCn.js.map} +1 -1
- package/dist/core/web/public/next/assets/git-model-B4S_GUNA.js +5 -0
- package/dist/core/web/public/next/assets/{git-model-CivuBY_D.js.map → git-model-B4S_GUNA.js.map} +1 -1
- package/dist/core/web/public/next/assets/global-BkNl4e6E.js +2 -0
- package/dist/core/web/public/next/assets/global-BkNl4e6E.js.map +1 -0
- package/dist/core/web/public/next/assets/global-BlI2BYa1.css +1 -0
- package/dist/core/web/public/next/assets/guarded-action-DHiL8tY5.js +3 -0
- package/dist/core/web/public/next/assets/guarded-action-DHiL8tY5.js.map +1 -0
- package/dist/core/web/public/next/assets/guarded-runners-DmGEkM2P.js +2 -0
- package/dist/core/web/public/next/assets/guarded-runners-DmGEkM2P.js.map +1 -0
- package/dist/core/web/public/next/assets/icon-base-NtFmP2yB.js +2 -0
- package/dist/core/web/public/next/assets/icon-base-NtFmP2yB.js.map +1 -0
- package/dist/core/web/public/next/assets/icons-C5EFt_Ts.js +2 -0
- package/dist/core/web/public/next/assets/icons-C5EFt_Ts.js.map +1 -0
- package/dist/core/web/public/next/assets/{index-oAAq8XJa.js → index-DbDw9UAs.js} +3 -3
- package/dist/core/web/public/next/assets/{index-oAAq8XJa.js.map → index-DbDw9UAs.js.map} +1 -1
- package/dist/core/web/public/next/assets/{live-model-DCw_IFRI.js → live-model-DEwrl7_A.js} +2 -2
- package/dist/core/web/public/next/assets/{live-model-DCw_IFRI.js.map → live-model-DEwrl7_A.js.map} +1 -1
- package/dist/core/web/public/next/assets/{mind.module-vnuJcwvD.js → mind.module-CLhqMQak.js} +2 -2
- package/dist/core/web/public/next/assets/{mind.module-vnuJcwvD.js.map → mind.module-CLhqMQak.js.map} +1 -1
- package/dist/core/web/public/next/assets/mutations-Kvzsg-iK.js +2 -0
- package/dist/core/web/public/next/assets/{mutations-Dpsql5t7.js.map → mutations-Kvzsg-iK.js.map} +1 -1
- package/dist/core/web/public/next/assets/nav-C0IunEYF.js +2 -0
- package/dist/core/web/public/next/assets/nav-C0IunEYF.js.map +1 -0
- package/dist/core/web/public/next/assets/overnight-queries-C_AfcL7q.js +2 -0
- package/dist/core/web/public/next/assets/{overnight-queries-X-44Gsw5.js.map → overnight-queries-C_AfcL7q.js.map} +1 -1
- package/dist/core/web/public/next/assets/preloaded-CctOitLu.js +2 -0
- package/dist/core/web/public/next/assets/preloaded-CctOitLu.js.map +1 -0
- package/dist/core/web/public/next/assets/primitives-CbAGCNKt.js +1 -0
- package/dist/core/web/public/next/assets/{queries-BA4rNGD-.js → queries-THD05gHP.js} +2 -2
- package/dist/core/web/public/next/assets/{queries-BA4rNGD-.js.map → queries-THD05gHP.js.map} +1 -1
- package/dist/core/web/public/next/assets/reasoning-pref-BVPu0SME.js +2 -0
- package/dist/core/web/public/next/assets/{reasoning-pref-B9-DJUXP.js.map → reasoning-pref-BVPu0SME.js.map} +1 -1
- package/dist/core/web/public/next/assets/reveal-anchor-wCT5b4m3.js +2 -0
- package/dist/core/web/public/next/assets/reveal-anchor-wCT5b4m3.js.map +1 -0
- package/dist/core/web/public/next/assets/seat-subscription-CR_VylsK.js +2 -0
- package/dist/core/web/public/next/assets/{seat-subscription-CH6fW4fJ.js.map → seat-subscription-CR_VylsK.js.map} +1 -1
- package/dist/core/web/public/next/assets/{section-visibility-qFqc_d4Z.js → section-visibility-B0xXUQJ0.js} +2 -2
- package/dist/core/web/public/next/assets/{section-visibility-qFqc_d4Z.js.map → section-visibility-B0xXUQJ0.js.map} +1 -1
- package/dist/core/web/public/next/assets/{sidebar-model-M1GaQU5l.js → sidebar-model-C5wVXGpb.js} +2 -2
- package/dist/core/web/public/next/assets/{sidebar-model-M1GaQU5l.js.map → sidebar-model-C5wVXGpb.js.map} +1 -1
- package/dist/core/web/public/next/assets/slots-DDd8cEoh.js +3 -0
- package/dist/core/web/public/next/assets/{slots-Ds9ZIqUL.js.map → slots-DDd8cEoh.js.map} +1 -1
- package/dist/core/web/public/next/assets/surface-data-BFxAlefI.js +2 -0
- package/dist/core/web/public/next/assets/{surface-data-J52iIGMD.js.map → surface-data-BFxAlefI.js.map} +1 -1
- package/dist/core/web/public/next/assets/surface-prefetch-CHusyO9q.js +2 -0
- package/dist/core/web/public/next/assets/{surface-prefetch-CgZ-LEJK.js.map → surface-prefetch-CHusyO9q.js.map} +1 -1
- package/dist/core/web/public/next/assets/{tasks-model-ent8f0jZ.js → tasks-model-DvkWveXs.js} +2 -2
- package/dist/core/web/public/next/assets/{tasks-model-ent8f0jZ.js.map → tasks-model-DvkWveXs.js.map} +1 -1
- package/dist/core/web/public/next/assets/{terminal-icons-DJTK7QpR.js → terminal-icons-Dp6pJgV2.js} +2 -2
- package/dist/core/web/public/next/assets/{terminal-icons-DJTK7QpR.js.map → terminal-icons-Dp6pJgV2.js.map} +1 -1
- package/dist/core/web/public/next/assets/{usage-queries-Bn8ccqyN.js → usage-queries-CUTmnegA.js} +2 -2
- package/dist/core/web/public/next/assets/{usage-queries-Bn8ccqyN.js.map → usage-queries-CUTmnegA.js.map} +1 -1
- package/dist/core/web/public/next/assets/use-guarded-action-UCX2u1t1.js +2 -0
- package/dist/core/web/public/next/assets/{use-guarded-action-C2HlSzkz.js.map → use-guarded-action-UCX2u1t1.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-ticker-BNc1H4ZC.js → use-ticker-OXAjob3y.js} +2 -2
- package/dist/core/web/public/next/assets/{use-ticker-BNc1H4ZC.js.map → use-ticker-OXAjob3y.js.map} +1 -1
- package/dist/core/web/public/next/assets/use-token-gate-CDDRAoKH.js +2 -0
- package/dist/core/web/public/next/assets/{use-token-gate-B3IJL6bf.js.map → use-token-gate-CDDRAoKH.js.map} +1 -1
- package/dist/core/web/public/next/assets/useChartWidth-BW6SwYIK.css +1 -0
- package/dist/core/web/public/next/assets/useChartWidth-D9M7kUw7.js +2 -0
- package/dist/core/web/public/next/assets/{useChartWidth-lZ9PrQn0.js.map → useChartWidth-D9M7kUw7.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useSeatsRefresh-CG4jczeL.js → useSeatsRefresh-B2dCVcj9.js} +2 -2
- package/dist/core/web/public/next/assets/{useSeatsRefresh-CG4jczeL.js.map → useSeatsRefresh-B2dCVcj9.js.map} +1 -1
- package/dist/core/web/public/next/assets/useVerseTranscript-BL3CljSI.js +2 -0
- package/dist/core/web/public/next/assets/useVerseTranscript-BL3CljSI.js.map +1 -0
- package/dist/core/web/public/next/assets/verse-icons-DASWdYuE.js +2 -0
- package/dist/core/web/public/next/assets/verse-icons-DASWdYuE.js.map +1 -0
- package/dist/core/web/public/next/assets/verse-model-BQ0Y2CSr.js +2 -0
- package/dist/core/web/public/next/assets/verse-model-BQ0Y2CSr.js.map +1 -0
- package/dist/core/web/public/next/assets/verse-store-b_Lek_c5.js +3 -0
- package/dist/core/web/public/next/assets/verse-store-b_Lek_c5.js.map +1 -0
- package/dist/core/web/public/next/assets/verse-ui-store-D7YXi63q.js +3 -0
- package/dist/core/web/public/next/assets/{verse-ui-store-zafyzXKD.js.map → verse-ui-store-D7YXi63q.js.map} +1 -1
- package/dist/core/web/public/next/assets/{viewport-BEqGUoTA.js → viewport-BYGH5EgA.js} +2 -2
- package/dist/core/web/public/next/assets/{viewport-BEqGUoTA.js.map → viewport-BYGH5EgA.js.map} +1 -1
- package/dist/core/web/public/next/assets/warmup-AsqwWCUi.js +3 -0
- package/dist/core/web/public/next/assets/{warmup-BR6pxAKs.js.map → warmup-AsqwWCUi.js.map} +1 -1
- package/dist/core/web/public/next/assets/{workspace-model-D_tWD5Wt.js → workspace-model-CXorJr0G.js} +2 -2
- package/dist/core/web/public/next/assets/{workspace-model-D_tWD5Wt.js.map → workspace-model-CXorJr0G.js.map} +1 -1
- package/dist/core/web/public/next/index.html +1 -1
- package/dist/release-dependency-inventory.json +1 -1
- package/package.json +5 -2
- package/dist/cli/activation.d.ts +0 -41
- package/dist/cli/activation.js +0 -485
- package/dist/cli/activation.js.map +0 -1
- package/dist/core/fleet/generated-repair-resolution.d.ts +0 -36
- package/dist/core/fleet/generated-repair-resolution.js +0 -245
- package/dist/core/fleet/generated-repair-resolution.js.map +0 -1
- package/dist/core/local-runtime/llama/port.d.ts +0 -17
- package/dist/core/local-runtime/llama/port.js +0 -47
- package/dist/core/local-runtime/llama/port.js.map +0 -1
- package/dist/core/local-runtime/llama/proxy-host.d.ts +0 -54
- package/dist/core/local-runtime/llama/proxy-host.js +0 -159
- package/dist/core/local-runtime/llama/proxy-host.js.map +0 -1
- package/dist/core/local-runtime/llama/proxy-process.d.ts +0 -148
- package/dist/core/local-runtime/llama/proxy-process.js +0 -250
- package/dist/core/local-runtime/llama/proxy-process.js.map +0 -1
- package/dist/core/local-runtime/llama/proxy-record.d.ts +0 -40
- package/dist/core/local-runtime/llama/proxy-record.js +0 -133
- package/dist/core/local-runtime/llama/proxy-record.js.map +0 -1
- package/dist/core/local-runtime/llama/proxy-supervisor.d.ts +0 -118
- package/dist/core/local-runtime/llama/proxy-supervisor.js +0 -511
- package/dist/core/local-runtime/llama/proxy-supervisor.js.map +0 -1
- package/dist/core/web/public/next/assets/Advanced-DEM93sKI.js +0 -2
- package/dist/core/web/public/next/assets/App-CimXmK0L.js +0 -7
- package/dist/core/web/public/next/assets/AppsSection-D6U-dSj6.js +0 -2
- package/dist/core/web/public/next/assets/AutonomySection-3V9pUyxm.js +0 -2
- package/dist/core/web/public/next/assets/BranchBar-U8UdpfEB.js +0 -2
- package/dist/core/web/public/next/assets/CapacityStrip-C667yQe8.js +0 -2
- package/dist/core/web/public/next/assets/CapacityStrip-C667yQe8.js.map +0 -1
- package/dist/core/web/public/next/assets/ChatSection-CCcIPpOq.js +0 -3
- package/dist/core/web/public/next/assets/ChatSection-CCcIPpOq.js.map +0 -1
- package/dist/core/web/public/next/assets/CommandPalette-FiD4N8XD.js +0 -2
- package/dist/core/web/public/next/assets/CommandSection-DN8KwH-X.js +0 -2
- package/dist/core/web/public/next/assets/DockHost-DvR-hPhZ.js +0 -2
- package/dist/core/web/public/next/assets/FleetSection-D_zRBCub.js +0 -3
- package/dist/core/web/public/next/assets/GearTray-C7k4l_BW.js +0 -2
- package/dist/core/web/public/next/assets/HandoffDialog-FPVOqOMN.js +0 -2
- package/dist/core/web/public/next/assets/LeaderCard-4R0BhDzT.js +0 -2
- package/dist/core/web/public/next/assets/McpSection-CJ__OJKl.js +0 -2
- package/dist/core/web/public/next/assets/MindSection-BjXHkQPS.js +0 -2
- package/dist/core/web/public/next/assets/MutationTokenDialog-Cum_DqQZ.css +0 -1
- package/dist/core/web/public/next/assets/MutationTokenDialog-SkRxqV_I.js +0 -2
- package/dist/core/web/public/next/assets/MutationTokenDialog-SkRxqV_I.js.map +0 -1
- package/dist/core/web/public/next/assets/NeedsYouDrawer-rSd1ZHAR.js +0 -2
- package/dist/core/web/public/next/assets/NewChatDialog-BeDQ1eW3.js +0 -3
- package/dist/core/web/public/next/assets/OnboardingFlow-CkTZtt-m.js +0 -2
- package/dist/core/web/public/next/assets/PreviewPane-kzbbSK4u.js +0 -2
- package/dist/core/web/public/next/assets/ResourcesChrome-B3Z3O98t.css +0 -1
- package/dist/core/web/public/next/assets/ResourcesChrome-BzV6bkIa.js +0 -3
- package/dist/core/web/public/next/assets/ResourcesChrome-BzV6bkIa.js.map +0 -1
- package/dist/core/web/public/next/assets/ResourcesDrawer-o4ILHdep.js +0 -2
- package/dist/core/web/public/next/assets/ResourcesDrawer-o4ILHdep.js.map +0 -1
- package/dist/core/web/public/next/assets/RouteErrorBoundary-6RMd_aZg.css +0 -1
- package/dist/core/web/public/next/assets/RouteErrorBoundary-C5SxA2Dg.js +0 -2
- package/dist/core/web/public/next/assets/RouteErrorBoundary-C5SxA2Dg.js.map +0 -1
- package/dist/core/web/public/next/assets/SeatSelector-DpvvbjNm.js +0 -3
- package/dist/core/web/public/next/assets/SessionInsightChip-CWye87Ju.js +0 -2
- package/dist/core/web/public/next/assets/SettingsSection-Dr18upeE.js +0 -2
- package/dist/core/web/public/next/assets/SettingsSection-Dr18upeE.js.map +0 -1
- package/dist/core/web/public/next/assets/Sheet-DZKcQXQg.js +0 -2
- package/dist/core/web/public/next/assets/ShortcutsOverlay-BpDimdPq.js +0 -2
- package/dist/core/web/public/next/assets/Sidebar-BoBzBEFX.js +0 -3
- package/dist/core/web/public/next/assets/TerminalPane-_1aH4ndN.js +0 -7
- package/dist/core/web/public/next/assets/UniverseConsoleApp-BUsq-inZ.js +0 -2
- package/dist/core/web/public/next/assets/UsageSection-DiX_dTyo.js +0 -2
- package/dist/core/web/public/next/assets/VerseConsoleApp-WVeyJnW7.js +0 -3
- package/dist/core/web/public/next/assets/VerseConsoleApp-WVeyJnW7.js.map +0 -1
- package/dist/core/web/public/next/assets/Workspace-BYW9dm90.css +0 -1
- package/dist/core/web/public/next/assets/Workspace-BbxZHwQd.js +0 -10
- package/dist/core/web/public/next/assets/Workspace-BbxZHwQd.js.map +0 -1
- package/dist/core/web/public/next/assets/actions-s2lfm_5k.js +0 -2
- package/dist/core/web/public/next/assets/budget-queries-wUshcovN.js +0 -2
- package/dist/core/web/public/next/assets/cloud-queries-CnV1yaNG.js +0 -2
- package/dist/core/web/public/next/assets/command-catalog-BdtDH93o.js +0 -2
- package/dist/core/web/public/next/assets/command-catalog-BdtDH93o.js.map +0 -1
- package/dist/core/web/public/next/assets/context-model-Dwd49-dp.js +0 -2
- package/dist/core/web/public/next/assets/context-model-MT17V86_.js +0 -2
- package/dist/core/web/public/next/assets/context-queries-xVKIeynP.js +0 -2
- package/dist/core/web/public/next/assets/control-queries-DOZR-D8G.js +0 -2
- package/dist/core/web/public/next/assets/dock-panes-UKS-mXhr.js +0 -2
- package/dist/core/web/public/next/assets/dock-panes-UKS-mXhr.js.map +0 -1
- package/dist/core/web/public/next/assets/fleet-queries-BSdRlUwJ.js +0 -2
- package/dist/core/web/public/next/assets/git-model-CivuBY_D.js +0 -5
- package/dist/core/web/public/next/assets/global-Di2PUgj4.js +0 -2
- package/dist/core/web/public/next/assets/global-Di2PUgj4.js.map +0 -1
- package/dist/core/web/public/next/assets/global-_tOCFt9y.css +0 -1
- package/dist/core/web/public/next/assets/guarded-action-CvOHcqyH.js +0 -2
- package/dist/core/web/public/next/assets/guarded-action-CvOHcqyH.js.map +0 -1
- package/dist/core/web/public/next/assets/icons-B_yuAgdN.js +0 -2
- package/dist/core/web/public/next/assets/icons-B_yuAgdN.js.map +0 -1
- package/dist/core/web/public/next/assets/mutations-Dpsql5t7.js +0 -2
- package/dist/core/web/public/next/assets/overnight-queries-X-44Gsw5.js +0 -2
- package/dist/core/web/public/next/assets/primitives-BDIcUvob.js +0 -1
- package/dist/core/web/public/next/assets/reasoning-pref-B9-DJUXP.js +0 -2
- package/dist/core/web/public/next/assets/seat-subscription-CH6fW4fJ.js +0 -2
- package/dist/core/web/public/next/assets/slots-Ds9ZIqUL.js +0 -3
- package/dist/core/web/public/next/assets/surface-data-J52iIGMD.js +0 -2
- package/dist/core/web/public/next/assets/surface-prefetch-CgZ-LEJK.js +0 -2
- package/dist/core/web/public/next/assets/use-guarded-action-C2HlSzkz.js +0 -2
- package/dist/core/web/public/next/assets/use-token-gate-B3IJL6bf.js +0 -2
- package/dist/core/web/public/next/assets/useActivity-Bk3XgXjL.js +0 -2
- package/dist/core/web/public/next/assets/useActivity-Bk3XgXjL.js.map +0 -1
- package/dist/core/web/public/next/assets/useChartWidth-BAtVgn2n.css +0 -1
- package/dist/core/web/public/next/assets/useChartWidth-lZ9PrQn0.js +0 -2
- package/dist/core/web/public/next/assets/verse-model-D7NZQFAR.js +0 -2
- package/dist/core/web/public/next/assets/verse-model-D7NZQFAR.js.map +0 -1
- package/dist/core/web/public/next/assets/verse-queries-DvIJcn6Z.js +0 -2
- package/dist/core/web/public/next/assets/verse-queries-DvIJcn6Z.js.map +0 -1
- package/dist/core/web/public/next/assets/verse-store-DjBWj04q.js +0 -3
- package/dist/core/web/public/next/assets/verse-store-DjBWj04q.js.map +0 -1
- package/dist/core/web/public/next/assets/verse-ui-store-zafyzXKD.js +0 -3
- package/dist/core/web/public/next/assets/warmup-BR6pxAKs.js +0 -3
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
import { createHash } from 'node:crypto';
|
|
2
|
-
import { isAbsolute, relative, resolve } from 'node:path';
|
|
3
|
-
import { buildBacklog } from '../portfolio/backlog.js';
|
|
4
|
-
import { createSandbox, removeSandbox } from '../sandbox/worktree.js';
|
|
5
|
-
import { detectRepoExecutionProfile, } from '../run/repo-profile.js';
|
|
6
|
-
import { runVerifyCommandAsync, } from '../run/verify-commands.js';
|
|
7
|
-
import { isTrustedDiagnosticResliceItem } from './self-heal-trust.js';
|
|
8
|
-
import { workItemObjectiveHash } from './work-item-objective.js';
|
|
9
|
-
import { readRepairHandoffs, repairGenerationIdFromHandoffId, } from './repair-handoff-journal.js';
|
|
10
|
-
const dependencies = {
|
|
11
|
-
readRepairHandoffs,
|
|
12
|
-
buildBacklog,
|
|
13
|
-
detectRepoExecutionProfile,
|
|
14
|
-
createSandbox,
|
|
15
|
-
runVerifyCommand: runVerifyCommandAsync,
|
|
16
|
-
removeSandbox,
|
|
17
|
-
};
|
|
18
|
-
function result(status, reason, counts = {}) {
|
|
19
|
-
return {
|
|
20
|
-
status,
|
|
21
|
-
reason,
|
|
22
|
-
requiredCommandCount: counts.required ?? 0,
|
|
23
|
-
completedCommandCount: counts.completed ?? 0,
|
|
24
|
-
passedCommandCount: counts.passed ?? 0,
|
|
25
|
-
...(counts.parentObjectiveHash ? { parentObjectiveHash: counts.parentObjectiveHash } : {}),
|
|
26
|
-
...(counts.verifierContractHash ? { verifierContractHash: counts.verifierContractHash } : {}),
|
|
27
|
-
...(counts.baseHead ? { baseHead: counts.baseHead } : {}),
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
function verifierContractHash(commands, repo) {
|
|
31
|
-
return createHash('sha256').update(JSON.stringify([
|
|
32
|
-
'ashlr:resolution-verifier:v1',
|
|
33
|
-
...commands.map((command) => [
|
|
34
|
-
command.id ?? null,
|
|
35
|
-
command.kind,
|
|
36
|
-
command.cmd,
|
|
37
|
-
command.cwd ? relative(resolve(repo), resolve(command.cwd)) : '.',
|
|
38
|
-
command.timeoutMs ?? null,
|
|
39
|
-
command.required !== false,
|
|
40
|
-
command.profiles ?? null,
|
|
41
|
-
]),
|
|
42
|
-
])).digest('hex');
|
|
43
|
-
}
|
|
44
|
-
function journalAuthorizes(item, journal) {
|
|
45
|
-
if (typeof item.repairHandoffId !== 'string' ||
|
|
46
|
-
typeof item.repairGenerationId !== 'string' ||
|
|
47
|
-
repairGenerationIdFromHandoffId(item.repairHandoffId) !== item.repairGenerationId)
|
|
48
|
-
return false;
|
|
49
|
-
const handoff = journal.observations.find((entry) => entry.eventId === item.repairHandoffId);
|
|
50
|
-
if (!handoff)
|
|
51
|
-
return false;
|
|
52
|
-
try {
|
|
53
|
-
if (resolve(handoff.repo) !== resolve(item.repo))
|
|
54
|
-
return false;
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
return handoff.kind === 'no-diff-reslice' &&
|
|
60
|
-
handoff.generationId === item.repairGenerationId &&
|
|
61
|
-
handoff.childItemId === item.id &&
|
|
62
|
-
handoff.parentOutcome === 'empty-diff' &&
|
|
63
|
-
handoff.parentSource !== undefined &&
|
|
64
|
-
handoff.parentBackend !== undefined &&
|
|
65
|
-
handoff.parentTier !== undefined &&
|
|
66
|
-
handoff.parentObjectiveHash !== undefined &&
|
|
67
|
-
item.repairParentItemId === handoff.parentItemId &&
|
|
68
|
-
item.repairParentSource === handoff.parentSource &&
|
|
69
|
-
item.repairParentBackend === handoff.parentBackend &&
|
|
70
|
-
item.repairParentTier === handoff.parentTier &&
|
|
71
|
-
item.repairParentObjectiveHash === handoff.parentObjectiveHash;
|
|
72
|
-
}
|
|
73
|
-
function cleanupComplete(cleanup) {
|
|
74
|
-
return cleanup.status === 'complete' &&
|
|
75
|
-
cleanup.postconditions.registration === 'absent' &&
|
|
76
|
-
cleanup.postconditions.branch === 'absent' &&
|
|
77
|
-
cleanup.postconditions.home === 'absent';
|
|
78
|
-
}
|
|
79
|
-
function rebaseCommand(command, sourceRepo, sandboxRepo) {
|
|
80
|
-
if (!command.cwd)
|
|
81
|
-
return { ...command, cmd: command.cmd.slice() };
|
|
82
|
-
const rel = relative(resolve(sourceRepo), resolve(command.cwd));
|
|
83
|
-
if (rel.startsWith('..') || isAbsolute(rel))
|
|
84
|
-
return null;
|
|
85
|
-
return { ...command, cmd: command.cmd.slice(), cwd: resolve(sandboxRepo, rel) };
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Observes whether a journal-authorized diagnostic reslice still has work to do.
|
|
89
|
-
* It never records lifecycle state or mutates queues, proposals, routing, or merge state.
|
|
90
|
-
*/
|
|
91
|
-
export async function evaluateGeneratedRepairResolution(item, cfg, injected = {}) {
|
|
92
|
-
const deps = { ...dependencies, ...injected };
|
|
93
|
-
if (!isTrustedDiagnosticResliceItem(item)) {
|
|
94
|
-
return result('ineligible', 'invalid-lineage');
|
|
95
|
-
}
|
|
96
|
-
let journal;
|
|
97
|
-
try {
|
|
98
|
-
journal = deps.readRepairHandoffs();
|
|
99
|
-
}
|
|
100
|
-
catch {
|
|
101
|
-
return result('unavailable', 'journal-unavailable');
|
|
102
|
-
}
|
|
103
|
-
if (journal.sourceState === 'degraded') {
|
|
104
|
-
return result('unavailable', 'journal-unavailable');
|
|
105
|
-
}
|
|
106
|
-
if (!journalAuthorizes(item, journal)) {
|
|
107
|
-
return result('ineligible', 'invalid-lineage');
|
|
108
|
-
}
|
|
109
|
-
let backlog;
|
|
110
|
-
try {
|
|
111
|
-
backlog = await deps.buildBacklog({ repos: [item.repo], persist: false, cfg });
|
|
112
|
-
}
|
|
113
|
-
catch {
|
|
114
|
-
return result('unavailable', 'backlog-unavailable');
|
|
115
|
-
}
|
|
116
|
-
if (!backlog ||
|
|
117
|
-
!Array.isArray(backlog.items) ||
|
|
118
|
-
!Array.isArray(backlog.repos) ||
|
|
119
|
-
backlog.repos.length !== 1 ||
|
|
120
|
-
backlog.repos[0] !== item.repo) {
|
|
121
|
-
return result('unavailable', 'backlog-unavailable');
|
|
122
|
-
}
|
|
123
|
-
const sameParentIdentity = backlog.items.filter((candidate) => candidate.repo === item.repo && candidate.id === item.repairParentItemId);
|
|
124
|
-
const exactSourceParent = sameParentIdentity.find((candidate) => candidate.source === item.repairParentSource);
|
|
125
|
-
if (!exactSourceParent && sameParentIdentity.length > 0) {
|
|
126
|
-
return result('ineligible', 'parent-source-mismatch');
|
|
127
|
-
}
|
|
128
|
-
if (exactSourceParent) {
|
|
129
|
-
if (workItemObjectiveHash(exactSourceParent) !== item.repairParentObjectiveHash) {
|
|
130
|
-
return result('ineligible', 'parent-objective-mismatch');
|
|
131
|
-
}
|
|
132
|
-
return result('parent-present', 'parent-still-actionable', {
|
|
133
|
-
parentObjectiveHash: item.repairParentObjectiveHash,
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
let profile;
|
|
137
|
-
try {
|
|
138
|
-
profile = deps.detectRepoExecutionProfile(item.repo);
|
|
139
|
-
}
|
|
140
|
-
catch {
|
|
141
|
-
return result('unavailable', 'verification-infra-unavailable');
|
|
142
|
-
}
|
|
143
|
-
const contract = profile.verifyContract;
|
|
144
|
-
if (!contract?.present)
|
|
145
|
-
return result('ineligible', 'verification-contract-missing');
|
|
146
|
-
if (!contract.valid)
|
|
147
|
-
return result('ineligible', 'verification-contract-invalid');
|
|
148
|
-
const requiredCommands = profile.verifyCommands.filter((command) => command.required !== false && command.profiles?.includes('merge'));
|
|
149
|
-
if (!contract.mergeGradeExplicit || requiredCommands.length === 0) {
|
|
150
|
-
return result('ineligible', 'required-merge-commands-missing');
|
|
151
|
-
}
|
|
152
|
-
const contractHash = verifierContractHash(requiredCommands, item.repo);
|
|
153
|
-
if (requiredCommands.some((command) => command.timeoutMs === undefined ||
|
|
154
|
-
!Number.isInteger(command.timeoutMs) ||
|
|
155
|
-
command.timeoutMs <= 0 ||
|
|
156
|
-
command.timeoutMs > 600_000)) {
|
|
157
|
-
return result('ineligible', 'invalid-command-timeout', {
|
|
158
|
-
required: requiredCommands.length,
|
|
159
|
-
parentObjectiveHash: item.repairParentObjectiveHash,
|
|
160
|
-
verifierContractHash: contractHash,
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
let sandbox;
|
|
164
|
-
try {
|
|
165
|
-
sandbox = deps.createSandbox(item.repo);
|
|
166
|
-
}
|
|
167
|
-
catch {
|
|
168
|
-
return result('unavailable', 'sandbox-unavailable', {
|
|
169
|
-
required: requiredCommands.length,
|
|
170
|
-
parentObjectiveHash: item.repairParentObjectiveHash,
|
|
171
|
-
verifierContractHash: contractHash,
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
let completed = 0;
|
|
175
|
-
let passed = 0;
|
|
176
|
-
let codeFailure = false;
|
|
177
|
-
let unavailableReason = null;
|
|
178
|
-
try {
|
|
179
|
-
for (const sourceCommand of requiredCommands) {
|
|
180
|
-
const command = rebaseCommand(sourceCommand, item.repo, sandbox.worktreePath);
|
|
181
|
-
if (!command) {
|
|
182
|
-
unavailableReason = 'verification-infra-unavailable';
|
|
183
|
-
break;
|
|
184
|
-
}
|
|
185
|
-
let commandResult;
|
|
186
|
-
try {
|
|
187
|
-
commandResult = await deps.runVerifyCommand(command, sandbox.worktreePath, cfg, {
|
|
188
|
-
timeoutMs: sourceCommand.timeoutMs,
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
catch {
|
|
192
|
-
unavailableReason = 'verification-infra-unavailable';
|
|
193
|
-
continue;
|
|
194
|
-
}
|
|
195
|
-
completed += 1;
|
|
196
|
-
if (commandResult.ok) {
|
|
197
|
-
passed += 1;
|
|
198
|
-
}
|
|
199
|
-
else if (commandResult.failureCategory === 'code') {
|
|
200
|
-
codeFailure = true;
|
|
201
|
-
}
|
|
202
|
-
else if (commandResult.failureCategory === 'tool' || commandResult.failureCategory === 'invalid-command') {
|
|
203
|
-
unavailableReason = 'verification-tool-unavailable';
|
|
204
|
-
}
|
|
205
|
-
else {
|
|
206
|
-
unavailableReason = 'verification-infra-unavailable';
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
finally {
|
|
211
|
-
let cleanup;
|
|
212
|
-
try {
|
|
213
|
-
cleanup = deps.removeSandbox(sandbox);
|
|
214
|
-
}
|
|
215
|
-
catch {
|
|
216
|
-
cleanup = {
|
|
217
|
-
status: 'unavailable',
|
|
218
|
-
postconditions: { registration: 'unknown', branch: 'unknown', home: 'unknown' },
|
|
219
|
-
failureClasses: ['postcondition-unavailable'],
|
|
220
|
-
retryable: true,
|
|
221
|
-
attempt: 1,
|
|
222
|
-
evidencePersisted: false,
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
if (!cleanupComplete(cleanup))
|
|
226
|
-
unavailableReason = 'cleanup-incomplete';
|
|
227
|
-
}
|
|
228
|
-
const counts = {
|
|
229
|
-
required: requiredCommands.length,
|
|
230
|
-
completed,
|
|
231
|
-
passed,
|
|
232
|
-
parentObjectiveHash: item.repairParentObjectiveHash,
|
|
233
|
-
verifierContractHash: contractHash,
|
|
234
|
-
...(/^[a-f0-9]{40}(?:[a-f0-9]{24})?$/.test(sandbox.baseHead) ? { baseHead: sandbox.baseHead } : {}),
|
|
235
|
-
};
|
|
236
|
-
if (unavailableReason)
|
|
237
|
-
return result('unavailable', unavailableReason, counts);
|
|
238
|
-
if (codeFailure)
|
|
239
|
-
return result('verification-failed', 'required-command-failed', counts);
|
|
240
|
-
if (completed !== requiredCommands.length || passed !== requiredCommands.length) {
|
|
241
|
-
return result('unavailable', 'verification-infra-unavailable', counts);
|
|
242
|
-
}
|
|
243
|
-
return result('candidate-no-change', 'all-required-commands-passed', counts);
|
|
244
|
-
}
|
|
245
|
-
//# sourceMappingURL=generated-repair-resolution.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generated-repair-resolution.js","sourceRoot":"","sources":["../../../src/core/fleet/generated-repair-resolution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* "Can we bind this port right now?" — one answer, shared by both supervisors.
|
|
3
|
-
*
|
|
4
|
-
* This lived in supervisor.ts and was moved here verbatim when the Anthropic
|
|
5
|
-
* proxy grew a supervisor of its own: proxy-supervisor.ts needs the same
|
|
6
|
-
* question answered, and supervisor.ts already imports proxy-supervisor.ts, so
|
|
7
|
-
* leaving it where it was would have made the two modules import each other.
|
|
8
|
-
* supervisor.ts still re-exports it, so nothing downstream moved.
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* Can we bind this port right now?
|
|
12
|
-
*
|
|
13
|
-
* A dead process is not the same as a released port: a socket in TIME_WAIT, or
|
|
14
|
-
* a descendant still holding the listener, both keep the port busy while the
|
|
15
|
-
* pid we killed is gone. `stop` reports the port free only when this says so.
|
|
16
|
-
*/
|
|
17
|
-
export declare function isPortFree(host: string, port: number, timeoutMs?: number): Promise<boolean>;
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* "Can we bind this port right now?" — one answer, shared by both supervisors.
|
|
3
|
-
*
|
|
4
|
-
* This lived in supervisor.ts and was moved here verbatim when the Anthropic
|
|
5
|
-
* proxy grew a supervisor of its own: proxy-supervisor.ts needs the same
|
|
6
|
-
* question answered, and supervisor.ts already imports proxy-supervisor.ts, so
|
|
7
|
-
* leaving it where it was would have made the two modules import each other.
|
|
8
|
-
* supervisor.ts still re-exports it, so nothing downstream moved.
|
|
9
|
-
*/
|
|
10
|
-
import { createServer } from 'node:net';
|
|
11
|
-
/**
|
|
12
|
-
* Can we bind this port right now?
|
|
13
|
-
*
|
|
14
|
-
* A dead process is not the same as a released port: a socket in TIME_WAIT, or
|
|
15
|
-
* a descendant still holding the listener, both keep the port busy while the
|
|
16
|
-
* pid we killed is gone. `stop` reports the port free only when this says so.
|
|
17
|
-
*/
|
|
18
|
-
export function isPortFree(host, port, timeoutMs = 1_000) {
|
|
19
|
-
return new Promise((resolve) => {
|
|
20
|
-
const server = createServer();
|
|
21
|
-
let settled = false;
|
|
22
|
-
const finish = (free) => {
|
|
23
|
-
if (settled)
|
|
24
|
-
return;
|
|
25
|
-
settled = true;
|
|
26
|
-
try {
|
|
27
|
-
server.close();
|
|
28
|
-
}
|
|
29
|
-
catch {
|
|
30
|
-
// Already closed.
|
|
31
|
-
}
|
|
32
|
-
resolve(free);
|
|
33
|
-
};
|
|
34
|
-
const timer = setTimeout(() => finish(false), timeoutMs);
|
|
35
|
-
if (typeof timer.unref === 'function')
|
|
36
|
-
timer.unref();
|
|
37
|
-
server.once('error', () => {
|
|
38
|
-
clearTimeout(timer);
|
|
39
|
-
finish(false);
|
|
40
|
-
});
|
|
41
|
-
server.listen({ host, port, exclusive: true }, () => {
|
|
42
|
-
clearTimeout(timer);
|
|
43
|
-
finish(true);
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
//# sourceMappingURL=port.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"port.js","sourceRoot":"","sources":["../../../../src/core/local-runtime/llama/port.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,IAAY,EAAE,SAAS,GAAG,KAAK;IACtE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,IAAa,EAAQ,EAAE;YACrC,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB;YACpB,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;QACzD,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU;YAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YACxB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE;YAClD,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The proxy host process — what `ashlr local-runtime --_proxy-host` runs.
|
|
3
|
-
*
|
|
4
|
-
* This module IS the 24/7 local-agent story. Before it existed the Anthropic
|
|
5
|
-
* normalising proxy was an in-process singleton: a long-lived host kept it up,
|
|
6
|
-
* but `ashlr local-runtime start` set `process.exitCode`, returned to the shell
|
|
7
|
-
* and took the listener with it — llama-server survived (it is detached), so
|
|
8
|
-
* the operator was left with a serving runtime Claude Code could not talk to
|
|
9
|
-
* and no way to fix it but to keep a scratch script alive by hand.
|
|
10
|
-
*
|
|
11
|
-
* The fix is the one the runtime it fronts already uses: a detached child with
|
|
12
|
-
* an ownership record. This file is that child's whole body.
|
|
13
|
-
*
|
|
14
|
-
* WHAT DOES NOT CROSS THE ARGV BOUNDARY, and why it is the point:
|
|
15
|
-
*
|
|
16
|
-
* The bind host. Argv carries two integers — the proxy's port and
|
|
17
|
-
* llama-server's — and nothing else. The host is re-derived HERE from the
|
|
18
|
-
* persisted config and re-gated by `gateBindHost`, so there is no argument,
|
|
19
|
-
* environment variable or spawn site anywhere that can put this listener on
|
|
20
|
-
* the network. Neither this proxy nor llama-server behind it has any
|
|
21
|
-
* authentication of any kind: whoever reaches the port can run inference and
|
|
22
|
-
* read every slot's prompt. Leaving loopback still requires the persisted
|
|
23
|
-
* `models.llamaServer.allowNonLoopback: true` opt-in and nothing else.
|
|
24
|
-
*
|
|
25
|
-
* (Re-gating here is belt AND braces: `startAnthropicProxy` gates its own
|
|
26
|
-
* `host` argument too. Two gates on one value is deliberate — this is a
|
|
27
|
-
* detached, unattended process, and the cost of the redundancy is one
|
|
28
|
-
* function call.)
|
|
29
|
-
*/
|
|
30
|
-
/** The two integers the host accepts. Nothing else is a valid invocation. */
|
|
31
|
-
export interface ProxyHostArgs {
|
|
32
|
-
port: number;
|
|
33
|
-
upstreamPort: number;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Parse the host's argv.
|
|
37
|
-
*
|
|
38
|
-
* PURE and strict: an unknown flag, a repeat, a missing value or an
|
|
39
|
-
* out-of-range integer is a refusal, not a default. This argv is written by
|
|
40
|
-
* this program for this program, so anything unexpected means the two halves
|
|
41
|
-
* have drifted — and a proxy that silently binds a port nobody asked for is
|
|
42
|
-
* worse than one that refuses to start and says so in its log.
|
|
43
|
-
*/
|
|
44
|
-
export declare function parseProxyHostArgs(args: readonly string[]): ProxyHostArgs | {
|
|
45
|
-
error: string;
|
|
46
|
-
};
|
|
47
|
-
/**
|
|
48
|
-
* Run the proxy until a shutdown signal arrives. Resolves with an exit code.
|
|
49
|
-
*
|
|
50
|
-
* Never throws: this process has no terminal to print a stack trace to, so
|
|
51
|
-
* every failure is a line in the stderr log and a non-zero code the supervisor
|
|
52
|
-
* can see through the ownership record going stale.
|
|
53
|
-
*/
|
|
54
|
-
export declare function runAnthropicProxyHost(args: readonly string[]): Promise<number>;
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The proxy host process — what `ashlr local-runtime --_proxy-host` runs.
|
|
3
|
-
*
|
|
4
|
-
* This module IS the 24/7 local-agent story. Before it existed the Anthropic
|
|
5
|
-
* normalising proxy was an in-process singleton: a long-lived host kept it up,
|
|
6
|
-
* but `ashlr local-runtime start` set `process.exitCode`, returned to the shell
|
|
7
|
-
* and took the listener with it — llama-server survived (it is detached), so
|
|
8
|
-
* the operator was left with a serving runtime Claude Code could not talk to
|
|
9
|
-
* and no way to fix it but to keep a scratch script alive by hand.
|
|
10
|
-
*
|
|
11
|
-
* The fix is the one the runtime it fronts already uses: a detached child with
|
|
12
|
-
* an ownership record. This file is that child's whole body.
|
|
13
|
-
*
|
|
14
|
-
* WHAT DOES NOT CROSS THE ARGV BOUNDARY, and why it is the point:
|
|
15
|
-
*
|
|
16
|
-
* The bind host. Argv carries two integers — the proxy's port and
|
|
17
|
-
* llama-server's — and nothing else. The host is re-derived HERE from the
|
|
18
|
-
* persisted config and re-gated by `gateBindHost`, so there is no argument,
|
|
19
|
-
* environment variable or spawn site anywhere that can put this listener on
|
|
20
|
-
* the network. Neither this proxy nor llama-server behind it has any
|
|
21
|
-
* authentication of any kind: whoever reaches the port can run inference and
|
|
22
|
-
* read every slot's prompt. Leaving loopback still requires the persisted
|
|
23
|
-
* `models.llamaServer.allowNonLoopback: true` opt-in and nothing else.
|
|
24
|
-
*
|
|
25
|
-
* (Re-gating here is belt AND braces: `startAnthropicProxy` gates its own
|
|
26
|
-
* `host` argument too. Two gates on one value is deliberate — this is a
|
|
27
|
-
* detached, unattended process, and the cost of the redundancy is one
|
|
28
|
-
* function call.)
|
|
29
|
-
*/
|
|
30
|
-
import { loadConfigReadOnly } from '../../config.js';
|
|
31
|
-
import { startAnthropicProxy } from './anthropic-proxy.js';
|
|
32
|
-
import { allowsNonLoopback, gateBindHost, originFor, resolveLlamaRuntimeConfig, } from './config.js';
|
|
33
|
-
import { ANTHROPIC_PROXY_PORT_FLAG, ANTHROPIC_PROXY_UPSTREAM_PORT_FLAG, } from './proxy-process.js';
|
|
34
|
-
/** Signals that mean "shut down cleanly", i.e. what `stop` sends. */
|
|
35
|
-
const SHUTDOWN_SIGNALS = ['SIGTERM', 'SIGINT', 'SIGHUP'];
|
|
36
|
-
/**
|
|
37
|
-
* Parse the host's argv.
|
|
38
|
-
*
|
|
39
|
-
* PURE and strict: an unknown flag, a repeat, a missing value or an
|
|
40
|
-
* out-of-range integer is a refusal, not a default. This argv is written by
|
|
41
|
-
* this program for this program, so anything unexpected means the two halves
|
|
42
|
-
* have drifted — and a proxy that silently binds a port nobody asked for is
|
|
43
|
-
* worse than one that refuses to start and says so in its log.
|
|
44
|
-
*/
|
|
45
|
-
export function parseProxyHostArgs(args) {
|
|
46
|
-
let port;
|
|
47
|
-
let upstreamPort;
|
|
48
|
-
const integer = (raw, flag) => {
|
|
49
|
-
const value = Number.parseInt(raw ?? '', 10);
|
|
50
|
-
if (!Number.isInteger(value) || value < 1 || value > 65_535) {
|
|
51
|
-
return { error: `${flag} expects a port between 1 and 65535` };
|
|
52
|
-
}
|
|
53
|
-
return value;
|
|
54
|
-
};
|
|
55
|
-
for (let index = 0; index < args.length; index += 1) {
|
|
56
|
-
const arg = args[index];
|
|
57
|
-
if (arg !== ANTHROPIC_PROXY_PORT_FLAG && arg !== ANTHROPIC_PROXY_UPSTREAM_PORT_FLAG) {
|
|
58
|
-
return { error: `unexpected argument "${arg}"` };
|
|
59
|
-
}
|
|
60
|
-
const parsed = integer(args[index + 1], arg);
|
|
61
|
-
if (typeof parsed !== 'number')
|
|
62
|
-
return parsed;
|
|
63
|
-
index += 1;
|
|
64
|
-
if (arg === ANTHROPIC_PROXY_PORT_FLAG) {
|
|
65
|
-
if (port !== undefined)
|
|
66
|
-
return { error: `${arg} given twice` };
|
|
67
|
-
port = parsed;
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
if (upstreamPort !== undefined)
|
|
71
|
-
return { error: `${arg} given twice` };
|
|
72
|
-
upstreamPort = parsed;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
if (port === undefined)
|
|
76
|
-
return { error: `${ANTHROPIC_PROXY_PORT_FLAG} is required` };
|
|
77
|
-
if (upstreamPort === undefined) {
|
|
78
|
-
return { error: `${ANTHROPIC_PROXY_UPSTREAM_PORT_FLAG} is required` };
|
|
79
|
-
}
|
|
80
|
-
return { port, upstreamPort };
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Run the proxy until a shutdown signal arrives. Resolves with an exit code.
|
|
84
|
-
*
|
|
85
|
-
* Never throws: this process has no terminal to print a stack trace to, so
|
|
86
|
-
* every failure is a line in the stderr log and a non-zero code the supervisor
|
|
87
|
-
* can see through the ownership record going stale.
|
|
88
|
-
*/
|
|
89
|
-
export async function runAnthropicProxyHost(args) {
|
|
90
|
-
const parsed = parseProxyHostArgs(args);
|
|
91
|
-
if ('error' in parsed) {
|
|
92
|
-
console.error(`anthropic-proxy host: ${parsed.error}`);
|
|
93
|
-
return 2;
|
|
94
|
-
}
|
|
95
|
-
const cfg = loadConfigReadOnly();
|
|
96
|
-
const runtime = resolveLlamaRuntimeConfig(cfg);
|
|
97
|
-
// Re-gated rather than trusted. `resolveLlamaRuntimeConfig` already applied
|
|
98
|
-
// the rule, but this process is detached and unattended, so the value is
|
|
99
|
-
// re-checked at the point of use where the refusal can still be logged.
|
|
100
|
-
const { host, downgradedFrom } = gateBindHost(runtime.host, allowsNonLoopback(cfg));
|
|
101
|
-
// TWO sources of "a non-loopback host was refused", and both are reported:
|
|
102
|
-
//
|
|
103
|
-
// `runtime.hostDowngradedFrom` is the resolver's own refusal — the one that
|
|
104
|
-
// actually fires in practice, because `resolveLlamaRuntimeConfig` gates
|
|
105
|
-
// before it returns. It carries the host that was REQUESTED (via
|
|
106
|
-
// ASHLR_LOCAL_RUNTIME_HOST or models.llamaServer.host), which is the only
|
|
107
|
-
// spelling worth printing: by the time the value reaches `gateBindHost`
|
|
108
|
-
// below it has already been replaced.
|
|
109
|
-
//
|
|
110
|
-
// `downgradedFrom` is this module's own re-gate. It cannot fire while the
|
|
111
|
-
// resolver gates first, and that is exactly why it stays: it is the
|
|
112
|
-
// assertion that this detached, unattended process never binds a host it
|
|
113
|
-
// did not check itself, and it would fire the day someone hands this
|
|
114
|
-
// function an ungated host.
|
|
115
|
-
const refused = runtime.hostDowngradedFrom ?? downgradedFrom;
|
|
116
|
-
if (refused !== null) {
|
|
117
|
-
console.error(`anthropic-proxy host: refused the non-loopback bind host '${refused}'; ` +
|
|
118
|
-
`binding ${host} instead. llama-server and this proxy have no authentication of any ` +
|
|
119
|
-
'kind, so leaving loopback requires the persisted opt-in ' +
|
|
120
|
-
'models.llamaServer.allowNonLoopback=true.');
|
|
121
|
-
}
|
|
122
|
-
const upstreamOrigin = originFor(host, parsed.upstreamPort);
|
|
123
|
-
let handle;
|
|
124
|
-
try {
|
|
125
|
-
handle = await startAnthropicProxy({
|
|
126
|
-
cfg,
|
|
127
|
-
host,
|
|
128
|
-
port: parsed.port,
|
|
129
|
-
upstreamOrigin,
|
|
130
|
-
// The whole reason this process exists. Without it Node sees an empty
|
|
131
|
-
// event loop and exits before serving a single request.
|
|
132
|
-
holdProcessOpen: true,
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
catch (err) {
|
|
136
|
-
console.error(`anthropic-proxy host: could not bind ${host}:${parsed.port} — ` +
|
|
137
|
-
`${err instanceof Error ? err.message : String(err)}`);
|
|
138
|
-
return 1;
|
|
139
|
-
}
|
|
140
|
-
console.log(`anthropic-proxy host: listening on ${handle.origin} -> ${handle.upstreamOrigin} ` +
|
|
141
|
-
`(pid ${process.pid}, started ${new Date().toISOString()})`);
|
|
142
|
-
await new Promise((done) => {
|
|
143
|
-
let shuttingDown = false;
|
|
144
|
-
const shutdown = (signal) => {
|
|
145
|
-
if (shuttingDown)
|
|
146
|
-
return;
|
|
147
|
-
shuttingDown = true;
|
|
148
|
-
console.log(`anthropic-proxy host: ${signal} received, releasing ${handle.origin}`);
|
|
149
|
-
// `close()` cuts live SSE sockets as well as the listener, so this is
|
|
150
|
-
// bounded even with a generation in flight. Once it resolves nothing
|
|
151
|
-
// ref'd is left and Node exits on its own.
|
|
152
|
-
void handle.close().then(() => done(), () => done());
|
|
153
|
-
};
|
|
154
|
-
for (const signal of SHUTDOWN_SIGNALS)
|
|
155
|
-
process.on(signal, shutdown);
|
|
156
|
-
});
|
|
157
|
-
return 0;
|
|
158
|
-
}
|
|
159
|
-
//# sourceMappingURL=proxy-host.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-host.js","sourceRoot":"","sources":["../../../../src/core/local-runtime/llama/proxy-host.ts"],"names":[],"mappings":"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"}
|