@rryando/arcs 3.11.0 → 4.1.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.
Files changed (200) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/commands/hooks.d.ts +46 -6
  3. package/dist/cli/commands/hooks.d.ts.map +1 -1
  4. package/dist/cli/commands/hooks.js +190 -52
  5. package/dist/cli/commands/hooks.js.map +1 -1
  6. package/dist/cli/commands/web.js +14 -4
  7. package/dist/cli/commands/web.js.map +1 -1
  8. package/dist/cli/config.d.ts +14 -3
  9. package/dist/cli/config.d.ts.map +1 -1
  10. package/dist/cli/config.js +39 -38
  11. package/dist/cli/config.js.map +1 -1
  12. package/dist/cli/instructions.d.ts +13 -1
  13. package/dist/cli/instructions.d.ts.map +1 -1
  14. package/dist/cli/instructions.js +38 -3
  15. package/dist/cli/instructions.js.map +1 -1
  16. package/dist/cli/setup.d.ts.map +1 -1
  17. package/dist/cli/setup.js +76 -11
  18. package/dist/cli/setup.js.map +1 -1
  19. package/dist/shared/session-vocabulary.d.ts +88 -0
  20. package/dist/shared/session-vocabulary.d.ts.map +1 -0
  21. package/dist/shared/session-vocabulary.js +114 -0
  22. package/dist/shared/session-vocabulary.js.map +1 -0
  23. package/dist/utils/claude-code-hook-install.d.ts +1 -1
  24. package/dist/utils/claude-code-hook-install.d.ts.map +1 -1
  25. package/dist/utils/claude-code-hook-install.js +71 -5
  26. package/dist/utils/claude-code-hook-install.js.map +1 -1
  27. package/dist/utils/claude-transcript.d.ts +81 -2
  28. package/dist/utils/claude-transcript.d.ts.map +1 -1
  29. package/dist/utils/claude-transcript.js +33 -2
  30. package/dist/utils/claude-transcript.js.map +1 -1
  31. package/dist/utils/git.d.ts +21 -0
  32. package/dist/utils/git.d.ts.map +1 -1
  33. package/dist/utils/git.js +65 -1
  34. package/dist/utils/git.js.map +1 -1
  35. package/dist/utils/hook-contract.d.ts +36 -0
  36. package/dist/utils/hook-contract.d.ts.map +1 -0
  37. package/dist/utils/hook-contract.js +35 -0
  38. package/dist/utils/hook-contract.js.map +1 -0
  39. package/dist/utils/hook-token-store.d.ts +44 -3
  40. package/dist/utils/hook-token-store.d.ts.map +1 -1
  41. package/dist/utils/hook-token-store.js +51 -6
  42. package/dist/utils/hook-token-store.js.map +1 -1
  43. package/dist/utils/session-store.d.ts +207 -29
  44. package/dist/utils/session-store.d.ts.map +1 -1
  45. package/dist/utils/session-store.js +236 -44
  46. package/dist/utils/session-store.js.map +1 -1
  47. package/dist/utils/storage-utils.d.ts +1 -1
  48. package/dist/utils/storage-utils.d.ts.map +1 -1
  49. package/dist/utils/storage-utils.js +1 -1
  50. package/dist/utils/storage-utils.js.map +1 -1
  51. package/dist/web-client/assets/{GraphCanvas-dNyZ458L.js → GraphCanvas-BPDgvsyT.js} +1 -1
  52. package/dist/web-client/assets/{MarkdownEditor-BmU9mdkN.js → MarkdownEditor-D7TLp78z.js} +1 -1
  53. package/dist/web-client/assets/{abnfDiagram-VRR7QNED-D1BFBoeF.js → abnfDiagram-VRR7QNED-CyuP2N9t.js} +1 -1
  54. package/dist/web-client/assets/architecture-TIHT7OUA-Bdo2Yvm9.js +1 -0
  55. package/dist/web-client/assets/{architectureDiagram-ZJ3FMSHR-CA8hTWUK.js → architectureDiagram-ZJ3FMSHR-DZ0ul9QX.js} +1 -1
  56. package/dist/web-client/assets/{blockDiagram-677ZJIJ3-CQpb_KwX.js → blockDiagram-677ZJIJ3-LLGzlc9l.js} +1 -1
  57. package/dist/web-client/assets/{c4Diagram-LMCZKHZV-BhpHX84V.js → c4Diagram-LMCZKHZV-CViu3CTc.js} +1 -1
  58. package/dist/web-client/assets/channel-DBNmizpo.js +1 -0
  59. package/dist/web-client/assets/{chunk-32BRIVSS-BUusQQa_.js → chunk-32BRIVSS-Bw_IuJCM.js} +1 -1
  60. package/dist/web-client/assets/{chunk-52WLFC77-nNYwlftl.js → chunk-52WLFC77-C29h440W.js} +1 -1
  61. package/dist/web-client/assets/{chunk-C7G6YPKG-D0a-yqnK.js → chunk-C7G6YPKG-hhOrvw5w.js} +1 -1
  62. package/dist/web-client/assets/{chunk-EX3LRPZG-IDuRMN-4.js → chunk-EX3LRPZG-COMzol-M.js} +1 -1
  63. package/dist/web-client/assets/{chunk-FWX5IMBZ-D_spTcqi.js → chunk-FWX5IMBZ-6vdX9EUn.js} +2 -2
  64. package/dist/web-client/assets/{chunk-HOUHSVGY-C-bcxwZS.js → chunk-HOUHSVGY-DWDW6sxp.js} +1 -1
  65. package/dist/web-client/assets/{chunk-ICXQ74PX-CjmK2bAM.js → chunk-ICXQ74PX-BdMYglo2.js} +1 -1
  66. package/dist/web-client/assets/{chunk-MOJQB5TN-Bkc08KWY.js → chunk-MOJQB5TN-C0LAX_dC.js} +1 -1
  67. package/dist/web-client/assets/{chunk-OGEWGWER-BAAYYvG9.js → chunk-OGEWGWER-CBx8MB7f.js} +1 -1
  68. package/dist/web-client/assets/{chunk-PUDLZKDR-WXbPY7NM.js → chunk-PUDLZKDR-DKssR1nf.js} +1 -1
  69. package/dist/web-client/assets/{chunk-Q4XR5HBZ-DcbnjxQE.js → chunk-Q4XR5HBZ-B3kcxFE-.js} +1 -1
  70. package/dist/web-client/assets/{chunk-V7JOEXUC-C6t75PAp.js → chunk-V7JOEXUC-CAlymndy.js} +1 -1
  71. package/dist/web-client/assets/{chunk-VAUOI2AC-DVrJ0Ic7.js → chunk-VAUOI2AC-BowfsmTW.js} +1 -1
  72. package/dist/web-client/assets/{chunk-VR4S4FIN-MOOFvGS0.js → chunk-VR4S4FIN-BBOydgvt.js} +1 -1
  73. package/dist/web-client/assets/{chunk-WYO6CB5R-sK7Y2NZD.js → chunk-WYO6CB5R-DcymFbES.js} +1 -1
  74. package/dist/web-client/assets/{chunk-ZGVPDNZ5-a13RQsku.js → chunk-ZGVPDNZ5--uKFP-Lr.js} +1 -1
  75. package/dist/web-client/assets/classDiagram-OUVF2IWQ-CB3HiA1_.js +1 -0
  76. package/dist/web-client/assets/classDiagram-v2-EOCWNBFH-CB3HiA1_.js +1 -0
  77. package/dist/web-client/assets/{cynefin-VYW2F7L2-D8xaH-wO.js → cynefin-VYW2F7L2-CjboUOMA.js} +1 -1
  78. package/dist/web-client/assets/{cynefinDiagram-TSTJHNR4-Bt__EqJW.js → cynefinDiagram-TSTJHNR4-BcxygBP7.js} +1 -1
  79. package/dist/web-client/assets/{dagre-VKFMJZFB-Bwgjwflz.js → dagre-VKFMJZFB-D-tiERQE.js} +1 -1
  80. package/dist/web-client/assets/{diagram-FQU43EPY-CaPDVUq2.js → diagram-FQU43EPY-ChPXczaS.js} +1 -1
  81. package/dist/web-client/assets/{diagram-G47NLZAW-BQLB9YYA.js → diagram-G47NLZAW-CVL3Y91h.js} +1 -1
  82. package/dist/web-client/assets/{diagram-NH7WQ7WH-BWo84w8Y.js → diagram-NH7WQ7WH-DsaNA9Lh.js} +1 -1
  83. package/dist/web-client/assets/{diagram-OA4YK3LP-bKn6Pz5s.js → diagram-OA4YK3LP-CXhrhdhU.js} +1 -1
  84. package/dist/web-client/assets/{diagram-WEI45ONY-BRqV5Oy6.js → diagram-WEI45ONY-BTVPnk4E.js} +1 -1
  85. package/dist/web-client/assets/{ebnfDiagram-CCIWWBDH-DhUXL1-7.js → ebnfDiagram-CCIWWBDH-BAyrRBtM.js} +1 -1
  86. package/dist/web-client/assets/{erDiagram-Q63AITRT-HXAQQ-_F.js → erDiagram-Q63AITRT-Qm24Wepm.js} +1 -1
  87. package/dist/web-client/assets/eventmodeling-45OFAUF4-DoTBIvl5.js +1 -0
  88. package/dist/web-client/assets/flowDiagram-23GEKE2U-BEH23L1A.js +1 -0
  89. package/dist/web-client/assets/{ganttDiagram-NO4QXBWP-D-Ddf_Ii.js → ganttDiagram-NO4QXBWP-D8h7l3XJ.js} +1 -1
  90. package/dist/web-client/assets/{gitGraph-TEB2WS4Q-BmHzs0uF.js → gitGraph-TEB2WS4Q-DIBml1SB.js} +1 -1
  91. package/dist/web-client/assets/{gitGraphDiagram-IHSO6WYX-YnQWrlh_.js → gitGraphDiagram-IHSO6WYX-CtkYoXjn.js} +1 -1
  92. package/dist/web-client/assets/{index-DCWxuIeQ.js → index-DOSH4Q9H.js} +38 -36
  93. package/dist/web-client/assets/index-wSzUPvml.css +2 -0
  94. package/dist/web-client/assets/{info-DKCQHKI2-DCT_B7RN.js → info-DKCQHKI2-DLEUtV5Q.js} +1 -1
  95. package/dist/web-client/assets/{infoDiagram-FWYZ7A6U-D-le1Zhq.js → infoDiagram-FWYZ7A6U-BJQ7aQux.js} +1 -1
  96. package/dist/web-client/assets/{ishikawaDiagram-FXEZZL3T-Jr1x2VJB.js → ishikawaDiagram-FXEZZL3T-BPM11FvG.js} +1 -1
  97. package/dist/web-client/assets/{journeyDiagram-5HDEW3XC-BF9ELxj-.js → journeyDiagram-5HDEW3XC-C0aX2z3c.js} +1 -1
  98. package/dist/web-client/assets/{kanban-definition-HUTT4EX6-C4fJqAxu.js → kanban-definition-HUTT4EX6-C56F29Ib.js} +1 -1
  99. package/dist/web-client/assets/{line-7N7ikFxa.js → line-BLFHLF2N.js} +1 -1
  100. package/dist/web-client/assets/{mermaid-parser.core-QbC1icPt.js → mermaid-parser.core-BLC8FhgU.js} +3 -3
  101. package/dist/web-client/assets/{mermaid.core-C26d_UJm.js → mermaid.core-BBqkKuXt.js} +3 -3
  102. package/dist/web-client/assets/{mindmap-definition-LN4V7U3C-D6TV1JDf.js → mindmap-definition-LN4V7U3C-aVZbsoPc.js} +1 -1
  103. package/dist/web-client/assets/{packet-7NZHBO7P-CR1vrGj3.js → packet-7NZHBO7P-D4aqSQfB.js} +1 -1
  104. package/dist/web-client/assets/{pegDiagram-2B236MQR-xOMBBtfV.js → pegDiagram-2B236MQR-DjfyNI0U.js} +1 -1
  105. package/dist/web-client/assets/{pie-RZYD4A2V-BbWuhjwy.js → pie-RZYD4A2V-ChCwYsYj.js} +1 -1
  106. package/dist/web-client/assets/{pieDiagram-ENE6RG2P-MsfnsqgW.js → pieDiagram-ENE6RG2P-BeHLKkXC.js} +1 -1
  107. package/dist/web-client/assets/{quadrantDiagram-ABIIQ3AL-BoI7zKXF.js → quadrantDiagram-ABIIQ3AL-stga3gvq.js} +1 -1
  108. package/dist/web-client/assets/{radar-I7S5WNFK-CbYXKToJ.js → radar-I7S5WNFK-DOGheiwT.js} +1 -1
  109. package/dist/web-client/assets/{railroad-3IZDKUUU-6LxHDkLe.js → railroad-3IZDKUUU-_JnU7M6L.js} +1 -1
  110. package/dist/web-client/assets/railroad-abnf-AHOZXSZD-nhNub7LE.js +1 -0
  111. package/dist/web-client/assets/railroad-ebnf-EBAXGLYW-BlQYe7Yf.js +1 -0
  112. package/dist/web-client/assets/railroad-peg-LSFZ7HO6-B3E8pRVN.js +1 -0
  113. package/dist/web-client/assets/{railroadDiagram-RFXS5EU6-D6RUoUki.js → railroadDiagram-RFXS5EU6-C0CkMsOd.js} +1 -1
  114. package/dist/web-client/assets/{requirementDiagram-TGXJPOKE-B6k4BDpE.js → requirementDiagram-TGXJPOKE-DuImwoRD.js} +1 -1
  115. package/dist/web-client/assets/{sankeyDiagram-HTMAVEWB-BUDF-UFr.js → sankeyDiagram-HTMAVEWB-kprq0XF9.js} +1 -1
  116. package/dist/web-client/assets/{sequenceDiagram-DBY2YBRQ-D6GqcsUi.js → sequenceDiagram-DBY2YBRQ-DiXKJMF6.js} +1 -1
  117. package/dist/web-client/assets/{stateDiagram-2N3HPSRC-WfJCQAK5.js → stateDiagram-2N3HPSRC-D5qbVStE.js} +1 -1
  118. package/dist/web-client/assets/stateDiagram-v2-6OUMAXLB-DWwTAG1r.js +1 -0
  119. package/dist/web-client/assets/{swimlanes-5IMT3BWC-BtMo82mC.js → swimlanes-5IMT3BWC-DCbw389c.js} +1 -1
  120. package/dist/web-client/assets/swimlanesDiagram-G3AALYLV-DabrCsjZ.js +8 -0
  121. package/dist/web-client/assets/{timeline-definition-FHXFAJF6-CoAmv2Sn.js → timeline-definition-FHXFAJF6-CQeaYN_9.js} +1 -1
  122. package/dist/web-client/assets/{treeView-QDETBFTQ-BWsKzE1s.js → treeView-QDETBFTQ-Cf7Sq3qo.js} +1 -1
  123. package/dist/web-client/assets/{treemap-6X3UGDF4-i_qGtB3o.js → treemap-6X3UGDF4-BovzvoTU.js} +1 -1
  124. package/dist/web-client/assets/{vennDiagram-L72KCM5P-DYkiLe-P.js → vennDiagram-L72KCM5P-CZsJy139.js} +1 -1
  125. package/dist/web-client/assets/{wardley-OPB4EBWU-Daaqr1Vp.js → wardley-OPB4EBWU-DJ7MS6XZ.js} +1 -1
  126. package/dist/web-client/assets/{wardleyDiagram-EHGQE667-Bofbsg3J.js → wardleyDiagram-EHGQE667-rqhcmsbM.js} +1 -1
  127. package/dist/web-client/assets/{xychartDiagram-FW5EYKEG-KNF4VTfL.js → xychartDiagram-FW5EYKEG-HuK4Seps.js} +1 -1
  128. package/dist/web-client/index.html +2 -2
  129. package/dist/web-server/app.d.ts +4 -1
  130. package/dist/web-server/app.d.ts.map +1 -1
  131. package/dist/web-server/app.js +19 -3
  132. package/dist/web-server/app.js.map +1 -1
  133. package/dist/web-server/claude-runner.d.ts +109 -7
  134. package/dist/web-server/claude-runner.d.ts.map +1 -1
  135. package/dist/web-server/claude-runner.js +329 -50
  136. package/dist/web-server/claude-runner.js.map +1 -1
  137. package/dist/web-server/index.d.ts +2 -2
  138. package/dist/web-server/index.d.ts.map +1 -1
  139. package/dist/web-server/index.js +3 -2
  140. package/dist/web-server/index.js.map +1 -1
  141. package/dist/web-server/permission-policy.d.ts +46 -0
  142. package/dist/web-server/permission-policy.d.ts.map +1 -0
  143. package/dist/web-server/permission-policy.js +96 -0
  144. package/dist/web-server/permission-policy.js.map +1 -0
  145. package/dist/web-server/prompt-assembly.d.ts +454 -0
  146. package/dist/web-server/prompt-assembly.d.ts.map +1 -0
  147. package/dist/web-server/prompt-assembly.js +1122 -0
  148. package/dist/web-server/prompt-assembly.js.map +1 -0
  149. package/dist/web-server/routes/hook-events.d.ts +28 -4
  150. package/dist/web-server/routes/hook-events.d.ts.map +1 -1
  151. package/dist/web-server/routes/hook-events.js +218 -37
  152. package/dist/web-server/routes/hook-events.js.map +1 -1
  153. package/dist/web-server/routes/sessions.d.ts +8 -8
  154. package/dist/web-server/routes/sessions.d.ts.map +1 -1
  155. package/dist/web-server/routes/sessions.js +1007 -261
  156. package/dist/web-server/routes/sessions.js.map +1 -1
  157. package/dist/web-server/routes/workspace.d.ts +27 -0
  158. package/dist/web-server/routes/workspace.d.ts.map +1 -0
  159. package/dist/web-server/routes/workspace.js +280 -0
  160. package/dist/web-server/routes/workspace.js.map +1 -0
  161. package/dist/web-server/run-event-log.d.ts +167 -0
  162. package/dist/web-server/run-event-log.d.ts.map +1 -0
  163. package/dist/web-server/run-event-log.js +468 -0
  164. package/dist/web-server/run-event-log.js.map +1 -0
  165. package/dist/web-server/session-reconciler.d.ts +162 -0
  166. package/dist/web-server/session-reconciler.d.ts.map +1 -0
  167. package/dist/web-server/session-reconciler.js +363 -0
  168. package/dist/web-server/session-reconciler.js.map +1 -0
  169. package/dist/web-server/static.d.ts +7 -0
  170. package/dist/web-server/static.d.ts.map +1 -1
  171. package/dist/web-server/static.js +46 -3
  172. package/dist/web-server/static.js.map +1 -1
  173. package/dist/web-server/web-auth.d.ts +17 -0
  174. package/dist/web-server/web-auth.d.ts.map +1 -0
  175. package/dist/web-server/web-auth.js +33 -0
  176. package/dist/web-server/web-auth.js.map +1 -0
  177. package/dist/web-server/web-token.d.ts +39 -0
  178. package/dist/web-server/web-token.d.ts.map +1 -0
  179. package/dist/web-server/web-token.js +71 -0
  180. package/dist/web-server/web-token.js.map +1 -0
  181. package/opencode/arcs/manifest.json +8 -8
  182. package/package.json +1 -1
  183. package/scripts/claude-code-session-hook.mjs +37 -16
  184. package/scripts/deploy-claudecode-bundle.mjs +24 -3
  185. package/dist/web-client/assets/architecture-TIHT7OUA-CJqI5wNI.js +0 -1
  186. package/dist/web-client/assets/channel-C8DlmyVe.js +0 -1
  187. package/dist/web-client/assets/classDiagram-OUVF2IWQ-p32N1P_G.js +0 -1
  188. package/dist/web-client/assets/classDiagram-v2-EOCWNBFH-p32N1P_G.js +0 -1
  189. package/dist/web-client/assets/eventmodeling-45OFAUF4-Bj5P8mZJ.js +0 -1
  190. package/dist/web-client/assets/flowDiagram-23GEKE2U-37BztFri.js +0 -1
  191. package/dist/web-client/assets/index-3mNPVkix.css +0 -2
  192. package/dist/web-client/assets/railroad-abnf-AHOZXSZD-2Dg9wu0J.js +0 -1
  193. package/dist/web-client/assets/railroad-ebnf-EBAXGLYW-C_E2ot0R.js +0 -1
  194. package/dist/web-client/assets/railroad-peg-LSFZ7HO6-Bs9UQR1b.js +0 -1
  195. package/dist/web-client/assets/stateDiagram-v2-6OUMAXLB-BCMWGnsJ.js +0 -1
  196. package/dist/web-client/assets/swimlanesDiagram-G3AALYLV-DmudmLcK.js +0 -8
  197. package/dist/web-server/opencode-client.d.ts +0 -123
  198. package/dist/web-server/opencode-client.d.ts.map +0 -1
  199. package/dist/web-server/opencode-client.js +0 -514
  200. package/dist/web-server/opencode-client.js.map +0 -1
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Session-state vocabulary — the ONE derivation both sides of the wire read.
3
+ *
4
+ * A session carries two state fields: `status`, persisted by the store, and
5
+ * `phase`, derived per response and never persisted. The moment two call sites
6
+ * pick between them independently the product starts disagreeing with itself —
7
+ * a table badged `running` under an `active` chip, or a server refusing the
8
+ * resume the client just offered. Everything user-facing and every server gate
9
+ * goes through `sessionState()` here, so there is nothing to keep in sync.
10
+ *
11
+ * The predicates take the RECORD, never a pre-picked string, for the same
12
+ * reason the badge component does: handing the badge a record protects badge
13
+ * call sites only, and a counter or an affordance gate takes no badge prop.
14
+ *
15
+ * ---------------------------------------------------------------------------
16
+ * THIS MODULE MUST HAVE ZERO IMPORTS. Do not add one — not a type-only import,
17
+ * not a `import type { SessionMeta }` for the parameter shapes below.
18
+ *
19
+ * `web/` imports this file directly by relative path (there is no alias and no
20
+ * third package). Its being a LEAF — not the directory it sits in — is the
21
+ * entire guarantee that no server module graph is dragged into the client
22
+ * bundle. One import of anything under `src/utils/` or `src/web-server/` and
23
+ * the CLI's transitive graph starts resolving inside `vite build`.
24
+ *
25
+ * The corollary of that reach: this file is typechecked under BOTH tsconfigs,
26
+ * and `web/tsconfig.json` sets `noUncheckedIndexedAccess` and
27
+ * `verbatimModuleSyntax` where the root tsconfig sets neither. A root-legal
28
+ * edit here can fail `npm --workspace @arcs/web run typecheck`. Run both.
29
+ * ---------------------------------------------------------------------------
30
+ */
31
+ /**
32
+ * The state a session is in, as the UI states it everywhere and as the server
33
+ * decides from: the derived phase — the only signal reflecting whether the
34
+ * session is live right now — falling back to the record's own status for a
35
+ * record that reached a decision site without one (the record echoed by
36
+ * `POST /run` carries no phase, and neither does a pre-phase endpoint).
37
+ *
38
+ * This is the single derivation site. `status` is still readable on the row
39
+ * (the status cell's tooltip), but nothing decides anything from it alone.
40
+ */
41
+ export function sessionState(session) {
42
+ return session.phase ?? session.status;
43
+ }
44
+ /** States meaning "this session is not over": the live phases, plus the raw
45
+ * `active`/`idle` a record that arrived without a phase is badged with. */
46
+ const LIVE_STATES = new Set(["running", "idle", "active"]);
47
+ /**
48
+ * States meaning "a process is driving this session right now".
49
+ *
50
+ * Deliberately NARROWER than `LIVE_STATES`, and the reason both sets are
51
+ * private to this module rather than living at their call sites: `idle` is live
52
+ * — the record is not over and the session list counts it — but nothing holds
53
+ * its runtime thread, which is exactly the session a headless resume works on.
54
+ * One shared "live" set would silently conflate "not over" with "attached" and
55
+ * take the resume affordance away from every session that can actually use it.
56
+ *
57
+ * REACHABLE PAIRS. The server's derivation (`deriveSessionPhase` →
58
+ * `reconcilePhase` → `runDeadlinePhase`, all composed in `withPhases`) can only
59
+ * ever produce these (`status`, `phase`) pairs, exhaustively:
60
+ *
61
+ * active/idle · active/running · completed/ended · disconnected/ended ·
62
+ * failed/failed · idle/idle · idle/running
63
+ *
64
+ * So `ended` comes ONLY from a terminal status (`completed`/`disconnected`):
65
+ * the derivation returns it before looking at any liveness evidence, the
66
+ * reconciler early-returns on every non-`running` derivation, and both probes
67
+ * can only demote `running` to `idle`. A record stored `active` whose process
68
+ * is gone therefore derives `idle` — "no fresh evidence of attachment" — and
69
+ * never `ended`. Both sit outside this set, so this predicate answers the same
70
+ * either way; the pair that carries the meaning is `active`/`idle`, because
71
+ * that is what "the process is gone" actually looks like on the wire.
72
+ *
73
+ * `active` itself is a persisted status, reachable only through
74
+ * `sessionState`'s fallback for a record handed to a predicate without a
75
+ * derived phase. Server call sites go through `withPhases` first, so the phase
76
+ * decides in practice; the fallback is the conservative answer for anything
77
+ * that does not — treat as attached and refuse, rather than silently accept.
78
+ */
79
+ const ATTACHED_STATES = new Set(["running", "active"]);
80
+ /**
81
+ * Is this a session a human could still reach — as the badge beside it reads?
82
+ *
83
+ * What the sessions header counts as "N live". Takes the record so the count is
84
+ * computed from the same field the badge one row below renders, rather than
85
+ * from whichever of the two a call site happened to reach for.
86
+ *
87
+ * This is the SAFE half of the pair: across the reachable pairs above, `status`
88
+ * and `phase` never disagree about liveness. A record stored `active` whose
89
+ * process is gone derives `idle`, and `idle` is live — the record is not over —
90
+ * so the count is right read either way. That is a property of today's
91
+ * derivation, not a guarantee; reading the record keeps the count correct if it
92
+ * stops holding. `isSessionAttached` below is where the two genuinely disagree.
93
+ */
94
+ export function isSessionLive(session) {
95
+ return LIVE_STATES.has(sessionState(session));
96
+ }
97
+ /**
98
+ * Is a process driving this session right now?
99
+ *
100
+ * The gate on affordances that need the session's runtime thread free — today
101
+ * the composer's headless resume and the server route behind it, neither of
102
+ * which can attach to a session a terminal is already driving. Reading the
103
+ * persisted status here is wrong in BOTH directions, and both are reachable
104
+ * pairs: a record stored `active` whose process is gone derives `idle` — no
105
+ * fresh evidence of attachment — and would be refused the resume it is the
106
+ * perfect candidate for (`active`/`idle`), while a live `running` session
107
+ * stored `idle` would be offered one that cannot work (`idle`/`running`).
108
+ * `idle` is the state the whole affordance turns on; it is never `ended`, which
109
+ * only a terminal status produces.
110
+ */
111
+ export function isSessionAttached(session) {
112
+ return ATTACHED_STATES.has(sessionState(session));
113
+ }
114
+ //# sourceMappingURL=session-vocabulary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-vocabulary.js","sourceRoot":"","sources":["../../src/shared/session-vocabulary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAmBH;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,OAA2B;IACtD,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;AACzC,CAAC;AAED;4EAC4E;AAC5E,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAAC,OAA2B;IACvD,OAAO,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA2B;IAC3D,OAAO,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AACpD,CAAC"}
@@ -50,7 +50,7 @@ export declare function mergeHookIntoSettings(settings: ClaudeSettings, hook: {
50
50
  }): ClaudeSettings;
