@svenroth-ai/shipwright 0.26.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/dist/assets/{EmbeddedTerminal-D3wpPNZP.js → EmbeddedTerminal-CqCQUDtp.js} +1 -1
- package/client/dist/assets/{abnfDiagram-VRR7QNED-BkLIltB3.js → abnfDiagram-VRR7QNED-DX2objTP.js} +1 -1
- package/client/dist/assets/{arc-Sw-Gh0nI.js → arc-DQmjbsFU.js} +1 -1
- package/client/dist/assets/{architectureDiagram-ZJ3FMSHR-rdxUi9Ks.js → architectureDiagram-ZJ3FMSHR-DAvCsPCW.js} +1 -1
- package/client/dist/assets/{blockDiagram-677ZJIJ3-Ch_9dj8a.js → blockDiagram-677ZJIJ3-DC-dlyYI.js} +1 -1
- package/client/dist/assets/{c4Diagram-LMCZKHZV-CkFlO65x.js → c4Diagram-LMCZKHZV-DSlmXfhE.js} +1 -1
- package/client/dist/assets/channel-BfmIcrp7.js +1 -0
- package/client/dist/assets/{chunk-2Q5K7J3B-CypX83xu.js → chunk-2Q5K7J3B-C111EHL6.js} +1 -1
- package/client/dist/assets/{chunk-32BRIVSS-DxVLYGdl.js → chunk-32BRIVSS-DrCYs2XG.js} +1 -1
- package/client/dist/assets/{chunk-5VM5RSS4-Cxk1evhx.js → chunk-5VM5RSS4-DIejoaXS.js} +1 -1
- package/client/dist/assets/{chunk-EX3LRPZG-n9q5S4yJ.js → chunk-EX3LRPZG-CGWNeH2g.js} +1 -1
- package/client/dist/assets/{chunk-JWPE2WC7-jeL4xvir.js → chunk-JWPE2WC7-CCH0SRFY.js} +1 -1
- package/client/dist/assets/{chunk-MOJQB5TN-DDSHN0cj.js → chunk-MOJQB5TN-B3OpZGRv.js} +1 -1
- package/client/dist/assets/{chunk-RYQCIY6F-C0bo383g.js → chunk-RYQCIY6F-BKhdp_8v.js} +1 -1
- package/client/dist/assets/{chunk-V7JOEXUC-C0jDXXAU.js → chunk-V7JOEXUC-B6Bu8x1y.js} +1 -1
- package/client/dist/assets/{chunk-VR4S4FIN-h-Rr4Pn2.js → chunk-VR4S4FIN-OgFi2_iB.js} +1 -1
- package/client/dist/assets/{chunk-XXDRQBXY-BexSo0-s.js → chunk-XXDRQBXY-xyjuuhxl.js} +1 -1
- package/client/dist/assets/classDiagram-OUVF2IWQ-HfUQZ6Uc.js +1 -0
- package/client/dist/assets/classDiagram-v2-EOCWNBFH-HfUQZ6Uc.js +1 -0
- package/client/dist/assets/{cose-bilkent-JH36ORCC-BQXzaioj.js → cose-bilkent-JH36ORCC-BQIH3SCK.js} +1 -1
- package/client/dist/assets/{cynefin-VYW2F7L2-BJIofhfe.js → cynefin-VYW2F7L2-oyLAz8te.js} +1 -1
- package/client/dist/assets/{cynefinDiagram-TSTJHNR4-DmPqTM1T.js → cynefinDiagram-TSTJHNR4-DoLCsH0l.js} +1 -1
- package/client/dist/assets/{dagre-VKFMJZFB-1xljvw6X.js → dagre-VKFMJZFB-D7djx1_Y.js} +1 -1
- package/client/dist/assets/{diagram-FQU43EPY-iyL9muCG.js → diagram-FQU43EPY-DFuYE0Vf.js} +1 -1
- package/client/dist/assets/{diagram-G47NLZAW-DREp2Th6.js → diagram-G47NLZAW-CffCZVXk.js} +1 -1
- package/client/dist/assets/{diagram-NH7WQ7WH-h0X3Is2S.js → diagram-NH7WQ7WH-BhrHtUlt.js} +1 -1
- package/client/dist/assets/{diagram-OA4YK3LP-Bj8YZRFJ.js → diagram-OA4YK3LP-CwQPbOn0.js} +1 -1
- package/client/dist/assets/{diagram-WEI45ONY-BZOf805d.js → diagram-WEI45ONY-abtYnYqH.js} +1 -1
- package/client/dist/assets/{ebnfDiagram-CCIWWBDH-DO5JnXda.js → ebnfDiagram-CCIWWBDH-DfV7gT4m.js} +1 -1
- package/client/dist/assets/{erDiagram-Q63AITRT-DRgcqg1T.js → erDiagram-Q63AITRT-vtbCprgH.js} +1 -1
- package/client/dist/assets/{flowDiagram-23GEKE2U-C3J9QmrW.js → flowDiagram-23GEKE2U-CVCgcyDF.js} +1 -1
- package/client/dist/assets/{ganttDiagram-NO4QXBWP-BIEl3Tkm.js → ganttDiagram-NO4QXBWP-BclyOgMb.js} +1 -1
- package/client/dist/assets/{gitGraphDiagram-IHSO6WYX-BNF0tFWC.js → gitGraphDiagram-IHSO6WYX-BXT4rIKj.js} +1 -1
- package/client/dist/assets/index-CKU9dY18.css +1 -0
- package/client/dist/assets/{index-BnTOrFHb.js → index-DOMl6atu.js} +232 -214
- package/client/dist/assets/{infoDiagram-FWYZ7A6U-DEyFxiyY.js → infoDiagram-FWYZ7A6U-Dr4mN24J.js} +1 -1
- package/client/dist/assets/{ishikawaDiagram-FXEZZL3T-B_ehlg3I.js → ishikawaDiagram-FXEZZL3T-BBUFWq5C.js} +1 -1
- package/client/dist/assets/{journeyDiagram-5HDEW3XC-Dp00FyJS.js → journeyDiagram-5HDEW3XC-CmclipcQ.js} +1 -1
- package/client/dist/assets/{kanban-definition-HUTT4EX6-CTAf16q8.js → kanban-definition-HUTT4EX6-eIzUeZ03.js} +1 -1
- package/client/dist/assets/{linear-9vNUgmYd.js → linear-DGiT7uKK.js} +1 -1
- package/client/dist/assets/{mermaid.core-A6tjaEVD.js → mermaid.core-BcLNGbxW.js} +4 -4
- package/client/dist/assets/{mindmap-definition-LN4V7U3C-DRW3bmCY.js → mindmap-definition-LN4V7U3C-C4ANnNiP.js} +1 -1
- package/client/dist/assets/{pegDiagram-2B236MQR-DJFCjHp2.js → pegDiagram-2B236MQR-DnMeh3Yh.js} +1 -1
- package/client/dist/assets/{pieDiagram-ENE6RG2P-KRd-sGvC.js → pieDiagram-ENE6RG2P-CKV_rkhF.js} +1 -1
- package/client/dist/assets/{quadrantDiagram-ABIIQ3AL-9TLZE3Hu.js → quadrantDiagram-ABIIQ3AL-BuUsGwHh.js} +1 -1
- package/client/dist/assets/{railroadDiagram-RFXS5EU6-y4tLtjXg.js → railroadDiagram-RFXS5EU6-BwwdKnFL.js} +1 -1
- package/client/dist/assets/{requirementDiagram-TGXJPOKE-B9EOQDQM.js → requirementDiagram-TGXJPOKE-CpQZouJV.js} +1 -1
- package/client/dist/assets/{sankeyDiagram-HTMAVEWB-zfwiDzkT.js → sankeyDiagram-HTMAVEWB-4fnDUNVa.js} +1 -1
- package/client/dist/assets/{sequenceDiagram-DBY2YBRQ-DW1LWepL.js → sequenceDiagram-DBY2YBRQ-BOcaWlM0.js} +1 -1
- package/client/dist/assets/{sizeCapture-X5ZJPWSS-BM81Mik0.js → sizeCapture-X5ZJPWSS-_pv-9R0c.js} +1 -1
- package/client/dist/assets/{stateDiagram-2N3HPSRC-D0EMIw1w.js → stateDiagram-2N3HPSRC-CFwCOonY.js} +1 -1
- package/client/dist/assets/stateDiagram-v2-6OUMAXLB-srkiu3Ib.js +1 -0
- package/client/dist/assets/{swimlanes-5IMT3BWC-CKXNCX6M.js → swimlanes-5IMT3BWC-DFa2tzxu.js} +2 -2
- package/client/dist/assets/swimlanesDiagram-G3AALYLV-Dq-0K9Zm.js +8 -0
- package/client/dist/assets/{timeline-definition-FHXFAJF6-ByzIfvL5.js → timeline-definition-FHXFAJF6-rhGYElgn.js} +1 -1
- package/client/dist/assets/{vennDiagram-L72KCM5P-Xep38xBH.js → vennDiagram-L72KCM5P-BoGjRxyA.js} +1 -1
- package/client/dist/assets/{wardleyDiagram-EHGQE667-DKWDpx6g.js → wardleyDiagram-EHGQE667-D-IGv5bH.js} +1 -1
- package/client/dist/assets/{xychartDiagram-FW5EYKEG-BGcwZTnu.js → xychartDiagram-FW5EYKEG-D9PFTCfm.js} +1 -1
- package/client/dist/index.html +2 -2
- package/lib/probes.mjs +10 -4
- package/lib/server.mjs +149 -12
- package/package.json +1 -1
- package/server/dist/core/sdk-sessions-merge.d.ts +19 -0
- package/server/dist/core/sdk-sessions-merge.d.ts.map +1 -1
- package/server/dist/core/sdk-sessions-merge.js +19 -5
- package/server/dist/core/sdk-sessions-merge.js.map +1 -1
- package/server/dist/core/sdk-sessions-refresh.d.ts +50 -0
- package/server/dist/core/sdk-sessions-refresh.d.ts.map +1 -0
- package/server/dist/core/sdk-sessions-refresh.js +69 -0
- package/server/dist/core/sdk-sessions-refresh.js.map +1 -0
- package/server/dist/core/sdk-sessions-store.d.ts +2 -0
- package/server/dist/core/sdk-sessions-store.d.ts.map +1 -1
- package/server/dist/core/sdk-sessions-store.js +7 -9
- package/server/dist/core/sdk-sessions-store.js.map +1 -1
- package/server/dist/core/shipwright-plugin-version-reader.d.ts +15 -0
- package/server/dist/core/shipwright-plugin-version-reader.d.ts.map +1 -0
- package/server/dist/core/shipwright-plugin-version-reader.js +49 -0
- package/server/dist/core/shipwright-plugin-version-reader.js.map +1 -0
- package/server/dist/external/inbox/_derive.d.ts +2 -25
- package/server/dist/external/inbox/_derive.d.ts.map +1 -1
- package/server/dist/external/inbox/_derive.js.map +1 -1
- package/server/dist/external/inbox/_lead.d.ts +23 -0
- package/server/dist/external/inbox/_lead.d.ts.map +1 -0
- package/server/dist/external/inbox/_lead.js +83 -0
- package/server/dist/external/inbox/_lead.js.map +1 -0
- package/server/dist/external/inbox/_types.d.ts +32 -0
- package/server/dist/external/inbox/_types.d.ts.map +1 -0
- package/server/dist/external/inbox/_types.js +10 -0
- package/server/dist/external/inbox/_types.js.map +1 -0
- package/server/dist/external/inbox/routes.d.ts.map +1 -1
- package/server/dist/external/inbox/routes.js +29 -1
- package/server/dist/external/inbox/routes.js.map +1 -1
- package/server/dist/external/launch/claim-holder-gate.d.ts +42 -0
- package/server/dist/external/launch/claim-holder-gate.d.ts.map +1 -0
- package/server/dist/external/launch/claim-holder-gate.js +87 -0
- package/server/dist/external/launch/claim-holder-gate.js.map +1 -0
- package/server/dist/external/launch/routes.d.ts.map +1 -1
- package/server/dist/external/launch/routes.js +23 -19
- package/server/dist/external/launch/routes.js.map +1 -1
- package/server/dist/external/org/lead-question-threads.d.ts +46 -0
- package/server/dist/external/org/lead-question-threads.d.ts.map +1 -0
- package/server/dist/external/org/lead-question-threads.js +132 -0
- package/server/dist/external/org/lead-question-threads.js.map +1 -0
- package/server/dist/external/org/mount.d.ts +3 -0
- package/server/dist/external/org/mount.d.ts.map +1 -1
- package/server/dist/external/org/mount.js +2 -1
- package/server/dist/external/org/mount.js.map +1 -1
- package/server/dist/external/org/usage.d.ts.map +1 -1
- package/server/dist/external/org/usage.js +20 -2
- package/server/dist/external/org/usage.js.map +1 -1
- package/server/dist/external/routes.d.ts.map +1 -1
- package/server/dist/external/routes.js +1 -7
- package/server/dist/external/routes.js.map +1 -1
- package/server/dist/routes/diagnostics.d.ts +12 -0
- package/server/dist/routes/diagnostics.d.ts.map +1 -1
- package/server/dist/routes/diagnostics.js +4 -1
- package/server/dist/routes/diagnostics.js.map +1 -1
- package/server/dist/routes/org-threads-composite.d.ts +24 -0
- package/server/dist/routes/org-threads-composite.d.ts.map +1 -0
- package/server/dist/routes/org-threads-composite.js +51 -0
- package/server/dist/routes/org-threads-composite.js.map +1 -0
- package/server/dist/routes/org.d.ts +5 -0
- package/server/dist/routes/org.d.ts.map +1 -1
- package/server/dist/routes/org.js +13 -0
- package/server/dist/routes/org.js.map +1 -1
- package/server/dist/terminal/pty-manager.d.ts +23 -1
- package/server/dist/terminal/pty-manager.d.ts.map +1 -1
- package/server/dist/terminal/pty-manager.js +22 -3
- package/server/dist/terminal/pty-manager.js.map +1 -1
- package/server/dist/terminal/pty-write-chunker.d.ts +109 -0
- package/server/dist/terminal/pty-write-chunker.d.ts.map +1 -0
- package/server/dist/terminal/pty-write-chunker.js +234 -0
- package/server/dist/terminal/pty-write-chunker.js.map +1 -0
- package/server/dist/types/org.d.ts +19 -0
- package/server/dist/types/org.d.ts.map +1 -1
- package/server/package.json +1 -1
- package/client/dist/assets/channel-BYPbLjRl.js +0 -1
- package/client/dist/assets/classDiagram-OUVF2IWQ-CsFIeTju.js +0 -1
- package/client/dist/assets/classDiagram-v2-EOCWNBFH-CsFIeTju.js +0 -1
- package/client/dist/assets/index-CYPc6qxw.css +0 -1
- package/client/dist/assets/stateDiagram-v2-6OUMAXLB-B3E4_xxT.js +0 -1
- package/client/dist/assets/swimlanesDiagram-G3AALYLV-BegQBqnC.js +0 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-sessions-merge.d.ts","sourceRoot":"","sources":["../../src/core/sdk-sessions-merge.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAK5D,oEAAoE;AACpE,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAkBzD;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAClC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAI3B;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACnC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACjC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAC/B,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3B,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAyB3B;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEvB;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GAEb;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,aAAa,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC/E;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAerB;AAiBD;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE;IAAE,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,EACjG,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,YAAY,GAAG,IAAI,GAC1F,OAAO,CAAC,cAAc,CAAC,CAiBzB;AAeD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE;IACJ,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD,EACD,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAcf"}
|
|
1
|
+
{"version":3,"file":"sdk-sessions-merge.d.ts","sourceRoot":"","sources":["../../src/core/sdk-sessions-merge.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAK5D,oEAAoE;AACpE,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAkBzD;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAClC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAI3B;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACnC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACjC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAC/B,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3B,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAyB3B;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEvB;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GAEb;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,aAAa,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC/E;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAerB;AAiBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE;IACJ,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9D,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,EACD,IAAI,EAAE,MAAM,GACX,IAAI,CAON;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE;IAAE,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,EACjG,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,YAAY,GAAG,IAAI,GAC1F,OAAO,CAAC,cAAc,CAAC,CAiBzB;AAeD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE;IACJ,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD,EACD,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAcf;AAED;;;;gCAIgC;AAChC,wBAAgB,QAAQ,CACtB,IAAI,EAAE,YAAY,GAAG,SAAS,EAC9B,GAAG,EAAE,YAAY,EACjB,GAAG,EAAE,YAAY,GAChB,YAAY,CAcd"}
|
|
@@ -132,6 +132,21 @@ async function withFsRetry(op) {
|
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* Ensure the parent dir + the file itself exist before a proper-lockfile
|
|
137
|
+
* `lstat` — shared by persist() and refreshRowFromDisk() (FR-04.22/V5,
|
|
138
|
+
* sdk-sessions-refresh.ts), both of which lock the same path before
|
|
139
|
+
* reading/writing it.
|
|
140
|
+
*/
|
|
141
|
+
export function ensureFileReady(deps, path) {
|
|
142
|
+
const lastSlash = Math.max(path.lastIndexOf("/"), path.lastIndexOf("\\"));
|
|
143
|
+
if (lastSlash !== -1) {
|
|
144
|
+
const dir = path.slice(0, lastSlash);
|
|
145
|
+
if (!deps.existsSync(dir))
|
|
146
|
+
deps.mkdirSync(dir, { recursive: true });
|
|
147
|
+
}
|
|
148
|
+
deps.ensureFile(path);
|
|
149
|
+
}
|
|
135
150
|
/**
|
|
136
151
|
* Re-read + classify + validate the on-disk file for a persist merge. A missing
|
|
137
152
|
* file / ENOENT is an empty store; a TRANSIENT read error (EBUSY/EPERM/EACCES)
|
|
@@ -193,13 +208,12 @@ export async function atomicWriteFile(deps, path, data, hasLock) {
|
|
|
193
208
|
throw err;
|
|
194
209
|
}
|
|
195
210
|
}
|
|
196
|
-
/**
|
|
197
|
-
* Field-level 3-way merge of a row present in both memory and disk. Start from
|
|
211
|
+
/** Field-level 3-way merge of a row present in both memory and disk. Start from
|
|
198
212
|
* the on-disk row (foreign updates + external claim fields), then re-apply
|
|
199
213
|
* every field this instance actually changed (baseline → memory), including
|
|
200
|
-
* fields it removed.
|
|
201
|
-
*/
|
|
202
|
-
function mergeRow(base, mem, dsk) {
|
|
214
|
+
* fields it removed. Also used standalone by `refreshRowFromDisk`
|
|
215
|
+
* (sdk-sessions-refresh.ts). */
|
|
216
|
+
export function mergeRow(base, mem, dsk) {
|
|
203
217
|
const out = structuredClone(dsk);
|
|
204
218
|
const keys = new Set([
|
|
205
219
|
...Object.keys(mem),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-sessions-merge.js","sourceRoot":"","sources":["../../src/core/sdk-sessions-merge.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sdk-sessions-merge.js","sourceRoot":"","sources":["../../src/core/sdk-sessions-merge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { ExternalTask } from "./sdk-sessions-store.js";
|
|
2
|
+
/**
|
|
3
|
+
* `load()` only runs once per process, so a foreign writer (the leadwright
|
|
4
|
+
* daemon claiming/releasing a task) only re-enters memory when THIS instance
|
|
5
|
+
* itself persists — a webui that has persisted nothing since a foreign claim
|
|
6
|
+
* was written would otherwise see no claim at all (the normal case for an
|
|
7
|
+
* idle daemon with no browser open).
|
|
8
|
+
*
|
|
9
|
+
* Merges, via `mergeRow`, rather than overwriting: this instance may hold
|
|
10
|
+
* local, not-yet-persisted changes on the row (e.g. a `firstJsonlObservedAt`
|
|
11
|
+
* patch made moments before /launch) that a raw copy of the disk row would
|
|
12
|
+
* silently discard. Mutates BOTH `sessions` AND `baseline` for this id —
|
|
13
|
+
* never just `sessions` (the single most damaging way to get this wrong):
|
|
14
|
+
* leaving `baseline` stale would make the caller believe it OWNS the
|
|
15
|
+
* freshly-observed field (mem now diverges from a stale base) and write it
|
|
16
|
+
* back to disk on the next arbitrary persist(), long after the foreign
|
|
17
|
+
* writer changed or cleared it — permanently unlaunchable, with no error.
|
|
18
|
+
* `baseline` is set to the DISK row, not the merged result, so the
|
|
19
|
+
* caller's own pending diff (if any) stays visible to that next persist(),
|
|
20
|
+
* exactly as if this call never ran.
|
|
21
|
+
*
|
|
22
|
+
* Acquires `deps.lock` for the read, then releases it before returning —
|
|
23
|
+
* proper-lockfile is not reentrant, so a persist() made right after this
|
|
24
|
+
* returns would ELOCKED if the lock stayed held across the caller's
|
|
25
|
+
* remaining work. Leaves `sessions`/`baseline` untouched (falls back to the
|
|
26
|
+
* current in-memory row) when the id is absent on disk (a locally-created
|
|
27
|
+
* row not yet persisted) or the re-read fails to classify ("corrupt"/
|
|
28
|
+
* "future" — same fail-safe posture as persist()'s own re-read).
|
|
29
|
+
*
|
|
30
|
+
* `deletedSinceBaseline` (doubt-review finding, FR-04.22) — `store.delete()`
|
|
31
|
+
* runs synchronously with no lock, so a concurrent same-process delete (e.g.
|
|
32
|
+
* a DELETE /tasks/:id request racing this launch) can land on `sessions`
|
|
33
|
+
* during this function's own `await reReadDisk`. Without this check, `mem`
|
|
34
|
+
* would then read `undefined` and the disk's still-there row would be
|
|
35
|
+
* written straight back into `sessions`/`baseline`, resurrecting a row the
|
|
36
|
+
* caller just deleted — a whole-row analogue of the per-field guard
|
|
37
|
+
* `mergeSessions()` already applies (`if (deleted.has(id)) continue`). The
|
|
38
|
+
* check is re-read right before the mutation (no `await` between the two),
|
|
39
|
+
* so a delete that lands during `reReadDisk` is still caught.
|
|
40
|
+
*/
|
|
41
|
+
export declare function refreshRowFromDisk(deps: {
|
|
42
|
+
existsSync: (p: string) => boolean;
|
|
43
|
+
readFile: (p: string, e: string) => Promise<string>;
|
|
44
|
+
mkdirSync: (p: string, opts?: {
|
|
45
|
+
recursive: boolean;
|
|
46
|
+
}) => void;
|
|
47
|
+
ensureFile: (p: string) => void;
|
|
48
|
+
lock?: (p: string) => Promise<() => Promise<void>>;
|
|
49
|
+
}, path: string, current: number, validate: (id: string, value: unknown, schemaVersion: 1 | 2 | 3 | 4) => ExternalTask | null, taskId: string, sessions: Map<string, ExternalTask>, baseline: Map<string, ExternalTask>, deletedSinceBaseline: ReadonlySet<string>): Promise<ExternalTask | undefined>;
|
|
50
|
+
//# sourceMappingURL=sdk-sessions-refresh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk-sessions-refresh.d.ts","sourceRoot":"","sources":["../../src/core/sdk-sessions-refresh.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE;IACJ,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9D,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;CACpD,EACD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,YAAY,GAAG,IAAI,EAC3F,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACnC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACnC,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAC,GACxC,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAgBnC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* core/sdk-sessions-refresh.ts — FR-04.22/V5 (iterate-2026-09-03-claim-holder-launch),
|
|
3
|
+
* single-row disk refresh for the claim-holder launch gate. Split out of
|
|
4
|
+
* sdk-sessions-merge.ts (one-concern-per-file, mirroring validate/merge/store)
|
|
5
|
+
* once the launch-gate addition pushed that file past the 300-line guideline.
|
|
6
|
+
*/
|
|
7
|
+
import { ensureFileReady, mergeRow, reReadDisk } from "./sdk-sessions-merge.js";
|
|
8
|
+
/**
|
|
9
|
+
* `load()` only runs once per process, so a foreign writer (the leadwright
|
|
10
|
+
* daemon claiming/releasing a task) only re-enters memory when THIS instance
|
|
11
|
+
* itself persists — a webui that has persisted nothing since a foreign claim
|
|
12
|
+
* was written would otherwise see no claim at all (the normal case for an
|
|
13
|
+
* idle daemon with no browser open).
|
|
14
|
+
*
|
|
15
|
+
* Merges, via `mergeRow`, rather than overwriting: this instance may hold
|
|
16
|
+
* local, not-yet-persisted changes on the row (e.g. a `firstJsonlObservedAt`
|
|
17
|
+
* patch made moments before /launch) that a raw copy of the disk row would
|
|
18
|
+
* silently discard. Mutates BOTH `sessions` AND `baseline` for this id —
|
|
19
|
+
* never just `sessions` (the single most damaging way to get this wrong):
|
|
20
|
+
* leaving `baseline` stale would make the caller believe it OWNS the
|
|
21
|
+
* freshly-observed field (mem now diverges from a stale base) and write it
|
|
22
|
+
* back to disk on the next arbitrary persist(), long after the foreign
|
|
23
|
+
* writer changed or cleared it — permanently unlaunchable, with no error.
|
|
24
|
+
* `baseline` is set to the DISK row, not the merged result, so the
|
|
25
|
+
* caller's own pending diff (if any) stays visible to that next persist(),
|
|
26
|
+
* exactly as if this call never ran.
|
|
27
|
+
*
|
|
28
|
+
* Acquires `deps.lock` for the read, then releases it before returning —
|
|
29
|
+
* proper-lockfile is not reentrant, so a persist() made right after this
|
|
30
|
+
* returns would ELOCKED if the lock stayed held across the caller's
|
|
31
|
+
* remaining work. Leaves `sessions`/`baseline` untouched (falls back to the
|
|
32
|
+
* current in-memory row) when the id is absent on disk (a locally-created
|
|
33
|
+
* row not yet persisted) or the re-read fails to classify ("corrupt"/
|
|
34
|
+
* "future" — same fail-safe posture as persist()'s own re-read).
|
|
35
|
+
*
|
|
36
|
+
* `deletedSinceBaseline` (doubt-review finding, FR-04.22) — `store.delete()`
|
|
37
|
+
* runs synchronously with no lock, so a concurrent same-process delete (e.g.
|
|
38
|
+
* a DELETE /tasks/:id request racing this launch) can land on `sessions`
|
|
39
|
+
* during this function's own `await reReadDisk`. Without this check, `mem`
|
|
40
|
+
* would then read `undefined` and the disk's still-there row would be
|
|
41
|
+
* written straight back into `sessions`/`baseline`, resurrecting a row the
|
|
42
|
+
* caller just deleted — a whole-row analogue of the per-field guard
|
|
43
|
+
* `mergeSessions()` already applies (`if (deleted.has(id)) continue`). The
|
|
44
|
+
* check is re-read right before the mutation (no `await` between the two),
|
|
45
|
+
* so a delete that lands during `reReadDisk` is still caught.
|
|
46
|
+
*/
|
|
47
|
+
export async function refreshRowFromDisk(deps, path, current, validate, taskId, sessions, baseline, deletedSinceBaseline) {
|
|
48
|
+
ensureFileReady(deps, path);
|
|
49
|
+
const release = deps.lock ? await deps.lock(path) : null;
|
|
50
|
+
try {
|
|
51
|
+
const rr = await reReadDisk(deps, path, current, validate);
|
|
52
|
+
if (deletedSinceBaseline.has(taskId))
|
|
53
|
+
return undefined; // delete always wins — mirrors mergeSessions()
|
|
54
|
+
if (rr.kind !== "ok")
|
|
55
|
+
return sessions.get(taskId);
|
|
56
|
+
const fresh = rr.disk.get(taskId);
|
|
57
|
+
if (!fresh)
|
|
58
|
+
return sessions.get(taskId);
|
|
59
|
+
const mem = sessions.get(taskId);
|
|
60
|
+
sessions.set(taskId, mem ? mergeRow(baseline.get(taskId), mem, fresh) : structuredClone(fresh));
|
|
61
|
+
baseline.set(taskId, structuredClone(fresh));
|
|
62
|
+
return sessions.get(taskId);
|
|
63
|
+
}
|
|
64
|
+
finally {
|
|
65
|
+
if (release)
|
|
66
|
+
await release();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=sdk-sessions-refresh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk-sessions-refresh.js","sourceRoot":"","sources":["../../src/core/sdk-sessions-refresh.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAMC,EACD,IAAY,EACZ,OAAe,EACf,QAA2F,EAC3F,MAAc,EACd,QAAmC,EACnC,QAAmC,EACnC,oBAAyC;IAEzC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC3D,IAAI,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO,SAAS,CAAC,CAAC,+CAA+C;QACvG,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QAChG,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;YAAS,CAAC;QACT,IAAI,OAAO;YAAE,MAAM,OAAO,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC"}
|
|
@@ -255,6 +255,8 @@ export declare class SdkSessionsStore {
|
|
|
255
255
|
/** Apply a partial patch to a task; returns the updated copy or undefined. */
|
|
256
256
|
patch(taskId: string, patch: Partial<ExternalTask>): ExternalTask | undefined;
|
|
257
257
|
delete(taskId: string): boolean;
|
|
258
|
+
/** FR-04.22 (V5, iterate-2026-09-03-claim-holder-launch) — fresh-from-disk read for the claim-holder launch gate; mechanics + rationale live with `refreshRowFromDisk` in sdk-sessions-refresh.ts. */
|
|
259
|
+
refreshRowFromDisk(taskId: string): Promise<ExternalTask | undefined>;
|
|
258
260
|
/** Merge under the lock (F08 header note) + atomically flush. `await` after any mutation. */
|
|
259
261
|
persist(): Promise<void>;
|
|
260
262
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-sessions-store.d.ts","sourceRoot":"","sources":["../../src/core/sdk-sessions-store.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"sdk-sessions-store.d.ts","sourceRoot":"","sources":["../../src/core/sdk-sessions-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,8 @@
|
|
|
27
27
|
* row can't kill every other session on restart (round-2 GPT MAJOR 6).
|
|
28
28
|
*/
|
|
29
29
|
import { randomUUID } from "node:crypto";
|
|
30
|
-
import { atomicWriteFile, cloneSessions, mergeSessions, reReadDisk } from "./sdk-sessions-merge.js";
|
|
30
|
+
import { atomicWriteFile, cloneSessions, ensureFileReady, mergeSessions, reReadDisk } from "./sdk-sessions-merge.js";
|
|
31
|
+
import { refreshRowFromDisk as mergeRefreshRowFromDisk } from "./sdk-sessions-refresh.js";
|
|
31
32
|
import { UNASSIGNED_PROJECT_ID, validateExternalTask } from "./sdk-sessions-validate.js";
|
|
32
33
|
// Re-exported for the many callers that historically imported it from here.
|
|
33
34
|
export { UNASSIGNED_PROJECT_ID } from "./sdk-sessions-validate.js";
|
|
@@ -264,16 +265,13 @@ export class SdkSessionsStore {
|
|
|
264
265
|
this.deletedSinceBaseline.add(taskId);
|
|
265
266
|
return existed;
|
|
266
267
|
}
|
|
268
|
+
/** FR-04.22 (V5, iterate-2026-09-03-claim-holder-launch) — fresh-from-disk read for the claim-holder launch gate; mechanics + rationale live with `refreshRowFromDisk` in sdk-sessions-refresh.ts. */
|
|
269
|
+
async refreshRowFromDisk(taskId) {
|
|
270
|
+
return mergeRefreshRowFromDisk(this.deps, this.path, CURRENT_SCHEMA_VERSION, validateExternalTask, taskId, this.sessions, this.baseline, this.deletedSinceBaseline);
|
|
271
|
+
}
|
|
267
272
|
/** Merge under the lock (F08 header note) + atomically flush. `await` after any mutation. */
|
|
268
273
|
async persist() {
|
|
269
|
-
//
|
|
270
|
-
const lastSlash = Math.max(this.path.lastIndexOf("/"), this.path.lastIndexOf("\\"));
|
|
271
|
-
if (lastSlash !== -1) {
|
|
272
|
-
const dir = this.path.slice(0, lastSlash);
|
|
273
|
-
if (!this.deps.existsSync(dir))
|
|
274
|
-
this.deps.mkdirSync(dir, { recursive: true });
|
|
275
|
-
}
|
|
276
|
-
this.deps.ensureFile(this.path);
|
|
274
|
+
ensureFileReady(this.deps, this.path); // parent dir + file must exist before locking (proper-lockfile lstats)
|
|
277
275
|
const release = this.deps.lock ? await this.deps.lock(this.path) : null;
|
|
278
276
|
try {
|
|
279
277
|
// F08 — UNDER the lock, re-read + 3-way merge onto disk (read-only): a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-sessions-store.js","sourceRoot":"","sources":["../../src/core/sdk-sessions-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"sdk-sessions-store.js","sourceRoot":"","sources":["../../src/core/sdk-sessions-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface ShipwrightPluginVersionReaderDeps {
|
|
2
|
+
/** Injected for tests; defaults to fs/promises.readFile + utf-8. */
|
|
3
|
+
readFile?: (path: string) => Promise<string>;
|
|
4
|
+
/** Injected for tests; defaults to os.homedir(). */
|
|
5
|
+
homedir?: () => string;
|
|
6
|
+
}
|
|
7
|
+
/** Absolute path to the shipwright marketplace manifest. */
|
|
8
|
+
export declare function shipwrightMarketplaceManifestPath(home: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Read the shipwright plugin suite's version, or `null` when it can't be
|
|
11
|
+
* determined (not installed, unreadable, malformed). Swallows every error —
|
|
12
|
+
* the caller treats `null` as "unknown", never as a 500.
|
|
13
|
+
*/
|
|
14
|
+
export declare function readShipwrightPluginVersion(deps?: ShipwrightPluginVersionReaderDeps): Promise<string | null>;
|
|
15
|
+
//# sourceMappingURL=shipwright-plugin-version-reader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shipwright-plugin-version-reader.d.ts","sourceRoot":"","sources":["../../src/core/shipwright-plugin-version-reader.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,iCAAiC;IAChD,oEAAoE;IACpE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,MAAM,CAAC;CACxB;AAED,4DAA4D;AAC5D,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUtE;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,GAAE,iCAAsC,GAC3C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmBxB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Shipwright plugin-suite version reader (iterate-2026-09-05-nav-collapse-
|
|
3
|
+
* and-version-badges).
|
|
4
|
+
*
|
|
5
|
+
* Reads the single suite-wide `version` stamp from the "shipwright"
|
|
6
|
+
* marketplace manifest at `~/.claude/plugins/marketplaces/shipwright/
|
|
7
|
+
* .claude-plugin/marketplace.json`. All 14 shipwright plugins release in
|
|
8
|
+
* lockstep and share this one version (see CLAUDE.md memory: "Monorepo
|
|
9
|
+
* release MUST bump all 14 plugin.json + marketplace.json stamps"), so the
|
|
10
|
+
* marketplace manifest's top-level `version` is the single unambiguous
|
|
11
|
+
* source for "the current plugin version" the Diagnostics page shows —
|
|
12
|
+
* reading any one of the 14 per-plugin manifests would be an arbitrary pick.
|
|
13
|
+
*
|
|
14
|
+
* Read-only, best-effort, same shape as claude-theme-reader.ts: a missing
|
|
15
|
+
* marketplace (plugin not installed), unreadable file, non-JSON body, or
|
|
16
|
+
* absent/non-string `version` all resolve to `null` (never throw).
|
|
17
|
+
*/
|
|
18
|
+
import { readFile } from "node:fs/promises";
|
|
19
|
+
import { homedir } from "node:os";
|
|
20
|
+
import { join } from "node:path";
|
|
21
|
+
/** Absolute path to the shipwright marketplace manifest. */
|
|
22
|
+
export function shipwrightMarketplaceManifestPath(home) {
|
|
23
|
+
return join(home, ".claude", "plugins", "marketplaces", "shipwright", ".claude-plugin", "marketplace.json");
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Read the shipwright plugin suite's version, or `null` when it can't be
|
|
27
|
+
* determined (not installed, unreadable, malformed). Swallows every error —
|
|
28
|
+
* the caller treats `null` as "unknown", never as a 500.
|
|
29
|
+
*/
|
|
30
|
+
export async function readShipwrightPluginVersion(deps = {}) {
|
|
31
|
+
const home = (deps.homedir ?? homedir)();
|
|
32
|
+
const fsRead = deps.readFile ?? ((p) => readFile(p, "utf-8"));
|
|
33
|
+
try {
|
|
34
|
+
const raw = await fsRead(shipwrightMarketplaceManifestPath(home));
|
|
35
|
+
const parsed = JSON.parse(raw);
|
|
36
|
+
if (parsed &&
|
|
37
|
+
typeof parsed === "object" &&
|
|
38
|
+
"version" in parsed &&
|
|
39
|
+
typeof parsed.version === "string") {
|
|
40
|
+
const version = parsed.version.trim();
|
|
41
|
+
return version.length > 0 ? version : null;
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=shipwright-plugin-version-reader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shipwright-plugin-version-reader.js","sourceRoot":"","sources":["../../src/core/shipwright-plugin-version-reader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AASjC,4DAA4D;AAC5D,MAAM,UAAU,iCAAiC,CAAC,IAAY;IAC5D,OAAO,IAAI,CACT,IAAI,EACJ,SAAS,EACT,SAAS,EACT,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,CACnB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,OAA0C,EAAE;IAE5C,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACtE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IACE,MAAM;YACN,OAAO,MAAM,KAAK,QAAQ;YAC1B,SAAS,IAAI,MAAM;YACnB,OAAQ,MAA+B,CAAC,OAAO,KAAK,QAAQ,EAC5D,CAAC;YACD,MAAM,OAAO,GAAI,MAA8B,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/D,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -1,30 +1,7 @@
|
|
|
1
1
|
import { SessionWatcher } from "../../core/session-watcher.js";
|
|
2
2
|
import { SdkSessionsStore } from "../../core/sdk-sessions-store.js";
|
|
3
|
-
export type AggregatedEntry
|
|
4
|
-
|
|
5
|
-
taskId: string;
|
|
6
|
-
sessionUuid: string;
|
|
7
|
-
taskTitle: string;
|
|
8
|
-
toolUseId: string;
|
|
9
|
-
toolName: string;
|
|
10
|
-
input: unknown;
|
|
11
|
-
bestEffort: true;
|
|
12
|
-
} | {
|
|
13
|
-
kind: "text_question";
|
|
14
|
-
taskId: string;
|
|
15
|
-
sessionUuid: string;
|
|
16
|
-
taskTitle: string;
|
|
17
|
-
questionId: string;
|
|
18
|
-
questionText: string;
|
|
19
|
-
bestEffort: true;
|
|
20
|
-
} | {
|
|
21
|
-
kind: "terminal_prompt";
|
|
22
|
-
taskId: string;
|
|
23
|
-
sessionUuid: string;
|
|
24
|
-
taskTitle: string;
|
|
25
|
-
promptText: string;
|
|
26
|
-
bestEffort: true;
|
|
27
|
-
};
|
|
3
|
+
export type { AggregatedEntry } from "./_types.js";
|
|
4
|
+
import type { AggregatedEntry } from "./_types.js";
|
|
28
5
|
/**
|
|
29
6
|
* Walk every task in the store, return cached entries on a warm hit
|
|
30
7
|
* (mtime + dismissed unchanged), otherwise re-read the JSONL +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_derive.d.ts","sourceRoot":"","sources":["../../../src/external/inbox/_derive.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAO/D,OAAO,EACL,gBAAgB,EAEjB,MAAM,kCAAkC,CAAC;AAS1C,
|
|
1
|
+
{"version":3,"file":"_derive.d.ts","sourceRoot":"","sources":["../../../src/external/inbox/_derive.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAO/D,OAAO,EACL,gBAAgB,EAEjB,MAAM,kCAAkC,CAAC;AAS1C,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,KAAK,EAAE,gBAAgB,CAAC;IACxB,OAAO,EAAE,cAAc,CAAC;CACzB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC,CAyH/D;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,eAAe,EAAE,EACtB,IAAI,EAAE;IACJ,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,EAAE;QACV,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAC7B,gBAAgB,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;KAClD,CAAC;CACH,GACA,IAAI,CA2CN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_derive.js","sourceRoot":"","sources":["../../../src/external/inbox/_derive.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAGxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EACL,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAM7E,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,GAEvB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"_derive.js","sourceRoot":"","sources":["../../../src/external/inbox/_derive.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAGxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EACL,kBAAkB,EAClB,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAM7E,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,GAEvB,MAAM,aAAa,CAAC;AAKrB;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAG1C;IACC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChC,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,gEAAgE;QAChE,6DAA6D;QAC7D,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,eAAe;YAAE,SAAS;QAEtE,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB;aAChD,KAAK,EAAE;aACP,IAAI,EAAE;aACN,IAAI,CAAC,GAAG,CAAC,CAAC;QACb,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEtD,mEAAmE;QACnE,+DAA+D;QAC/D,qCAAqC;QACrC,IAAI,MAAM,IAAI,CAAC,MAAM,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YAClE,SAAS;QACX,CAAC;QAED,mEAAmE;QACnE,gDAAgD;QAChD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,GAAG,KAAK;YAAE,SAAS;QAEzD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,sBAAsB,CAAC,CAAC;YACzE,SAAS;QACX,CAAC;QACD,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE5C,sCAAsC;QACtC,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC;gBACpC,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,QAAQ,EAAE,CAAC;gBACX,iBAAiB,EAAE,IAAI;gBACvB,QAAQ,EAAE,GAAG,EAAE,0DAA0D;aAC1E,CAAC,CAAC;YACH,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI;gBAAE,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,kBAAkB,CAAC;YAChC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,2BAA2B;YACtC,SAAS,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;SACnD,CAAC,CAAC;QACH,MAAM,YAAY,GAAqC,EAAE,CAAC;QAC1D,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,SAAS,EAAE,IAAI,CAAC,KAAK;aACtB,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,IAAI,CAAC,KAAK;gBACrB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,eAAe;gBACrB,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,UAAU;gBAC1C,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,YAAY;gBAC9C,SAAS,EAAE,IAAI,CAAC,KAAK;aACtB,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,IAAI,CAAC,KAAK;gBACrB,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,UAAU;gBAC1C,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,YAAY;gBAC9C,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;QACL,CAAC;QAED,+DAA+D;QAC/D,yCAAyC;QACzC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3D,IACE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC;YAChE,IAAI,CAAC,KAAK,CAAC,uBAAuB,KAAK,OAAO,CAAC,MAAM,EACrD,CAAC;YACD,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;gBACvB,KAAK,EAAE;oBACL,iBAAiB,EAAE,WAAW;oBAC9B,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB;oBACnD,uBAAuB,EAAE,OAAO,CAAC,MAAM;iBACxC;aACF,CAAC,CAAC;YACH,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QAED,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE;YACrC,YAAY,EAAE,GAAG,CAAC,IAAI;YACtB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,aAAa,EAAE,OAAO,CAAC,MAAM;YAC7B,YAAY;YACZ,OAAO,EAAE,YAAY;YACrB,UAAU,EAAE,WAAW;SACxB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,GAAsB,EACtB,IAMC;IAED,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IACnC,IAAI,CAAC,UAAU,CAAC,gBAAgB;QAAE,OAAO;IACzC,MAAM,IAAI,GAAG,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1D,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,eAAe;YAAE,SAAS;QACtE,+DAA+D;QAC/D,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;YACvE,SAAS;QACX,CAAC;QACD,IAAI,UAAU,GAAkB,IAAI,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,OAAO;gBAAE,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,+DAA+D;YAC/D,8DAA8D;YAC9D,yDAAyD;YACzD,UAAU,GAAG,IAAI,CAAC;YAClB,OAAO,CAAC,IAAI,CACV,IAAI,CAAC,SAAS,CAAC;gBACb,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,iDAAiD;gBAC1D,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;aACjC,CAAC,CACH,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU;YAAE,SAAS;QAC1B,sEAAsE;QACtE,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,CAC9D,CAAC;QACF,IAAI,KAAK,IAAI,CAAC;YAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACrC,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,UAAU;YACV,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,UAAU,CACvB,IAAkB,EAClB,MAA6B,EAC7B,YAAoB,EACpB,GAAsB;IAEtB,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC1C,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,YAAY,KAAK,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAC/B,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,YAAY,EAAE,CAAC,CAAC,YAAY;gBAC5B,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { SdkSessionsStore } from "../../core/sdk-sessions-store.js";
|
|
2
|
+
import type { AggregatedEntry } from "./_types.js";
|
|
3
|
+
/** Dismiss-id prefix for a `lead_question` — disambiguates from a JSONL `toolUseId` (which never starts with this). */
|
|
4
|
+
export declare const LEAD_QUESTION_DISMISS_PREFIX = "lq-";
|
|
5
|
+
export declare function leadQuestionDismissId(taskId: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* FR-04.37 outbound: the marker line is an internal sentinel and must
|
|
8
|
+
* never reach the rendered "notification" (the inbox card) — strip it
|
|
9
|
+
* and return the human-authored body only. `null` when no marker is
|
|
10
|
+
* present (an ordinary task description, not a waiting follow-up).
|
|
11
|
+
*/
|
|
12
|
+
export declare function extractLeadQuestionBody(description: string | undefined): string | null;
|
|
13
|
+
/**
|
|
14
|
+
* Post-pass over the store (mirrors `appendTerminalPrompts`'s shape):
|
|
15
|
+
* append one `lead_question` entry per waiting, non-dismissed, unanswered
|
|
16
|
+
* task. Runs after the JSONL-derived pass; a task already surfaced under
|
|
17
|
+
* another kind (e.g. a live `ask_tool`) still gets its own lead_question
|
|
18
|
+
* entry too — the two are independent waiting states on the same task.
|
|
19
|
+
*/
|
|
20
|
+
export declare function appendLeadQuestions(entries: AggregatedEntry[], args: {
|
|
21
|
+
store: SdkSessionsStore;
|
|
22
|
+
}): void;
|
|
23
|
+
//# sourceMappingURL=_lead.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_lead.d.ts","sourceRoot":"","sources":["../../../src/external/inbox/_lead.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AASnD,uHAAuH;AACvH,eAAO,MAAM,4BAA4B,QAAQ,CAAC;AAElD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,MAAM,GAAG,IAAI,CAQf;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,eAAe,EAAE,EAC1B,IAAI,EAAE;IAAE,KAAK,EAAE,gBAAgB,CAAA;CAAE,GAChC,IAAI,CAkBN"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* external/inbox/_lead.ts — the `lead_question` inbox kind (FR-04.17/18/19).
|
|
3
|
+
*
|
|
4
|
+
* Unlike `ask_tool`/`text_question`/`terminal_prompt` (derived from a JSONL
|
|
5
|
+
* or live-terminal read — see `./_derive.ts`), a `lead_question` is WRITTEN:
|
|
6
|
+
* leadwright's `renderLeadQuestion` (separate repo, `lib/lead-question.ts`)
|
|
7
|
+
* puts a `<!-- lead-question:TYPE -->` marker line at the top of a task's
|
|
8
|
+
* `description` when it proposes a follow-up. This module only needs to
|
|
9
|
+
* detect that marker's PRESENCE and strip it — the six named question
|
|
10
|
+
* types are leadwright's own vocabulary (FR-04.18), not webui's. Per
|
|
11
|
+
* CLAUDE.md DO-NOT #7 this is a verbatim, independent mirror of the
|
|
12
|
+
* detection regex, not a cross-package import.
|
|
13
|
+
*
|
|
14
|
+
* A task is "waiting" iff its description carries the marker AND it has
|
|
15
|
+
* not yet been answered (`poFeedback` unset) and not yet dismissed.
|
|
16
|
+
*
|
|
17
|
+
* CONTRACT (by design, not a bug): both suppressions are per-TASK, not
|
|
18
|
+
* per-question. Once `poFeedback` is set (answered) or `lq-<taskId>` is
|
|
19
|
+
* dismissed, this task can surface no FURTHER lead_question until
|
|
20
|
+
* leadwright clears `poFeedback` and rewrites `description` for the next
|
|
21
|
+
* follow-up — there is no per-question id to key a narrower suppression on,
|
|
22
|
+
* and inventing one is explicitly out of scope here (that's leadwright's
|
|
23
|
+
* FR-04.18 concern, not webui's). If leadwright ever needs to re-ask on the
|
|
24
|
+
* SAME task while an old answer is still present, it must clear
|
|
25
|
+
* `poFeedback` first.
|
|
26
|
+
*/
|
|
27
|
+
const LEAD_QUESTION_MARKER_RE = /^<!--\s*lead-question:[a-zäöüß-]+\s*-->/;
|
|
28
|
+
// Same marker, but matched anywhere on its own line — used to strip a
|
|
29
|
+
// re-ask's marker appended BELOW the leading one, so the sentinel can never
|
|
30
|
+
// survive into the body even from a second occurrence (FR-04.37).
|
|
31
|
+
const LEAD_QUESTION_MARKER_LINE_RE = /^[ \t]*<!--\s*lead-question:[a-zäöüß-]+\s*-->[ \t]*$/gim;
|
|
32
|
+
/** Dismiss-id prefix for a `lead_question` — disambiguates from a JSONL `toolUseId` (which never starts with this). */
|
|
33
|
+
export const LEAD_QUESTION_DISMISS_PREFIX = "lq-";
|
|
34
|
+
export function leadQuestionDismissId(taskId) {
|
|
35
|
+
return `${LEAD_QUESTION_DISMISS_PREFIX}${taskId}`;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* FR-04.37 outbound: the marker line is an internal sentinel and must
|
|
39
|
+
* never reach the rendered "notification" (the inbox card) — strip it
|
|
40
|
+
* and return the human-authored body only. `null` when no marker is
|
|
41
|
+
* present (an ordinary task description, not a waiting follow-up).
|
|
42
|
+
*/
|
|
43
|
+
export function extractLeadQuestionBody(description) {
|
|
44
|
+
if (typeof description !== "string")
|
|
45
|
+
return null;
|
|
46
|
+
const match = LEAD_QUESTION_MARKER_RE.exec(description);
|
|
47
|
+
if (!match)
|
|
48
|
+
return null;
|
|
49
|
+
return description
|
|
50
|
+
.slice(match[0].length)
|
|
51
|
+
.replace(/^[\r\n]+/, "")
|
|
52
|
+
.replace(LEAD_QUESTION_MARKER_LINE_RE, "");
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Post-pass over the store (mirrors `appendTerminalPrompts`'s shape):
|
|
56
|
+
* append one `lead_question` entry per waiting, non-dismissed, unanswered
|
|
57
|
+
* task. Runs after the JSONL-derived pass; a task already surfaced under
|
|
58
|
+
* another kind (e.g. a live `ask_tool`) still gets its own lead_question
|
|
59
|
+
* entry too — the two are independent waiting states on the same task.
|
|
60
|
+
*/
|
|
61
|
+
export function appendLeadQuestions(entries, args) {
|
|
62
|
+
const { store } = args;
|
|
63
|
+
for (const task of store.list()) {
|
|
64
|
+
if (task.state === "done" || task.state === "launch_failed")
|
|
65
|
+
continue;
|
|
66
|
+
if (task.poFeedback)
|
|
67
|
+
continue;
|
|
68
|
+
const body = extractLeadQuestionBody(task.description);
|
|
69
|
+
if (body === null)
|
|
70
|
+
continue;
|
|
71
|
+
if (task.inbox.dismissedToolUseIds.includes(leadQuestionDismissId(task.taskId))) {
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
entries.push({
|
|
75
|
+
kind: "lead_question",
|
|
76
|
+
taskId: task.taskId,
|
|
77
|
+
sessionUuid: task.sessionUuid,
|
|
78
|
+
taskTitle: task.title,
|
|
79
|
+
questionText: body,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=_lead.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_lead.js","sourceRoot":"","sources":["../../../src/external/inbox/_lead.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAKH,MAAM,uBAAuB,GAAG,yCAAyC,CAAC;AAC1E,sEAAsE;AACtE,4EAA4E;AAC5E,kEAAkE;AAClE,MAAM,4BAA4B,GAChC,yDAAyD,CAAC;AAE5D,uHAAuH;AACvH,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,CAAC;AAElD,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,OAAO,GAAG,4BAA4B,GAAG,MAAM,EAAE,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,WAA+B;IAE/B,IAAI,OAAO,WAAW,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,WAAW;SACf,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;SACtB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAA0B,EAC1B,IAAiC;IAEjC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,eAAe;YAAE,SAAS;QACtE,IAAI,IAAI,CAAC,UAAU;YAAE,SAAS;QAC9B,MAAM,IAAI,GAAG,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,IAAI,KAAK,IAAI;YAAE,SAAS;QAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YAChF,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,KAAK;YACrB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|