@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,211 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Inbox derivation — surfaces pending interactions from the session JSONL.
|
|
3
|
+
*
|
|
4
|
+
* Input: parsed events (from session-parser) + the set of tool names we
|
|
5
|
+
* consider "user-blocking" (allowlist).
|
|
6
|
+
* Output: tool_use ids whose matching tool_result has NOT yet appeared,
|
|
7
|
+
* filtered by the allowlist. These are surfaced to the user as
|
|
8
|
+
* inbox entries ("Waiting for you to answer in your chat client").
|
|
9
|
+
*
|
|
10
|
+
* Rationale for allowlist (GPT MAJOR 8): plain long-running tools like
|
|
11
|
+
* `Bash` open-ended commands aren't user-blocking — they finish on their
|
|
12
|
+
* own. Only a narrow set is: AskUserQuestion + plugin-registered ones.
|
|
13
|
+
*
|
|
14
|
+
* Labelled "best-effort" in the UI per round-3 integration: tool_use
|
|
15
|
+
* without matching tool_result is a heuristic, not a semantic contract.
|
|
16
|
+
*
|
|
17
|
+
* Persisted state lives in the SdkSessionsStore per task:
|
|
18
|
+
* - `pendingToolUseIds` — currently unresolved ids
|
|
19
|
+
* - `dismissedToolUseIds` — user clicked "Dismiss" on a false positive
|
|
20
|
+
* - `lastProcessedByteOffset` — incremental marker (unused in v1
|
|
21
|
+
* because deriveInbox reparses from top; kept as the field the
|
|
22
|
+
* Sub-iterate 1 fastpath will use)
|
|
23
|
+
*/
|
|
24
|
+
import { extractToolResults, extractToolUses } from "./session-parser.js";
|
|
25
|
+
export const DEFAULT_USER_BLOCKING_TOOLS = new Set(["AskUserQuestion"]);
|
|
26
|
+
export function deriveInbox(args) {
|
|
27
|
+
const allowlist = args.allowlist ?? DEFAULT_USER_BLOCKING_TOOLS;
|
|
28
|
+
const dismissed = args.dismissed ?? new Set();
|
|
29
|
+
const uses = extractToolUses(args.events);
|
|
30
|
+
const results = extractToolResults(args.events);
|
|
31
|
+
const resolvedIds = new Set(results.map((r) => r.toolUseId));
|
|
32
|
+
const pending = [];
|
|
33
|
+
for (const u of uses) {
|
|
34
|
+
if (resolvedIds.has(u.id))
|
|
35
|
+
continue;
|
|
36
|
+
if (dismissed.has(u.id))
|
|
37
|
+
continue;
|
|
38
|
+
if (!allowlist.has(u.name))
|
|
39
|
+
continue;
|
|
40
|
+
pending.push({
|
|
41
|
+
toolUseId: u.id,
|
|
42
|
+
toolName: u.name,
|
|
43
|
+
input: u.input,
|
|
44
|
+
atAssistantEvent: u.atAssistantEvent,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
pending,
|
|
49
|
+
allToolUseIds: uses.map((u) => u.id),
|
|
50
|
+
resolvedToolUseIds: Array.from(resolvedIds),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
// ---------- plain-text "awaiting user" detection (iterate-2026-05-15) ----------
|
|
54
|
+
//
|
|
55
|
+
// `deriveInbox` only sees structured `AskUserQuestion` tool_use blocks. In an
|
|
56
|
+
// interactive Claude Code TUI session — exactly what the embedded terminal
|
|
57
|
+
// hosts — Claude usually asks "how should I proceed?" as plain assistant text
|
|
58
|
+
// at the end of a turn (a conversational question or a numbered option-menu),
|
|
59
|
+
// with no tool_use block at all. `detectAwaitingUserQuestion` surfaces those:
|
|
60
|
+
// a session whose LATEST conversational turn is a turn-ended assistant message
|
|
61
|
+
// (no trailing tool_use, no user reply after it) whose text reads as a request
|
|
62
|
+
// for input. Detection is content-only — pure over already-parsed events — so
|
|
63
|
+
// the route's mtime-keyed derive cache invalidates it for free.
|
|
64
|
+
/** Max chars of detected question text surfaced to the inbox (length cap). */
|
|
65
|
+
export const MAX_QUESTION_TEXT_LEN = 2000;
|
|
66
|
+
/** Allowlist (not denylist) — only user/assistant events bound a "turn". */
|
|
67
|
+
function isConversational(e) {
|
|
68
|
+
return e.kind === "user" || e.kind === "assistant";
|
|
69
|
+
}
|
|
70
|
+
function assistantHasToolUse(e) {
|
|
71
|
+
if (e.kind !== "assistant" || !Array.isArray(e.content))
|
|
72
|
+
return false;
|
|
73
|
+
return e.content.some((b) => b != null &&
|
|
74
|
+
typeof b === "object" &&
|
|
75
|
+
b.type === "tool_use");
|
|
76
|
+
}
|
|
77
|
+
function assistantTextBlocks(e) {
|
|
78
|
+
if (e.kind !== "assistant" || !Array.isArray(e.content))
|
|
79
|
+
return [];
|
|
80
|
+
const out = [];
|
|
81
|
+
for (const b of e.content) {
|
|
82
|
+
if (b != null && typeof b === "object") {
|
|
83
|
+
const bb = b;
|
|
84
|
+
if (bb.type === "text" && typeof bb.text === "string")
|
|
85
|
+
out.push(bb.text);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return out;
|
|
89
|
+
}
|
|
90
|
+
/** Drop fenced ```code``` blocks + inline `code` spans before the heuristic. */
|
|
91
|
+
function stripCode(text) {
|
|
92
|
+
return text.replace(/```[\s\S]*?```/g, " ").replace(/`[^`\n]*`/g, " ");
|
|
93
|
+
}
|
|
94
|
+
const LIST_ITEM_RE = /^(?:[-*]\s+)?(?:\*\*|__)?\s*(?:\d{1,3}|[a-zA-Z])[.)]/;
|
|
95
|
+
function isListItem(line) {
|
|
96
|
+
return LIST_ITEM_RE.test(line);
|
|
97
|
+
}
|
|
98
|
+
function endsWithQuestionMark(line) {
|
|
99
|
+
// Strip trailing decoration (whitespace, quotes, markdown emphasis, closing
|
|
100
|
+
// brackets, pictographic emoji) before testing — LLM output often closes a
|
|
101
|
+
// question with `?**`, `?"`, `? 🤔`, etc.
|
|
102
|
+
const cleaned = line.replace(/[\s"'«»“”‘’*_`~)\]}>\p{Extended_Pictographic}]+$/u, "");
|
|
103
|
+
return cleaned.endsWith("?");
|
|
104
|
+
}
|
|
105
|
+
/** A non-list prose line longer than this, sitting AFTER an enumerated list,
|
|
106
|
+
* marks the turn as a report rather than a menu awaiting a choice. Short
|
|
107
|
+
* closers ("Let me know.", "Your call.") stay under it; a full declarative
|
|
108
|
+
* sentence does not. */
|
|
109
|
+
const SUBSTANTIAL_PROSE_LEN = 40;
|
|
110
|
+
/**
|
|
111
|
+
* True when the assembled assistant-turn text reads as a request for the
|
|
112
|
+
* user's input — its tail ends with a question mark or an enumerated option
|
|
113
|
+
* list. End-anchored:
|
|
114
|
+
* - a `?`-terminated line is a strong signal and wins outright;
|
|
115
|
+
* - an enumerated list is a weaker signal (lists also appear in reports), so
|
|
116
|
+
* it only counts when no substantial prose line follows it.
|
|
117
|
+
*/
|
|
118
|
+
function looksLikeAwaitingQuestion(turnText) {
|
|
119
|
+
const lines = stripCode(turnText)
|
|
120
|
+
.split("\n")
|
|
121
|
+
.map((l) => l.trim())
|
|
122
|
+
.filter((l) => l.length > 0);
|
|
123
|
+
if (lines.length === 0)
|
|
124
|
+
return false;
|
|
125
|
+
const tail = lines.slice(-8);
|
|
126
|
+
let signalIdx = -1;
|
|
127
|
+
for (let i = 0; i < tail.length; i++) {
|
|
128
|
+
if (endsWithQuestionMark(tail[i]) || isListItem(tail[i]))
|
|
129
|
+
signalIdx = i;
|
|
130
|
+
}
|
|
131
|
+
if (signalIdx === -1)
|
|
132
|
+
return false;
|
|
133
|
+
// A `?`-terminated signal line is decisive on its own.
|
|
134
|
+
if (endsWithQuestionMark(tail[signalIdx]))
|
|
135
|
+
return true;
|
|
136
|
+
// Otherwise the signal is a list item — reject if a substantial prose line
|
|
137
|
+
// follows it (the turn moved on from the list into a report).
|
|
138
|
+
for (let i = signalIdx + 1; i < tail.length; i++) {
|
|
139
|
+
if (!isListItem(tail[i]) && tail[i].length > SUBSTANTIAL_PROSE_LEN) {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Surfaces a plain-text "awaiting user" question for the session, or null.
|
|
147
|
+
* Mutually exclusive with a pending tool_use by construction: a pending
|
|
148
|
+
* tool_use leaves a trailing assistant `tool_use` block, which step 3 rejects.
|
|
149
|
+
*/
|
|
150
|
+
export function detectAwaitingUserQuestion(events) {
|
|
151
|
+
// 1. Latest conversational event (allowlist: user | assistant).
|
|
152
|
+
let lastIdx = -1;
|
|
153
|
+
for (let i = events.length - 1; i >= 0; i--) {
|
|
154
|
+
if (isConversational(events[i])) {
|
|
155
|
+
lastIdx = i;
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (lastIdx === -1)
|
|
160
|
+
return null;
|
|
161
|
+
// 2. A trailing user event (real message OR tool_result) — Claude is not
|
|
162
|
+
// waiting on the user.
|
|
163
|
+
if (events[lastIdx].kind !== "assistant")
|
|
164
|
+
return null;
|
|
165
|
+
// 3. Mid-action guard: the latest assistant event still carries a tool_use
|
|
166
|
+
// (Claude is acting; a pending AskUserQuestion is handled by deriveInbox).
|
|
167
|
+
if (assistantHasToolUse(events[lastIdx]))
|
|
168
|
+
return null;
|
|
169
|
+
// 4. Gather the trailing assistant turn — back to the previous `user` event.
|
|
170
|
+
let turnStart = lastIdx;
|
|
171
|
+
for (let i = lastIdx - 1; i >= 0; i--) {
|
|
172
|
+
if (events[i].kind === "user")
|
|
173
|
+
break;
|
|
174
|
+
if (events[i].kind === "assistant")
|
|
175
|
+
turnStart = i;
|
|
176
|
+
// non-conversational events are skipped (allowlist)
|
|
177
|
+
}
|
|
178
|
+
// 5. Assemble the turn's text blocks.
|
|
179
|
+
const parts = [];
|
|
180
|
+
for (let i = turnStart; i <= lastIdx; i++) {
|
|
181
|
+
if (events[i].kind === "assistant")
|
|
182
|
+
parts.push(...assistantTextBlocks(events[i]));
|
|
183
|
+
}
|
|
184
|
+
const turnText = parts.join("\n").trim();
|
|
185
|
+
if (!turnText)
|
|
186
|
+
return null;
|
|
187
|
+
// 6. Heuristic.
|
|
188
|
+
if (!looksLikeAwaitingQuestion(turnText))
|
|
189
|
+
return null;
|
|
190
|
+
const rawId = events[lastIdx].uuid;
|
|
191
|
+
const questionId = typeof rawId === "string" && rawId.length > 0
|
|
192
|
+
? rawId
|
|
193
|
+
: `awaiting-${turnStart}-${lastIdx}`;
|
|
194
|
+
const questionText = turnText.length > MAX_QUESTION_TEXT_LEN
|
|
195
|
+
? "…" + turnText.slice(turnText.length - MAX_QUESTION_TEXT_LEN)
|
|
196
|
+
: turnText;
|
|
197
|
+
return { questionId, questionText, atAssistantEvent: lastIdx };
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Unified per-session inbox derivation. Runs the tool_use path
|
|
201
|
+
* (`deriveInbox`) and the plain-text-question path
|
|
202
|
+
* (`detectAwaitingUserQuestion`) and applies the precedence rule in ONE
|
|
203
|
+
* place: a pending tool_use (e.g. AskUserQuestion) wins — a session with a
|
|
204
|
+
* pending tool interaction never also surfaces a text question.
|
|
205
|
+
*/
|
|
206
|
+
export function deriveSessionInbox(args) {
|
|
207
|
+
const base = deriveInbox(args);
|
|
208
|
+
const textQuestion = base.pending.length > 0 ? null : detectAwaitingUserQuestion(args.events);
|
|
209
|
+
return { ...base, textQuestion };
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=inbox-derive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbox-derive.js","sourceRoot":"","sources":["../../src/core/inbox-derive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare const CH_LF = 10;
|
|
2
|
+
export declare const CH_LBRACE = 123;
|
|
3
|
+
export declare const MAX_RECOVERY_LINE_BYTES = 1000000;
|
|
4
|
+
export declare function skipJsonWs(line: string, from: number): number;
|
|
5
|
+
/**
|
|
6
|
+
* `JSON.parse` restricted to plain objects. Returns undefined for invalid JSON
|
|
7
|
+
* AND for valid-but-wrong-shape input (a bare scalar or a top-level array):
|
|
8
|
+
* callers do `raw.event`, so a non-object is a fragment, not a record.
|
|
9
|
+
*/
|
|
10
|
+
export declare function tryParseObject(candidate: string): Record<string, unknown> | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Decode one JSON object beginning at `start`, by walking candidate end
|
|
13
|
+
* positions at each `}` and letting native `JSON.parse` validate each slice.
|
|
14
|
+
*
|
|
15
|
+
* This is SELF-CORRECTING for braces inside string values: a candidate ending
|
|
16
|
+
* at an in-string `}` is unbalanced and simply fails to parse, so the walk
|
|
17
|
+
* continues. The SHORTEST valid prefix is the correct record boundary, because
|
|
18
|
+
* any shorter prefix ending at `}` is necessarily unbalanced.
|
|
19
|
+
*
|
|
20
|
+
* Deliberately NOT a hand-rolled JSON lexer (external review R2): brace
|
|
21
|
+
* counting with escaped quotes and backslash runs is a classic source of latent
|
|
22
|
+
* bugs, and delegating validation to V8 removes that whole class.
|
|
23
|
+
*/
|
|
24
|
+
export declare function decodeObjectAt(line: string, start: number): {
|
|
25
|
+
value: Record<string, unknown>;
|
|
26
|
+
end: number;
|
|
27
|
+
} | null;
|
|
28
|
+
//# sourceMappingURL=jsonl-decode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonl-decode.d.ts","sourceRoot":"","sources":["../../src/core/jsonl-decode.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,KAAK,KAAK,CAAC;AACxB,eAAO,MAAM,SAAS,MAAO,CAAC;AAS9B,eAAO,MAAM,uBAAuB,UAAY,CAAC;AAMjD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAI7D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAWrF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgBxD"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* jsonl-decode.ts — JSON decoding primitives for the record splitter.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from `jsonl-records.ts` (iterate-2026-07-21-compliance-audit-reconcile,
|
|
5
|
+
* Group H1) purely to keep both files inside the 300-line rule. The seam is the
|
|
6
|
+
* natural one, not an arbitrary cut: everything here answers "where does ONE
|
|
7
|
+
* JSON object end?", while `jsonl-records.ts` answers "what records are on this
|
|
8
|
+
* LINE, and is the file safely appendable?".
|
|
9
|
+
*
|
|
10
|
+
* These symbols are INTERNAL to that pair — `jsonl-records.ts` is the only
|
|
11
|
+
* importer, and it remains the public face (`splitRecords`, `parseJsonlRecords`,
|
|
12
|
+
* `recordsFromLines`, `endsWithoutNewline`, `CorruptFragment`). Consumers import
|
|
13
|
+
* from there; nothing outside imports this module.
|
|
14
|
+
*
|
|
15
|
+
* The cross-language contract, the port deviations from
|
|
16
|
+
* `shared/scripts/lib/jsonl_records.py`, and the reason this leaf exists at all
|
|
17
|
+
* are documented in `jsonl-records.ts` — read that header first.
|
|
18
|
+
*/
|
|
19
|
+
// Explicitly JSON's whitespace set as CHAR CODES, NOT a unicode-aware test:
|
|
20
|
+
// `String.prototype.trim` and Python's `str.isspace` are both unicode-aware and
|
|
21
|
+
// would silently accept NBSP / U+000B / U+000C BETWEEN records, diverging from
|
|
22
|
+
// every other JSON consumer of the same bytes.
|
|
23
|
+
const CH_SPACE = 32;
|
|
24
|
+
const CH_TAB = 9;
|
|
25
|
+
const CH_CR = 13;
|
|
26
|
+
export const CH_LF = 10;
|
|
27
|
+
export const CH_LBRACE = 0x7b; // {
|
|
28
|
+
const CH_RBRACE = 0x7d; // }
|
|
29
|
+
// Slow-path ceilings (external review, medium/performance). Both degrade to
|
|
30
|
+
// "fragment" — a safe, already-tested outcome, never a throw. A real triage
|
|
31
|
+
// record is ~370 bytes with at most trivial nesting, so these sit orders of
|
|
32
|
+
// magnitude above legitimate input: they bound an adversarial or badly-
|
|
33
|
+
// truncated line, they do not shape normal behaviour.
|
|
34
|
+
const MAX_DECODE_ATTEMPTS = 1024;
|
|
35
|
+
export const MAX_RECOVERY_LINE_BYTES = 1_000_000;
|
|
36
|
+
function isJsonWs(code) {
|
|
37
|
+
return code === CH_SPACE || code === CH_TAB || code === CH_CR || code === CH_LF;
|
|
38
|
+
}
|
|
39
|
+
export function skipJsonWs(line, from) {
|
|
40
|
+
let idx = from;
|
|
41
|
+
while (idx < line.length && isJsonWs(line.charCodeAt(idx)))
|
|
42
|
+
idx += 1;
|
|
43
|
+
return idx;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* `JSON.parse` restricted to plain objects. Returns undefined for invalid JSON
|
|
47
|
+
* AND for valid-but-wrong-shape input (a bare scalar or a top-level array):
|
|
48
|
+
* callers do `raw.event`, so a non-object is a fragment, not a record.
|
|
49
|
+
*/
|
|
50
|
+
export function tryParseObject(candidate) {
|
|
51
|
+
let parsed;
|
|
52
|
+
try {
|
|
53
|
+
parsed = JSON.parse(candidate);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
return parsed;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Decode one JSON object beginning at `start`, by walking candidate end
|
|
65
|
+
* positions at each `}` and letting native `JSON.parse` validate each slice.
|
|
66
|
+
*
|
|
67
|
+
* This is SELF-CORRECTING for braces inside string values: a candidate ending
|
|
68
|
+
* at an in-string `}` is unbalanced and simply fails to parse, so the walk
|
|
69
|
+
* continues. The SHORTEST valid prefix is the correct record boundary, because
|
|
70
|
+
* any shorter prefix ending at `}` is necessarily unbalanced.
|
|
71
|
+
*
|
|
72
|
+
* Deliberately NOT a hand-rolled JSON lexer (external review R2): brace
|
|
73
|
+
* counting with escaped quotes and backslash runs is a classic source of latent
|
|
74
|
+
* bugs, and delegating validation to V8 removes that whole class.
|
|
75
|
+
*/
|
|
76
|
+
export function decodeObjectAt(line, start) {
|
|
77
|
+
let attempts = 0;
|
|
78
|
+
for (let i = start; i < line.length; i += 1) {
|
|
79
|
+
if (line.charCodeAt(i) !== CH_RBRACE)
|
|
80
|
+
continue;
|
|
81
|
+
// Work budget. Each attempt slices AND parses, so an adversarial line is
|
|
82
|
+
// O(candidates x length) on the request thread — and the board read path
|
|
83
|
+
// (triage-compose → readLocalRawLinesSplit) bypasses `readAllItems`' 5 s
|
|
84
|
+
// cache, so a corrupt line re-pays the cost on EVERY poll with nothing ever
|
|
85
|
+
// repairing the file. Python pays one `raw_decode`; the brace walk is the
|
|
86
|
+
// price of not hand-rolling a lexer, so it gets a ceiling.
|
|
87
|
+
attempts += 1;
|
|
88
|
+
if (attempts > MAX_DECODE_ATTEMPTS)
|
|
89
|
+
return null;
|
|
90
|
+
const value = tryParseObject(line.slice(start, i + 1));
|
|
91
|
+
if (value !== undefined)
|
|
92
|
+
return { value, end: i + 1 };
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=jsonl-decode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonl-decode.js","sourceRoot":"","sources":["../../src/core/jsonl-decode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,4EAA4E;AAC5E,gFAAgF;AAChF,+EAA+E;AAC/E,+CAA+C;AAC/C,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,MAAM,MAAM,GAAG,CAAC,CAAC;AACjB,MAAM,KAAK,GAAG,EAAE,CAAC;AACjB,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;AACxB,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,IAAI;AACnC,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,IAAI;AAE5B,4EAA4E;AAC5E,4EAA4E;AAC5E,4EAA4E;AAC5E,wEAAwE;AACxE,sDAAsD;AACtD,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACjC,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAS,CAAC;AAEjD,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,IAAY;IACnD,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAE,GAAG,IAAI,CAAC,CAAC;IACrE,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAiC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAY,EACZ,KAAa;IAEb,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,SAAS;QAC/C,yEAAyE;QACzE,yEAAyE;QACzE,yEAAyE;QACzE,4EAA4E;QAC5E,0EAA0E;QAC1E,2DAA2D;QAC3D,QAAQ,IAAI,CAAC,CAAC;QACd,IAAI,QAAQ,GAAG,mBAAmB;YAAE,OAAO,IAAI,CAAC;QAChD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/** One stretch of text on a physical line that could not be decoded. */
|
|
2
|
+
export interface CorruptFragment {
|
|
3
|
+
/** 1-based physical line number within the blob. */
|
|
4
|
+
lineNo: number;
|
|
5
|
+
/**
|
|
6
|
+
* The on-disk text apart from the surrounding whitespace the reader strips.
|
|
7
|
+
* Never logged verbatim — callers report its LENGTH only, so arbitrary log
|
|
8
|
+
* contents and control characters cannot reach the server log.
|
|
9
|
+
*/
|
|
10
|
+
text: string;
|
|
11
|
+
}
|
|
12
|
+
/** Tolerant-read outcome: what was recovered, and what could not be. */
|
|
13
|
+
export interface RecordRead {
|
|
14
|
+
records: Record<string, unknown>[];
|
|
15
|
+
/**
|
|
16
|
+
* The explicit side channel that keeps corruption from reading as absence.
|
|
17
|
+
* Empty on a clean read.
|
|
18
|
+
*/
|
|
19
|
+
corrupt: CorruptFragment[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Split one physical `line` into records plus the unrecoverable remainder.
|
|
23
|
+
*
|
|
24
|
+
* `remainder` is `""` when the whole line decoded cleanly, otherwise the
|
|
25
|
+
* VERBATIM text from the first byte that could not be decoded to end of line.
|
|
26
|
+
*
|
|
27
|
+
* Contract (mirrors the Python leaf):
|
|
28
|
+
* - JSON whitespace between records is skipped (space/tab/CR/LF only).
|
|
29
|
+
* - A blank / whitespace-only line yields `([], "")` — formatting, not
|
|
30
|
+
* corruption.
|
|
31
|
+
* - Only JSON objects count as records; a bare scalar is a fragment.
|
|
32
|
+
* - Recovery is PARTIAL: records decoded before the bad byte are returned.
|
|
33
|
+
* - A malformed record does NOT resync — the entire rest of the line becomes
|
|
34
|
+
* the remainder, matching `raw_decode`.
|
|
35
|
+
*
|
|
36
|
+
* Cost: the fast path is a single native `JSON.parse` and covers essentially
|
|
37
|
+
* every real line. The candidate walk runs only on an already-corrupt line,
|
|
38
|
+
* where lines are short and correctness matters more than throughput.
|
|
39
|
+
*/
|
|
40
|
+
export declare function splitRecords(line: string): {
|
|
41
|
+
records: Record<string, unknown>[];
|
|
42
|
+
remainder: string;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Tolerantly parse a whole JSONL blob, recovering concatenated records and
|
|
46
|
+
* returning the rest as data.
|
|
47
|
+
*
|
|
48
|
+
* Order is preserved: records recovered from one physical line stay in wire
|
|
49
|
+
* order relative to each other and to surrounding lines, so the store's
|
|
50
|
+
* `(ts, file-order)` status resolution is unaffected.
|
|
51
|
+
*
|
|
52
|
+
* `trim()` here is intentionally the unicode-aware one — it absorbs a trailing
|
|
53
|
+
* CR (CRLF) and mirrors Python's `raw.strip()`, which is also unicode-aware.
|
|
54
|
+
* The strict JSON-whitespace rule applies BETWEEN records, inside
|
|
55
|
+
* `splitRecords`.
|
|
56
|
+
*
|
|
57
|
+
* Line NUMBERING can differ from Python on a file containing a bare CR: this
|
|
58
|
+
* splits on `\n` only, while Python iterates the handle in universal-newline
|
|
59
|
+
* mode and also breaks on a lone `\r`. Resolved RECORDS are unaffected (CR is
|
|
60
|
+
* JSON whitespace, so `splitRecords` skips an interior CR and recovers both
|
|
61
|
+
* sides either way) — only the `lineNo` reported on a `CorruptFragment` shifts.
|
|
62
|
+
* Noted so an operator correlating a WebUI warning against the monorepo repair
|
|
63
|
+
* CLI's output is not misled.
|
|
64
|
+
*/
|
|
65
|
+
export declare function parseJsonlRecords(raw: string): RecordRead;
|
|
66
|
+
/**
|
|
67
|
+
* Record-by-record view over ALREADY-SPLIT physical lines, recovering
|
|
68
|
+
* concatenated records (iterate-2026-07-19-events-reader-recovery).
|
|
69
|
+
*
|
|
70
|
+
* The events-log readers get `Iterable<string>` lines, not a raw blob, and each
|
|
71
|
+
* keeps its own running index for ordering. Yielding per RECORD lets them keep
|
|
72
|
+
* `idx++` unchanged: two records on one line take two consecutive indices,
|
|
73
|
+
* preserving the wire order last-wins projections depend on.
|
|
74
|
+
*
|
|
75
|
+
* `onLine` fires once per NON-BLANK PHYSICAL LINE, so a caller can keep
|
|
76
|
+
* line-based counters (`totalLines` / `skippedLines`) meaning what they always
|
|
77
|
+
* meant while record-based counters move to the yielded values. Blank lines are
|
|
78
|
+
* formatting and are reported to neither.
|
|
79
|
+
*/
|
|
80
|
+
export declare function recordsFromLines(lines: Iterable<string>, onLine?: (info: {
|
|
81
|
+
lineNo: number;
|
|
82
|
+
corrupt: boolean;
|
|
83
|
+
}) => void): Generator<Record<string, unknown>>;
|
|
84
|
+
/**
|
|
85
|
+
* True iff `path` exists, is non-empty, and its final byte is not `\n`.
|
|
86
|
+
*
|
|
87
|
+
* A missing or zero-byte file is safely appendable and returns false. A file
|
|
88
|
+
* ending `\r\n` ends in `\n` and so counts as already terminated — prefixing
|
|
89
|
+
* another newline would inject a blank line.
|
|
90
|
+
*
|
|
91
|
+
* Reads exactly ONE byte at `size - 1` via a positional `readSync`; it never
|
|
92
|
+
* reads file contents. An O(N) read here would degrade every status flip as the
|
|
93
|
+
* log grows (external review R3).
|
|
94
|
+
*
|
|
95
|
+
* Any error (missing, unreadable, a directory, not seekable) is treated as
|
|
96
|
+
* "safely appendable". This mirrors the Python leaf, which catches OSError
|
|
97
|
+
* broadly and documents that "the append itself will surface any real I/O
|
|
98
|
+
* problem" — accurate here too: a swallowed EACCES is immediately re-raised by
|
|
99
|
+
* `appendFileSync` and mapped to a route-level write error by its caller, so
|
|
100
|
+
* no error is lost. Propagating early would diverge from the cross-language
|
|
101
|
+
* contract for no behavioural gain (external review R10, rejected with reason).
|
|
102
|
+
*/
|
|
103
|
+
export declare function endsWithoutNewline(filePath: string): boolean;
|
|
104
|
+
//# sourceMappingURL=jsonl-records.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonl-records.d.ts","sourceRoot":"","sources":["../../src/core/jsonl-records.ts"],"names":[],"mappings":"AA+DA,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wEAAwE;AACxE,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACnC;;;OAGG;IACH,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG;IAC1C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB,CAgCA;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAczD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAiB,gBAAgB,CAC/B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,KAAK,IAAI,GAC5D,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAUpC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAwB5D"}
|