51
51
  /**
52
52
  * Reads the workspace's `.claude/settings.local.json` (if any), merges in a
53
- * freshly provisioned hook, and writes it back.
53
+ * freshly provisioned hook, and writes it back owner-only.
54
54
  *
55
55
  * Throws when the existing file is present but unparseable — nothing is written
56
56
  * in that case, so a hand-edited settings file is never clobbered.
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code-hook-install.d.ts","sourceRoot":"","sources":["../../src/utils/claude-code-hook-install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAQH,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC3C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAChD,cAAc,CA2BhB;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAgDvC;AAED;;;;;;;;GAQG;AACH,wBAAsB,8BAA8B,CAAC,OAAO,EAAE;IAC5D,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,2BAA2B,GAAG,IAAI,CAAC,CAyC9C"}
1
+ {"version":3,"file":"claude-code-hook-install.d.ts","sourceRoot":"","sources":["../../src/utils/claude-code-hook-install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAQH,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC3C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAErE;AAoBD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAChD,cAAc,CA2BhB;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CA8FvC;AAED;;;;;;;;GAQG;AACH,wBAAsB,8BAA8B,CAAC,OAAO,EAAE;IAC5D,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,2BAA2B,GAAG,IAAI,CAAC,CA0C9C"}
@@ -17,7 +17,7 @@
17
17
  * of accumulating stale ones. Entries belonging to other tools are kept
18
18
  * untouched, in place.
19
19
  */
