@rubytech/create-realagent-code 0.1.608 → 0.1.610

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 (251) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/lib/graph-write/dist/__tests__/account-id-gate.test.js +86 -0
  3. package/payload/platform/lib/graph-write/dist/__tests__/account-id-gate.test.js.map +1 -1
  4. package/payload/platform/lib/graph-write/dist/index.d.ts +30 -9
  5. package/payload/platform/lib/graph-write/dist/index.d.ts.map +1 -1
  6. package/payload/platform/lib/graph-write/dist/index.js +22 -2
  7. package/payload/platform/lib/graph-write/dist/index.js.map +1 -1
  8. package/payload/platform/lib/graph-write/src/__tests__/account-id-gate.test.ts +99 -1
  9. package/payload/platform/lib/graph-write/src/index.ts +47 -12
  10. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +45 -1
  11. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +12 -0
  12. package/payload/platform/plugins/docs/references/telegram-guide.md +44 -0
  13. package/payload/platform/plugins/memory/mcp/dist/index.js +65 -0
  14. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  15. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/xacct-counters.test.d.ts +2 -0
  16. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/xacct-counters.test.d.ts.map +1 -0
  17. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/xacct-counters.test.js +169 -0
  18. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/xacct-counters.test.js.map +1 -0
  19. package/payload/platform/plugins/memory/mcp/dist/lib/xacct-counters.d.ts +63 -0
  20. package/payload/platform/plugins/memory/mcp/dist/lib/xacct-counters.d.ts.map +1 -0
  21. package/payload/platform/plugins/memory/mcp/dist/lib/xacct-counters.js +114 -0
  22. package/payload/platform/plugins/memory/mcp/dist/lib/xacct-counters.js.map +1 -0
  23. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-cross-account.test.d.ts +2 -0
  24. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-cross-account.test.d.ts.map +1 -0
  25. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-cross-account.test.js +123 -0
  26. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/memory-write-cross-account.test.js.map +1 -0
  27. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/xacct-write-gate.test.d.ts +2 -0
  28. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/xacct-write-gate.test.d.ts.map +1 -0
  29. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/xacct-write-gate.test.js +110 -0
  30. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/xacct-write-gate.test.js.map +1 -0
  31. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.d.ts.map +1 -1
  32. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js +7 -0
  33. package/payload/platform/plugins/memory/mcp/dist/tools/memory-write.js.map +1 -1
  34. package/payload/platform/plugins/memory/mcp/vitest.config.ts +2 -0
  35. package/payload/platform/services/claude-session-manager/dist/claude-trust-preflight.d.ts +43 -0
  36. package/payload/platform/services/claude-session-manager/dist/claude-trust-preflight.d.ts.map +1 -0
  37. package/payload/platform/services/claude-session-manager/dist/claude-trust-preflight.js +88 -0
  38. package/payload/platform/services/claude-session-manager/dist/claude-trust-preflight.js.map +1 -0
  39. package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
  40. package/payload/platform/services/claude-session-manager/dist/http-server.js +125 -4
  41. package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
  42. package/payload/platform/services/claude-session-manager/dist/index.js +26 -1
  43. package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
  44. package/payload/platform/services/claude-session-manager/dist/jsonl-path.d.ts +1 -1
  45. package/payload/platform/services/claude-session-manager/dist/jsonl-path.d.ts.map +1 -1
  46. package/payload/platform/services/claude-session-manager/dist/jsonl-path.js +26 -0
  47. package/payload/platform/services/claude-session-manager/dist/jsonl-path.js.map +1 -1
  48. package/payload/platform/services/claude-session-manager/dist/recover-account.d.ts +54 -0
  49. package/payload/platform/services/claude-session-manager/dist/recover-account.d.ts.map +1 -0
  50. package/payload/platform/services/claude-session-manager/dist/recover-account.js +141 -0
  51. package/payload/platform/services/claude-session-manager/dist/recover-account.js.map +1 -0
  52. package/payload/platform/services/claude-session-manager/dist/session-account-census.d.ts +30 -0
  53. package/payload/platform/services/claude-session-manager/dist/session-account-census.d.ts.map +1 -0
  54. package/payload/platform/services/claude-session-manager/dist/session-account-census.js +96 -0
  55. package/payload/platform/services/claude-session-manager/dist/session-account-census.js.map +1 -0
  56. package/payload/platform/services/telegram-channel/dist/instructions.d.ts +9 -0
  57. package/payload/platform/services/telegram-channel/dist/instructions.d.ts.map +1 -1
  58. package/payload/platform/services/telegram-channel/dist/instructions.js +15 -0
  59. package/payload/platform/services/telegram-channel/dist/instructions.js.map +1 -1
  60. package/payload/platform/services/telegram-channel/dist/notification.d.ts +6 -4
  61. package/payload/platform/services/telegram-channel/dist/notification.d.ts.map +1 -1
  62. package/payload/platform/services/telegram-channel/dist/notification.js +15 -1
  63. package/payload/platform/services/telegram-channel/dist/notification.js.map +1 -1
  64. package/payload/server/{chunk-GI5AVCRG.js → chunk-DRDU74ZM.js} +1 -1
  65. package/payload/server/{chunk-MNN2RWJR.js → chunk-IOPUA7QV.js} +1 -1
  66. package/payload/server/{chunk-6AQYMT6C.js → chunk-T6NXRWMG.js} +43 -8
  67. package/payload/server/{manager-VDHT3YYI.js → manager-O5L2SKW7.js} +2 -2
  68. package/payload/server/maxy-edge.js +2 -2
  69. package/payload/server/public/activity.html +6 -6
  70. package/payload/server/public/agents.html +5 -5
  71. package/payload/server/public/assets/{AdminLoginScreens-DuQ3ax5U.js → AdminLoginScreens-uk2gBvI9.js} +1 -1
  72. package/payload/server/public/assets/AdminLoginScreens-uk2gBvI9.js.br +0 -0
  73. package/payload/server/public/assets/AdminLoginScreens-uk2gBvI9.js.gz +0 -0
  74. package/payload/server/public/assets/AdminShell-DyOPTLdb.js +3 -0
  75. package/payload/server/public/assets/AdminShell-DyOPTLdb.js.br +0 -0
  76. package/payload/server/public/assets/AdminShell-DyOPTLdb.js.gz +0 -0
  77. package/payload/server/public/assets/{activity-C2qWlcJ5.js → activity-DfIud5UH.js} +1 -1
  78. package/payload/server/public/assets/activity-DfIud5UH.js.br +0 -0
  79. package/payload/server/public/assets/activity-DfIud5UH.js.gz +0 -0
  80. package/payload/server/public/assets/admin-Duy2d3ks.js +1 -0
  81. package/payload/server/public/assets/admin-Duy2d3ks.js.br +0 -0
  82. package/payload/server/public/assets/admin-Duy2d3ks.js.gz +0 -0
  83. package/payload/server/public/assets/{agents-DoGVAjIT.js → agents-Rcdk-pni.js} +1 -1
  84. package/payload/server/public/assets/agents-Rcdk-pni.js.br +0 -0
  85. package/payload/server/public/assets/agents-Rcdk-pni.js.gz +0 -0
  86. package/payload/server/public/assets/{browser-DjqS897k.js → browser-Bt6h1Pjb.js} +1 -1
  87. package/payload/server/public/assets/browser-Bt6h1Pjb.js.br +0 -0
  88. package/payload/server/public/assets/browser-Bt6h1Pjb.js.gz +0 -0
  89. package/payload/server/public/assets/{calendar-DJeOm0WS.js → calendar-Di0yArmc.js} +1 -1
  90. package/payload/server/public/assets/calendar-Di0yArmc.js.br +0 -0
  91. package/payload/server/public/assets/calendar-Di0yArmc.js.gz +0 -0
  92. package/payload/server/public/assets/chat-xJTrFY2U.js +1 -0
  93. package/payload/server/public/assets/chat-xJTrFY2U.js.br +1 -0
  94. package/payload/server/public/assets/chat-xJTrFY2U.js.gz +0 -0
  95. package/payload/server/public/assets/{chevron-left-D9z1aK3p.js → chevron-left-QGcFX-3R.js} +1 -1
  96. package/payload/server/public/assets/chevron-left-QGcFX-3R.js.br +0 -0
  97. package/payload/server/public/assets/clock-PkEm8y4i.js +1 -0
  98. package/payload/server/public/assets/clock-PkEm8y4i.js.br +0 -0
  99. package/payload/server/public/assets/clock-PkEm8y4i.js.gz +0 -0
  100. package/payload/server/public/assets/copy-RSaF-402.js +1 -0
  101. package/payload/server/public/assets/copy-RSaF-402.js.br +0 -0
  102. package/payload/server/public/assets/copy-RSaF-402.js.gz +0 -0
  103. package/payload/server/public/assets/data-CLmmCyzs.js +1 -0
  104. package/payload/server/public/assets/data-CLmmCyzs.js.br +1 -0
  105. package/payload/server/public/assets/data-CLmmCyzs.js.gz +0 -0
  106. package/payload/server/public/assets/{field-WRk67lvr.js → field-nfpVNHyk.js} +1 -1
  107. package/payload/server/public/assets/field-nfpVNHyk.js.br +0 -0
  108. package/payload/server/public/assets/field-nfpVNHyk.js.gz +0 -0
  109. package/payload/server/public/assets/{file-text-BJDCb334.js → file-text-Cws2LExM.js} +1 -1
  110. package/payload/server/public/assets/file-text-Cws2LExM.js.br +0 -0
  111. package/payload/server/public/assets/file-text-Cws2LExM.js.gz +0 -0
  112. package/payload/server/public/assets/graph-56nTCvKa.js +51 -0
  113. package/payload/server/public/assets/graph-56nTCvKa.js.br +0 -0
  114. package/payload/server/public/assets/graph-56nTCvKa.js.gz +0 -0
  115. package/payload/server/public/assets/{graph-labels-CEDmX7qW.js → graph-labels-qHDVYalh.js} +1 -1
  116. package/payload/server/public/assets/graph-labels-qHDVYalh.js.br +0 -0
  117. package/payload/server/public/assets/graph-labels-qHDVYalh.js.gz +0 -0
  118. package/payload/server/public/assets/{jsx-runtime-hPFGo4rC.css → jsx-runtime-B5zQuMcr.css} +1 -1
  119. package/payload/server/public/assets/jsx-runtime-B5zQuMcr.css.br +0 -0
  120. package/payload/server/public/assets/{jsx-runtime-hPFGo4rC.css.gz → jsx-runtime-B5zQuMcr.css.gz} +0 -0
  121. package/payload/server/public/assets/{operator-1WFztEQA.js → operator-D-P6oemk.js} +1 -1
  122. package/payload/server/public/assets/operator-D-P6oemk.js.br +2 -0
  123. package/payload/server/public/assets/operator-D-P6oemk.js.gz +0 -0
  124. package/payload/server/public/assets/page-8goE0IWS.js +32 -0
  125. package/payload/server/public/assets/page-8goE0IWS.js.br +0 -0
  126. package/payload/server/public/assets/page-8goE0IWS.js.gz +0 -0
  127. package/payload/server/public/assets/page-iL446JAc.js +1 -0
  128. package/payload/server/public/assets/page-iL446JAc.js.br +0 -0
  129. package/payload/server/public/assets/page-iL446JAc.js.gz +0 -0
  130. package/payload/server/public/assets/play-B8bxRax6.js +1 -0
  131. package/payload/server/public/assets/play-B8bxRax6.js.br +0 -0
  132. package/payload/server/public/assets/play-B8bxRax6.js.gz +0 -0
  133. package/payload/server/public/assets/{public-DAea6w7w.js → public-BwfIj7tM.js} +1 -1
  134. package/payload/server/public/assets/public-BwfIj7tM.js.br +0 -0
  135. package/payload/server/public/assets/public-BwfIj7tM.js.gz +0 -0
  136. package/payload/server/public/assets/{rotate-ccw-CqlRlGsY.js → rotate-ccw-X7-7vE7t.js} +1 -1
  137. package/payload/server/public/assets/rotate-ccw-X7-7vE7t.js.br +0 -0
  138. package/payload/server/public/assets/rotate-ccw-X7-7vE7t.js.gz +0 -0
  139. package/payload/server/public/assets/{routines-vy5xsyqx.js → routines-sFud5tka.js} +2 -2
  140. package/payload/server/public/assets/routines-sFud5tka.js.br +0 -0
  141. package/payload/server/public/assets/routines-sFud5tka.js.gz +0 -0
  142. package/payload/server/public/assets/{skills-X7FTilVy.js → skills-_Dc3eG9T.js} +1 -1
  143. package/payload/server/public/assets/skills-_Dc3eG9T.js.br +0 -0
  144. package/payload/server/public/assets/skills-_Dc3eG9T.js.gz +0 -0
  145. package/payload/server/public/assets/tasks-C0u8AtqT.js +3 -0
  146. package/payload/server/public/assets/tasks-C0u8AtqT.js.br +0 -0
  147. package/payload/server/public/assets/tasks-C0u8AtqT.js.gz +0 -0
  148. package/payload/server/public/assets/{triangle-alert-CuWcGaRo.js → triangle-alert-DD4kSK45.js} +1 -1
  149. package/payload/server/public/assets/triangle-alert-DD4kSK45.js.br +0 -0
  150. package/payload/server/public/assets/triangle-alert-DD4kSK45.js.gz +0 -0
  151. package/payload/server/public/assets/{useCopyFeedback-DLSKs6r2.js → useCopyFeedback-Dq-Putj7.js} +1 -1
  152. package/payload/server/public/assets/useCopyFeedback-Dq-Putj7.js.br +0 -0
  153. package/payload/server/public/assets/useCopyFeedback-Dq-Putj7.js.gz +0 -0
  154. package/payload/server/public/assets/useMediaQuery-Cm_fvNIH.js +6 -0
  155. package/payload/server/public/assets/useMediaQuery-Cm_fvNIH.js.br +0 -0
  156. package/payload/server/public/assets/useMediaQuery-Cm_fvNIH.js.gz +0 -0
  157. package/payload/server/public/assets/useVoiceRecorder-C6xqnm7i.js +2 -0
  158. package/payload/server/public/assets/useVoiceRecorder-C6xqnm7i.js.br +0 -0
  159. package/payload/server/public/assets/useVoiceRecorder-C6xqnm7i.js.gz +0 -0
  160. package/payload/server/public/assets/{wrench-nDMQ6x-6.js → wrench-Bjw6eVl_.js} +1 -1
  161. package/payload/server/public/assets/wrench-Bjw6eVl_.js.br +0 -0
  162. package/payload/server/public/assets/wrench-Bjw6eVl_.js.gz +0 -0
  163. package/payload/server/public/browser.html +5 -5
  164. package/payload/server/public/calendar.html +8 -8
  165. package/payload/server/public/chat.html +14 -14
  166. package/payload/server/public/data.html +12 -12
  167. package/payload/server/public/field.html +3 -3
  168. package/payload/server/public/graph.html +10 -10
  169. package/payload/server/public/index.html +14 -14
  170. package/payload/server/public/operator.html +16 -16
  171. package/payload/server/public/public.html +14 -14
  172. package/payload/server/public/routines.html +8 -8
  173. package/payload/server/public/skills.html +6 -6
  174. package/payload/server/public/tasks.html +7 -7
  175. package/payload/server/server.js +511 -283
  176. package/payload/server/public/assets/AdminLoginScreens-DuQ3ax5U.js.br +0 -0
  177. package/payload/server/public/assets/AdminLoginScreens-DuQ3ax5U.js.gz +0 -0
  178. package/payload/server/public/assets/AdminShell-1HyATV_t.js +0 -3
  179. package/payload/server/public/assets/AdminShell-1HyATV_t.js.br +0 -0
  180. package/payload/server/public/assets/AdminShell-1HyATV_t.js.gz +0 -0
  181. package/payload/server/public/assets/activity-C2qWlcJ5.js.br +0 -0
  182. package/payload/server/public/assets/activity-C2qWlcJ5.js.gz +0 -0
  183. package/payload/server/public/assets/admin-DqpfY8-t.js +0 -1
  184. package/payload/server/public/assets/admin-DqpfY8-t.js.br +0 -0
  185. package/payload/server/public/assets/admin-DqpfY8-t.js.gz +0 -0
  186. package/payload/server/public/assets/agents-DoGVAjIT.js.br +0 -0
  187. package/payload/server/public/assets/agents-DoGVAjIT.js.gz +0 -0
  188. package/payload/server/public/assets/browser-DjqS897k.js.br +0 -0
  189. package/payload/server/public/assets/browser-DjqS897k.js.gz +0 -0
  190. package/payload/server/public/assets/calendar-DJeOm0WS.js.br +0 -0
  191. package/payload/server/public/assets/calendar-DJeOm0WS.js.gz +0 -0
  192. package/payload/server/public/assets/chat-BrRE0Dck.js +0 -1
  193. package/payload/server/public/assets/chat-BrRE0Dck.js.br +0 -0
  194. package/payload/server/public/assets/chat-BrRE0Dck.js.gz +0 -0
  195. package/payload/server/public/assets/chevron-left-D9z1aK3p.js.br +0 -0
  196. package/payload/server/public/assets/clock-BqHWMICF.js +0 -1
  197. package/payload/server/public/assets/clock-BqHWMICF.js.br +0 -0
  198. package/payload/server/public/assets/clock-BqHWMICF.js.gz +0 -0
  199. package/payload/server/public/assets/copy-p9ZM9fnn.js +0 -1
  200. package/payload/server/public/assets/copy-p9ZM9fnn.js.br +0 -0
  201. package/payload/server/public/assets/copy-p9ZM9fnn.js.gz +0 -0
  202. package/payload/server/public/assets/data-CPsqW0qW.js +0 -1
  203. package/payload/server/public/assets/data-CPsqW0qW.js.br +0 -0
  204. package/payload/server/public/assets/data-CPsqW0qW.js.gz +0 -0
  205. package/payload/server/public/assets/field-WRk67lvr.js.br +0 -0
  206. package/payload/server/public/assets/field-WRk67lvr.js.gz +0 -0
  207. package/payload/server/public/assets/file-text-BJDCb334.js.br +0 -0
  208. package/payload/server/public/assets/file-text-BJDCb334.js.gz +0 -0
  209. package/payload/server/public/assets/graph-CAU2xh2Z.js +0 -51
  210. package/payload/server/public/assets/graph-CAU2xh2Z.js.br +0 -0
  211. package/payload/server/public/assets/graph-CAU2xh2Z.js.gz +0 -0
  212. package/payload/server/public/assets/graph-labels-CEDmX7qW.js.br +0 -0
  213. package/payload/server/public/assets/graph-labels-CEDmX7qW.js.gz +0 -0
  214. package/payload/server/public/assets/jsx-runtime-hPFGo4rC.css.br +0 -0
  215. package/payload/server/public/assets/operator-1WFztEQA.js.br +0 -0
  216. package/payload/server/public/assets/operator-1WFztEQA.js.gz +0 -0
  217. package/payload/server/public/assets/page-B72XigcU.js +0 -32
  218. package/payload/server/public/assets/page-B72XigcU.js.br +0 -0
  219. package/payload/server/public/assets/page-B72XigcU.js.gz +0 -0
  220. package/payload/server/public/assets/page-nT8l_cX1.js +0 -1
  221. package/payload/server/public/assets/page-nT8l_cX1.js.br +0 -0
  222. package/payload/server/public/assets/page-nT8l_cX1.js.gz +0 -0
  223. package/payload/server/public/assets/play-CYqOCqm6.js +0 -1
  224. package/payload/server/public/assets/play-CYqOCqm6.js.br +0 -0
  225. package/payload/server/public/assets/play-CYqOCqm6.js.gz +0 -0
  226. package/payload/server/public/assets/public-DAea6w7w.js.br +0 -0
  227. package/payload/server/public/assets/public-DAea6w7w.js.gz +0 -0
  228. package/payload/server/public/assets/rotate-ccw-CqlRlGsY.js.br +0 -0
  229. package/payload/server/public/assets/rotate-ccw-CqlRlGsY.js.gz +0 -0
  230. package/payload/server/public/assets/routines-vy5xsyqx.js.br +0 -0
  231. package/payload/server/public/assets/routines-vy5xsyqx.js.gz +0 -0
  232. package/payload/server/public/assets/skills-X7FTilVy.js.br +0 -0
  233. package/payload/server/public/assets/skills-X7FTilVy.js.gz +0 -0
  234. package/payload/server/public/assets/tasks-BXx_jk_p.js +0 -3
  235. package/payload/server/public/assets/tasks-BXx_jk_p.js.br +0 -0
  236. package/payload/server/public/assets/tasks-BXx_jk_p.js.gz +0 -0
  237. package/payload/server/public/assets/triangle-alert-CuWcGaRo.js.br +0 -0
  238. package/payload/server/public/assets/triangle-alert-CuWcGaRo.js.gz +0 -0
  239. package/payload/server/public/assets/useCopyFeedback-DLSKs6r2.js.br +0 -0
  240. package/payload/server/public/assets/useCopyFeedback-DLSKs6r2.js.gz +0 -0
  241. package/payload/server/public/assets/useMediaQuery-C_1CV_iW.js +0 -6
  242. package/payload/server/public/assets/useMediaQuery-C_1CV_iW.js.br +0 -0
  243. package/payload/server/public/assets/useMediaQuery-C_1CV_iW.js.gz +0 -0
  244. package/payload/server/public/assets/useVoiceRecorder-DBzM_HIx.js +0 -2
  245. package/payload/server/public/assets/useVoiceRecorder-DBzM_HIx.js.br +0 -0
  246. package/payload/server/public/assets/useVoiceRecorder-DBzM_HIx.js.gz +0 -0
  247. package/payload/server/public/assets/wrench-nDMQ6x-6.js.br +0 -0
  248. package/payload/server/public/assets/wrench-nDMQ6x-6.js.gz +0 -0
  249. /package/payload/server/public/assets/{jsx-runtime-CvVXOszc.js → jsx-runtime-DeRQuYlX.js} +0 -0
  250. /package/payload/server/public/assets/{jsx-runtime-CvVXOszc.js.br → jsx-runtime-DeRQuYlX.js.br} +0 -0
  251. /package/payload/server/public/assets/{jsx-runtime-CvVXOszc.js.gz → jsx-runtime-DeRQuYlX.js.gz} +0 -0
