@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 @@
|
|
|
1
|
+
{"version":3,"file":"charter-authority-read.js","sourceRoot":"","sources":["../../../src/external/org/charter-authority-read.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { PreflightLead } from "../../types/leadwright-preflight.js";
|
|
2
|
+
import type { DaemonConfigAdditions } from "./leadwright-proposal-merge.js";
|
|
3
|
+
export interface CommitRequestBody {
|
|
4
|
+
leadId: string;
|
|
5
|
+
lead: PreflightLead;
|
|
6
|
+
daemonConfigAdditions: DaemonConfigAdditions;
|
|
7
|
+
charterContent: string;
|
|
8
|
+
expectedProposalDigest: string;
|
|
9
|
+
}
|
|
10
|
+
export type ValidationResult = {
|
|
11
|
+
ok: true;
|
|
12
|
+
value: CommitRequestBody;
|
|
13
|
+
} | {
|
|
14
|
+
ok: false;
|
|
15
|
+
reason: string;
|
|
16
|
+
};
|
|
17
|
+
export declare function validateCommitBody(body: unknown): ValidationResult;
|
|
18
|
+
//# sourceMappingURL=commit-validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit-validate.d.ts","sourceRoot":"","sources":["../../../src/external/org/commit-validate.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE5E,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,aAAa,CAAC;IACpB,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,MAAM,gBAAgB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAmDlE"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* commit-validate.ts — request-body validation for POST
|
|
3
|
+
* /api/external/org/leads/commit (iterate-2026-09-07-leadwright-setup-wizard,
|
|
4
|
+
* W14). Split out of commit.ts (bloat ceiling) — a self-contained concern:
|
|
5
|
+
* shape-checking the untyped request body against leadwright's published
|
|
6
|
+
* contract, never leadwright's semantic judgment (that's the verdict step's
|
|
7
|
+
* real check-setup.ts subprocess).
|
|
8
|
+
*/
|
|
9
|
+
import path from "node:path";
|
|
10
|
+
import { LEAD_ID_RE, ALLOWED_SKILL_RE } from "../../types/leadwright-preflight.js";
|
|
11
|
+
export function validateCommitBody(body) {
|
|
12
|
+
if (typeof body !== "object" || body === null)
|
|
13
|
+
return { ok: false, reason: "invalid_request_body" };
|
|
14
|
+
const b = body;
|
|
15
|
+
if (typeof b.leadId !== "string" || !LEAD_ID_RE.test(b.leadId)) {
|
|
16
|
+
return { ok: false, reason: "invalid_lead_id" };
|
|
17
|
+
}
|
|
18
|
+
if (typeof b.lead !== "object" || b.lead === null) {
|
|
19
|
+
return { ok: false, reason: "invalid_lead" };
|
|
20
|
+
}
|
|
21
|
+
const lead = b.lead;
|
|
22
|
+
// External-review fix (both legs, high): commitCore ALWAYS writes charter
|
|
23
|
+
// content to `<leadsRoot>/<leadId>/charter.md` regardless of what
|
|
24
|
+
// charter_path says — checking only "relative, no .." (CHARTER_LEARNINGS_
|
|
25
|
+
// PATH_RE) let a caller submit a charter_path that doesn't match, so the
|
|
26
|
+
// org-chart entry would point at a file the endpoint never wrote. Exact
|
|
27
|
+
// match subsumes that regex check (a value equal to the fixed convention
|
|
28
|
+
// is trivially relative with no `..`). The wizard itself always sends
|
|
29
|
+
// this convention (buildLeadProposal.ts); this closes the gap for any
|
|
30
|
+
// other caller. `b.leadId` is a validated string by this point.
|
|
31
|
+
if (lead.charter_path !== `${b.leadId}/charter.md`) {
|
|
32
|
+
return { ok: false, reason: "charter_path_must_match_lead_id_convention" };
|
|
33
|
+
}
|
|
34
|
+
if (lead.learnings_path !== `${b.leadId}/learnings.md`) {
|
|
35
|
+
return { ok: false, reason: "learnings_path_must_match_lead_id_convention" };
|
|
36
|
+
}
|
|
37
|
+
if (!Array.isArray(lead.allowed_skills) || !lead.allowed_skills.every((s) => typeof s === "string" && ALLOWED_SKILL_RE.test(s))) {
|
|
38
|
+
return { ok: false, reason: "invalid_allowed_skills" };
|
|
39
|
+
}
|
|
40
|
+
const additionsRaw = b.daemonConfigAdditions;
|
|
41
|
+
if (typeof additionsRaw !== "object" || additionsRaw === null) {
|
|
42
|
+
return { ok: false, reason: "invalid_daemon_config_additions" };
|
|
43
|
+
}
|
|
44
|
+
const additions = additionsRaw;
|
|
45
|
+
if (typeof additions.path !== "string" ||
|
|
46
|
+
!path.isAbsolute(additions.path) ||
|
|
47
|
+
typeof additions.actionId !== "string" ||
|
|
48
|
+
!Array.isArray(additions.pluginDirs) ||
|
|
49
|
+
!additions.pluginDirs.every((d) => typeof d === "string" && path.isAbsolute(d))) {
|
|
50
|
+
return { ok: false, reason: "daemon_config_additions_must_be_absolute" };
|
|
51
|
+
}
|
|
52
|
+
if (typeof b.charterContent !== "string")
|
|
53
|
+
return { ok: false, reason: "charter_content_required" };
|
|
54
|
+
if (typeof b.expectedProposalDigest !== "string" || b.expectedProposalDigest.length === 0) {
|
|
55
|
+
return { ok: false, reason: "expected_proposal_digest_required" };
|
|
56
|
+
}
|
|
57
|
+
return { ok: true, value: body };
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=commit-validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit-validate.js","sourceRoot":"","sources":["../../../src/external/org/commit-validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { withOrgFileLock, type LstatFn, type OrgFileLockOptions } from "./org-file-lock.js";
|
|
2
|
+
import { type DaemonConfigAdditions } from "./leadwright-proposal-merge.js";
|
|
3
|
+
import type { PreflightLead, PreflightOrgChart } from "../../types/leadwright-preflight.js";
|
|
4
|
+
export type WithOrgFileLockFn = typeof withOrgFileLock;
|
|
5
|
+
export type { LstatFn };
|
|
6
|
+
/** charter.md is a brand-new file under a brand-new leadId — no concurrent
|
|
7
|
+
* WRITER can exist for a path that did not exist a moment ago, so this
|
|
8
|
+
* needs no LOCK (mirrors file-write.ts's documented "no lock" posture for
|
|
9
|
+
* charter files; the concurrency story there is If-Match, which has no
|
|
10
|
+
* meaning for a CREATE). It IS symlink-checked, same as the other two
|
|
11
|
+
* writes: `<leadsRoot>/<leadId>` and the charter.md path itself are each
|
|
12
|
+
* checked immediately before the syscall that would follow them, closing
|
|
13
|
+
* the escape a pre-planted symlink (or a retry landing on one) would
|
|
14
|
+
* otherwise open. */
|
|
15
|
+
export declare function writeNewCharterFile(leadsRoot: string, leadId: string, content: string, lstat?: LstatFn): void;
|
|
16
|
+
export type DaemonConfigWriteResult = {
|
|
17
|
+
status: "written";
|
|
18
|
+
} | {
|
|
19
|
+
status: "missing";
|
|
20
|
+
fragment: string;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* ADD-ONLY merge — reads the CURRENT on-disk daemon-config.json fresh
|
|
24
|
+
* (inside the lock, never the pre-commit snapshot) and writes back with
|
|
25
|
+
* ONLY this lead's three entries added to leadProjectRoots/leadActionIds/
|
|
26
|
+
* leadPluginDirs. Every existing key — other leads' entries, every
|
|
27
|
+
* unrelated top-level field — passes through untouched. A file that does
|
|
28
|
+
* not exist on disk is never guessed into existence — the caller gets a
|
|
29
|
+
* copy-paste fragment instead (W14's "home is <leadsRoot>/daemon-config.json,
|
|
30
|
+
* if absent show a fragment instead of guessing a location").
|
|
31
|
+
*
|
|
32
|
+
* External-review fix (GLM, medium): the "does it exist" decision now comes
|
|
33
|
+
* from the `mustExist: true` lock ACQUISITION's own ENOENT, not a boolean
|
|
34
|
+
* the caller read before taking the lock — a pre-lock snapshot is a TOCTOU
|
|
35
|
+
* window (the file could be deleted between that read and this call).
|
|
36
|
+
*/
|
|
37
|
+
export declare function writeDaemonConfigAddition(leadsRoot: string, leadId: string, additions: DaemonConfigAdditions, withOrgFileLockFn?: WithOrgFileLockFn, lockOptions?: Omit<OrgFileLockOptions, "mustExist">): Promise<DaemonConfigWriteResult>;
|
|
38
|
+
export type OrgChartWriteResult = {
|
|
39
|
+
status: "written";
|
|
40
|
+
} | {
|
|
41
|
+
status: "already_committed";
|
|
42
|
+
} | {
|
|
43
|
+
status: "conflict";
|
|
44
|
+
};
|
|
45
|
+
/** Pure decision for adding `leadId` -> `lead` to an org-chart snapshot —
|
|
46
|
+
* idempotent when the roster ALREADY carries this exact lead (a safe retry
|
|
47
|
+
* after an earlier commit attempt crashed between this write and its HTTP
|
|
48
|
+
* response reaching the client); a DIFFERING existing entry is refused,
|
|
49
|
+
* never silently overwritten or reordered. Exported so `commit.ts` can
|
|
50
|
+
* reuse it INSIDE an org-chart.json lock it already holds (the
|
|
51
|
+
* concurrent-same-leadId-commit race fix) rather than acquiring a second,
|
|
52
|
+
* nested lock on the same file via `writeOrgChartLead`. */
|
|
53
|
+
export declare function applyOrgChartLead(current: PreflightOrgChart, leadId: string, lead: PreflightLead): {
|
|
54
|
+
status: "written";
|
|
55
|
+
next: PreflightOrgChart;
|
|
56
|
+
} | {
|
|
57
|
+
status: "already_committed";
|
|
58
|
+
} | {
|
|
59
|
+
status: "conflict";
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Adds `leadId` -> `lead` to org-chart.json's `leads` map, re-reading fresh
|
|
63
|
+
* inside the lock. Thin wrapper over `applyOrgChartLead` for callers that
|
|
64
|
+
* don't already hold this file's lock (`commit.ts` does, and calls
|
|
65
|
+
* `applyOrgChartLead` directly instead — see that file).
|
|
66
|
+
*/
|
|
67
|
+
export declare function writeOrgChartLead(leadsRoot: string, leadId: string, lead: PreflightLead, withOrgFileLockFn?: WithOrgFileLockFn, lockOptions?: Omit<OrgFileLockOptions, "mustExist">): Promise<OrgChartWriteResult>;
|
|
68
|
+
//# sourceMappingURL=commit-writes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit-writes.d.ts","sourceRoot":"","sources":["../../../src/external/org/commit-writes.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,eAAe,EAAoB,KAAK,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC9G,OAAO,EAAsB,KAAK,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,KAAK,EAAyB,aAAa,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAEnH,MAAM,MAAM,iBAAiB,GAAG,OAAO,eAAe,CAAC;AACvD,YAAY,EAAE,OAAO,EAAE,CAAC;AAExB;;;;;;;;sBAQsB;AACtB,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,OAAmB,GACzB,IAAI,CAON;AAED,MAAM,MAAM,uBAAuB,GAAG;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AActG;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,qBAAqB,EAChC,iBAAiB,GAAE,iBAAmC,EACtD,WAAW,GAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAM,GACtD,OAAO,CAAC,uBAAuB,CAAC,CAoBlC;AAED,MAAM,MAAM,mBAAmB,GAAG;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,mBAAmB,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAEnH;;;;;;;4DAO4D;AAC5D,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,aAAa,GAClB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,mBAAmB,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,CAQ3G;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,aAAa,EACnB,iBAAiB,GAAE,iBAAmC,EACtD,WAAW,GAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,CAAM,GACtD,OAAO,CAAC,mBAAmB,CAAC,CAQ9B"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* commit-writes.ts — the three ordered, lock-protected writes the leads
|
|
3
|
+
* commit route performs (iterate-2026-09-07-leadwright-setup-wizard, W14).
|
|
4
|
+
* Order (enforced by commit.ts's call sequence, not here):
|
|
5
|
+
* charter.md -> daemon-config.json -> org-chart.json
|
|
6
|
+
* org-chart.json is what "activates" a lead (leadwright's daemon reads the
|
|
7
|
+
* roster from there), so writing it LAST means a failure at any earlier
|
|
8
|
+
* step leaves only harmless, retry-safe residue (an orphan charter.md, or
|
|
9
|
+
* a daemon-config.json entry pointing at a lead the roster doesn't list
|
|
10
|
+
* yet) rather than a half-activated lead.
|
|
11
|
+
*/
|
|
12
|
+
import { lstatSync, mkdirSync, writeFileSync } from "node:fs";
|
|
13
|
+
import path from "node:path";
|
|
14
|
+
import { withOrgFileLock, assertNotSymlink } from "./org-file-lock.js";
|
|
15
|
+
import { canonicalStringify } from "./leadwright-proposal-merge.js";
|
|
16
|
+
/** charter.md is a brand-new file under a brand-new leadId — no concurrent
|
|
17
|
+
* WRITER can exist for a path that did not exist a moment ago, so this
|
|
18
|
+
* needs no LOCK (mirrors file-write.ts's documented "no lock" posture for
|
|
19
|
+
* charter files; the concurrency story there is If-Match, which has no
|
|
20
|
+
* meaning for a CREATE). It IS symlink-checked, same as the other two
|
|
21
|
+
* writes: `<leadsRoot>/<leadId>` and the charter.md path itself are each
|
|
22
|
+
* checked immediately before the syscall that would follow them, closing
|
|
23
|
+
* the escape a pre-planted symlink (or a retry landing on one) would
|
|
24
|
+
* otherwise open. */
|
|
25
|
+
export function writeNewCharterFile(leadsRoot, leadId, content, lstat = lstatSync) {
|
|
26
|
+
const dir = path.join(leadsRoot, leadId);
|
|
27
|
+
assertNotSymlink(dir, lstat);
|
|
28
|
+
mkdirSync(dir, { recursive: true });
|
|
29
|
+
const filePath = path.join(dir, "charter.md");
|
|
30
|
+
assertNotSymlink(filePath, lstat);
|
|
31
|
+
writeFileSync(filePath, content, "utf8");
|
|
32
|
+
}
|
|
33
|
+
function buildDaemonConfigFragment(leadId, additions) {
|
|
34
|
+
return JSON.stringify({
|
|
35
|
+
leadProjectRoots: { [leadId]: additions.path },
|
|
36
|
+
leadActionIds: { [leadId]: additions.actionId },
|
|
37
|
+
leadPluginDirs: { [leadId]: additions.pluginDirs },
|
|
38
|
+
}, null, 2);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* ADD-ONLY merge — reads the CURRENT on-disk daemon-config.json fresh
|
|
42
|
+
* (inside the lock, never the pre-commit snapshot) and writes back with
|
|
43
|
+
* ONLY this lead's three entries added to leadProjectRoots/leadActionIds/
|
|
44
|
+
* leadPluginDirs. Every existing key — other leads' entries, every
|
|
45
|
+
* unrelated top-level field — passes through untouched. A file that does
|
|
46
|
+
* not exist on disk is never guessed into existence — the caller gets a
|
|
47
|
+
* copy-paste fragment instead (W14's "home is <leadsRoot>/daemon-config.json,
|
|
48
|
+
* if absent show a fragment instead of guessing a location").
|
|
49
|
+
*
|
|
50
|
+
* External-review fix (GLM, medium): the "does it exist" decision now comes
|
|
51
|
+
* from the `mustExist: true` lock ACQUISITION's own ENOENT, not a boolean
|
|
52
|
+
* the caller read before taking the lock — a pre-lock snapshot is a TOCTOU
|
|
53
|
+
* window (the file could be deleted between that read and this call).
|
|
54
|
+
*/
|
|
55
|
+
export async function writeDaemonConfigAddition(leadsRoot, leadId, additions, withOrgFileLockFn = withOrgFileLock, lockOptions = {}) {
|
|
56
|
+
const target = path.join(leadsRoot, "daemon-config.json");
|
|
57
|
+
try {
|
|
58
|
+
await withOrgFileLockFn(target, { ...lockOptions, mustExist: true }, (ctx) => {
|
|
59
|
+
const current = JSON.parse(ctx.read());
|
|
60
|
+
const next = {
|
|
61
|
+
...current,
|
|
62
|
+
leadProjectRoots: { ...(current.leadProjectRoots ?? {}), [leadId]: additions.path },
|
|
63
|
+
leadActionIds: { ...(current.leadActionIds ?? {}), [leadId]: additions.actionId },
|
|
64
|
+
leadPluginDirs: { ...(current.leadPluginDirs ?? {}), [leadId]: additions.pluginDirs },
|
|
65
|
+
};
|
|
66
|
+
ctx.write(JSON.stringify(next, null, 2));
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
if (err?.code === "ENOENT") {
|
|
71
|
+
return { status: "missing", fragment: buildDaemonConfigFragment(leadId, additions) };
|
|
72
|
+
}
|
|
73
|
+
throw err;
|
|
74
|
+
}
|
|
75
|
+
return { status: "written" };
|
|
76
|
+
}
|
|
77
|
+
/** Pure decision for adding `leadId` -> `lead` to an org-chart snapshot —
|
|
78
|
+
* idempotent when the roster ALREADY carries this exact lead (a safe retry
|
|
79
|
+
* after an earlier commit attempt crashed between this write and its HTTP
|
|
80
|
+
* response reaching the client); a DIFFERING existing entry is refused,
|
|
81
|
+
* never silently overwritten or reordered. Exported so `commit.ts` can
|
|
82
|
+
* reuse it INSIDE an org-chart.json lock it already holds (the
|
|
83
|
+
* concurrent-same-leadId-commit race fix) rather than acquiring a second,
|
|
84
|
+
* nested lock on the same file via `writeOrgChartLead`. */
|
|
85
|
+
export function applyOrgChartLead(current, leadId, lead) {
|
|
86
|
+
const existing = current.leads[leadId];
|
|
87
|
+
if (existing) {
|
|
88
|
+
return canonicalStringify(existing) === canonicalStringify(lead)
|
|
89
|
+
? { status: "already_committed" }
|
|
90
|
+
: { status: "conflict" };
|
|
91
|
+
}
|
|
92
|
+
return { status: "written", next: { ...current, leads: { ...current.leads, [leadId]: lead } } };
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Adds `leadId` -> `lead` to org-chart.json's `leads` map, re-reading fresh
|
|
96
|
+
* inside the lock. Thin wrapper over `applyOrgChartLead` for callers that
|
|
97
|
+
* don't already hold this file's lock (`commit.ts` does, and calls
|
|
98
|
+
* `applyOrgChartLead` directly instead — see that file).
|
|
99
|
+
*/
|
|
100
|
+
export async function writeOrgChartLead(leadsRoot, leadId, lead, withOrgFileLockFn = withOrgFileLock, lockOptions = {}) {
|
|
101
|
+
const target = path.join(leadsRoot, "org-chart.json");
|
|
102
|
+
return withOrgFileLockFn(target, { ...lockOptions, mustExist: true }, (ctx) => {
|
|
103
|
+
const current = JSON.parse(ctx.read());
|
|
104
|
+
const result = applyOrgChartLead(current, leadId, lead);
|
|
105
|
+
if (result.status === "written")
|
|
106
|
+
ctx.write(JSON.stringify(result.next, null, 2));
|
|
107
|
+
return { status: result.status };
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=commit-writes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit-writes.js","sourceRoot":"","sources":["../../../src/external/org/commit-writes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { Hono } from "hono";
|
|
2
|
+
import { type OrgChartFullReadResult } from "./org-chart-full-read.js";
|
|
3
|
+
import { type DaemonConfigReadCoreResult } from "./daemon-config-read.js";
|
|
4
|
+
import { writeNewCharterFile, type WithOrgFileLockFn } from "./commit-writes.js";
|
|
5
|
+
import { type ReadOrgFileFn } from "./existing-charters-read.js";
|
|
6
|
+
import { runLeadwrightPreflight } from "../../core/leadwright-preflight-transport.js";
|
|
7
|
+
import { type CommitRequestBody } from "./commit-validate.js";
|
|
8
|
+
/** Not a dismissable toast — the client renders this string prominently and
|
|
9
|
+
* blocks the "done" state on it (W14: "restart the daemon" must be
|
|
10
|
+
* explicit, because daemon-config.json loads once at boot). */
|
|
11
|
+
export declare const RESTART_NOTICE = "leadwright's daemon reads daemon-config.json once at startup. This new lead will not run until you restart the leadwright daemon.";
|
|
12
|
+
export type { CommitRequestBody };
|
|
13
|
+
export interface CommitCoreDeps {
|
|
14
|
+
leadsRoot: string;
|
|
15
|
+
leadwrightCheckoutRoot: string | undefined;
|
|
16
|
+
webuiBaseUrl: string;
|
|
17
|
+
readOrgChartFullFn: (deps: {
|
|
18
|
+
leadsRoot: string;
|
|
19
|
+
}) => OrgChartFullReadResult;
|
|
20
|
+
daemonConfigReadFn: (deps: {
|
|
21
|
+
leadsRoot: string;
|
|
22
|
+
webuiBaseUrl: string;
|
|
23
|
+
}) => DaemonConfigReadCoreResult;
|
|
24
|
+
withOrgFileLockFn?: WithOrgFileLockFn;
|
|
25
|
+
writeCharterFn?: typeof writeNewCharterFile;
|
|
26
|
+
readOrgFileFn?: ReadOrgFileFn;
|
|
27
|
+
runLeadwrightPreflightFn?: typeof runLeadwrightPreflight;
|
|
28
|
+
}
|
|
29
|
+
export type CommitCoreResult = {
|
|
30
|
+
status: 200;
|
|
31
|
+
body: {
|
|
32
|
+
committed: true;
|
|
33
|
+
leadId: string;
|
|
34
|
+
restartRequired: true;
|
|
35
|
+
restartNotice: string;
|
|
36
|
+
};
|
|
37
|
+
} | {
|
|
38
|
+
status: 200;
|
|
39
|
+
body: {
|
|
40
|
+
committed: false;
|
|
41
|
+
stage: "daemon-config";
|
|
42
|
+
fragment: string;
|
|
43
|
+
};
|
|
44
|
+
} | {
|
|
45
|
+
status: 400;
|
|
46
|
+
body: {
|
|
47
|
+
error: string;
|
|
48
|
+
};
|
|
49
|
+
} | {
|
|
50
|
+
status: 403 | 404 | 500 | 502;
|
|
51
|
+
body: {
|
|
52
|
+
error: string;
|
|
53
|
+
detail?: string;
|
|
54
|
+
};
|
|
55
|
+
} | {
|
|
56
|
+
status: 409;
|
|
57
|
+
body: {
|
|
58
|
+
error: "verdict_stale" | "org_chart_lead_exists" | "daemon_config_locked" | "org_chart_locked" | "verdict_not_ok";
|
|
59
|
+
findings?: unknown;
|
|
60
|
+
};
|
|
61
|
+
} | {
|
|
62
|
+
status: 503;
|
|
63
|
+
body: {
|
|
64
|
+
error: "leadwright_not_configured";
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
export declare function commitCore(deps: CommitCoreDeps, requestBody: unknown): Promise<CommitCoreResult>;
|
|
68
|
+
export interface CommitRouteDeps extends Omit<CommitCoreDeps, "readOrgChartFullFn" | "daemonConfigReadFn"> {
|
|
69
|
+
readOrgChartFullFn?: CommitCoreDeps["readOrgChartFullFn"];
|
|
70
|
+
daemonConfigReadFn?: CommitCoreDeps["daemonConfigReadFn"];
|
|
71
|
+
}
|
|
72
|
+
export declare function registerCommitRoute(app: Hono, deps: CommitRouteDeps): void;
|
|
73
|
+
//# sourceMappingURL=commit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["../../../src/external/org/commit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { readOrgChartFull } from "./org-chart-full-read.js";
|
|
3
|
+
import { daemonConfigReadCore } from "./daemon-config-read.js";
|
|
4
|
+
import { mergeLeadProposal, computeProposalDigest, canonicalStringify } from "./leadwright-proposal-merge.js";
|
|
5
|
+
import { writeNewCharterFile, writeDaemonConfigAddition, applyOrgChartLead } from "./commit-writes.js";
|
|
6
|
+
import { withOrgFileLock, OrgFileSymlinkEscapeError } from "./org-file-lock.js";
|
|
7
|
+
import { readExistingLeadCharters } from "./existing-charters-read.js";
|
|
8
|
+
import { runLeadwrightPreflight } from "../../core/leadwright-preflight-transport.js";
|
|
9
|
+
import { validateCommitBody } from "./commit-validate.js";
|
|
10
|
+
/** Not a dismissable toast — the client renders this string prominently and
|
|
11
|
+
* blocks the "done" state on it (W14: "restart the daemon" must be
|
|
12
|
+
* explicit, because daemon-config.json loads once at boot). */
|
|
13
|
+
export const RESTART_NOTICE = "leadwright's daemon reads daemon-config.json once at startup. This new lead will not run until you restart the leadwright daemon.";
|
|
14
|
+
export async function commitCore(deps, requestBody) {
|
|
15
|
+
if (!deps.leadwrightCheckoutRoot) {
|
|
16
|
+
return { status: 503, body: { error: "leadwright_not_configured" } };
|
|
17
|
+
}
|
|
18
|
+
const validated = validateCommitBody(requestBody);
|
|
19
|
+
if (!validated.ok) {
|
|
20
|
+
return { status: 400, body: { error: validated.reason } };
|
|
21
|
+
}
|
|
22
|
+
const { leadId, lead, daemonConfigAdditions, charterContent, expectedProposalDigest } = validated.value;
|
|
23
|
+
const orgChartResult = deps.readOrgChartFullFn({ leadsRoot: deps.leadsRoot });
|
|
24
|
+
if (orgChartResult.status !== 200)
|
|
25
|
+
return orgChartResult;
|
|
26
|
+
const daemonConfigResult = deps.daemonConfigReadFn({ leadsRoot: deps.leadsRoot, webuiBaseUrl: deps.webuiBaseUrl });
|
|
27
|
+
if (daemonConfigResult.status !== 200)
|
|
28
|
+
return daemonConfigResult;
|
|
29
|
+
const existingCharters = readExistingLeadCharters(deps.leadsRoot, orgChartResult.body, leadId, deps.readOrgFileFn);
|
|
30
|
+
const { proposal } = mergeLeadProposal({
|
|
31
|
+
orgChart: orgChartResult.body,
|
|
32
|
+
daemonConfig: daemonConfigResult.body,
|
|
33
|
+
leadId,
|
|
34
|
+
lead,
|
|
35
|
+
daemonConfigAdditions,
|
|
36
|
+
charterContent,
|
|
37
|
+
existingCharters,
|
|
38
|
+
});
|
|
39
|
+
const actualDigest = computeProposalDigest(proposal);
|
|
40
|
+
if (actualDigest !== expectedProposalDigest) {
|
|
41
|
+
return { status: 409, body: { error: "verdict_stale" } };
|
|
42
|
+
}
|
|
43
|
+
// External-review fix (openai, high — security): `expectedProposalDigest`
|
|
44
|
+
// is a PLAIN, unsigned SHA-256 of the proposal — proving nothing about
|
|
45
|
+
// WHETHER leadwright's actual verdict was green, only that the client's
|
|
46
|
+
// claimed digest matches what a fresh server-side merge produces for the
|
|
47
|
+
// SAME proposal shape. Any caller able to compute that same hash (no
|
|
48
|
+
// secret is involved) could submit a proposal with unsatisfied MUSS
|
|
49
|
+
// findings and have it accepted without ever running /verdict. The digest
|
|
50
|
+
// check above stays (it's still the right UX for "your answers changed
|
|
51
|
+
// since you last checked"); this re-runs leadwright's REAL check-setup.ts
|
|
52
|
+
// against the exact proposal about to be written, so the write can never
|
|
53
|
+
// happen without a genuinely fresh, server-observed green verdict.
|
|
54
|
+
const runPreflight = deps.runLeadwrightPreflightFn ?? runLeadwrightPreflight;
|
|
55
|
+
const reverify = await runPreflight(deps.leadwrightCheckoutRoot, proposal);
|
|
56
|
+
if (!reverify.ranOk) {
|
|
57
|
+
return { status: 502, body: { error: "leadwright_transport_failed", detail: reverify.reason } };
|
|
58
|
+
}
|
|
59
|
+
if (!reverify.result.ok) {
|
|
60
|
+
return { status: 409, body: { error: "verdict_not_ok", findings: reverify.result.findings } };
|
|
61
|
+
}
|
|
62
|
+
// Cheap fast-path (not the authoritative check — see below): a leadId
|
|
63
|
+
// collision visible on the PRE-LOCK snapshot lets an obvious duplicate
|
|
64
|
+
// 409 without ever touching the filesystem lock. mergeLeadProposal always
|
|
65
|
+
// overwrites orgChart.leads[leadId] with the submitted lead before
|
|
66
|
+
// hashing (so computeProposalDigest is identical whether or not that id
|
|
67
|
+
// already exists on disk) — the digest check above can never see this
|
|
68
|
+
// collision on its own.
|
|
69
|
+
const existingLead = orgChartResult.body.leads[leadId];
|
|
70
|
+
if (existingLead && canonicalStringify(existingLead) !== canonicalStringify(lead)) {
|
|
71
|
+
return { status: 409, body: { error: "org_chart_lead_exists" } };
|
|
72
|
+
}
|
|
73
|
+
// External-review fix (openai, high — "regression"): the fast-path check
|
|
74
|
+
// above reads a PRE-LOCK snapshot, so two genuinely concurrent commits
|
|
75
|
+
// for the SAME NEW leadId can both pass it, then both race past the
|
|
76
|
+
// unlocked charter.md write and the (once-)unconditional daemon-config
|
|
77
|
+
// merge before org-chart.json's own conflict check catches only one —
|
|
78
|
+
// the exact corruption shape the doubt-review fix closed for SEQUENTIAL
|
|
79
|
+
// resubmission, but not for true concurrency. The fix: hold ONE lock on
|
|
80
|
+
// org-chart.json (leadwright's activation source of truth) across the
|
|
81
|
+
// ENTIRE write sequence, with a FRESH re-read + re-check as the first
|
|
82
|
+
// thing inside it. A second racer simply cannot enter this critical
|
|
83
|
+
// section until the first's full commit (all three writes) has finished
|
|
84
|
+
// and released the lock — at which point its own fresh check correctly
|
|
85
|
+
// sees the collision and 409s before writing anything.
|
|
86
|
+
const withOrgFileLockFn = deps.withOrgFileLockFn ?? withOrgFileLock;
|
|
87
|
+
const orgChartTarget = path.join(deps.leadsRoot, "org-chart.json");
|
|
88
|
+
try {
|
|
89
|
+
return await withOrgFileLockFn(orgChartTarget, { mustExist: true }, async (ctx) => {
|
|
90
|
+
const freshOrgChart = JSON.parse(ctx.read());
|
|
91
|
+
const freshExisting = freshOrgChart.leads[leadId];
|
|
92
|
+
if (freshExisting && canonicalStringify(freshExisting) !== canonicalStringify(lead)) {
|
|
93
|
+
return { status: 409, body: { error: "org_chart_lead_exists" } };
|
|
94
|
+
}
|
|
95
|
+
const writeCharter = deps.writeCharterFn ?? writeNewCharterFile;
|
|
96
|
+
try {
|
|
97
|
+
writeCharter(deps.leadsRoot, leadId, charterContent);
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
if (err instanceof OrgFileSymlinkEscapeError) {
|
|
101
|
+
return { status: 403, body: { error: "symlink_forbidden", detail: err.path } };
|
|
102
|
+
}
|
|
103
|
+
throw err;
|
|
104
|
+
}
|
|
105
|
+
// Lock-contention error convention (CLAUDE.md rule 6 / DO-NOT #6),
|
|
106
|
+
// mirrored from beat-register-release-request.ts: a genuine
|
|
107
|
+
// cross-process lock conflict (proper-lockfile's ELOCKED, retries
|
|
108
|
+
// exhausted) maps to its OWN named 409 rather than falling through to
|
|
109
|
+
// the app-wide error handler's generic (and wrong-resource) message.
|
|
110
|
+
let daemonConfigWrite;
|
|
111
|
+
try {
|
|
112
|
+
daemonConfigWrite = await writeDaemonConfigAddition(deps.leadsRoot, leadId, daemonConfigAdditions, deps.withOrgFileLockFn);
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
if (err instanceof OrgFileSymlinkEscapeError) {
|
|
116
|
+
return { status: 403, body: { error: "symlink_forbidden", detail: err.path } };
|
|
117
|
+
}
|
|
118
|
+
if (err?.code === "ELOCKED") {
|
|
119
|
+
return { status: 409, body: { error: "daemon_config_locked" } };
|
|
120
|
+
}
|
|
121
|
+
throw err;
|
|
122
|
+
}
|
|
123
|
+
if (daemonConfigWrite.status === "missing") {
|
|
124
|
+
return {
|
|
125
|
+
status: 200,
|
|
126
|
+
body: { committed: false, stage: "daemon-config", fragment: daemonConfigWrite.fragment },
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
// Applies directly against the ALREADY-OPEN ctx from this same lock
|
|
130
|
+
// acquisition — never a second, nested lock() call on org-chart.json.
|
|
131
|
+
const applied = applyOrgChartLead(freshOrgChart, leadId, lead);
|
|
132
|
+
if (applied.status === "conflict") {
|
|
133
|
+
return { status: 409, body: { error: "org_chart_lead_exists" } };
|
|
134
|
+
}
|
|
135
|
+
if (applied.status === "written") {
|
|
136
|
+
ctx.write(JSON.stringify(applied.next, null, 2));
|
|
137
|
+
}
|
|
138
|
+
return {
|
|
139
|
+
status: 200,
|
|
140
|
+
body: { committed: true, leadId, restartRequired: true, restartNotice: RESTART_NOTICE },
|
|
141
|
+
};
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
if (err instanceof OrgFileSymlinkEscapeError) {
|
|
146
|
+
return { status: 403, body: { error: "symlink_forbidden", detail: err.path } };
|
|
147
|
+
}
|
|
148
|
+
if (err?.code === "ELOCKED") {
|
|
149
|
+
return { status: 409, body: { error: "org_chart_locked" } };
|
|
150
|
+
}
|
|
151
|
+
if (err?.code === "ENOENT") {
|
|
152
|
+
return { status: 404, body: { error: "org_chart_missing" } };
|
|
153
|
+
}
|
|
154
|
+
throw err;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
export function registerCommitRoute(app, deps) {
|
|
158
|
+
const coreDeps = {
|
|
159
|
+
leadsRoot: deps.leadsRoot,
|
|
160
|
+
leadwrightCheckoutRoot: deps.leadwrightCheckoutRoot,
|
|
161
|
+
webuiBaseUrl: deps.webuiBaseUrl,
|
|
162
|
+
readOrgChartFullFn: deps.readOrgChartFullFn ?? readOrgChartFull,
|
|
163
|
+
daemonConfigReadFn: deps.daemonConfigReadFn ?? daemonConfigReadCore,
|
|
164
|
+
withOrgFileLockFn: deps.withOrgFileLockFn,
|
|
165
|
+
writeCharterFn: deps.writeCharterFn,
|
|
166
|
+
readOrgFileFn: deps.readOrgFileFn,
|
|
167
|
+
runLeadwrightPreflightFn: deps.runLeadwrightPreflightFn,
|
|
168
|
+
};
|
|
169
|
+
app.post("/api/external/org/leads/commit", async (c) => {
|
|
170
|
+
let requestBody;
|
|
171
|
+
try {
|
|
172
|
+
requestBody = await c.req.json();
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
return c.json({ error: "invalid_request_body" }, 400);
|
|
176
|
+
}
|
|
177
|
+
const result = await commitCore(coreDeps, requestBody);
|
|
178
|
+
return c.json(result.body, result.status);
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=commit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit.js","sourceRoot":"","sources":["../../../src/external/org/commit.ts"],"names":[],"mappings":"AAmBA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAA+B,MAAM,0BAA0B,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAmC,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC9G,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,iBAAiB,EAA0B,MAAM,oBAAoB,CAAC;AAC/H,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAsB,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAA0B,MAAM,sBAAsB,CAAC;AAGlF;;gEAEgE;AAChE,MAAM,CAAC,MAAM,cAAc,GACzB,mIAAmI,CAAC;AA8BtI,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAoB,EAAE,WAAoB;IACzE,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACjC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,EAAE,CAAC;IACvE,CAAC;IAED,MAAM,SAAS,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAClD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;IAC5D,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,cAAc,EAAE,sBAAsB,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;IAExG,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9E,IAAI,cAAc,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,cAAc,CAAC;IAEzD,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACnH,IAAI,kBAAkB,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,kBAAkB,CAAC;IAEjE,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACnH,MAAM,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC;QACrC,QAAQ,EAAE,cAAc,CAAC,IAAI;QAC7B,YAAY,EAAE,kBAAkB,CAAC,IAAI;QACrC,MAAM;QACN,IAAI;QACJ,qBAAqB;QACrB,cAAc;QACd,gBAAgB;KACjB,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,YAAY,KAAK,sBAAsB,EAAE,CAAC;QAC5C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC;IAC3D,CAAC;IAED,0EAA0E;IAC1E,uEAAuE;IACvE,wEAAwE;IACxE,yEAAyE;IACzE,qEAAqE;IACrE,oEAAoE;IACpE,0EAA0E;IAC1E,uEAAuE;IACvE,0EAA0E;IAC1E,yEAAyE;IACzE,mEAAmE;IACnE,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,IAAI,sBAAsB,CAAC;IAC7E,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;IAC3E,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;IAClG,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACxB,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;IAChG,CAAC;IAED,sEAAsE;IACtE,uEAAuE;IACvE,0EAA0E;IAC1E,mEAAmE;IACnE,wEAAwE;IACxE,sEAAsE;IACtE,wBAAwB;IACxB,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,YAAY,IAAI,kBAAkB,CAAC,YAAY,CAAC,KAAK,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAClF,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,CAAC;IACnE,CAAC;IAED,yEAAyE;IACzE,uEAAuE;IACvE,oEAAoE;IACpE,uEAAuE;IACvE,sEAAsE;IACtE,wEAAwE;IACxE,wEAAwE;IACxE,sEAAsE;IACtE,sEAAsE;IACtE,oEAAoE;IACpE,wEAAwE;IACxE,uEAAuE;IACvE,uDAAuD;IACvD,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,eAAe,CAAC;IACpE,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACnE,IAAI,CAAC;QACH,OAAO,MAAM,iBAAiB,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAChF,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAsB,CAAC;YAClE,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,aAAa,IAAI,kBAAkB,CAAC,aAAa,CAAC,KAAK,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpF,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAW,CAAC;YAC5E,CAAC;YAED,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,IAAI,mBAAmB,CAAC;YAChE,IAAI,CAAC;gBACH,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;YACvD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,yBAAyB,EAAE,CAAC;oBAC7C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,EAAW,CAAC;gBAC1F,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;YAED,mEAAmE;YACnE,4DAA4D;YAC5D,kEAAkE;YAClE,sEAAsE;YACtE,qEAAqE;YACrE,IAAI,iBAAiB,CAAC;YACtB,IAAI,CAAC;gBACH,iBAAiB,GAAG,MAAM,yBAAyB,CACjD,IAAI,CAAC,SAAS,EACd,MAAM,EACN,qBAAqB,EACrB,IAAI,CAAC,iBAAiB,CACvB,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,yBAAyB,EAAE,CAAC;oBAC7C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,EAAW,CAAC;gBAC1F,CAAC;gBACD,IAAK,GAA6B,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAW,CAAC;gBAC3E,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;YACD,IAAI,iBAAiB,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC3C,OAAO;oBACL,MAAM,EAAE,GAAG;oBACX,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE;iBAChF,CAAC;YACb,CAAC;YAED,oEAAoE;YACpE,sEAAsE;YACtE,MAAM,OAAO,GAAG,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAC/D,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAClC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAW,CAAC;YAC5E,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACnD,CAAC;YAED,OAAO;gBACL,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE;aAC/E,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,yBAAyB,EAAE,CAAC;YAC7C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QACjF,CAAC;QACD,IAAK,GAA6B,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;YACvD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,CAAC;QAC9D,CAAC;QACD,IAAK,GAA6B,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,CAAC;QAC/D,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAOD,MAAM,UAAU,mBAAmB,CAAC,GAAS,EAAE,IAAqB;IAClE,MAAM,QAAQ,GAAmB;QAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;QACnD,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,gBAAgB;QAC/D,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,oBAAoB;QACnE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;KACxD,CAAC;IACF,GAAG,CAAC,IAAI,CAAC,gCAAgC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACrD,IAAI,WAAoB,CAAC;QACzB,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACvD,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { CommitCoreDeps } from "./commit.js";
|
|
2
|
+
import type { CommitRequestBody } from "./commit-validate.js";
|
|
3
|
+
import type { PreflightOrgChart } from "../../types/leadwright-preflight.js";
|
|
4
|
+
export declare const EMPTY_ORG_CHART: PreflightOrgChart;
|
|
5
|
+
export declare const VALID_LEAD: {
|
|
6
|
+
name: string;
|
|
7
|
+
domain: string;
|
|
8
|
+
reports_to: null;
|
|
9
|
+
manages: never[];
|
|
10
|
+
charter_path: string;
|
|
11
|
+
learnings_path: string;
|
|
12
|
+
triggers: {
|
|
13
|
+
cron: string;
|
|
14
|
+
on: never[];
|
|
15
|
+
};
|
|
16
|
+
max_concurrent_tasks: number;
|
|
17
|
+
budget: {
|
|
18
|
+
window: "rolling-7d";
|
|
19
|
+
usd: null;
|
|
20
|
+
pause_at: number;
|
|
21
|
+
hard_stop_at: number;
|
|
22
|
+
};
|
|
23
|
+
projects: string[];
|
|
24
|
+
allowed_skills: string[];
|
|
25
|
+
allowed_tools: never[];
|
|
26
|
+
escalation_target: string;
|
|
27
|
+
model: "balanced";
|
|
28
|
+
paused: false;
|
|
29
|
+
};
|
|
30
|
+
export declare const ADDITIONS: {
|
|
31
|
+
path: string;
|
|
32
|
+
actionId: string;
|
|
33
|
+
pluginDirs: string[];
|
|
34
|
+
};
|
|
35
|
+
export declare function correctDigest(): string;
|
|
36
|
+
export declare function validBody(overrides?: Partial<CommitRequestBody>): CommitRequestBody;
|
|
37
|
+
export declare function baseDeps(overrides?: Partial<CommitCoreDeps>): CommitCoreDeps;
|
|
38
|
+
//# sourceMappingURL=commit.test-fixtures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commit.test-fixtures.d.ts","sourceRoot":"","sources":["../../../src/external/org/commit.test-fixtures.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,KAAK,EAAiB,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAE5F,eAAO,MAAM,eAAe,EAAE,iBAAyD,CAAC;AAExF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;CAgBE,CAAC;AAE1B,eAAO,MAAM,SAAS;;;;CAAoE,CAAC;AAE3F,wBAAgB,aAAa,IAAI,MAAM,CAatC;AAED,wBAAgB,SAAS,CAAC,SAAS,GAAE,OAAO,CAAC,iBAAiB,CAAM,GAAG,iBAAiB,CASvF;AAED,wBAAgB,QAAQ,CAAC,SAAS,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,cAAc,CAchF"}
|