20
- import { mkdir, readFile, writeFile } from "node:fs/promises";
20
+ import { chmod, mkdir, readFile, writeFile } from "node:fs/promises";
21
21
  import { dirname, join } from "node:path";
22
22
  import * as p from "@clack/prompts";
23
23
  import color from "picocolors";
@@ -26,6 +26,25 @@ import { HOOK_EVENTS, provisionHookCommand } from "../cli/commands/hooks.js";
26
26
  export function claudeSettingsLocalPath(workspacePath) {
27
27
  return join(workspacePath, ".claude", "settings.local.json");
28
28
  }
29
+ /**
30
+ * `chmod` that tolerates an absent file and nothing else.
31
+ *
32
+ * Used to narrow a settings file BEFORE it is rewritten, where "there is no
33
+ * file yet" is the ordinary fresh-install outcome and not a failure — the
34
+ * write's own `mode` covers that path. Every other errno (EPERM on a file this
35
+ * user does not own, EROFS) means the mode of a token-bearing file is not ours
36
+ * to set, so it propagates and fails the install closed, exactly as the
37
+ * trailing chmod does.
38
+ */
39
+ async function chmodIfPresent(path, mode) {
40
+ try {
41
+ await chmod(path, mode);
42
+ }
43
+ catch (err) {
44
+ if (err?.code !== "ENOENT")
45
+ throw err;
46
+ }
47
+ }
29
48
  /**
30
49
  * Returns a copy of `settings` with the ARCS hook entry registered under every
31
50
  * hook event, replacing any prior entry that runs the same `hookScriptPath`.
@@ -56,7 +75,7 @@ export function mergeHookIntoSettings(settings, hook) {
56
75
  }
57
76
  /**
58
77
  * Reads the workspace's `.claude/settings.local.json` (if any), merges in a
59
- * freshly provisioned hook, and writes it back.
78
+ * freshly provisioned hook, and writes it back owner-only.
60
79
  *
61
80
  * Throws when the existing file is present but unparseable — nothing is written
62
81
  * in that case, so a hand-edited settings file is never clobbered.
@@ -93,7 +112,53 @@ export async function installClaudeCodeHook(options) {
93
112
  });
94
113
  const merged = mergeHookIntoSettings(settings, provisioned);
95
114
  await mkdir(dirname(settingsPath), { recursive: true });
96
- await writeFile(settingsPath, `${JSON.stringify(merged, null, 2)}\n`, "utf-8");
115
+ // The merged command embeds `ARCS_HOOK_TOKEN=<value>`, so this file is a
116
+ // SECOND cleartext copy of the hook token — this one in the user's repo
117
+ // rather than under ARCS's own data dir. It is narrowed in three steps
118
+ // because no one of them covers both the fresh and the repair path:
119
+ //
120
+ // 1. chmod BEFORE the write, best-effort. `writeFile` is a direct,
121
+ // non-atomic open(path, "w", mode): when the file already exists the
122
+ // `mode` argument is a no-op and the open merely truncates the inode
123
+ // that is there, so without this step the freshly minted token would be
124
+ // written into a still-0644 inode and sit world-readable for the write
125
+ // plus an await hop. ENOENT is ignored (see chmodIfPresent) because on a
126
+ // fresh install there is nothing to narrow yet. This runs AFTER the
127
+ // strict parse above, so a file that aborts the install keeps its mode
128
+ // as well as its bytes.
129
+ // 2. `mode` on the write itself. It applies only when the open CREATES the
130
+ // inode — which is precisely the fresh path, where it means the inode is
131
+ // 0600 before the token's first byte reaches it and step 1 had nothing
132
+ // to do. (That create-only caveat is exactly the one that does NOT apply
133
+ // to the token store's temp+rename writer, where every write installs a
134
+ // fresh inode — it bites squarely here.)
135
+ // 3. chmod after the write, unconditional. Steps 1 and 2 are each a claim
136
+ // about how THIS writer behaves — one assumes the inode survives the
137
+ // write, the other that the write creates it. Step 3 assumes nothing, so
138
+ // "0600 when this function returns" is a postcondition rather than an
139
+ // inference from the writer's syscalls.
140
+ //
141
+ // What this buys, stated honestly: 0o600 is a cross-user control. It does
142
+ // nothing against a process running as THIS user, and it does not hide the
143
+ // token from `ps` — the value is inlined in the hook command string, so every
144
+ // hook fire still exposes it in the process table. Handing the hook a path
145
+ // (`ARCS_HOOK_TOKEN_FILE=<path>`) instead of the value would close that; the
146
+ // mode only closes the on-disk half. Nor can any mode revoke a descriptor
147
+ // another account already opened on a 0644 file: the write edits that same
148
+ // inode in place, so such a reader follows the file into the new token. All
149
+ // three steps are a floor from this point forward, not a retraction of what
150
+ // was reachable before.
151
+ //
152
+ // The `.claude` DIRECTORY is deliberately left exactly as found. Unlike the
153
+ // hooks dir under ARCS's data dir, which holds nothing but the token, this
154
+ // one holds the user's other Claude Code files, and narrowing it would be a
155
+ // hostile surprise in a directory ARCS does not own.
156
+ await chmodIfPresent(settingsPath, 0o600);
157
+ await writeFile(settingsPath, `${JSON.stringify(merged, null, 2)}\n`, {
158
+ encoding: "utf-8",
159
+ mode: 0o600,
160
+ });
161
+ await chmod(settingsPath, 0o600);
97
162
  return {
98
163
  settingsPath,
99
164
  token: provisioned.token,
@@ -114,8 +179,9 @@ export async function installClaudeCodeHook(options) {
114
179
  export async function promptAndInstallClaudeCodeHook(options) {
115
180
  const settingsPath = claudeSettingsLocalPath(options.workspacePath);
116
181
  p.note([
117
- "The session-bridge hook lets the ARCS web UI see your Claude Code",
118
- "sessions and queue messages for them (delivered at the next prompt).",
182
+ "The session-bridge hook lets ARCS discover your Claude Code sessions,",
183
+ "stage project context at session start, and mirror transcripts the",
184
+ "web UI drives work by forking a session into a new ARCS thread.",
119
185
  "",
120
186
  `Writes ${color.cyan(settingsPath)} only — never your global config.`,
121
187
  ].join("\n"), "Optional: Claude Code session bridge");
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code-hook-install.js","sourceRoot":"","sources":["../../src/utils/claude-code-hook-install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-code-hook-install.js","sourceRoot":"","sources":["../../src/utils/claude-code-hook-install.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,56 @@ export interface ReferenceSource {
36
36
  doc?: string;
37
37
  id?: string;
38
38
  }
39
+ /**
40
+ * A markdown document section — the ONLY reference shape that existed before
41
+ * the union, and therefore the shape every reference turn already on disk
42
+ * carries. Its `section`/`source` fields are frozen: a sidecar written by an
43
+ * older ARCS must keep parsing, and a doc reference written today must stay
44
+ * byte-identical to one written then. The tag is filled in at the schema
45
+ * boundary (`sessionReferenceSchema`) rather than required on the wire, because
46
+ * legacy bodies carry no tag at all.
47
+ */
48
+ export interface DocReference {
49
+ type: "doc";
50
+ text: string;
51
+ section: ReferenceSection;
52
+ source: ReferenceSource;
53
+ }
54
+ /**
55
+ * A line range in a workspace file, sent as a POINTER rather than as content:
56
+ * `excerpt` is a short human anchor, never the authoritative text — the agent
57
+ * reads the live file. `headRev` is the revision the slice was taken at, so a
58
+ * later diff can tell whether the file moved under the agent.
59
+ */
60
+ export interface FileReference {
61
+ type: "file";
62
+ /** Workspace-relative path, as the caller sent it. */
63
+ path: string;
64
+ /** 1-based, inclusive. */
65
+ startLine: number;
66
+ endLine: number;
67
+ excerpt?: string;
68
+ headRev?: string;
69
+ }
70
+ /** A DAG entity. Carries no text slice — ARCS is the source of truth for it. */
71
+ export interface NodeReference {
72
+ type: "node";
73
+ kind: "task" | "plan" | "knowledge";
74
+ id: string;
75
+ }
76
+ /** Everything a caller can point a session at, discriminated on `type`. */
77
+ export type SessionReference = DocReference | FileReference | NodeReference;
78
+ /** The pointer kinds, which have no historical fields of their own and so ride
79
+ * a reference turn whole (see `TranscriptTurn.ref`). */
80
+ export type PointerReference = FileReference | NodeReference;
81
+ /**
82
+ * The `text` a reference TURN records — the sidecar's own label, which is what
83
+ * the transcript panel shows. NOT prompt text: rendering a reference for a
84
+ * model is `web-server/prompt-assembly.ts`'s exclusive job. Doc references keep
85
+ * the caller's quoted text verbatim (unchanged from before the union); the
86
+ * pointer kinds have no text of their own, so the turn carries their identity.
87
+ */
88
+ export declare function referenceTurnText(reference: SessionReference): string;
39
89
  export interface TranscriptTurn {
40
90
  /**
41
91
  * Absolute 0-based line index in the source transcript for mirrored turns.
@@ -56,6 +106,21 @@ export interface TranscriptTurn {
56
106
  section?: ReferenceSection;
57
107
  /** Reference turns only: identity of the source document. */
58
108
  source?: ReferenceSource;
109
+ /**
110
+ * Reference turns only, POINTER kinds only: the file-slice or DAG-node
111
+ * payload the caller sent, preserved whole. Doc references deliberately do
112
+ * NOT land here — they keep their historical `section`/`source` fields, so a
113
+ * record written today is byte-identical to one written before the union
114
+ * existed and an older sidecar still reads.
115
+ */
116
+ ref?: PointerReference;
117
+ /**
118
+ * Run this turn was folded down from (see web-server/run-event-log.ts). Set
119
+ * only on ARCS-authored turns written at a run's settle, where it doubles as
120
+ * the fold's idempotence marker: a run whose id already appears here has
121
+ * been folded and is never folded again.
122
+ */
123
+ run?: string;
59
124
  }
