@svenroth-ai/shipwright 0.24.1-next.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/LICENSE +21 -0
- package/README.md +55 -0
- package/bin/shipwright.mjs +187 -0
- package/client/dist/assets/EmbeddedTerminal-6GBZ9nXN.css +32 -0
- package/client/dist/assets/EmbeddedTerminal-CpeDvtzx.js +123 -0
- package/client/dist/assets/MarkdownEditorModal-Di9HN39z.js +212 -0
- package/client/dist/assets/abnfDiagram-VRR7QNED-BbSdq0X7.js +1 -0
- package/client/dist/assets/arc-BZT7vKjm.js +1 -0
- package/client/dist/assets/architectureDiagram-ZJ3FMSHR-BuRwoNgV.js +36 -0
- package/client/dist/assets/blockDiagram-677ZJIJ3-B2RNYWcr.js +132 -0
- package/client/dist/assets/c4Diagram-LMCZKHZV-fbXlt08K.js +10 -0
- package/client/dist/assets/channel-2-wkFEKK.js +1 -0
- package/client/dist/assets/chunk-2Q5K7J3B-NqMRUe5-.js +1 -0
- package/client/dist/assets/chunk-32BRIVSS-CIr9bFCd.js +1 -0
- package/client/dist/assets/chunk-5VM5RSS4-l0I6rbZN.js +15 -0
- package/client/dist/assets/chunk-EX3LRPZG-DXinoCxp.js +231 -0
- package/client/dist/assets/chunk-JWPE2WC7-BAcCano9.js +1 -0
- package/client/dist/assets/chunk-MOJQB5TN-DMVOqL7C.js +88 -0
- package/client/dist/assets/chunk-RYQCIY6F-CtNSAItH.js +1 -0
- package/client/dist/assets/chunk-V7JOEXUC-CufSmC93.js +206 -0
- package/client/dist/assets/chunk-VR4S4FIN-_BbUF9fa.js +1 -0
- package/client/dist/assets/chunk-XXDRQBXY-uQ35hUPB.js +1 -0
- package/client/dist/assets/classDiagram-OUVF2IWQ-A9SpDakb.js +1 -0
- package/client/dist/assets/classDiagram-v2-EOCWNBFH-A9SpDakb.js +1 -0
- package/client/dist/assets/cose-bilkent-JH36ORCC-B9q9uYCX.js +1 -0
- package/client/dist/assets/cynefin-VYW2F7L2-C2_bJyZA.js +178 -0
- package/client/dist/assets/cynefinDiagram-TSTJHNR4-0mzVmPv4.js +62 -0
- package/client/dist/assets/cytoscape.esm-DTSO7Bv0.js +331 -0
- package/client/dist/assets/dagre-VKFMJZFB-CIE9HMtr.js +4 -0
- package/client/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/client/dist/assets/diagram-FQU43EPY-DdkBaZrX.js +3 -0
- package/client/dist/assets/diagram-G47NLZAW-Cql4k2sg.js +24 -0
- package/client/dist/assets/diagram-NH7WQ7WH-FRAUyqEu.js +24 -0
- package/client/dist/assets/diagram-OA4YK3LP-DXo8GTB8.js +30 -0
- package/client/dist/assets/diagram-WEI45ONY-DqVtWGdt.js +41 -0
- package/client/dist/assets/ebnfDiagram-CCIWWBDH-B0La0RsO.js +1 -0
- package/client/dist/assets/erDiagram-Q63AITRT-DHbbqiY9.js +85 -0
- package/client/dist/assets/flowDiagram-23GEKE2U-I6vhJlCk.js +156 -0
- package/client/dist/assets/ganttDiagram-NO4QXBWP-CDYZHcsU.js +292 -0
- package/client/dist/assets/geist-mono-cyrillic-ext-wght-normal-I4S5GZfc.woff2 +0 -0
- package/client/dist/assets/geist-mono-cyrillic-wght-normal-BmXc_FBt.woff2 +0 -0
- package/client/dist/assets/geist-mono-latin-ext-wght-normal-DrnZ1wKl.woff2 +0 -0
- package/client/dist/assets/geist-mono-latin-wght-normal-B_7UjwxQ.woff2 +0 -0
- package/client/dist/assets/geist-mono-symbols2-wght-normal-GZpp1pK2.woff2 +0 -0
- package/client/dist/assets/geist-mono-vietnamese-wght-normal-D8KDMBhC.woff2 +0 -0
- package/client/dist/assets/gitGraphDiagram-IHSO6WYX-dyf7caP8.js +106 -0
- package/client/dist/assets/graph-C9eacEi8.js +1 -0
- package/client/dist/assets/index-BYrVLOXw.js +609 -0
- package/client/dist/assets/index-BZvZ9izZ.css +1 -0
- package/client/dist/assets/infoDiagram-FWYZ7A6U-BlWH6vM3.js +2 -0
- package/client/dist/assets/init-Gi6I4Gst.js +1 -0
- package/client/dist/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- package/client/dist/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- package/client/dist/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- package/client/dist/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- package/client/dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- package/client/dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- package/client/dist/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- package/client/dist/assets/ishikawaDiagram-FXEZZL3T-BEKH-_6E.js +70 -0
- package/client/dist/assets/journeyDiagram-5HDEW3XC-cn_mQ2U9.js +139 -0
- package/client/dist/assets/kanban-definition-HUTT4EX6-DGZiYhYV.js +89 -0
- package/client/dist/assets/katex-DkKDou_j.js +257 -0
- package/client/dist/assets/layout-DEXfKzaS.js +1 -0
- package/client/dist/assets/linear-CdtYl6qR.js +1 -0
- package/client/dist/assets/map-Czzmt4hB.js +1 -0
- package/client/dist/assets/mermaid.core-CrKi1642.js +314 -0
- package/client/dist/assets/mindmap-definition-LN4V7U3C-G_CA7V9L.js +96 -0
- package/client/dist/assets/ordinal-Cboi1Yqb.js +1 -0
- package/client/dist/assets/pegDiagram-2B236MQR-6ZeO9kDM.js +1 -0
- package/client/dist/assets/pieDiagram-ENE6RG2P-Bd0InZSQ.js +39 -0
- package/client/dist/assets/quadrantDiagram-ABIIQ3AL-Bg1m9Csn.js +7 -0
- package/client/dist/assets/railroadDiagram-RFXS5EU6-CCzPP1JU.js +1 -0
- package/client/dist/assets/requirementDiagram-TGXJPOKE-iN7kyPgM.js +84 -0
- package/client/dist/assets/sankeyDiagram-HTMAVEWB-DN1v_DUJ.js +40 -0
- package/client/dist/assets/sequenceDiagram-DBY2YBRQ-C5LMp5Sa.js +162 -0
- package/client/dist/assets/sizeCapture-X5ZJPWSS-Bp9jVLhL.js +1 -0
- package/client/dist/assets/stateDiagram-2N3HPSRC-VbWBetTf.js +1 -0
- package/client/dist/assets/stateDiagram-v2-6OUMAXLB-BuaUtNAG.js +1 -0
- package/client/dist/assets/swimlanes-5IMT3BWC-CrXokvQ-.js +2 -0
- package/client/dist/assets/swimlanesDiagram-G3AALYLV-C6hwc993.js +8 -0
- package/client/dist/assets/timeline-definition-FHXFAJF6-Cxx1NT9A.js +120 -0
- package/client/dist/assets/vennDiagram-L72KCM5P-C6DBgaEy.js +34 -0
- package/client/dist/assets/wardleyDiagram-EHGQE667-RV7xMg8g.js +78 -0
- package/client/dist/assets/xychartDiagram-FW5EYKEG-Llhe9pB1.js +7 -0
- package/client/dist/backdrops/deck-golden.jpg +0 -0
- package/client/dist/backdrops/lighthouse.jpg +0 -0
- package/client/dist/index.html +27 -0
- package/client/dist/shipwright-logo-white.png +0 -0
- package/lib/cache-runtime.mjs +72 -0
- package/lib/cache-sync.mjs +243 -0
- package/lib/claude-cli.mjs +173 -0
- package/lib/plugins.mjs +181 -0
- package/lib/preflight.mjs +208 -0
- package/lib/probes.mjs +53 -0
- package/lib/server.mjs +315 -0
- package/lib/util.mjs +83 -0
- package/lib/version-check.mjs +76 -0
- package/lib/win32-spawn.mjs +253 -0
- package/package.json +67 -0
- package/scripts/deploy-procs.mjs +208 -0
- package/scripts/deploy-swap.mjs +276 -0
- package/scripts/kill-targets.js +140 -0
- package/scripts/repair-claude-json.mjs +295 -0
- package/server/dist/config/default-actions.json +90 -0
- package/server/dist/config.d.ts +96 -0
- package/server/dist/config.d.ts.map +1 -0
- package/server/dist/config.js +68 -0
- package/server/dist/config.js.map +1 -0
- package/server/dist/core/actions-schema-validator.d.ts +8 -0
- package/server/dist/core/actions-schema-validator.d.ts.map +1 -0
- package/server/dist/core/actions-schema-validator.js +394 -0
- package/server/dist/core/actions-schema-validator.js.map +1 -0
- package/server/dist/core/actions-substitute.d.ts +115 -0
- package/server/dist/core/actions-substitute.d.ts.map +1 -0
- package/server/dist/core/actions-substitute.js +549 -0
- package/server/dist/core/actions-substitute.js.map +1 -0
- package/server/dist/core/board-column.d.ts +3 -0
- package/server/dist/core/board-column.d.ts.map +1 -0
- package/server/dist/core/board-column.js +4 -0
- package/server/dist/core/board-column.js.map +1 -0
- package/server/dist/core/campaign-events.d.ts +39 -0
- package/server/dist/core/campaign-events.d.ts.map +1 -0
- package/server/dist/core/campaign-events.js +192 -0
- package/server/dist/core/campaign-events.js.map +1 -0
- package/server/dist/core/campaign-loop-state.d.ts +31 -0
- package/server/dist/core/campaign-loop-state.d.ts.map +1 -0
- package/server/dist/core/campaign-loop-state.js +124 -0
- package/server/dist/core/campaign-loop-state.js.map +1 -0
- package/server/dist/core/campaign-parse.d.ts +28 -0
- package/server/dist/core/campaign-parse.d.ts.map +1 -0
- package/server/dist/core/campaign-parse.js +174 -0
- package/server/dist/core/campaign-parse.js.map +1 -0
- package/server/dist/core/campaign-paths.d.ts +24 -0
- package/server/dist/core/campaign-paths.d.ts.map +1 -0
- package/server/dist/core/campaign-paths.js +111 -0
- package/server/dist/core/campaign-paths.js.map +1 -0
- package/server/dist/core/campaign-route-helpers.d.ts +19 -0
- package/server/dist/core/campaign-route-helpers.d.ts.map +1 -0
- package/server/dist/core/campaign-route-helpers.js +51 -0
- package/server/dist/core/campaign-route-helpers.js.map +1 -0
- package/server/dist/core/campaign-status-json.d.ts +55 -0
- package/server/dist/core/campaign-status-json.d.ts.map +1 -0
- package/server/dist/core/campaign-status-json.js +57 -0
- package/server/dist/core/campaign-status-json.js.map +1 -0
- package/server/dist/core/campaign-store.d.ts +10 -0
- package/server/dist/core/campaign-store.d.ts.map +1 -0
- package/server/dist/core/campaign-store.js +245 -0
- package/server/dist/core/campaign-store.js.map +1 -0
- package/server/dist/core/campaign-types.d.ts +101 -0
- package/server/dist/core/campaign-types.d.ts.map +1 -0
- package/server/dist/core/campaign-types.js +10 -0
- package/server/dist/core/campaign-types.js.map +1 -0
- package/server/dist/core/campaign-write.d.ts +13 -0
- package/server/dist/core/campaign-write.d.ts.map +1 -0
- package/server/dist/core/campaign-write.js +128 -0
- package/server/dist/core/campaign-write.js.map +1 -0
- package/server/dist/core/cascade-delete-project-tasks.d.ts +14 -0
- package/server/dist/core/cascade-delete-project-tasks.d.ts.map +1 -0
- package/server/dist/core/cascade-delete-project-tasks.js +68 -0
- package/server/dist/core/cascade-delete-project-tasks.js.map +1 -0
- package/server/dist/core/claude-bin-resolver.d.ts +62 -0
- package/server/dist/core/claude-bin-resolver.d.ts.map +1 -0
- package/server/dist/core/claude-bin-resolver.js +208 -0
- package/server/dist/core/claude-bin-resolver.js.map +1 -0
- package/server/dist/core/claude-theme-reader.d.ts +15 -0
- package/server/dist/core/claude-theme-reader.d.ts.map +1 -0
- package/server/dist/core/claude-theme-reader.js +52 -0
- package/server/dist/core/claude-theme-reader.js.map +1 -0
- package/server/dist/core/cli-compat.d.ts +43 -0
- package/server/dist/core/cli-compat.d.ts.map +1 -0
- package/server/dist/core/cli-compat.js +88 -0
- package/server/dist/core/cli-compat.js.map +1 -0
- package/server/dist/core/compliance-dimensions.d.ts +20 -0
- package/server/dist/core/compliance-dimensions.d.ts.map +1 -0
- package/server/dist/core/compliance-dimensions.js +114 -0
- package/server/dist/core/compliance-dimensions.js.map +1 -0
- package/server/dist/core/compliance-reader.d.ts +49 -0
- package/server/dist/core/compliance-reader.d.ts.map +1 -0
- package/server/dist/core/compliance-reader.js +147 -0
- package/server/dist/core/compliance-reader.js.map +1 -0
- package/server/dist/core/contract-version.d.ts +72 -0
- package/server/dist/core/contract-version.d.ts.map +1 -0
- package/server/dist/core/contract-version.js +114 -0
- package/server/dist/core/contract-version.js.map +1 -0
- package/server/dist/core/design-feedback.d.ts +29 -0
- package/server/dist/core/design-feedback.d.ts.map +1 -0
- package/server/dist/core/design-feedback.js +80 -0
- package/server/dist/core/design-feedback.js.map +1 -0
- package/server/dist/core/dismissed-campaigns-store.d.ts +45 -0
- package/server/dist/core/dismissed-campaigns-store.d.ts.map +1 -0
- package/server/dist/core/dismissed-campaigns-store.js +147 -0
- package/server/dist/core/dismissed-campaigns-store.js.map +1 -0
- package/server/dist/core/event-log-reader.d.ts +19 -0
- package/server/dist/core/event-log-reader.d.ts.map +1 -0
- package/server/dist/core/event-log-reader.js +209 -0
- package/server/dist/core/event-log-reader.js.map +1 -0
- package/server/dist/core/event-log-types.d.ts +99 -0
- package/server/dist/core/event-log-types.d.ts.map +1 -0
- package/server/dist/core/event-log-types.js +14 -0
- package/server/dist/core/event-log-types.js.map +1 -0
- package/server/dist/core/gitignore-cache.d.ts +16 -0
- package/server/dist/core/gitignore-cache.d.ts.map +1 -0
- package/server/dist/core/gitignore-cache.js +103 -0
- package/server/dist/core/gitignore-cache.js.map +1 -0
- package/server/dist/core/grade-runner.d.ts +63 -0
- package/server/dist/core/grade-runner.d.ts.map +1 -0
- package/server/dist/core/grade-runner.js +176 -0
- package/server/dist/core/grade-runner.js.map +1 -0
- package/server/dist/core/grade-target.d.ts +43 -0
- package/server/dist/core/grade-target.d.ts.map +1 -0
- package/server/dist/core/grade-target.js +162 -0
- package/server/dist/core/grade-target.js.map +1 -0
- package/server/dist/core/inbox-derive.d.ts +56 -0
- package/server/dist/core/inbox-derive.d.ts.map +1 -0
- package/server/dist/core/inbox-derive.js +211 -0
- package/server/dist/core/inbox-derive.js.map +1 -0
- package/server/dist/core/jsonl-decode.d.ts +28 -0
- package/server/dist/core/jsonl-decode.d.ts.map +1 -0
- package/server/dist/core/jsonl-decode.js +96 -0
- package/server/dist/core/jsonl-decode.js.map +1 -0
- package/server/dist/core/jsonl-records.d.ts +104 -0
- package/server/dist/core/jsonl-records.d.ts.map +1 -0
- package/server/dist/core/jsonl-records.js +222 -0
- package/server/dist/core/jsonl-records.js.map +1 -0
- package/server/dist/core/launcher.d.ts +74 -0
- package/server/dist/core/launcher.d.ts.map +1 -0
- package/server/dist/core/launcher.js +192 -0
- package/server/dist/core/launcher.js.map +1 -0
- package/server/dist/core/mission-context/artifacts-commit.d.ts +28 -0
- package/server/dist/core/mission-context/artifacts-commit.d.ts.map +1 -0
- package/server/dist/core/mission-context/artifacts-commit.js +98 -0
- package/server/dist/core/mission-context/artifacts-commit.js.map +1 -0
- package/server/dist/core/mission-context/artifacts-decisions.d.ts +5 -0
- package/server/dist/core/mission-context/artifacts-decisions.d.ts.map +1 -0
- package/server/dist/core/mission-context/artifacts-decisions.js +114 -0
- package/server/dist/core/mission-context/artifacts-decisions.js.map +1 -0
- package/server/dist/core/mission-context/artifacts-slice2.d.ts +12 -0
- package/server/dist/core/mission-context/artifacts-slice2.d.ts.map +1 -0
- package/server/dist/core/mission-context/artifacts-slice2.js +125 -0
- package/server/dist/core/mission-context/artifacts-slice2.js.map +1 -0
- package/server/dist/core/mission-context/artifacts-tests.d.ts +34 -0
- package/server/dist/core/mission-context/artifacts-tests.d.ts.map +1 -0
- package/server/dist/core/mission-context/artifacts-tests.js +236 -0
- package/server/dist/core/mission-context/artifacts-tests.js.map +1 -0
- package/server/dist/core/mission-context/artifacts.d.ts +33 -0
- package/server/dist/core/mission-context/artifacts.d.ts.map +1 -0
- package/server/dist/core/mission-context/artifacts.js +186 -0
- package/server/dist/core/mission-context/artifacts.js.map +1 -0
- package/server/dist/core/mission-context/association.d.ts +27 -0
- package/server/dist/core/mission-context/association.d.ts.map +1 -0
- package/server/dist/core/mission-context/association.js +69 -0
- package/server/dist/core/mission-context/association.js.map +1 -0
- package/server/dist/core/mission-context/campaign-artifacts.d.ts +9 -0
- package/server/dist/core/mission-context/campaign-artifacts.d.ts.map +1 -0
- package/server/dist/core/mission-context/campaign-artifacts.js +195 -0
- package/server/dist/core/mission-context/campaign-artifacts.js.map +1 -0
- package/server/dist/core/mission-context/campaign-facts.d.ts +99 -0
- package/server/dist/core/mission-context/campaign-facts.d.ts.map +1 -0
- package/server/dist/core/mission-context/campaign-facts.js +111 -0
- package/server/dist/core/mission-context/campaign-facts.js.map +1 -0
- package/server/dist/core/mission-context/decision-drops.d.ts +46 -0
- package/server/dist/core/mission-context/decision-drops.d.ts.map +1 -0
- package/server/dist/core/mission-context/decision-drops.js +269 -0
- package/server/dist/core/mission-context/decision-drops.js.map +1 -0
- package/server/dist/core/mission-context/decisions.d.ts +91 -0
- package/server/dist/core/mission-context/decisions.d.ts.map +1 -0
- package/server/dist/core/mission-context/decisions.js +222 -0
- package/server/dist/core/mission-context/decisions.js.map +1 -0
- package/server/dist/core/mission-context/doc-ids.d.ts +35 -0
- package/server/dist/core/mission-context/doc-ids.d.ts.map +1 -0
- package/server/dist/core/mission-context/doc-ids.js +78 -0
- package/server/dist/core/mission-context/doc-ids.js.map +1 -0
- package/server/dist/core/mission-context/document-read.d.ts +14 -0
- package/server/dist/core/mission-context/document-read.d.ts.map +1 -0
- package/server/dist/core/mission-context/document-read.js +36 -0
- package/server/dist/core/mission-context/document-read.js.map +1 -0
- package/server/dist/core/mission-context/fold-map.d.ts +45 -0
- package/server/dist/core/mission-context/fold-map.d.ts.map +1 -0
- package/server/dist/core/mission-context/fold-map.js +168 -0
- package/server/dist/core/mission-context/fold-map.js.map +1 -0
- package/server/dist/core/mission-context/fs-read.d.ts +47 -0
- package/server/dist/core/mission-context/fs-read.d.ts.map +1 -0
- package/server/dist/core/mission-context/fs-read.js +104 -0
- package/server/dist/core/mission-context/fs-read.js.map +1 -0
- package/server/dist/core/mission-context/iterate-record.d.ts +52 -0
- package/server/dist/core/mission-context/iterate-record.d.ts.map +1 -0
- package/server/dist/core/mission-context/iterate-record.js +156 -0
- package/server/dist/core/mission-context/iterate-record.js.map +1 -0
- package/server/dist/core/mission-context/merge-check.d.ts +60 -0
- package/server/dist/core/mission-context/merge-check.d.ts.map +1 -0
- package/server/dist/core/mission-context/merge-check.js +217 -0
- package/server/dist/core/mission-context/merge-check.js.map +1 -0
- package/server/dist/core/mission-context/merge-refresh.d.ts +14 -0
- package/server/dist/core/mission-context/merge-refresh.d.ts.map +1 -0
- package/server/dist/core/mission-context/merge-refresh.js +53 -0
- package/server/dist/core/mission-context/merge-refresh.js.map +1 -0
- package/server/dist/core/mission-context/merged-events.d.ts +34 -0
- package/server/dist/core/mission-context/merged-events.d.ts.map +1 -0
- package/server/dist/core/mission-context/merged-events.js +120 -0
- package/server/dist/core/mission-context/merged-events.js.map +1 -0
- package/server/dist/core/mission-context/pipeline-artifacts.d.ts +53 -0
- package/server/dist/core/mission-context/pipeline-artifacts.d.ts.map +1 -0
- package/server/dist/core/mission-context/pipeline-artifacts.js +161 -0
- package/server/dist/core/mission-context/pipeline-artifacts.js.map +1 -0
- package/server/dist/core/mission-context/planned-impact.d.ts +28 -0
- package/server/dist/core/mission-context/planned-impact.d.ts.map +1 -0
- package/server/dist/core/mission-context/planned-impact.js +129 -0
- package/server/dist/core/mission-context/planned-impact.js.map +1 -0
- package/server/dist/core/mission-context/pointer.d.ts +44 -0
- package/server/dist/core/mission-context/pointer.d.ts.map +1 -0
- package/server/dist/core/mission-context/pointer.js +165 -0
- package/server/dist/core/mission-context/pointer.js.map +1 -0
- package/server/dist/core/mission-context/resolver-io.d.ts +47 -0
- package/server/dist/core/mission-context/resolver-io.d.ts.map +1 -0
- package/server/dist/core/mission-context/resolver-io.js +11 -0
- package/server/dist/core/mission-context/resolver-io.js.map +1 -0
- package/server/dist/core/mission-context/resolver-parts.d.ts +57 -0
- package/server/dist/core/mission-context/resolver-parts.d.ts.map +1 -0
- package/server/dist/core/mission-context/resolver-parts.js +136 -0
- package/server/dist/core/mission-context/resolver-parts.js.map +1 -0
- package/server/dist/core/mission-context/resolver.d.ts +11 -0
- package/server/dist/core/mission-context/resolver.d.ts.map +1 -0
- package/server/dist/core/mission-context/resolver.js +261 -0
- package/server/dist/core/mission-context/resolver.js.map +1 -0
- package/server/dist/core/mission-context/review-record-entry.d.ts +45 -0
- package/server/dist/core/mission-context/review-record-entry.d.ts.map +1 -0
- package/server/dist/core/mission-context/review-record-entry.js +214 -0
- package/server/dist/core/mission-context/review-record-entry.js.map +1 -0
- package/server/dist/core/mission-context/review-record.d.ts +35 -0
- package/server/dist/core/mission-context/review-record.d.ts.map +1 -0
- package/server/dist/core/mission-context/review-record.js +259 -0
- package/server/dist/core/mission-context/review-record.js.map +1 -0
- package/server/dist/core/mission-context/review-state.d.ts +33 -0
- package/server/dist/core/mission-context/review-state.d.ts.map +1 -0
- package/server/dist/core/mission-context/review-state.js +249 -0
- package/server/dist/core/mission-context/review-state.js.map +1 -0
- package/server/dist/core/mission-context/run-id-recovery.d.ts +44 -0
- package/server/dist/core/mission-context/run-id-recovery.d.ts.map +1 -0
- package/server/dist/core/mission-context/run-id-recovery.js +175 -0
- package/server/dist/core/mission-context/run-id-recovery.js.map +1 -0
- package/server/dist/core/mission-context/scenario.d.ts +121 -0
- package/server/dist/core/mission-context/scenario.d.ts.map +1 -0
- package/server/dist/core/mission-context/scenario.js +151 -0
- package/server/dist/core/mission-context/scenario.js.map +1 -0
- package/server/dist/core/mission-context/slice2-sources.d.ts +40 -0
- package/server/dist/core/mission-context/slice2-sources.d.ts.map +1 -0
- package/server/dist/core/mission-context/slice2-sources.js +80 -0
- package/server/dist/core/mission-context/slice2-sources.js.map +1 -0
- package/server/dist/core/mission-context/slice2-test-fixtures.d.ts +17 -0
- package/server/dist/core/mission-context/slice2-test-fixtures.d.ts.map +1 -0
- package/server/dist/core/mission-context/slice2-test-fixtures.js +61 -0
- package/server/dist/core/mission-context/slice2-test-fixtures.js.map +1 -0
- package/server/dist/core/mission-context/slice3-sources.d.ts +43 -0
- package/server/dist/core/mission-context/slice3-sources.d.ts.map +1 -0
- package/server/dist/core/mission-context/slice3-sources.js +192 -0
- package/server/dist/core/mission-context/slice3-sources.js.map +1 -0
- package/server/dist/core/mission-context/spec-candidates.d.ts +66 -0
- package/server/dist/core/mission-context/spec-candidates.d.ts.map +1 -0
- package/server/dist/core/mission-context/spec-candidates.js +164 -0
- package/server/dist/core/mission-context/spec-candidates.js.map +1 -0
- package/server/dist/core/mission-context/test-evidence.d.ts +14 -0
- package/server/dist/core/mission-context/test-evidence.d.ts.map +1 -0
- package/server/dist/core/mission-context/test-evidence.js +53 -0
- package/server/dist/core/mission-context/test-evidence.js.map +1 -0
- package/server/dist/core/mission-context/tests-diff.d.ts +68 -0
- package/server/dist/core/mission-context/tests-diff.d.ts.map +1 -0
- package/server/dist/core/mission-context/tests-diff.js +151 -0
- package/server/dist/core/mission-context/tests-diff.js.map +1 -0
- package/server/dist/core/mission-context/traceability.d.ts +58 -0
- package/server/dist/core/mission-context/traceability.d.ts.map +1 -0
- package/server/dist/core/mission-context/traceability.js +168 -0
- package/server/dist/core/mission-context/traceability.js.map +1 -0
- package/server/dist/core/mission-context/types-slice2.d.ts +192 -0
- package/server/dist/core/mission-context/types-slice2.d.ts.map +1 -0
- package/server/dist/core/mission-context/types-slice2.js +15 -0
- package/server/dist/core/mission-context/types-slice2.js.map +1 -0
- package/server/dist/core/mission-context/types-slice3.d.ts +84 -0
- package/server/dist/core/mission-context/types-slice3.d.ts.map +1 -0
- package/server/dist/core/mission-context/types-slice3.js +24 -0
- package/server/dist/core/mission-context/types-slice3.js.map +1 -0
- package/server/dist/core/mission-context/types.d.ts +198 -0
- package/server/dist/core/mission-context/types.d.ts.map +1 -0
- package/server/dist/core/mission-context/types.js +44 -0
- package/server/dist/core/mission-context/types.js.map +1 -0
- package/server/dist/core/mission-context/worktree-roots.d.ts +103 -0
- package/server/dist/core/mission-context/worktree-roots.d.ts.map +1 -0
- package/server/dist/core/mission-context/worktree-roots.js +201 -0
- package/server/dist/core/mission-context/worktree-roots.js.map +1 -0
- package/server/dist/core/model-tier-config-reader.d.ts +16 -0
- package/server/dist/core/model-tier-config-reader.d.ts.map +1 -0
- package/server/dist/core/model-tier-config-reader.js +87 -0
- package/server/dist/core/model-tier-config-reader.js.map +1 -0
- package/server/dist/core/normalize-fs-path.d.ts +2 -0
- package/server/dist/core/normalize-fs-path.d.ts.map +1 -0
- package/server/dist/core/normalize-fs-path.js +31 -0
- package/server/dist/core/normalize-fs-path.js.map +1 -0
- package/server/dist/core/parameter-resolver.d.ts +32 -0
- package/server/dist/core/parameter-resolver.d.ts.map +1 -0
- package/server/dist/core/parameter-resolver.js +300 -0
- package/server/dist/core/parameter-resolver.js.map +1 -0
- package/server/dist/core/path-guard.d.ts +40 -0
- package/server/dist/core/path-guard.d.ts.map +1 -0
- package/server/dist/core/path-guard.js +147 -0
- package/server/dist/core/path-guard.js.map +1 -0
- package/server/dist/core/pr-status.d.ts +47 -0
- package/server/dist/core/pr-status.d.ts.map +1 -0
- package/server/dist/core/pr-status.js +157 -0
- package/server/dist/core/pr-status.js.map +1 -0
- package/server/dist/core/preview-child-lifecycle.d.ts +77 -0
- package/server/dist/core/preview-child-lifecycle.d.ts.map +1 -0
- package/server/dist/core/preview-child-lifecycle.js +223 -0
- package/server/dist/core/preview-child-lifecycle.js.map +1 -0
- package/server/dist/core/preview-coherence.d.ts +59 -0
- package/server/dist/core/preview-coherence.d.ts.map +1 -0
- package/server/dist/core/preview-coherence.js +66 -0
- package/server/dist/core/preview-coherence.js.map +1 -0
- package/server/dist/core/preview-session-manager.d.ts +86 -0
- package/server/dist/core/preview-session-manager.d.ts.map +1 -0
- package/server/dist/core/preview-session-manager.js +303 -0
- package/server/dist/core/preview-session-manager.js.map +1 -0
- package/server/dist/core/preview-win32-spawn.d.ts +11 -0
- package/server/dist/core/preview-win32-spawn.d.ts.map +1 -0
- package/server/dist/core/preview-win32-spawn.js +45 -0
- package/server/dist/core/preview-win32-spawn.js.map +1 -0
- package/server/dist/core/profile-loader.d.ts +65 -0
- package/server/dist/core/profile-loader.d.ts.map +1 -0
- package/server/dist/core/profile-loader.js +125 -0
- package/server/dist/core/profile-loader.js.map +1 -0
- package/server/dist/core/project-actions-loader.d.ts +103 -0
- package/server/dist/core/project-actions-loader.d.ts.map +1 -0
- package/server/dist/core/project-actions-loader.js +161 -0
- package/server/dist/core/project-actions-loader.js.map +1 -0
- package/server/dist/core/project-manager.d.ts +110 -0
- package/server/dist/core/project-manager.d.ts.map +1 -0
- package/server/dist/core/project-manager.js +339 -0
- package/server/dist/core/project-manager.js.map +1 -0
- package/server/dist/core/project-registry-io.d.ts +64 -0
- package/server/dist/core/project-registry-io.d.ts.map +1 -0
- package/server/dist/core/project-registry-io.js +194 -0
- package/server/dist/core/project-registry-io.js.map +1 -0
- package/server/dist/core/readiness-probe.d.ts +89 -0
- package/server/dist/core/readiness-probe.d.ts.map +1 -0
- package/server/dist/core/readiness-probe.js +216 -0
- package/server/dist/core/readiness-probe.js.map +1 -0
- package/server/dist/core/run-config-reader.d.ts +35 -0
- package/server/dist/core/run-config-reader.d.ts.map +1 -0
- package/server/dist/core/run-config-reader.js +362 -0
- package/server/dist/core/run-config-reader.js.map +1 -0
- package/server/dist/core/run-data-join.d.ts +60 -0
- package/server/dist/core/run-data-join.d.ts.map +1 -0
- package/server/dist/core/run-data-join.js +264 -0
- package/server/dist/core/run-data-join.js.map +1 -0
- package/server/dist/core/run-data-types.d.ts +126 -0
- package/server/dist/core/run-data-types.d.ts.map +1 -0
- package/server/dist/core/run-data-types.js +25 -0
- package/server/dist/core/run-data-types.js.map +1 -0
- package/server/dist/core/run-loop-state-reader.d.ts +27 -0
- package/server/dist/core/run-loop-state-reader.d.ts.map +1 -0
- package/server/dist/core/run-loop-state-reader.js +79 -0
- package/server/dist/core/run-loop-state-reader.js.map +1 -0
- package/server/dist/core/sdk-sessions-merge.d.ts +60 -0
- package/server/dist/core/sdk-sessions-merge.d.ts.map +1 -0
- package/server/dist/core/sdk-sessions-merge.js +220 -0
- package/server/dist/core/sdk-sessions-merge.js.map +1 -0
- package/server/dist/core/sdk-sessions-store.d.ts +261 -0
- package/server/dist/core/sdk-sessions-store.d.ts.map +1 -0
- package/server/dist/core/sdk-sessions-store.js +315 -0
- package/server/dist/core/sdk-sessions-store.js.map +1 -0
- package/server/dist/core/sdk-sessions-validate.d.ts +9 -0
- package/server/dist/core/sdk-sessions-validate.d.ts.map +1 -0
- package/server/dist/core/sdk-sessions-validate.js +237 -0
- package/server/dist/core/sdk-sessions-validate.js.map +1 -0
- package/server/dist/core/session-jsonl-io.d.ts +35 -0
- package/server/dist/core/session-jsonl-io.d.ts.map +1 -0
- package/server/dist/core/session-jsonl-io.js +128 -0
- package/server/dist/core/session-jsonl-io.js.map +1 -0
- package/server/dist/core/session-parser.d.ts +81 -0
- package/server/dist/core/session-parser.d.ts.map +1 -0
- package/server/dist/core/session-parser.js +168 -0
- package/server/dist/core/session-parser.js.map +1 -0
- package/server/dist/core/session-watcher-debug.d.ts +7 -0
- package/server/dist/core/session-watcher-debug.d.ts.map +1 -0
- package/server/dist/core/session-watcher-debug.js +31 -0
- package/server/dist/core/session-watcher-debug.js.map +1 -0
- package/server/dist/core/session-watcher.d.ts +101 -0
- package/server/dist/core/session-watcher.d.ts.map +1 -0
- package/server/dist/core/session-watcher.js +226 -0
- package/server/dist/core/session-watcher.js.map +1 -0
- package/server/dist/core/shell-quote.d.ts +5 -0
- package/server/dist/core/shell-quote.d.ts.map +1 -0
- package/server/dist/core/shell-quote.js +49 -0
- package/server/dist/core/shell-quote.js.map +1 -0
- package/server/dist/core/task-editability.d.ts +22 -0
- package/server/dist/core/task-editability.d.ts.map +1 -0
- package/server/dist/core/task-editability.js +34 -0
- package/server/dist/core/task-editability.js.map +1 -0
- package/server/dist/core/terminal-prompt-detect.d.ts +7 -0
- package/server/dist/core/terminal-prompt-detect.d.ts.map +1 -0
- package/server/dist/core/terminal-prompt-detect.js +128 -0
- package/server/dist/core/terminal-prompt-detect.js.map +1 -0
- package/server/dist/core/tests-gate.d.ts +23 -0
- package/server/dist/core/tests-gate.d.ts.map +1 -0
- package/server/dist/core/tests-gate.js +92 -0
- package/server/dist/core/tests-gate.js.map +1 -0
- package/server/dist/core/triage-amend.d.ts +33 -0
- package/server/dist/core/triage-amend.d.ts.map +1 -0
- package/server/dist/core/triage-amend.js +109 -0
- package/server/dist/core/triage-amend.js.map +1 -0
- package/server/dist/core/triage-board-read.d.ts +37 -0
- package/server/dist/core/triage-board-read.d.ts.map +1 -0
- package/server/dist/core/triage-board-read.js +148 -0
- package/server/dist/core/triage-board-read.js.map +1 -0
- package/server/dist/core/triage-cli-runner.d.ts +61 -0
- package/server/dist/core/triage-cli-runner.d.ts.map +1 -0
- package/server/dist/core/triage-cli-runner.js +92 -0
- package/server/dist/core/triage-cli-runner.js.map +1 -0
- package/server/dist/core/triage-compose.d.ts +33 -0
- package/server/dist/core/triage-compose.d.ts.map +1 -0
- package/server/dist/core/triage-compose.js +51 -0
- package/server/dist/core/triage-compose.js.map +1 -0
- package/server/dist/core/triage-contract.d.ts +18 -0
- package/server/dist/core/triage-contract.d.ts.map +1 -0
- package/server/dist/core/triage-contract.js +45 -0
- package/server/dist/core/triage-contract.js.map +1 -0
- package/server/dist/core/triage-defer.d.ts +36 -0
- package/server/dist/core/triage-defer.d.ts.map +1 -0
- package/server/dist/core/triage-defer.js +117 -0
- package/server/dist/core/triage-defer.js.map +1 -0
- package/server/dist/core/triage-enrich.d.ts +31 -0
- package/server/dist/core/triage-enrich.d.ts.map +1 -0
- package/server/dist/core/triage-enrich.js +127 -0
- package/server/dist/core/triage-enrich.js.map +1 -0
- package/server/dist/core/triage-lock.d.ts +12 -0
- package/server/dist/core/triage-lock.d.ts.map +1 -0
- package/server/dist/core/triage-lock.js +41 -0
- package/server/dist/core/triage-lock.js.map +1 -0
- package/server/dist/core/triage-origin.d.ts +52 -0
- package/server/dist/core/triage-origin.d.ts.map +1 -0
- package/server/dist/core/triage-origin.js +0 -0
- package/server/dist/core/triage-origin.js.map +1 -0
- package/server/dist/core/triage-paths.d.ts +25 -0
- package/server/dist/core/triage-paths.d.ts.map +1 -0
- package/server/dist/core/triage-paths.js +125 -0
- package/server/dist/core/triage-paths.js.map +1 -0
- package/server/dist/core/triage-raw.d.ts +33 -0
- package/server/dist/core/triage-raw.d.ts.map +1 -0
- package/server/dist/core/triage-raw.js +66 -0
- package/server/dist/core/triage-raw.js.map +1 -0
- package/server/dist/core/triage-store.d.ts +42 -0
- package/server/dist/core/triage-store.d.ts.map +1 -0
- package/server/dist/core/triage-store.js +268 -0
- package/server/dist/core/triage-store.js.map +1 -0
- package/server/dist/core/triage-validation.d.ts +58 -0
- package/server/dist/core/triage-validation.d.ts.map +1 -0
- package/server/dist/core/triage-validation.js +198 -0
- package/server/dist/core/triage-validation.js.map +1 -0
- package/server/dist/core/win32-spawn.d.ts +29 -0
- package/server/dist/core/win32-spawn.d.ts.map +1 -0
- package/server/dist/core/win32-spawn.js +271 -0
- package/server/dist/core/win32-spawn.js.map +1 -0
- package/server/dist/external/__tests__/api-contract-probes.d.ts +49 -0
- package/server/dist/external/__tests__/api-contract-probes.d.ts.map +1 -0
- package/server/dist/external/__tests__/api-contract-probes.js +295 -0
- package/server/dist/external/__tests__/api-contract-probes.js.map +1 -0
- package/server/dist/external/_lead-fields-tag-filter-harness.d.ts +7 -0
- package/server/dist/external/_lead-fields-tag-filter-harness.d.ts.map +1 -0
- package/server/dist/external/_lead-fields-tag-filter-harness.js +41 -0
- package/server/dist/external/_lead-fields-tag-filter-harness.js.map +1 -0
- package/server/dist/external/_routes-edit-fields-harness.d.ts +8 -0
- package/server/dist/external/_routes-edit-fields-harness.d.ts.map +1 -0
- package/server/dist/external/_routes-edit-fields-harness.js +49 -0
- package/server/dist/external/_routes-edit-fields-harness.js.map +1 -0
- package/server/dist/external/_shared/helpers.d.ts +143 -0
- package/server/dist/external/_shared/helpers.d.ts.map +1 -0
- package/server/dist/external/_shared/helpers.js +231 -0
- package/server/dist/external/_shared/helpers.js.map +1 -0
- package/server/dist/external/actions/_helpers.d.ts +15 -0
- package/server/dist/external/actions/_helpers.d.ts.map +1 -0
- package/server/dist/external/actions/_helpers.js +48 -0
- package/server/dist/external/actions/_helpers.js.map +1 -0
- package/server/dist/external/actions/get.d.ts +8 -0
- package/server/dist/external/actions/get.d.ts.map +1 -0
- package/server/dist/external/actions/get.js +96 -0
- package/server/dist/external/actions/get.js.map +1 -0
- package/server/dist/external/actions/routes.d.ts +9 -0
- package/server/dist/external/actions/routes.d.ts.map +1 -0
- package/server/dist/external/actions/routes.js +33 -0
- package/server/dist/external/actions/routes.js.map +1 -0
- package/server/dist/external/actions/stub.d.ts +6 -0
- package/server/dist/external/actions/stub.d.ts.map +1 -0
- package/server/dist/external/actions/stub.js +51 -0
- package/server/dist/external/actions/stub.js.map +1 -0
- package/server/dist/external/actions/upload-delete.d.ts +6 -0
- package/server/dist/external/actions/upload-delete.d.ts.map +1 -0
- package/server/dist/external/actions/upload-delete.js +46 -0
- package/server/dist/external/actions/upload-delete.js.map +1 -0
- package/server/dist/external/actions/upload.d.ts +6 -0
- package/server/dist/external/actions/upload.d.ts.map +1 -0
- package/server/dist/external/actions/upload.js +141 -0
- package/server/dist/external/actions/upload.js.map +1 -0
- package/server/dist/external/compliance/routes.d.ts +9 -0
- package/server/dist/external/compliance/routes.d.ts.map +1 -0
- package/server/dist/external/compliance/routes.js +46 -0
- package/server/dist/external/compliance/routes.js.map +1 -0
- package/server/dist/external/design-review/__tests__/_helpers.d.ts +16 -0
- package/server/dist/external/design-review/__tests__/_helpers.d.ts.map +1 -0
- package/server/dist/external/design-review/__tests__/_helpers.js +92 -0
- package/server/dist/external/design-review/__tests__/_helpers.js.map +1 -0
- package/server/dist/external/design-review/feedback-write.d.ts +7 -0
- package/server/dist/external/design-review/feedback-write.d.ts.map +1 -0
- package/server/dist/external/design-review/feedback-write.js +126 -0
- package/server/dist/external/design-review/feedback-write.js.map +1 -0
- package/server/dist/external/design-review/gate.d.ts +11 -0
- package/server/dist/external/design-review/gate.d.ts.map +1 -0
- package/server/dist/external/design-review/gate.js +39 -0
- package/server/dist/external/design-review/gate.js.map +1 -0
- package/server/dist/external/design-review/routes.d.ts +9 -0
- package/server/dist/external/design-review/routes.d.ts.map +1 -0
- package/server/dist/external/design-review/routes.js +25 -0
- package/server/dist/external/design-review/routes.js.map +1 -0
- package/server/dist/external/design-review/serve.d.ts +10 -0
- package/server/dist/external/design-review/serve.d.ts.map +1 -0
- package/server/dist/external/design-review/serve.js +184 -0
- package/server/dist/external/design-review/serve.js.map +1 -0
- package/server/dist/external/events/routes.d.ts +16 -0
- package/server/dist/external/events/routes.d.ts.map +1 -0
- package/server/dist/external/events/routes.js +46 -0
- package/server/dist/external/events/routes.js.map +1 -0
- package/server/dist/external/file/_helpers.d.ts +62 -0
- package/server/dist/external/file/_helpers.d.ts.map +1 -0
- package/server/dist/external/file/_helpers.js +146 -0
- package/server/dist/external/file/_helpers.js.map +1 -0
- package/server/dist/external/file/routes.d.ts +7 -0
- package/server/dist/external/file/routes.d.ts.map +1 -0
- package/server/dist/external/file/routes.js +122 -0
- package/server/dist/external/file/routes.js.map +1 -0
- package/server/dist/external/file/write.d.ts +20 -0
- package/server/dist/external/file/write.d.ts.map +1 -0
- package/server/dist/external/file/write.js +172 -0
- package/server/dist/external/file/write.js.map +1 -0
- package/server/dist/external/inbox/_cache.d.ts +48 -0
- package/server/dist/external/inbox/_cache.d.ts.map +1 -0
- package/server/dist/external/inbox/_cache.js +46 -0
- package/server/dist/external/inbox/_cache.js.map +1 -0
- package/server/dist/external/inbox/_derive.d.ts +56 -0
- package/server/dist/external/inbox/_derive.d.ts.map +1 -0
- package/server/dist/external/inbox/_derive.js +231 -0
- package/server/dist/external/inbox/_derive.js.map +1 -0
- package/server/dist/external/inbox/routes.d.ts +13 -0
- package/server/dist/external/inbox/routes.d.ts.map +1 -0
- package/server/dist/external/inbox/routes.js +59 -0
- package/server/dist/external/inbox/routes.js.map +1 -0
- package/server/dist/external/launch/_helpers.d.ts +17 -0
- package/server/dist/external/launch/_helpers.d.ts.map +1 -0
- package/server/dist/external/launch/_helpers.js +25 -0
- package/server/dist/external/launch/_helpers.js.map +1 -0
- package/server/dist/external/launch/action-substitution-branch.d.ts +11 -0
- package/server/dist/external/launch/action-substitution-branch.d.ts.map +1 -0
- package/server/dist/external/launch/action-substitution-branch.js +112 -0
- package/server/dist/external/launch/action-substitution-branch.js.map +1 -0
- package/server/dist/external/launch/campaign-branch.d.ts +12 -0
- package/server/dist/external/launch/campaign-branch.d.ts.map +1 -0
- package/server/dist/external/launch/campaign-branch.js +95 -0
- package/server/dist/external/launch/campaign-branch.js.map +1 -0
- package/server/dist/external/launch/campaign-step-branch.d.ts +12 -0
- package/server/dist/external/launch/campaign-step-branch.d.ts.map +1 -0
- package/server/dist/external/launch/campaign-step-branch.js +108 -0
- package/server/dist/external/launch/campaign-step-branch.js.map +1 -0
- package/server/dist/external/launch/legacy-fallback-branch.d.ts +12 -0
- package/server/dist/external/launch/legacy-fallback-branch.d.ts.map +1 -0
- package/server/dist/external/launch/legacy-fallback-branch.js +29 -0
- package/server/dist/external/launch/legacy-fallback-branch.js.map +1 -0
- package/server/dist/external/launch/master-run-branch.d.ts +24 -0
- package/server/dist/external/launch/master-run-branch.d.ts.map +1 -0
- package/server/dist/external/launch/master-run-branch.js +168 -0
- package/server/dist/external/launch/master-run-branch.js.map +1 -0
- package/server/dist/external/launch/parse-body.d.ts +46 -0
- package/server/dist/external/launch/parse-body.d.ts.map +1 -0
- package/server/dist/external/launch/parse-body.js +115 -0
- package/server/dist/external/launch/parse-body.js.map +1 -0
- package/server/dist/external/launch/phase-task-branch.d.ts +18 -0
- package/server/dist/external/launch/phase-task-branch.d.ts.map +1 -0
- package/server/dist/external/launch/phase-task-branch.js +170 -0
- package/server/dist/external/launch/phase-task-branch.js.map +1 -0
- package/server/dist/external/launch/routes.d.ts +23 -0
- package/server/dist/external/launch/routes.d.ts.map +1 -0
- package/server/dist/external/launch/routes.js +198 -0
- package/server/dist/external/launch/routes.js.map +1 -0
- package/server/dist/external/media/_helpers.d.ts +32 -0
- package/server/dist/external/media/_helpers.d.ts.map +1 -0
- package/server/dist/external/media/_helpers.js +77 -0
- package/server/dist/external/media/_helpers.js.map +1 -0
- package/server/dist/external/media/routes.d.ts +7 -0
- package/server/dist/external/media/routes.d.ts.map +1 -0
- package/server/dist/external/media/routes.js +120 -0
- package/server/dist/external/media/routes.js.map +1 -0
- package/server/dist/external/mission-context/facts-slice3.d.ts +22 -0
- package/server/dist/external/mission-context/facts-slice3.d.ts.map +1 -0
- package/server/dist/external/mission-context/facts-slice3.js +143 -0
- package/server/dist/external/mission-context/facts-slice3.js.map +1 -0
- package/server/dist/external/mission-context/facts.d.ts +44 -0
- package/server/dist/external/mission-context/facts.d.ts.map +1 -0
- package/server/dist/external/mission-context/facts.js +109 -0
- package/server/dist/external/mission-context/facts.js.map +1 -0
- package/server/dist/external/mission-context/routes.d.ts +83 -0
- package/server/dist/external/mission-context/routes.d.ts.map +1 -0
- package/server/dist/external/mission-context/routes.js +226 -0
- package/server/dist/external/mission-context/routes.js.map +1 -0
- package/server/dist/external/mission-context/test-harness.d.ts +62 -0
- package/server/dist/external/mission-context/test-harness.d.ts.map +1 -0
- package/server/dist/external/mission-context/test-harness.js +121 -0
- package/server/dist/external/mission-context/test-harness.js.map +1 -0
- package/server/dist/external/mission-context/wire.d.ts +12 -0
- package/server/dist/external/mission-context/wire.d.ts.map +1 -0
- package/server/dist/external/mission-context/wire.js +62 -0
- package/server/dist/external/mission-context/wire.js.map +1 -0
- package/server/dist/external/model-config/routes.d.ts +9 -0
- package/server/dist/external/model-config/routes.d.ts.map +1 -0
- package/server/dist/external/model-config/routes.js +18 -0
- package/server/dist/external/model-config/routes.js.map +1 -0
- package/server/dist/external/org/__tests__/fixtures/lock-race-worker.d.ts +2 -0
- package/server/dist/external/org/__tests__/fixtures/lock-race-worker.d.ts.map +1 -0
- package/server/dist/external/org/__tests__/fixtures/lock-race-worker.js +67 -0
- package/server/dist/external/org/__tests__/fixtures/lock-race-worker.js.map +1 -0
- package/server/dist/external/org/_helpers.d.ts +67 -0
- package/server/dist/external/org/_helpers.d.ts.map +1 -0
- package/server/dist/external/org/_helpers.js +146 -0
- package/server/dist/external/org/_helpers.js.map +1 -0
- package/server/dist/external/org/beat-register-release-audit.d.ts +17 -0
- package/server/dist/external/org/beat-register-release-audit.d.ts.map +1 -0
- package/server/dist/external/org/beat-register-release-audit.js +96 -0
- package/server/dist/external/org/beat-register-release-audit.js.map +1 -0
- package/server/dist/external/org/beat-register-release-core.d.ts +50 -0
- package/server/dist/external/org/beat-register-release-core.d.ts.map +1 -0
- package/server/dist/external/org/beat-register-release-core.js +183 -0
- package/server/dist/external/org/beat-register-release-core.js.map +1 -0
- package/server/dist/external/org/beat-register-release.d.ts +13 -0
- package/server/dist/external/org/beat-register-release.d.ts.map +1 -0
- package/server/dist/external/org/beat-register-release.js +81 -0
- package/server/dist/external/org/beat-register-release.js.map +1 -0
- package/server/dist/external/org/beat-register.d.ts +100 -0
- package/server/dist/external/org/beat-register.d.ts.map +1 -0
- package/server/dist/external/org/beat-register.js +198 -0
- package/server/dist/external/org/beat-register.js.map +1 -0
- package/server/dist/external/org/countersign.d.ts +8 -0
- package/server/dist/external/org/countersign.d.ts.map +1 -0
- package/server/dist/external/org/countersign.js +157 -0
- package/server/dist/external/org/countersign.js.map +1 -0
- package/server/dist/external/org/cron.d.ts +22 -0
- package/server/dist/external/org/cron.d.ts.map +1 -0
- package/server/dist/external/org/cron.js +59 -0
- package/server/dist/external/org/cron.js.map +1 -0
- package/server/dist/external/org/decisions-lock.d.ts +68 -0
- package/server/dist/external/org/decisions-lock.d.ts.map +1 -0
- package/server/dist/external/org/decisions-lock.js +209 -0
- package/server/dist/external/org/decisions-lock.js.map +1 -0
- package/server/dist/external/org/file-read.d.ts +14 -0
- package/server/dist/external/org/file-read.d.ts.map +1 -0
- package/server/dist/external/org/file-read.js +80 -0
- package/server/dist/external/org/file-read.js.map +1 -0
- package/server/dist/external/org/file-write.d.ts +14 -0
- package/server/dist/external/org/file-write.d.ts.map +1 -0
- package/server/dist/external/org/file-write.js +205 -0
- package/server/dist/external/org/file-write.js.map +1 -0
- package/server/dist/external/org/last-run.d.ts +28 -0
- package/server/dist/external/org/last-run.d.ts.map +1 -0
- package/server/dist/external/org/last-run.js +137 -0
- package/server/dist/external/org/last-run.js.map +1 -0
- package/server/dist/external/org/org-chart-lookup.d.ts +16 -0
- package/server/dist/external/org/org-chart-lookup.d.ts.map +1 -0
- package/server/dist/external/org/org-chart-lookup.js +100 -0
- package/server/dist/external/org/org-chart-lookup.js.map +1 -0
- package/server/dist/external/org/org-chart.d.ts +25 -0
- package/server/dist/external/org/org-chart.d.ts.map +1 -0
- package/server/dist/external/org/org-chart.js +110 -0
- package/server/dist/external/org/org-chart.js.map +1 -0
- package/server/dist/external/org/routes.d.ts +12 -0
- package/server/dist/external/org/routes.d.ts.map +1 -0
- package/server/dist/external/org/routes.js +90 -0
- package/server/dist/external/org/routes.js.map +1 -0
- package/server/dist/external/org/usage.d.ts +24 -0
- package/server/dist/external/org/usage.d.ts.map +1 -0
- package/server/dist/external/org/usage.js +110 -0
- package/server/dist/external/org/usage.js.map +1 -0
- package/server/dist/external/pr-status/routes.d.ts +7 -0
- package/server/dist/external/pr-status/routes.d.ts.map +1 -0
- package/server/dist/external/pr-status/routes.js +37 -0
- package/server/dist/external/pr-status/routes.js.map +1 -0
- package/server/dist/external/preview/routes.d.ts +10 -0
- package/server/dist/external/preview/routes.d.ts.map +1 -0
- package/server/dist/external/preview/routes.js +71 -0
- package/server/dist/external/preview/routes.js.map +1 -0
- package/server/dist/external/routes.d.ts +106 -0
- package/server/dist/external/routes.d.ts.map +1 -0
- package/server/dist/external/routes.js +162 -0
- package/server/dist/external/routes.js.map +1 -0
- package/server/dist/external/run-config/routes.d.ts +9 -0
- package/server/dist/external/run-config/routes.d.ts.map +1 -0
- package/server/dist/external/run-config/routes.js +55 -0
- package/server/dist/external/run-config/routes.js.map +1 -0
- package/server/dist/external/runs/routes.d.ts +16 -0
- package/server/dist/external/runs/routes.d.ts.map +1 -0
- package/server/dist/external/runs/routes.js +69 -0
- package/server/dist/external/runs/routes.js.map +1 -0
- package/server/dist/external/tasks/_phase-helpers.d.ts +37 -0
- package/server/dist/external/tasks/_phase-helpers.d.ts.map +1 -0
- package/server/dist/external/tasks/_phase-helpers.js +101 -0
- package/server/dist/external/tasks/_phase-helpers.js.map +1 -0
- package/server/dist/external/tasks/create.d.ts +12 -0
- package/server/dist/external/tasks/create.d.ts.map +1 -0
- package/server/dist/external/tasks/create.js +139 -0
- package/server/dist/external/tasks/create.js.map +1 -0
- package/server/dist/external/tasks/lifecycle.d.ts +12 -0
- package/server/dist/external/tasks/lifecycle.d.ts.map +1 -0
- package/server/dist/external/tasks/lifecycle.js +231 -0
- package/server/dist/external/tasks/lifecycle.js.map +1 -0
- package/server/dist/external/tasks/list-get.d.ts +11 -0
- package/server/dist/external/tasks/list-get.d.ts.map +1 -0
- package/server/dist/external/tasks/list-get.js +50 -0
- package/server/dist/external/tasks/list-get.js.map +1 -0
- package/server/dist/external/tasks/patch.d.ts +12 -0
- package/server/dist/external/tasks/patch.d.ts.map +1 -0
- package/server/dist/external/tasks/patch.js +192 -0
- package/server/dist/external/tasks/patch.js.map +1 -0
- package/server/dist/external/tasks/routes.d.ts +18 -0
- package/server/dist/external/tasks/routes.d.ts.map +1 -0
- package/server/dist/external/tasks/routes.js +49 -0
- package/server/dist/external/tasks/routes.js.map +1 -0
- package/server/dist/external/transcript/routes.d.ts +12 -0
- package/server/dist/external/transcript/routes.d.ts.map +1 -0
- package/server/dist/external/transcript/routes.js +160 -0
- package/server/dist/external/transcript/routes.js.map +1 -0
- package/server/dist/external/tree/routes.d.ts +7 -0
- package/server/dist/external/tree/routes.d.ts.map +1 -0
- package/server/dist/external/tree/routes.js +96 -0
- package/server/dist/external/tree/routes.js.map +1 -0
- package/server/dist/index.d.ts +3 -0
- package/server/dist/index.d.ts.map +1 -0
- package/server/dist/index.js +774 -0
- package/server/dist/index.js.map +1 -0
- package/server/dist/lib/bind-errors.d.ts +18 -0
- package/server/dist/lib/bind-errors.d.ts.map +1 -0
- package/server/dist/lib/bind-errors.js +43 -0
- package/server/dist/lib/bind-errors.js.map +1 -0
- package/server/dist/lib/resolveHonoHost.d.ts +3 -0
- package/server/dist/lib/resolveHonoHost.d.ts.map +1 -0
- package/server/dist/lib/resolveHonoHost.js +34 -0
- package/server/dist/lib/resolveHonoHost.js.map +1 -0
- package/server/dist/lib/resolveNetworkProfile.d.ts +28 -0
- package/server/dist/lib/resolveNetworkProfile.d.ts.map +1 -0
- package/server/dist/lib/resolveNetworkProfile.js +42 -0
- package/server/dist/lib/resolveNetworkProfile.js.map +1 -0
- package/server/dist/lib/resolveTailscaleIp.d.ts +26 -0
- package/server/dist/lib/resolveTailscaleIp.d.ts.map +1 -0
- package/server/dist/lib/resolveTailscaleIp.js +61 -0
- package/server/dist/lib/resolveTailscaleIp.js.map +1 -0
- package/server/dist/lib/resolveTrustedOrigins.d.ts +9 -0
- package/server/dist/lib/resolveTrustedOrigins.d.ts.map +1 -0
- package/server/dist/lib/resolveTrustedOrigins.js +154 -0
- package/server/dist/lib/resolveTrustedOrigins.js.map +1 -0
- package/server/dist/middleware/error-handler.d.ts +8 -0
- package/server/dist/middleware/error-handler.d.ts.map +1 -0
- package/server/dist/middleware/error-handler.js +75 -0
- package/server/dist/middleware/error-handler.js.map +1 -0
- package/server/dist/middleware/logger.d.ts +3 -0
- package/server/dist/middleware/logger.d.ts.map +1 -0
- package/server/dist/middleware/logger.js +13 -0
- package/server/dist/middleware/logger.js.map +1 -0
- package/server/dist/routes/_triage-api-harness.d.ts +16 -0
- package/server/dist/routes/_triage-api-harness.d.ts.map +1 -0
- package/server/dist/routes/_triage-api-harness.js +89 -0
- package/server/dist/routes/_triage-api-harness.js.map +1 -0
- package/server/dist/routes/campaigns.d.ts +26 -0
- package/server/dist/routes/campaigns.d.ts.map +1 -0
- package/server/dist/routes/campaigns.js +237 -0
- package/server/dist/routes/campaigns.js.map +1 -0
- package/server/dist/routes/diagnostics.d.ts +84 -0
- package/server/dist/routes/diagnostics.d.ts.map +1 -0
- package/server/dist/routes/diagnostics.js +143 -0
- package/server/dist/routes/diagnostics.js.map +1 -0
- package/server/dist/routes/grade.d.ts +13 -0
- package/server/dist/routes/grade.d.ts.map +1 -0
- package/server/dist/routes/grade.js +45 -0
- package/server/dist/routes/grade.js.map +1 -0
- package/server/dist/routes/profiles.d.ts +25 -0
- package/server/dist/routes/profiles.d.ts.map +1 -0
- package/server/dist/routes/profiles.js +58 -0
- package/server/dist/routes/profiles.js.map +1 -0
- package/server/dist/routes/projects.d.ts +20 -0
- package/server/dist/routes/projects.d.ts.map +1 -0
- package/server/dist/routes/projects.js +105 -0
- package/server/dist/routes/projects.js.map +1 -0
- package/server/dist/routes/readiness.d.ts +11 -0
- package/server/dist/routes/readiness.d.ts.map +1 -0
- package/server/dist/routes/readiness.js +52 -0
- package/server/dist/routes/readiness.js.map +1 -0
- package/server/dist/routes/settings.d.ts +13 -0
- package/server/dist/routes/settings.d.ts.map +1 -0
- package/server/dist/routes/settings.js +69 -0
- package/server/dist/routes/settings.js.map +1 -0
- package/server/dist/routes/terminal-appearance.d.ts +7 -0
- package/server/dist/routes/terminal-appearance.d.ts.map +1 -0
- package/server/dist/routes/terminal-appearance.js +28 -0
- package/server/dist/routes/terminal-appearance.js.map +1 -0
- package/server/dist/routes/triage.d.ts +35 -0
- package/server/dist/routes/triage.d.ts.map +1 -0
- package/server/dist/routes/triage.js +496 -0
- package/server/dist/routes/triage.js.map +1 -0
- package/server/dist/terminal/backpressure-telemetry.d.ts +86 -0
- package/server/dist/terminal/backpressure-telemetry.d.ts.map +1 -0
- package/server/dist/terminal/backpressure-telemetry.js +158 -0
- package/server/dist/terminal/backpressure-telemetry.js.map +1 -0
- package/server/dist/terminal/boot-wipe.d.ts +47 -0
- package/server/dist/terminal/boot-wipe.d.ts.map +1 -0
- package/server/dist/terminal/boot-wipe.js +122 -0
- package/server/dist/terminal/boot-wipe.js.map +1 -0
- package/server/dist/terminal/headless-mirror.d.ts +139 -0
- package/server/dist/terminal/headless-mirror.d.ts.map +1 -0
- package/server/dist/terminal/headless-mirror.js +389 -0
- package/server/dist/terminal/headless-mirror.js.map +1 -0
- package/server/dist/terminal/headless-probe.d.ts +26 -0
- package/server/dist/terminal/headless-probe.d.ts.map +1 -0
- package/server/dist/terminal/headless-probe.js +99 -0
- package/server/dist/terminal/headless-probe.js.map +1 -0
- package/server/dist/terminal/idle-reaper.d.ts +47 -0
- package/server/dist/terminal/idle-reaper.d.ts.map +1 -0
- package/server/dist/terminal/idle-reaper.js +95 -0
- package/server/dist/terminal/idle-reaper.js.map +1 -0
- package/server/dist/terminal/image-paste.d.ts +60 -0
- package/server/dist/terminal/image-paste.d.ts.map +1 -0
- package/server/dist/terminal/image-paste.js +260 -0
- package/server/dist/terminal/image-paste.js.map +1 -0
- package/server/dist/terminal/pty-manager.d.ts +452 -0
- package/server/dist/terminal/pty-manager.d.ts.map +1 -0
- package/server/dist/terminal/pty-manager.js +1014 -0
- package/server/dist/terminal/pty-manager.js.map +1 -0
- package/server/dist/terminal/replay-snapshot.d.ts +25 -0
- package/server/dist/terminal/replay-snapshot.d.ts.map +1 -0
- package/server/dist/terminal/replay-snapshot.js +124 -0
- package/server/dist/terminal/replay-snapshot.js.map +1 -0
- package/server/dist/terminal/resync-gate.d.ts +20 -0
- package/server/dist/terminal/resync-gate.d.ts.map +1 -0
- package/server/dist/terminal/resync-gate.js +58 -0
- package/server/dist/terminal/resync-gate.js.map +1 -0
- package/server/dist/terminal/routes.d.ts +67 -0
- package/server/dist/terminal/routes.d.ts.map +1 -0
- package/server/dist/terminal/routes.js +455 -0
- package/server/dist/terminal/routes.js.map +1 -0
- package/server/dist/terminal/scrollback-store.d.ts +120 -0
- package/server/dist/terminal/scrollback-store.d.ts.map +1 -0
- package/server/dist/terminal/scrollback-store.js +572 -0
- package/server/dist/terminal/scrollback-store.js.map +1 -0
- package/server/dist/terminal/snapshot-preserve.d.ts +63 -0
- package/server/dist/terminal/snapshot-preserve.d.ts.map +1 -0
- package/server/dist/terminal/snapshot-preserve.js +116 -0
- package/server/dist/terminal/snapshot-preserve.js.map +1 -0
- package/server/dist/terminal/snapshot-store.d.ts +147 -0
- package/server/dist/terminal/snapshot-store.d.ts.map +1 -0
- package/server/dist/terminal/snapshot-store.js +439 -0
- package/server/dist/terminal/snapshot-store.js.map +1 -0
- package/server/dist/terminal/snapshot-tmp-sweep.d.ts +48 -0
- package/server/dist/terminal/snapshot-tmp-sweep.d.ts.map +1 -0
- package/server/dist/terminal/snapshot-tmp-sweep.js +141 -0
- package/server/dist/terminal/snapshot-tmp-sweep.js.map +1 -0
- package/server/dist/terminal/spawn-env.d.ts +46 -0
- package/server/dist/terminal/spawn-env.d.ts.map +1 -0
- package/server/dist/terminal/spawn-env.js +232 -0
- package/server/dist/terminal/spawn-env.js.map +1 -0
- package/server/dist/terminal/terminal-reset.d.ts +31 -0
- package/server/dist/terminal/terminal-reset.d.ts.map +1 -0
- package/server/dist/terminal/terminal-reset.js +43 -0
- package/server/dist/terminal/terminal-reset.js.map +1 -0
- package/server/dist/terminal/ws-heartbeat.d.ts +78 -0
- package/server/dist/terminal/ws-heartbeat.d.ts.map +1 -0
- package/server/dist/terminal/ws-heartbeat.js +164 -0
- package/server/dist/terminal/ws-heartbeat.js.map +1 -0
- package/server/dist/terminal/ws-upgrade-handler.d.ts +96 -0
- package/server/dist/terminal/ws-upgrade-handler.d.ts.map +1 -0
- package/server/dist/terminal/ws-upgrade-handler.fixtures.d.ts +46 -0
- package/server/dist/terminal/ws-upgrade-handler.fixtures.d.ts.map +1 -0
- package/server/dist/terminal/ws-upgrade-handler.fixtures.js +126 -0
- package/server/dist/terminal/ws-upgrade-handler.fixtures.js.map +1 -0
- package/server/dist/terminal/ws-upgrade-handler.js +518 -0
- package/server/dist/terminal/ws-upgrade-handler.js.map +1 -0
- package/server/dist/types/action-schema.d.ts +75 -0
- package/server/dist/types/action-schema.d.ts.map +1 -0
- package/server/dist/types/action-schema.js +32 -0
- package/server/dist/types/action-schema.js.map +1 -0
- package/server/dist/types/project.d.ts +72 -0
- package/server/dist/types/project.d.ts.map +1 -0
- package/server/dist/types/project.js +16 -0
- package/server/dist/types/project.js.map +1 -0
- package/server/dist/types/run-config-v2.d.ts +172 -0
- package/server/dist/types/run-config-v2.d.ts.map +1 -0
- package/server/dist/types/run-config-v2.js +169 -0
- package/server/dist/types/run-config-v2.js.map +1 -0
- package/server/dist/types/settings.d.ts +25 -0
- package/server/dist/types/settings.d.ts.map +1 -0
- package/server/dist/types/settings.js +12 -0
- package/server/dist/types/settings.js.map +1 -0
- package/server/dist/types/task.d.ts +55 -0
- package/server/dist/types/task.d.ts.map +1 -0
- package/server/dist/types/task.js +13 -0
- package/server/dist/types/task.js.map +1 -0
- package/server/dist/types/triage.d.ts +135 -0
- package/server/dist/types/triage.d.ts.map +1 -0
- package/server/dist/types/triage.js +15 -0
- package/server/dist/types/triage.js.map +1 -0
- package/server/package.json +43 -0
- package/server/profiles/PROFILE_SCHEMA_VERSION +1 -0
- package/server/profiles/README.md +27 -0
- package/server/profiles/python-plugin-monorepo.json +35 -0
- package/server/profiles/supabase-nextjs.json +253 -0
- package/server/profiles/vite-hono.json +92 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Payload of the `{type:"backpressure"}` WS envelope. `droppedBytes` keeps its
|
|
3
|
+
* original name and stays wire-compatible: at episode-open it is still the first
|
|
4
|
+
* dropped chunk's size. Its MEANING is now "bytes lost in this episode so far",
|
|
5
|
+
* which is what makes the loss countable (the old value could not be summed).
|
|
6
|
+
*
|
|
7
|
+
* Mirrored client-side in `client/src/hooks/useTerminalSocket.ts`. Additive only —
|
|
8
|
+
* an older client reading just `droppedBytes` keeps working.
|
|
9
|
+
*/
|
|
10
|
+
export interface BackpressureNotice {
|
|
11
|
+
/** Bytes lost in the CURRENT saturation episode, cumulative. */
|
|
12
|
+
droppedBytes: number;
|
|
13
|
+
/** Chunks lost in the current episode. */
|
|
14
|
+
droppedChunks: number;
|
|
15
|
+
/** Bytes lost across this connection's whole lifetime. */
|
|
16
|
+
totalDroppedBytes: number;
|
|
17
|
+
/** 1-based index of this saturation episode on this connection. */
|
|
18
|
+
episode: number;
|
|
19
|
+
/** True when delivery has resumed — this notice closes the episode. */
|
|
20
|
+
episodeEnded: boolean;
|
|
21
|
+
}
|
|
22
|
+
interface ConnAccount {
|
|
23
|
+
taskId: string;
|
|
24
|
+
/** Non-null while a saturation episode is open. */
|
|
25
|
+
episodeBytes: number | null;
|
|
26
|
+
episodeChunks: number;
|
|
27
|
+
totalDroppedBytes: number;
|
|
28
|
+
totalDroppedChunks: number;
|
|
29
|
+
episodes: number;
|
|
30
|
+
/** Timestamp of the last emitted log line, for throttling. */
|
|
31
|
+
lastLogAt: number;
|
|
32
|
+
/** Whether this connection has ever emitted a line (the first always emits). */
|
|
33
|
+
everLogged: boolean;
|
|
34
|
+
/** Lines withheld by the throttle since the last emitted one. */
|
|
35
|
+
suppressed: number;
|
|
36
|
+
}
|
|
37
|
+
export interface BackpressureTelemetryOpts {
|
|
38
|
+
now?: () => number;
|
|
39
|
+
log?: (msg: string) => void;
|
|
40
|
+
/** Minimum gap between mid-episode log lines, per connection. */
|
|
41
|
+
logIntervalMs?: number;
|
|
42
|
+
}
|
|
43
|
+
/** Default throttle for mid-episode lines. Open/close always log. */
|
|
44
|
+
export declare const DEFAULT_LOG_INTERVAL_MS = 5000;
|
|
45
|
+
export declare class BackpressureTelemetry {
|
|
46
|
+
private readonly accounts;
|
|
47
|
+
private readonly now;
|
|
48
|
+
private readonly log;
|
|
49
|
+
private readonly logIntervalMs;
|
|
50
|
+
constructor(opts?: BackpressureTelemetryOpts);
|
|
51
|
+
private account;
|
|
52
|
+
/**
|
|
53
|
+
* Emit `body` unless the throttle withholds it. The first line for a connection
|
|
54
|
+
* always emits; afterwards at most one line per `logIntervalMs`, whatever its
|
|
55
|
+
* kind. A withheld line is counted so the next emitted one can disclose it —
|
|
56
|
+
* suppression must cost timing detail, never the volume of the loss.
|
|
57
|
+
*/
|
|
58
|
+
private throttledLog;
|
|
59
|
+
/**
|
|
60
|
+
* Record one discarded chunk.
|
|
61
|
+
*
|
|
62
|
+
* @returns the notice to forward to the client when this drop OPENS an
|
|
63
|
+
* episode, or `null` while an episode is already open (the client has been
|
|
64
|
+
* told; every further chunk is still counted).
|
|
65
|
+
*/
|
|
66
|
+
onDrop(taskId: string, conn: unknown, bytes: number): BackpressureNotice | null;
|
|
67
|
+
/**
|
|
68
|
+
* Record a successful delivery. Closes an open episode.
|
|
69
|
+
*
|
|
70
|
+
* @returns the closing notice (carrying the accurate episode total) when an
|
|
71
|
+
* episode was open, else `null`. Called on every delivery, so the no-episode
|
|
72
|
+
* path is a single WeakMap lookup.
|
|
73
|
+
*/
|
|
74
|
+
onDelivered(taskId: string, conn: unknown): BackpressureNotice | null;
|
|
75
|
+
/** Lifetime counters for a connection — diagnostics and tests. */
|
|
76
|
+
stats(conn: unknown): Readonly<ConnAccount> | undefined;
|
|
77
|
+
/**
|
|
78
|
+
* Explicit cleanup on detach — called from the same connection-teardown site that
|
|
79
|
+
* used to delete the old per-entry `backpressureRaised` flag, so accounts do not
|
|
80
|
+
* outlive their connection.
|
|
81
|
+
*/
|
|
82
|
+
release(conn: unknown): void;
|
|
83
|
+
private notice;
|
|
84
|
+
}
|
|
85
|
+
export {};
|
|
86
|
+
//# sourceMappingURL=backpressure-telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backpressure-telemetry.d.ts","sourceRoot":"","sources":["../../src/terminal/backpressure-telemetry.ts"],"names":[],"mappings":"AAyCA;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,UAAU,EAAE,OAAO,CAAC;IACpB,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qEAAqE;AACrE,eAAO,MAAM,uBAAuB,OAAQ,CAAC;AAE7C,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAwB;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;gBAE3B,IAAI,GAAE,yBAA8B;IAOhD,OAAO,CAAC,OAAO;IAmBf;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAgBpB;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IA0B/E;;;;;;OAMG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,kBAAkB,GAAG,IAAI;IAcrE,kEAAkE;IAClE,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,SAAS;IAIvD;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAI5B,OAAO,CAAC,MAAM;CASf"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* backpressure-telemetry.ts — accounting + notification policy for the WS
|
|
3
|
+
* drop-while-saturated path (iterate-2026-07-30-terminal-ws-drop-resync, FR-01.28).
|
|
4
|
+
*
|
|
5
|
+
* WHY THIS MODULE EXISTS. `PtyManager.deliverWithBackpressure` discards a pty
|
|
6
|
+
* chunk when the WS already has more than `wsBufferBytes` queued, and never
|
|
7
|
+
* resends it. That path shipped with ADR-067 and logged **nothing at all**, so
|
|
8
|
+
* after nine fixes in the terminal-smear class it was still UNPROVEN whether it
|
|
9
|
+
* fires in real sessions — the first thing this iterate had to establish. It also
|
|
10
|
+
* notified the client only ONCE per saturation episode, reporting the size of the
|
|
11
|
+
* FIRST dropped chunk only, which made the losses uncountable even in principle.
|
|
12
|
+
*
|
|
13
|
+
* This module owns three things that belong together and were previously either
|
|
14
|
+
* absent or smeared across the pty lifecycle owner:
|
|
15
|
+
*
|
|
16
|
+
* 1. ACCOUNTING — per connection: bytes and chunks lost in the current
|
|
17
|
+
* saturation episode, plus lifetime totals and an episode counter.
|
|
18
|
+
* 2. NOTIFICATION POLICY — one notice when an episode opens (so the client can
|
|
19
|
+
* react promptly) and one when it closes (carrying the accurate episode
|
|
20
|
+
* total). Deliberately NOT one per dropped chunk: pushing more frames into
|
|
21
|
+
* an already-saturated socket is exactly the wrong move.
|
|
22
|
+
* 3. RATE-LIMITED LOGGING — the FIRST line for a connection always emits (a real
|
|
23
|
+
* event must never be invisible); everything after it is throttled, INCLUDING
|
|
24
|
+
* episode open/close transitions. Throttling only the mid-episode lines was
|
|
25
|
+
* not enough: a connection whose `bufferedAmount` flaps across the threshold
|
|
26
|
+
* opens and closes episodes repeatedly and would emit two lines per flap
|
|
27
|
+
* forever, which is exactly the log flood AC-1 forbids (external review).
|
|
28
|
+
* Every emitted line carries the cumulative counters plus the number of
|
|
29
|
+
* suppressed lines, so throttling loses evidence of TIMING, never of VOLUME.
|
|
30
|
+
*
|
|
31
|
+
* The per-connection episode flag lives here rather than on `PtyEntry` (where it
|
|
32
|
+
* was `backpressureRaised`): the flag exists only to serve the notification policy,
|
|
33
|
+
* so it belongs with the policy.
|
|
34
|
+
*
|
|
35
|
+
* Keyed by a plain `Map` over `unknown`, deliberately NOT a `WeakMap`: `PtyManager`
|
|
36
|
+
* types a connection as `unknown` and its public API accepts a primitive, which a
|
|
37
|
+
* `WeakMap` key would reject with a runtime `TypeError` on the hot delivery path
|
|
38
|
+
* (external review). `release()` is called from the same connection-teardown site
|
|
39
|
+
* that used to delete the old per-entry flag, so the lifecycle is unchanged.
|
|
40
|
+
*/
|
|
41
|
+
/** Default throttle for mid-episode lines. Open/close always log. */
|
|
42
|
+
export const DEFAULT_LOG_INTERVAL_MS = 5_000;
|
|
43
|
+
export class BackpressureTelemetry {
|
|
44
|
+
accounts = new Map();
|
|
45
|
+
now;
|
|
46
|
+
log;
|
|
47
|
+
logIntervalMs;
|
|
48
|
+
constructor(opts = {}) {
|
|
49
|
+
this.now = opts.now ?? (() => Date.now());
|
|
50
|
+
// eslint-disable-next-line no-console
|
|
51
|
+
this.log = opts.log ?? ((m) => console.warn(m));
|
|
52
|
+
this.logIntervalMs = opts.logIntervalMs ?? DEFAULT_LOG_INTERVAL_MS;
|
|
53
|
+
}
|
|
54
|
+
account(taskId, conn) {
|
|
55
|
+
let a = this.accounts.get(conn);
|
|
56
|
+
if (!a) {
|
|
57
|
+
a = {
|
|
58
|
+
taskId,
|
|
59
|
+
episodeBytes: null,
|
|
60
|
+
episodeChunks: 0,
|
|
61
|
+
totalDroppedBytes: 0,
|
|
62
|
+
totalDroppedChunks: 0,
|
|
63
|
+
episodes: 0,
|
|
64
|
+
lastLogAt: 0,
|
|
65
|
+
everLogged: false,
|
|
66
|
+
suppressed: 0,
|
|
67
|
+
};
|
|
68
|
+
this.accounts.set(conn, a);
|
|
69
|
+
}
|
|
70
|
+
return a;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Emit `body` unless the throttle withholds it. The first line for a connection
|
|
74
|
+
* always emits; afterwards at most one line per `logIntervalMs`, whatever its
|
|
75
|
+
* kind. A withheld line is counted so the next emitted one can disclose it —
|
|
76
|
+
* suppression must cost timing detail, never the volume of the loss.
|
|
77
|
+
*/
|
|
78
|
+
throttledLog(a, body) {
|
|
79
|
+
const now = this.now();
|
|
80
|
+
if (a.everLogged && now - a.lastLogAt < this.logIntervalMs) {
|
|
81
|
+
a.suppressed += 1;
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const withheld = a.suppressed > 0 ? ` (+${a.suppressed} similar suppressed)` : "";
|
|
85
|
+
a.suppressed = 0;
|
|
86
|
+
a.everLogged = true;
|
|
87
|
+
a.lastLogAt = now;
|
|
88
|
+
this.log(`${body} sessionDropped=${a.totalDroppedBytes}B/${a.totalDroppedChunks} chunks` +
|
|
89
|
+
` episodes=${a.episodes}${withheld}`);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Record one discarded chunk.
|
|
93
|
+
*
|
|
94
|
+
* @returns the notice to forward to the client when this drop OPENS an
|
|
95
|
+
* episode, or `null` while an episode is already open (the client has been
|
|
96
|
+
* told; every further chunk is still counted).
|
|
97
|
+
*/
|
|
98
|
+
onDrop(taskId, conn, bytes) {
|
|
99
|
+
const a = this.account(taskId, conn);
|
|
100
|
+
const opening = a.episodeBytes === null;
|
|
101
|
+
if (opening) {
|
|
102
|
+
a.episodeBytes = 0;
|
|
103
|
+
a.episodeChunks = 0;
|
|
104
|
+
a.episodes += 1;
|
|
105
|
+
}
|
|
106
|
+
a.episodeBytes = (a.episodeBytes ?? 0) + bytes;
|
|
107
|
+
a.episodeChunks += 1;
|
|
108
|
+
a.totalDroppedBytes += bytes;
|
|
109
|
+
a.totalDroppedChunks += 1;
|
|
110
|
+
this.throttledLog(a, opening
|
|
111
|
+
? `[pty-manager] WS saturated — DISCARDING pty output for task=${a.taskId} ` +
|
|
112
|
+
`episode=${a.episodes} firstChunk=${bytes}B ` +
|
|
113
|
+
`(dropped and never resent; client will be asked to resync)`
|
|
114
|
+
: `[pty-manager] WS still saturated — task=${a.taskId} episode=${a.episodes} ` +
|
|
115
|
+
`episodeDropped=${a.episodeBytes}B/${a.episodeChunks} chunks`);
|
|
116
|
+
return opening ? this.notice(a, false) : null;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Record a successful delivery. Closes an open episode.
|
|
120
|
+
*
|
|
121
|
+
* @returns the closing notice (carrying the accurate episode total) when an
|
|
122
|
+
* episode was open, else `null`. Called on every delivery, so the no-episode
|
|
123
|
+
* path is a single WeakMap lookup.
|
|
124
|
+
*/
|
|
125
|
+
onDelivered(taskId, conn) {
|
|
126
|
+
const a = this.accounts.get(conn);
|
|
127
|
+
if (!a || a.episodeBytes === null)
|
|
128
|
+
return null;
|
|
129
|
+
const notice = this.notice(a, true);
|
|
130
|
+
this.throttledLog(a, `[pty-manager] WS drained — task=${a.taskId} episode=${a.episodes} ` +
|
|
131
|
+
`episodeDropped=${a.episodeBytes}B/${a.episodeChunks} chunks`);
|
|
132
|
+
a.episodeBytes = null;
|
|
133
|
+
a.episodeChunks = 0;
|
|
134
|
+
return notice;
|
|
135
|
+
}
|
|
136
|
+
/** Lifetime counters for a connection — diagnostics and tests. */
|
|
137
|
+
stats(conn) {
|
|
138
|
+
return this.accounts.get(conn);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Explicit cleanup on detach — called from the same connection-teardown site that
|
|
142
|
+
* used to delete the old per-entry `backpressureRaised` flag, so accounts do not
|
|
143
|
+
* outlive their connection.
|
|
144
|
+
*/
|
|
145
|
+
release(conn) {
|
|
146
|
+
this.accounts.delete(conn);
|
|
147
|
+
}
|
|
148
|
+
notice(a, episodeEnded) {
|
|
149
|
+
return {
|
|
150
|
+
droppedBytes: a.episodeBytes ?? 0,
|
|
151
|
+
droppedChunks: a.episodeChunks,
|
|
152
|
+
totalDroppedBytes: a.totalDroppedBytes,
|
|
153
|
+
episode: a.episodes,
|
|
154
|
+
episodeEnded,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=backpressure-telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backpressure-telemetry.js","sourceRoot":"","sources":["../../src/terminal/backpressure-telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export declare const ITERATE_C_WIPE_MARKER = ".iterate-c-wiped.marker";
|
|
2
|
+
export interface BootWipeDeps {
|
|
3
|
+
readdir: (dir: string) => Promise<string[]>;
|
|
4
|
+
unlink: (p: string) => Promise<void>;
|
|
5
|
+
writeFile: (p: string, data: string) => Promise<void>;
|
|
6
|
+
stat: (p: string) => Promise<{
|
|
7
|
+
isFile(): boolean;
|
|
8
|
+
} | null>;
|
|
9
|
+
}
|
|
10
|
+
export interface BootWipeOpts {
|
|
11
|
+
/** Absolute path to the scrollback directory (e.g. <home>/.shipwright-webui/terminal-scrollback). */
|
|
12
|
+
dir: string;
|
|
13
|
+
/** Injected for tests; defaults to node:fs/promises. */
|
|
14
|
+
deps?: Partial<BootWipeDeps>;
|
|
15
|
+
/** Injected for tests; defaults to console.warn. */
|
|
16
|
+
logWarn?: (msg: string) => void;
|
|
17
|
+
/** Injected for tests; defaults to console.log. */
|
|
18
|
+
logInfo?: (msg: string) => void;
|
|
19
|
+
}
|
|
20
|
+
export interface BootWipeResult {
|
|
21
|
+
/** True if the marker existed before this run (i.e. wipe was skipped). */
|
|
22
|
+
skipped: boolean;
|
|
23
|
+
/** Number of `.log*` files unlinked successfully. */
|
|
24
|
+
deleted: number;
|
|
25
|
+
/** Number of per-file errors (kept going). */
|
|
26
|
+
errors: number;
|
|
27
|
+
/** Whether the marker was written this run. */
|
|
28
|
+
markerWritten: boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Idempotent one-shot wipe of legacy byte-stream scrollback files.
|
|
32
|
+
*
|
|
33
|
+
* Behavior:
|
|
34
|
+
* - If the marker exists → return `{skipped: true}` immediately.
|
|
35
|
+
* - Else: list dir, unlink every entry matching `*.log` / `*.log.\d+`,
|
|
36
|
+
* count successes + failures, then write the marker.
|
|
37
|
+
* - Wipe failure of an individual file is non-fatal; we still write
|
|
38
|
+
* the marker so subsequent boots don't retry the whole sweep.
|
|
39
|
+
* - Marker-write failure: log warn but treat as success (the wipe
|
|
40
|
+
* itself succeeded; missing marker is a recovery edge case that
|
|
41
|
+
* the operator can re-trigger by deleting `.shipwright-webui/`).
|
|
42
|
+
*
|
|
43
|
+
* Returns a structured result so callers (boot path) can log a single
|
|
44
|
+
* summary line.
|
|
45
|
+
*/
|
|
46
|
+
export declare function runBootWipe(opts: BootWipeOpts): Promise<BootWipeResult>;
|
|
47
|
+
//# sourceMappingURL=boot-wipe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boot-wipe.d.ts","sourceRoot":"","sources":["../../src/terminal/boot-wipe.ts"],"names":[],"mappings":"AAqCA,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAE/D,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,MAAM,IAAI,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,YAAY;IAC3B,qGAAqG;IACrG,GAAG,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7B,oDAAoD;IACpD,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,mDAAmD;IACnD,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,OAAO,EAAE,OAAO,CAAC;IACjB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,aAAa,EAAE,OAAO,CAAC;CACxB;AAkBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAkE7E"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* boot-wipe.ts — Iterate C (ADR-087).
|
|
3
|
+
*
|
|
4
|
+
* One-shot wipe of legacy `<scrollbackDir>/*.log*` files at first boot
|
|
5
|
+
* after Iterate C deploys. Replaces the 24-h TTL natural-decay strategy
|
|
6
|
+
* with a cleaner cut: the chunked-replay path is gone, so byte-stream
|
|
7
|
+
* scrollback files have no remaining consumer and accumulate as pure
|
|
8
|
+
* disk waste. We wipe once, mark the directory, and never wipe again.
|
|
9
|
+
*
|
|
10
|
+
* Architecture invariants:
|
|
11
|
+
* 1. Idempotent — a marker file `.iterate-c-wiped.marker` records that
|
|
12
|
+
* the wipe ran. Subsequent boots short-circuit when the marker
|
|
13
|
+
* exists. Loss of the marker after a successful wipe MUST NOT
|
|
14
|
+
* cause re-wipe of new scrollback that may have accumulated post-
|
|
15
|
+
* Iterate-C (we treat that as a stable post-conditioned state).
|
|
16
|
+
* 2. Marker is written AFTER unlinks complete (NEVER before — a crash
|
|
17
|
+
* between marker-write and unlink would leave files orphaned with
|
|
18
|
+
* no future wipe path).
|
|
19
|
+
* 3. Per-file failure is non-fatal — log a warn, continue with the
|
|
20
|
+
* next file. The marker is still written if ANY file was removed
|
|
21
|
+
* (partial wipe is a stable post-condition; the operator can
|
|
22
|
+
* manually clean stragglers via the OS file manager).
|
|
23
|
+
* 4. Snapshot files (`.snapshot`) are PRESERVED — those are the
|
|
24
|
+
* Iterate-B replay artifacts we explicitly want to keep.
|
|
25
|
+
* 5. Best-effort overall: dir-read failure logs a warn and returns
|
|
26
|
+
* without writing the marker (so the wipe re-attempts on next
|
|
27
|
+
* boot). Boot path MUST NOT crash on wipe failure.
|
|
28
|
+
*
|
|
29
|
+
* Testability:
|
|
30
|
+
* - `runBootWipe(opts)` is a pure function over a deps object (fs +
|
|
31
|
+
* dir) so unit tests can stub fs without touching disk. Production
|
|
32
|
+
* wires `node:fs/promises` directly.
|
|
33
|
+
*/
|
|
34
|
+
import * as fsAsync from "node:fs/promises";
|
|
35
|
+
import * as path from "node:path";
|
|
36
|
+
export const ITERATE_C_WIPE_MARKER = ".iterate-c-wiped.marker";
|
|
37
|
+
const LOG_FILE_RE = /\.log(?:\.\d+)?$/;
|
|
38
|
+
const defaultDeps = {
|
|
39
|
+
readdir: (dir) => fsAsync.readdir(dir),
|
|
40
|
+
unlink: (p) => fsAsync.unlink(p),
|
|
41
|
+
writeFile: (p, data) => fsAsync.writeFile(p, data, { encoding: "utf8" }),
|
|
42
|
+
stat: async (p) => {
|
|
43
|
+
try {
|
|
44
|
+
const s = await fsAsync.stat(p);
|
|
45
|
+
return { isFile: () => s.isFile() };
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Idempotent one-shot wipe of legacy byte-stream scrollback files.
|
|
54
|
+
*
|
|
55
|
+
* Behavior:
|
|
56
|
+
* - If the marker exists → return `{skipped: true}` immediately.
|
|
57
|
+
* - Else: list dir, unlink every entry matching `*.log` / `*.log.\d+`,
|
|
58
|
+
* count successes + failures, then write the marker.
|
|
59
|
+
* - Wipe failure of an individual file is non-fatal; we still write
|
|
60
|
+
* the marker so subsequent boots don't retry the whole sweep.
|
|
61
|
+
* - Marker-write failure: log warn but treat as success (the wipe
|
|
62
|
+
* itself succeeded; missing marker is a recovery edge case that
|
|
63
|
+
* the operator can re-trigger by deleting `.shipwright-webui/`).
|
|
64
|
+
*
|
|
65
|
+
* Returns a structured result so callers (boot path) can log a single
|
|
66
|
+
* summary line.
|
|
67
|
+
*/
|
|
68
|
+
export async function runBootWipe(opts) {
|
|
69
|
+
const deps = {
|
|
70
|
+
...defaultDeps,
|
|
71
|
+
...(opts.deps ?? {}),
|
|
72
|
+
};
|
|
73
|
+
const logWarn = opts.logWarn ?? ((m) => console.warn(m));
|
|
74
|
+
const logInfo = opts.logInfo ?? ((m) => console.log(m));
|
|
75
|
+
const markerPath = path.join(opts.dir, ITERATE_C_WIPE_MARKER);
|
|
76
|
+
const existing = await deps.stat(markerPath);
|
|
77
|
+
if (existing && existing.isFile()) {
|
|
78
|
+
return { skipped: true, deleted: 0, errors: 0, markerWritten: false };
|
|
79
|
+
}
|
|
80
|
+
let entries;
|
|
81
|
+
try {
|
|
82
|
+
entries = await deps.readdir(opts.dir);
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
// Dir doesn't exist OR not readable — non-fatal; nothing to wipe.
|
|
86
|
+
// Don't write the marker either; on next boot the dir may exist and
|
|
87
|
+
// we'll retry the sweep cleanly.
|
|
88
|
+
logWarn(`[boot-wipe] scrollback dir not readable; skipping wipe (${err.message})`);
|
|
89
|
+
return { skipped: false, deleted: 0, errors: 0, markerWritten: false };
|
|
90
|
+
}
|
|
91
|
+
let deleted = 0;
|
|
92
|
+
let errors = 0;
|
|
93
|
+
for (const name of entries) {
|
|
94
|
+
if (!LOG_FILE_RE.test(name))
|
|
95
|
+
continue;
|
|
96
|
+
const fullPath = path.join(opts.dir, name);
|
|
97
|
+
try {
|
|
98
|
+
await deps.unlink(fullPath);
|
|
99
|
+
deleted++;
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
errors++;
|
|
103
|
+
logWarn(`[boot-wipe] unlink failed for ${name}: ${err.message}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Write the marker AFTER unlinks complete. Per the hard rule in the
|
|
107
|
+
// iterate spec: marker write failure must NOT trigger re-wipe — log
|
|
108
|
+
// warn but treat as wiped if any files were removed.
|
|
109
|
+
let markerWritten = false;
|
|
110
|
+
try {
|
|
111
|
+
await deps.writeFile(markerPath, `# iterate-c boot wipe marker\n# wiped=${deleted} errors=${errors} ts=${new Date().toISOString()}\n`);
|
|
112
|
+
markerWritten = true;
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
logWarn(`[boot-wipe] marker write failed: ${err.message} — wipe stays effective; manual marker creation may be needed to suppress next-boot retry`);
|
|
116
|
+
}
|
|
117
|
+
if (deleted > 0 || errors > 0) {
|
|
118
|
+
logInfo(`[boot-wipe] iterate-C scrollback wipe complete: deleted=${deleted} errors=${errors} markerWritten=${markerWritten}`);
|
|
119
|
+
}
|
|
120
|
+
return { skipped: false, deleted, errors, markerWritten };
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=boot-wipe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boot-wipe.js","sourceRoot":"","sources":["../../src/terminal/boot-wipe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import pkg from "@xterm/headless";
|
|
2
|
+
declare const Terminal: typeof pkg.Terminal;
|
|
3
|
+
type XtermTerminal = InstanceType<typeof Terminal>;
|
|
4
|
+
export interface HeadlessMirrorOpts {
|
|
5
|
+
taskId: string;
|
|
6
|
+
cols: number;
|
|
7
|
+
rows: number;
|
|
8
|
+
/**
|
|
9
|
+
* Scrollback depth for the live mirror. xterm.js default is 1000.
|
|
10
|
+
* Matches `EmbeddedTerminal.tsx` client-side scrollback so visible
|
|
11
|
+
* regions line up.
|
|
12
|
+
*/
|
|
13
|
+
scrollback?: number;
|
|
14
|
+
}
|
|
15
|
+
export declare class HeadlessMirror {
|
|
16
|
+
readonly taskId: string;
|
|
17
|
+
private term;
|
|
18
|
+
private cols;
|
|
19
|
+
private rows;
|
|
20
|
+
private readonly scrollback;
|
|
21
|
+
private disposed;
|
|
22
|
+
/**
|
|
23
|
+
* Tracks unresolved write() resolvers. serializeStable() awaits the
|
|
24
|
+
* corresponding promises before snapshotting so the parser cannot be
|
|
25
|
+
* mid-CSI / mid-OSC when the serialize callback runs (Gemini
|
|
26
|
+
* external-review #4 + architecture invariant #3 + external code
|
|
27
|
+
* review HIGH: tracking resolvers explicitly so `dispose()` can
|
|
28
|
+
* forcibly resolve them and never hang `flushPendingWrites`).
|
|
29
|
+
*
|
|
30
|
+
* Stored as a Map of Promise -> resolver so dispose() can drain the
|
|
31
|
+
* set without waiting for parser callbacks that may never fire on a
|
|
32
|
+
* disposed Terminal. The set is bounded by the in-flight write count.
|
|
33
|
+
*/
|
|
34
|
+
private pendingWrites;
|
|
35
|
+
constructor(opts: HeadlessMirrorOpts);
|
|
36
|
+
/**
|
|
37
|
+
* Test-only handle on the underlying Terminal. Real callers go through
|
|
38
|
+
* write/serializeStable/dispose; the fixture test needs to feed bytes
|
|
39
|
+
* and snapshot visible lines directly.
|
|
40
|
+
*/
|
|
41
|
+
get terminalForTesting(): XtermTerminal;
|
|
42
|
+
/**
|
|
43
|
+
* Feed raw bytes into the headless mirror. Awaits the parser callback
|
|
44
|
+
* before resolving — this is architecture invariant #3, required for
|
|
45
|
+
* mid-escape split correctness.
|
|
46
|
+
*
|
|
47
|
+
* Accepts Buffer | Uint8Array | string. node-pty emits strings by
|
|
48
|
+
* default; the snapshot pipeline can also feed Buffers.
|
|
49
|
+
*/
|
|
50
|
+
write(data: Buffer | Uint8Array | string): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Await every in-flight write callback. Used internally by
|
|
53
|
+
* serializeStable so the parser is in a stable state when round1
|
|
54
|
+
* runs (architecture invariant #3 + external review Gemini #4).
|
|
55
|
+
*/
|
|
56
|
+
private flushPendingWrites;
|
|
57
|
+
/**
|
|
58
|
+
* Adjust dimensions. Headless terminal preserves scrollback contents
|
|
59
|
+
* across resize; rewrap behavior follows xterm.js's reflow.
|
|
60
|
+
*/
|
|
61
|
+
resize(cols: number, rows: number): void;
|
|
62
|
+
/**
|
|
63
|
+
* M2 double-serialize. Per spike T2: `serialize → write-back → serialize`
|
|
64
|
+
* is idempotent at round2 == round3, so this produces the stable fixed
|
|
65
|
+
* point that the client's xterm.js will reproduce byte-for-byte.
|
|
66
|
+
*
|
|
67
|
+
* Procedure:
|
|
68
|
+
* raw = primary serialize (may contain 1-char drift artifacts)
|
|
69
|
+
* warm = transient Terminal, replay raw, serialize → stable (round2)
|
|
70
|
+
* return stable, dispose warm
|
|
71
|
+
*
|
|
72
|
+
* Contract: when the returned `stable` string is later written into a
|
|
73
|
+
* fresh client-side xterm Terminal of the same cols/rows, that
|
|
74
|
+
* Terminal's visible buffer (round3 application) is line-for-line
|
|
75
|
+
* equal to the warm Terminal's visible buffer at the moment of round2
|
|
76
|
+
* serialization. The live mirror's own visible buffer is round1 — it
|
|
77
|
+
* may differ from round2 by one or two cells on resize boundaries.
|
|
78
|
+
* That is the documented one-shot artifact M2 trades for idempotence.
|
|
79
|
+
*
|
|
80
|
+
* The warm Terminal MUST use identical cols/rows + scrollback so the
|
|
81
|
+
* replay buffer is identical in shape.
|
|
82
|
+
*/
|
|
83
|
+
serializeStable(): Promise<string>;
|
|
84
|
+
/**
|
|
85
|
+
* Same as serializeStable() but also returns the canonical (round2)
|
|
86
|
+
* visible-buffer snapshot. Test-only — production callers use
|
|
87
|
+
* serializeStable() which discards the buffer. The round2 buffer is
|
|
88
|
+
* the contract reference: a client replay of `stable` produces the
|
|
89
|
+
* same lines.
|
|
90
|
+
*
|
|
91
|
+
* `stable` additionally carries a trailing DECTCEM (`?25h` / `?25l`):
|
|
92
|
+
* addon-serialize never serializes cursor visibility, so it is restored
|
|
93
|
+
* explicitly here — see `readCursorHidden()`.
|
|
94
|
+
*/
|
|
95
|
+
serializeStableWithCanonicalBuffer(): Promise<{
|
|
96
|
+
stable: string;
|
|
97
|
+
canonicalLines: string[];
|
|
98
|
+
}>;
|
|
99
|
+
/**
|
|
100
|
+
* Live mirror's DECTCEM state — `true` when the cursor is hidden.
|
|
101
|
+
* addon-serialize never serializes `?25`, so `serializeStable()` restores
|
|
102
|
+
* it explicitly: else a reattach shows a ghost cursor that Claude Code
|
|
103
|
+
* (fullscreen under `CLAUDE_CODE_NO_FLICKER=1`, ADR-095/098) believes is
|
|
104
|
+
* hidden, jumping with every CUP redraw. The `_core.coreService` peek is
|
|
105
|
+
* an internal-surface read (xterm exact-pinned 6.0.0, CLAUDE.md rule 22),
|
|
106
|
+
* correct across `?25l` / `?25h` AND soft-reset. Unreadable internal →
|
|
107
|
+
* `false` (pre-fix behaviour) so a future xterm refactor degrades safely.
|
|
108
|
+
*/
|
|
109
|
+
private readCursorHidden;
|
|
110
|
+
/** Current dimensions. Used by snapshot-store to write the header. */
|
|
111
|
+
get dimensions(): {
|
|
112
|
+
cols: number;
|
|
113
|
+
rows: number;
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Decoded text of the visible viewport (the bottom page) — scrollback
|
|
117
|
+
* excluded, ANSI already interpreted into cells. Reads rows
|
|
118
|
+
* `baseY … baseY + rows` so it always captures the bottom of the
|
|
119
|
+
* buffer regardless of scroll state. Trailing whitespace per line is
|
|
120
|
+
* trimmed.
|
|
121
|
+
*
|
|
122
|
+
* iterate-2026-05-18-inbox-terminal-prompts: consumed by
|
|
123
|
+
* `PtyManager.peekTerminalText()` so the inbox can detect a *waiting*
|
|
124
|
+
* `AskUserQuestion` picker — the picker is on-screen, never in the
|
|
125
|
+
* JSONL. Best-effort: returns "" on a disposed mirror or any
|
|
126
|
+
* buffer-read error (never throws — it sits behind an inbox poll).
|
|
127
|
+
*/
|
|
128
|
+
getVisibleText(): string;
|
|
129
|
+
/**
|
|
130
|
+
* Idempotent. External code review HIGH: drain pending writes BEFORE
|
|
131
|
+
* disposing the Terminal so any `flushPendingWrites()` awaiters can
|
|
132
|
+
* resolve immediately rather than wait forever on parser callbacks
|
|
133
|
+
* that will never fire on a disposed Terminal.
|
|
134
|
+
*/
|
|
135
|
+
dispose(): void;
|
|
136
|
+
get isDisposed(): boolean;
|
|
137
|
+
}
|
|
138
|
+
export {};
|
|
139
|
+
//# sourceMappingURL=headless-mirror.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless-mirror.d.ts","sourceRoot":"","sources":["../../src/terminal/headless-mirror.ts"],"names":[],"mappings":"AAoCA,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAElC,QAAA,MAAQ,QAAQ,qBAAQ,CAAC;AAKzB,KAAK,aAAa,GAAG,YAAY,CAAC,OAAO,QAAQ,CAAC,CAAC;AAgCnD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAoCD,qBAAa,cAAc;IACzB,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAS;IACzB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,aAAa,CAAwC;gBAEjD,IAAI,EAAE,kBAAkB;IAepC;;;;OAIG;IACH,IAAI,kBAAkB,IAAI,aAAa,CAEtC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCxD;;;;OAIG;YACW,kBAAkB;IAShC;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IASxC;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAKxC;;;;;;;;;;OAUG;IACG,kCAAkC,IAAI,OAAO,CAAC;QAClD,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;IAyDF;;;;;;;;;OASG;IACH,OAAO,CAAC,gBAAgB;IAWxB,sEAAsE;IACtE,IAAI,UAAU,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAE/C;IAED;;;;;;;;;;;;OAYG;IACH,cAAc,IAAI,MAAM;IAgBxB;;;;;OAKG;IACH,OAAO,IAAI,IAAI;IAqBf,IAAI,UAAU,IAAI,OAAO,CAExB;CACF"}
|