@@ -255,6 +255,13 @@ async function memoryWriteImpl(params) {
255
255
  relationships: resolvedRelationships,
256
256
  createdBy,
257
257
  mergeOn,
258
+ // Task 2731. `accountId` is the account `resolveToolAccount` authorised
259
+ // for this call — the caller's own, or a house-authorised sub-account
260
+ // target (Task 1455) — and is the same value stamped onto `nodeProps`
261
+ // above. Omitting it left the gate comparing against
262
+ // `process.env.ACCOUNT_ID`, the house account, so every cross-account
263
+ // write was allowed by the resolver and then refused by the gate.
264
+ expectedAccountId: accountId,
258
265
  });
259
266
  // Task 306: extract dated statements from the body of compiled-truth
260
267
  // subjects and path-anchor-MERGE :TimelineEvent rows. Strictly deterministic
@@ -1 +1 @@
1
- {"version":3,"file":"memory-write.js","sourceRoot":"","sources":["../../src/tools/memory-write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAqB,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EACL,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,kBAAkB,EAClB,4BAA4B,GAG7B,MAAM,8CAA8C,CAAC;AA+CtD,yGAAyG;AACzG,MAAM,uBAAuB,GAAG;IAC9B,QAAQ;IACR,cAAc;IACd,SAAS;IACT,SAAS;IACT,eAAe;CACP,CAAC;AACX,sEAAsE;AACtE,4EAA4E;AAC5E,gFAAgF;AAChF,iFAAiF;AACjF,iFAAiF;AACjF,8EAA8E;AAC9E,2EAA2E;AAC3E,4EAA4E;AAC5E,+EAA+E;AAC/E,2DAA2D;AAC3D,gGAAgG;AAChG,MAAM,kBAAkB,GAAG;IACzB,cAAc;IACd,SAAS;IACT,SAAS;IACT,eAAe;CACP,CAAC;AACX,6FAA6F;AAC7F,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,kCAAkC,GAAG;IACzC,eAAe;IACf,wBAAwB;IACxB,qBAAqB;IACrB,qBAAqB;IACrB,8BAA8B;IAC9B,2BAA2B;CACnB,CAAC;AAEX,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAmB;IACnD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IACxH,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IAEtC,OAAO,cAAc,CACnB,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAC3D,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,EAC/H,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CACnE,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,MAAmB;IAChD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAExH,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAC;IACxG,CAAC;IAED,wEAAwE;IACxE,yEAAyE;IACzE,0EAA0E;IAC1E,KAAK,MAAM,GAAG,IAAI,kCAAkC,EAAE,CAAC;QACrD,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,wCAAwC,GAAG,0CAA0C;gBACnF,mHAAmH,CACtH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzD,IAAI,CAAC;QACH,wEAAwE;QACxE,6DAA6D;QAC7D,qEAAqE;QACrE,wEAAwE;QACxE,yEAAyE;QACzE,0CAA0C;QAC1C,MAAM,eAAe,GAAG,MAAM,qBAAqB,CAAC;YAClD,OAAO;YACP,SAAS;YACT,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC,aAAa;YAC7C,eAAe,EAAE,eAAe,CAAC,UAAU,CAAC;SAC7C,CAAC,CAAC;QAEH,uEAAuE;QACvE,0EAA0E;QAC1E,yEAAyE;QACzE,gDAAgD;QAChD,IAAI,CAAC;YACH,aAAa,CACX,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EACjC,SAAS,EACT,EAAE,eAAe,EAAE,CACpB,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CACX,6CAA6C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,SAAS,IAAI,QAAQ,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC5J,CAAC;YACF,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,sEAAsE;QACtE,sEAAsE;QACtE,oEAAoE;QACpE,MAAM,MAAM,GAAG,oBAAoB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,kBAAkB,MAAM,CAAC,MAAM,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,6DAA6D;QAC7D,wEAAwE;QACxE,qEAAqE;QACrE,oEAAoE;QACpE,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;YACvE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAED,uDAAuD;QACvD,2EAA2E;QAC3E,+DAA+D;QAC/D,MAAM,QAAQ,GAAG,sBAAsB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,CAAC,MAAM,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7E,CAAC;QAED,iEAAiE;QACjE,kEAAkE;QAClE,+CAA+C;QAC/C,MAAM,SAAS,GAAG,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,kBAAkB,SAAS,CAAC,MAAM,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAChD,MAAM,SAAS,GAA4B;YACzC,GAAG,UAAU;YACb,SAAS;YACT,KAAK;YACL,SAAS;YACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YACnD,SAAS,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACjD,CAAC;QAED,wEAAwE;QACxE,oEAAoE;QACpE,iEAAiE;QACjE,kEAAkE;QAClE,qEAAqE;QACrE,0DAA0D;QAC1D,MAAM,kBAAkB,GACtB,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,QAAQ;YACpD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC;YACzC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB;YAClC,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,kBAAkB,EAAE,CAAC;YACvB,SAAS,CAAC,UAAU,GAAG,kBAAkB,CAAC;YAC1C,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC;QAC3B,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,6BAA6B,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG;YAC1F,cAAc,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CACtE,CAAC;QAEF,uEAAuE;QACvE,sEAAsE;QACtE,8DAA8D;QAC9D,uEAAuE;QACvE,sEAAsE;QACtE,4CAA4C;QAC5C,EAAE;QACF,oEAAoE;QACpE,mEAAmE;QACnE,wEAAwE;QACxE,uEAAuE;QACvE,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,IAAI,sBAAsB,EAAE,CAAC;YAC3B,IAAI,SAAS,CAAC,aAAa,KAAK,SAAS;gBAAE,SAAS,CAAC,aAAa,GAAG,EAAE,CAAC;YACxE,IAAI,SAAS,CAAC,sBAAsB,KAAK,SAAS;gBAChD,SAAS,CAAC,sBAAsB,GAAG,oBAAoB,CAAC;YAC1D,IAAI,SAAS,CAAC,mBAAmB,KAAK,SAAS;gBAC7C,SAAS,CAAC,mBAAmB,GAAG,UAAU,CAAC;QAC/C,CAAC;QACD,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,IAAI,mBAAmB,EAAE,CAAC;YACxB,IAAI,SAAS,CAAC,mBAAmB,KAAK,SAAS;gBAAE,SAAS,CAAC,mBAAmB,GAAG,EAAE,CAAC;YACpF,IAAI,SAAS,CAAC,4BAA4B,KAAK,SAAS;gBACtD,SAAS,CAAC,4BAA4B,GAAG,oBAAoB,CAAC;YAChE,IAAI,SAAS,CAAC,yBAAyB,KAAK,SAAS;gBACnD,SAAS,CAAC,yBAAyB,GAAG,UAAU,CAAC;QACrD,CAAC;QAED,uDAAuD;QACvD,oEAAoE;QACpE,kEAAkE;QAClE,qEAAqE;QACrE,oEAAoE;QACpE,IAAI,qBAAqB,GAAwB,aAAa,CAAC;QAC/D,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,qFAAqF,EACrF,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAC7B,CAAC;YACF,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CACb,mCAAmC,gBAAgB,mCAAmC,CACvF,CAAC;YACJ,CAAC;YACD,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAW,CAAC;YACpE,IAAI,SAAS,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CACb,kDAAkD,aAAa,qCAAqC,SAAS,iCAAiC,CAC/I,CAAC;YACJ,CAAC;YACD,qBAAqB,GAAG;gBACtB,GAAG,aAAa;gBAChB;oBACE,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAE,UAAU;oBACrB,YAAY,EAAE,gBAAgB;iBAC/B;aACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,sDAAsD;YACtD,kEAAkE;YAClE,2DAA2D;YAC3D,kEAAkE;YAClE,mEAAmE;YACnE,oCAAoC;YACpC,qBAAqB,GAAG,MAAM,4BAA4B,CAAC;gBACzD,OAAO;gBACP,aAAa;gBACb,SAAS,EAAE,SAAS,IAAI,EAAE;gBAC1B,WAAW,EAAE,MAAM;gBACnB,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe;gBAC/C,YAAY,EAAE,YAAY;gBAC1B,IAAI,EAAE,cAAc;aACrB,CAAC,CAAC;QACL,CAAC;QAED,0EAA0E;QAC1E,iEAAiE;QACjE,yEAAyE;QACzE,yEAAyE;QACzE,4EAA4E;QAC5E,gDAAgD;QAChD,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,yBAAyB,CAChD,SAAS,CAAC,MAAM,CAAC,oBAAoB,EACrC,eAAe,CAAC,iBAAiB,CAClC,CAAC;YACF,KAAK,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;gBACxC,IAAI,GAAG,CAAC,SAAS,KAAK,UAAU;oBAAE,SAAS;gBAC3C,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,wBAAwB,CACpD,MAAM,EACN,GAAG,CAAC,IAAI,EACR,gBAAgB,CACjB,CAAC;gBACF,IAAI,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;oBACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qDAAqD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,IAAI,cAAc,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,IAAI,CACtM,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4CAA4C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CACjG,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;YACtC,OAAO;YACP,MAAM;YACN,KAAK,EAAE,SAAS;YAChB,aAAa,EAAE,qBAAqB;YACpC,SAAS;YACT,OAAO;SACR,CAAC,CAAC;QAEH,qEAAqE;QACrE,6EAA6E;QAC7E,sEAAsE;QACtE,uEAAuE;QACvE,uEAAuE;QACvE,iEAAiE;QACjE,IAAI,sBAAsB,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC/E,IAAI,CAAC;gBACH,4DAA4D;gBAC5D,0DAA0D;gBAC1D,0DAA0D;gBAC1D,yDAAyD;gBACzD,MAAM,MAAM,GACV,CAAC,OAAO,UAAU,CAAC,SAAS,KAAK,QAAQ,IAAI,UAAU,CAAC,SAAS,CAAC;oBAClE,CAAC,OAAO,UAAU,CAAC,SAAS,KAAK,QAAQ,IAAI,UAAU,CAAC,SAAS,CAAC;oBAClE,CAAC,OAAO,SAAS,CAAC,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,SAAS,CAAC;oBAChE,SAAS,CAAC;gBACZ,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;gBACzD,MAAM,UAAU,GAAG,sBAAsB,CACvC,UAAU,CAAC,IAAI,EACf,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAC3D,CAAC;gBACF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;wBAC3B,MAAM,OAAO,CAAC,GAAG,CACf;;;;;;;;;;;0DAW4C,EAC5C;4BACE,QAAQ,EAAE,MAAM,CAAC,MAAM;4BACvB,SAAS;4BACT,EAAE,EAAE,UAAU,EAAE;4BAChB,UAAU,EAAE,CAAC,CAAC,UAAU;4BACxB,IAAI,EAAE,WAAW;4BACjB,OAAO,EAAE,CAAC,CAAC,OAAO;4BAClB,MAAM,EAAE,OAAO,UAAU,CAAC,eAAe,KAAK,QAAQ;gCACpD,CAAC,CAAC,UAAU,CAAC,eAAe;gCAC5B,CAAC,CAAC,cAAc;4BAClB,OAAO,EAAE,CAAC,CAAC,OAAO;4BAClB,KAAK;yBACN,CACF,CAAC;oBACJ,CAAC;gBACH,CAAC;gBACD,OAAO,CAAC,GAAG,CACT,6BAA6B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG;oBACxD,YAAY,UAAU,CAAC,IAAI,IAAI,GAAG,WAAW,UAAU,CAAC,MAAM,qBAAqB,UAAU,CAAC,MAAM,GAAG,CAC1G,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,MAAM,OAAO,GAAI,UAAU,CAAC,IAAe,CAAC,MAAM,CAAC;gBACnD,OAAO,CAAC,KAAK,CACX,mCAAmC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG;oBAC9D,YAAY,OAAO,WAAW,GAAG,GAAG,CACvC,CAAC;gBACF,2EAA2E;YAC7E,CAAC;QACH,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACzE,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,4EAA4E;QAC5E,6EAA6E;QAC7E,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtD,OAAO,CAAC,KAAK,CACX,yCAAyC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACzD,CAAC,MAAM;oBACL,CAAC,CAAC,gBAAgB,MAAM,CAAC,QAAQ,QAAQ,MAAM,CAAC,SAAS,GAAG;oBAC5D,CAAC,CAAC,qCAAqC,KAAK,CAAC,OAAO,EAAE,CAAC,CAC5D,CAAC;YAEF,IAAI,CAAC;gBACH,IAAI,WAAmB,CAAC;gBACxB,IAAI,YAAqC,CAAC;gBAE1C,IAAI,MAAM,EAAE,CAAC;oBACX,0EAA0E;oBAC1E,WAAW,GAAG;uBACD,QAAQ;qDACsB,MAAM,CAAC,QAAQ;;WAEzD,CAAC;oBACF,YAAY,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC5D,CAAC;qBAAM,CAAC;oBACN,WAAW,GAAG;uBACD,QAAQ;;;;WAIpB,CAAC;oBACF,YAAY,GAAG,EAAE,SAAS,EAAE,CAAC;gBAC/B,CAAC;gBAED,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;gBAClE,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpC,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAW,CAAC;oBACvE,MAAM,MAAM,GAAG,MAAM;wBACnB,CAAC,CAAC,gBAAgB,MAAM,CAAC,QAAQ,QAAQ,MAAM,CAAC,SAAS,cAAc;wBACvE,CAAC,CAAC,8BAA8B,CAAC;oBACnC,OAAO,CAAC,KAAK,CACX,6CAA6C,UAAU,EAAE,CAC1D,CAAC;oBACF,MAAM,IAAI,KAAK,CACb,mCAAmC,UAAU,IAAI,MAAM,mDAAmD,CAC3G,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,WAAW,EAAE,CAAC;gBACrB,oEAAoE;gBACpE,IACE,WAAW,YAAY,KAAK;oBAC5B,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,EACrD,CAAC;oBACD,MAAM,WAAW,CAAC;gBACpB,CAAC;gBACD,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,WAAW,CAAC,CAAC;gBAChF,0EAA0E;YAC5E,CAAC;QACH,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,2EAA2E;AAC3E,6EAA6E;AAC7E,oFAAoF;AACpF,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,MAAM,UAAU,uBAAuB,CACrC,MAAgB,EAChB,UAAmC;IAEnC,MAAM,KAAK,GAAa,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACtD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACjE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACnF,CAAC"}
1
+ {"version":3,"file":"memory-write.js","sourceRoot":"","sources":["../../src/tools/memory-write.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,8 @@ export default defineConfig({
52
52
  "src/lib/__tests__/relationship-patterns.test.ts",
53
53
  // Task 2148 — type-preserving SET compiler for memory-update.
54
54
  "src/lib/__tests__/temporal-type-preserve.test.ts",
55
+ // Task 2731 — cross-account write counters + the two [xacct] signals.
56
+ "src/lib/__tests__/xacct-counters.test.ts",
55
57
  // Task 1944 — scheduled dream-cycle sweep throttle policy (vitest).
56
58
  "src/scripts/__tests__/**/*.test.ts",
57
59
  ],
@@ -0,0 +1,43 @@
1
+ export type TrustPreflightOutcome = 'already-true' | 'seeded' | 'failed';
2
+ export interface TrustPreflightResult {
3
+ outcome: TrustPreflightOutcome;
4
+ /** `none` on success; the error text on failure. */
5
+ message: string;
6
+ }
7
+ export interface TrustPreflightDeps {
8
+ /** `$CLAUDE_CONFIG_DIR/.claude.json` — the file the spawned child reads. */
9
+ claudeJsonPath: string;
10
+ /** Injected in tests. Returns null when the file is absent; throws when it
11
+ * exists and cannot be read or parsed. */
12
+ readState?: () => Record<string, unknown> | null;
13
+ writeState?: (state: Record<string, unknown>) => void;
14
+ }
15
+ /** Returns the state to write, or null when the entry is already trusted and
16
+ * there is nothing to do. Only `hasTrustDialogAccepted` on the cwd's own entry
17
+ * is owned; every other key on that entry, and every other field in the file,
18
+ * is carried through untouched.
19
+ *
20
+ * Not pure: it mutates `state` in place and returns that same object, the same
21
+ * way the installer's `seedClaudeTrust` does. The only caller passes a state
22
+ * object it just parsed and does not reuse. */
23
+ export declare function applyTrustEntry(state: Record<string, unknown>, cwd: string): Record<string, unknown> | null;
24
+ /** Read-merge-write of one key, run once per spawn before exec.
25
+ *
26
+ * The read is inside this call rather than a cached snapshot, so a write the
27
+ * CLI made since the last spawn is carried through rather than reverted. The
28
+ * CLI takes no lock on this file and neither does this: the window is one
29
+ * synchronous block, and a lock would only serialise our own spawns against
30
+ * each other.
31
+ *
32
+ * An existing file that will not parse is a failure, not an empty object.
33
+ * Starting from `{}` there would write back a file missing `numStartups`,
34
+ * `tipsHistory`, and `oauthAccount` — the clobber this function exists to
35
+ * avoid. Only an absent file starts from `{}`.
36
+ *
37
+ * Never throws. A trust seed that fails must not stop a spawn that might
38
+ * otherwise have worked. */
39
+ export declare function ensureCwdTrusted(cwd: string, deps: TrustPreflightDeps): TrustPreflightResult;
40
+ /** Pure. `seeded` recurring for one cwd is a write that is not persisting;
41
+ * `already-true` is the steady state. */
42
+ export declare function formatTrustPreflightLine(unitToken: string, cwd: string, r: TrustPreflightResult): string;
43
+ //# sourceMappingURL=claude-trust-preflight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-trust-preflight.d.ts","sourceRoot":"","sources":["../src/claude-trust-preflight.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,qBAAqB,GAAG,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAExE,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,qBAAqB,CAAA;IAC9B,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAA;IACtB;+CAC2C;IAC3C,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAChD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;CACtD;AAED;;;;;;;gDAOgD;AAChD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,GAAG,EAAE,MAAM,GACV,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAQhC;AAED;;;;;;;;;;;;;;6BAc6B;AAC7B,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,oBAAoB,CAgC5F;AAED;0CAC0C;AAC1C,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,oBAAoB,GACtB,MAAM,CAER"}
@@ -0,0 +1,88 @@
1
+ // Task 2721 — the spawn path's own workspace-trust seed.
2
+ //
3
+ // Claude Code scopes folder trust to the git repository root, and
4
+ // provision-account-dir.sh git-inits every account directory, so each is its
5
+ // own trust root that `projects[$HOME].hasTrustDialogAccepted` does not reach.
6
+ // Task 2720's installer seed covers every account directory present when the
7
+ // installer runs and nothing after; an account created later is a fresh repo
8
+ // root with no entry, and its first spawn halts on the folder-trust dialog
9
+ // before the child binds. That halt reads downstream as
10
+ // `op=bind-signal-absent … pidFileSeen=false`, and because /rc-spawn answers
11
+ // 200 it reaches the operator as silence.
12
+ //
13
+ // Shape mirrors `claude-trust-census.ts`: a pure transform plus a runner whose
14
+ // filesystem reads and writes are injectable, so the preservation invariant and
15
+ // the failure paths are testable without a filesystem.
16
+ import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
17
+ import { dirname } from 'node:path';
18
+ /** Returns the state to write, or null when the entry is already trusted and
19
+ * there is nothing to do. Only `hasTrustDialogAccepted` on the cwd's own entry
20
+ * is owned; every other key on that entry, and every other field in the file,
21
+ * is carried through untouched.
22
+ *
23
+ * Not pure: it mutates `state` in place and returns that same object, the same
24
+ * way the installer's `seedClaudeTrust` does. The only caller passes a state
25
+ * object it just parsed and does not reuse. */
26
+ export function applyTrustEntry(state, cwd) {
27
+ const projects = (state.projects ?? {});
28
+ const entry = projects[cwd] ?? {};
29
+ if (entry.hasTrustDialogAccepted === true)
30
+ return null;
31
+ entry.hasTrustDialogAccepted = true;
32
+ projects[cwd] = entry;
33
+ state.projects = projects;
34
+ return state;
35
+ }
36
+ /** Read-merge-write of one key, run once per spawn before exec.
37
+ *
38
+ * The read is inside this call rather than a cached snapshot, so a write the
39
+ * CLI made since the last spawn is carried through rather than reverted. The
40
+ * CLI takes no lock on this file and neither does this: the window is one
41
+ * synchronous block, and a lock would only serialise our own spawns against
42
+ * each other.
43
+ *
44
+ * An existing file that will not parse is a failure, not an empty object.
45
+ * Starting from `{}` there would write back a file missing `numStartups`,
46
+ * `tipsHistory`, and `oauthAccount` — the clobber this function exists to
47
+ * avoid. Only an absent file starts from `{}`.
48
+ *
49
+ * Never throws. A trust seed that fails must not stop a spawn that might
50
+ * otherwise have worked. */
51
+ export function ensureCwdTrusted(cwd, deps) {
52
+ const readState = deps.readState ??
53
+ (() => {
54
+ if (!existsSync(deps.claudeJsonPath))
55
+ return null;
56
+ const parsed = JSON.parse(readFileSync(deps.claudeJsonPath, 'utf-8'));
57
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
58
+ throw new Error('claude.json is not a JSON object');
59
+ }
60
+ return parsed;
61
+ });
62
+ const writeState = deps.writeState ??
63
+ ((state) => {
64
+ mkdirSync(dirname(deps.claudeJsonPath), { recursive: true });
65
+ // pid-suffixed so two processes writing at once never share a temp path.
66
+ // Same shape as rc-daemon.ts's ensureRemoteControlConsent, which merges
67
+ // its own key into this same file.
68
+ const tmp = `${deps.claudeJsonPath}.${process.pid}.tmp`;
69
+ writeFileSync(tmp, JSON.stringify(state, null, 2) + '\n', { mode: 0o600 });
70
+ renameSync(tmp, deps.claudeJsonPath);
71
+ });
72
+ try {
73
+ const next = applyTrustEntry(readState() ?? {}, cwd);
74
+ if (next === null)
75
+ return { outcome: 'already-true', message: 'none' };
76
+ writeState(next);
77
+ return { outcome: 'seeded', message: 'none' };
78
+ }
79
+ catch (err) {
80
+ return { outcome: 'failed', message: err instanceof Error ? err.message : String(err) };
81
+ }
82
+ }
83
+ /** Pure. `seeded` recurring for one cwd is a write that is not persisting;
84
+ * `already-true` is the steady state. */
85
+ export function formatTrustPreflightLine(unitToken, cwd, r) {
86
+ return `[rc-spawn] op=trust-preflight unitToken=${unitToken} cwd=${cwd} outcome=${r.outcome} message=${r.message}`;
87
+ }
88
+ //# sourceMappingURL=claude-trust-preflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-trust-preflight.js","sourceRoot":"","sources":["../src/claude-trust-preflight.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
@@ -60,6 +60,7 @@ import { computeMetering } from './session-metering.js';
60
60
  import { collectActivity } from './activity-rows.js';
61
61
  import { parseDayRange } from './activity-range.js';
62
62
  import { claudeStateRoot, projectSlugForCwd, jsonlPathForSessionId, sidecarPathForSessionId, permissionModeLogPathForSessionId, mcpDebugLogPathForSessionId, printStreamPathForSessionId, findExistingJsonlForSessionId, slugForExistingJsonl, jsonlPathForSlug, sidecarPathForSlug, projectsDirForCwd, detectRemoteControlSlug, classifyBindBlocker, classifyChildAuth, } from './jsonl-path.js';
63
+ import { resolveRecoverAccount, formatRecoverAccountLine } from './recover-account.js';
63
64
  import { basename, dirname, join } from 'node:path';
64
65
  import { validateUserTitle } from './user-title-store.js';
65
66
  import { credentialsPathForConfigDir, snapshotAuthForFailureReason } from './auth-snapshot.js';
@@ -2995,7 +2996,38 @@ export function buildHttpApp(deps) {
2995
2996
  timed(deps.logger, 'POST', '/rc-spawn', 400, Date.now() - start);
2996
2997
  return c.json({ error: 'targetAccountId not in this install registry' }, 400);
2997
2998
  }
2998
- const effectiveAccountId = requestedAccountId ?? deps.accountId;
2999
+ // Task 2728 a `recover: true` request carries no `targetAccountId`: the
3000
+ // recovery caller's body literal (`managerRcRecover`) has no such field, and
3001
+ // its docstring records that omitting it lets the manager default apply. The
3002
+ // default below then handed every wedged SUB-ACCOUNT session to the boot
3003
+ // house account — same conversation id, second account's projects dir, and
3004
+ // nothing logged. It is the same silent-default hazard the reject above
3005
+ // names for an UNKNOWN account, arriving through the ABSENT case instead.
3006
+ //
3007
+ // The account of record is the one whose directory holds this session's
3008
+ // sidecar. Resolving it here, above `effectiveAccountDir`, means the wedge
3009
+ // classifier reads the transcript's freshness from the session's own account
3010
+ // rather than from a house directory that never held it, so the kill decision
3011
+ // and the respawn key off one account.
3012
+ //
3013
+ // Unchanged: every non-recover caller keeps `?? deps.accountId`, and a
3014
+ // recover that names an account explicitly still gets that account.
3015
+ const recoverResolution = recover && sessionId !== null && requestedAccountId === undefined
3016
+ ? resolveRecoverAccount({ accountsRoot, sessionId })
3017
+ : null;
3018
+ const effectiveAccountId = recoverResolution?.outcome === 'ok' ? recoverResolution.accountId : (requestedAccountId ?? deps.accountId);
3019
+ // The line and the refusal both live in the recover branch below, AFTER the
3020
+ // not-live guard: a recover against a session this manager holds no PTY for
3021
+ // is the cold-start class (Tasks 782/813), which that guard reports as a
3022
+ // benign 200 no-op by design. Refusing it here instead would turn every
3023
+ // cold-start sweep into an error the gateway logs as a failure.
3024
+ const recoverAccountLine = () => formatRecoverAccountLine({
3025
+ sessionId,
3026
+ resolved: recoverResolution?.outcome === 'refused-no-sidecar' ? null : effectiveAccountId,
3027
+ source: recoverResolution ? 'sidecar' : requestedAccountId !== undefined ? 'body' : 'default',
3028
+ outcome: recoverResolution?.outcome === 'refused-no-sidecar' ? 'refused-no-sidecar' : 'ok',
3029
+ candidates: recoverResolution?.candidates ?? 0,
3030
+ });
2999
3031
  // Task 1315 — the per-request resolved account's directory. Every
3000
3032
  // filesystem lookup and the PTY launch itself must key off this, not
3001
3033
  // the boot-time spawn cwd fixed to the house account for the manager's
@@ -3075,6 +3107,16 @@ export function buildHttpApp(deps) {
3075
3107
  timed(deps.logger, 'POST', '/rc-spawn', 200, Date.now() - start);
3076
3108
  return c.json({ live: false, sessionId, recovered: false }, 200);
3077
3109
  }
3110
+ // Task 2728 — the recovery is real from here: a live child this manager
3111
+ // owns. Name the account it resolved to before anything acts on it.
3112
+ deps.logger(recoverAccountLine());
3113
+ // No account holds a record of this session, so there is nothing to
3114
+ // recover under any account and the house account is never the right
3115
+ // answer. Refuse before the classifier can kill the child.
3116
+ if (recoverResolution?.outcome === 'refused-no-sidecar') {
3117
+ timed(deps.logger, 'POST', '/rc-spawn', 400, Date.now() - start);
3118
+ return c.json({ error: 'recover: no sidecar record for this sessionId' }, 400);
3119
+ }
3078
3120
  const liveRow = deps.watcher.getBySessionId(sessionId);
3079
3121
  const jp = jsonlPathForSessionId(effectiveAccountDir, sessionId);
3080
3122
  let jsonlMtimeMs = null;
@@ -3974,7 +4016,11 @@ export function buildHttpApp(deps) {
3974
4016
  // grep on one sessionId shows where the spawn landed. requested==resolved
3975
4017
  // (or default=true when none requested) is success; the reject path above
3976
4018
  // logs op=account-reject and never reaches here.
3977
- deps.logger(`[spawn] op=account-resolved sessionId=${sessionId ? sessionId.slice(0, 8) : 'new'} requested=${requestedAccountId ?? ''} resolved=${effectiveAccountId} dir=${env.ACCOUNT_DIR} default=${requestedAccountId === undefined}`);
4019
+ // Task 2728 `default` means the boot-account fallback was APPLIED, which is
4020
+ // no longer the same as "the body named no account": a recover that named
4021
+ // none is resolved from its sidecar instead. Reporting that spawn as
4022
+ // default=true would say the house account was used when it was not.
4023
+ deps.logger(`[spawn] op=account-resolved sessionId=${sessionId ? sessionId.slice(0, 8) : 'new'} requested=${requestedAccountId ?? ''} resolved=${effectiveAccountId} dir=${env.ACCOUNT_DIR} default=${requestedAccountId === undefined && recoverResolution === null}`);
3978
4024
  // Task 606 — standing startup signal: confirms per-spawn whether the
3979
4025
  // child env carries a session id. `mode=new` when none was requested
3980
4026
  // (CLI fresh-spawn), else the resolved fresh/resume.
@@ -4582,6 +4628,43 @@ export function buildHttpApp(deps) {
4582
4628
  // `pid-bind-timeout` sent every reader to the wrong mechanism. Nor does
4583
4629
  // `spawn-not-ready` claim an exit — a blocked-but-alive child never exits.
4584
4630
  const reason = outcome === 'bound' ? null : outcome === 'unbound' ? 'bridge-unregistered' : 'spawn-not-ready';
4631
+ // Task 2729 — the status the caller branches on. Until this task every
4632
+ // spawn answered 200, so no caller could separate a working spawn from one
4633
+ // whose child never bound: the 2026-08-15 laptop spawn halted on the
4634
+ // folder-trust dialog, answered 200, and the admin shell then polled
4635
+ // /<id>/meta for a session that did not exist.
4636
+ //
4637
+ // Three conditions, all of them required, because each rules out a
4638
+ // different way the spawn could in fact have worked:
4639
+ // bridgeSessionId === null — no slug on either bind signal.
4640
+ // !pidFileSeen — `waitForPid` did not resolve.
4641
+ // servingRow === undefined — and the watcher has no row for this pid
4642
+ // from ANY source, pid file or jsonl.
4643
+ //
4644
+ // The third is not implied by the second. `pidFileSeen` is decided by
4645
+ // `deps.pidFileTimeoutMs`, a SHORTER bound than the bind wait (device
4646
+ // evidence 2026-08-15: `op=wait-pid-failed … ms=30000` inside a 60 s
4647
+ // wait), so it can be a stale `false` by the time the verdict is taken.
4648
+ // A child that registered in that gap is the Task 1716 shape — live,
4649
+ // serving, simply not navigable — and must keep its 200. Reading only the
4650
+ // first two conditions would answer a hard failure for a healthy session,
4651
+ // which is the 1716 false verdict with the sign flipped.
4652
+ //
4653
+ // A child that DID write a pid file and then died stays 200 as well: it
4654
+ // became a registered session and then ended, which is a different event
4655
+ // from a spawn that produced nothing at all.
4656
+ //
4657
+ // `getByPid` resolves through `sessionIdByPid`, which a pid-file delete
4658
+ // unindexes. A pid file that outlived its process AND whose pid the OS then
4659
+ // recycled onto this child would read as a serving row that is not ours.
4660
+ // That miss fails toward the pre-2729 answer — it can suppress a 503, never
4661
+ // manufacture one — so it costs a missed report, not a false failure.
4662
+ const servingRow = deps.watcher.getByPid(pty.pid);
4663
+ const bindFailed = bridgeSessionId === null && !pidFileSeen && servingRow === undefined;
4664
+ const status = bindFailed ? 503 : 200;
4665
+ // Classified once, so the three places that report it — op=bind-signal-absent,
4666
+ // op=bind-outcome, and the response body — can never disagree.
4667
+ const blocker = bridgeSessionId ? 'none' : classifyBindBlocker(bindBuf);
4585
4668
  // Task 1406 — derive the child's first-turn auth verdict. A bound child
4586
4669
  // authenticated; an unbound child that printed `Not logged in` is the
4587
4670
  // file-healthy-but-child-unauthenticated signature this task closes. Emitted
@@ -4609,10 +4692,25 @@ export function buildHttpApp(deps) {
4609
4692
  // stdout tail; in a failed bind no slug was found so it was never released
4610
4693
  // and carries the (sub-8 KB) blocking screen — e.g. the CC >= 2.1.167
4611
4694
  // "Settings Warning" the redundant allow:["*"] used to trigger.
4612
- deps.logger(`[rc-spawn] op=bind-signal-absent unitToken=${unitToken} pid=${pty.pid} expected=stdout-url cliVersion=${detectCliVersion(deps.claudeBin)} stdoutBytes=${stdoutBytes} pidFileSeen=${pidFileSeen} blocker=${classifyBindBlocker(bindBuf)}`);
4695
+ deps.logger(`[rc-spawn] op=bind-signal-absent unitToken=${unitToken} pid=${pty.pid} expected=stdout-url cliVersion=${detectCliVersion(deps.claudeBin)} stdoutBytes=${stdoutBytes} pidFileSeen=${pidFileSeen} blocker=${blocker}`);
4613
4696
  deps.logger(`[rc-spawn] op=resume-timeout sessionId=${sessionId ?? 'none'} waitedMs=${RC_SPAWN_URL_WAIT_MS} slug=none`);
4614
4697
  }
4615
4698
  deps.logger(`[rc-spawn] op=resume-response sessionId=${sessionId ?? 'none'} slug=${bridgeSessionId ?? 'none'} outcome=${outcome} reason=${reason ?? 'none'}`);
4699
+ // Task 2729 — the verdict and the answer on ONE line. Both halves were
4700
+ // already logged before this task, on two lines nothing reconciled: an
4701
+ // `op=bind-signal-absent` and, on the same millisecond, an `outcome=200`.
4702
+ // Reading them apart is what let a failed spawn look like a working one.
4703
+ //
4704
+ // `serving=` is the field this line adds beyond the two the task named. It
4705
+ // is the third condition, and without it the rule is not checkable from one
4706
+ // line: `bound=false pidFileSeen=false status=200` is a healthy Task 1716
4707
+ // session, not a defect, and only `serving=true` says which it was.
4708
+ //
4709
+ // Standing signal: a non-2xx `status` appears exactly when all three of
4710
+ // `bound=false pidFileSeen=false serving=false` hold. Any other pairing —
4711
+ // a 2xx on all three false, or a non-2xx with any of them true — is this
4712
+ // defect, or its inverse, recurring.
4713
+ deps.logger(`[rc-spawn] op=bind-outcome unitToken=${unitToken} bound=${bridgeSessionId !== null} pidFileSeen=${pidFileSeen} serving=${servingRow !== undefined} status=${status} blocker=${blocker}`);
4616
4714
  // Every rc-spawn child runs inside a `systemd-run --user --scope`
4617
4715
  // unit driven by node-pty; the operator-visible spawnMethod marker
4618
4716
  // is kept stable so server.log greps survive the Task 573 cleanup.
@@ -4653,7 +4751,30 @@ export function buildHttpApp(deps) {
4653
4751
  writeReseatMarker(sessionsDir, forkFromSessionId, sessionId, Date.now(), deps.logger);
4654
4752
  deps.logger(`[webchat:reseat] op=reseat-retire from=${forkFromSessionId} fork=${sessionId} outcome=marked`);
4655
4753
  }
4656
- timed(deps.logger, 'POST', '/rc-spawn', 200, Date.now() - start);
4754
+ timed(deps.logger, 'POST', '/rc-spawn', status, Date.now() - start);
4755
+ // Task 2729 — the spawn produced nothing a caller can use. `503` with
4756
+ // `{error:'spawn-failed', reason}` is the shape this door already returns
4757
+ // for its pre-spawn refusals, and both clients (`managerRcSpawn`,
4758
+ // `managerRcRecover`) already branch on a non-2xx, as does the admin proxy
4759
+ // (`session-rc-spawn.ts`, which forwards the status and this body).
4760
+ //
4761
+ // The body carries the bind outcome alongside the status, and keeps every
4762
+ // field a 200 carried, so a caller reading the failure still knows which
4763
+ // child and which session it was, and `blocker` names the screen that
4764
+ // stopped it. `bridgeSessionId` and `slug` are null here by construction.
4765
+ if (bindFailed) {
4766
+ return c.json({
4767
+ error: 'spawn-failed',
4768
+ reason,
4769
+ outcome,
4770
+ blocker,
4771
+ spawnedPid: pty.pid,
4772
+ sessionId: sessionId ?? null,
4773
+ bridgeSessionId,
4774
+ slug: bridgeSessionId,
4775
+ ...(recoverOutcome ? { live: true, classification: recoverOutcome.classification, recovered: false } : {}),
4776
+ }, 503);
4777
+ }
4657
4778
  // `slug` is the Task 648 canonical field the client navigates by;
4658
4779
  // `bridgeSessionId` is the same value, retained so pre-648 consumers and
4659
4780
  // tests keep resolving. They never diverge — `slug` IS `bridgeSessionId`.