60
125
  export interface ReadTranscriptResult {
61
126
  turns: TranscriptTurn[];
@@ -70,12 +135,21 @@ export interface ReferenceTurnInput {
70
135
  };
71
136
  section?: ReferenceSection;
72
137
  source?: ReferenceSource;
138
+ /** Pointer kinds only — see `TranscriptTurn.ref`. */
139
+ ref?: PointerReference;
73
140
  }
74
141
  /** An ARCS-authored user/assistant turn sent to the session from the web UI. */
75
142
  export interface SessionTurnInput {
76
143
  type: "user" | "assistant";
77
144
  text: string;
78
145
  ts?: string;
146
+ /** Tool this turn stands for — a `tool_use` folded down from a run's event
147
+ * log, rendered dimmed exactly like a mirrored tool turn. */
148
+ tool?: {
149
+ name: string;
150
+ };
151
+ /** Run this turn was folded down from; also the fold's idempotence marker. */
152
+ run?: string;
79
153
  }
80
154
  /** Single-read cap for transcript files; anything larger mirrors as a no-op. */
81
155
  export declare const TRANSCRIPT_MAX_BYTES: number;
@@ -102,8 +176,9 @@ export declare function readTranscriptTurns(filePath: string, fromLine: number):
102
176
  */
103
177
  export declare function mirrorSessionTranscript(projectDir: string, normalizedId: string, transcriptPath: string): Promise<void>;
