@svenroth-ai/shipwright 0.28.0 → 0.29.1

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.
Files changed (306) hide show
  1. package/client/dist/apple-touch-icon.png +0 -0
  2. package/client/dist/assets/{EmbeddedTerminal-4xgNUBUu.js → EmbeddedTerminal-BXosRYLy.js} +30 -30
  3. package/client/dist/assets/{abnfDiagram-VRR7QNED-BdCNbaqc.js → abnfDiagram-VCTEODGH-BGxuVEiU.js} +1 -1
  4. package/client/dist/assets/arc-o82bcJs8.js +1 -0
  5. package/client/dist/assets/architectureDiagram-5GKGNRK7-CaeUIM7e.js +36 -0
  6. package/client/dist/assets/blockDiagram-I7D4REHJ-DtWpTjgT.js +129 -0
  7. package/client/dist/assets/c4Diagram-7LVT6UL2-sJULbaUv.js +38 -0
  8. package/client/dist/assets/channel-CLBQbfQb.js +1 -0
  9. package/client/dist/assets/{chunk-2Q5K7J3B-4N6AnmBJ.js → chunk-2Q5K7J3B-CPeH4xHb.js} +1 -1
  10. package/client/dist/assets/{chunk-5VM5RSS4-Bwd7rtD3.js → chunk-5VM5RSS4-DxiKB3qZ.js} +1 -1
  11. package/client/dist/assets/{chunk-32BRIVSS-Cs67LiCy.js → chunk-F27PBJKO-B8V1zhCX.js} +1 -1
  12. package/client/dist/assets/{chunk-EX3LRPZG-CQqGfptD.js → chunk-IMKFNOWR-BtXet829.js} +5 -5
  13. package/client/dist/assets/{chunk-JWPE2WC7-ClvKd4PN.js → chunk-JWPE2WC7-BaQYKssR.js} +1 -1
  14. package/client/dist/assets/chunk-POPQ4Y6H-I1x_vfH3.js +1 -0
  15. package/client/dist/assets/{chunk-MOJQB5TN-Cwvj8GE1.js → chunk-SVP7TREG-Bvt8jrSp.js} +1 -1
  16. package/client/dist/assets/{chunk-V7JOEXUC-CYFfa4PY.js → chunk-TICWLB2K--9ywNq1F.js} +1 -1
  17. package/client/dist/assets/{chunk-XXDRQBXY-BQAZ6Our.js → chunk-XXDRQBXY-DrIyrBs1.js} +1 -1
  18. package/client/dist/assets/classDiagram-ZZMXUADV-D8z-o3xu.js +1 -0
  19. package/client/dist/assets/classDiagram-v2-VYDZK3BY-D8z-o3xu.js +1 -0
  20. package/client/dist/assets/{cose-bilkent-JH36ORCC-C76Yia6h.js → cose-bilkent-JH36ORCC-DISm8_p0.js} +1 -1
  21. package/client/dist/assets/{cynefin-VYW2F7L2-pJe7rdTi.js → cynefin-OW5HDTMX-wyDjqucU.js} +3 -3
  22. package/client/dist/assets/{cynefinDiagram-TSTJHNR4-EeHQ7dYV.js → cynefinDiagram-5FMLGOSQ-CN-IKDQ6.js} +1 -1
  23. package/client/dist/assets/dagre-GXQ25YYZ-QY0m5eSL.js +4 -0
  24. package/client/dist/assets/diagram-S7CK7UJ4-DhjaAe2g.js +30 -0
  25. package/client/dist/assets/diagram-UQ7AKVKN-D-3R3axg.js +41 -0
  26. package/client/dist/assets/{diagram-FQU43EPY-DW_-leqw.js → diagram-VSXAHHWV-BxXEtjRu.js} +2 -2
  27. package/client/dist/assets/{diagram-G47NLZAW-C_hsLD4u.js → diagram-VX7I27RA-DkbXkJpd.js} +1 -1
  28. package/client/dist/assets/{diagram-NH7WQ7WH-CbeQuO_f.js → diagram-Z3DM3KII-DQGRD9gQ.js} +1 -1
  29. package/client/dist/assets/{ebnfDiagram-CCIWWBDH-B8Z8WHF6.js → ebnfDiagram-PWID7BFC-C_XxskCm.js} +1 -1
  30. package/client/dist/assets/erDiagram-RLTQ6QDP-BhBsYQ7c.js +99 -0
  31. package/client/dist/assets/flowDiagram-HODETNUW-D7fXEPrM.js +168 -0
  32. package/client/dist/assets/{ganttDiagram-NO4QXBWP-K3X0DYBa.js → ganttDiagram-EL5Y4UJY-Bwf8EtWr.js} +4 -4
  33. package/client/dist/assets/{gitGraphDiagram-IHSO6WYX-B2SEx0xa.js → gitGraphDiagram-WWUBYQGX-C3_ixsOl.js} +1 -1
  34. package/client/dist/assets/index-DWrPE3aq.css +1 -0
  35. package/client/dist/assets/index-DwRlIUrK.js +924 -0
  36. package/client/dist/assets/infoDiagram-27XIBGKW-BpcHmgOL.js +2 -0
  37. package/client/dist/assets/{ishikawaDiagram-FXEZZL3T-CrN7QJzt.js → ishikawaDiagram-5VMMS53U-DzSGmhT5.js} +4 -4
  38. package/client/dist/assets/{journeyDiagram-5HDEW3XC-XHIsl7rM.js → journeyDiagram-3NMN7TZE-CT1CrVQO.js} +2 -2
  39. package/client/dist/assets/{kanban-definition-HUTT4EX6-A6HJqHw7.js → kanban-definition-UXKFOSKX-N1CNMAOm.js} +8 -8
  40. package/client/dist/assets/katex-C5jXJg4s.js +257 -0
  41. package/client/dist/assets/layout-CR8gdfo4.js +1 -0
  42. package/client/dist/assets/{linear-D1vF9IQB.js → linear-CfLRjQgX.js} +1 -1
  43. package/client/dist/assets/mermaid.core-Bnqt31Q7.js +312 -0
  44. package/client/dist/assets/{mindmap-definition-LN4V7U3C-CxRkUj6Z.js → mindmap-definition-YA3MSWOX-Brc-v1M4.js} +2 -2
  45. package/client/dist/assets/{pegDiagram-2B236MQR-Bs9dp-8a.js → pegDiagram-XKGWAZYB-D8jUV01U.js} +1 -1
  46. package/client/dist/assets/{pieDiagram-ENE6RG2P-DBWILzB8.js → pieDiagram-E7YTZNPT-BiSkIsrz.js} +3 -3
  47. package/client/dist/assets/{quadrantDiagram-ABIIQ3AL-DrCVJJx6.js → quadrantDiagram-AXDQQJYC-CJetqQxd.js} +1 -1
  48. package/client/dist/assets/{railroadDiagram-RFXS5EU6-BdPW2dNf.js → railroadDiagram-O6MQD6OU-DTTtZpGO.js} +1 -1
  49. package/client/dist/assets/{requirementDiagram-TGXJPOKE-Bj_g3tC5.js → requirementDiagram-BXWQKSXE-meFCoLtR.js} +5 -5
  50. package/client/dist/assets/{sankeyDiagram-HTMAVEWB-BGL9NnsS.js → sankeyDiagram-P5KCCOFB-BR9eN4Do.js} +4 -4
  51. package/client/dist/assets/{sequenceDiagram-DBY2YBRQ-DEirxTZY.js → sequenceDiagram-WJ2MYXX4-BdVzFsCC.js} +1 -1
  52. package/client/dist/assets/{sizeCapture-X5ZJPWSS-BtLrvrea.js → sizeCapture-INFHLROL-CZoZ7r-1.js} +1 -1
  53. package/client/dist/assets/stateDiagram-D77RDMKH-Cmc-iYtm.js +1 -0
  54. package/client/dist/assets/stateDiagram-v2-MP3YSRHH-Cj-hQ4qB.js +1 -0
  55. package/client/dist/assets/swimlanes-42K2YHIH-DN4MssUX.js +1 -0
  56. package/client/dist/assets/swimlanesDiagram-VR7AAH4N-DFxrYFKF.js +8 -0
  57. package/client/dist/assets/{timeline-definition-FHXFAJF6-CnBKJtD_.js → timeline-definition-24CTP7MA-pxxqlxwt.js} +3 -3
  58. package/client/dist/assets/{vennDiagram-L72KCM5P-BYmiJYoh.js → vennDiagram-4TSXK5OY-DiItNcze.js} +5 -5
  59. package/client/dist/assets/{wardleyDiagram-EHGQE667-DU7vW8q3.js → wardleyDiagram-VM6X3IG4-Dfvub75z.js} +1 -1
  60. package/client/dist/assets/xychartDiagram-S5SC5T6Z-Bx83X515.js +7 -0
  61. package/client/dist/favicon-16.png +0 -0
  62. package/client/dist/favicon-32.png +0 -0
  63. package/client/dist/icon-192.png +0 -0
  64. package/client/dist/icon-512.png +0 -0
  65. package/client/dist/icon-maskable-512.png +0 -0
  66. package/client/dist/index.html +11 -2
  67. package/client/dist/manifest.json +13 -0
  68. package/package.json +2 -2
  69. package/server/dist/config.d.ts.map +1 -1
  70. package/server/dist/config.js +7 -2
  71. package/server/dist/config.js.map +1 -1
  72. package/server/dist/core/adopt-scan-findings.d.ts +12 -0
  73. package/server/dist/core/adopt-scan-findings.d.ts.map +1 -0
  74. package/server/dist/core/adopt-scan-findings.js +96 -0
  75. package/server/dist/core/adopt-scan-findings.js.map +1 -0
  76. package/server/dist/core/adopt-scan.d.ts +49 -0
  77. package/server/dist/core/adopt-scan.d.ts.map +1 -0
  78. package/server/dist/core/adopt-scan.js +201 -0
  79. package/server/dist/core/adopt-scan.js.map +1 -0
  80. package/server/dist/core/custom-profile-command-policy.d.ts +6 -0
  81. package/server/dist/core/custom-profile-command-policy.d.ts.map +1 -0
  82. package/server/dist/core/custom-profile-command-policy.js +110 -0
  83. package/server/dist/core/custom-profile-command-policy.js.map +1 -0
  84. package/server/dist/core/custom-profile-loader.d.ts +34 -0
  85. package/server/dist/core/custom-profile-loader.d.ts.map +1 -0
  86. package/server/dist/core/custom-profile-loader.js +225 -0
  87. package/server/dist/core/custom-profile-loader.js.map +1 -0
  88. package/server/dist/core/preview-child-lifecycle.d.ts +7 -2
  89. package/server/dist/core/preview-child-lifecycle.d.ts.map +1 -1
  90. package/server/dist/core/preview-child-lifecycle.js +17 -5
  91. package/server/dist/core/preview-child-lifecycle.js.map +1 -1
  92. package/server/dist/core/preview-session-manager.d.ts +1 -0
  93. package/server/dist/core/preview-session-manager.d.ts.map +1 -1
  94. package/server/dist/core/preview-session-manager.js +2 -2
  95. package/server/dist/core/preview-session-manager.js.map +1 -1
  96. package/server/dist/core/project-actions-loader.d.ts +13 -0
  97. package/server/dist/core/project-actions-loader.d.ts.map +1 -1
  98. package/server/dist/core/project-actions-loader.js +28 -6
  99. package/server/dist/core/project-actions-loader.js.map +1 -1
  100. package/server/dist/core/project-data-dir.d.ts +41 -0
  101. package/server/dist/core/project-data-dir.d.ts.map +1 -0
  102. package/server/dist/core/project-data-dir.js +64 -0
  103. package/server/dist/core/project-data-dir.js.map +1 -0
  104. package/server/dist/core/project-data-migrate.d.ts +14 -0
  105. package/server/dist/core/project-data-migrate.d.ts.map +1 -0
  106. package/server/dist/core/project-data-migrate.js +94 -0
  107. package/server/dist/core/project-data-migrate.js.map +1 -0
  108. package/server/dist/core/project-manager.d.ts.map +1 -1
  109. package/server/dist/core/project-manager.js +9 -10
  110. package/server/dist/core/project-manager.js.map +1 -1
  111. package/server/dist/core/session-file/access.d.ts +26 -0
  112. package/server/dist/core/session-file/access.d.ts.map +1 -0
  113. package/server/dist/core/session-file/access.js +143 -0
  114. package/server/dist/core/session-file/access.js.map +1 -0
  115. package/server/dist/core/session-file/asset-access.d.ts +15 -0
  116. package/server/dist/core/session-file/asset-access.d.ts.map +1 -0
  117. package/server/dist/core/session-file/asset-access.js +141 -0
  118. package/server/dist/core/session-file/asset-access.js.map +1 -0
  119. package/server/dist/core/session-file/evidence.d.ts +25 -0
  120. package/server/dist/core/session-file/evidence.d.ts.map +1 -0
  121. package/server/dist/core/session-file/evidence.js +201 -0
  122. package/server/dist/core/session-file/evidence.js.map +1 -0
  123. package/server/dist/core/session-file/probe.d.ts +16 -0
  124. package/server/dist/core/session-file/probe.d.ts.map +1 -0
  125. package/server/dist/core/session-file/probe.js +63 -0
  126. package/server/dist/core/session-file/probe.js.map +1 -0
  127. package/server/dist/core/session-file/safe-read.d.ts +33 -0
  128. package/server/dist/core/session-file/safe-read.d.ts.map +1 -0
  129. package/server/dist/core/session-file/safe-read.js +103 -0
  130. package/server/dist/core/session-file/safe-read.js.map +1 -0
  131. package/server/dist/core/session-file/sensitive.d.ts +5 -0
  132. package/server/dist/core/session-file/sensitive.d.ts.map +1 -0
  133. package/server/dist/core/session-file/sensitive.js +52 -0
  134. package/server/dist/core/session-file/sensitive.js.map +1 -0
  135. package/server/dist/core/session-info/collect.d.ts +70 -0
  136. package/server/dist/core/session-info/collect.d.ts.map +1 -0
  137. package/server/dist/core/session-info/collect.js +248 -0
  138. package/server/dist/core/session-info/collect.js.map +1 -0
  139. package/server/dist/core/session-info/line-scan.d.ts +20 -0
  140. package/server/dist/core/session-info/line-scan.d.ts.map +1 -0
  141. package/server/dist/core/session-info/line-scan.js +109 -0
  142. package/server/dist/core/session-info/line-scan.js.map +1 -0
  143. package/server/dist/core/session-info/remote-control.d.ts +9 -0
  144. package/server/dist/core/session-info/remote-control.d.ts.map +1 -0
  145. package/server/dist/core/session-info/remote-control.js +64 -0
  146. package/server/dist/core/session-info/remote-control.js.map +1 -0
  147. package/server/dist/core/session-info/session-info.d.ts +18 -0
  148. package/server/dist/core/session-info/session-info.d.ts.map +1 -0
  149. package/server/dist/core/session-info/session-info.js +170 -0
  150. package/server/dist/core/session-info/session-info.js.map +1 -0
  151. package/server/dist/core/session-info/small-file.d.ts +2 -0
  152. package/server/dist/core/session-info/small-file.d.ts.map +1 -0
  153. package/server/dist/core/session-info/small-file.js +42 -0
  154. package/server/dist/core/session-info/small-file.js.map +1 -0
  155. package/server/dist/core/session-info/subagent-transcript.d.ts +12 -0
  156. package/server/dist/core/session-info/subagent-transcript.d.ts.map +1 -0
  157. package/server/dist/core/session-info/subagent-transcript.js +78 -0
  158. package/server/dist/core/session-info/subagent-transcript.js.map +1 -0
  159. package/server/dist/core/session-info/subagents.d.ts +14 -0
  160. package/server/dist/core/session-info/subagents.d.ts.map +1 -0
  161. package/server/dist/core/session-info/subagents.js +92 -0
  162. package/server/dist/core/session-info/subagents.js.map +1 -0
  163. package/server/dist/core/session-info/test-fixtures.d.ts +50 -0
  164. package/server/dist/core/session-info/test-fixtures.d.ts.map +1 -0
  165. package/server/dist/core/session-info/test-fixtures.js +43 -0
  166. package/server/dist/core/session-info/test-fixtures.js.map +1 -0
  167. package/server/dist/core/session-info/types.d.ts +77 -0
  168. package/server/dist/core/session-info/types.d.ts.map +1 -0
  169. package/server/dist/core/session-info/types.js +14 -0
  170. package/server/dist/core/session-info/types.js.map +1 -0
  171. package/server/dist/core/stack-profiles-create.d.ts +31 -0
  172. package/server/dist/core/stack-profiles-create.d.ts.map +1 -0
  173. package/server/dist/core/stack-profiles-create.js +128 -0
  174. package/server/dist/core/stack-profiles-create.js.map +1 -0
  175. package/server/dist/core/stack-profiles.d.ts +49 -0
  176. package/server/dist/core/stack-profiles.d.ts.map +1 -0
  177. package/server/dist/core/stack-profiles.js +142 -0
  178. package/server/dist/core/stack-profiles.js.map +1 -0
  179. package/server/dist/external/_shared/helpers.d.ts +2 -0
  180. package/server/dist/external/_shared/helpers.d.ts.map +1 -1
  181. package/server/dist/external/_shared/helpers.js.map +1 -1
  182. package/server/dist/external/actions/get.d.ts +3 -1
  183. package/server/dist/external/actions/get.d.ts.map +1 -1
  184. package/server/dist/external/actions/get.js +15 -4
  185. package/server/dist/external/actions/get.js.map +1 -1
  186. package/server/dist/external/actions/routes.d.ts +3 -1
  187. package/server/dist/external/actions/routes.d.ts.map +1 -1
  188. package/server/dist/external/actions/routes.js.map +1 -1
  189. package/server/dist/external/actions/stub.d.ts.map +1 -1
  190. package/server/dist/external/actions/stub.js +15 -4
  191. package/server/dist/external/actions/stub.js.map +1 -1
  192. package/server/dist/external/actions/upload-delete.d.ts.map +1 -1
  193. package/server/dist/external/actions/upload-delete.js +30 -20
  194. package/server/dist/external/actions/upload-delete.js.map +1 -1
  195. package/server/dist/external/actions/upload.d.ts.map +1 -1
  196. package/server/dist/external/actions/upload.js +5 -4
  197. package/server/dist/external/actions/upload.js.map +1 -1
  198. package/server/dist/external/create-external-routes-args.d.ts +3 -1
  199. package/server/dist/external/create-external-routes-args.d.ts.map +1 -1
  200. package/server/dist/external/inbox/_phase-gate.d.ts +9 -0
  201. package/server/dist/external/inbox/_phase-gate.d.ts.map +1 -0
  202. package/server/dist/external/inbox/_phase-gate.js +87 -0
  203. package/server/dist/external/inbox/_phase-gate.js.map +1 -0
  204. package/server/dist/external/inbox/_types.d.ts +7 -0
  205. package/server/dist/external/inbox/_types.d.ts.map +1 -1
  206. package/server/dist/external/inbox/routes.d.ts.map +1 -1
  207. package/server/dist/external/inbox/routes.js +2 -0
  208. package/server/dist/external/inbox/routes.js.map +1 -1
  209. package/server/dist/external/launch/action-substitution-branch.js +2 -2
  210. package/server/dist/external/launch/action-substitution-branch.js.map +1 -1
  211. package/server/dist/external/mission-context/facts.js +2 -2
  212. package/server/dist/external/mission-context/facts.js.map +1 -1
  213. package/server/dist/external/preview/routes.d.ts +3 -1
  214. package/server/dist/external/preview/routes.d.ts.map +1 -1
  215. package/server/dist/external/preview/routes.js +8 -1
  216. package/server/dist/external/preview/routes.js.map +1 -1
  217. package/server/dist/external/routes.d.ts.map +1 -1
  218. package/server/dist/external/routes.js +2 -2
  219. package/server/dist/external/routes.js.map +1 -1
  220. package/server/dist/external/session-file/probe-route.d.ts +4 -0
  221. package/server/dist/external/session-file/probe-route.d.ts.map +1 -0
  222. package/server/dist/external/session-file/probe-route.js +66 -0
  223. package/server/dist/external/session-file/probe-route.js.map +1 -0
  224. package/server/dist/external/session-file/routes.d.ts +12 -0
  225. package/server/dist/external/session-file/routes.d.ts.map +1 -0
  226. package/server/dist/external/session-file/routes.js +90 -0
  227. package/server/dist/external/session-file/routes.js.map +1 -0
  228. package/server/dist/external/session-file/session-file.fixture.d.ts +45 -0
  229. package/server/dist/external/session-file/session-file.fixture.d.ts.map +1 -0
  230. package/server/dist/external/session-file/session-file.fixture.js +41 -0
  231. package/server/dist/external/session-file/session-file.fixture.js.map +1 -0
  232. package/server/dist/external/session-info/routes.d.ts +15 -0
  233. package/server/dist/external/session-info/routes.d.ts.map +1 -0
  234. package/server/dist/external/session-info/routes.js +57 -0
  235. package/server/dist/external/session-info/routes.js.map +1 -0
  236. package/server/dist/external/tasks/_phase-helpers.js +2 -2
  237. package/server/dist/external/tasks/_phase-helpers.js.map +1 -1
  238. package/server/dist/external/tasks/create.js +2 -2
  239. package/server/dist/external/tasks/create.js.map +1 -1
  240. package/server/dist/external-routes-wiring.d.ts.map +1 -1
  241. package/server/dist/external-routes-wiring.js +10 -1
  242. package/server/dist/external-routes-wiring.js.map +1 -1
  243. package/server/dist/index.d.ts.map +1 -1
  244. package/server/dist/index.js +6 -8
  245. package/server/dist/index.js.map +1 -1
  246. package/server/dist/routes/adopt-scan.d.ts +4 -0
  247. package/server/dist/routes/adopt-scan.d.ts.map +1 -0
  248. package/server/dist/routes/adopt-scan.js +27 -0
  249. package/server/dist/routes/adopt-scan.js.map +1 -0
  250. package/server/dist/routes/profiles.d.ts +7 -0
  251. package/server/dist/routes/profiles.d.ts.map +1 -1
  252. package/server/dist/routes/profiles.js +13 -0
  253. package/server/dist/routes/profiles.js.map +1 -1
  254. package/server/dist/routes/projects.d.ts.map +1 -1
  255. package/server/dist/routes/projects.js +58 -16
  256. package/server/dist/routes/projects.js.map +1 -1
  257. package/server/dist/routes/stack-profiles.d.ts +10 -0
  258. package/server/dist/routes/stack-profiles.d.ts.map +1 -0
  259. package/server/dist/routes/stack-profiles.js +65 -0
  260. package/server/dist/routes/stack-profiles.js.map +1 -0
  261. package/server/dist/terminal/data-target.d.ts +17 -0
  262. package/server/dist/terminal/data-target.d.ts.map +1 -0
  263. package/server/dist/terminal/data-target.js +56 -0
  264. package/server/dist/terminal/data-target.js.map +1 -0
  265. package/server/dist/terminal/image-paste.d.ts +2 -0
  266. package/server/dist/terminal/image-paste.d.ts.map +1 -1
  267. package/server/dist/terminal/image-paste.js +11 -12
  268. package/server/dist/terminal/image-paste.js.map +1 -1
  269. package/server/dist/terminal/routes.d.ts +5 -0
  270. package/server/dist/terminal/routes.d.ts.map +1 -1
  271. package/server/dist/terminal/routes.js +11 -13
  272. package/server/dist/terminal/routes.js.map +1 -1
  273. package/server/dist/types/project.d.ts +9 -0
  274. package/server/dist/types/project.d.ts.map +1 -1
  275. package/server/dist/types/stack-profile-contract.d.ts +33 -0
  276. package/server/dist/types/stack-profile-contract.d.ts.map +1 -0
  277. package/server/dist/types/stack-profile-contract.js +11 -0
  278. package/server/dist/types/stack-profile-contract.js.map +1 -0
  279. package/server/package.json +3 -3
  280. package/client/dist/assets/arc-DoZTTE1N.js +0 -1
  281. package/client/dist/assets/architectureDiagram-ZJ3FMSHR-DFTG4KtO.js +0 -36
  282. package/client/dist/assets/blockDiagram-677ZJIJ3-C34UBjOB.js +0 -132
  283. package/client/dist/assets/c4Diagram-LMCZKHZV-CbqAB1Ou.js +0 -10
  284. package/client/dist/assets/channel-DBcZw7Kn.js +0 -1
  285. package/client/dist/assets/chunk-RYQCIY6F-DrWMx37d.js +0 -1
  286. package/client/dist/assets/chunk-VR4S4FIN-B5eWtesm.js +0 -1
  287. package/client/dist/assets/classDiagram-OUVF2IWQ-C3Q1V9DU.js +0 -1
  288. package/client/dist/assets/classDiagram-v2-EOCWNBFH-C3Q1V9DU.js +0 -1
  289. package/client/dist/assets/dagre-VKFMJZFB-VXOY6IHR.js +0 -4
  290. package/client/dist/assets/diagram-OA4YK3LP-DRHY5d_c.js +0 -30
  291. package/client/dist/assets/diagram-WEI45ONY-B87OYR_S.js +0 -41
  292. package/client/dist/assets/erDiagram-Q63AITRT-DaD7oa9H.js +0 -85
  293. package/client/dist/assets/flowDiagram-23GEKE2U-GrMVpsea.js +0 -156
  294. package/client/dist/assets/graph-C9eacEi8.js +0 -1
  295. package/client/dist/assets/index-CIpLt0ie.js +0 -863
  296. package/client/dist/assets/index-DGtnTeFd.css +0 -1
  297. package/client/dist/assets/infoDiagram-FWYZ7A6U-Fi8fQ95G.js +0 -2
  298. package/client/dist/assets/katex-DkKDou_j.js +0 -257
  299. package/client/dist/assets/layout-DEXfKzaS.js +0 -1
  300. package/client/dist/assets/map-Czzmt4hB.js +0 -1
  301. package/client/dist/assets/mermaid.core-D6w9zlA0.js +0 -314
  302. package/client/dist/assets/stateDiagram-2N3HPSRC-D3GXIouX.js +0 -1
  303. package/client/dist/assets/stateDiagram-v2-6OUMAXLB-D3lXe_mJ.js +0 -1
  304. package/client/dist/assets/swimlanes-5IMT3BWC-PMRQzNhU.js +0 -2
  305. package/client/dist/assets/swimlanesDiagram-G3AALYLV-DMLbRFiO.js +0 -8
  306. package/client/dist/assets/xychartDiagram-FW5EYKEG-BEtPvBSU.js +0 -7
