@svenroth-ai/shipwright 0.27.0 → 0.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/dist/apple-touch-icon.png +0 -0
- package/client/dist/assets/{EmbeddedTerminal-CqCQUDtp.js → EmbeddedTerminal-IkAS1bic.js} +30 -30
- package/client/dist/assets/{abnfDiagram-VRR7QNED-DX2objTP.js → abnfDiagram-VCTEODGH-CclAL-Ri.js} +1 -1
- package/client/dist/assets/arc-C8vUxwav.js +1 -0
- package/client/dist/assets/architectureDiagram-5GKGNRK7-DdrrZJx7.js +36 -0
- package/client/dist/assets/blockDiagram-I7D4REHJ-CMhbhsVq.js +129 -0
- package/client/dist/assets/c4Diagram-7LVT6UL2-OvlH6BiV.js +38 -0
- package/client/dist/assets/channel-BtkABUIE.js +1 -0
- package/client/dist/assets/{chunk-2Q5K7J3B-C111EHL6.js → chunk-2Q5K7J3B-BxUk85j7.js} +1 -1
- package/client/dist/assets/{chunk-5VM5RSS4-DIejoaXS.js → chunk-5VM5RSS4-DoTSs3Kn.js} +1 -1
- package/client/dist/assets/{chunk-32BRIVSS-DrCYs2XG.js → chunk-F27PBJKO-DquVu1wX.js} +1 -1
- package/client/dist/assets/{chunk-EX3LRPZG-CGWNeH2g.js → chunk-IMKFNOWR-8l4wPLQK.js} +5 -5
- package/client/dist/assets/{chunk-JWPE2WC7-CCH0SRFY.js → chunk-JWPE2WC7-CTAa0a4O.js} +1 -1
- package/client/dist/assets/chunk-POPQ4Y6H-BZ6zpqEF.js +1 -0
- package/client/dist/assets/{chunk-MOJQB5TN-B3OpZGRv.js → chunk-SVP7TREG-Dx7pMiq4.js} +1 -1
- package/client/dist/assets/{chunk-V7JOEXUC-B6Bu8x1y.js → chunk-TICWLB2K-BtDKT858.js} +1 -1
- package/client/dist/assets/{chunk-XXDRQBXY-xyjuuhxl.js → chunk-XXDRQBXY-BbrrrzuM.js} +1 -1
- package/client/dist/assets/classDiagram-ZZMXUADV-2gEcH3cX.js +1 -0
- package/client/dist/assets/classDiagram-v2-VYDZK3BY-2gEcH3cX.js +1 -0
- package/client/dist/assets/{cose-bilkent-JH36ORCC-BQIH3SCK.js → cose-bilkent-JH36ORCC-Bhem6unn.js} +1 -1
- package/client/dist/assets/{cynefin-VYW2F7L2-oyLAz8te.js → cynefin-OW5HDTMX-hukx0bAt.js} +3 -3
- package/client/dist/assets/{cynefinDiagram-TSTJHNR4-DoLCsH0l.js → cynefinDiagram-5FMLGOSQ-CGogKYMK.js} +1 -1
- package/client/dist/assets/dagre-GXQ25YYZ-BiLo3XBj.js +4 -0
- package/client/dist/assets/diagram-S7CK7UJ4-DBfdjdN6.js +30 -0
- package/client/dist/assets/diagram-UQ7AKVKN-3CvmyZYO.js +41 -0
- package/client/dist/assets/{diagram-FQU43EPY-DFuYE0Vf.js → diagram-VSXAHHWV-COG9399I.js} +2 -2
- package/client/dist/assets/{diagram-G47NLZAW-CffCZVXk.js → diagram-VX7I27RA-Dftpj84a.js} +1 -1
- package/client/dist/assets/{diagram-NH7WQ7WH-BhrHtUlt.js → diagram-Z3DM3KII-Dw9_CGLA.js} +1 -1
- package/client/dist/assets/{ebnfDiagram-CCIWWBDH-DfV7gT4m.js → ebnfDiagram-PWID7BFC-CJirhPah.js} +1 -1
- package/client/dist/assets/erDiagram-RLTQ6QDP-B11aYoo6.js +99 -0
- package/client/dist/assets/flowDiagram-HODETNUW-CPC6X9E5.js +168 -0
- package/client/dist/assets/{ganttDiagram-NO4QXBWP-BclyOgMb.js → ganttDiagram-EL5Y4UJY-DDSk2AAg.js} +4 -4
- package/client/dist/assets/{gitGraphDiagram-IHSO6WYX-BXT4rIKj.js → gitGraphDiagram-WWUBYQGX-D_2UGciq.js} +1 -1
- package/client/dist/assets/index-DDSwQXcp.js +924 -0
- package/client/dist/assets/index-DWrPE3aq.css +1 -0
- package/client/dist/assets/infoDiagram-27XIBGKW-BuUv5Wms.js +2 -0
- package/client/dist/assets/{ishikawaDiagram-FXEZZL3T-BBUFWq5C.js → ishikawaDiagram-5VMMS53U-DpnAnJ0q.js} +4 -4
- package/client/dist/assets/{journeyDiagram-5HDEW3XC-CmclipcQ.js → journeyDiagram-3NMN7TZE-CFUsXz2q.js} +2 -2
- package/client/dist/assets/{kanban-definition-HUTT4EX6-eIzUeZ03.js → kanban-definition-UXKFOSKX-BAq4Kujj.js} +8 -8
- package/client/dist/assets/katex-C5jXJg4s.js +257 -0
- package/client/dist/assets/layout-CccpfEe3.js +1 -0
- package/client/dist/assets/{linear-DGiT7uKK.js → linear-BIeIr2tp.js} +1 -1
- package/client/dist/assets/mermaid.core-B-Ezy6Me.js +312 -0
- package/client/dist/assets/{mindmap-definition-LN4V7U3C-C4ANnNiP.js → mindmap-definition-YA3MSWOX-CMPZ0Ggp.js} +2 -2
- package/client/dist/assets/{pegDiagram-2B236MQR-DnMeh3Yh.js → pegDiagram-XKGWAZYB-B0_2KQ6f.js} +1 -1
- package/client/dist/assets/{pieDiagram-ENE6RG2P-CKV_rkhF.js → pieDiagram-E7YTZNPT-1-nOk5pZ.js} +3 -3
- package/client/dist/assets/{quadrantDiagram-ABIIQ3AL-BuUsGwHh.js → quadrantDiagram-AXDQQJYC-C_RdmOuq.js} +1 -1
- package/client/dist/assets/{railroadDiagram-RFXS5EU6-BwwdKnFL.js → railroadDiagram-O6MQD6OU-o73KM0oq.js} +1 -1
- package/client/dist/assets/{requirementDiagram-TGXJPOKE-CpQZouJV.js → requirementDiagram-BXWQKSXE-DnhCWJHv.js} +5 -5
- package/client/dist/assets/{sankeyDiagram-HTMAVEWB-4fnDUNVa.js → sankeyDiagram-P5KCCOFB-CVkYgfTV.js} +4 -4
- package/client/dist/assets/{sequenceDiagram-DBY2YBRQ-BOcaWlM0.js → sequenceDiagram-WJ2MYXX4-BYLed29R.js} +1 -1
- package/client/dist/assets/{sizeCapture-X5ZJPWSS-_pv-9R0c.js → sizeCapture-INFHLROL-CYb4HDaH.js} +1 -1
- package/client/dist/assets/stateDiagram-D77RDMKH-CNKFRye_.js +1 -0
- package/client/dist/assets/stateDiagram-v2-MP3YSRHH-NpMhMQ36.js +1 -0
- package/client/dist/assets/swimlanes-42K2YHIH-BhsYrplp.js +1 -0
- package/client/dist/assets/swimlanesDiagram-VR7AAH4N-B4frkWBG.js +8 -0
- package/client/dist/assets/{timeline-definition-FHXFAJF6-rhGYElgn.js → timeline-definition-24CTP7MA-DiUXzB2p.js} +3 -3
- package/client/dist/assets/{vennDiagram-L72KCM5P-BoGjRxyA.js → vennDiagram-4TSXK5OY-aE4j6W86.js} +5 -5
- package/client/dist/assets/{wardleyDiagram-EHGQE667-D-IGv5bH.js → wardleyDiagram-VM6X3IG4-BxJXq0mU.js} +1 -1
- package/client/dist/assets/xychartDiagram-S5SC5T6Z-4vHeL9zc.js +7 -0
- package/client/dist/favicon-16.png +0 -0
- package/client/dist/favicon-32.png +0 -0
- package/client/dist/icon-192.png +0 -0
- package/client/dist/icon-512.png +0 -0
- package/client/dist/icon-maskable-512.png +0 -0
- package/client/dist/index.html +11 -2
- package/client/dist/manifest.json +13 -0
- package/lib/preflight.mjs +24 -5
- package/lib/util.mjs +5 -1
- package/package.json +2 -2
- package/scripts/deploy-procs.mjs +105 -20
- package/scripts/deploy-swap.mjs +23 -2
- package/server/dist/config.d.ts +9 -0
- package/server/dist/config.d.ts.map +1 -1
- package/server/dist/config.js +8 -2
- package/server/dist/config.js.map +1 -1
- package/server/dist/core/adopt-scan-findings.d.ts +12 -0
- package/server/dist/core/adopt-scan-findings.d.ts.map +1 -0
- package/server/dist/core/adopt-scan-findings.js +96 -0
- package/server/dist/core/adopt-scan-findings.js.map +1 -0
- package/server/dist/core/adopt-scan.d.ts +49 -0
- package/server/dist/core/adopt-scan.d.ts.map +1 -0
- package/server/dist/core/adopt-scan.js +201 -0
- package/server/dist/core/adopt-scan.js.map +1 -0
- package/server/dist/core/campaign-events.d.ts.map +1 -1
- package/server/dist/core/campaign-events.js +1 -0
- package/server/dist/core/campaign-events.js.map +1 -1
- package/server/dist/core/campaign-loop-state.d.ts.map +1 -1
- package/server/dist/core/campaign-loop-state.js +54 -21
- package/server/dist/core/campaign-loop-state.js.map +1 -1
- package/server/dist/core/campaign-parse.d.ts +4 -0
- package/server/dist/core/campaign-parse.d.ts.map +1 -1
- package/server/dist/core/campaign-parse.js +9 -0
- package/server/dist/core/campaign-parse.js.map +1 -1
- package/server/dist/core/campaign-readiness-schema.d.ts +33 -0
- package/server/dist/core/campaign-readiness-schema.d.ts.map +1 -0
- package/server/dist/core/campaign-readiness-schema.js +70 -0
- package/server/dist/core/campaign-readiness-schema.js.map +1 -0
- package/server/dist/core/campaign-readiness.d.ts +59 -0
- package/server/dist/core/campaign-readiness.d.ts.map +1 -0
- package/server/dist/core/campaign-readiness.js +163 -0
- package/server/dist/core/campaign-readiness.js.map +1 -0
- package/server/dist/core/campaign-status-json.d.ts +3 -0
- package/server/dist/core/campaign-status-json.d.ts.map +1 -1
- package/server/dist/core/campaign-status-json.js +7 -0
- package/server/dist/core/campaign-status-json.js.map +1 -1
- package/server/dist/core/campaign-store.d.ts.map +1 -1
- package/server/dist/core/campaign-store.js +4 -1
- package/server/dist/core/campaign-store.js.map +1 -1
- package/server/dist/core/campaign-types.d.ts +8 -0
- package/server/dist/core/campaign-types.d.ts.map +1 -1
- package/server/dist/core/campaign-worktree-root.d.ts +19 -0
- package/server/dist/core/campaign-worktree-root.d.ts.map +1 -0
- package/server/dist/core/campaign-worktree-root.js +76 -0
- package/server/dist/core/campaign-worktree-root.js.map +1 -0
- package/server/dist/core/claim-record-lock.d.ts +30 -0
- package/server/dist/core/claim-record-lock.d.ts.map +1 -0
- package/server/dist/core/claim-record-lock.js +90 -0
- package/server/dist/core/claim-record-lock.js.map +1 -0
- package/server/dist/core/cli-child-spawn.d.ts +28 -0
- package/server/dist/core/cli-child-spawn.d.ts.map +1 -0
- package/server/dist/core/cli-child-spawn.js +146 -0
- package/server/dist/core/cli-child-spawn.js.map +1 -0
- package/server/dist/core/codex-models-probe.d.ts +46 -0
- package/server/dist/core/codex-models-probe.d.ts.map +1 -0
- package/server/dist/core/codex-models-probe.js +103 -0
- package/server/dist/core/codex-models-probe.js.map +1 -0
- package/server/dist/core/codex-oracle-runner.d.ts +68 -0
- package/server/dist/core/codex-oracle-runner.d.ts.map +1 -0
- package/server/dist/core/codex-oracle-runner.js +124 -0
- package/server/dist/core/codex-oracle-runner.js.map +1 -0
- package/server/dist/core/codex-status-report.d.ts +6 -0
- package/server/dist/core/codex-status-report.d.ts.map +1 -0
- package/server/dist/core/codex-status-report.js +40 -0
- package/server/dist/core/codex-status-report.js.map +1 -0
- package/server/dist/core/codex-task-watcher-types.d.ts +69 -0
- package/server/dist/core/codex-task-watcher-types.d.ts.map +1 -0
- package/server/dist/core/codex-task-watcher-types.js +12 -0
- package/server/dist/core/codex-task-watcher-types.js.map +1 -0
- package/server/dist/core/codex-task-watcher.d.ts +30 -0
- package/server/dist/core/codex-task-watcher.d.ts.map +1 -0
- package/server/dist/core/codex-task-watcher.js +252 -0
- package/server/dist/core/codex-task-watcher.js.map +1 -0
- package/server/dist/core/codex-terminal-signal-detect.d.ts +7 -0
- package/server/dist/core/codex-terminal-signal-detect.d.ts.map +1 -0
- package/server/dist/core/codex-terminal-signal-detect.js +113 -0
- package/server/dist/core/codex-terminal-signal-detect.js.map +1 -0
- package/server/dist/core/codex-thread-discovery.d.ts +21 -0
- package/server/dist/core/codex-thread-discovery.d.ts.map +1 -0
- package/server/dist/core/codex-thread-discovery.js +169 -0
- package/server/dist/core/codex-thread-discovery.js.map +1 -0
- package/server/dist/core/codextender-auth-file-sweep.d.ts +41 -0
- package/server/dist/core/codextender-auth-file-sweep.d.ts.map +1 -0
- package/server/dist/core/codextender-auth-file-sweep.js +97 -0
- package/server/dist/core/codextender-auth-file-sweep.js.map +1 -0
- package/server/dist/core/codextender-proxy-probe.d.ts +80 -0
- package/server/dist/core/codextender-proxy-probe.d.ts.map +1 -0
- package/server/dist/core/codextender-proxy-probe.js +179 -0
- package/server/dist/core/codextender-proxy-probe.js.map +1 -0
- package/server/dist/core/contract-version.d.ts +16 -1
- package/server/dist/core/contract-version.d.ts.map +1 -1
- package/server/dist/core/contract-version.js +16 -1
- package/server/dist/core/contract-version.js.map +1 -1
- package/server/dist/core/custom-profile-command-policy.d.ts +6 -0
- package/server/dist/core/custom-profile-command-policy.d.ts.map +1 -0
- package/server/dist/core/custom-profile-command-policy.js +110 -0
- package/server/dist/core/custom-profile-command-policy.js.map +1 -0
- package/server/dist/core/custom-profile-loader.d.ts +34 -0
- package/server/dist/core/custom-profile-loader.d.ts.map +1 -0
- package/server/dist/core/custom-profile-loader.js +225 -0
- package/server/dist/core/custom-profile-loader.js.map +1 -0
- package/server/dist/core/launcher-codex.d.ts +61 -0
- package/server/dist/core/launcher-codex.d.ts.map +1 -0
- package/server/dist/core/launcher-codex.js +187 -0
- package/server/dist/core/launcher-codex.js.map +1 -0
- package/server/dist/core/launcher-codextender-env.d.ts +44 -0
- package/server/dist/core/launcher-codextender-env.d.ts.map +1 -0
- package/server/dist/core/launcher-codextender-env.js +212 -0
- package/server/dist/core/launcher-codextender-env.js.map +1 -0
- package/server/dist/core/launcher-codextender.d.ts +72 -0
- package/server/dist/core/launcher-codextender.d.ts.map +1 -0
- package/server/dist/core/launcher-codextender.js +98 -0
- package/server/dist/core/launcher-codextender.js.map +1 -0
- package/server/dist/core/launcher-codextender.smoke-helpers.d.ts +25 -0
- package/server/dist/core/launcher-codextender.smoke-helpers.d.ts.map +1 -0
- package/server/dist/core/launcher-codextender.smoke-helpers.js +211 -0
- package/server/dist/core/launcher-codextender.smoke-helpers.js.map +1 -0
- package/server/dist/core/launcher-permission-flags.d.ts +17 -0
- package/server/dist/core/launcher-permission-flags.d.ts.map +1 -0
- package/server/dist/core/launcher-permission-flags.js +27 -0
- package/server/dist/core/launcher-permission-flags.js.map +1 -0
- package/server/dist/core/launcher.d.ts +18 -0
- package/server/dist/core/launcher.d.ts.map +1 -1
- package/server/dist/core/launcher.js +6 -0
- package/server/dist/core/launcher.js.map +1 -1
- package/server/dist/core/leadwright-preflight-transport.d.ts +27 -0
- package/server/dist/core/leadwright-preflight-transport.d.ts.map +1 -0
- package/server/dist/core/leadwright-preflight-transport.js +124 -0
- package/server/dist/core/leadwright-preflight-transport.js.map +1 -0
- package/server/dist/core/mission-context/artifacts-tests-ac.d.ts +6 -0
- package/server/dist/core/mission-context/artifacts-tests-ac.d.ts.map +1 -0
- package/server/dist/core/mission-context/artifacts-tests-ac.js +31 -0
- package/server/dist/core/mission-context/artifacts-tests-ac.js.map +1 -0
- package/server/dist/core/mission-context/artifacts-tests.d.ts.map +1 -1
- package/server/dist/core/mission-context/artifacts-tests.js +20 -0
- package/server/dist/core/mission-context/artifacts-tests.js.map +1 -1
- package/server/dist/core/mission-context/resolver-io.d.ts +10 -0
- package/server/dist/core/mission-context/resolver-io.d.ts.map +1 -1
- package/server/dist/core/mission-context/resolver-parts.d.ts +8 -7
- package/server/dist/core/mission-context/resolver-parts.d.ts.map +1 -1
- package/server/dist/core/mission-context/resolver-parts.js +22 -14
- package/server/dist/core/mission-context/resolver-parts.js.map +1 -1
- package/server/dist/core/mission-context/resolver.d.ts.map +1 -1
- package/server/dist/core/mission-context/resolver.js +1 -1
- package/server/dist/core/mission-context/resolver.js.map +1 -1
- package/server/dist/core/mission-context/run-id-recovery.d.ts +18 -2
- package/server/dist/core/mission-context/run-id-recovery.d.ts.map +1 -1
- package/server/dist/core/mission-context/run-id-recovery.js +38 -18
- package/server/dist/core/mission-context/run-id-recovery.js.map +1 -1
- package/server/dist/core/mission-context/traceability.d.ts.map +1 -1
- package/server/dist/core/mission-context/traceability.js +15 -1
- package/server/dist/core/mission-context/traceability.js.map +1 -1
- package/server/dist/core/mission-context/types-slice2.d.ts +44 -0
- package/server/dist/core/mission-context/types-slice2.d.ts.map +1 -1
- package/server/dist/core/model-tier-config-reader.d.ts +14 -1
- package/server/dist/core/model-tier-config-reader.d.ts.map +1 -1
- package/server/dist/core/model-tier-config-reader.js +34 -2
- package/server/dist/core/model-tier-config-reader.js.map +1 -1
- package/server/dist/core/powershell-probe.smoke-helpers.d.ts +12 -0
- package/server/dist/core/powershell-probe.smoke-helpers.d.ts.map +1 -0
- package/server/dist/core/powershell-probe.smoke-helpers.js +80 -0
- package/server/dist/core/powershell-probe.smoke-helpers.js.map +1 -0
- package/server/dist/core/preview-child-lifecycle.d.ts +7 -2
- package/server/dist/core/preview-child-lifecycle.d.ts.map +1 -1
- package/server/dist/core/preview-child-lifecycle.js +17 -5
- package/server/dist/core/preview-child-lifecycle.js.map +1 -1
- package/server/dist/core/preview-session-manager.d.ts +1 -0
- package/server/dist/core/preview-session-manager.d.ts.map +1 -1
- package/server/dist/core/preview-session-manager.js +2 -2
- package/server/dist/core/preview-session-manager.js.map +1 -1
- package/server/dist/core/project-actions-loader.d.ts +13 -0
- package/server/dist/core/project-actions-loader.d.ts.map +1 -1
- package/server/dist/core/project-actions-loader.js +28 -6
- package/server/dist/core/project-actions-loader.js.map +1 -1
- package/server/dist/core/project-data-dir.d.ts +41 -0
- package/server/dist/core/project-data-dir.d.ts.map +1 -0
- package/server/dist/core/project-data-dir.js +64 -0
- package/server/dist/core/project-data-dir.js.map +1 -0
- package/server/dist/core/project-data-migrate.d.ts +14 -0
- package/server/dist/core/project-data-migrate.d.ts.map +1 -0
- package/server/dist/core/project-data-migrate.js +94 -0
- package/server/dist/core/project-data-migrate.js.map +1 -0
- package/server/dist/core/project-manager.d.ts.map +1 -1
- package/server/dist/core/project-manager.js +9 -10
- package/server/dist/core/project-manager.js.map +1 -1
- package/server/dist/core/readiness-install-hints.d.ts +1 -1
- package/server/dist/core/readiness-install-hints.d.ts.map +1 -1
- package/server/dist/core/readiness-install-hints.js +5 -0
- package/server/dist/core/readiness-install-hints.js.map +1 -1
- package/server/dist/core/readiness-probe-run.d.ts +61 -0
- package/server/dist/core/readiness-probe-run.d.ts.map +1 -1
- package/server/dist/core/readiness-probe-run.js +93 -15
- package/server/dist/core/readiness-probe-run.js.map +1 -1
- package/server/dist/core/readiness-probe.d.ts +1 -1
- package/server/dist/core/readiness-probe.d.ts.map +1 -1
- package/server/dist/core/readiness-probe.js +36 -8
- package/server/dist/core/readiness-probe.js.map +1 -1
- package/server/dist/core/sdk-sessions-store.d.ts +46 -0
- package/server/dist/core/sdk-sessions-store.d.ts.map +1 -1
- package/server/dist/core/sdk-sessions-store.js +1 -0
- package/server/dist/core/sdk-sessions-store.js.map +1 -1
- package/server/dist/core/sdk-sessions-validate.d.ts.map +1 -1
- package/server/dist/core/sdk-sessions-validate.js +11 -0
- package/server/dist/core/sdk-sessions-validate.js.map +1 -1
- package/server/dist/core/session-file/access.d.ts +26 -0
- package/server/dist/core/session-file/access.d.ts.map +1 -0
- package/server/dist/core/session-file/access.js +143 -0
- package/server/dist/core/session-file/access.js.map +1 -0
- package/server/dist/core/session-file/asset-access.d.ts +15 -0
- package/server/dist/core/session-file/asset-access.d.ts.map +1 -0
- package/server/dist/core/session-file/asset-access.js +141 -0
- package/server/dist/core/session-file/asset-access.js.map +1 -0
- package/server/dist/core/session-file/evidence.d.ts +25 -0
- package/server/dist/core/session-file/evidence.d.ts.map +1 -0
- package/server/dist/core/session-file/evidence.js +201 -0
- package/server/dist/core/session-file/evidence.js.map +1 -0
- package/server/dist/core/session-file/probe.d.ts +16 -0
- package/server/dist/core/session-file/probe.d.ts.map +1 -0
- package/server/dist/core/session-file/probe.js +63 -0
- package/server/dist/core/session-file/probe.js.map +1 -0
- package/server/dist/core/session-file/safe-read.d.ts +33 -0
- package/server/dist/core/session-file/safe-read.d.ts.map +1 -0
- package/server/dist/core/session-file/safe-read.js +103 -0
- package/server/dist/core/session-file/safe-read.js.map +1 -0
- package/server/dist/core/session-file/sensitive.d.ts +5 -0
- package/server/dist/core/session-file/sensitive.d.ts.map +1 -0
- package/server/dist/core/session-file/sensitive.js +52 -0
- package/server/dist/core/session-file/sensitive.js.map +1 -0
- package/server/dist/core/session-info/collect.d.ts +70 -0
- package/server/dist/core/session-info/collect.d.ts.map +1 -0
- package/server/dist/core/session-info/collect.js +248 -0
- package/server/dist/core/session-info/collect.js.map +1 -0
- package/server/dist/core/session-info/line-scan.d.ts +20 -0
- package/server/dist/core/session-info/line-scan.d.ts.map +1 -0
- package/server/dist/core/session-info/line-scan.js +109 -0
- package/server/dist/core/session-info/line-scan.js.map +1 -0
- package/server/dist/core/session-info/remote-control.d.ts +9 -0
- package/server/dist/core/session-info/remote-control.d.ts.map +1 -0
- package/server/dist/core/session-info/remote-control.js +64 -0
- package/server/dist/core/session-info/remote-control.js.map +1 -0
- package/server/dist/core/session-info/session-info.d.ts +18 -0
- package/server/dist/core/session-info/session-info.d.ts.map +1 -0
- package/server/dist/core/session-info/session-info.js +170 -0
- package/server/dist/core/session-info/session-info.js.map +1 -0
- package/server/dist/core/session-info/small-file.d.ts +2 -0
- package/server/dist/core/session-info/small-file.d.ts.map +1 -0
- package/server/dist/core/session-info/small-file.js +42 -0
- package/server/dist/core/session-info/small-file.js.map +1 -0
- package/server/dist/core/session-info/subagent-transcript.d.ts +12 -0
- package/server/dist/core/session-info/subagent-transcript.d.ts.map +1 -0
- package/server/dist/core/session-info/subagent-transcript.js +78 -0
- package/server/dist/core/session-info/subagent-transcript.js.map +1 -0
- package/server/dist/core/session-info/subagents.d.ts +14 -0
- package/server/dist/core/session-info/subagents.d.ts.map +1 -0
- package/server/dist/core/session-info/subagents.js +92 -0
- package/server/dist/core/session-info/subagents.js.map +1 -0
- package/server/dist/core/session-info/test-fixtures.d.ts +50 -0
- package/server/dist/core/session-info/test-fixtures.d.ts.map +1 -0
- package/server/dist/core/session-info/test-fixtures.js +43 -0
- package/server/dist/core/session-info/test-fixtures.js.map +1 -0
- package/server/dist/core/session-info/types.d.ts +77 -0
- package/server/dist/core/session-info/types.d.ts.map +1 -0
- package/server/dist/core/session-info/types.js +14 -0
- package/server/dist/core/session-info/types.js.map +1 -0
- package/server/dist/core/settings-reader.d.ts +18 -0
- package/server/dist/core/settings-reader.d.ts.map +1 -0
- package/server/dist/core/settings-reader.js +40 -0
- package/server/dist/core/settings-reader.js.map +1 -0
- package/server/dist/core/shell-quote.d.ts +29 -0
- package/server/dist/core/shell-quote.d.ts.map +1 -1
- package/server/dist/core/shell-quote.js +34 -0
- package/server/dist/core/shell-quote.js.map +1 -1
- package/server/dist/core/stack-profiles-create.d.ts +31 -0
- package/server/dist/core/stack-profiles-create.d.ts.map +1 -0
- package/server/dist/core/stack-profiles-create.js +128 -0
- package/server/dist/core/stack-profiles-create.js.map +1 -0
- package/server/dist/core/stack-profiles.d.ts +49 -0
- package/server/dist/core/stack-profiles.d.ts.map +1 -0
- package/server/dist/core/stack-profiles.js +142 -0
- package/server/dist/core/stack-profiles.js.map +1 -0
- package/server/dist/core/task-editability.d.ts +1 -1
- package/server/dist/core/task-editability.d.ts.map +1 -1
- package/server/dist/core/task-editability.js +1 -0
- package/server/dist/core/task-editability.js.map +1 -1
- package/server/dist/core/triage-cli-runner.d.ts.map +1 -1
- package/server/dist/core/triage-cli-runner.js +6 -21
- package/server/dist/core/triage-cli-runner.js.map +1 -1
- package/server/dist/core/triage-compose.d.ts.map +1 -1
- package/server/dist/core/triage-compose.js +34 -3
- package/server/dist/core/triage-compose.js.map +1 -1
- package/server/dist/core/triage-store.d.ts +2 -1
- package/server/dist/core/triage-store.d.ts.map +1 -1
- package/server/dist/core/triage-store.js +1 -1
- package/server/dist/core/triage-store.js.map +1 -1
- package/server/dist/external/_shared/helpers.d.ts +2 -0
- package/server/dist/external/_shared/helpers.d.ts.map +1 -1
- package/server/dist/external/_shared/helpers.js.map +1 -1
- package/server/dist/external/actions/get.d.ts +3 -1
- package/server/dist/external/actions/get.d.ts.map +1 -1
- package/server/dist/external/actions/get.js +15 -4
- package/server/dist/external/actions/get.js.map +1 -1
- package/server/dist/external/actions/routes.d.ts +3 -1
- package/server/dist/external/actions/routes.d.ts.map +1 -1
- package/server/dist/external/actions/routes.js.map +1 -1
- package/server/dist/external/actions/stub.d.ts.map +1 -1
- package/server/dist/external/actions/stub.js +15 -4
- package/server/dist/external/actions/stub.js.map +1 -1
- package/server/dist/external/actions/upload-delete.d.ts.map +1 -1
- package/server/dist/external/actions/upload-delete.js +30 -20
- package/server/dist/external/actions/upload-delete.js.map +1 -1
- package/server/dist/external/actions/upload.d.ts.map +1 -1
- package/server/dist/external/actions/upload.js +5 -4
- package/server/dist/external/actions/upload.js.map +1 -1
- package/server/dist/external/create-external-routes-args.d.ts +124 -0
- package/server/dist/external/create-external-routes-args.d.ts.map +1 -0
- package/server/dist/external/create-external-routes-args.js +2 -0
- package/server/dist/external/create-external-routes-args.js.map +1 -0
- package/server/dist/external/inbox/_codex.d.ts +14 -0
- package/server/dist/external/inbox/_codex.d.ts.map +1 -0
- package/server/dist/external/inbox/_codex.js +88 -0
- package/server/dist/external/inbox/_codex.js.map +1 -0
- package/server/dist/external/inbox/_derive.d.ts.map +1 -1
- package/server/dist/external/inbox/_derive.js +11 -0
- package/server/dist/external/inbox/_derive.js.map +1 -1
- package/server/dist/external/inbox/_phase-gate.d.ts +9 -0
- package/server/dist/external/inbox/_phase-gate.d.ts.map +1 -0
- package/server/dist/external/inbox/_phase-gate.js +87 -0
- package/server/dist/external/inbox/_phase-gate.js.map +1 -0
- package/server/dist/external/inbox/_types.d.ts +30 -0
- package/server/dist/external/inbox/_types.d.ts.map +1 -1
- package/server/dist/external/inbox/_types.js +8 -5
- package/server/dist/external/inbox/_types.js.map +1 -1
- package/server/dist/external/inbox/routes.d.ts +7 -0
- package/server/dist/external/inbox/routes.d.ts.map +1 -1
- package/server/dist/external/inbox/routes.js +17 -2
- package/server/dist/external/inbox/routes.js.map +1 -1
- package/server/dist/external/launch/_helpers.d.ts +4 -0
- package/server/dist/external/launch/_helpers.d.ts.map +1 -1
- package/server/dist/external/launch/_helpers.js.map +1 -1
- package/server/dist/external/launch/action-substitution-branch.d.ts +12 -0
- package/server/dist/external/launch/action-substitution-branch.d.ts.map +1 -1
- package/server/dist/external/launch/action-substitution-branch.js +37 -3
- package/server/dist/external/launch/action-substitution-branch.js.map +1 -1
- package/server/dist/external/launch/branch-dispatch.d.ts +15 -0
- package/server/dist/external/launch/branch-dispatch.d.ts.map +1 -0
- package/server/dist/external/launch/branch-dispatch.js +73 -0
- package/server/dist/external/launch/branch-dispatch.js.map +1 -0
- package/server/dist/external/launch/campaign-step-branch.d.ts +7 -1
- package/server/dist/external/launch/campaign-step-branch.d.ts.map +1 -1
- package/server/dist/external/launch/campaign-step-branch.js +70 -2
- package/server/dist/external/launch/campaign-step-branch.js.map +1 -1
- package/server/dist/external/launch/claim-executor-permissions.d.ts +31 -0
- package/server/dist/external/launch/claim-executor-permissions.d.ts.map +1 -0
- package/server/dist/external/launch/claim-executor-permissions.js +107 -0
- package/server/dist/external/launch/claim-executor-permissions.js.map +1 -0
- package/server/dist/external/launch/claim-executor-template-arming.d.ts +42 -0
- package/server/dist/external/launch/claim-executor-template-arming.d.ts.map +1 -0
- package/server/dist/external/launch/claim-executor-template-arming.js +121 -0
- package/server/dist/external/launch/claim-executor-template-arming.js.map +1 -0
- package/server/dist/external/launch/claim-holder-gate.d.ts +9 -0
- package/server/dist/external/launch/claim-holder-gate.d.ts.map +1 -1
- package/server/dist/external/launch/claim-holder-gate.js +10 -2
- package/server/dist/external/launch/claim-holder-gate.js.map +1 -1
- package/server/dist/external/launch/claim-permission-perimeter-assert.d.ts +3 -0
- package/server/dist/external/launch/claim-permission-perimeter-assert.d.ts.map +1 -0
- package/server/dist/external/launch/claim-permission-perimeter-assert.js +24 -0
- package/server/dist/external/launch/claim-permission-perimeter-assert.js.map +1 -0
- package/server/dist/external/launch/legacy-fallback-branch.d.ts +14 -0
- package/server/dist/external/launch/legacy-fallback-branch.d.ts.map +1 -1
- package/server/dist/external/launch/legacy-fallback-branch.js +3 -1
- package/server/dist/external/launch/legacy-fallback-branch.js.map +1 -1
- package/server/dist/external/launch/master-run-branch.js +2 -2
- package/server/dist/external/launch/master-run-branch.js.map +1 -1
- package/server/dist/external/launch/mixed-intents-guard.d.ts +10 -0
- package/server/dist/external/launch/mixed-intents-guard.d.ts.map +1 -0
- package/server/dist/external/launch/mixed-intents-guard.js +49 -0
- package/server/dist/external/launch/mixed-intents-guard.js.map +1 -0
- package/server/dist/external/launch/parse-body.d.ts +29 -0
- package/server/dist/external/launch/parse-body.d.ts.map +1 -1
- package/server/dist/external/launch/parse-body.js +66 -0
- package/server/dist/external/launch/parse-body.js.map +1 -1
- package/server/dist/external/launch/routes.d.ts +3 -0
- package/server/dist/external/launch/routes.d.ts.map +1 -1
- package/server/dist/external/launch/routes.js +76 -109
- package/server/dist/external/launch/routes.js.map +1 -1
- package/server/dist/external/launch/runtime-chokepoint-codextender.d.ts +20 -0
- package/server/dist/external/launch/runtime-chokepoint-codextender.d.ts.map +1 -0
- package/server/dist/external/launch/runtime-chokepoint-codextender.js +51 -0
- package/server/dist/external/launch/runtime-chokepoint-codextender.js.map +1 -0
- package/server/dist/external/launch/runtime-chokepoint-errors.d.ts +33 -0
- package/server/dist/external/launch/runtime-chokepoint-errors.d.ts.map +1 -0
- package/server/dist/external/launch/runtime-chokepoint-errors.js +63 -0
- package/server/dist/external/launch/runtime-chokepoint-errors.js.map +1 -0
- package/server/dist/external/launch/runtime-chokepoint.d.ts +120 -0
- package/server/dist/external/launch/runtime-chokepoint.d.ts.map +1 -0
- package/server/dist/external/launch/runtime-chokepoint.js +201 -0
- package/server/dist/external/launch/runtime-chokepoint.js.map +1 -0
- package/server/dist/external/mission-context/facts.js +2 -2
- package/server/dist/external/mission-context/facts.js.map +1 -1
- package/server/dist/external/mission-context/routes.d.ts +33 -27
- package/server/dist/external/mission-context/routes.d.ts.map +1 -1
- package/server/dist/external/mission-context/routes.js +30 -27
- package/server/dist/external/mission-context/routes.js.map +1 -1
- package/server/dist/external/mission-context/test-harness.d.ts +6 -0
- package/server/dist/external/mission-context/test-harness.d.ts.map +1 -1
- package/server/dist/external/mission-context/test-harness.js +6 -1
- package/server/dist/external/mission-context/test-harness.js.map +1 -1
- package/server/dist/external/mission-context/wire.d.ts.map +1 -1
- package/server/dist/external/mission-context/wire.js +24 -2
- package/server/dist/external/mission-context/wire.js.map +1 -1
- package/server/dist/external/org/audit-log.d.ts +19 -0
- package/server/dist/external/org/audit-log.d.ts.map +1 -1
- package/server/dist/external/org/audit-log.js +33 -18
- package/server/dist/external/org/audit-log.js.map +1 -1
- package/server/dist/external/org/beat-effect-audit-read.d.ts +15 -0
- package/server/dist/external/org/beat-effect-audit-read.d.ts.map +1 -0
- package/server/dist/external/org/beat-effect-audit-read.js +73 -0
- package/server/dist/external/org/beat-effect-audit-read.js.map +1 -0
- package/server/dist/external/org/beat-register-health.d.ts +57 -0
- package/server/dist/external/org/beat-register-health.d.ts.map +1 -0
- package/server/dist/external/org/beat-register-health.js +125 -0
- package/server/dist/external/org/beat-register-health.js.map +1 -0
- package/server/dist/external/org/beat-register-release-core.d.ts.map +1 -1
- package/server/dist/external/org/beat-register-release-core.js +4 -1
- package/server/dist/external/org/beat-register-release-core.js.map +1 -1
- package/server/dist/external/org/beat-register-release-request.d.ts +20 -0
- package/server/dist/external/org/beat-register-release-request.d.ts.map +1 -0
- package/server/dist/external/org/beat-register-release-request.js +92 -0
- package/server/dist/external/org/beat-register-release-request.js.map +1 -0
- package/server/dist/external/org/beat-register-release.d.ts +3 -1
- package/server/dist/external/org/beat-register-release.d.ts.map +1 -1
- package/server/dist/external/org/beat-register-release.js +15 -57
- package/server/dist/external/org/beat-register-release.js.map +1 -1
- package/server/dist/external/org/beat-register.d.ts +18 -20
- package/server/dist/external/org/beat-register.d.ts.map +1 -1
- package/server/dist/external/org/beat-register.js +30 -56
- package/server/dist/external/org/beat-register.js.map +1 -1
- package/server/dist/external/org/beat-steps-read.d.ts +17 -0
- package/server/dist/external/org/beat-steps-read.d.ts.map +1 -0
- package/server/dist/external/org/beat-steps-read.js +89 -0
- package/server/dist/external/org/beat-steps-read.js.map +1 -0
- package/server/dist/external/org/charter-authority-read.d.ts +39 -0
- package/server/dist/external/org/charter-authority-read.d.ts.map +1 -0
- package/server/dist/external/org/charter-authority-read.js +142 -0
- package/server/dist/external/org/charter-authority-read.js.map +1 -0
- package/server/dist/external/org/commit-validate.d.ts +18 -0
- package/server/dist/external/org/commit-validate.d.ts.map +1 -0
- package/server/dist/external/org/commit-validate.js +59 -0
- package/server/dist/external/org/commit-validate.js.map +1 -0
- package/server/dist/external/org/commit-writes.d.ts +68 -0
- package/server/dist/external/org/commit-writes.d.ts.map +1 -0
- package/server/dist/external/org/commit-writes.js +110 -0
- package/server/dist/external/org/commit-writes.js.map +1 -0
- package/server/dist/external/org/commit.d.ts +73 -0
- package/server/dist/external/org/commit.d.ts.map +1 -0
- package/server/dist/external/org/commit.js +181 -0
- package/server/dist/external/org/commit.js.map +1 -0
- package/server/dist/external/org/commit.test-fixtures.d.ts +38 -0
- package/server/dist/external/org/commit.test-fixtures.d.ts.map +1 -0
- package/server/dist/external/org/commit.test-fixtures.js +67 -0
- package/server/dist/external/org/commit.test-fixtures.js.map +1 -0
- package/server/dist/external/org/countersign-core.d.ts +19 -0
- package/server/dist/external/org/countersign-core.d.ts.map +1 -0
- package/server/dist/external/org/countersign-core.js +122 -0
- package/server/dist/external/org/countersign-core.js.map +1 -0
- package/server/dist/external/org/countersign-request.d.ts +14 -0
- package/server/dist/external/org/countersign-request.d.ts.map +1 -0
- package/server/dist/external/org/countersign-request.js +78 -0
- package/server/dist/external/org/countersign-request.js.map +1 -0
- package/server/dist/external/org/countersign.d.ts +6 -5
- package/server/dist/external/org/countersign.d.ts.map +1 -1
- package/server/dist/external/org/countersign.js +12 -141
- package/server/dist/external/org/countersign.js.map +1 -1
- package/server/dist/external/org/daemon-config-read.d.ts +31 -0
- package/server/dist/external/org/daemon-config-read.d.ts.map +1 -0
- package/server/dist/external/org/daemon-config-read.js +50 -0
- package/server/dist/external/org/daemon-config-read.js.map +1 -0
- package/server/dist/external/org/decisions-lock.d.ts +6 -4
- package/server/dist/external/org/decisions-lock.d.ts.map +1 -1
- package/server/dist/external/org/decisions-lock.js +9 -8
- package/server/dist/external/org/decisions-lock.js.map +1 -1
- package/server/dist/external/org/domains.d.ts +35 -0
- package/server/dist/external/org/domains.d.ts.map +1 -0
- package/server/dist/external/org/domains.js +29 -0
- package/server/dist/external/org/domains.js.map +1 -0
- package/server/dist/external/org/existing-charters-read.d.ts +5 -0
- package/server/dist/external/org/existing-charters-read.d.ts.map +1 -0
- package/server/dist/external/org/existing-charters-read.js +31 -0
- package/server/dist/external/org/existing-charters-read.js.map +1 -0
- package/server/dist/external/org/leadwright-proposal-merge.d.ts +54 -0
- package/server/dist/external/org/leadwright-proposal-merge.d.ts.map +1 -0
- package/server/dist/external/org/leadwright-proposal-merge.js +47 -0
- package/server/dist/external/org/leadwright-proposal-merge.js.map +1 -0
- package/server/dist/external/org/mount.d.ts +10 -2
- package/server/dist/external/org/mount.d.ts.map +1 -1
- package/server/dist/external/org/mount.js +6 -1
- package/server/dist/external/org/mount.js.map +1 -1
- package/server/dist/external/org/org-chart-full-read.d.ts +19 -0
- package/server/dist/external/org/org-chart-full-read.d.ts.map +1 -0
- package/server/dist/external/org/org-chart-full-read.js +58 -0
- package/server/dist/external/org/org-chart-full-read.js.map +1 -0
- package/server/dist/external/org/org-file-lock.d.ts +41 -0
- package/server/dist/external/org/org-file-lock.d.ts.map +1 -0
- package/server/dist/external/org/org-file-lock.js +90 -0
- package/server/dist/external/org/org-file-lock.js.map +1 -0
- package/server/dist/external/org/routes.d.ts +10 -0
- package/server/dist/external/org/routes.d.ts.map +1 -1
- package/server/dist/external/org/routes.js +22 -1
- package/server/dist/external/org/routes.js.map +1 -1
- package/server/dist/external/org/verdict.d.ts +57 -0
- package/server/dist/external/org/verdict.d.ts.map +1 -0
- package/server/dist/external/org/verdict.js +74 -0
- package/server/dist/external/org/verdict.js.map +1 -0
- package/server/dist/external/preview/routes.d.ts +3 -1
- package/server/dist/external/preview/routes.d.ts.map +1 -1
- package/server/dist/external/preview/routes.js +8 -1
- package/server/dist/external/preview/routes.js.map +1 -1
- package/server/dist/external/routes.d.ts +3 -101
- package/server/dist/external/routes.d.ts.map +1 -1
- package/server/dist/external/routes.js +21 -6
- package/server/dist/external/routes.js.map +1 -1
- package/server/dist/external/session-file/probe-route.d.ts +4 -0
- package/server/dist/external/session-file/probe-route.d.ts.map +1 -0
- package/server/dist/external/session-file/probe-route.js +66 -0
- package/server/dist/external/session-file/probe-route.js.map +1 -0
- package/server/dist/external/session-file/routes.d.ts +12 -0
- package/server/dist/external/session-file/routes.d.ts.map +1 -0
- package/server/dist/external/session-file/routes.js +90 -0
- package/server/dist/external/session-file/routes.js.map +1 -0
- package/server/dist/external/session-file/session-file.fixture.d.ts +45 -0
- package/server/dist/external/session-file/session-file.fixture.d.ts.map +1 -0
- package/server/dist/external/session-file/session-file.fixture.js +41 -0
- package/server/dist/external/session-file/session-file.fixture.js.map +1 -0
- package/server/dist/external/session-info/routes.d.ts +15 -0
- package/server/dist/external/session-info/routes.d.ts.map +1 -0
- package/server/dist/external/session-info/routes.js +57 -0
- package/server/dist/external/session-info/routes.js.map +1 -0
- package/server/dist/external/tasks/_phase-helpers.js +2 -2
- package/server/dist/external/tasks/_phase-helpers.js.map +1 -1
- package/server/dist/external/tasks/create.d.ts.map +1 -1
- package/server/dist/external/tasks/create.js +10 -2
- package/server/dist/external/tasks/create.js.map +1 -1
- package/server/dist/external/tasks/fork.d.ts +29 -0
- package/server/dist/external/tasks/fork.d.ts.map +1 -0
- package/server/dist/external/tasks/fork.js +166 -0
- package/server/dist/external/tasks/fork.js.map +1 -0
- package/server/dist/external/tasks/lifecycle.d.ts.map +1 -1
- package/server/dist/external/tasks/lifecycle.js +10 -57
- package/server/dist/external/tasks/lifecycle.js.map +1 -1
- package/server/dist/external/tasks/patch.d.ts.map +1 -1
- package/server/dist/external/tasks/patch.js +17 -0
- package/server/dist/external/tasks/patch.js.map +1 -1
- package/server/dist/external/tasks/routes.d.ts +2 -0
- package/server/dist/external/tasks/routes.d.ts.map +1 -1
- package/server/dist/external/tasks/routes.js +7 -0
- package/server/dist/external/tasks/routes.js.map +1 -1
- package/server/dist/external/transcript/routes.d.ts.map +1 -1
- package/server/dist/external/transcript/routes.js +25 -3
- package/server/dist/external/transcript/routes.js.map +1 -1
- package/server/dist/external-routes-wiring.d.ts +28 -0
- package/server/dist/external-routes-wiring.d.ts.map +1 -0
- package/server/dist/external-routes-wiring.js +70 -0
- package/server/dist/external-routes-wiring.js.map +1 -0
- package/server/dist/index.d.ts.map +1 -1
- package/server/dist/index.js +117 -52
- package/server/dist/index.js.map +1 -1
- package/server/dist/lib/resolveHonoHost.d.ts.map +1 -1
- package/server/dist/lib/resolveHonoHost.js +16 -1
- package/server/dist/lib/resolveHonoHost.js.map +1 -1
- package/server/dist/routes/_triage-api-harness.d.ts +1 -1
- package/server/dist/routes/_triage-api-harness.d.ts.map +1 -1
- package/server/dist/routes/_triage-api-harness.js.map +1 -1
- package/server/dist/routes/adopt-scan.d.ts +4 -0
- package/server/dist/routes/adopt-scan.d.ts.map +1 -0
- package/server/dist/routes/adopt-scan.js +27 -0
- package/server/dist/routes/adopt-scan.js.map +1 -0
- package/server/dist/routes/campaigns-readiness.d.ts +10 -0
- package/server/dist/routes/campaigns-readiness.d.ts.map +1 -0
- package/server/dist/routes/campaigns-readiness.js +58 -0
- package/server/dist/routes/campaigns-readiness.js.map +1 -0
- package/server/dist/routes/campaigns.d.ts.map +1 -1
- package/server/dist/routes/campaigns.js +3 -0
- package/server/dist/routes/campaigns.js.map +1 -1
- package/server/dist/routes/codex-models.d.ts +15 -0
- package/server/dist/routes/codex-models.d.ts.map +1 -0
- package/server/dist/routes/codex-models.js +77 -0
- package/server/dist/routes/codex-models.js.map +1 -0
- package/server/dist/routes/codextender-models.d.ts +16 -0
- package/server/dist/routes/codextender-models.d.ts.map +1 -0
- package/server/dist/routes/codextender-models.js +81 -0
- package/server/dist/routes/codextender-models.js.map +1 -0
- package/server/dist/routes/diagnostics.d.ts +15 -0
- package/server/dist/routes/diagnostics.d.ts.map +1 -1
- package/server/dist/routes/diagnostics.js +1 -0
- package/server/dist/routes/diagnostics.js.map +1 -1
- package/server/dist/routes/org-chart-lead-guard.d.ts +10 -0
- package/server/dist/routes/org-chart-lead-guard.d.ts.map +1 -0
- package/server/dist/routes/org-chart-lead-guard.js +49 -0
- package/server/dist/routes/org-chart-lead-guard.js.map +1 -0
- package/server/dist/routes/org-inventory-composite.d.ts +20 -0
- package/server/dist/routes/org-inventory-composite.d.ts.map +1 -0
- package/server/dist/routes/org-inventory-composite.js +100 -0
- package/server/dist/routes/org-inventory-composite.js.map +1 -0
- package/server/dist/routes/org-lead-setup-wizard.d.ts +10 -0
- package/server/dist/routes/org-lead-setup-wizard.d.ts.map +1 -0
- package/server/dist/routes/org-lead-setup-wizard.js +51 -0
- package/server/dist/routes/org-lead-setup-wizard.js.map +1 -0
- package/server/dist/routes/org-leads-composite.d.ts.map +1 -1
- package/server/dist/routes/org-leads-composite.js +35 -9
- package/server/dist/routes/org-leads-composite.js.map +1 -1
- package/server/dist/routes/org-writes.d.ts +14 -0
- package/server/dist/routes/org-writes.d.ts.map +1 -0
- package/server/dist/routes/org-writes.js +61 -0
- package/server/dist/routes/org-writes.js.map +1 -0
- package/server/dist/routes/org.d.ts +11 -2
- package/server/dist/routes/org.d.ts.map +1 -1
- package/server/dist/routes/org.js +50 -47
- package/server/dist/routes/org.js.map +1 -1
- package/server/dist/routes/profiles.d.ts +7 -0
- package/server/dist/routes/profiles.d.ts.map +1 -1
- package/server/dist/routes/profiles.js +13 -0
- package/server/dist/routes/profiles.js.map +1 -1
- package/server/dist/routes/projects.d.ts.map +1 -1
- package/server/dist/routes/projects.js +58 -16
- package/server/dist/routes/projects.js.map +1 -1
- package/server/dist/routes/settings.d.ts.map +1 -1
- package/server/dist/routes/settings.js +23 -2
- package/server/dist/routes/settings.js.map +1 -1
- package/server/dist/routes/stack-profiles.d.ts +10 -0
- package/server/dist/routes/stack-profiles.d.ts.map +1 -0
- package/server/dist/routes/stack-profiles.js +65 -0
- package/server/dist/routes/stack-profiles.js.map +1 -0
- package/server/dist/routes/triage.d.ts +17 -0
- package/server/dist/routes/triage.d.ts.map +1 -1
- package/server/dist/routes/triage.js +29 -0
- package/server/dist/routes/triage.js.map +1 -1
- package/server/dist/terminal/data-target.d.ts +17 -0
- package/server/dist/terminal/data-target.d.ts.map +1 -0
- package/server/dist/terminal/data-target.js +56 -0
- package/server/dist/terminal/data-target.js.map +1 -0
- package/server/dist/terminal/image-paste.d.ts +2 -0
- package/server/dist/terminal/image-paste.d.ts.map +1 -1
- package/server/dist/terminal/image-paste.js +11 -12
- package/server/dist/terminal/image-paste.js.map +1 -1
- package/server/dist/terminal/pty-manager.d.ts +14 -0
- package/server/dist/terminal/pty-manager.d.ts.map +1 -1
- package/server/dist/terminal/pty-manager.js +11 -0
- package/server/dist/terminal/pty-manager.js.map +1 -1
- package/server/dist/terminal/routes.d.ts +5 -0
- package/server/dist/terminal/routes.d.ts.map +1 -1
- package/server/dist/terminal/routes.js +20 -13
- package/server/dist/terminal/routes.js.map +1 -1
- package/server/dist/terminal/ws-upgrade-handler.d.ts.map +1 -1
- package/server/dist/terminal/ws-upgrade-handler.fixtures.d.ts.map +1 -1
- package/server/dist/terminal/ws-upgrade-handler.fixtures.js +1 -0
- package/server/dist/terminal/ws-upgrade-handler.fixtures.js.map +1 -1
- package/server/dist/terminal/ws-upgrade-handler.js +14 -5
- package/server/dist/terminal/ws-upgrade-handler.js.map +1 -1
- package/server/dist/test/event-test-counts-fixtures.d.ts +40 -0
- package/server/dist/test/event-test-counts-fixtures.d.ts.map +1 -0
- package/server/dist/test/event-test-counts-fixtures.js +56 -0
- package/server/dist/test/event-test-counts-fixtures.js.map +1 -0
- package/server/dist/types/leadwright-beat-step.d.ts +19 -0
- package/server/dist/types/leadwright-beat-step.d.ts.map +1 -0
- package/server/dist/types/leadwright-beat-step.js +56 -0
- package/server/dist/types/leadwright-beat-step.js.map +1 -0
- package/server/dist/types/leadwright-preflight.d.ts +90 -0
- package/server/dist/types/leadwright-preflight.d.ts.map +1 -0
- package/server/dist/types/leadwright-preflight.js +65 -0
- package/server/dist/types/leadwright-preflight.js.map +1 -0
- package/server/dist/types/leadwright-schema-drift.d.ts +28 -0
- package/server/dist/types/leadwright-schema-drift.d.ts.map +1 -0
- package/server/dist/types/leadwright-schema-drift.js +89 -0
- package/server/dist/types/leadwright-schema-drift.js.map +1 -0
- package/server/dist/types/org-inventory.d.ts +53 -0
- package/server/dist/types/org-inventory.d.ts.map +1 -0
- package/server/dist/types/org-inventory.js +11 -0
- package/server/dist/types/org-inventory.js.map +1 -0
- package/server/dist/types/org.d.ts +57 -6
- package/server/dist/types/org.d.ts.map +1 -1
- package/server/dist/types/project.d.ts +9 -0
- package/server/dist/types/project.d.ts.map +1 -1
- package/server/dist/types/run-config-retry.d.ts +29 -0
- package/server/dist/types/run-config-retry.d.ts.map +1 -0
- package/server/dist/types/run-config-retry.js +47 -0
- package/server/dist/types/run-config-retry.js.map +1 -0
- package/server/dist/types/run-config-v2.d.ts +29 -41
- package/server/dist/types/run-config-v2.d.ts.map +1 -1
- package/server/dist/types/run-config-v2.js +16 -50
- package/server/dist/types/run-config-v2.js.map +1 -1
- package/server/dist/types/settings.d.ts +33 -0
- package/server/dist/types/settings.d.ts.map +1 -1
- package/server/dist/types/stack-profile-contract.d.ts +33 -0
- package/server/dist/types/stack-profile-contract.d.ts.map +1 -0
- package/server/dist/types/stack-profile-contract.js +11 -0
- package/server/dist/types/stack-profile-contract.js.map +1 -0
- package/server/dist/vendor/leadwright/beat-step.schema.json +83 -0
- package/server/dist/vendor/leadwright/claim-record-lock-contract.json +15 -0
- package/server/dist/vendor/leadwright/org-chart.schema.json +195 -0
- package/server/dist/vendor/leadwright/preflight-input.schema.json +318 -0
- package/server/dist/vendor/leadwright/preflight-result.schema.json +56 -0
- package/server/package.json +3 -3
- package/client/dist/assets/arc-DQmjbsFU.js +0 -1
- package/client/dist/assets/architectureDiagram-ZJ3FMSHR-DAvCsPCW.js +0 -36
- package/client/dist/assets/blockDiagram-677ZJIJ3-DC-dlyYI.js +0 -132
- package/client/dist/assets/c4Diagram-LMCZKHZV-DSlmXfhE.js +0 -10
- package/client/dist/assets/channel-BfmIcrp7.js +0 -1
- package/client/dist/assets/chunk-RYQCIY6F-BKhdp_8v.js +0 -1
- package/client/dist/assets/chunk-VR4S4FIN-OgFi2_iB.js +0 -1
- package/client/dist/assets/classDiagram-OUVF2IWQ-HfUQZ6Uc.js +0 -1
- package/client/dist/assets/classDiagram-v2-EOCWNBFH-HfUQZ6Uc.js +0 -1
- package/client/dist/assets/dagre-VKFMJZFB-D7djx1_Y.js +0 -4
- package/client/dist/assets/diagram-OA4YK3LP-CwQPbOn0.js +0 -30
- package/client/dist/assets/diagram-WEI45ONY-abtYnYqH.js +0 -41
- package/client/dist/assets/erDiagram-Q63AITRT-vtbCprgH.js +0 -85
- package/client/dist/assets/flowDiagram-23GEKE2U-CVCgcyDF.js +0 -156
- package/client/dist/assets/graph-C9eacEi8.js +0 -1
- package/client/dist/assets/index-CKU9dY18.css +0 -1
- package/client/dist/assets/index-DOMl6atu.js +0 -847
- package/client/dist/assets/infoDiagram-FWYZ7A6U-Dr4mN24J.js +0 -2
- package/client/dist/assets/katex-DkKDou_j.js +0 -257
- package/client/dist/assets/layout-DEXfKzaS.js +0 -1
- package/client/dist/assets/map-Czzmt4hB.js +0 -1
- package/client/dist/assets/mermaid.core-BcLNGbxW.js +0 -314
- package/client/dist/assets/stateDiagram-2N3HPSRC-CFwCOonY.js +0 -1
- package/client/dist/assets/stateDiagram-v2-6OUMAXLB-srkiu3Ib.js +0 -1
- package/client/dist/assets/swimlanes-5IMT3BWC-DFa2tzxu.js +0 -2
- package/client/dist/assets/swimlanesDiagram-G3AALYLV-Dq-0K9Zm.js +0 -8
- package/client/dist/assets/xychartDiagram-FW5EYKEG-D9PFTCfm.js +0 -7
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* codex-terminal-signal-detect.ts — Codex Light §5.3 "Guided-mode approvals
|
|
3
|
+
* and structured errors": pure detectors over the visible-viewport text of
|
|
4
|
+
* a Codex-runtime embedded terminal, mirroring `terminal-prompt-detect.ts`'s
|
|
5
|
+
* shape (bottom-anchored, bounded, best-effort) but keyed to Codex's own
|
|
6
|
+
* strings instead of Claude's.
|
|
7
|
+
*
|
|
8
|
+
* Evidence: `codex-task-watcher.ts`'s module header previously scoped this
|
|
9
|
+
* detector OUT as "no verified plain-pty-TUI text pattern to build a
|
|
10
|
+
* detector from yet" — the spec's own §3 confirmation test only exercised
|
|
11
|
+
* `request_user_input` over the APP-SERVER protocol (Stage 2, not v1). That
|
|
12
|
+
* gap is now closed for the plain-pty case: the exact strings below were
|
|
13
|
+
* extracted directly from the real, installed `codex-cli 0.147.0` Windows
|
|
14
|
+
* binary (`@openai/codex-win32-x64`'s `codex.exe`, via a printable-string
|
|
15
|
+
* scan), the same evidence tier `codex-thread-discovery.ts` used for the
|
|
16
|
+
* rollout-file naming convention. One honest gap remains, smaller than that
|
|
17
|
+
* one: these strings are confirmed to exist verbatim in the binary, not
|
|
18
|
+
* (yet) observed in an actual rendered pty capture of a live approval
|
|
19
|
+
* dialog — ratatui box-drawing/wrapping around them is unverified. The
|
|
20
|
+
* detectors are therefore deliberately conservative (a short, literal
|
|
21
|
+
* heading match within a bottom-anchored recency window, no footer-shape
|
|
22
|
+
* assumptions) so a wrapped border cannot produce a false NEGATIVE beyond
|
|
23
|
+
* "missed this tick, the next poll on unchanged text still forms a false
|
|
24
|
+
* positive risk that a real capture might have avoided" — and the anchor
|
|
25
|
+
* strings are distinctive enough (only Codex's own approval elicitation or
|
|
26
|
+
* error footer would ever emit them) that a false POSITIVE is effectively
|
|
27
|
+
* impossible.
|
|
28
|
+
*
|
|
29
|
+
* Independent of the silence-timer/oracle loop (§5.3's own wording) — wired
|
|
30
|
+
* as an Inbox post-pass (`external/inbox/_codex.ts`), not into
|
|
31
|
+
* `CodexTaskWatcher.tick()`, exactly like `terminal_prompt`'s own
|
|
32
|
+
* `appendTerminalPrompts` post-pass.
|
|
33
|
+
*/
|
|
34
|
+
/** Recency window — how many trailing lines of visible text count as "the
|
|
35
|
+
* current bottom-most content" for either signal. A live dialog or error
|
|
36
|
+
* footer is always the last thing Codex printed; older scrollback above
|
|
37
|
+
* this window is deliberately never scanned (an old, since-scrolled-past
|
|
38
|
+
* approval/error must not resurrect itself as "still pending"). */
|
|
39
|
+
const RECENCY_WINDOW_LINES = 40;
|
|
40
|
+
/** Codex's two known approval-elicitation headings (command exec, patch
|
|
41
|
+
* apply) — verified verbatim in the real codex.exe binary. */
|
|
42
|
+
const APPROVAL_HEADING = /Allow Codex to (run `|apply proposed code changes\?)/i;
|
|
43
|
+
/** Codex's generic turn-ending error footer — shown for a turn abort,
|
|
44
|
+
* Ctrl-C interrupt, high load, rate limit, etc.; the one constant across
|
|
45
|
+
* all of them. Verified verbatim in the real codex.exe binary. */
|
|
46
|
+
const ERROR_FOOTER = /Something went wrong\??\s*Hit\s*`?\/feedback`?\s*to report the issue/i;
|
|
47
|
+
const MAX_BLOCK_LINES = 24;
|
|
48
|
+
/** Mirrors terminal-prompt-detect.ts's MAX_QUESTION_TEXT_LEN cap — keeps a
|
|
49
|
+
* pathological viewport from leaking unbounded text into the Inbox. */
|
|
50
|
+
const MAX_SIGNAL_TEXT_LEN = 4000;
|
|
51
|
+
function isBlank(line) {
|
|
52
|
+
return line.trim().length === 0;
|
|
53
|
+
}
|
|
54
|
+
function recencyLines(visibleText) {
|
|
55
|
+
const lines = visibleText.split("\n");
|
|
56
|
+
const startIndex = Math.max(0, lines.length - RECENCY_WINDOW_LINES);
|
|
57
|
+
return { lines: lines.slice(startIndex), startIndex };
|
|
58
|
+
}
|
|
59
|
+
/** Collect a bounded block around the matched heading line — from the
|
|
60
|
+
* heading down to the next blank-line gap or the hard cap, so the block
|
|
61
|
+
* captures the command/heading plus its immediately-following option
|
|
62
|
+
* list without pulling in unrelated scrollback. */
|
|
63
|
+
function collectBlock(lines, headingIndex) {
|
|
64
|
+
const block = [];
|
|
65
|
+
let blankRun = 0;
|
|
66
|
+
for (let i = headingIndex; i < lines.length && block.length < MAX_BLOCK_LINES; i++) {
|
|
67
|
+
const line = lines[i];
|
|
68
|
+
if (isBlank(line)) {
|
|
69
|
+
blankRun++;
|
|
70
|
+
if (blankRun >= 2)
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
blankRun = 0;
|
|
75
|
+
}
|
|
76
|
+
block.push(line);
|
|
77
|
+
}
|
|
78
|
+
while (block.length > 0 && isBlank(block[block.length - 1]))
|
|
79
|
+
block.pop();
|
|
80
|
+
const text = block.join("\n");
|
|
81
|
+
return text.length > MAX_SIGNAL_TEXT_LEN ? text.slice(0, MAX_SIGNAL_TEXT_LEN) : text;
|
|
82
|
+
}
|
|
83
|
+
/** A pending Codex approval request (command exec or patch apply) in the
|
|
84
|
+
* trailing text of a live embedded terminal, or `null`. */
|
|
85
|
+
export function extractCodexApprovalPrompt(visibleText) {
|
|
86
|
+
if (!visibleText)
|
|
87
|
+
return null;
|
|
88
|
+
const { lines } = recencyLines(visibleText);
|
|
89
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
90
|
+
if (APPROVAL_HEADING.test(lines[i])) {
|
|
91
|
+
return collectBlock(lines, i);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
/** A Codex-reported structured error/turn-abort in the trailing text of a
|
|
97
|
+
* live embedded terminal, or `null`. */
|
|
98
|
+
export function extractCodexErrorText(visibleText) {
|
|
99
|
+
if (!visibleText)
|
|
100
|
+
return null;
|
|
101
|
+
const { lines } = recencyLines(visibleText);
|
|
102
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
103
|
+
if (ERROR_FOOTER.test(lines[i])) {
|
|
104
|
+
// The error line itself is usually self-contained ("<cause>.
|
|
105
|
+
// Something went wrong? Hit `/feedback` ...") — a few lines of
|
|
106
|
+
// leading context in case the cause wrapped onto the prior line.
|
|
107
|
+
const from = Math.max(0, i - 2);
|
|
108
|
+
return collectBlock(lines, from);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=codex-terminal-signal-detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-terminal-signal-detect.js","sourceRoot":"","sources":["../../src/core/codex-terminal-signal-detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface CodexThreadDiscoveryDeps {
|
|
2
|
+
readdir: (dir: string) => Promise<string[]>;
|
|
3
|
+
/** Reads just the head of a file — rollout files can be large, but `session_meta` is always the very first line. */
|
|
4
|
+
readHead: (filePath: string, maxBytes: number) => Promise<string>;
|
|
5
|
+
homeDir: () => string;
|
|
6
|
+
}
|
|
7
|
+
export declare function codexSessionsRoot(deps: Pick<CodexThreadDiscoveryDeps, "homeDir">): string;
|
|
8
|
+
export interface DiscoverCodexThreadIdArgs {
|
|
9
|
+
cwd: string;
|
|
10
|
+
/** ISO-8601 — only rollout files at/after this instant are considered. */
|
|
11
|
+
sinceIso: string;
|
|
12
|
+
/** Skip these thread ids — already claimed by another task this process knows about. */
|
|
13
|
+
excludeThreadIds?: ReadonlySet<string>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Best-effort, filename-first discovery of the thread id a fresh Codex
|
|
17
|
+
* launch produced. Returns `null` (not an error) when nothing matches yet.
|
|
18
|
+
*/
|
|
19
|
+
export declare function discoverCodexThreadId(args: DiscoverCodexThreadIdArgs, deps: CodexThreadDiscoveryDeps): Promise<string | null>;
|
|
20
|
+
export declare const defaultCodexThreadDiscoveryDeps: CodexThreadDiscoveryDeps;
|
|
21
|
+
//# sourceMappingURL=codex-thread-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-thread-discovery.d.ts","sourceRoot":"","sources":["../../src/core/codex-thread-discovery.ts"],"names":[],"mappings":"AAkDA,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,oHAAoH;IACpH,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,OAAO,EAAE,MAAM,MAAM,CAAC;CACvB;AAkBD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,wBAAwB,EAAE,SAAS,CAAC,GAAG,MAAM,CAEzF;AA2BD,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACxC;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,yBAAyB,EAC/B,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqDxB;AAED,eAAO,MAAM,+BAA+B,EAAE,wBAa7C,CAAC"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* core/codex-thread-discovery.ts — Codex Light §4's missing piece: how a
|
|
3
|
+
* fresh Codex launch's `threadId` actually gets captured. v1 launches Codex
|
|
4
|
+
* as a plain interactive TUI in a pty (§2.2) — there is no app-server call
|
|
5
|
+
* (deferred to Stage 2) and no `--session-id`-equivalent flag Codex accepts
|
|
6
|
+
* at the top level (`codex --help`, verified live against an installed
|
|
7
|
+
* Codex CLI: no such flag exists), so the id must be DISCOVERED after the
|
|
8
|
+
* fact, filename-first — the exact pattern CLAUDE.md rule 3 already uses
|
|
9
|
+
* for Claude's own JSONL discovery.
|
|
10
|
+
*
|
|
11
|
+
* Verified live (2026-09-16, codex-cli 0.147.0) against a real installed
|
|
12
|
+
* Codex CLI: every session — interactive or subagent — writes a rollout
|
|
13
|
+
* file to `~/.codex/sessions/<local-YYYY>/<local-MM>/<local-DD>/rollout-
|
|
14
|
+
* <local-ISO-with-dashes-for-colons>-<thread-id>.jsonl`, whose FIRST line
|
|
15
|
+
* is always `{"type":"session_meta","payload":{"id":"<thread-id>","cwd":
|
|
16
|
+
* "<abs-path>",...}}` — the thread id is in the filename AND the first
|
|
17
|
+
* line's payload, mirroring the filename-first + first-line-sanity-check
|
|
18
|
+
* shape Claude's own discovery already uses. `cwd` is the launch working
|
|
19
|
+
* directory verbatim (OS-native separators), letting us match a rollout
|
|
20
|
+
* file to the task that spawned it without Codex ever needing to accept a
|
|
21
|
+
* caller-supplied id.
|
|
22
|
+
*
|
|
23
|
+
* Consumed by `CodexTaskWatcher` (`codex-task-watcher.ts`): on every tick,
|
|
24
|
+
* a live Codex task with no `threadId` yet gets one discovery attempt;
|
|
25
|
+
* `null` is not an error (the rollout file may not have flushed to disk
|
|
26
|
+
* yet, or Codex may still be starting up) — the caller just retries next
|
|
27
|
+
* tick. Once found, `threadId` is patched onto the task record and the
|
|
28
|
+
* §4 resume branch (`runtime-chokepoint.ts`'s `resume = Boolean(task.
|
|
29
|
+
* threadId)`) starts working on the task's next launch.
|
|
30
|
+
*
|
|
31
|
+
* Known, accepted limitation (doubt-review, disposition: documented, not
|
|
32
|
+
* fixed): matching is purely (cwd, launch-time window) — there is no
|
|
33
|
+
* possession/identity proof tying a candidate rollout file to THIS
|
|
34
|
+
* webui-spawned pty specifically. An operator manually running `codex` in
|
|
35
|
+
* the same project directory, in another terminal, within the same
|
|
36
|
+
* discovery window would produce an indistinguishable rollout file; if it
|
|
37
|
+
* happens to be the earliest unclaimed match, it gets bound to the wrong
|
|
38
|
+
* task (and, once `threadId` is set, discovery never re-runs for that
|
|
39
|
+
* task, so the mistake is not self-correcting). Accepted because it needs
|
|
40
|
+
* an external actor deliberately racing the exact window, has no
|
|
41
|
+
* destructive blast radius (a wrong `threadId` just makes `codex resume`
|
|
42
|
+
* on the Resume button open the wrong-but-still-real thread, not corrupt
|
|
43
|
+
* anything), and there is no stronger signal Codex's CLI exposes to
|
|
44
|
+
* disambiguate against in v1.
|
|
45
|
+
*/
|
|
46
|
+
import fsPromises from "node:fs/promises";
|
|
47
|
+
import os from "node:os";
|
|
48
|
+
import path from "node:path";
|
|
49
|
+
const ROLLOUT_RE = /^rollout-(\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2})-([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})\.jsonl$/;
|
|
50
|
+
/**
|
|
51
|
+
* Disposition (doubt-review, low-severity, accepted not fixed): if a
|
|
52
|
+
* rollout file's first `session_meta` JSON line ever exceeds this many
|
|
53
|
+
* bytes, `JSON.parse` on the truncated head throws, the candidate is
|
|
54
|
+
* skipped, and — with no larger-buffer retry — that task's discovery
|
|
55
|
+
* fails identically on every later tick (permanent, not degrading: the
|
|
56
|
+
* `resume` branch never fires and every "Resume" click silently
|
|
57
|
+
* relaunches fresh). Accepted because the verified real `session_meta`
|
|
58
|
+
* line (module header) is compact, and 4KB is a generous margin over it;
|
|
59
|
+
* revisit with a retry-on-parse-failure if a future Codex CLI version
|
|
60
|
+
* ever grows this payload.
|
|
61
|
+
*/
|
|
62
|
+
const HEAD_BYTES = 4096;
|
|
63
|
+
export function codexSessionsRoot(deps) {
|
|
64
|
+
return path.join(deps.homeDir(), ".codex", "sessions");
|
|
65
|
+
}
|
|
66
|
+
function normalizeCwd(p) {
|
|
67
|
+
return p.replace(/\\/g, "/").replace(/\/+$/, "").toLowerCase();
|
|
68
|
+
}
|
|
69
|
+
/** The launch day plus a one-day hedge either side, against a local-midnight folder-boundary race. */
|
|
70
|
+
function dayFolders(since) {
|
|
71
|
+
const days = [-1, 0, 1].map((offset) => {
|
|
72
|
+
const d = new Date(since.getTime());
|
|
73
|
+
d.setDate(d.getDate() + offset);
|
|
74
|
+
const y = String(d.getFullYear());
|
|
75
|
+
const m = String(d.getMonth() + 1).padStart(2, "0");
|
|
76
|
+
const day = String(d.getDate()).padStart(2, "0");
|
|
77
|
+
return path.join(y, m, day);
|
|
78
|
+
});
|
|
79
|
+
return [...new Set(days)];
|
|
80
|
+
}
|
|
81
|
+
function parseFilenameTimestamp(stamp) {
|
|
82
|
+
// "2026-09-16T07-32-17" -> "2026-09-16T07:32:17" (local — no zone suffix,
|
|
83
|
+
// matching how `new Date()` already parses a zone-less ISO string: local).
|
|
84
|
+
const iso = stamp.replace(/T(\d{2})-(\d{2})-(\d{2})$/, "T$1:$2:$3");
|
|
85
|
+
const t = new Date(iso).getTime();
|
|
86
|
+
return Number.isNaN(t) ? 0 : t;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Best-effort, filename-first discovery of the thread id a fresh Codex
|
|
90
|
+
* launch produced. Returns `null` (not an error) when nothing matches yet.
|
|
91
|
+
*/
|
|
92
|
+
export async function discoverCodexThreadId(args, deps) {
|
|
93
|
+
const since = new Date(args.sinceIso);
|
|
94
|
+
if (Number.isNaN(since.getTime()))
|
|
95
|
+
return null;
|
|
96
|
+
const sinceMs = since.getTime() - 5_000; // small clock-skew grace
|
|
97
|
+
const wantCwd = normalizeCwd(args.cwd);
|
|
98
|
+
const root = codexSessionsRoot(deps);
|
|
99
|
+
const candidates = [];
|
|
100
|
+
for (const folder of dayFolders(since)) {
|
|
101
|
+
const dir = path.join(root, folder);
|
|
102
|
+
let names;
|
|
103
|
+
try {
|
|
104
|
+
names = await deps.readdir(dir);
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
for (const name of names) {
|
|
110
|
+
const m = ROLLOUT_RE.exec(name);
|
|
111
|
+
if (!m)
|
|
112
|
+
continue;
|
|
113
|
+
const threadId = m[2];
|
|
114
|
+
if (args.excludeThreadIds?.has(threadId))
|
|
115
|
+
continue;
|
|
116
|
+
const ts = parseFilenameTimestamp(m[1]);
|
|
117
|
+
if (ts < sinceMs)
|
|
118
|
+
continue;
|
|
119
|
+
candidates.push({ ts, threadId, file: path.join(dir, name) });
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
candidates.sort((a, b) => a.ts - b.ts);
|
|
123
|
+
for (const candidate of candidates) {
|
|
124
|
+
let head;
|
|
125
|
+
try {
|
|
126
|
+
head = await deps.readHead(candidate.file, HEAD_BYTES);
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
const firstLine = head.split("\n", 1)[0];
|
|
132
|
+
let parsed;
|
|
133
|
+
try {
|
|
134
|
+
parsed = JSON.parse(firstLine);
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
if (!parsed || typeof parsed !== "object")
|
|
140
|
+
continue;
|
|
141
|
+
if (parsed.type !== "session_meta")
|
|
142
|
+
continue;
|
|
143
|
+
const payload = parsed.payload;
|
|
144
|
+
if (!payload || typeof payload !== "object")
|
|
145
|
+
continue;
|
|
146
|
+
const id = payload.id;
|
|
147
|
+
const cwd = payload.cwd;
|
|
148
|
+
if (typeof id === "string" && typeof cwd === "string" && normalizeCwd(cwd) === wantCwd) {
|
|
149
|
+
return id;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
export const defaultCodexThreadDiscoveryDeps = {
|
|
155
|
+
readdir: (dir) => fsPromises.readdir(dir),
|
|
156
|
+
readHead: async (filePath, maxBytes) => {
|
|
157
|
+
const fh = await fsPromises.open(filePath, "r");
|
|
158
|
+
try {
|
|
159
|
+
const buf = Buffer.alloc(maxBytes);
|
|
160
|
+
const { bytesRead } = await fh.read(buf, 0, maxBytes, 0);
|
|
161
|
+
return buf.toString("utf-8", 0, bytesRead);
|
|
162
|
+
}
|
|
163
|
+
finally {
|
|
164
|
+
await fh.close();
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
homeDir: () => os.homedir(),
|
|
168
|
+
};
|
|
169
|
+
//# sourceMappingURL=codex-thread-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-thread-discovery.js","sourceRoot":"","sources":["../../src/core/codex-thread-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default reclamation age (10 min) — deliberately much shorter than
|
|
3
|
+
* `snapshot-tmp-sweep.ts`'s 1h default: this file holds a LIVE credential,
|
|
4
|
+
* not just terminal cell-state, and a normal launch's own cleanup deletes it
|
|
5
|
+
* within seconds of the `claude` invocation exiting.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DEFAULT_CODEXTENDER_AUTH_TMP_MAX_AGE_MS: number;
|
|
8
|
+
export interface CodextenderAuthFileSweepDeps {
|
|
9
|
+
readdir: (dir: string) => Promise<string[]>;
|
|
10
|
+
stat: (p: string) => Promise<{
|
|
11
|
+
mtimeMs: number;
|
|
12
|
+
}>;
|
|
13
|
+
unlink: (p: string) => Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
export interface CodextenderAuthFileSweepOpts {
|
|
16
|
+
dir: string;
|
|
17
|
+
/** Reclaim tmp files whose mtime is older than this. Default 10 min. */
|
|
18
|
+
maxAgeMs?: number;
|
|
19
|
+
deps?: Partial<CodextenderAuthFileSweepDeps>;
|
|
20
|
+
/** Injected for tests. Defaults to Date.now. */
|
|
21
|
+
now?: () => number;
|
|
22
|
+
logWarn?: (msg: string) => void;
|
|
23
|
+
logInfo?: (msg: string) => void;
|
|
24
|
+
}
|
|
25
|
+
export interface CodextenderAuthFileSweepResult {
|
|
26
|
+
/** stale credential files unlinked. */
|
|
27
|
+
deleted: number;
|
|
28
|
+
/** stat/unlink failures (kept going). */
|
|
29
|
+
errors: number;
|
|
30
|
+
/** files younger than the cutoff, left in place (still in use). */
|
|
31
|
+
preserved: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Age-gated sweep of orphaned `codextender-auth-*.tmp` credential files.
|
|
35
|
+
* Best-effort: dir-read failure and per-file failures are non-fatal (they
|
|
36
|
+
* log a warn and never throw) — the same posture `sweepOrphanSnapshotTmp`
|
|
37
|
+
* takes, for the same reason (a sweep failure must never crash boot or the
|
|
38
|
+
* periodic timer).
|
|
39
|
+
*/
|
|
40
|
+
export declare function sweepOrphanCodextenderAuthFiles(opts: CodextenderAuthFileSweepOpts): Promise<CodextenderAuthFileSweepResult>;
|
|
41
|
+
//# sourceMappingURL=codextender-auth-file-sweep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codextender-auth-file-sweep.d.ts","sourceRoot":"","sources":["../../src/core/codextender-auth-file-sweep.ts"],"names":[],"mappings":"AA8BA;;;;;GAKG;AACH,eAAO,MAAM,uCAAuC,QAAiB,CAAC;AAEtE,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,4BAA4B;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAC7C,gDAAgD;IAChD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,8BAA8B;IAC7C,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD;;;;;;GAMG;AACH,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,8BAA8B,CAAC,CAoDzC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* codextender-auth-file-sweep.ts — bounded reclamation of orphaned
|
|
3
|
+
* `codextender-auth-*.tmp` credential files (PR-review round 10, iterate-
|
|
4
|
+
* 2026-09-23; Sven's own decision on the CI-BLOCKed design question).
|
|
5
|
+
*
|
|
6
|
+
* `writeCodextenderAuthTokenFile` (launcher-codextender.ts) writes the
|
|
7
|
+
* Codextender proxy's bearer token to a private `0o600` temp file once per
|
|
8
|
+
* launch; the generated command's cleanup suffix deletes it right after the
|
|
9
|
+
* `claude` invocation exits. If the command is never executed (copied out
|
|
10
|
+
* instead of auto-run), the pty is killed before the suffix runs, or launch
|
|
11
|
+
* fails before a command is ever returned to run, that delete step never
|
|
12
|
+
* fires and the file is stranded — the exact gap the required `PR Review`
|
|
13
|
+
* CI gate BLOCKed twice on. Mirrors `snapshot-tmp-sweep.ts`'s shape (same
|
|
14
|
+
* age-gated, best-effort, injectable-deps design) for the same reason: a
|
|
15
|
+
* live write's own cleanup runs within seconds, so anything older than the
|
|
16
|
+
* cutoff is provably orphaned — no active-task veto needed.
|
|
17
|
+
*
|
|
18
|
+
* Wired into the boot + periodic sweep in index.ts alongside the scrollback
|
|
19
|
+
* and snapshot-tmp sweeps. Unlike those two (scoped to the terminal
|
|
20
|
+
* scrollback dir), this one scans `os.tmpdir()` — where
|
|
21
|
+
* `writeCodextenderAuthTokenFile` actually writes — so `dir` is threaded
|
|
22
|
+
* through for testability rather than hardcoded.
|
|
23
|
+
*/
|
|
24
|
+
import * as fsAsync from "node:fs/promises";
|
|
25
|
+
import * as path from "node:path";
|
|
26
|
+
/** Matches `codextender-auth-<uuid>.tmp`. Bounded — ReDoS-safe. */
|
|
27
|
+
const CODEXTENDER_AUTH_TMP_RE = /^codextender-auth-[0-9a-fA-F-]{36}\.tmp$/;
|
|
28
|
+
/**
|
|
29
|
+
* Default reclamation age (10 min) — deliberately much shorter than
|
|
30
|
+
* `snapshot-tmp-sweep.ts`'s 1h default: this file holds a LIVE credential,
|
|
31
|
+
* not just terminal cell-state, and a normal launch's own cleanup deletes it
|
|
32
|
+
* within seconds of the `claude` invocation exiting.
|
|
33
|
+
*/
|
|
34
|
+
export const DEFAULT_CODEXTENDER_AUTH_TMP_MAX_AGE_MS = 10 * 60 * 1000;
|
|
35
|
+
const defaultDeps = {
|
|
36
|
+
readdir: (dir) => fsAsync.readdir(dir),
|
|
37
|
+
stat: (p) => fsAsync.stat(p),
|
|
38
|
+
unlink: (p) => fsAsync.unlink(p),
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Age-gated sweep of orphaned `codextender-auth-*.tmp` credential files.
|
|
42
|
+
* Best-effort: dir-read failure and per-file failures are non-fatal (they
|
|
43
|
+
* log a warn and never throw) — the same posture `sweepOrphanSnapshotTmp`
|
|
44
|
+
* takes, for the same reason (a sweep failure must never crash boot or the
|
|
45
|
+
* periodic timer).
|
|
46
|
+
*/
|
|
47
|
+
export async function sweepOrphanCodextenderAuthFiles(opts) {
|
|
48
|
+
const deps = { ...defaultDeps, ...opts.deps };
|
|
49
|
+
const now = opts.now ?? Date.now;
|
|
50
|
+
const logWarn = opts.logWarn ?? ((m) => console.warn(m));
|
|
51
|
+
const logInfo = opts.logInfo ?? ((m) => console.log(m));
|
|
52
|
+
const cutoff = now() - (opts.maxAgeMs ?? DEFAULT_CODEXTENDER_AUTH_TMP_MAX_AGE_MS);
|
|
53
|
+
const result = { deleted: 0, errors: 0, preserved: 0 };
|
|
54
|
+
let entries;
|
|
55
|
+
try {
|
|
56
|
+
entries = await deps.readdir(opts.dir);
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
// ENOENT = dir not created yet (benign). Any other error (EACCES/EPERM/
|
|
60
|
+
// EIO) is a real operational failure that leaves credential files on
|
|
61
|
+
// disk — surface it so the gap stays visible; this function never throws.
|
|
62
|
+
if (err.code !== "ENOENT") {
|
|
63
|
+
logWarn(`[codextender-auth-sweep] readdir failed (${err.message}); orphan credential files may persist`);
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
for (const name of entries) {
|
|
68
|
+
if (!CODEXTENDER_AUTH_TMP_RE.test(name))
|
|
69
|
+
continue;
|
|
70
|
+
const full = path.join(opts.dir, name);
|
|
71
|
+
let mtimeMs;
|
|
72
|
+
try {
|
|
73
|
+
mtimeMs = (await deps.stat(full)).mtimeMs;
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
result.errors++;
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (mtimeMs >= cutoff) {
|
|
80
|
+
result.preserved++;
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
await deps.unlink(full);
|
|
85
|
+
result.deleted++;
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
result.errors++;
|
|
89
|
+
logWarn(`[codextender-auth-sweep] unlink failed for ${name}: ${err.message}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (result.deleted > 0 || result.errors > 0) {
|
|
93
|
+
logInfo(`[codextender-auth-sweep] orphan sweep: deleted=${result.deleted} errors=${result.errors} preserved=${result.preserved}`);
|
|
94
|
+
}
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=codextender-auth-file-sweep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codextender-auth-file-sweep.js","sourceRoot":"","sources":["../../src/core/codextender-auth-file-sweep.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `codextenderPort` is persisted/read as arbitrary JSON (PUT /api/settings
|
|
3
|
+
* accepts an unvalidated body; a hand-edited settings.json is untyped on
|
|
4
|
+
* disk too) before ever reaching here, so `port: number`'s compile-time
|
|
5
|
+
* type is not a runtime guarantee. Both probes below MUST reject anything
|
|
6
|
+
* outside a real TCP port before interpolating it into a URL — a value
|
|
7
|
+
* like `"4000@attacker.example"` would otherwise redirect the request via
|
|
8
|
+
* URL userinfo-authority confusion (PR-review BLOCK, iterate-2026-09-23
|
|
9
|
+
* fifth round). This is the enforcement point regardless of how an invalid
|
|
10
|
+
* value got in; `routes/settings.ts`'s PUT-time rejection (same finding)
|
|
11
|
+
* is defense-in-depth on top of it, not a substitute for it.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isValidCodextenderPort(value: unknown): value is number;
|
|
14
|
+
export interface CodextenderModelEntry {
|
|
15
|
+
slug: string;
|
|
16
|
+
display_name: string;
|
|
17
|
+
/** LiteLLM's declared context window for this alias (its `model_info.
|
|
18
|
+
* max_input_tokens`), when the proxy's `/v1/models` response carries one.
|
|
19
|
+
* Absent on an older/unpatched proxy — callers must treat that the same
|
|
20
|
+
* as "unknown", never assume a number. */
|
|
21
|
+
max_input_tokens?: number;
|
|
22
|
+
}
|
|
23
|
+
export interface CodextenderProbeResult {
|
|
24
|
+
ok: boolean;
|
|
25
|
+
models: CodextenderModelEntry[];
|
|
26
|
+
}
|
|
27
|
+
export interface CodextenderProbeDeps {
|
|
28
|
+
/** Test seam — defaults to the real global `fetch`. */
|
|
29
|
+
fetchFn?: typeof fetch;
|
|
30
|
+
/** Probe timeout in ms. Default 1500 — short enough that a launch or a
|
|
31
|
+
* datalist render never feels stuck on an unreachable proxy. */
|
|
32
|
+
timeoutMs?: number;
|
|
33
|
+
/** Test seam — defaults to `resolveCodextenderAuthToken()` (reads
|
|
34
|
+
* `process.env.CODEXTENDER_AUTH_TOKEN`, no built-in fallback). */
|
|
35
|
+
authToken?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* `GET http://127.0.0.1:<port>/v1/models` with the configured Codextender
|
|
39
|
+
* master-key bearer token (`deps.authToken` or `resolveCodextenderAuthToken()`).
|
|
40
|
+
* Never throws — an unconfigured token, any network error, non-2xx status,
|
|
41
|
+
* timeout, or malformed body all resolve `{ok: false, models: []}` rather
|
|
42
|
+
* than rejecting, so callers never need a try/catch.
|
|
43
|
+
*
|
|
44
|
+
* LiteLLM's `/v1/models` response is OpenAI-shaped (`{"data": [{"id":
|
|
45
|
+
* "sol"}, ...]}`) — it carries no separate display name, so `display_name`
|
|
46
|
+
* is set to the same slug (matches `codex-models-probe.ts`'s
|
|
47
|
+
* `CodexModelCatalogEntry` shape for the client's shared consumer).
|
|
48
|
+
*/
|
|
49
|
+
export declare function probeCodextenderModels(port: number, deps?: CodextenderProbeDeps): Promise<CodextenderProbeResult>;
|
|
50
|
+
/**
|
|
51
|
+
* Resolves the REAL context window for the Codextender alias a task is
|
|
52
|
+
* about to launch with, straight from the proxy's own `/v1/models` response
|
|
53
|
+
* (operator finding, 2026-09-26, live Codextender iterate test) — never a
|
|
54
|
+
* number hardcoded here a second time. Claude Code assumes a 200K context
|
|
55
|
+
* window for any model id it doesn't recognize (the Codex alias is one) and
|
|
56
|
+
* proactively over-compacts against that wrong, much-too-small ceiling; the
|
|
57
|
+
* fix is `launcher-codextender.ts` setting `CLAUDE_CODE_MAX_CONTEXT_TOKENS`
|
|
58
|
+
* from THIS value, so a change to codextender's own declared window (its
|
|
59
|
+
* `config.py` `model_info.max_input_tokens`) can never drift out of sync
|
|
60
|
+
* with what webui tells Claude Code — both repos read the same live number.
|
|
61
|
+
*
|
|
62
|
+
* Never throws, same contract as `probeCodextenderModels` — resolves
|
|
63
|
+
* `undefined` (not a guessed fallback) when the probe fails, the alias
|
|
64
|
+
* isn't in the response, or the response carries no usable
|
|
65
|
+
* `max_input_tokens` for it (an older/unpatched proxy). The caller's
|
|
66
|
+
* contract for `undefined` is "leave `CLAUDE_CODE_MAX_CONTEXT_TOKENS`
|
|
67
|
+
* unset", which is the conservative, safe default — Claude Code's own 200K
|
|
68
|
+
* fallback — rather than risking an inflated ceiling that starves
|
|
69
|
+
* compaction entirely.
|
|
70
|
+
*/
|
|
71
|
+
export declare function resolveCodextenderMaxContextTokens(port: number, model: string | undefined, deps?: CodextenderProbeDeps): Promise<number | undefined>;
|
|
72
|
+
/**
|
|
73
|
+
* `GET http://127.0.0.1:<port>/health/liveliness` — no auth header
|
|
74
|
+
* required (confirmed live against a real local LiteLLM proxy). This is
|
|
75
|
+
* the AC8 pre-flight probe: it only needs to know the proxy process is up
|
|
76
|
+
* and answering, not what it serves. Never throws — same
|
|
77
|
+
* never-reject contract as `probeCodextenderModels`.
|
|
78
|
+
*/
|
|
79
|
+
export declare function probeCodextenderLiveness(port: number, deps?: CodextenderProbeDeps): Promise<boolean>;
|
|
80
|
+
//# sourceMappingURL=codextender-proxy-probe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codextender-proxy-probe.d.ts","sourceRoot":"","sources":["../../src/core/codextender-proxy-probe.ts"],"names":[],"mappings":"AAmCA;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAOtE;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB;;;+CAG2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,qBAAqB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB;qEACiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;uEACmE;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsBD;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,sBAAsB,CAAC,CAmCjC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,kCAAkC,CACtD,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAM7B;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,OAAO,CAAC,CAgBlB"}
|