104
178
  /**
105
- * Appends an ARCS-authored reference turn (document section sent to the
106
- * session) to the sidecar under the same sessions/.store lock the session
179
+ * Appends an ARCS-authored reference turn (a document section, file slice or
180
+ * DAG node the caller pointed the session at) to the sidecar under the same
181
+ * sessions/.store lock the session
107
182
  * store uses, so appends serialize with index mutations. A failed append is a
108
183
  * swallowed no-op — the caller has already delivered the message. The id is
109
184
  * minted from the shared ARCS-authored negative space so it can never collide
@@ -117,6 +192,10 @@ export declare function appendReferenceTurn(projectDir: string, normalizedId: st
117
192
  * and reference appends. A failed append is a swallowed no-op. The id is
118
193
  * minted from the shared ARCS-authored negative space so it can never collide
119
194
  * with a reference turn — both render through <TurnRow key={t.id}>.
195
+ *
196
+ * `tool` and `run` ride through verbatim: they are what a run's event-log
197
+ * fold-down writes (one turn per `tool_use`, every turn tagged with the run
198
+ * whose log produced it — see web-server/run-event-log.ts).
120
199
  */
121
200
  export declare function appendSessionTurn(projectDir: string, normalizedId: string, turn: SessionTurnInput): Promise<void>;