@@ -0,0 +1,87 @@
1
+ /*
2
+ * external/inbox/_phase-gate.ts — the `phase_gate` inbox kind
3
+ * (iterate-2026-10-29-inbox-guided-phase-questions).
4
+ *
5
+ * A guided-mode phase asks its questions as a menu in the embedded terminal.
6
+ * The live-terminal detector (`terminal_prompt`, `./_derive.ts`) is best-effort
7
+ * and reads only what the headless mirror currently shows, so someone watching
8
+ * ONLY the inbox could miss that a run waits for an answer. The orchestrator
9
+ * records the wait durably: `.shipwright/run_loop_state.json` flips to
10
+ * `paused_human_gate` with `currentPhaseTaskId` naming the paused phase task.
11
+ * This module reads that file (read-only observer, CLAUDE.md rule 12) and
12
+ * surfaces one entry for the task bound to that phase task.
13
+ *
14
+ * Precedence: the specific question wins. A task that already has an
15
+ * `ask_tool`, `terminal_prompt` or `text_question` entry shows THAT (it carries
16
+ * the real question text); `phase_gate` is the fallback that guarantees the
17
+ * wait is never invisible. A missing / torn loop-state yields no entry.
18
+ *
19
+ * Scope: the loop-state is read at `task.cwd`, which for a phase-task launch is
20
+ * the project root (the same directory the design gate reads at `project.path`).
21
+ * Anti-staleness: a phase task already in a TERMINAL run-config status cannot be
22
+ * at a live gate, even if a lagging loop-state still reads paused (mirrors
23
+ * `deriveDesignGate`). One entry per (project dir, phase task). Run this AFTER
24
+ * the question-producing appenders so the deferral sees their entries.
25
+ */
26
+ import path from "node:path";
27
+ import { readRunConfig as defaultReadRunConfig, } from "../../core/run-config-reader.js";
28
+ import { PAUSED_HUMAN_GATE, readLoopState, } from "../../core/run-loop-state-reader.js";
29
+ import { TERMINAL_PHASE_TASK_STATUSES } from "../../types/run-config-v2.js";
30
+ export const PHASE_GATE_PROMPT_TEXT = "A phase of this run is paused at a decision gate and waits for your answer. " +
31
+ "Open the task and answer the menu in its terminal.";
32
+ const QUESTION_KINDS = new Set([
33
+ "ask_tool",
34
+ "terminal_prompt",
35
+ "text_question",
36
+ "lead_question",
37
+ ]);
38
+ function dirKey(cwd) {
39
+ const resolved = path.resolve(cwd);
40
+ return process.platform === "win32" ? resolved.toLowerCase() : resolved;
41
+ }
42
+ export async function appendPhaseGates(entries, args) {
43
+ const { store } = args;
44
+ const readConfig = args.readRunConfig ?? defaultReadRunConfig;
45
+ const answered = new Set(entries.filter((e) => QUESTION_KINDS.has(e.kind)).map((e) => e.taskId));
46
+ const seen = new Set();
47
+ for (const task of store.list()) {
48
+ if (task.state === "done" || task.state === "launch_failed")
49
+ continue;
50
+ if (!task.phaseTaskId || !task.cwd)
51
+ continue;
52
+ if (answered.has(task.taskId))
53
+ continue;
54
+ const key = dirKey(task.cwd);
55
+ const loop = readLoopState(task.cwd);
56
+ if (!loop || loop.status !== PAUSED_HUMAN_GATE)
57
+ continue;
58
+ if (loop.currentPhaseTaskId !== task.phaseTaskId)
59
+ continue;
60
+ const dedupe = `${key}|${task.phaseTaskId}`;
61
+ if (seen.has(dedupe))
62
+ continue;
63
+ let terminal = false;
64
+ try {
65
+ const cfg = await readConfig(task.cwd);
66
+ if (cfg.status === "ok") {
67
+ const pt = cfg.config.phase_tasks.find((t) => t.phaseTaskId === task.phaseTaskId);
68
+ terminal = !!pt && TERMINAL_PHASE_TASK_STATUSES.includes(pt.status);
69
+ }
70
+ }
71
+ catch {
72
+ // Best-effort guard: an unreadable run-config must not hide a real wait.
73
+ }
74
+ if (terminal)
75
+ continue;
76
+ seen.add(dedupe);
77
+ entries.push({
78
+ kind: "phase_gate",
79
+ taskId: task.taskId,
80
+ sessionUuid: task.sessionUuid,
81
+ taskTitle: task.title,
82
+ promptText: PHASE_GATE_PROMPT_TEXT,
83
+ bestEffort: true,
84
+ });
85
+ }
86
+ }
87
+ //# sourceMappingURL=_phase-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_phase-gate.js","sourceRoot":"","sources":["../../../src/external/inbox/_phase-gate.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,13 @@ export type AggregatedEntry = {
23
23
  taskTitle: string;