122
201
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"claude-transcript.d.ts","sourceRoot":"","sources":["../../src/utils/claude-transcript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH;;iDAEiD;AACjD,MAAM,WAAW,gBAAgB;IAC/B,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,4DAA4D;AAC5D,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,CAAC;IACxC,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B;;;;;;OAMG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB;0DACsD;IACtD,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,6DAA6D;IAC7D,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED,gFAAgF;AAChF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,QAAmB,CAAC;AAMrD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEtF;AAyGD;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC,CAiB/B;AAyFD;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAoCf;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,cAAc,EAAE,CAAC,CAM3B"}
1
+ {"version":3,"file":"claude-transcript.d.ts","sourceRoot":"","sources":["../../src/utils/claude-transcript.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,23 @@ import { join } from "node:path";
17
17
  import { withLock } from "./file-lock.js";
18
18
  import { normalizeIdentifier } from "./slug.js";
19
19
  import { ensureDir, nowISO, writeTextAtomic } from "./storage-utils.js";
20
+ /**
21
+ * The `text` a reference TURN records — the sidecar's own label, which is what
22
+ * the transcript panel shows. NOT prompt text: rendering a reference for a
23
+ * model is `web-server/prompt-assembly.ts`'s exclusive job. Doc references keep
24
+ * the caller's quoted text verbatim (unchanged from before the union); the
25
+ * pointer kinds have no text of their own, so the turn carries their identity.
26
+ */
27
+ export function referenceTurnText(reference) {
28
+ switch (reference.type) {
29
+ case "file":
30
+ return `${reference.path}:${reference.startLine}-${reference.endLine}`;
31
+ case "node":
32
+ return `${reference.kind} ${reference.id}`;
33
+ default:
34
+ return reference.text;
35
+ }
36
+ }
20
37
  /** Single-read cap for transcript files; anything larger mirrors as a no-op. */
21
38
  export const TRANSCRIPT_MAX_BYTES = 20 * 1024 * 1024;
22
39
  // ---------------------------------------------------------------------------
@@ -282,8 +299,9 @@ export async function mirrorSessionTranscript(projectDir, normalizedId, transcri
282
299
  }
283
300
  }
284
301
  /**
285
- * Appends an ARCS-authored reference turn (document section sent to the
286
- * session) to the sidecar under the same sessions/.store lock the session
302
+ * Appends an ARCS-authored reference turn (a document section, file slice or
303
+ * DAG node the caller pointed the session at) to the sidecar under the same
304
+ * sessions/.store lock the session
287
305
  * store uses, so appends serialize with index mutations. A failed append is a
288
306
  * swallowed no-op — the caller has already delivered the message. The id is
289
307
  * minted from the shared ARCS-authored negative space so it can never collide
@@ -303,6 +321,13 @@ export async function appendReferenceTurn(projectDir, normalizedId, turn) {
303
321
  ...(turn.tool !== undefined ? { tool: turn.tool } : {}),
304
322
  ...(turn.section !== undefined ? { section: turn.section } : {}),
305
323
  ...(turn.source !== undefined ? { source: turn.source } : {}),
324
+ // LAST for the POINTER records' sake. It buys the doc record nothing: a
325
+ // doc turn has `ref === undefined`, so this spread contributes no key
326
+ // wherever it sits, and the pre-union key order survives by that absence
327
+ // rather than by this position. What the position DOES fix is the pointer
328
+ // records' own layout — `ref` always trails `section`/`source`, so every
329
+ // file/node turn serializes its keys in one stable order.
330
+ ...(turn.ref !== undefined ? { ref: turn.ref } : {}),
306
331
  };
307
332
  await appendRecords(sidecarPath, [record]);
308
333
  });
@@ -318,6 +343,10 @@ export async function appendReferenceTurn(projectDir, normalizedId, turn) {
318
343
  * and reference appends. A failed append is a swallowed no-op. The id is
319
344
  * minted from the shared ARCS-authored negative space so it can never collide
320
345
  * with a reference turn — both render through <TurnRow key={t.id}>.
346
+ *
347
+ * `tool` and `run` ride through verbatim: they are what a run's event-log
348
+ * fold-down writes (one turn per `tool_use`, every turn tagged with the run
349
+ * whose log produced it — see web-server/run-event-log.ts).
321
350
  */
322
351
  export async function appendSessionTurn(projectDir, normalizedId, turn) {
323
352
  try {
@@ -330,6 +359,8 @@ export async function appendSessionTurn(projectDir, normalizedId, turn) {
330
359
  type: turn.type,
331
360
  text: turn.text,
332
361
  ...(turn.ts !== undefined ? { ts: turn.ts } : {}),
362
+ ...(turn.tool !== undefined ? { tool: turn.tool } : {}),
363
+ ...(turn.run !== undefined ? { run: turn.run } : {}),
333
364
  };
334
365
  await appendRecords(sidecarPath, [record]);
335
366
  });
@@ -1 +1 @@
1
- {"version":3,"file":"claude-transcript.js","sourceRoot":"","sources":["../../src/utils/claude-transcript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-transcript.js","sourceRoot":"","sources":["../../src/utils/claude-transcript.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,29 @@ export interface GitLogEntry {
4
4
  date: string;
5
5
  filesChanged: string[];
6
6
  }
7
+ /**
8
+ * Ceiling on one async git invocation. A `git` that never returns — a
9
+ * network-backed worktree, an index.lock held by another process — must fail
10
+ * closed to "no revision" rather than pin a request open forever. Generous
11
+ * enough that a cold `rev-parse` on a large repo still answers.
12
+ *
13
+ * Exported for the tests that assert the deadline is actually honoured.
14
+ */
15
+ export declare const GIT_ASYNC_TIMEOUT_MS = 2000;
7
16
  export declare function isGitRepo(cwd: string): boolean;
8
17
  export declare function getHeadCommit(cwd: string): string | null;
18
+ /**
19
+ * Async twin of `getHeadCommit`, for callers on a request path.
20
+ *
21
+ * The sync export stays as it is — its callers are CLI, where blocking costs
22
+ * nothing. A server is the opposite case: `execSync` holds the whole event
23
+ * loop for the child's entire lifetime, so one file view stalls every other
24
+ * in-flight request and every open SSE stream. Use this one from a handler.
25
+ *
26
+ * Settles within `GIT_ASYNC_TIMEOUT_MS` plus a small grace no matter what the
27
+ * child does — see `execAsync` for why that needs a race rather than a timeout.
28
+ */
29
+ export declare function getHeadCommitAsync(cwd: string): Promise<string | null>;
9
30
  export declare function getGitLog(cwd: string, options?: {
10
31
  since?: string;
11
32
  limit?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAcD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE9C;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAExD;AAED,wBAAgB,SAAS,CACvB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,WAAW,EAAE,CAkCf;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAIzE"}
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAID;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAyDzC,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE9C;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAExD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE5E;AAED,wBAAgB,SAAS,CACvB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,WAAW,EAAE,CAkCf;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAIzE"}