24
24
  promptText: string;
25
25
  bestEffort: true;
26
+ } | {
27
+ kind: "phase_gate";
28
+ taskId: string;
29
+ sessionUuid: string;
30
+ taskTitle: string;
31
+ promptText: string;
32
+ bestEffort: true;
26
33
  } | {
27
34
  kind: "lead_question";
28
35
  taskId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"_types.d.ts","sourceRoot":"","sources":["../../../src/external/inbox/_types.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE/E,MAAM,MAAM,eAAe,GACvB;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,IAAI,CAAC;CAClB,GACD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,IAAI,CAAC;CAClB,GACD;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,IAAI,CAAC;CAClB,GACD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB,GACD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,sBAAsB,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,IAAI,CAAC;CAClB,GACD;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,IAAI,CAAC;CAClB,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,IAAI,CAAC;CAClB,CAAC"}
1
+ {"version":3,"file":"_types.d.ts","sourceRoot":"","sources":["../../../src/external/inbox/_types.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE/E,MAAM,MAAM,eAAe,GACvB;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,IAAI,CAAC;CAClB,GACD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,IAAI,CAAC;CAClB,GACD;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,IAAI,CAAC;CAClB,GACD;IACE,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,IAAI,CAAC;CAClB,GACD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB,GACD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,sBAAsB,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,IAAI,CAAC;CAClB,GACD;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,IAAI,CAAC;CAClB,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,IAAI,CAAC;CAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/external/inbox/routes.ts"],"names":[],"mappings":"AA+BA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAUpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,gBAAgB,CAAC;IACxB,OAAO,EAAE,cAAc,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;IACF;;;;OAIG;IACH,YAAY,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;CACnD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAsE7D"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/external/inbox/routes.ts"],"names":[],"mappings":"AA+BA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAWpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,gBAAgB,CAAC;IACxB,OAAO,EAAE,cAAc,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;IACF;;;;OAIG;IACH,YAAY,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;CACnD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAuE7D"}
@@ -32,6 +32,7 @@ import { Hono } from "hono";
32
32
  import { inboxDeriveCache } from "./_cache.js";
33
33
  import { deriveInboxFromJsonl, appendTerminalPrompts } from "./_derive.js";
34
34
  import { appendLeadQuestions, extractLeadQuestionBody, LEAD_QUESTION_DISMISS_PREFIX, } from "./_lead.js";
35
+ import { appendPhaseGates } from "./_phase-gate.js";
35
36
  import { appendCodexWatcherNotices, appendCodexTerminalSignals } from "./_codex.js";
36
37
  export function createInboxRouter(deps) {
37
38
  const app = new Hono();
@@ -46,6 +47,7 @@ export function createInboxRouter(deps) {
46
47
  if (codexWatcher)
47
48
  appendCodexWatcherNotices(entries, { store, codexWatcher });
48
49
  appendCodexTerminalSignals(entries, { store, ptyManager });
50
+ await appendPhaseGates(entries, { store });
49
51
  if (storeDirty)
50
52
  await store.persist();
51
53
  return c.json({ items: entries });
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/external/inbox/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAK5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAkBpF,MAAM,UAAU,iBAAiB,CAAC,IAAqB;IACrD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAE1D,GAAG,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACzC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,oBAAoB,CAAC;YACzD,KAAK;YACL,OAAO;SACR,CAAC,CAAC;QACH,qBAAqB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QACtD,mBAAmB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,IAAI,YAAY;YAAE,yBAAyB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAC9E,0BAA0B,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAC3D,IAAI,UAAU;YAAE,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QACtC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,wCAAwC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC7D,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,SAAS;YAChE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC1D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACzB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;gBACvB,KAAK,EAAE;oBACL,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CACpD,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CACzB;oBACD,mBAAmB,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;oBAC1C,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB;iBAC5D;aACF,CAAC,CAAC;YACH,gEAAgE;YAChE,gEAAgE;YAChE,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC1C,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;YACtB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,yEAAyE;QACzE,yEAAyE;QACzE,qEAAqE;QACrE,IAAI,SAAS,CAAC,UAAU,CAAC,4BAA4B,CAAC,EAAE,CAAC;YACvD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;YACpE,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/B,IACE,IAAI;gBACJ,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI;gBAClD,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,EACnD,CAAC;gBACD,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;oBACvB,KAAK,EAAE;wBACL,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB;wBAC/C,mBAAmB,EAAE;4BACnB,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB;4BACjC,SAAS;yBACV;wBACD,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB;qBAC5D;iBACF,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;gBACtB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QACD,OAAO,CAAC,CAAC,IAAI,CACX,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,wCAAwC,EAAE,EAC9D,GAAG,CACJ,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/external/inbox/routes.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@
11
11
  * the substituted commands+taskUpdate, or an error envelope.
12
12
  */
13
13
  import { substitutePlaceholders, UnknownPhaseError, UnknownActionError, InvalidTitleError, InvalidParameterError, InvalidPlaceholderError, } from "../../core/actions-substitute.js";
14
- import { loadActionsForProject } from "../../core/project-actions-loader.js";
14
+ import { loadActionsForProjectRecord } from "../../core/project-actions-loader.js";
15
15
  import { resolveParameters } from "../../core/parameter-resolver.js";
16
16
  import { claimExecutorLaunchOverrides } from "./claim-executor-permissions.js";
17
17
  import { armActionTemplatePermissionPerimeter, templateDeclaresSessionIdAnchor, } from "./claim-executor-template-arming.js";
@@ -22,7 +22,7 @@ export function applyActionSubstitutionBranch(args) {
22
22
  const project = getProjectById?.(task.projectId);
23
23
  if (!project)
24
24
  return null; // fall back to legacy
25
- const loaded = loadActionsForProject(project.path || "");
25
+ const loaded = loadActionsForProjectRecord(project);
26
26
  const action = loaded.actions.actions.find((a) => a.id === parsed.actionId);
27
27
  if (!action || !action.command_template) {
28
28
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"action-substitution-branch.js","sourceRoot":"","sources":["../../../src/external/launch/action-substitution-branch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"action-substitution-branch.js","sourceRoot":"","sources":["../../../src/external/launch/action-substitution-branch.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  * cannot claim "this is a custom-actions project" or "this title is a campaign"
9
9
  * and have the resolver believe it.
10
10
  */
11
- import { loadActionsForProject } from "../../core/project-actions-loader.js";
11
+ import { loadActionsForProjectRecord } from "../../core/project-actions-loader.js";
12
12
  import { readCampaigns } from "../../core/campaign-store.js";
13
13
  import { resolveCampaignsDir } from "../../core/campaign-paths.js";
14
14
  import { buildPipelineFact, getCampaignFact } from "./facts-slice3.js";
@@ -53,7 +53,7 @@ export function runConfigPresence(result) {
53
53
  export async function getScenarioFacts(project, task, deps) {
54
54
  let actions = null;
55
55
  try {
56
- const loaded = loadActionsForProject(project.path);
56
+ const loaded = loadActionsForProjectRecord(project);
57
57
  actions = {
58
58
  fromUser: loaded.fromUser,
59
59
  hasDiagnostics: loaded.diagnostics.length > 0,
@@ -1 +1 @@
1
- {"version":3,"file":"facts.js","sourceRoot":"","sources":["../../../src/external/mission-context/facts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"facts.js","sourceRoot":"","sources":["../../../src/external/mission-context/facts.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,9 @@ import type { ExternalRouteProjectView } from "../_shared/helpers.js";
4
4
  export interface PreviewRouterDeps {
5
5
  getProjectById?: (id: string) => ExternalRouteProjectView | undefined;
6
6
  previewManager?: PreviewSessionManager;
7
- loadProfile: (profileName: string) => PreviewProfile | null;
7
+ loadProfile: (profileName: string, projectPath?: string, opts?: {
8
+ fresh?: boolean;
9
+ }) => Promise<PreviewProfile | null> | PreviewProfile | null;
8
10
  }
9
11
  export declare function createPreviewRouter(deps: PreviewRouterDeps): Hono;
10
12
  //# sourceMappingURL=routes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/external/preview/routes.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAIL,qBAAqB,EAGrB,KAAK,cAAc,EACpB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,wBAAwB,GAAG,SAAS,CAAC;IACtE,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,cAAc,GAAG,IAAI,CAAC;CAC7D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAwEjE"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/external/preview/routes.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAIL,qBAAqB,EAGrB,KAAK,cAAc,EACpB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,wBAAwB,GAAG,SAAS,CAAC;IACtE,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,KACjF,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC;CAC1D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CA8EjE"}
@@ -35,7 +35,14 @@ export function createPreviewRouter(deps) {
35
35
  if (!project.profile) {
36
36
  return c.json({ error: "preview_profile_invalid", detail: "project has no profile" }, 400);
37
37
  }
38
- const profile = loadProfile(project.profile);
38
+ // fresh: spawn re-resolves right before it runs (no stale cache, no TOCTOU).
39
+ let profile = null;
40
+ try {
41
+ profile = await loadProfile(project.profile, project.path, { fresh: true });
42
+ }
43
+ catch {
44
+ profile = null;
45
+ }
39
46
  if (!profile) {
40
47
  return c.json({ error: "preview_profile_invalid", detail: "profile not found" }, 400);
41
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/external/preview/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/external/preview/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,0BAA0B,EAE1B,uBAAuB,EACvB,mBAAmB,GAEpB,MAAM,uCAAuC,CAAC;AAU/C,MAAM,UAAU,mBAAmB,CAAC,IAAuB;IACzD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAE7D,GAAG,CAAC,IAAI,CAAC,2CAA2C,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAChE,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,CAAC,IAAI,CACX,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,EAAE,wBAAwB,EAAE,EACtE,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,6EAA6E;QAC7E,IAAI,OAAO,GAA0B,IAAI,CAAC;QAC1C,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,CAAC,IAAI,CACX,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,EAAE,mBAAmB,EAAE,EACjE,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE;gBAC3D,GAAG,EAAE,OAAO,CAAC,IAAI;aAClB,CAAC,CAAC;YACH,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,0BAA0B,EAAE,CAAC;gBAC9C,OAAO,CAAC,CAAC,IAAI,CACX,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EACxD,GAAG,CACJ,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,YAAY,qBAAqB,EAAE,CAAC;gBACzC,OAAO,CAAC,CAAC,IAAI,CACX,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EAChD,GAAG,CACJ,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,YAAY,uBAAuB,EAAE,CAAC;gBAC3C,OAAO,CAAC,CAAC,IAAI,CACX,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EACrD,GAAG,CACJ,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,YAAY,uBAAuB,EAAE,CAAC;gBAC3C,OAAO,CAAC,CAAC,IAAI,CACX,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,oBAAoB,GAAG,CAAC,IAAI,EAAE,EAAE,EACzE,GAAG,CACJ,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;gBACvC,OAAO,CAAC,CAAC,IAAI,CACX,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAClD,GAAG,CACJ,CAAC;YACJ,CAAC;YACD,6DAA6D;YAC7D,2CAA2C;YAC3C,OAAO,CAAC,CAAC,IAAI,CACX,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EACrE,GAAG,CACJ,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/external/routes.ts"],"names":[],"mappings":"AA+BA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AA0B5B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAQjF,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,kCAAkC,GACnC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,YAAY,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAKjF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,wBAAwB,8EAkKlE"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/external/routes.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AA2B5B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAQjF,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,kCAAkC,GACnC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,YAAY,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAKjF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,wBAAwB,8EAmKlE"}
@@ -24,8 +24,6 @@
24
24
  * Backed by:
25
25
  * - core/launcher.ts (copy-command generation)
26
26
  * - core/session-watcher.ts (filename-first discovery + byte-range read)
27
- * - core/session-parser.ts (server-side parser for inbox)
28
- * - core/inbox-derive.ts (pending tool_use extraction)
29
27
  * - core/sdk-sessions-store.ts (persisted task metadata)
30
28
  */
31
29
  import { Hono } from "hono";
@@ -46,6 +44,7 @@ import { createFileExistsRouter } from "./file/exists-routes.js";
46
44
  import { createMediaRouter } from "./media/routes.js";
47
45
  import { createInboxRouter } from "./inbox/routes.js";
48
46
  import { createTranscriptRouter } from "./transcript/routes.js";
47
+ import { createSessionInfoRouter } from "./session-info/routes.js";
49
48
  import { createTasksRouter } from "./tasks/routes.js";
50
49
  import { createLaunchRouter } from "./launch/routes.js";
51
50
  import { createPrStatusRouter } from "./pr-status/routes.js";
@@ -108,6 +107,7 @@ export function createExternalRoutes(args) {
108
107
  }));
109
108
  // CLAUDE.md rule 4 — STATELESS byte-offset; multi-tab works by construction.
110
109
  app.route("/", createTranscriptRouter({ store, watcher, ptyManager }));
110
+ app.route("/", createSessionInfoRouter({ store, watcher, getProjectById }));
111
111
  // Inbox shares the derive cache + negative cache via ./inbox/_cache.ts.
112
112
  app.route("/", createInboxRouter({ store, watcher, ptyManager, codexWatcher }));
113
113
  // CLAUDE.md rule 12 — run-config is a READ-ONLY observer; no mutation.
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/external/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/external/routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Hono } from "hono";
2
+ import type { SessionFileRouterDeps } from "./routes.js";
3
+ export declare function registerProbeRoute(app: Hono, deps: SessionFileRouterDeps): void;
4
+ //# sourceMappingURL=probe-route.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe-route.d.ts","sourceRoot":"","sources":["../../../src/external/session-file/probe-route.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAQjC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAczD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAmC/E"}
@@ -0,0 +1,66 @@
1
+ /*
2
+ * POST /api/external/tasks/:id/session-file/probe { paths: string[] } -> { results: [{ openable, reason? }] }
3
+ *
4
+ * "Is this path openable by the Viewer?" for chat chips, Outputs rows and terminal links, so a dead path is
5
+ * never presented as a link. Same access rules as GET /session-file (core/session-file/access.ts); no
6
+ * content, no listing. Bounded: at most MAX_PROBE_PATHS paths per call and PROBE_BURST calls per task per
7
+ * window (429 probe_rate_limited - callers fail OPEN, the Viewer then reports the real state).
8
+ *
9
+ * 400 invalid_body | too_many_paths 404 task_not_found 429 probe_rate_limited
10
+ */
11
+ import { stat } from "node:fs/promises";
12
+ import { extname, isAbsolute } from "node:path";
13
+ import { MAX_PATH_CHARS } from "../../core/session-file/access.js";
14
+ import { findSessionEvidence } from "../../core/session-file/evidence.js";
15
+ import { MAX_PROBE_PATHS, probeOpenable } from "../../core/session-file/probe.js";
16
+ import { FILE_MAX_BYTES, MIME_BY_EXTENSION } from "../file/_helpers.js";
17
+ const PROBE_WINDOW_MS = 10_000;
18
+ const PROBE_BURST = 30;
19
+ async function existingDir(p) {
20
+ if (!p || !isAbsolute(p))
21
+ return null;
22
+ try {
23
+ return (await stat(p)).isDirectory() ? p : null;
24
+ }
25
+ catch {
26
+ return null;
27
+ }
28
+ }
29
+ export function registerProbeRoute(app, deps) {
30
+ const { store, watcher } = deps;
31
+ const calls = new Map();
32
+ app.post("/api/external/tasks/:id/session-file/probe", async (c) => {
33
+ const taskId = c.req.param("id");
34
+ const task = store.get(taskId);
35
+ if (!task)
36
+ return c.json({ error: "task_not_found" }, 404);
37
+ const now = Date.now();
38
+ const recent = (calls.get(taskId) ?? []).filter((t) => now - t < PROBE_WINDOW_MS);
39
+ if (recent.length >= PROBE_BURST)
40
+ return c.json({ error: "probe_rate_limited" }, 429);
41
+ calls.set(taskId, [...recent, now]);
42
+ if (calls.size > 500)
43
+ for (const [k, v] of calls)
44
+ if (v.every((t) => now - t >= PROBE_WINDOW_MS))
45
+ calls.delete(k);
46
+ const body = (await c.req.json().catch(() => null));
47
+ const paths = body?.paths;
48
+ if (!Array.isArray(paths) || paths.length === 0 || !paths.every((p) => typeof p === "string")) {
49
+ return c.json({ error: "invalid_body" }, 400);
50
+ }
51
+ if (paths.length > MAX_PROBE_PATHS)
52
+ return c.json({ error: "too_many_paths", max: MAX_PROBE_PATHS }, 400);
53
+ const projectDir = await existingDir(deps.getProjectById?.(task.projectId)?.path);
54
+ const roots = projectDir ? [projectDir] : [];
55
+ const results = await probeOpenable({
56
+ roots,
57
+ // An over-long entry is cut one char past the cap: the decision core rejects it as invalid_path.
58
+ paths: paths.map((p) => (p.length > MAX_PATH_CHARS ? p.slice(0, MAX_PATH_CHARS + 1) : p)),
59
+ findEvidence: async (candidates) => findSessionEvidence(task.sessionUuid, await watcher.findByUuid(task.sessionUuid), candidates, deps),
60
+ maxBytes: FILE_MAX_BYTES,
61
+ previewable: (abs) => MIME_BY_EXTENSION[extname(abs).toLowerCase().slice(1)] !== undefined,
62
+ });
63
+ return c.json({ results });
64
+ });
65
+ }
66
+ //# sourceMappingURL=probe-route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe-route.js","sourceRoot":"","sources":["../../../src/external/session-file/probe-route.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { Hono } from "hono";
2
+ import { type EvidenceDeps } from "../../core/session-file/evidence.js";
3
+ import type { SdkSessionsStore } from "../../core/sdk-sessions-store.js";
4
+ import type { SessionWatcher } from "../../core/session-watcher.js";
5
+ import type { ExternalRouteProjectView } from "../_shared/helpers.js";
6
+ export interface SessionFileRouterDeps extends EvidenceDeps {
7
+ store: SdkSessionsStore;
8
+ watcher: SessionWatcher;
9
+ getProjectById?: (id: string) => ExternalRouteProjectView | undefined;
10
+ }
11
+ export declare function createSessionFileRouter(deps: SessionFileRouterDeps): Hono;
12
+ //# sourceMappingURL=routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/external/session-file/routes.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAM5B,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAE7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAItE,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IACzD,KAAK,EAAE,gBAAgB,CAAC;IACxB,OAAO,EAAE,cAAc,CAAC;IACxB,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,wBAAwB,GAAG,SAAS,CAAC;CACvE;AAaD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAuDzE"}
@@ -0,0 +1,90 @@
1
+ /*
2
+ * external/session-file/routes.ts — GET /api/external/tasks/:id/session-file?path=<abs|rel>.
3
+ *
4
+ * Read-only file bytes for the Smart Viewer, scoped to ONE task:
5
+ * - inside the project root: same posture as /projects/:id/file
6
+ * - outside it: only when THIS session evidences the path (Output write, chat
7
+ * mention, tool call) — core/session-file/access.ts. Never a directory listing.
8
+ * - `assetOf=<evidenced html>`: an image / stylesheet / font in that page's own
9
+ * folder tree — core/session-file/asset-access.ts.
10
+ * Same MIME allowlist, 5 MB cap, nosniff + sandbox CSP as the project file route;
11
+ * text types with NUL bytes answer 415 like any other binary.
12
+ *
13
+ * 400 invalid_path | path_required | path_traversal | not_a_file | project_path_unavailable
14
+ * 403 path_not_evidenced | sensitive_location | asset_type_not_allowed | asset_outside_page_folder | asset_owner_invalid 404 task_not_found | not_found
15
+ * 413 file_too_large 415 binary_not_previewable 500 file_read_failed
16
+ */
17
+ import { Hono } from "hono";
18
+ import { stat } from "node:fs/promises";
19
+ import { basename, extname, isAbsolute } from "node:path";
20
+ import { decideSessionFileAccess } from "../../core/session-file/access.js";
21
+ import { ASSET_MIME_BY_EXTENSION, decideAssetAccess } from "../../core/session-file/asset-access.js";
22
+ import { findSessionEvidence } from "../../core/session-file/evidence.js";
23
+ import { readRegularFileCapped } from "../../core/session-file/safe-read.js";
24
+ import { registerProbeRoute } from "./probe-route.js";
25
+ import { FILE_MAX_BYTES, MIME_BY_EXTENSION, fileFingerprint, sanitizeContentDispositionFilename } from "../file/_helpers.js";
26
+ async function existingDir(p) {
27
+ if (!p || !isAbsolute(p))
28
+ return null;
29
+ try {
30
+ return (await stat(p)).isDirectory() ? p : null;
31
+ }
32
+ catch {
33
+ return null;
34
+ }
35
+ }
36
+ const hasNul = (b) => b.subarray(0, 8192).includes(0);
37
+ export function createSessionFileRouter(deps) {
38
+ const app = new Hono();
39
+ const { store, watcher } = deps;
40
+ app.get("/api/external/tasks/:id/session-file", async (c) => {
41
+ const task = store.get(c.req.param("id"));
42
+ if (!task)
43
+ return c.json({ error: "task_not_found" }, 404);
44
+ // Only the registered project root is trusted outright. The task cwd is client-supplied at task
45
+ // creation (it may be a home dir or a drive root), so it is NEVER a root: a task without a
46
+ // resolvable project gets session-evidenced absolute paths only.
47
+ const projectDir = await existingDir(deps.getProjectById?.(task.projectId)?.path);
48
+ const roots = projectDir ? [projectDir] : [];
49
+ // `assetOf` = the evidenced outside HTML page that wants this image / stylesheet / font (asset-access.ts).
50
+ const assetOf = c.req.query("assetOf");
51
+ const accessArgs = {
52
+ roots,
53
+ requested: c.req.query("path") ?? "",
54
+ findEvidence: async (candidates) => findSessionEvidence(task.sessionUuid, await watcher.findByUuid(task.sessionUuid), candidates, deps),
55
+ };
56
+ const decision = assetOf ? await decideAssetAccess({ ...accessArgs, owner: assetOf, memoKey: task.taskId }) : await decideSessionFileAccess(accessArgs);
57
+ if (!decision.ok) {
58
+ return c.json({ error: decision.error, ...(decision.detail ? { detail: decision.detail } : {}) }, decision.status);
59
+ }
60
+ const ext = extname(decision.absolute).toLowerCase().slice(1);
61
+ const mime = assetOf ? ASSET_MIME_BY_EXTENSION[ext] : MIME_BY_EXTENSION[ext];
62
+ if (!mime) {
63
+ return c.json({ error: "binary_not_previewable", mime: "application/octet-stream", extension: ext || null }, 415);
64
+ }
65
+ const read = await readRegularFileCapped(decision.absolute, FILE_MAX_BYTES);
66
+ if (read.kind === "not_found")
67
+ return c.json({ error: "not_found" }, 404);
68
+ if (read.kind === "not_a_file")
69
+ return c.json({ error: "not_a_file" }, 400);
70
+ if (read.kind === "too_large")
71
+ return c.json({ error: "file_too_large", maxBytes: FILE_MAX_BYTES, size: read.size }, 413);
72
+ if (read.kind === "error")
73
+ return c.json({ error: "file_read_failed", detail: read.detail }, 500);
74
+ if (mime.startsWith("text/") && hasNul(read.bytes)) {
75
+ return c.json({ error: "binary_not_previewable", mime: "application/octet-stream", extension: ext || null }, 415);
76
+ }
77
+ c.header("Content-Type", mime);
78
+ c.header("X-Content-Type-Options", "nosniff");
79
+ c.header("ETag", `"${fileFingerprint(read.bytes)}"`);
80
+ c.header("Content-Disposition", `inline; filename="${sanitizeContentDispositionFilename(basename(decision.absolute))}"`);
81
+ c.header("Content-Length", String(read.bytes.length));
82
+ c.header("Cache-Control", "private, max-age=0, must-revalidate");
83
+ c.header("Content-Security-Policy", "default-src 'none'; style-src 'unsafe-inline'; sandbox");
84
+ c.header("X-Session-File-Scope", decision.scope);
85
+ return c.body(new Uint8Array(read.bytes));
86
+ });
87
+ registerProbeRoute(app, deps);
88
+ return app;
89
+ }
90
+ //# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/external/session-file/routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { type Layout } from "../../core/session-info/test-fixtures.js";
2
+ export declare const BS = "\\";
3
+ /** Per-test fixture dirs, reassigned by installFixtures()'s hooks. */
4
+ export declare const fx: {
5
+ l: Layout;
6
+ proj: string;
7
+ out: string;
8
+ };
9
+ export declare function installFixtures(): void;
10
+ export declare const user: (n: number, content: unknown) => {
11
+ type: string;
12
+ timestamp: string;
13
+ message: {
14
+ role: string;
15
+ content: unknown;
16
+ };
17
+ };
18
+ export declare const say: (n: number, text: string) => {
19
+ type: string;
20
+ isSidechain: boolean;
21
+ timestamp: string;
22
+ cwd: string;
23
+ message: {
24
+ role: string;
25
+ model: string;
26
+ usage: {
27
+ input_tokens: number;
28
+ cache_read_input_tokens: number;
29
+ cache_creation_input_tokens: number;
30
+ output_tokens: number;
31
+ } | undefined;
32
+ content: unknown[];
33
+ };
34
+ };
35
+ export declare const session: (...recs: unknown[]) => void;
36
+ export declare function app(withTask?: boolean, task?: {
37
+ projectId: string;
38
+ cwd: string;
39
+ }): import("hono").Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
40
+ export declare const get: (p: string, a?: import("hono").Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">) => Response | Promise<Response>;
41
+ export declare const j: (r: Response) => Promise<{
42
+ error?: string;
43
+ detail?: string;
44
+ }>;
45
+ //# sourceMappingURL=session-file.fixture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-file.fixture.d.ts","sourceRoot":"","sources":["../../../src/external/session-file/session-file.fixture.ts"],"names":[],"mappings":"AAOA,OAAO,EAA0C,KAAK,MAAM,EAAE,MAAM,0CAA0C,CAAC;AAE/G,eAAO,MAAM,EAAE,OAAS,CAAC;AACzB,sEAAsE;AACtE,eAAO,MAAM,EAAE;OAAgC,MAAM;;;CAAqB,CAAC;AAE3E,wBAAgB,eAAe,IAAI,IAAI,CAYtC;AAED,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,EAAE,SAAS,OAAO;;;;;;;CAA6E,CAAC;AAC9H,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,EAAE,MAAM,MAAM;;;;;;;;;;;;;;;;CAAuD,CAAC;AACnG,eAAO,MAAM,OAAO,GAAI,GAAG,MAAM,OAAO,EAAE,SAAiD,CAAC;AAE5F,wBAAgB,GAAG,CAAC,QAAQ,UAAO,EAAE,IAAI,GAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAqC,6FAU/G;AACD,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,EAAE,6FAAS,iCAAmF,CAAC;AAC5H,eAAO,MAAM,CAAC,GAAU,GAAG,QAAQ;YAAmC,MAAM;aAAW,MAAM;EAAE,CAAC"}