@code-yeongyu/senpi 2026.9.3 → 2026.9.4-3

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 (1151) hide show
  1. package/CHANGELOG.md +164 -0
  2. package/README.md +5 -4
  3. package/dist/cli/startup-ui.d.ts.map +1 -1
  4. package/dist/cli/startup-ui.js +2 -1
  5. package/dist/cli/startup-ui.js.map +1 -1
  6. package/dist/core/agent-session-runtime.js +2 -2
  7. package/dist/core/agent-session-runtime.js.map +1 -1
  8. package/dist/core/agent-session.d.ts +2 -5
  9. package/dist/core/agent-session.d.ts.map +1 -1
  10. package/dist/core/agent-session.js +56 -30
  11. package/dist/core/agent-session.js.map +1 -1
  12. package/dist/core/auth-storage.d.ts.map +1 -1
  13. package/dist/core/auth-storage.js +31 -41
  14. package/dist/core/auth-storage.js.map +1 -1
  15. package/dist/core/compaction/compaction.d.ts.map +1 -1
  16. package/dist/core/compaction/compaction.js +16 -7
  17. package/dist/core/compaction/compaction.js.map +1 -1
  18. package/dist/core/credential-pool/state-store.d.ts +1 -0
  19. package/dist/core/credential-pool/state-store.d.ts.map +1 -1
  20. package/dist/core/credential-pool/state-store.js +22 -2
  21. package/dist/core/credential-pool/state-store.js.map +1 -1
  22. package/dist/core/dynamic-prompt/style.js +1 -1
  23. package/dist/core/dynamic-prompt/style.js.map +1 -1
  24. package/dist/core/dynamic-prompt/working-task.js +1 -1
  25. package/dist/core/dynamic-prompt/working-task.js.map +1 -1
  26. package/dist/core/extensions/builtin/bash-timeout/index.d.ts +1 -1
  27. package/dist/core/extensions/builtin/bash-timeout/index.d.ts.map +1 -1
  28. package/dist/core/extensions/builtin/bash-timeout/index.js +3 -1
  29. package/dist/core/extensions/builtin/bash-timeout/index.js.map +1 -1
  30. package/dist/core/extensions/builtin/bash-timeout/timeout.d.ts +9 -7
  31. package/dist/core/extensions/builtin/bash-timeout/timeout.d.ts.map +1 -1
  32. package/dist/core/extensions/builtin/bash-timeout/timeout.js +4 -9
  33. package/dist/core/extensions/builtin/bash-timeout/timeout.js.map +1 -1
  34. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.d.ts.map +1 -1
  35. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.js +15 -18
  36. package/dist/core/extensions/builtin/claude-sdk-oauth/auth-lane.js.map +1 -1
  37. package/dist/core/extensions/builtin/claude-sdk-oauth/content-blocks.d.ts +3 -0
  38. package/dist/core/extensions/builtin/claude-sdk-oauth/content-blocks.d.ts.map +1 -0
  39. package/dist/core/extensions/builtin/claude-sdk-oauth/content-blocks.js +80 -0
  40. package/dist/core/extensions/builtin/claude-sdk-oauth/content-blocks.js.map +1 -0
  41. package/dist/core/extensions/builtin/claude-sdk-oauth/errors.d.ts +18 -1
  42. package/dist/core/extensions/builtin/claude-sdk-oauth/errors.d.ts.map +1 -1
  43. package/dist/core/extensions/builtin/claude-sdk-oauth/errors.js +57 -1
  44. package/dist/core/extensions/builtin/claude-sdk-oauth/errors.js.map +1 -1
  45. package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.d.ts +1 -0
  46. package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.d.ts.map +1 -1
  47. package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.js +13 -0
  48. package/dist/core/extensions/builtin/claude-sdk-oauth/guidance.js.map +1 -1
  49. package/dist/core/extensions/builtin/claude-sdk-oauth/oauth-login.d.ts.map +1 -1
  50. package/dist/core/extensions/builtin/claude-sdk-oauth/oauth-login.js +6 -1
  51. package/dist/core/extensions/builtin/claude-sdk-oauth/oauth-login.js.map +1 -1
  52. package/dist/core/extensions/builtin/claude-sdk-oauth/prompt-bridge.d.ts.map +1 -1
  53. package/dist/core/extensions/builtin/claude-sdk-oauth/prompt-bridge.js +2 -23
  54. package/dist/core/extensions/builtin/claude-sdk-oauth/prompt-bridge.js.map +1 -1
  55. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.d.ts +2 -2
  56. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.d.ts.map +1 -1
  57. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.js +30 -24
  58. package/dist/core/extensions/builtin/claude-sdk-oauth/session-binding.js.map +1 -1
  59. package/dist/core/extensions/builtin/claude-sdk-oauth/session-continuity.d.ts +2 -0
  60. package/dist/core/extensions/builtin/claude-sdk-oauth/session-continuity.d.ts.map +1 -1
  61. package/dist/core/extensions/builtin/claude-sdk-oauth/session-continuity.js +15 -1
  62. package/dist/core/extensions/builtin/claude-sdk-oauth/session-continuity.js.map +1 -1
  63. package/dist/core/extensions/builtin/claude-sdk-oauth/session-observability.d.ts +1 -1
  64. package/dist/core/extensions/builtin/claude-sdk-oauth/session-observability.d.ts.map +1 -1
  65. package/dist/core/extensions/builtin/claude-sdk-oauth/session-observability.js +1 -0
  66. package/dist/core/extensions/builtin/claude-sdk-oauth/session-observability.js.map +1 -1
  67. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reattach.d.ts +6 -1
  68. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reattach.d.ts.map +1 -1
  69. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reattach.js +1 -0
  70. package/dist/core/extensions/builtin/claude-sdk-oauth/session-reattach.js.map +1 -1
  71. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.d.ts.map +1 -1
  72. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.js +19 -3
  73. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-pump.js.map +1 -1
  74. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.d.ts.map +1 -1
  75. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.js +31 -13
  76. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry-wiring.js.map +1 -1
  77. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.d.ts +1 -0
  78. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.d.ts.map +1 -1
  79. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.js +1 -0
  80. package/dist/core/extensions/builtin/claude-sdk-oauth/session-registry.js.map +1 -1
  81. package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.d.ts.map +1 -1
  82. package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js +8 -14
  83. package/dist/core/extensions/builtin/claude-sdk-oauth/session-sync.js.map +1 -1
  84. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-attempt.d.ts.map +1 -1
  85. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-attempt.js +23 -6
  86. package/dist/core/extensions/builtin/claude-sdk-oauth/session-turn-attempt.js.map +1 -1
  87. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.d.ts.map +1 -1
  88. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.js +4 -2
  89. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-guidance.js.map +1 -1
  90. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-protocol.d.ts +1 -1
  91. package/dist/core/extensions/builtin/claude-sdk-oauth/stream-protocol.d.ts.map +1 -1
  92. package/dist/core/extensions/builtin/claude-sdk-oauth/stream.d.ts.map +1 -1
  93. package/dist/core/extensions/builtin/claude-sdk-oauth/stream.js +13 -6
  94. package/dist/core/extensions/builtin/claude-sdk-oauth/stream.js.map +1 -1
  95. package/dist/core/extensions/builtin/claude-sdk-oauth/tools.d.ts +11 -3
  96. package/dist/core/extensions/builtin/claude-sdk-oauth/tools.d.ts.map +1 -1
  97. package/dist/core/extensions/builtin/claude-sdk-oauth/tools.js +12 -3
  98. package/dist/core/extensions/builtin/claude-sdk-oauth/tools.js.map +1 -1
  99. package/dist/core/extensions/builtin/eval-only-routing.d.ts +10 -0
  100. package/dist/core/extensions/builtin/eval-only-routing.d.ts.map +1 -0
  101. package/dist/core/extensions/builtin/eval-only-routing.js +16 -0
  102. package/dist/core/extensions/builtin/eval-only-routing.js.map +1 -0
  103. package/dist/core/extensions/builtin/goal/prompt.d.ts.map +1 -1
  104. package/dist/core/extensions/builtin/goal/prompt.js +1 -3
  105. package/dist/core/extensions/builtin/goal/prompt.js.map +1 -1
  106. package/dist/core/extensions/builtin/goal/store.d.ts.map +1 -1
  107. package/dist/core/extensions/builtin/goal/store.js +8 -20
  108. package/dist/core/extensions/builtin/goal/store.js.map +1 -1
  109. package/dist/core/extensions/builtin/goal/tool-registration.js +1 -1
  110. package/dist/core/extensions/builtin/goal/tool-registration.js.map +1 -1
  111. package/dist/core/extensions/builtin/gpt-account.d.ts +3 -0
  112. package/dist/core/extensions/builtin/gpt-account.d.ts.map +1 -0
  113. package/dist/core/extensions/builtin/gpt-account.js +115 -0
  114. package/dist/core/extensions/builtin/gpt-account.js.map +1 -0
  115. package/dist/core/extensions/builtin/hooks/trust-storage.d.ts.map +1 -1
  116. package/dist/core/extensions/builtin/hooks/trust-storage.js +3 -1
  117. package/dist/core/extensions/builtin/hooks/trust-storage.js.map +1 -1
  118. package/dist/core/extensions/builtin/imagegen/auth.d.ts.map +1 -1
  119. package/dist/core/extensions/builtin/imagegen/auth.js +10 -2
  120. package/dist/core/extensions/builtin/imagegen/auth.js.map +1 -1
  121. package/dist/core/extensions/builtin/index.d.ts.map +1 -1
  122. package/dist/core/extensions/builtin/index.js +2 -0
  123. package/dist/core/extensions/builtin/index.js.map +1 -1
  124. package/dist/core/extensions/builtin/loop/index.d.ts.map +1 -1
  125. package/dist/core/extensions/builtin/loop/index.js +20 -1
  126. package/dist/core/extensions/builtin/loop/index.js.map +1 -1
  127. package/dist/core/extensions/builtin/loop/store.d.ts +8 -6
  128. package/dist/core/extensions/builtin/loop/store.d.ts.map +1 -1
  129. package/dist/core/extensions/builtin/loop/store.js +54 -88
  130. package/dist/core/extensions/builtin/loop/store.js.map +1 -1
  131. package/dist/core/extensions/builtin/loop/tools.d.ts +6 -1
  132. package/dist/core/extensions/builtin/loop/tools.d.ts.map +1 -1
  133. package/dist/core/extensions/builtin/loop/tools.js +8 -1
  134. package/dist/core/extensions/builtin/loop/tools.js.map +1 -1
  135. package/dist/core/extensions/builtin/monitor-state-event.d.ts +2 -0
  136. package/dist/core/extensions/builtin/monitor-state-event.d.ts.map +1 -1
  137. package/dist/core/extensions/builtin/monitor-state-event.js.map +1 -1
  138. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-5.d.ts.map +1 -1
  139. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-5.js +1 -3
  140. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-5.js.map +1 -1
  141. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-6.d.ts.map +1 -1
  142. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-6.js +1 -11
  143. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-6.js.map +1 -1
  144. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-7.js +2 -2
  145. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-7.js.map +1 -1
  146. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-8.js +3 -3
  147. package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-8.js.map +1 -1
  148. package/dist/core/extensions/builtin/prompt-preset/claude-opus-5.d.ts.map +1 -1
  149. package/dist/core/extensions/builtin/prompt-preset/claude-opus-5.js +56 -43
  150. package/dist/core/extensions/builtin/prompt-preset/claude-opus-5.js.map +1 -1
  151. package/dist/core/extensions/builtin/prompt-preset/execution-tooling.d.ts +4 -15
  152. package/dist/core/extensions/builtin/prompt-preset/execution-tooling.d.ts.map +1 -1
  153. package/dist/core/extensions/builtin/prompt-preset/execution-tooling.js +12 -21
  154. package/dist/core/extensions/builtin/prompt-preset/execution-tooling.js.map +1 -1
  155. package/dist/core/extensions/builtin/prompt-preset/glm-5-2.d.ts +1 -1
  156. package/dist/core/extensions/builtin/prompt-preset/glm-5-2.d.ts.map +1 -1
  157. package/dist/core/extensions/builtin/prompt-preset/glm-5-2.js +2 -11
  158. package/dist/core/extensions/builtin/prompt-preset/glm-5-2.js.map +1 -1
  159. package/dist/core/extensions/builtin/prompt-preset/glm-5-3.d.ts +1 -1
  160. package/dist/core/extensions/builtin/prompt-preset/glm-5-3.d.ts.map +1 -1
  161. package/dist/core/extensions/builtin/prompt-preset/glm-5-3.js +2 -11
  162. package/dist/core/extensions/builtin/prompt-preset/glm-5-3.js.map +1 -1
  163. package/dist/core/extensions/builtin/prompt-preset/glm-5.d.ts +4 -0
  164. package/dist/core/extensions/builtin/prompt-preset/glm-5.d.ts.map +1 -0
  165. package/dist/core/extensions/builtin/prompt-preset/glm-5.js +16 -0
  166. package/dist/core/extensions/builtin/prompt-preset/glm-5.js.map +1 -0
  167. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.d.ts +1 -5
  168. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.d.ts.map +1 -1
  169. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js +1 -6
  170. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js.map +1 -1
  171. package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.d.ts +123 -0
  172. package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.d.ts.map +1 -0
  173. package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.js +202 -0
  174. package/dist/core/extensions/builtin/prompt-preset/gpt-6-astra.js.map +1 -0
  175. package/dist/core/extensions/builtin/prompt-preset/gpt-eval-routing.d.ts.map +1 -1
  176. package/dist/core/extensions/builtin/prompt-preset/gpt-eval-routing.js +1 -2
  177. package/dist/core/extensions/builtin/prompt-preset/gpt-eval-routing.js.map +1 -1
  178. package/dist/core/extensions/builtin/prompt-preset/kimi-k3.d.ts.map +1 -1
  179. package/dist/core/extensions/builtin/prompt-preset/kimi-k3.js +60 -76
  180. package/dist/core/extensions/builtin/prompt-preset/kimi-k3.js.map +1 -1
  181. package/dist/core/extensions/builtin/prompt-preset/presets.d.ts.map +1 -1
  182. package/dist/core/extensions/builtin/prompt-preset/presets.js +17 -0
  183. package/dist/core/extensions/builtin/prompt-preset/presets.js.map +1 -1
  184. package/dist/core/extensions/builtin/prompt-preset/settings.d.ts +1 -1
  185. package/dist/core/extensions/builtin/prompt-preset/settings.d.ts.map +1 -1
  186. package/dist/core/extensions/builtin/prompt-preset/settings.js +1 -0
  187. package/dist/core/extensions/builtin/prompt-preset/settings.js.map +1 -1
  188. package/dist/core/extensions/builtin/terminal/extension.d.ts.map +1 -1
  189. package/dist/core/extensions/builtin/terminal/extension.js +186 -5
  190. package/dist/core/extensions/builtin/terminal/extension.js.map +1 -1
  191. package/dist/core/extensions/builtin/terminal/manager.d.ts +10 -0
  192. package/dist/core/extensions/builtin/terminal/manager.d.ts.map +1 -1
  193. package/dist/core/extensions/builtin/terminal/manager.js +21 -0
  194. package/dist/core/extensions/builtin/terminal/manager.js.map +1 -1
  195. package/dist/core/extensions/builtin/terminal/manifest-lease.d.ts +24 -0
  196. package/dist/core/extensions/builtin/terminal/manifest-lease.d.ts.map +1 -0
  197. package/dist/core/extensions/builtin/terminal/manifest-lease.js +105 -0
  198. package/dist/core/extensions/builtin/terminal/manifest-lease.js.map +1 -0
  199. package/dist/core/extensions/builtin/terminal/monitor-registry.d.ts +13 -2
  200. package/dist/core/extensions/builtin/terminal/monitor-registry.d.ts.map +1 -1
  201. package/dist/core/extensions/builtin/terminal/monitor-registry.js +24 -2
  202. package/dist/core/extensions/builtin/terminal/monitor-registry.js.map +1 -1
  203. package/dist/core/extensions/builtin/terminal/prompt.d.ts +13 -2
  204. package/dist/core/extensions/builtin/terminal/prompt.d.ts.map +1 -1
  205. package/dist/core/extensions/builtin/terminal/prompt.js +18 -7
  206. package/dist/core/extensions/builtin/terminal/prompt.js.map +1 -1
  207. package/dist/core/extensions/builtin/terminal/restore.d.ts +43 -0
  208. package/dist/core/extensions/builtin/terminal/restore.d.ts.map +1 -0
  209. package/dist/core/extensions/builtin/terminal/restore.js +149 -0
  210. package/dist/core/extensions/builtin/terminal/restore.js.map +1 -0
  211. package/dist/core/extensions/builtin/terminal/terminal-manifest.d.ts +110 -0
  212. package/dist/core/extensions/builtin/terminal/terminal-manifest.d.ts.map +1 -0
  213. package/dist/core/extensions/builtin/terminal/terminal-manifest.js +158 -0
  214. package/dist/core/extensions/builtin/terminal/terminal-manifest.js.map +1 -0
  215. package/dist/core/extensions/builtin/terminal/tools/bash-input.d.ts.map +1 -1
  216. package/dist/core/extensions/builtin/terminal/tools/bash-input.js +3 -2
  217. package/dist/core/extensions/builtin/terminal/tools/bash-input.js.map +1 -1
  218. package/dist/core/extensions/builtin/terminal/tools/bash-output.d.ts.map +1 -1
  219. package/dist/core/extensions/builtin/terminal/tools/bash-output.js +5 -4
  220. package/dist/core/extensions/builtin/terminal/tools/bash-output.js.map +1 -1
  221. package/dist/core/extensions/builtin/terminal/tools/bash-resize.d.ts.map +1 -1
  222. package/dist/core/extensions/builtin/terminal/tools/bash-resize.js +3 -2
  223. package/dist/core/extensions/builtin/terminal/tools/bash-resize.js.map +1 -1
  224. package/dist/core/extensions/builtin/terminal/tools/context.d.ts +8 -0
  225. package/dist/core/extensions/builtin/terminal/tools/context.d.ts.map +1 -1
  226. package/dist/core/extensions/builtin/terminal/tools/context.js +10 -0
  227. package/dist/core/extensions/builtin/terminal/tools/context.js.map +1 -1
  228. package/dist/core/extensions/builtin/terminal/tools/kill-bash.d.ts.map +1 -1
  229. package/dist/core/extensions/builtin/terminal/tools/kill-bash.js +5 -4
  230. package/dist/core/extensions/builtin/terminal/tools/kill-bash.js.map +1 -1
  231. package/dist/core/extensions/builtin/terminal/tools/monitor.d.ts +4 -1
  232. package/dist/core/extensions/builtin/terminal/tools/monitor.d.ts.map +1 -1
  233. package/dist/core/extensions/builtin/terminal/tools/monitor.js +58 -14
  234. package/dist/core/extensions/builtin/terminal/tools/monitor.js.map +1 -1
  235. package/dist/core/extensions/builtin/todotools/prompt.d.ts +2 -2
  236. package/dist/core/extensions/builtin/todotools/prompt.d.ts.map +1 -1
  237. package/dist/core/extensions/builtin/todotools/prompt.js +3 -6
  238. package/dist/core/extensions/builtin/todotools/prompt.js.map +1 -1
  239. package/dist/core/extensions/builtin/tool-search/index.d.ts.map +1 -1
  240. package/dist/core/extensions/builtin/tool-search/index.js +1 -1
  241. package/dist/core/extensions/builtin/tool-search/index.js.map +1 -1
  242. package/dist/core/extensions/builtin/tool-search/native-search.d.ts +10 -5
  243. package/dist/core/extensions/builtin/tool-search/native-search.d.ts.map +1 -1
  244. package/dist/core/extensions/builtin/tool-search/native-search.js +12 -7
  245. package/dist/core/extensions/builtin/tool-search/native-search.js.map +1 -1
  246. package/dist/core/extensions/builtin/tool-search/native-support.d.ts +13 -0
  247. package/dist/core/extensions/builtin/tool-search/native-support.d.ts.map +1 -0
  248. package/dist/core/extensions/builtin/tool-search/native-support.js +45 -0
  249. package/dist/core/extensions/builtin/tool-search/native-support.js.map +1 -0
  250. package/dist/core/extensions/builtin/ttsr/detectors/collapse-paragraphs.d.ts +34 -0
  251. package/dist/core/extensions/builtin/ttsr/detectors/collapse-paragraphs.d.ts.map +1 -0
  252. package/dist/core/extensions/builtin/ttsr/detectors/collapse-paragraphs.js +121 -0
  253. package/dist/core/extensions/builtin/ttsr/detectors/collapse-paragraphs.js.map +1 -0
  254. package/dist/core/extensions/builtin/ttsr/detectors/collapse.d.ts +2 -0
  255. package/dist/core/extensions/builtin/ttsr/detectors/collapse.d.ts.map +1 -1
  256. package/dist/core/extensions/builtin/ttsr/detectors/collapse.js +6 -2
  257. package/dist/core/extensions/builtin/ttsr/detectors/collapse.js.map +1 -1
  258. package/dist/core/extensions/index.d.ts +1 -1
  259. package/dist/core/extensions/index.d.ts.map +1 -1
  260. package/dist/core/extensions/index.js.map +1 -1
  261. package/dist/core/extensions/runner.d.ts +5 -0
  262. package/dist/core/extensions/runner.d.ts.map +1 -1
  263. package/dist/core/extensions/runner.js +44 -1
  264. package/dist/core/extensions/runner.js.map +1 -1
  265. package/dist/core/extensions/types.d.ts +26 -3
  266. package/dist/core/extensions/types.d.ts.map +1 -1
  267. package/dist/core/extensions/types.js.map +1 -1
  268. package/dist/core/http-dispatcher.d.ts.map +1 -1
  269. package/dist/core/http-dispatcher.js +2 -0
  270. package/dist/core/http-dispatcher.js.map +1 -1
  271. package/dist/core/lockfile-policy.d.ts +11 -0
  272. package/dist/core/lockfile-policy.d.ts.map +1 -1
  273. package/dist/core/lockfile-policy.js +19 -0
  274. package/dist/core/lockfile-policy.js.map +1 -1
  275. package/dist/core/manual-continue.d.ts +13 -0
  276. package/dist/core/manual-continue.d.ts.map +1 -0
  277. package/dist/core/manual-continue.js +19 -0
  278. package/dist/core/manual-continue.js.map +1 -0
  279. package/dist/core/messages.d.ts.map +1 -1
  280. package/dist/core/messages.js +8 -2
  281. package/dist/core/messages.js.map +1 -1
  282. package/dist/core/model-config.d.ts.map +1 -1
  283. package/dist/core/model-config.js +3 -0
  284. package/dist/core/model-config.js.map +1 -1
  285. package/dist/core/provider-composer.d.ts.map +1 -1
  286. package/dist/core/provider-composer.js +13 -2
  287. package/dist/core/provider-composer.js.map +1 -1
  288. package/dist/core/session-manager.d.ts.map +1 -1
  289. package/dist/core/session-manager.js +28 -4
  290. package/dist/core/session-manager.js.map +1 -1
  291. package/dist/core/session-sidecar-store.d.ts +62 -0
  292. package/dist/core/session-sidecar-store.d.ts.map +1 -0
  293. package/dist/core/session-sidecar-store.js +149 -0
  294. package/dist/core/session-sidecar-store.js.map +1 -0
  295. package/dist/core/settings-manager.d.ts +5 -5
  296. package/dist/core/settings-manager.d.ts.map +1 -1
  297. package/dist/core/settings-manager.js +45 -21
  298. package/dist/core/settings-manager.js.map +1 -1
  299. package/dist/core/skills.d.ts.map +1 -1
  300. package/dist/core/skills.js +19 -2
  301. package/dist/core/skills.js.map +1 -1
  302. package/dist/core/terminal-settings.d.ts +3 -0
  303. package/dist/core/terminal-settings.d.ts.map +1 -1
  304. package/dist/core/terminal-settings.js.map +1 -1
  305. package/dist/core/tools/bash.d.ts.map +1 -1
  306. package/dist/core/tools/bash.js +1 -1
  307. package/dist/core/tools/bash.js.map +1 -1
  308. package/dist/core/tools/edit.d.ts.map +1 -1
  309. package/dist/core/tools/edit.js +2 -2
  310. package/dist/core/tools/edit.js.map +1 -1
  311. package/dist/core/tools/find.d.ts.map +1 -1
  312. package/dist/core/tools/find.js +2 -2
  313. package/dist/core/tools/find.js.map +1 -1
  314. package/dist/core/tools/grep.d.ts.map +1 -1
  315. package/dist/core/tools/grep.js +2 -2
  316. package/dist/core/tools/grep.js.map +1 -1
  317. package/dist/core/tools/ls.d.ts.map +1 -1
  318. package/dist/core/tools/ls.js +2 -2
  319. package/dist/core/tools/ls.js.map +1 -1
  320. package/dist/core/tools/read.d.ts.map +1 -1
  321. package/dist/core/tools/read.js +1 -1
  322. package/dist/core/tools/read.js.map +1 -1
  323. package/dist/core/tools/write.d.ts.map +1 -1
  324. package/dist/core/tools/write.js +3 -3
  325. package/dist/core/tools/write.js.map +1 -1
  326. package/dist/index.d.ts +1 -1
  327. package/dist/index.d.ts.map +1 -1
  328. package/dist/index.js.map +1 -1
  329. package/dist/main.d.ts.map +1 -1
  330. package/dist/main.js +2 -0
  331. package/dist/main.js.map +1 -1
  332. package/dist/modes/app-server/daemon/process.d.ts +33 -3
  333. package/dist/modes/app-server/daemon/process.d.ts.map +1 -1
  334. package/dist/modes/app-server/daemon/process.js +57 -6
  335. package/dist/modes/app-server/daemon/process.js.map +1 -1
  336. package/dist/modes/app-server/daemon.js +9 -1
  337. package/dist/modes/app-server/daemon.js.map +1 -1
  338. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  339. package/dist/modes/interactive/components/scoped-models-selector.js +5 -11
  340. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  341. package/dist/modes/interactive/components/settings-selector.d.ts +2 -0
  342. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  343. package/dist/modes/interactive/components/settings-selector.js +21 -8
  344. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  345. package/dist/modes/interactive/components/thinking-selector.js +2 -2
  346. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  347. package/dist/modes/interactive/components/trust-selector.js +2 -2
  348. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  349. package/dist/modes/interactive/grok/welcome-card.d.ts.map +1 -1
  350. package/dist/modes/interactive/grok/welcome-card.js +5 -2
  351. package/dist/modes/interactive/grok/welcome-card.js.map +1 -1
  352. package/dist/modes/interactive/interactive-mode.d.ts +3 -0
  353. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  354. package/dist/modes/interactive/interactive-mode.js +74 -14
  355. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  356. package/dist/modes/interactive/version-label.d.ts +7 -0
  357. package/dist/modes/interactive/version-label.d.ts.map +1 -0
  358. package/dist/modes/interactive/version-label.js +9 -0
  359. package/dist/modes/interactive/version-label.js.map +1 -0
  360. package/dist/modes/print-mode.d.ts.map +1 -1
  361. package/dist/modes/print-mode.js +9 -0
  362. package/dist/modes/print-mode.js.map +1 -1
  363. package/dist/modes/rpc/connection-handler.d.ts +2 -0
  364. package/dist/modes/rpc/connection-handler.d.ts.map +1 -1
  365. package/dist/modes/rpc/connection-handler.js +71 -12
  366. package/dist/modes/rpc/connection-handler.js.map +1 -1
  367. package/dist/modes/rpc/custom-capability.d.ts +5 -0
  368. package/dist/modes/rpc/custom-capability.d.ts.map +1 -1
  369. package/dist/modes/rpc/custom-capability.js +5 -0
  370. package/dist/modes/rpc/custom-capability.js.map +1 -1
  371. package/dist/modes/rpc/host-ensure.d.ts +2 -0
  372. package/dist/modes/rpc/host-ensure.d.ts.map +1 -1
  373. package/dist/modes/rpc/host-ensure.js +77 -18
  374. package/dist/modes/rpc/host-ensure.js.map +1 -1
  375. package/dist/modes/rpc/login-prompts.d.ts +24 -0
  376. package/dist/modes/rpc/login-prompts.d.ts.map +1 -0
  377. package/dist/modes/rpc/login-prompts.js +44 -0
  378. package/dist/modes/rpc/login-prompts.js.map +1 -0
  379. package/dist/modes/rpc/media-placeholders.d.ts +49 -0
  380. package/dist/modes/rpc/media-placeholders.d.ts.map +1 -0
  381. package/dist/modes/rpc/media-placeholders.js +151 -0
  382. package/dist/modes/rpc/media-placeholders.js.map +1 -0
  383. package/dist/modes/rpc/multi-session-host.js +3 -0
  384. package/dist/modes/rpc/multi-session-host.js.map +1 -1
  385. package/dist/modes/rpc/rpc-client.d.ts +8 -0
  386. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  387. package/dist/modes/rpc/rpc-client.js +11 -0
  388. package/dist/modes/rpc/rpc-client.js.map +1 -1
  389. package/dist/modes/rpc/rpc-types.d.ts +23 -1
  390. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  391. package/dist/modes/rpc/rpc-types.js +1 -0
  392. package/dist/modes/rpc/rpc-types.js.map +1 -1
  393. package/dist/modes/rpc/session-command-router.d.ts.map +1 -1
  394. package/dist/modes/rpc/session-command-router.js +2 -1
  395. package/dist/modes/rpc/session-command-router.js.map +1 -1
  396. package/dist/modes/rpc/session-event-fanout.d.ts +13 -2
  397. package/dist/modes/rpc/session-event-fanout.d.ts.map +1 -1
  398. package/dist/modes/rpc/session-event-fanout.js +36 -12
  399. package/dist/modes/rpc/session-event-fanout.js.map +1 -1
  400. package/dist/modes/rpc/session-event-writer.d.ts +3 -1
  401. package/dist/modes/rpc/session-event-writer.d.ts.map +1 -1
  402. package/dist/modes/rpc/session-event-writer.js +23 -13
  403. package/dist/modes/rpc/session-event-writer.js.map +1 -1
  404. package/dist/modes/rpc/socket-event-fanout.d.ts +8 -1
  405. package/dist/modes/rpc/socket-event-fanout.d.ts.map +1 -1
  406. package/dist/modes/rpc/socket-event-fanout.js +32 -9
  407. package/dist/modes/rpc/socket-event-fanout.js.map +1 -1
  408. package/dist/utils/version-check.d.ts.map +1 -1
  409. package/dist/utils/version-check.js +3 -4
  410. package/dist/utils/version-check.js.map +1 -1
  411. package/docs/compaction.md +2 -0
  412. package/docs/environment-variables.md +5 -0
  413. package/docs/extensions.md +22 -2
  414. package/docs/keybindings.md +1 -1
  415. package/docs/models.md +3 -0
  416. package/docs/quickstart.md +1 -1
  417. package/docs/rpc.md +105 -1
  418. package/docs/settings.md +17 -32
  419. package/docs/terminal-setup.md +27 -0
  420. package/docs/usage.md +5 -3
  421. package/docs/windows.md +1 -1
  422. package/node_modules/@anthropic-ai/claude-agent-sdk/bridge.d.ts +18 -1
  423. package/node_modules/@anthropic-ai/claude-agent-sdk/bridge.mjs +155 -106
  424. package/node_modules/@anthropic-ai/claude-agent-sdk/browser-sdk.js +144 -83
  425. package/node_modules/@anthropic-ai/claude-agent-sdk/manifest.json +21 -32
  426. package/node_modules/@anthropic-ai/claude-agent-sdk/manifest.zst.json +25 -36
  427. package/node_modules/@anthropic-ai/claude-agent-sdk/package.json +2 -2
  428. package/node_modules/@anthropic-ai/claude-agent-sdk/sdk-tools.d.ts +93 -31
  429. package/node_modules/@anthropic-ai/claude-agent-sdk/sdk.d.ts +473 -31
  430. package/node_modules/@anthropic-ai/claude-agent-sdk/sdk.mjs +140 -93
  431. package/node_modules/@anthropic-ai/sdk/CHANGELOG.md +96 -0
  432. package/node_modules/@anthropic-ai/sdk/README.md +1 -1
  433. package/node_modules/@anthropic-ai/sdk/core/credentials.d.mts.map +1 -1
  434. package/node_modules/@anthropic-ai/sdk/core/credentials.d.ts.map +1 -1
  435. package/node_modules/@anthropic-ai/sdk/core/credentials.js +5 -7
  436. package/node_modules/@anthropic-ai/sdk/core/credentials.js.map +1 -1
  437. package/node_modules/@anthropic-ai/sdk/core/credentials.mjs +5 -7
  438. package/node_modules/@anthropic-ai/sdk/core/credentials.mjs.map +1 -1
  439. package/node_modules/@anthropic-ai/sdk/core/middleware.d.mts.map +1 -1
  440. package/node_modules/@anthropic-ai/sdk/core/middleware.d.ts.map +1 -1
  441. package/node_modules/@anthropic-ai/sdk/core/middleware.js +4 -4
  442. package/node_modules/@anthropic-ai/sdk/core/middleware.js.map +1 -1
  443. package/node_modules/@anthropic-ai/sdk/core/middleware.mjs +4 -4
  444. package/node_modules/@anthropic-ai/sdk/core/middleware.mjs.map +1 -1
  445. package/node_modules/@anthropic-ai/sdk/helpers/beta/standard-schema.d.mts +45 -0
  446. package/node_modules/@anthropic-ai/sdk/helpers/beta/standard-schema.d.mts.map +1 -0
  447. package/node_modules/@anthropic-ai/sdk/helpers/beta/standard-schema.d.ts +45 -0
  448. package/node_modules/@anthropic-ai/sdk/helpers/beta/standard-schema.d.ts.map +1 -0
  449. package/node_modules/@anthropic-ai/sdk/helpers/beta/standard-schema.js +58 -0
  450. package/node_modules/@anthropic-ai/sdk/helpers/beta/standard-schema.js.map +1 -0
  451. package/node_modules/@anthropic-ai/sdk/helpers/beta/standard-schema.mjs +54 -0
  452. package/node_modules/@anthropic-ai/sdk/helpers/beta/standard-schema.mjs.map +1 -0
  453. package/node_modules/@anthropic-ai/sdk/internal/detect-platform.js +1 -1
  454. package/node_modules/@anthropic-ai/sdk/internal/detect-platform.js.map +1 -1
  455. package/node_modules/@anthropic-ai/sdk/internal/detect-platform.mjs +1 -1
  456. package/node_modules/@anthropic-ai/sdk/internal/detect-platform.mjs.map +1 -1
  457. package/node_modules/@anthropic-ai/sdk/internal/errors.d.mts.map +1 -1
  458. package/node_modules/@anthropic-ai/sdk/internal/errors.d.ts.map +1 -1
  459. package/node_modules/@anthropic-ai/sdk/internal/errors.js +3 -1
  460. package/node_modules/@anthropic-ai/sdk/internal/errors.js.map +1 -1
  461. package/node_modules/@anthropic-ai/sdk/internal/errors.mjs +3 -1
  462. package/node_modules/@anthropic-ai/sdk/internal/errors.mjs.map +1 -1
  463. package/node_modules/@anthropic-ai/sdk/internal/file-store.d.mts.map +1 -1
  464. package/node_modules/@anthropic-ai/sdk/internal/file-store.d.ts.map +1 -1
  465. package/node_modules/@anthropic-ai/sdk/internal/file-store.js +23 -25
  466. package/node_modules/@anthropic-ai/sdk/internal/file-store.js.map +1 -1
  467. package/node_modules/@anthropic-ai/sdk/internal/file-store.mjs +5 -6
  468. package/node_modules/@anthropic-ai/sdk/internal/file-store.mjs.map +1 -1
  469. package/node_modules/@anthropic-ai/sdk/internal/node.browser.d.mts +9 -0
  470. package/node_modules/@anthropic-ai/sdk/internal/node.browser.d.mts.map +1 -0
  471. package/node_modules/@anthropic-ai/sdk/internal/node.browser.d.ts +9 -0
  472. package/node_modules/@anthropic-ai/sdk/internal/node.browser.d.ts.map +1 -0
  473. package/node_modules/@anthropic-ai/sdk/internal/node.browser.js +22 -0
  474. package/node_modules/@anthropic-ai/sdk/internal/node.browser.js.map +1 -0
  475. package/node_modules/@anthropic-ai/sdk/internal/node.browser.mjs +19 -0
  476. package/node_modules/@anthropic-ai/sdk/internal/node.browser.mjs.map +1 -0
  477. package/node_modules/@anthropic-ai/sdk/internal/node.d.mts +14 -0
  478. package/node_modules/@anthropic-ai/sdk/internal/node.d.mts.map +1 -0
  479. package/node_modules/@anthropic-ai/sdk/internal/node.d.ts +14 -0
  480. package/node_modules/@anthropic-ai/sdk/internal/node.d.ts.map +1 -0
  481. package/node_modules/@anthropic-ai/sdk/internal/node.js +24 -0
  482. package/node_modules/@anthropic-ai/sdk/internal/node.js.map +1 -0
  483. package/node_modules/@anthropic-ai/sdk/internal/node.mjs +14 -0
  484. package/node_modules/@anthropic-ai/sdk/internal/node.mjs.map +1 -0
  485. package/node_modules/@anthropic-ai/sdk/internal/parse.js +1 -1
  486. package/node_modules/@anthropic-ai/sdk/internal/parse.js.map +1 -1
  487. package/node_modules/@anthropic-ai/sdk/internal/parse.mjs +1 -1
  488. package/node_modules/@anthropic-ai/sdk/internal/parse.mjs.map +1 -1
  489. package/node_modules/@anthropic-ai/sdk/internal/uploads.js +10 -6
  490. package/node_modules/@anthropic-ai/sdk/internal/uploads.js.map +1 -1
  491. package/node_modules/@anthropic-ai/sdk/internal/uploads.mjs +10 -6
  492. package/node_modules/@anthropic-ai/sdk/internal/uploads.mjs.map +1 -1
  493. package/node_modules/@anthropic-ai/sdk/internal/utils/values.d.mts +6 -0
  494. package/node_modules/@anthropic-ai/sdk/internal/utils/values.d.mts.map +1 -1
  495. package/node_modules/@anthropic-ai/sdk/internal/utils/values.d.ts +6 -0
  496. package/node_modules/@anthropic-ai/sdk/internal/utils/values.d.ts.map +1 -1
  497. package/node_modules/@anthropic-ai/sdk/internal/utils/values.js +7 -0
  498. package/node_modules/@anthropic-ai/sdk/internal/utils/values.js.map +1 -1
  499. package/node_modules/@anthropic-ai/sdk/internal/utils/values.mjs +6 -0
  500. package/node_modules/@anthropic-ai/sdk/internal/utils/values.mjs.map +1 -1
  501. package/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.d.mts.map +1 -1
  502. package/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.d.ts.map +1 -1
  503. package/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.js +6 -4
  504. package/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.js.map +1 -1
  505. package/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.mjs +4 -2
  506. package/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.mjs.map +1 -1
  507. package/node_modules/@anthropic-ai/sdk/lib/MessageStream.d.mts.map +1 -1
  508. package/node_modules/@anthropic-ai/sdk/lib/MessageStream.d.ts.map +1 -1
  509. package/node_modules/@anthropic-ai/sdk/lib/MessageStream.js +3 -4
  510. package/node_modules/@anthropic-ai/sdk/lib/MessageStream.js.map +1 -1
  511. package/node_modules/@anthropic-ai/sdk/lib/MessageStream.mjs +1 -2
  512. package/node_modules/@anthropic-ai/sdk/lib/MessageStream.mjs.map +1 -1
  513. package/node_modules/@anthropic-ai/sdk/lib/credentials/credential-chain.js +1 -1
  514. package/node_modules/@anthropic-ai/sdk/lib/credentials/credential-chain.js.map +1 -1
  515. package/node_modules/@anthropic-ai/sdk/lib/credentials/credential-chain.mjs +1 -1
  516. package/node_modules/@anthropic-ai/sdk/lib/credentials/credential-chain.mjs.map +1 -1
  517. package/node_modules/@anthropic-ai/sdk/lib/credentials/identity-token.js +1 -1
  518. package/node_modules/@anthropic-ai/sdk/lib/credentials/identity-token.js.map +1 -1
  519. package/node_modules/@anthropic-ai/sdk/lib/credentials/identity-token.mjs +1 -1
  520. package/node_modules/@anthropic-ai/sdk/lib/credentials/identity-token.mjs.map +1 -1
  521. package/node_modules/@anthropic-ai/sdk/lib/credentials/types.d.mts.map +1 -1
  522. package/node_modules/@anthropic-ai/sdk/lib/credentials/types.d.ts.map +1 -1
  523. package/node_modules/@anthropic-ai/sdk/lib/credentials/types.js +2 -3
  524. package/node_modules/@anthropic-ai/sdk/lib/credentials/types.js.map +1 -1
  525. package/node_modules/@anthropic-ai/sdk/lib/credentials/types.mjs +2 -3
  526. package/node_modules/@anthropic-ai/sdk/lib/credentials/types.mjs.map +1 -1
  527. package/node_modules/@anthropic-ai/sdk/lib/credentials/user-oauth.js +1 -1
  528. package/node_modules/@anthropic-ai/sdk/lib/credentials/user-oauth.js.map +1 -1
  529. package/node_modules/@anthropic-ai/sdk/lib/credentials/user-oauth.mjs +1 -1
  530. package/node_modules/@anthropic-ai/sdk/lib/credentials/user-oauth.mjs.map +1 -1
  531. package/node_modules/@anthropic-ai/sdk/lib/middleware.d.mts.map +1 -1
  532. package/node_modules/@anthropic-ai/sdk/lib/middleware.d.ts.map +1 -1
  533. package/node_modules/@anthropic-ai/sdk/lib/middleware.js +30 -7
  534. package/node_modules/@anthropic-ai/sdk/lib/middleware.js.map +1 -1
  535. package/node_modules/@anthropic-ai/sdk/lib/middleware.mjs +30 -7
  536. package/node_modules/@anthropic-ai/sdk/lib/middleware.mjs.map +1 -1
  537. package/node_modules/@anthropic-ai/sdk/lib/sessions/accumulate.d.mts +3 -2
  538. package/node_modules/@anthropic-ai/sdk/lib/sessions/accumulate.d.mts.map +1 -1
  539. package/node_modules/@anthropic-ai/sdk/lib/sessions/accumulate.d.ts +3 -2
  540. package/node_modules/@anthropic-ai/sdk/lib/sessions/accumulate.d.ts.map +1 -1
  541. package/node_modules/@anthropic-ai/sdk/lib/sessions/accumulate.js +3 -46
  542. package/node_modules/@anthropic-ai/sdk/lib/sessions/accumulate.js.map +1 -1
  543. package/node_modules/@anthropic-ai/sdk/lib/sessions/accumulate.mjs +3 -46
  544. package/node_modules/@anthropic-ai/sdk/lib/sessions/accumulate.mjs.map +1 -1
  545. package/node_modules/@anthropic-ai/sdk/lib/standard-schema.d.mts +131 -0
  546. package/node_modules/@anthropic-ai/sdk/lib/standard-schema.d.mts.map +1 -0
  547. package/node_modules/@anthropic-ai/sdk/lib/standard-schema.d.ts +131 -0
  548. package/node_modules/@anthropic-ai/sdk/lib/standard-schema.d.ts.map +1 -0
  549. package/node_modules/@anthropic-ai/sdk/lib/standard-schema.js +45 -0
  550. package/node_modules/@anthropic-ai/sdk/lib/standard-schema.js.map +1 -0
  551. package/node_modules/@anthropic-ai/sdk/lib/standard-schema.mjs +41 -0
  552. package/node_modules/@anthropic-ai/sdk/lib/standard-schema.mjs.map +1 -0
  553. package/node_modules/@anthropic-ai/sdk/lib/tools/BetaToolRunner.d.mts.map +1 -1
  554. package/node_modules/@anthropic-ai/sdk/lib/tools/BetaToolRunner.d.ts.map +1 -1
  555. package/node_modules/@anthropic-ai/sdk/lib/tools/BetaToolRunner.js +35 -6
  556. package/node_modules/@anthropic-ai/sdk/lib/tools/BetaToolRunner.js.map +1 -1
  557. package/node_modules/@anthropic-ai/sdk/lib/tools/BetaToolRunner.mjs +35 -6
  558. package/node_modules/@anthropic-ai/sdk/lib/tools/BetaToolRunner.mjs.map +1 -1
  559. package/node_modules/@anthropic-ai/sdk/package.json +4 -11
  560. package/node_modules/@anthropic-ai/sdk/resources/beta/agents/agents.d.mts +1 -1
  561. package/node_modules/@anthropic-ai/sdk/resources/beta/agents/agents.d.mts.map +1 -1
  562. package/node_modules/@anthropic-ai/sdk/resources/beta/agents/agents.d.ts +1 -1
  563. package/node_modules/@anthropic-ai/sdk/resources/beta/agents/agents.d.ts.map +1 -1
  564. package/node_modules/@anthropic-ai/sdk/resources/beta/agents/agents.js.map +1 -1
  565. package/node_modules/@anthropic-ai/sdk/resources/beta/agents/agents.mjs.map +1 -1
  566. package/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.mts +13 -9
  567. package/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.mts.map +1 -1
  568. package/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.ts +13 -9
  569. package/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.ts.map +1 -1
  570. package/node_modules/@anthropic-ai/sdk/resources/beta/beta.js +4 -0
  571. package/node_modules/@anthropic-ai/sdk/resources/beta/beta.js.map +1 -1
  572. package/node_modules/@anthropic-ai/sdk/resources/beta/beta.mjs +4 -0
  573. package/node_modules/@anthropic-ai/sdk/resources/beta/beta.mjs.map +1 -1
  574. package/node_modules/@anthropic-ai/sdk/resources/beta/deployment-runs.d.mts +6 -6
  575. package/node_modules/@anthropic-ai/sdk/resources/beta/deployment-runs.d.ts +6 -6
  576. package/node_modules/@anthropic-ai/sdk/resources/beta/deployments.d.mts +3 -2
  577. package/node_modules/@anthropic-ai/sdk/resources/beta/deployments.d.mts.map +1 -1
  578. package/node_modules/@anthropic-ai/sdk/resources/beta/deployments.d.ts +3 -2
  579. package/node_modules/@anthropic-ai/sdk/resources/beta/deployments.d.ts.map +1 -1
  580. package/node_modules/@anthropic-ai/sdk/resources/beta/dreams.d.mts +28 -1
  581. package/node_modules/@anthropic-ai/sdk/resources/beta/dreams.d.mts.map +1 -1
  582. package/node_modules/@anthropic-ai/sdk/resources/beta/dreams.d.ts +28 -1
  583. package/node_modules/@anthropic-ai/sdk/resources/beta/dreams.d.ts.map +1 -1
  584. package/node_modules/@anthropic-ai/sdk/resources/beta/environments/environments.d.mts +8 -1
  585. package/node_modules/@anthropic-ai/sdk/resources/beta/environments/environments.d.mts.map +1 -1
  586. package/node_modules/@anthropic-ai/sdk/resources/beta/environments/environments.d.ts +8 -1
  587. package/node_modules/@anthropic-ai/sdk/resources/beta/environments/environments.d.ts.map +1 -1
  588. package/node_modules/@anthropic-ai/sdk/resources/beta/environments/environments.js.map +1 -1
  589. package/node_modules/@anthropic-ai/sdk/resources/beta/environments/environments.mjs.map +1 -1
  590. package/node_modules/@anthropic-ai/sdk/resources/beta/files.d.mts +25 -5
  591. package/node_modules/@anthropic-ai/sdk/resources/beta/files.d.mts.map +1 -1
  592. package/node_modules/@anthropic-ai/sdk/resources/beta/files.d.ts +25 -5
  593. package/node_modules/@anthropic-ai/sdk/resources/beta/files.d.ts.map +1 -1
  594. package/node_modules/@anthropic-ai/sdk/resources/beta/files.js +6 -6
  595. package/node_modules/@anthropic-ai/sdk/resources/beta/files.js.map +1 -1
  596. package/node_modules/@anthropic-ai/sdk/resources/beta/files.mjs +7 -7
  597. package/node_modules/@anthropic-ai/sdk/resources/beta/files.mjs.map +1 -1
  598. package/node_modules/@anthropic-ai/sdk/resources/beta/index.d.mts +5 -4
  599. package/node_modules/@anthropic-ai/sdk/resources/beta/index.d.mts.map +1 -1
  600. package/node_modules/@anthropic-ai/sdk/resources/beta/index.d.ts +5 -4
  601. package/node_modules/@anthropic-ai/sdk/resources/beta/index.d.ts.map +1 -1
  602. package/node_modules/@anthropic-ai/sdk/resources/beta/index.js +11 -9
  603. package/node_modules/@anthropic-ai/sdk/resources/beta/index.js.map +1 -1
  604. package/node_modules/@anthropic-ai/sdk/resources/beta/index.mjs +1 -0
  605. package/node_modules/@anthropic-ai/sdk/resources/beta/index.mjs.map +1 -1
  606. package/node_modules/@anthropic-ai/sdk/resources/beta/memory-stores/memories.d.mts +12 -9
  607. package/node_modules/@anthropic-ai/sdk/resources/beta/memory-stores/memories.d.mts.map +1 -1
  608. package/node_modules/@anthropic-ai/sdk/resources/beta/memory-stores/memories.d.ts +12 -9
  609. package/node_modules/@anthropic-ai/sdk/resources/beta/memory-stores/memories.d.ts.map +1 -1
  610. package/node_modules/@anthropic-ai/sdk/resources/beta/memory-stores/memory-versions.d.mts +8 -5
  611. package/node_modules/@anthropic-ai/sdk/resources/beta/memory-stores/memory-versions.d.mts.map +1 -1
  612. package/node_modules/@anthropic-ai/sdk/resources/beta/memory-stores/memory-versions.d.ts +8 -5
  613. package/node_modules/@anthropic-ai/sdk/resources/beta/memory-stores/memory-versions.d.ts.map +1 -1
  614. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.mts +1 -1
  615. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.mts.map +1 -1
  616. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.ts +1 -1
  617. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.ts.map +1 -1
  618. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.js.map +1 -1
  619. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.mjs.map +1 -1
  620. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.mts +198 -29
  621. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.mts.map +1 -1
  622. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.ts +198 -29
  623. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.ts.map +1 -1
  624. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.js.map +1 -1
  625. package/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.mjs.map +1 -1
  626. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/api-keys.d.mts +177 -0
  627. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/api-keys.d.mts.map +1 -0
  628. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/api-keys.d.ts +177 -0
  629. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/api-keys.d.ts.map +1 -0
  630. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/api-keys.js +56 -0
  631. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/api-keys.js.map +1 -0
  632. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/api-keys.mjs +52 -0
  633. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/api-keys.mjs.map +1 -0
  634. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/compliance-settings.d.mts +74 -0
  635. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/compliance-settings.d.mts.map +1 -0
  636. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/compliance-settings.d.ts +74 -0
  637. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/compliance-settings.d.ts.map +1 -0
  638. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/compliance-settings.js +52 -0
  639. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/compliance-settings.js.map +1 -0
  640. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/compliance-settings.mjs +48 -0
  641. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/compliance-settings.mjs.map +1 -0
  642. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/external-keys.d.mts +272 -0
  643. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/external-keys.d.mts.map +1 -0
  644. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/external-keys.d.ts +272 -0
  645. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/external-keys.d.ts.map +1 -0
  646. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/external-keys.js +119 -0
  647. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/external-keys.js.map +1 -0
  648. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/external-keys.mjs +115 -0
  649. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/external-keys.mjs.map +1 -0
  650. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/federation.d.mts +14 -0
  651. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/federation.d.mts.map +1 -0
  652. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/federation.d.ts +14 -0
  653. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/federation.d.ts.map +1 -0
  654. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/federation.js +21 -0
  655. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/federation.js.map +1 -0
  656. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/federation.mjs +16 -0
  657. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/federation.mjs.map +1 -0
  658. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/index.d.mts +4 -0
  659. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/index.d.mts.map +1 -0
  660. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/index.d.ts +4 -0
  661. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/index.d.ts.map +1 -0
  662. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/index.js +11 -0
  663. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/index.js.map +1 -0
  664. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/index.mjs +5 -0
  665. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/index.mjs.map +1 -0
  666. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/issuers.d.mts +353 -0
  667. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/issuers.d.mts.map +1 -0
  668. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/issuers.d.ts +353 -0
  669. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/issuers.d.ts.map +1 -0
  670. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/issuers.js +169 -0
  671. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/issuers.js.map +1 -0
  672. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/issuers.mjs +165 -0
  673. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/issuers.mjs.map +1 -0
  674. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/index.d.mts +3 -0
  675. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/index.d.mts.map +1 -0
  676. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/index.d.ts +3 -0
  677. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/index.d.ts.map +1 -0
  678. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/index.js +9 -0
  679. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/index.js.map +1 -0
  680. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/index.mjs +4 -0
  681. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/index.mjs.map +1 -0
  682. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/rules.d.mts +468 -0
  683. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/rules.d.mts.map +1 -0
  684. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/rules.d.ts +468 -0
  685. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/rules.d.ts.map +1 -0
  686. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/rules.js +198 -0
  687. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/rules.js.map +1 -0
  688. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/rules.mjs +193 -0
  689. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/rules.mjs.map +1 -0
  690. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/workspaces.d.mts +124 -0
  691. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/workspaces.d.mts.map +1 -0
  692. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/workspaces.d.ts +124 -0
  693. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/workspaces.d.ts.map +1 -0
  694. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/workspaces.js +114 -0
  695. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/workspaces.js.map +1 -0
  696. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/workspaces.mjs +110 -0
  697. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules/workspaces.mjs.map +1 -0
  698. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules.d.mts +2 -0
  699. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules.d.mts.map +1 -0
  700. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules.d.ts +2 -0
  701. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules.d.ts.map +1 -0
  702. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules.js +6 -0
  703. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules.js.map +1 -0
  704. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules.mjs +3 -0
  705. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation/rules.mjs.map +1 -0
  706. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation.d.mts +2 -0
  707. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation.d.mts.map +1 -0
  708. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation.d.ts +2 -0
  709. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation.d.ts.map +1 -0
  710. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation.js +6 -0
  711. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation.js.map +1 -0
  712. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation.mjs +3 -0
  713. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/federation.mjs.map +1 -0
  714. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/index.d.mts +11 -0
  715. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/index.d.mts.map +1 -0
  716. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/index.d.ts +11 -0
  717. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/index.d.ts.map +1 -0
  718. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/index.js +25 -0
  719. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/index.js.map +1 -0
  720. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/index.mjs +12 -0
  721. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/index.mjs.map +1 -0
  722. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/invites.d.mts +162 -0
  723. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/invites.d.mts.map +1 -0
  724. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/invites.d.ts +162 -0
  725. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/invites.d.ts.map +1 -0
  726. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/invites.js +76 -0
  727. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/invites.js.map +1 -0
  728. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/invites.mjs +72 -0
  729. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/invites.mjs.map +1 -0
  730. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/organization.d.mts +73 -0
  731. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/organization.d.mts.map +1 -0
  732. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/organization.d.ts +73 -0
  733. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/organization.d.ts.map +1 -0
  734. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/organization.js +62 -0
  735. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/organization.js.map +1 -0
  736. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/organization.mjs +57 -0
  737. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/organization.mjs.map +1 -0
  738. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/rate-limits.d.mts +77 -0
  739. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/rate-limits.d.mts.map +1 -0
  740. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/rate-limits.d.ts +77 -0
  741. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/rate-limits.d.ts.map +1 -0
  742. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/rate-limits.js +31 -0
  743. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/rate-limits.js.map +1 -0
  744. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/rate-limits.mjs +27 -0
  745. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/rate-limits.mjs.map +1 -0
  746. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/index.d.mts +3 -0
  747. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/index.d.mts.map +1 -0
  748. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/index.d.ts +3 -0
  749. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/index.d.ts.map +1 -0
  750. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/index.js +9 -0
  751. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/index.js.map +1 -0
  752. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/index.mjs +4 -0
  753. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/index.mjs.map +1 -0
  754. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/service-accounts.d.mts +258 -0
  755. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/service-accounts.d.mts.map +1 -0
  756. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/service-accounts.d.ts +258 -0
  757. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/service-accounts.d.ts.map +1 -0
  758. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/service-accounts.js +174 -0
  759. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/service-accounts.js.map +1 -0
  760. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/service-accounts.mjs +169 -0
  761. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/service-accounts.mjs.map +1 -0
  762. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/workspaces.d.mts +141 -0
  763. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/workspaces.d.mts.map +1 -0
  764. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/workspaces.d.ts +141 -0
  765. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/workspaces.d.ts.map +1 -0
  766. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/workspaces.js +125 -0
  767. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/workspaces.js.map +1 -0
  768. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/workspaces.mjs +121 -0
  769. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts/workspaces.mjs.map +1 -0
  770. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts.d.mts +2 -0
  771. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts.d.mts.map +1 -0
  772. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts.d.ts +2 -0
  773. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts.d.ts.map +1 -0
  774. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts.js +6 -0
  775. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts.js.map +1 -0
  776. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts.mjs +3 -0
  777. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/service-accounts.mjs.map +1 -0
  778. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/users.d.mts +124 -0
  779. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/users.d.mts.map +1 -0
  780. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/users.d.ts +124 -0
  781. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/users.d.ts.map +1 -0
  782. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/users.js +67 -0
  783. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/users.js.map +1 -0
  784. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/users.mjs +63 -0
  785. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/users.mjs.map +1 -0
  786. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/index.d.mts +5 -0
  787. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/index.d.mts.map +1 -0
  788. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/index.d.ts +5 -0
  789. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/index.d.ts.map +1 -0
  790. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/index.js +13 -0
  791. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/index.js.map +1 -0
  792. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/index.mjs +6 -0
  793. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/index.mjs.map +1 -0
  794. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/members.d.mts +135 -0
  795. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/members.d.mts.map +1 -0
  796. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/members.d.ts +135 -0
  797. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/members.d.ts.map +1 -0
  798. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/members.js +102 -0
  799. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/members.js.map +1 -0
  800. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/members.mjs +98 -0
  801. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/members.mjs.map +1 -0
  802. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/rate-limits.d.mts +83 -0
  803. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/rate-limits.d.mts.map +1 -0
  804. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/rate-limits.d.ts +83 -0
  805. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/rate-limits.d.ts.map +1 -0
  806. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/rate-limits.js +34 -0
  807. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/rate-limits.js.map +1 -0
  808. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/rate-limits.mjs +30 -0
  809. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/rate-limits.mjs.map +1 -0
  810. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/service-accounts.d.mts +210 -0
  811. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/service-accounts.d.mts.map +1 -0
  812. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/service-accounts.d.ts +210 -0
  813. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/service-accounts.d.ts.map +1 -0
  814. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/service-accounts.js +189 -0
  815. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/service-accounts.js.map +1 -0
  816. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/service-accounts.mjs +185 -0
  817. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/service-accounts.mjs.map +1 -0
  818. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/workspaces.d.mts +303 -0
  819. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/workspaces.d.mts.map +1 -0
  820. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/workspaces.d.ts +303 -0
  821. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/workspaces.d.ts.map +1 -0
  822. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/workspaces.js +112 -0
  823. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/workspaces.js.map +1 -0
  824. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/workspaces.mjs +107 -0
  825. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces/workspaces.mjs.map +1 -0
  826. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces.d.mts +2 -0
  827. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces.d.mts.map +1 -0
  828. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces.d.ts +2 -0
  829. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces.d.ts.map +1 -0
  830. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces.js +6 -0
  831. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces.js.map +1 -0
  832. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces.mjs +3 -0
  833. package/node_modules/@anthropic-ai/sdk/resources/beta/organization/workspaces.mjs.map +1 -0
  834. package/node_modules/@anthropic-ai/sdk/resources/beta/organization.d.mts +2 -0
  835. package/node_modules/@anthropic-ai/sdk/resources/beta/organization.d.mts.map +1 -0
  836. package/node_modules/@anthropic-ai/sdk/resources/beta/organization.d.ts +2 -0
  837. package/node_modules/@anthropic-ai/sdk/resources/beta/organization.d.ts.map +1 -0
  838. package/node_modules/@anthropic-ai/sdk/resources/beta/organization.js +6 -0
  839. package/node_modules/@anthropic-ai/sdk/resources/beta/organization.js.map +1 -0
  840. package/node_modules/@anthropic-ai/sdk/resources/beta/organization.mjs +3 -0
  841. package/node_modules/@anthropic-ai/sdk/resources/beta/organization.mjs.map +1 -0
  842. package/node_modules/@anthropic-ai/sdk/resources/beta/sessions/events.d.mts +1 -1
  843. package/node_modules/@anthropic-ai/sdk/resources/beta/sessions/events.d.ts +1 -1
  844. package/node_modules/@anthropic-ai/sdk/resources/beta/sessions/sessions.d.mts +10 -10
  845. package/node_modules/@anthropic-ai/sdk/resources/beta/sessions/sessions.d.ts +10 -10
  846. package/node_modules/@anthropic-ai/sdk/resources/beta/sessions/threads/threads.d.mts +2 -1
  847. package/node_modules/@anthropic-ai/sdk/resources/beta/sessions/threads/threads.d.mts.map +1 -1
  848. package/node_modules/@anthropic-ai/sdk/resources/beta/sessions/threads/threads.d.ts +2 -1
  849. package/node_modules/@anthropic-ai/sdk/resources/beta/sessions/threads/threads.d.ts.map +1 -1
  850. package/node_modules/@anthropic-ai/sdk/resources/beta/sessions/threads/threads.js.map +1 -1
  851. package/node_modules/@anthropic-ai/sdk/resources/beta/sessions/threads/threads.mjs.map +1 -1
  852. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/index.d.mts +2 -2
  853. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/index.d.mts.map +1 -1
  854. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/index.d.ts +2 -2
  855. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/index.d.ts.map +1 -1
  856. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/index.js.map +1 -1
  857. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/index.mjs.map +1 -1
  858. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/skills.d.mts +48 -120
  859. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/skills.d.mts.map +1 -1
  860. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/skills.d.ts +48 -120
  861. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/skills.d.ts.map +1 -1
  862. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/skills.js +12 -8
  863. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/skills.js.map +1 -1
  864. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/skills.mjs +12 -8
  865. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/skills.mjs.map +1 -1
  866. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/versions.d.mts +35 -138
  867. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/versions.d.mts.map +1 -1
  868. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/versions.d.ts +35 -138
  869. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/versions.d.ts.map +1 -1
  870. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/versions.js +18 -18
  871. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/versions.js.map +1 -1
  872. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/versions.mjs +18 -18
  873. package/node_modules/@anthropic-ai/sdk/resources/beta/skills/versions.mjs.map +1 -1
  874. package/node_modules/@anthropic-ai/sdk/resources/beta/user-profiles.d.mts +21 -25
  875. package/node_modules/@anthropic-ai/sdk/resources/beta/user-profiles.d.mts.map +1 -1
  876. package/node_modules/@anthropic-ai/sdk/resources/beta/user-profiles.d.ts +21 -25
  877. package/node_modules/@anthropic-ai/sdk/resources/beta/user-profiles.d.ts.map +1 -1
  878. package/node_modules/@anthropic-ai/sdk/resources/beta/webhooks.d.mts +16 -17
  879. package/node_modules/@anthropic-ai/sdk/resources/beta/webhooks.d.mts.map +1 -1
  880. package/node_modules/@anthropic-ai/sdk/resources/beta/webhooks.d.ts +16 -17
  881. package/node_modules/@anthropic-ai/sdk/resources/beta/webhooks.d.ts.map +1 -1
  882. package/node_modules/@anthropic-ai/sdk/resources/beta/webhooks.js +21 -8
  883. package/node_modules/@anthropic-ai/sdk/resources/beta/webhooks.js.map +1 -1
  884. package/node_modules/@anthropic-ai/sdk/resources/beta/webhooks.mjs +21 -8
  885. package/node_modules/@anthropic-ai/sdk/resources/beta/webhooks.mjs.map +1 -1
  886. package/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.mts +1 -3
  887. package/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.mts.map +1 -1
  888. package/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.ts +1 -3
  889. package/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.ts.map +1 -1
  890. package/node_modules/@anthropic-ai/sdk/resources/messages/messages.js.map +1 -1
  891. package/node_modules/@anthropic-ai/sdk/resources/messages/messages.mjs.map +1 -1
  892. package/node_modules/@anthropic-ai/sdk/src/core/credentials.ts +5 -7
  893. package/node_modules/@anthropic-ai/sdk/src/core/middleware.ts +4 -3
  894. package/node_modules/@anthropic-ai/sdk/src/helpers/beta/standard-schema.ts +99 -0
  895. package/node_modules/@anthropic-ai/sdk/src/internal/detect-platform.ts +1 -1
  896. package/node_modules/@anthropic-ai/sdk/src/internal/errors.ts +3 -1
  897. package/node_modules/@anthropic-ai/sdk/src/internal/file-store.ts +11 -10
  898. package/node_modules/@anthropic-ai/sdk/src/internal/node.browser.ts +22 -0
  899. package/node_modules/@anthropic-ai/sdk/src/internal/node.ts +14 -0
  900. package/node_modules/@anthropic-ai/sdk/src/internal/parse.ts +1 -1
  901. package/node_modules/@anthropic-ai/sdk/src/internal/uploads.ts +10 -7
  902. package/node_modules/@anthropic-ai/sdk/src/internal/utils/values.ts +7 -0
  903. package/node_modules/@anthropic-ai/sdk/src/lib/BetaMessageStream.ts +5 -3
  904. package/node_modules/@anthropic-ai/sdk/src/lib/MessageStream.ts +1 -3
  905. package/node_modules/@anthropic-ai/sdk/src/lib/credentials/credential-chain.ts +1 -1
  906. package/node_modules/@anthropic-ai/sdk/src/lib/credentials/identity-token.ts +1 -1
  907. package/node_modules/@anthropic-ai/sdk/src/lib/credentials/types.ts +2 -3
  908. package/node_modules/@anthropic-ai/sdk/src/lib/credentials/user-oauth.ts +1 -1
  909. package/node_modules/@anthropic-ai/sdk/src/lib/middleware.ts +33 -9
  910. package/node_modules/@anthropic-ai/sdk/src/lib/sessions/accumulate.ts +7 -49
  911. package/node_modules/@anthropic-ai/sdk/src/lib/standard-schema.ts +209 -0
  912. package/node_modules/@anthropic-ai/sdk/src/lib/tools/BetaToolRunner.ts +38 -6
  913. package/node_modules/@anthropic-ai/sdk/src/resources/beta/agents/agents.ts +1 -0
  914. package/node_modules/@anthropic-ai/sdk/src/resources/beta/beta.ts +45 -15
  915. package/node_modules/@anthropic-ai/sdk/src/resources/beta/deployment-runs.ts +6 -6
  916. package/node_modules/@anthropic-ai/sdk/src/resources/beta/deployments.ts +3 -2
  917. package/node_modules/@anthropic-ai/sdk/src/resources/beta/dreams.ts +42 -0
  918. package/node_modules/@anthropic-ai/sdk/src/resources/beta/environments/environments.ts +8 -1
  919. package/node_modules/@anthropic-ai/sdk/src/resources/beta/files.ts +34 -11
  920. package/node_modules/@anthropic-ai/sdk/src/resources/beta/index.ts +13 -7
  921. package/node_modules/@anthropic-ai/sdk/src/resources/beta/memory-stores/memories.ts +12 -9
  922. package/node_modules/@anthropic-ai/sdk/src/resources/beta/memory-stores/memory-versions.ts +8 -5
  923. package/node_modules/@anthropic-ai/sdk/src/resources/beta/messages/index.ts +5 -1
  924. package/node_modules/@anthropic-ai/sdk/src/resources/beta/messages/messages.ts +221 -38
  925. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/api-keys.ts +231 -0
  926. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/compliance-settings.ts +96 -0
  927. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/external-keys.ts +365 -0
  928. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/federation/federation.ts +71 -0
  929. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/federation/index.ts +31 -0
  930. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/federation/issuers.ts +486 -0
  931. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/federation/rules/index.ts +23 -0
  932. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/federation/rules/rules.ts +624 -0
  933. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/federation/rules/workspaces.ts +196 -0
  934. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/federation/rules.ts +3 -0
  935. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/federation.ts +3 -0
  936. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/index.ts +92 -0
  937. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/invites.ts +207 -0
  938. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/organization.ts +269 -0
  939. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/rate-limits.ts +104 -0
  940. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/service-accounts/index.ts +21 -0
  941. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/service-accounts/service-accounts.ts +389 -0
  942. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/service-accounts/workspaces.ts +217 -0
  943. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/service-accounts.ts +3 -0
  944. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/users.ts +163 -0
  945. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/workspaces/index.ts +43 -0
  946. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/workspaces/members.ts +209 -0
  947. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/workspaces/rate-limits.ts +113 -0
  948. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/workspaces/service-accounts.ts +325 -0
  949. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/workspaces/workspaces.ts +450 -0
  950. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization/workspaces.ts +3 -0
  951. package/node_modules/@anthropic-ai/sdk/src/resources/beta/organization.ts +3 -0
  952. package/node_modules/@anthropic-ai/sdk/src/resources/beta/sessions/events.ts +1 -1
  953. package/node_modules/@anthropic-ai/sdk/src/resources/beta/sessions/sessions.ts +10 -10
  954. package/node_modules/@anthropic-ai/sdk/src/resources/beta/sessions/threads/threads.ts +2 -1
  955. package/node_modules/@anthropic-ai/sdk/src/resources/beta/skills/index.ts +7 -10
  956. package/node_modules/@anthropic-ai/sdk/src/resources/beta/skills/skills.ts +60 -150
  957. package/node_modules/@anthropic-ai/sdk/src/resources/beta/skills/versions.ts +43 -166
  958. package/node_modules/@anthropic-ai/sdk/src/resources/beta/user-profiles.ts +24 -27
  959. package/node_modules/@anthropic-ai/sdk/src/resources/beta/webhooks.ts +25 -29
  960. package/node_modules/@anthropic-ai/sdk/src/resources/messages/messages.ts +2 -8
  961. package/node_modules/@anthropic-ai/sdk/src/tools/agent-toolset/fs-util.ts +6 -5
  962. package/node_modules/@anthropic-ai/sdk/src/tools/agent-toolset/memories.ts +5 -3
  963. package/node_modules/@anthropic-ai/sdk/src/tools/agent-toolset/node.browser.ts +1 -5
  964. package/node_modules/@anthropic-ai/sdk/src/tools/agent-toolset/node.ts +122 -17
  965. package/node_modules/@anthropic-ai/sdk/src/tools/agent-toolset/skills.ts +10 -43
  966. package/node_modules/@anthropic-ai/sdk/src/version.ts +1 -1
  967. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/fs-util.d.mts.map +1 -1
  968. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/fs-util.d.ts.map +1 -1
  969. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/fs-util.js +13 -15
  970. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/fs-util.js.map +1 -1
  971. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/fs-util.mjs +3 -4
  972. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/fs-util.mjs.map +1 -1
  973. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/memories.d.mts.map +1 -1
  974. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/memories.d.ts.map +1 -1
  975. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/memories.js +6 -4
  976. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/memories.js.map +1 -1
  977. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/memories.mjs +5 -3
  978. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/memories.mjs.map +1 -1
  979. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.browser.d.mts +1 -2
  980. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.browser.d.mts.map +1 -1
  981. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.browser.d.ts +1 -2
  982. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.browser.d.ts.map +1 -1
  983. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.browser.js +0 -4
  984. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.browser.js.map +1 -1
  985. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.browser.mjs +0 -3
  986. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.browser.mjs.map +1 -1
  987. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.d.mts +11 -9
  988. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.d.mts.map +1 -1
  989. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.d.ts +11 -9
  990. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.d.ts.map +1 -1
  991. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.js +96 -8
  992. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.js.map +1 -1
  993. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.mjs +96 -7
  994. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/node.mjs.map +1 -1
  995. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/skills.d.mts +0 -8
  996. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/skills.d.mts.map +1 -1
  997. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/skills.d.ts +0 -8
  998. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/skills.d.ts.map +1 -1
  999. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/skills.js +20 -46
  1000. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/skills.js.map +1 -1
  1001. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/skills.mjs +9 -33
  1002. package/node_modules/@anthropic-ai/sdk/tools/agent-toolset/skills.mjs.map +1 -1
  1003. package/node_modules/@anthropic-ai/sdk/version.d.mts +1 -1
  1004. package/node_modules/@anthropic-ai/sdk/version.d.ts +1 -1
  1005. package/node_modules/@anthropic-ai/sdk/version.js +1 -1
  1006. package/node_modules/@anthropic-ai/sdk/version.mjs +1 -1
  1007. package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +71 -0
  1008. package/node_modules/@code-yeongyu/senpi-codemode/README.md +2 -0
  1009. package/node_modules/@code-yeongyu/senpi-codemode/package.json +5 -5
  1010. package/node_modules/@code-yeongyu/senpi-codemode/src/config/settings.ts +29 -0
  1011. package/node_modules/@code-yeongyu/senpi-codemode/src/index.ts +20 -1
  1012. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/worker-runtime.js +6 -0
  1013. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/worker-shell-capture.d.ts +10 -0
  1014. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/worker-shell-capture.js +126 -0
  1015. package/node_modules/@code-yeongyu/senpi-codemode/src/prompt/eval-prompt.ts +34 -92
  1016. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/cell-execution.ts +7 -0
  1017. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-tool-options.ts +8 -0
  1018. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-tool.ts +15 -2
  1019. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/types.ts +10 -5
  1020. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
  1021. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +58 -64
  1022. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
  1023. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts.map +1 -1
  1024. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js +16 -6
  1025. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js.map +1 -1
  1026. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.d.ts +1 -1
  1027. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.d.ts.map +1 -1
  1028. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.js +6 -1
  1029. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.js.map +1 -1
  1030. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/write.js +1 -1
  1031. package/node_modules/@earendil-works/pi-agent-core/dist/harness/tools/write.js.map +1 -1
  1032. package/node_modules/@earendil-works/pi-agent-core/dist/proxy.d.ts +2 -0
  1033. package/node_modules/@earendil-works/pi-agent-core/dist/proxy.d.ts.map +1 -1
  1034. package/node_modules/@earendil-works/pi-agent-core/dist/proxy.js +40 -10
  1035. package/node_modules/@earendil-works/pi-agent-core/dist/proxy.js.map +1 -1
  1036. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +6 -2
  1037. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
  1038. package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
  1039. package/node_modules/@earendil-works/pi-agent-core/package.json +3 -3
  1040. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts +1 -1
  1041. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts.map +1 -1
  1042. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +130 -15
  1043. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js.map +1 -1
  1044. package/node_modules/@earendil-works/pi-ai/dist/api/context-room.d.ts +20 -0
  1045. package/node_modules/@earendil-works/pi-ai/dist/api/context-room.d.ts.map +1 -0
  1046. package/node_modules/@earendil-works/pi-ai/dist/api/context-room.js +40 -0
  1047. package/node_modules/@earendil-works/pi-ai/dist/api/context-room.js.map +1 -0
  1048. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.js +4 -4
  1049. package/node_modules/@earendil-works/pi-ai/dist/api/cursor-agent.js.map +1 -1
  1050. package/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.js +1 -1
  1051. package/node_modules/@earendil-works/pi-ai/dist/api/mistral-conversations.js.map +1 -1
  1052. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.d.ts.map +1 -1
  1053. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +16 -1
  1054. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js.map +1 -1
  1055. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.d.ts.map +1 -1
  1056. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +2 -1
  1057. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
  1058. package/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.d.ts +2 -0
  1059. package/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.d.ts.map +1 -1
  1060. package/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.js +6 -0
  1061. package/node_modules/@earendil-works/pi-ai/dist/api/pi-messages.js.map +1 -1
  1062. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.d.ts +1 -3
  1063. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.d.ts.map +1 -1
  1064. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.js +2 -16
  1065. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.js.map +1 -1
  1066. package/node_modules/@earendil-works/pi-ai/dist/api/warm-prompt-cache.js +1 -1
  1067. package/node_modules/@earendil-works/pi-ai/dist/api/warm-prompt-cache.js.map +1 -1
  1068. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.d.ts +16 -3
  1069. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.d.ts.map +1 -1
  1070. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.js +40 -6
  1071. package/node_modules/@earendil-works/pi-ai/dist/auth/pool/slots.js.map +1 -1
  1072. package/node_modules/@earendil-works/pi-ai/dist/compat/extension-oauth-types.d.ts +8 -0
  1073. package/node_modules/@earendil-works/pi-ai/dist/compat/extension-oauth-types.d.ts.map +1 -1
  1074. package/node_modules/@earendil-works/pi-ai/dist/compat/extension-oauth-types.js.map +1 -1
  1075. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts +1 -0
  1076. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts.map +1 -1
  1077. package/node_modules/@earendil-works/pi-ai/dist/index.js +1 -0
  1078. package/node_modules/@earendil-works/pi-ai/dist/index.js.map +1 -1
  1079. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
  1080. package/node_modules/@earendil-works/pi-ai/dist/models.js +3 -2
  1081. package/node_modules/@earendil-works/pi-ai/dist/models.js.map +1 -1
  1082. package/node_modules/@earendil-works/pi-ai/dist/openai-responses-compat.d.ts +2 -0
  1083. package/node_modules/@earendil-works/pi-ai/dist/openai-responses-compat.d.ts.map +1 -1
  1084. package/node_modules/@earendil-works/pi-ai/dist/openai-responses-compat.js.map +1 -1
  1085. package/node_modules/@earendil-works/pi-ai/dist/providers/data/.manifest.json +1 -1
  1086. package/node_modules/@earendil-works/pi-ai/dist/providers/data/anthropic.json +1 -1
  1087. package/node_modules/@earendil-works/pi-ai/dist/providers/data/azure-openai-responses.json +1 -1
  1088. package/node_modules/@earendil-works/pi-ai/dist/providers/data/baseten.json +1 -1
  1089. package/node_modules/@earendil-works/pi-ai/dist/providers/data/cloudflare-ai-gateway.json +1 -1
  1090. package/node_modules/@earendil-works/pi-ai/dist/providers/data/fireworks.json +1 -1
  1091. package/node_modules/@earendil-works/pi-ai/dist/providers/data/github-copilot.json +1 -1
  1092. package/node_modules/@earendil-works/pi-ai/dist/providers/data/huggingface.json +1 -1
  1093. package/node_modules/@earendil-works/pi-ai/dist/providers/data/nvidia.json +1 -1
  1094. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai-codex.json +1 -1
  1095. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openai.json +1 -1
  1096. package/node_modules/@earendil-works/pi-ai/dist/providers/data/opencode-go.json +1 -1
  1097. package/node_modules/@earendil-works/pi-ai/dist/providers/data/openrouter.json +1 -1
  1098. package/node_modules/@earendil-works/pi-ai/dist/providers/data/vercel-ai-gateway.json +1 -1
  1099. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.d.ts +1 -1
  1100. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.d.ts.map +1 -1
  1101. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.js +8 -1
  1102. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.js.map +1 -1
  1103. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +14 -1
  1104. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  1105. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  1106. package/node_modules/@earendil-works/pi-ai/dist/utils/drop-failed-assistant-turns.d.ts +23 -0
  1107. package/node_modules/@earendil-works/pi-ai/dist/utils/drop-failed-assistant-turns.d.ts.map +1 -0
  1108. package/node_modules/@earendil-works/pi-ai/dist/utils/drop-failed-assistant-turns.js +58 -0
  1109. package/node_modules/@earendil-works/pi-ai/dist/utils/drop-failed-assistant-turns.js.map +1 -0
  1110. package/node_modules/@earendil-works/pi-ai/dist/utils/node-http-proxy.d.ts.map +1 -1
  1111. package/node_modules/@earendil-works/pi-ai/dist/utils/node-http-proxy.js +53 -12
  1112. package/node_modules/@earendil-works/pi-ai/dist/utils/node-http-proxy.js.map +1 -1
  1113. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts.map +1 -1
  1114. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js +2 -0
  1115. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js.map +1 -1
  1116. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.d.ts +4 -2
  1117. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.d.ts.map +1 -1
  1118. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.js +3 -0
  1119. package/node_modules/@earendil-works/pi-ai/dist/utils/prompt-cache-ttl.js.map +1 -1
  1120. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.d.ts.map +1 -1
  1121. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js +3 -0
  1122. package/node_modules/@earendil-works/pi-ai/dist/utils/retry.js.map +1 -1
  1123. package/node_modules/@earendil-works/pi-ai/package.json +3 -3
  1124. package/node_modules/@earendil-works/pi-pty/package.json +1 -1
  1125. package/node_modules/@earendil-works/pi-telemetry/package.json +1 -1
  1126. package/node_modules/@earendil-works/pi-tui/README.md +1 -1
  1127. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts +1 -0
  1128. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts.map +1 -1
  1129. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js +36 -3
  1130. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js.map +1 -1
  1131. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +1 -1
  1132. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
  1133. package/node_modules/@earendil-works/pi-tui/dist/index.js +1 -1
  1134. package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
  1135. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts +2 -0
  1136. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts.map +1 -1
  1137. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +106 -6
  1138. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
  1139. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts +6 -0
  1140. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
  1141. package/node_modules/@earendil-works/pi-tui/dist/terminal.js +17 -4
  1142. package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
  1143. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.d.ts +11 -0
  1144. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.d.ts.map +1 -1
  1145. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.js +57 -15
  1146. package/node_modules/@earendil-works/pi-tui/dist/tui-alt-screen.js.map +1 -1
  1147. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +1 -1
  1148. package/node_modules/@earendil-works/pi-tui/dist/tui.js +22 -7
  1149. package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +1 -1
  1150. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  1151. package/package.json +17 -17
@@ -0,0 +1,105 @@
1
+ import { mkdir, open, readFile, unlink } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ function errorCode(error) {
4
+ if (typeof error === "object" && error !== null && "code" in error && typeof error.code === "string") {
5
+ return error.code;
6
+ }
7
+ return undefined;
8
+ }
9
+ function probeAlive(pid, probe) {
10
+ try {
11
+ if (probe)
12
+ return probe(pid);
13
+ process.kill(pid, 0);
14
+ return true;
15
+ }
16
+ catch (error) {
17
+ const code = errorCode(error);
18
+ if (code === "EPERM")
19
+ return true;
20
+ if (code === "ESRCH")
21
+ return false;
22
+ throw error;
23
+ }
24
+ }
25
+ async function readLease(path) {
26
+ let raw;
27
+ try {
28
+ raw = await readFile(path, "utf8");
29
+ }
30
+ catch (error) {
31
+ if (errorCode(error) === "ENOENT")
32
+ return "missing";
33
+ throw error;
34
+ }
35
+ try {
36
+ const parsed = JSON.parse(raw);
37
+ if (typeof parsed !== "object" || parsed === null)
38
+ return "unparseable";
39
+ const pid = parsed.pid;
40
+ const startedAtMs = parsed.startedAtMs;
41
+ if (typeof pid !== "number" ||
42
+ !Number.isFinite(pid) ||
43
+ typeof startedAtMs !== "number" ||
44
+ !Number.isFinite(startedAtMs)) {
45
+ return "unparseable";
46
+ }
47
+ return { pid, startedAtMs };
48
+ }
49
+ catch {
50
+ return "unparseable";
51
+ }
52
+ }
53
+ async function exclusiveCreate(path, record) {
54
+ const file = await open(path, "wx");
55
+ try {
56
+ await file.writeFile(JSON.stringify(record), "utf8");
57
+ }
58
+ finally {
59
+ await file.close();
60
+ }
61
+ }
62
+ async function unlinkIfPresent(path) {
63
+ try {
64
+ await unlink(path);
65
+ }
66
+ catch (error) {
67
+ if (errorCode(error) !== "ENOENT")
68
+ throw error;
69
+ }
70
+ }
71
+ async function tryAcquire(path, record, isProcessAlive, retry) {
72
+ try {
73
+ await exclusiveCreate(path, record);
74
+ return { acquired: true, path, pid: record.pid };
75
+ }
76
+ catch (error) {
77
+ if (errorCode(error) !== "EEXIST")
78
+ throw error;
79
+ const existing = await readLease(path);
80
+ const reclaimable = existing === "missing" || existing === "unparseable" || !probeAlive(existing.pid, isProcessAlive);
81
+ if (reclaimable && retry) {
82
+ await unlinkIfPresent(path);
83
+ return tryAcquire(path, record, isProcessAlive, false);
84
+ }
85
+ if (existing === "missing" || existing === "unparseable")
86
+ throw error;
87
+ return { acquired: false, holder: existing };
88
+ }
89
+ }
90
+ export async function acquireTerminalLease(options) {
91
+ const pid = options.pid ?? process.pid;
92
+ const startedAtMs = (options.now ?? Date.now)();
93
+ const path = join(options.dir, `${options.encodedSessionId}.lease`);
94
+ await mkdir(options.dir, { recursive: true });
95
+ return tryAcquire(path, { pid, startedAtMs }, options.isProcessAlive, true);
96
+ }
97
+ export async function releaseTerminalLease(handle) {
98
+ const existing = await readLease(handle.path);
99
+ if (existing === "missing" || existing === "unparseable")
100
+ return;
101
+ if (existing.pid !== handle.pid)
102
+ return;
103
+ await unlinkIfPresent(handle.path);
104
+ }
105
+ //# sourceMappingURL=manifest-lease.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-lease.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/terminal/manifest-lease.ts"],"names":[],"mappings":"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","sourcesContent":["import { mkdir, open, readFile, unlink } from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\nexport type AcquireTerminalLeaseOptions = {\n\tdir: string;\n\tencodedSessionId: string;\n\tpid?: number;\n\tnow?: () => number;\n\tisProcessAlive?: (pid: number) => boolean;\n};\n\nexport type AcquireTerminalLeaseResult =\n\t| { acquired: true; path: string; pid: number }\n\t| { acquired: false; holder: { pid: number; startedAtMs: number } };\n\ntype LeaseRecord = { pid: number; startedAtMs: number };\n\nfunction errorCode(error: unknown): string | undefined {\n\tif (typeof error === \"object\" && error !== null && \"code\" in error && typeof error.code === \"string\") {\n\t\treturn error.code;\n\t}\n\treturn undefined;\n}\n\nfunction probeAlive(pid: number, probe?: (pid: number) => boolean): boolean {\n\ttry {\n\t\tif (probe) return probe(pid);\n\t\tprocess.kill(pid, 0);\n\t\treturn true;\n\t} catch (error) {\n\t\tconst code = errorCode(error);\n\t\tif (code === \"EPERM\") return true;\n\t\tif (code === \"ESRCH\") return false;\n\t\tthrow error;\n\t}\n}\n\nasync function readLease(path: string): Promise<LeaseRecord | \"missing\" | \"unparseable\"> {\n\tlet raw: string;\n\ttry {\n\t\traw = await readFile(path, \"utf8\");\n\t} catch (error) {\n\t\tif (errorCode(error) === \"ENOENT\") return \"missing\";\n\t\tthrow error;\n\t}\n\ttry {\n\t\tconst parsed: unknown = JSON.parse(raw);\n\t\tif (typeof parsed !== \"object\" || parsed === null) return \"unparseable\";\n\t\tconst pid = (parsed as { pid?: unknown }).pid;\n\t\tconst startedAtMs = (parsed as { startedAtMs?: unknown }).startedAtMs;\n\t\tif (\n\t\t\ttypeof pid !== \"number\" ||\n\t\t\t!Number.isFinite(pid) ||\n\t\t\ttypeof startedAtMs !== \"number\" ||\n\t\t\t!Number.isFinite(startedAtMs)\n\t\t) {\n\t\t\treturn \"unparseable\";\n\t\t}\n\t\treturn { pid, startedAtMs };\n\t} catch {\n\t\treturn \"unparseable\";\n\t}\n}\n\nasync function exclusiveCreate(path: string, record: LeaseRecord): Promise<void> {\n\tconst file = await open(path, \"wx\");\n\ttry {\n\t\tawait file.writeFile(JSON.stringify(record), \"utf8\");\n\t} finally {\n\t\tawait file.close();\n\t}\n}\n\nasync function unlinkIfPresent(path: string): Promise<void> {\n\ttry {\n\t\tawait unlink(path);\n\t} catch (error) {\n\t\tif (errorCode(error) !== \"ENOENT\") throw error;\n\t}\n}\n\nasync function tryAcquire(\n\tpath: string,\n\trecord: LeaseRecord,\n\tisProcessAlive: ((pid: number) => boolean) | undefined,\n\tretry: boolean,\n): Promise<AcquireTerminalLeaseResult> {\n\ttry {\n\t\tawait exclusiveCreate(path, record);\n\t\treturn { acquired: true, path, pid: record.pid };\n\t} catch (error) {\n\t\tif (errorCode(error) !== \"EEXIST\") throw error;\n\t\tconst existing = await readLease(path);\n\t\tconst reclaimable =\n\t\t\texisting === \"missing\" || existing === \"unparseable\" || !probeAlive(existing.pid, isProcessAlive);\n\t\tif (reclaimable && retry) {\n\t\t\tawait unlinkIfPresent(path);\n\t\t\treturn tryAcquire(path, record, isProcessAlive, false);\n\t\t}\n\t\tif (existing === \"missing\" || existing === \"unparseable\") throw error;\n\t\treturn { acquired: false, holder: existing };\n\t}\n}\n\nexport async function acquireTerminalLease(options: AcquireTerminalLeaseOptions): Promise<AcquireTerminalLeaseResult> {\n\tconst pid = options.pid ?? process.pid;\n\tconst startedAtMs = (options.now ?? Date.now)();\n\tconst path = join(options.dir, `${options.encodedSessionId}.lease`);\n\tawait mkdir(options.dir, { recursive: true });\n\treturn tryAcquire(path, { pid, startedAtMs }, options.isProcessAlive, true);\n}\n\nexport async function releaseTerminalLease(handle: { path: string; pid: number }): Promise<void> {\n\tconst existing = await readLease(handle.path);\n\tif (existing === \"missing\" || existing === \"unparseable\") return;\n\tif (existing.pid !== handle.pid) return;\n\tawait unlinkIfPresent(handle.path);\n}\n"]}
@@ -17,8 +17,12 @@ export interface MonitorResumeResult {
17
17
  readonly id: string;
18
18
  readonly mutedDropped: number;
19
19
  }
20
+ /** Allocate a stable monitor identity: "mon_" + 16 Crockford base-32 chars (80 random bits). */
21
+ export declare function allocateMonitorId(): string;
20
22
  export interface MonitorSnapshotEntry {
21
23
  readonly id: string;
24
+ /** Stable "mon_" identity carried alongside the runtime id; always set on live snapshots. */
25
+ readonly monitorId?: string;
22
26
  readonly description: string;
23
27
  readonly paused: boolean;
24
28
  /** Epoch milliseconds when the watch registered; feeds the footer's live elapsed label. */
@@ -33,6 +37,8 @@ export interface MonitorRegistryOptions {
33
37
  export interface RegisterFileMonitorOptions {
34
38
  readonly description: string;
35
39
  readonly path: string;
40
+ /** Caller-supplied stable identity so a restore can re-bind the same "mon_" id. */
41
+ readonly monitorId?: string;
36
42
  readonly event: "create" | "modify";
37
43
  readonly timeoutMs: number;
38
44
  readonly cwd: string;
@@ -40,6 +46,8 @@ export interface RegisterFileMonitorOptions {
40
46
  }
41
47
  export interface RegisterMonitorOptions {
42
48
  readonly id: string;
49
+ /** Caller-supplied stable identity so a restore can re-bind the same "mon_" id. */
50
+ readonly monitorId?: string;
43
51
  readonly description: string;
44
52
  readonly runtime: TerminalRuntimeSession;
45
53
  readonly filter?: RegExp;
@@ -53,10 +61,13 @@ export declare class MonitorRegistry {
53
61
  #private;
54
62
  constructor(emit: (event: MonitorEvent) => void, options?: MonitorRegistryOptions);
55
63
  snapshot(): readonly MonitorSnapshotEntry[];
56
- registerFile(options: RegisterFileMonitorOptions): Promise<string>;
64
+ registerFile(options: RegisterFileMonitorOptions): Promise<{
65
+ id: string;
66
+ monitorId: string;
67
+ }>;
57
68
  stopFile(id: string): Promise<boolean>;
58
69
  stopAllFiles(): Promise<number>;
59
- register(options: RegisterMonitorOptions): void;
70
+ register(options: RegisterMonitorOptions): string;
60
71
  pause(ids: readonly string[]): string[];
61
72
  pauseAll(): string[];
62
73
  resume(ids?: readonly string[]): MonitorResumeResult[];
@@ -1 +1 @@
1
- {"version":3,"file":"monitor-registry.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/terminal/monitor-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"monitor-registry.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/terminal/monitor-registry.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,24 @@
1
- import { createHash } from "node:crypto";
1
+ import { createHash, randomBytes } from "node:crypto";
2
2
  import { watch } from "node:fs";
3
3
  import { access, lstat, open, realpath, stat } from "node:fs/promises";
4
4
  import { basename, dirname, join, resolve } from "node:path";
5
5
  import { describeExit } from "./tools/spawn.js";
6
+ const MONITOR_ID_ALPHABET = "0123456789ABCDEFGHJKMNPQRSTVWXYZ";
7
+ /** Allocate a stable monitor identity: "mon_" + 16 Crockford base-32 chars (80 random bits). */
8
+ export function allocateMonitorId() {
9
+ let id = "mon_";
10
+ let buffer = 0;
11
+ let bits = 0;
12
+ for (const byte of randomBytes(10)) {
13
+ buffer = (buffer << 8) | byte;
14
+ bits += 8;
15
+ while (bits >= 5) {
16
+ bits -= 5;
17
+ id += MONITOR_ID_ALPHABET[(buffer >> bits) & 31];
18
+ }
19
+ }
20
+ return id;
21
+ }
6
22
  /**
7
23
  * Tracks active monitor sessions alongside the terminal manager's existing bash-id registry.
8
24
  * Output is deliberately retained only by TerminalRuntimeSession's bounded history; this
@@ -27,6 +43,7 @@ export class MonitorRegistry {
27
43
  snapshot() {
28
44
  return [...this.#records.values(), ...this.#files.values()].map((record) => ({
29
45
  id: record.id,
46
+ monitorId: record.monitorId,
30
47
  description: record.description,
31
48
  paused: record.paused,
32
49
  startedAtMs: record.startedAtMs,
@@ -181,6 +198,8 @@ export class MonitorRegistry {
181
198
  }
182
199
  const record = {
183
200
  id,
201
+ monitorId: options.monitorId ?? allocateMonitorId(),
202
+ sessionId: id,
184
203
  description: options.description,
185
204
  startedAtMs: Date.now(),
186
205
  path,
@@ -217,7 +236,7 @@ export class MonitorRegistry {
217
236
  throw new Error(registrationError ?? "Cannot create file monitor: monitor registry is disposed.");
218
237
  }
219
238
  this.#notifyChange();
220
- return id;
239
+ return { id, monitorId: record.monitorId };
221
240
  }
222
241
  async stopFile(id) {
223
242
  const record = this.#files.get(id);
@@ -360,6 +379,8 @@ export class MonitorRegistry {
360
379
  register(options) {
361
380
  const record = {
362
381
  id: options.id,
382
+ monitorId: options.monitorId ?? allocateMonitorId(),
383
+ sessionId: options.id,
363
384
  description: options.description,
364
385
  startedAtMs: Date.now(),
365
386
  runtime: options.runtime,
@@ -380,6 +401,7 @@ export class MonitorRegistry {
380
401
  record.unsubscribeExit = record.runtime.session.onExit(() => this.#settle(record));
381
402
  if (record.runtime.exited)
382
403
  this.#settle(record);
404
+ return record.monitorId;
383
405
  }
384
406
  pause(ids) {
385
407
  const paused = [];
@@ -1 +1 @@
1
- {"version":3,"file":"monitor-registry.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/terminal/monitor-registry.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { type FSWatcher, watch } from \"node:fs\";\nimport { access, type FileHandle, lstat, open, realpath, stat } from \"node:fs/promises\";\nimport { basename, dirname, join, resolve } from \"node:path\";\nimport type { TerminalRuntimeSession } from \"./runtime-session.ts\";\nimport { describeExit } from \"./tools/spawn.ts\";\n\nexport interface MonitorLineEvent {\n\treadonly type: \"line\";\n\treadonly id: string;\n\treadonly description: string;\n\treadonly line: string;\n}\n\nexport interface MonitorSummaryEvent {\n\treadonly type: \"summary\";\n\treadonly id: string;\n\treadonly description: string;\n\treadonly summary: string;\n}\n\nexport type MonitorEvent = MonitorLineEvent | MonitorSummaryEvent;\n\nexport type MonitorRearmResult = \"rearmed\" | \"not_paused\" | \"not_found\";\n\nexport interface MonitorResumeResult {\n\treadonly id: string;\n\treadonly mutedDropped: number;\n}\n\nexport interface MonitorSnapshotEntry {\n\treadonly id: string;\n\treadonly description: string;\n\treadonly paused: boolean;\n\t/** Epoch milliseconds when the watch registered; feeds the footer's live elapsed label. */\n\treadonly startedAtMs: number;\n}\n\nexport interface MonitorRegistryOptions {\n\t/** Observes every registry transition (register/pause/rearm/settle/dispose) with the live snapshot. */\n\treadonly onChange?: (snapshot: readonly MonitorSnapshotEntry[]) => void;\n\t/** Reserves one shared terminal capacity slot for a native watch. */\n\treadonly reserve?: () => (() => void) | null;\n}\n\nexport interface RegisterFileMonitorOptions {\n\treadonly description: string;\n\treadonly path: string;\n\treadonly event: \"create\" | \"modify\";\n\treadonly timeoutMs: number;\n\treadonly cwd: string;\n\treadonly approvedParent?: string;\n}\n\nexport interface RegisterMonitorOptions {\n\treadonly id: string;\n\treadonly description: string;\n\treadonly runtime: TerminalRuntimeSession;\n\treadonly filter?: RegExp;\n}\n\ninterface PendingFileRegistration {\n\trelease: (() => void) | undefined;\n\treadonly abort: AbortController;\n\treadonly deadline: ReturnType<typeof setTimeout>;\n\tsettled: boolean;\n}\n\ninterface FileMonitorRecord {\n\treadonly id: string;\n\treadonly description: string;\n\treadonly startedAtMs: number;\n\treadonly path: string;\n\treadonly canonicalPath: string;\n\treadonly canonicalParent: string;\n\treadonly event: \"create\" | \"modify\";\n\treadonly watcher: FSWatcher;\n\treadonly release: () => void;\n\treadonly poll: ReturnType<typeof setInterval>;\n\tpaused: boolean;\n\tsettled: boolean;\n\tpresent: boolean;\n\tmtimeMs: number;\n\tsize: number;\n\tdigest: string;\n\tdevice: number;\n\tinode: number;\n\tpendingChange: boolean;\n\tdirty: boolean;\n\tdirtyPasses: number;\n\tdirtyWindowStartedAt: number;\n\tchecking: Promise<void> | undefined;\n\treadonly deadline: ReturnType<typeof setTimeout>;\n}\n\ninterface MonitorRecord {\n\treadonly id: string;\n\treadonly description: string;\n\treadonly startedAtMs: number;\n\treadonly runtime: TerminalRuntimeSession;\n\treadonly filter: RegExp | undefined;\n\tlineBuffer: string;\n\tmutedDropped: number;\n\tpaused: boolean;\n\tsettled: boolean;\n\tunsubscribeOutput: (() => void) | undefined;\n\tunsubscribeExit: (() => void) | undefined;\n}\n\n/**\n * Tracks active monitor sessions alongside the terminal manager's existing bash-id registry.\n * Output is deliberately retained only by TerminalRuntimeSession's bounded history; this\n * registry holds at most one unfinished line for each live monitor.\n */\nexport class MonitorRegistry {\n\treadonly #records = new Map<string, MonitorRecord>();\n\treadonly #emit: (event: MonitorEvent) => void;\n\treadonly #onChange: ((snapshot: readonly MonitorSnapshotEntry[]) => void) | undefined;\n\treadonly #reserve: (() => (() => void) | null) | undefined;\n\treadonly #files = new Map<string, FileMonitorRecord>();\n\t#nextFileId = 1;\n\t#disposed = false;\n\t#pendingRegistrations = 0;\n\treadonly #pending = new Set<PendingFileRegistration>();\n\t#lifecycle = 0;\n\n\tconstructor(emit: (event: MonitorEvent) => void, options?: MonitorRegistryOptions) {\n\t\tthis.#emit = emit;\n\t\tthis.#onChange = options?.onChange;\n\t\tthis.#reserve = options?.reserve;\n\t}\n\n\tsnapshot(): readonly MonitorSnapshotEntry[] {\n\t\treturn [...this.#records.values(), ...this.#files.values()].map((record) => ({\n\t\t\tid: record.id,\n\t\t\tdescription: record.description,\n\t\t\tpaused: record.paused,\n\t\t\tstartedAtMs: record.startedAtMs,\n\t\t}));\n\t}\n\n\tasync registerFile(options: RegisterFileMonitorOptions): Promise<string> {\n\t\tif (this.#disposed) throw new Error(\"Cannot create file monitor: monitor registry is disposed.\");\n\t\tthis.#pendingRegistrations += 1;\n\t\tconst lifecycle = this.#lifecycle;\n\t\tconst release = this.#reserve?.();\n\t\tif (this.#reserve && !release) {\n\t\t\tthis.#pendingRegistrations -= 1;\n\t\t\tthrow new Error(\"Cannot create file monitor: terminal capacity is already in use.\");\n\t\t}\n\t\tconst pending: PendingFileRegistration = {\n\t\t\trelease: release ?? undefined,\n\t\t\tabort: new AbortController(),\n\t\t\tdeadline: setTimeout(() => pending.abort.abort(), options.timeoutMs),\n\t\t\tsettled: false,\n\t\t};\n\t\tthis.#pending.add(pending);\n\t\tconst path = resolve(options.cwd, options.path);\n\t\tconst parent = dirname(path);\n\t\tlet approvedParent: string;\n\t\ttry {\n\t\t\tawait this.#registrationAwait(pending, access(parent));\n\t\t\tapprovedParent = await this.#registrationAwait(pending, realpath(parent));\n\t\t\tconst approvedParentAtPermission = options.approvedParent;\n\t\t\tif (approvedParentAtPermission !== undefined && approvedParent !== approvedParentAtPermission) {\n\t\t\t\tthrow new Error(`Cannot watch file: parent directory changed during permission approval: ${parent}`);\n\t\t\t}\n\t\t\tif (this.#disposed) throw new Error(\"Cannot create file monitor: monitor registry is disposed.\");\n\t\t} catch (error) {\n\t\t\tthis.#finishPending(pending);\n\t\t\tthis.#pendingRegistrations -= 1;\n\t\t\tif (error instanceof Error && error.message.includes(\"disposed\")) throw error;\n\t\t\tif ((error as NodeJS.ErrnoException)?.code !== \"ENOENT\") {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Cannot access parent directory ${parent}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new Error(`Cannot watch file: parent directory does not exist: ${parent}`);\n\t\t}\n\t\tlet initial: Awaited<ReturnType<typeof stat>> | null = null;\n\t\tlet initialHandle: FileHandle | undefined;\n\t\ttry {\n\t\t\tconst target = await this.#registrationAwait(pending, lstat(path));\n\t\t\tif (target.isSymbolicLink()) throw new Error(`Cannot watch file: target is a symbolic link: ${path}`);\n\t\t\tinitialHandle = await this.#registrationAwait(pending, open(path, \"r\"), async (handle) => {\n\t\t\t\tawait handle.close();\n\t\t\t});\n\t\t\tinitial = await this.#registrationAwait(pending, initialHandle.stat());\n\t\t\tif (!initial.isFile()) throw new Error(`Cannot watch file: target is not a regular file: ${path}`);\n\t\t\tconst resolvedTarget = await this.#registrationAwait(pending, realpath(path));\n\t\t\tif (resolvedTarget !== join(approvedParent, basename(path)))\n\t\t\t\tthrow new Error(`Cannot watch file: target identity changed: ${path}`);\n\t\t\tconst rebound = await this.#registrationAwait(pending, lstat(path));\n\t\t\tif (rebound.isSymbolicLink()) throw new Error(`Cannot watch file: target identity changed: ${path}`);\n\t\t\tconst reboundStat = await this.#registrationAwait(pending, stat(path));\n\t\t\tif (!reboundStat.isFile() || reboundStat.dev !== initial.dev || reboundStat.ino !== initial.ino)\n\t\t\t\tthrow new Error(`Cannot watch file: target identity changed: ${path}`);\n\t\t} catch (error) {\n\t\t\tawait initialHandle?.close();\n\t\t\tinitialHandle = undefined;\n\t\t\tif ((error as NodeJS.ErrnoException)?.code !== \"ENOENT\") {\n\t\t\t\tthis.#finishPending(pending);\n\t\t\t\tthis.#pendingRegistrations -= 1;\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t\tif (this.#disposed || lifecycle !== this.#lifecycle || this.#pendingRegistrations < 1) {\n\t\t\tthis.#finishPending(pending);\n\t\t\tthis.#pendingRegistrations -= 1;\n\t\t\tthrow new Error(\"Cannot create file monitor: monitor registry is disposed.\");\n\t\t}\n\t\tconst id = `watch_${this.#nextFileId++}`;\n\t\tlet watcher: FSWatcher;\n\t\ttry {\n\t\t\tconst activationParent = await this.#registrationAwait(pending, realpath(parent));\n\t\t\tif (activationParent !== approvedParent) {\n\t\t\t\tthrow new Error(`Cannot watch file: parent directory changed during registration: ${parent}`);\n\t\t\t}\n\t\t\twatcher = watch(activationParent, (_kind, name) => {\n\t\t\t\tif (!name || basename(String(name)) === basename(path)) void this.#checkFile(id);\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis.#finishPending(pending);\n\t\t\tthis.#pendingRegistrations -= 1;\n\t\t\tthrow new Error(`Cannot watch file ${path}: ${error instanceof Error ? error.message : String(error)}`);\n\t\t}\n\t\tlet registrationError: string | undefined;\n\t\twatcher.on(\"error\", (error) => {\n\t\t\tregistrationError = `watcher error: ${error instanceof Error ? error.message : String(error)}`;\n\t\t\tconst record = this.#files.get(id);\n\t\t\tif (record) this.#settleFile(record, registrationError);\n\t\t});\n\t\tlet registrationCleaned = false;\n\t\tconst finishRegistration = () => {\n\t\t\tif (registrationCleaned) return;\n\t\t\tregistrationCleaned = true;\n\t\t\tthis.#pendingRegistrations -= 1;\n\t\t};\n\t\tconst cleanupRegistration = () => {\n\t\t\tif (registrationCleaned) return;\n\t\t\twatcher.close();\n\t\t\tfinishRegistration();\n\t\t\tthis.#finishPending(pending);\n\t\t};\n\t\tif (this.#disposed || lifecycle !== this.#lifecycle) {\n\t\t\tcleanupRegistration();\n\t\t\tthrow new Error(\"Cannot create file monitor: monitor registry is disposed.\");\n\t\t}\n\t\tconst canonicalPath = join(approvedParent, basename(path));\n\t\tlet digest: string;\n\t\ttry {\n\t\t\tdigest =\n\t\t\t\tinitial && initialHandle\n\t\t\t\t\t? await this.#registrationAwait(pending, this.#digestHandle(initialHandle, pending.abort.signal))\n\t\t\t\t\t: \"\";\n\t\t} catch (error) {\n\t\t\tcleanupRegistration();\n\t\t\tawait initialHandle?.close();\n\t\t\tinitialHandle = undefined;\n\t\t\tif (registrationError) {\n\t\t\t\tthis.#emit({ type: \"summary\", id, description: options.description, summary: registrationError });\n\t\t\t\tthrow new Error(registrationError);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t\tawait initialHandle?.close();\n\t\tinitialHandle = undefined;\n\t\tif (registrationError) {\n\t\t\tcleanupRegistration();\n\t\t\tthis.#emit({ type: \"summary\", id, description: options.description, summary: registrationError });\n\t\t\tthrow new Error(registrationError);\n\t\t}\n\t\tif (this.#disposed || lifecycle !== this.#lifecycle) {\n\t\t\tcleanupRegistration();\n\t\t\tthrow new Error(\"Cannot create file monitor: monitor registry is disposed.\");\n\t\t}\n\t\tconst record: FileMonitorRecord = {\n\t\t\tid,\n\t\t\tdescription: options.description,\n\t\t\tstartedAtMs: Date.now(),\n\t\t\tpath,\n\t\t\tcanonicalPath,\n\t\t\tcanonicalParent: approvedParent,\n\t\t\tevent: options.event,\n\t\t\twatcher,\n\t\t\trelease: release ?? (() => {}),\n\t\t\tpoll: setInterval(() => void this.#checkFile(id), 250),\n\t\t\tpaused: false,\n\t\t\tsettled: false,\n\t\t\tpresent: initial !== null,\n\t\t\tmtimeMs: initial?.mtimeMs ?? 0,\n\t\t\tsize: initial?.size ?? 0,\n\t\t\tdigest,\n\t\t\tdevice: initial?.dev ?? 0,\n\t\t\tinode: initial?.ino ?? 0,\n\t\t\tpendingChange: false,\n\t\t\tdirty: false,\n\t\t\tdirtyPasses: 0,\n\t\t\tdirtyWindowStartedAt: 0,\n\t\t\tchecking: undefined,\n\t\t\tdeadline: setTimeout(() => {\n\t\t\t\tconst current = this.#files.get(id);\n\t\t\t\tif (current) this.#settleFile(current, \"watcher timed_out\");\n\t\t\t}, options.timeoutMs),\n\t\t};\n\t\tthis.#files.set(id, record);\n\t\tfinishRegistration();\n\t\tthis.#finishPending(pending, true);\n\t\tif (registrationError || this.#disposed || lifecycle !== this.#lifecycle) {\n\t\t\tthis.#settleFile(record, registrationError ?? \"watcher killed\");\n\t\t\tthrow new Error(registrationError ?? \"Cannot create file monitor: monitor registry is disposed.\");\n\t\t}\n\t\tthis.#notifyChange();\n\t\treturn id;\n\t}\n\n\tasync stopFile(id: string): Promise<boolean> {\n\t\tconst record = this.#files.get(id);\n\t\tif (!record) return false;\n\t\tthis.#settleFile(record, \"watcher killed\");\n\t\treturn true;\n\t}\n\n\tasync stopAllFiles(): Promise<number> {\n\t\tthis.#lifecycle += 1;\n\t\tconst records = [...this.#files.values()];\n\t\tfor (const record of records) this.#settleFile(record, \"watcher killed\");\n\t\tfor (const pending of [...this.#pending]) this.#finishPending(pending);\n\t\treturn records.length;\n\t}\n\n\t#settleFile(record: FileMonitorRecord, summary: string): void {\n\t\tif (record.settled) return;\n\t\trecord.settled = true;\n\t\tclearInterval(record.poll);\n\t\tclearTimeout(record.deadline);\n\t\trecord.watcher.close();\n\t\trecord.release();\n\t\tthis.#files.delete(record.id);\n\t\tthis.#notifyChange();\n\t\tthis.#emit({ type: \"summary\", id: record.id, description: record.description, summary });\n\t}\n\n\tasync #checkFile(id: string): Promise<void> {\n\t\tconst record = this.#files.get(id);\n\t\tif (!record || record.settled) return;\n\t\tif (record.checking) {\n\t\t\trecord.dirty = true;\n\t\t\treturn;\n\t\t}\n\t\trecord.checking = this.#checkFileImpl(record)\n\t\t\t.catch((error) => {\n\t\t\t\tif (!record.settled)\n\t\t\t\t\tthis.#settleFile(record, `watcher error: ${error instanceof Error ? error.message : String(error)}`);\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\trecord.checking = undefined;\n\t\t\t\tconst now = Date.now();\n\t\t\t\tif (now - record.dirtyWindowStartedAt >= 1_000) {\n\t\t\t\t\trecord.dirtyWindowStartedAt = now;\n\t\t\t\t\trecord.dirtyPasses = 0;\n\t\t\t\t}\n\t\t\t\tif (record.dirty && !record.settled && record.dirtyPasses < 1) {\n\t\t\t\t\trecord.dirty = false;\n\t\t\t\t\trecord.dirtyPasses += 1;\n\t\t\t\t\tvoid this.#checkFile(id);\n\t\t\t\t} else {\n\t\t\t\t\trecord.dirty = false;\n\t\t\t\t}\n\t\t\t});\n\t\treturn record.checking;\n\t}\n\n\tasync #checkFileImpl(record: FileMonitorRecord): Promise<void> {\n\t\tif (record.settled) return;\n\t\tlet current: Awaited<ReturnType<typeof stat>> | null = null;\n\t\tlet handle: FileHandle | undefined;\n\t\ttry {\n\t\t\tconst currentParent = await realpath(dirname(record.path));\n\t\t\tif (currentParent !== record.canonicalParent) {\n\t\t\t\tthis.#settleFile(record, `watcher error: monitored parent changed: ${dirname(record.path)}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst target = await lstat(record.canonicalPath);\n\t\t\tif (target.isSymbolicLink()) throw new Error(`Cannot watch file: target identity changed: ${record.path}`);\n\t\t\tconst resolvedTarget = await realpath(record.canonicalPath);\n\t\t\tif (resolvedTarget !== record.canonicalPath)\n\t\t\t\tthrow new Error(`Cannot watch file: target identity changed: ${record.path}`);\n\t\t\thandle = await open(record.canonicalPath, \"r\");\n\t\t\tconst opened = await handle.stat();\n\t\t\tif (!opened.isFile()) throw new Error(`Cannot watch file: target is not a regular file: ${record.path}`);\n\t\t\tif ((opened.dev !== record.device || opened.ino !== record.inode) && opened.nlink > 1)\n\t\t\t\tthrow new Error(`Cannot watch file: target identity changed: ${record.path}`);\n\t\t\tcurrent = opened;\n\t\t\tconst rebound = await lstat(record.canonicalPath);\n\t\t\tif (rebound.isSymbolicLink()) throw new Error(`Cannot watch file: target identity changed: ${record.path}`);\n\t\t\tconst reboundPath = await stat(record.canonicalPath);\n\t\t\tif (!reboundPath.isFile() || reboundPath.dev !== opened.dev || reboundPath.ino !== opened.ino)\n\t\t\t\tthrow new Error(`Cannot watch file: target identity changed: ${record.path}`);\n\t\t} catch (error) {\n\t\t\tawait handle?.close();\n\t\t\tif ((error as NodeJS.ErrnoException)?.code !== \"ENOENT\") {\n\t\t\t\tthis.#settleFile(record, `watcher error: ${error instanceof Error ? error.message : String(error)}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tconst present = current !== null;\n\t\tlet digest = \"\";\n\t\ttry {\n\t\t\tdigest = present && handle ? await this.#digestHandle(handle) : \"\";\n\t\t\tif (present && handle) {\n\t\t\t\tconst afterDigest = await stat(record.canonicalPath);\n\t\t\t\tconst opened = await handle.stat();\n\t\t\t\tif (afterDigest.dev !== opened.dev || afterDigest.ino !== opened.ino)\n\t\t\t\t\tthrow new Error(`Cannot watch file: target identity changed: ${record.path}`);\n\t\t\t}\n\t\t} finally {\n\t\t\tawait handle?.close();\n\t\t}\n\t\tconst changed =\n\t\t\trecord.event === \"create\"\n\t\t\t\t? !record.present && present\n\t\t\t\t: record.present &&\n\t\t\t\t\tpresent &&\n\t\t\t\t\t(current!.mtimeMs !== record.mtimeMs || current!.size !== record.size || digest !== record.digest);\n\t\trecord.pendingChange ||= changed;\n\t\tif (!record.present && current) {\n\t\t\trecord.device = current.dev;\n\t\t\trecord.inode = current.ino;\n\t\t}\n\t\trecord.present = present;\n\t\trecord.mtimeMs = current?.mtimeMs ?? 0;\n\t\trecord.size = current?.size ?? 0;\n\t\trecord.digest = digest;\n\t\tif (!record.pendingChange || record.paused || record.settled) return;\n\t\trecord.pendingChange = false;\n\t\tif (record.settled) return;\n\t\tthis.#emit({\n\t\t\ttype: \"line\",\n\t\t\tid: record.id,\n\t\t\tdescription: record.description,\n\t\t\tline: `${record.event} ${record.path}`,\n\t\t});\n\t\tthis.#settleFile(record, \"watcher completed\");\n\t}\n\n\tregister(options: RegisterMonitorOptions): void {\n\t\tconst record: MonitorRecord = {\n\t\t\tid: options.id,\n\t\t\tdescription: options.description,\n\t\t\tstartedAtMs: Date.now(),\n\t\t\truntime: options.runtime,\n\t\t\tfilter: options.filter,\n\t\t\tlineBuffer: \"\",\n\t\t\tmutedDropped: 0,\n\t\t\tpaused: false,\n\t\t\tsettled: false,\n\t\t\tunsubscribeOutput: undefined,\n\t\t\tunsubscribeExit: undefined,\n\t\t};\n\t\tthis.#records.set(record.id, record);\n\t\tthis.#notifyChange();\n\n\t\t// Runtime output is already bounded. Read what was produced before monitor registration,\n\t\t// then subscribe synchronously so a fast watcher cannot lose its first line.\n\t\tthis.#consume(record, record.runtime.fullOutput());\n\t\trecord.unsubscribeOutput = record.runtime.onOutput((chunk) => this.#consume(record, chunk));\n\t\trecord.unsubscribeExit = record.runtime.session.onExit(() => this.#settle(record));\n\t\tif (record.runtime.exited) this.#settle(record);\n\t}\n\n\tpause(ids: readonly string[]): string[] {\n\t\tconst paused: string[] = [];\n\t\tfor (const id of ids) {\n\t\t\tconst record = this.#records.get(id) ?? this.#files.get(id);\n\t\t\tif (!record || record.paused) continue;\n\t\t\trecord.paused = true;\n\t\t\tpaused.push(record.id);\n\t\t}\n\t\tif (paused.length > 0) this.#notifyChange();\n\t\treturn paused;\n\t}\n\n\tpauseAll(): string[] {\n\t\treturn this.pause([...this.#records.keys(), ...this.#files.keys()]);\n\t}\n\n\tresume(ids?: readonly string[]): MonitorResumeResult[] {\n\t\tconst candidates = ids ?? [...this.#records.keys(), ...this.#files.keys()];\n\t\tconst resumed: MonitorResumeResult[] = [];\n\t\tfor (const id of candidates) {\n\t\t\tconst record = this.#records.get(id) ?? this.#files.get(id);\n\t\t\tif (!record?.paused) continue;\n\t\t\trecord.paused = false;\n\t\t\tconst mutedDropped = \"mutedDropped\" in record ? record.mutedDropped : 0;\n\t\t\tif (\"mutedDropped\" in record) record.mutedDropped = 0;\n\t\t\tresumed.push({ id: record.id, mutedDropped });\n\t\t\tif (\"pendingChange\" in record && record.pendingChange) void this.#checkFile(record.id);\n\t\t}\n\t\tif (resumed.length > 0) this.#notifyChange();\n\t\treturn resumed;\n\t}\n\n\tmutedDropped(id: string): number {\n\t\treturn this.#records.get(id)?.mutedDropped ?? 0;\n\t}\n\n\trearm(id: string): MonitorRearmResult {\n\t\tconst record = this.#records.get(id) ?? this.#files.get(id);\n\t\tif (!record) return \"not_found\";\n\t\tif (!record.paused) return \"not_paused\";\n\t\tthis.resume([id]);\n\t\treturn \"rearmed\";\n\t}\n\n\tdispose(): void {\n\t\tthis.#disposed = true;\n\t\tthis.#lifecycle += 1;\n\t\tfor (const record of this.#records.values()) this.#disposeRecord(record);\n\t\tfor (const record of this.#files.values()) this.#settleFile(record, \"watcher disposed\");\n\t\tfor (const pending of this.#pending) this.#finishPending(pending);\n\t\tthis.#records.clear();\n\t\tthis.#notifyChange();\n\t}\n\n\t#finishPending(pending: PendingFileRegistration, transfer = false): void {\n\t\tif (pending.settled) return;\n\t\tpending.settled = true;\n\t\tclearTimeout(pending.deadline);\n\t\tthis.#pending.delete(pending);\n\t\tif (transfer) pending.release = undefined;\n\t\telse {\n\t\t\tpending.abort.abort();\n\t\t\tpending.release?.();\n\t\t}\n\t}\n\n\tasync #registrationAwait<T>(\n\t\tpending: PendingFileRegistration,\n\t\toperation: Promise<T>,\n\t\tlateCleanup?: (value: T) => Promise<void>,\n\t): Promise<T> {\n\t\tif (pending.abort.signal.aborted) {\n\t\t\tvoid operation.then(\n\t\t\t\t(value) => lateCleanup?.(value),\n\t\t\t\t() => undefined,\n\t\t\t);\n\t\t\tthrow new Error(\"Cannot create file monitor: registration timed out or was disposed.\");\n\t\t}\n\t\tlet aborted = false;\n\t\tconst abort = new Promise<never>((_, reject) =>\n\t\t\tpending.abort.signal.addEventListener(\n\t\t\t\t\"abort\",\n\t\t\t\t() => {\n\t\t\t\t\taborted = true;\n\t\t\t\t\treject(new Error(\"Cannot create file monitor: registration timed out or was disposed.\"));\n\t\t\t\t},\n\t\t\t\t{ once: true },\n\t\t\t),\n\t\t);\n\t\tconst guarded = operation.then(\n\t\t\t(value) => {\n\t\t\t\tif (aborted) void lateCleanup?.(value);\n\t\t\t\treturn value;\n\t\t\t},\n\t\t\t(error) => {\n\t\t\t\tif (aborted) return undefined as T;\n\t\t\t\tthrow error;\n\t\t\t},\n\t\t);\n\t\treturn Promise.race([guarded, abort]);\n\t}\n\n\tasync #digestHandle(handle: FileHandle, signal?: AbortSignal): Promise<string> {\n\t\tconst SAMPLE_SIZE = 64 * 1024;\n\t\tif (signal?.aborted) throw new Error(\"file monitor registration cancelled\");\n\t\tconst metadata = await handle.stat();\n\t\tconst hash = createHash(\"sha256\");\n\t\tconst first = Buffer.alloc(Math.min(SAMPLE_SIZE, metadata.size));\n\t\tif (first.length > 0) {\n\t\t\tawait handle.read(first, 0, first.length, 0);\n\t\t\thash.update(first);\n\t\t}\n\t\tif (metadata.size > SAMPLE_SIZE) {\n\t\t\tconst middle = Buffer.alloc(SAMPLE_SIZE);\n\t\t\tawait handle.read(middle, 0, middle.length, Math.floor((metadata.size - middle.length) / 2));\n\t\t\thash.update(middle);\n\t\t\tconst last = Buffer.alloc(SAMPLE_SIZE);\n\t\t\tawait handle.read(last, 0, last.length, metadata.size - last.length);\n\t\t\thash.update(last);\n\t\t}\n\t\treturn `${metadata.size}:${hash.digest(\"hex\")}`;\n\t}\n\n\t#notifyChange(): void {\n\t\tthis.#onChange?.(this.snapshot());\n\t}\n\n\t#consume(record: MonitorRecord, chunk: string): void {\n\t\tif (record.settled || chunk.length === 0) return;\n\t\tlet remaining = record.lineBuffer + chunk;\n\t\tfor (;;) {\n\t\t\tconst newline = remaining.indexOf(\"\\n\");\n\t\t\tif (newline < 0) break;\n\t\t\tconst rawLine = remaining.slice(0, newline);\n\t\t\tremaining = remaining.slice(newline + 1);\n\t\t\tconst line = rawLine.endsWith(\"\\r\") ? rawLine.slice(0, -1) : rawLine;\n\t\t\tconst matchesFilter = !record.filter || record.filter.test(line);\n\t\t\tif (!matchesFilter) continue;\n\t\t\tif (record.paused) {\n\t\t\t\trecord.mutedDropped += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis.#emit({ type: \"line\", id: record.id, description: record.description, line });\n\t\t}\n\t\trecord.lineBuffer = remaining;\n\t}\n\n\t#settle(record: MonitorRecord): void {\n\t\tif (record.settled) return;\n\t\trecord.settled = true;\n\t\trecord.unsubscribeOutput?.();\n\t\trecord.unsubscribeExit?.();\n\t\tthis.#records.delete(record.id);\n\t\tthis.#notifyChange();\n\t\tconst status = describeExit(record.runtime) ?? \"exited\";\n\t\tconst code = record.runtime.exitResult?.exitCode;\n\t\tconst codeText = code === null || code === undefined ? \"\" : ` (exit code ${code})`;\n\t\tthis.#emit({\n\t\t\ttype: \"summary\",\n\t\t\tid: record.id,\n\t\t\tdescription: record.description,\n\t\t\tsummary: `watcher ${status}${codeText}`,\n\t\t});\n\t}\n\n\t#disposeRecord(record: MonitorRecord): void {\n\t\trecord.settled = true;\n\t\trecord.unsubscribeOutput?.();\n\t\trecord.unsubscribeExit?.();\n\t}\n}\n"]}
1
+ {"version":3,"file":"monitor-registry.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/terminal/monitor-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAkB,KAAK,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,MAAM,EAAmB,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAyBhD,MAAM,mBAAmB,GAAG,kCAAkC,CAAC;AAE/D,gGAAgG;AAChG,MAAM,UAAU,iBAAiB;IAChC,IAAI,EAAE,GAAG,MAAM,CAAC;IAChB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;QACpC,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QAC9B,IAAI,IAAI,CAAC,CAAC;QACV,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,CAAC;YACV,EAAE,IAAI,mBAAmB,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAClD,CAAC;IACF,CAAC;IACD,OAAO,EAAE,CAAC;AACX,CAAC;AA2FD;;;;GAIG;AACH,MAAM,OAAO,eAAe;IAClB,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC5C,KAAK,CAAgC;IACrC,SAAS,CAAoE;IAC7E,QAAQ,CAA0C;IAClD,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;IACvD,WAAW,GAAG,CAAC,CAAC;IAChB,SAAS,GAAG,KAAK,CAAC;IAClB,qBAAqB,GAAG,CAAC,CAAC;IACjB,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IACvD,UAAU,GAAG,CAAC,CAAC;IAEf,YAAY,IAAmC,EAAE,OAAgC;QAChF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,QAAQ,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,OAAO,CAAC;IAClC,CAAC;IAED,QAAQ;QACP,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC5E,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,WAAW;SAC/B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAmC;QACrD,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QACjG,IAAI,CAAC,qBAAqB,IAAI,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,qBAAqB,IAAI,CAAC,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,OAAO,GAA4B;YACxC,OAAO,EAAE,OAAO,IAAI,SAAS;YAC7B,KAAK,EAAE,IAAI,eAAe,EAAE;YAC5B,QAAQ,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC;YACpE,OAAO,EAAE,KAAK;SACd,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,cAAsB,CAAC;QAC3B,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACvD,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAC1E,MAAM,0BAA0B,GAAG,OAAO,CAAC,cAAc,CAAC;YAC1D,IAAI,0BAA0B,KAAK,SAAS,IAAI,cAAc,KAAK,0BAA0B,EAAE,CAAC;gBAC/F,MAAM,IAAI,KAAK,CAAC,2EAA2E,MAAM,EAAE,CAAC,CAAC;YACtG,CAAC;YACD,IAAI,IAAI,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAClG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC7B,IAAI,CAAC,qBAAqB,IAAI,CAAC,CAAC;YAChC,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,MAAM,KAAK,CAAC;YAC9E,IAAK,KAA+B,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACzD,MAAM,IAAI,KAAK,CACd,kCAAkC,MAAM,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACrG,CAAC;YACH,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,uDAAuD,MAAM,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,OAAO,GAA4C,IAAI,CAAC;QAC5D,IAAI,aAAqC,CAAC;QAC1C,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACnE,IAAI,MAAM,CAAC,cAAc,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,IAAI,EAAE,CAAC,CAAC;YACtG,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACxF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACtB,CAAC,CAAC,CAAC;YACH,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;YACvE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,IAAI,EAAE,CAAC,CAAC;YACnG,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9E,IAAI,cAAc,KAAK,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC1D,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,EAAE,CAAC,CAAC;YACxE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACpE,IAAI,OAAO,CAAC,cAAc,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,EAAE,CAAC,CAAC;YACrG,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACvE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,WAAW,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG;gBAC9F,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,EAAE,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,aAAa,EAAE,KAAK,EAAE,CAAC;YAC7B,aAAa,GAAG,SAAS,CAAC;YAC1B,IAAK,KAA+B,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACzD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;gBAC7B,IAAI,CAAC,qBAAqB,IAAI,CAAC,CAAC;gBAChC,MAAM,KAAK,CAAC;YACb,CAAC;QACF,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,qBAAqB,GAAG,CAAC,EAAE,CAAC;YACvF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC7B,IAAI,CAAC,qBAAqB,IAAI,CAAC,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,EAAE,GAAG,SAAS,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACzC,IAAI,OAAkB,CAAC;QACvB,IAAI,CAAC;YACJ,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAClF,IAAI,gBAAgB,KAAK,cAAc,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,oEAAoE,MAAM,EAAE,CAAC,CAAC;YAC/F,CAAC;YACD,OAAO,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBACjD,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC;oBAAE,KAAK,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAClF,CAAC,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC7B,IAAI,CAAC,qBAAqB,IAAI,CAAC,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzG,CAAC;QACD,IAAI,iBAAqC,CAAC;QAC1C,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC7B,iBAAiB,GAAG,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/F,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnC,IAAI,MAAM;gBAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QACH,IAAI,mBAAmB,GAAG,KAAK,CAAC;QAChC,MAAM,kBAAkB,GAAG,GAAG,EAAE;YAC/B,IAAI,mBAAmB;gBAAE,OAAO;YAChC,mBAAmB,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,qBAAqB,IAAI,CAAC,CAAC;QACjC,CAAC,CAAC;QACF,MAAM,mBAAmB,GAAG,GAAG,EAAE;YAChC,IAAI,mBAAmB;gBAAE,OAAO;YAChC,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,kBAAkB,EAAE,CAAC;YACrB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC,CAAC;QACF,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;YACrD,mBAAmB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACJ,MAAM;gBACL,OAAO,IAAI,aAAa;oBACvB,CAAC,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACjG,CAAC,CAAC,EAAE,CAAC;QACR,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,mBAAmB,EAAE,CAAC;YACtB,MAAM,aAAa,EAAE,KAAK,EAAE,CAAC;YAC7B,aAAa,GAAG,SAAS,CAAC;YAC1B,IAAI,iBAAiB,EAAE,CAAC;gBACvB,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBAClG,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACpC,CAAC;YACD,MAAM,KAAK,CAAC;QACb,CAAC;QACD,MAAM,aAAa,EAAE,KAAK,EAAE,CAAC;QAC7B,aAAa,GAAG,SAAS,CAAC;QAC1B,IAAI,iBAAiB,EAAE,CAAC;YACvB,mBAAmB,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAClG,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;YACrD,mBAAmB,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,MAAM,GAAsB;YACjC,EAAE;YACF,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,iBAAiB,EAAE;YACnD,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,IAAI;YACJ,aAAa;YACb,eAAe,EAAE,cAAc;YAC/B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO;YACP,OAAO,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;YAC9B,IAAI,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;YACtD,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,OAAO,KAAK,IAAI;YACzB,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,CAAC;YAC9B,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC;YACxB,MAAM;YACN,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;YACzB,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;YACxB,aAAa,EAAE,KAAK;YACpB,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,CAAC;YACd,oBAAoB,EAAE,CAAC;YACvB,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,UAAU,CAAC,GAAG,EAAE;gBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACpC,IAAI,OAAO;oBAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;YAC7D,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC;SACrB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC5B,kBAAkB,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,iBAAiB,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;YAC1E,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,iBAAiB,IAAI,gBAAgB,CAAC,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,2DAA2D,CAAC,CAAC;QACnG,CAAC;QACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK,CAAC,YAAY;QACjB,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACrB,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1C,KAAK,MAAM,MAAM,IAAI,OAAO;YAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QACzE,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACvE,OAAO,OAAO,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,WAAW,CAAC,MAAyB,EAAE,OAAe;QACrD,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO;QAC3B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO;QACtC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,OAAO;QACR,CAAC;QACD,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;aAC3C,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,OAAO;gBAClB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvG,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACb,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,GAAG,GAAG,MAAM,CAAC,oBAAoB,IAAI,KAAK,EAAE,CAAC;gBAChD,MAAM,CAAC,oBAAoB,GAAG,GAAG,CAAC;gBAClC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;YACxB,CAAC;YACD,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;gBAC/D,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;gBACrB,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;gBACxB,KAAK,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACP,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;YACtB,CAAC;QACF,CAAC,CAAC,CAAC;QACJ,OAAO,MAAM,CAAC,QAAQ,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAyB;QAC7C,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO;QAC3B,IAAI,OAAO,GAA4C,IAAI,CAAC;QAC5D,IAAI,MAA8B,CAAC;QACnC,IAAI,CAAC;YACJ,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3D,IAAI,aAAa,KAAK,MAAM,CAAC,eAAe,EAAE,CAAC;gBAC9C,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,4CAA4C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC7F,OAAO;YACR,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACjD,IAAI,MAAM,CAAC,cAAc,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3G,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAC5D,IAAI,cAAc,KAAK,MAAM,CAAC,aAAa;gBAC1C,MAAM,IAAI,KAAK,CAAC,+CAA+C,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/E,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACzG,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC;gBACpF,MAAM,IAAI,KAAK,CAAC,+CAA+C,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/E,OAAO,GAAG,MAAM,CAAC;YACjB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAClD,IAAI,OAAO,CAAC,cAAc,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5G,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACrD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,WAAW,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG;gBAC5F,MAAM,IAAI,KAAK,CAAC,+CAA+C,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAChF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC;YACtB,IAAK,KAA+B,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACzD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,kBAAkB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACrG,OAAO;YACR,CAAC;QACF,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,KAAK,IAAI,CAAC;QACjC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC;YACJ,MAAM,GAAG,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;gBACvB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBACrD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBACnC,IAAI,WAAW,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG;oBACnE,MAAM,IAAI,KAAK,CAAC,+CAA+C,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAChF,CAAC;QACF,CAAC;gBAAS,CAAC;YACV,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC;QACvB,CAAC;QACD,MAAM,OAAO,GACZ,MAAM,CAAC,KAAK,KAAK,QAAQ;YACxB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO;YAC5B,CAAC,CAAC,MAAM,CAAC,OAAO;gBACf,OAAO;gBACP,CAAC,OAAQ,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,IAAI,OAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;QACtG,MAAM,CAAC,aAAa,KAAK,OAAO,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;YAChC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;YAC5B,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;QAC5B,CAAC;QACD,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,MAAM,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO;QACrE,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO;QAC3B,IAAI,CAAC,KAAK,CAAC;YACV,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,IAAI,EAAE,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE;SACtC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC/C,CAAC;IAED,QAAQ,CAAC,OAA+B;QACvC,MAAM,MAAM,GAAkB;YAC7B,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,iBAAiB,EAAE;YACnD,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE,EAAE;YACd,YAAY,EAAE,CAAC;YACf,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,KAAK;YACd,iBAAiB,EAAE,SAAS;YAC5B,eAAe,EAAE,SAAS;SAC1B,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,yFAAyF;QACzF,6EAA6E;QAC7E,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QACnD,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAC5F,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACnF,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM;YAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC,SAAS,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,GAAsB;QAC3B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM;gBAAE,SAAS;YACvC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,aAAa,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC;IACf,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,CAAC,GAAuB;QAC7B,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3E,MAAM,OAAO,GAA0B,EAAE,CAAC;QAC1C,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,EAAE,MAAM;gBAAE,SAAS;YAC9B,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;YACtB,MAAM,YAAY,GAAG,cAAc,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,cAAc,IAAI,MAAM;gBAAE,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;YAC9C,IAAI,eAAe,IAAI,MAAM,IAAI,MAAM,CAAC,aAAa;gBAAE,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7C,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,YAAY,CAAC,EAAU;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,YAAY,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,EAAU;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM;YAAE,OAAO,WAAW,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,YAAY,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClB,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACrB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACzE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QACxF,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAClE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IAED,cAAc,CAAC,OAAgC,EAAE,QAAQ,GAAG,KAAK;QAChE,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO;QAC5B,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,QAAQ;YAAE,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;aACrC,CAAC;YACL,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACrB,CAAC;IACF,CAAC;IAED,KAAK,CAAC,kBAAkB,CACvB,OAAgC,EAChC,SAAqB,EACrB,WAAyC;QAEzC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClC,KAAK,SAAS,CAAC,IAAI,CAClB,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAC/B,GAAG,EAAE,CAAC,SAAS,CACf,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC9C,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CACpC,OAAO,EACP,GAAG,EAAE;YACJ,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,CAAC,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC,CAAC;QAC1F,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACd,CACD,CAAC;QACF,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAC7B,CAAC,KAAK,EAAE,EAAE;YACT,IAAI,OAAO;gBAAE,KAAK,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,KAAK,CAAC;QACd,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;YACT,IAAI,OAAO;gBAAE,OAAO,SAAc,CAAC;YACnC,MAAM,KAAK,CAAC;QACb,CAAC,CACD,CAAC;QACF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAkB,EAAE,MAAoB;QAC3D,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC;QAC9B,IAAI,MAAM,EAAE,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC5E,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACjE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,GAAG,WAAW,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACzC,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7F,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACpB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YACrE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IACjD,CAAC;IAED,aAAa;QACZ,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,QAAQ,CAAC,MAAqB,EAAE,KAAa;QAC5C,IAAI,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACjD,IAAI,SAAS,GAAG,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1C,SAAS,CAAC;YACT,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,OAAO,GAAG,CAAC;gBAAE,MAAM;YACvB,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC5C,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACrE,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjE,IAAI,CAAC,aAAa;gBAAE,SAAS;YAC7B,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;gBACzB,SAAS;YACV,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,MAAqB;QAC5B,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO;QAC3B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,MAAM,CAAC,iBAAiB,EAAE,EAAE,CAAC;QAC7B,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC;QACxD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,IAAI,GAAG,CAAC;QACnF,IAAI,CAAC,KAAK,CAAC;YACV,IAAI,EAAE,SAAS;YACf,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,OAAO,EAAE,WAAW,MAAM,GAAG,QAAQ,EAAE;SACvC,CAAC,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,MAAqB;QACnC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,MAAM,CAAC,iBAAiB,EAAE,EAAE,CAAC;QAC7B,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC;IAC5B,CAAC;CACD","sourcesContent":["import { createHash, randomBytes } from \"node:crypto\";\nimport { type FSWatcher, watch } from \"node:fs\";\nimport { access, type FileHandle, lstat, open, realpath, stat } from \"node:fs/promises\";\nimport { basename, dirname, join, resolve } from \"node:path\";\nimport type { TerminalRuntimeSession } from \"./runtime-session.ts\";\nimport { describeExit } from \"./tools/spawn.ts\";\n\nexport interface MonitorLineEvent {\n\treadonly type: \"line\";\n\treadonly id: string;\n\treadonly description: string;\n\treadonly line: string;\n}\n\nexport interface MonitorSummaryEvent {\n\treadonly type: \"summary\";\n\treadonly id: string;\n\treadonly description: string;\n\treadonly summary: string;\n}\n\nexport type MonitorEvent = MonitorLineEvent | MonitorSummaryEvent;\n\nexport type MonitorRearmResult = \"rearmed\" | \"not_paused\" | \"not_found\";\n\nexport interface MonitorResumeResult {\n\treadonly id: string;\n\treadonly mutedDropped: number;\n}\n\nconst MONITOR_ID_ALPHABET = \"0123456789ABCDEFGHJKMNPQRSTVWXYZ\";\n\n/** Allocate a stable monitor identity: \"mon_\" + 16 Crockford base-32 chars (80 random bits). */\nexport function allocateMonitorId(): string {\n\tlet id = \"mon_\";\n\tlet buffer = 0;\n\tlet bits = 0;\n\tfor (const byte of randomBytes(10)) {\n\t\tbuffer = (buffer << 8) | byte;\n\t\tbits += 8;\n\t\twhile (bits >= 5) {\n\t\t\tbits -= 5;\n\t\t\tid += MONITOR_ID_ALPHABET[(buffer >> bits) & 31];\n\t\t}\n\t}\n\treturn id;\n}\n\nexport interface MonitorSnapshotEntry {\n\treadonly id: string;\n\t/** Stable \"mon_\" identity carried alongside the runtime id; always set on live snapshots. */\n\treadonly monitorId?: string;\n\treadonly description: string;\n\treadonly paused: boolean;\n\t/** Epoch milliseconds when the watch registered; feeds the footer's live elapsed label. */\n\treadonly startedAtMs: number;\n}\n\nexport interface MonitorRegistryOptions {\n\t/** Observes every registry transition (register/pause/rearm/settle/dispose) with the live snapshot. */\n\treadonly onChange?: (snapshot: readonly MonitorSnapshotEntry[]) => void;\n\t/** Reserves one shared terminal capacity slot for a native watch. */\n\treadonly reserve?: () => (() => void) | null;\n}\n\nexport interface RegisterFileMonitorOptions {\n\treadonly description: string;\n\treadonly path: string;\n\t/** Caller-supplied stable identity so a restore can re-bind the same \"mon_\" id. */\n\treadonly monitorId?: string;\n\treadonly event: \"create\" | \"modify\";\n\treadonly timeoutMs: number;\n\treadonly cwd: string;\n\treadonly approvedParent?: string;\n}\n\nexport interface RegisterMonitorOptions {\n\treadonly id: string;\n\t/** Caller-supplied stable identity so a restore can re-bind the same \"mon_\" id. */\n\treadonly monitorId?: string;\n\treadonly description: string;\n\treadonly runtime: TerminalRuntimeSession;\n\treadonly filter?: RegExp;\n}\n\ninterface PendingFileRegistration {\n\trelease: (() => void) | undefined;\n\treadonly abort: AbortController;\n\treadonly deadline: ReturnType<typeof setTimeout>;\n\tsettled: boolean;\n}\n\ninterface FileMonitorRecord {\n\treadonly id: string;\n\treadonly monitorId: string;\n\treadonly sessionId: string;\n\treadonly description: string;\n\treadonly startedAtMs: number;\n\treadonly path: string;\n\treadonly canonicalPath: string;\n\treadonly canonicalParent: string;\n\treadonly event: \"create\" | \"modify\";\n\treadonly watcher: FSWatcher;\n\treadonly release: () => void;\n\treadonly poll: ReturnType<typeof setInterval>;\n\tpaused: boolean;\n\tsettled: boolean;\n\tpresent: boolean;\n\tmtimeMs: number;\n\tsize: number;\n\tdigest: string;\n\tdevice: number;\n\tinode: number;\n\tpendingChange: boolean;\n\tdirty: boolean;\n\tdirtyPasses: number;\n\tdirtyWindowStartedAt: number;\n\tchecking: Promise<void> | undefined;\n\treadonly deadline: ReturnType<typeof setTimeout>;\n}\n\ninterface MonitorRecord {\n\treadonly id: string;\n\treadonly monitorId: string;\n\treadonly sessionId: string;\n\treadonly description: string;\n\treadonly startedAtMs: number;\n\treadonly runtime: TerminalRuntimeSession;\n\treadonly filter: RegExp | undefined;\n\tlineBuffer: string;\n\tmutedDropped: number;\n\tpaused: boolean;\n\tsettled: boolean;\n\tunsubscribeOutput: (() => void) | undefined;\n\tunsubscribeExit: (() => void) | undefined;\n}\n\n/**\n * Tracks active monitor sessions alongside the terminal manager's existing bash-id registry.\n * Output is deliberately retained only by TerminalRuntimeSession's bounded history; this\n * registry holds at most one unfinished line for each live monitor.\n */\nexport class MonitorRegistry {\n\treadonly #records = new Map<string, MonitorRecord>();\n\treadonly #emit: (event: MonitorEvent) => void;\n\treadonly #onChange: ((snapshot: readonly MonitorSnapshotEntry[]) => void) | undefined;\n\treadonly #reserve: (() => (() => void) | null) | undefined;\n\treadonly #files = new Map<string, FileMonitorRecord>();\n\t#nextFileId = 1;\n\t#disposed = false;\n\t#pendingRegistrations = 0;\n\treadonly #pending = new Set<PendingFileRegistration>();\n\t#lifecycle = 0;\n\n\tconstructor(emit: (event: MonitorEvent) => void, options?: MonitorRegistryOptions) {\n\t\tthis.#emit = emit;\n\t\tthis.#onChange = options?.onChange;\n\t\tthis.#reserve = options?.reserve;\n\t}\n\n\tsnapshot(): readonly MonitorSnapshotEntry[] {\n\t\treturn [...this.#records.values(), ...this.#files.values()].map((record) => ({\n\t\t\tid: record.id,\n\t\t\tmonitorId: record.monitorId,\n\t\t\tdescription: record.description,\n\t\t\tpaused: record.paused,\n\t\t\tstartedAtMs: record.startedAtMs,\n\t\t}));\n\t}\n\n\tasync registerFile(options: RegisterFileMonitorOptions): Promise<{ id: string; monitorId: string }> {\n\t\tif (this.#disposed) throw new Error(\"Cannot create file monitor: monitor registry is disposed.\");\n\t\tthis.#pendingRegistrations += 1;\n\t\tconst lifecycle = this.#lifecycle;\n\t\tconst release = this.#reserve?.();\n\t\tif (this.#reserve && !release) {\n\t\t\tthis.#pendingRegistrations -= 1;\n\t\t\tthrow new Error(\"Cannot create file monitor: terminal capacity is already in use.\");\n\t\t}\n\t\tconst pending: PendingFileRegistration = {\n\t\t\trelease: release ?? undefined,\n\t\t\tabort: new AbortController(),\n\t\t\tdeadline: setTimeout(() => pending.abort.abort(), options.timeoutMs),\n\t\t\tsettled: false,\n\t\t};\n\t\tthis.#pending.add(pending);\n\t\tconst path = resolve(options.cwd, options.path);\n\t\tconst parent = dirname(path);\n\t\tlet approvedParent: string;\n\t\ttry {\n\t\t\tawait this.#registrationAwait(pending, access(parent));\n\t\t\tapprovedParent = await this.#registrationAwait(pending, realpath(parent));\n\t\t\tconst approvedParentAtPermission = options.approvedParent;\n\t\t\tif (approvedParentAtPermission !== undefined && approvedParent !== approvedParentAtPermission) {\n\t\t\t\tthrow new Error(`Cannot watch file: parent directory changed during permission approval: ${parent}`);\n\t\t\t}\n\t\t\tif (this.#disposed) throw new Error(\"Cannot create file monitor: monitor registry is disposed.\");\n\t\t} catch (error) {\n\t\t\tthis.#finishPending(pending);\n\t\t\tthis.#pendingRegistrations -= 1;\n\t\t\tif (error instanceof Error && error.message.includes(\"disposed\")) throw error;\n\t\t\tif ((error as NodeJS.ErrnoException)?.code !== \"ENOENT\") {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Cannot access parent directory ${parent}: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthrow new Error(`Cannot watch file: parent directory does not exist: ${parent}`);\n\t\t}\n\t\tlet initial: Awaited<ReturnType<typeof stat>> | null = null;\n\t\tlet initialHandle: FileHandle | undefined;\n\t\ttry {\n\t\t\tconst target = await this.#registrationAwait(pending, lstat(path));\n\t\t\tif (target.isSymbolicLink()) throw new Error(`Cannot watch file: target is a symbolic link: ${path}`);\n\t\t\tinitialHandle = await this.#registrationAwait(pending, open(path, \"r\"), async (handle) => {\n\t\t\t\tawait handle.close();\n\t\t\t});\n\t\t\tinitial = await this.#registrationAwait(pending, initialHandle.stat());\n\t\t\tif (!initial.isFile()) throw new Error(`Cannot watch file: target is not a regular file: ${path}`);\n\t\t\tconst resolvedTarget = await this.#registrationAwait(pending, realpath(path));\n\t\t\tif (resolvedTarget !== join(approvedParent, basename(path)))\n\t\t\t\tthrow new Error(`Cannot watch file: target identity changed: ${path}`);\n\t\t\tconst rebound = await this.#registrationAwait(pending, lstat(path));\n\t\t\tif (rebound.isSymbolicLink()) throw new Error(`Cannot watch file: target identity changed: ${path}`);\n\t\t\tconst reboundStat = await this.#registrationAwait(pending, stat(path));\n\t\t\tif (!reboundStat.isFile() || reboundStat.dev !== initial.dev || reboundStat.ino !== initial.ino)\n\t\t\t\tthrow new Error(`Cannot watch file: target identity changed: ${path}`);\n\t\t} catch (error) {\n\t\t\tawait initialHandle?.close();\n\t\t\tinitialHandle = undefined;\n\t\t\tif ((error as NodeJS.ErrnoException)?.code !== \"ENOENT\") {\n\t\t\t\tthis.#finishPending(pending);\n\t\t\t\tthis.#pendingRegistrations -= 1;\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t\tif (this.#disposed || lifecycle !== this.#lifecycle || this.#pendingRegistrations < 1) {\n\t\t\tthis.#finishPending(pending);\n\t\t\tthis.#pendingRegistrations -= 1;\n\t\t\tthrow new Error(\"Cannot create file monitor: monitor registry is disposed.\");\n\t\t}\n\t\tconst id = `watch_${this.#nextFileId++}`;\n\t\tlet watcher: FSWatcher;\n\t\ttry {\n\t\t\tconst activationParent = await this.#registrationAwait(pending, realpath(parent));\n\t\t\tif (activationParent !== approvedParent) {\n\t\t\t\tthrow new Error(`Cannot watch file: parent directory changed during registration: ${parent}`);\n\t\t\t}\n\t\t\twatcher = watch(activationParent, (_kind, name) => {\n\t\t\t\tif (!name || basename(String(name)) === basename(path)) void this.#checkFile(id);\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis.#finishPending(pending);\n\t\t\tthis.#pendingRegistrations -= 1;\n\t\t\tthrow new Error(`Cannot watch file ${path}: ${error instanceof Error ? error.message : String(error)}`);\n\t\t}\n\t\tlet registrationError: string | undefined;\n\t\twatcher.on(\"error\", (error) => {\n\t\t\tregistrationError = `watcher error: ${error instanceof Error ? error.message : String(error)}`;\n\t\t\tconst record = this.#files.get(id);\n\t\t\tif (record) this.#settleFile(record, registrationError);\n\t\t});\n\t\tlet registrationCleaned = false;\n\t\tconst finishRegistration = () => {\n\t\t\tif (registrationCleaned) return;\n\t\t\tregistrationCleaned = true;\n\t\t\tthis.#pendingRegistrations -= 1;\n\t\t};\n\t\tconst cleanupRegistration = () => {\n\t\t\tif (registrationCleaned) return;\n\t\t\twatcher.close();\n\t\t\tfinishRegistration();\n\t\t\tthis.#finishPending(pending);\n\t\t};\n\t\tif (this.#disposed || lifecycle !== this.#lifecycle) {\n\t\t\tcleanupRegistration();\n\t\t\tthrow new Error(\"Cannot create file monitor: monitor registry is disposed.\");\n\t\t}\n\t\tconst canonicalPath = join(approvedParent, basename(path));\n\t\tlet digest: string;\n\t\ttry {\n\t\t\tdigest =\n\t\t\t\tinitial && initialHandle\n\t\t\t\t\t? await this.#registrationAwait(pending, this.#digestHandle(initialHandle, pending.abort.signal))\n\t\t\t\t\t: \"\";\n\t\t} catch (error) {\n\t\t\tcleanupRegistration();\n\t\t\tawait initialHandle?.close();\n\t\t\tinitialHandle = undefined;\n\t\t\tif (registrationError) {\n\t\t\t\tthis.#emit({ type: \"summary\", id, description: options.description, summary: registrationError });\n\t\t\t\tthrow new Error(registrationError);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t\tawait initialHandle?.close();\n\t\tinitialHandle = undefined;\n\t\tif (registrationError) {\n\t\t\tcleanupRegistration();\n\t\t\tthis.#emit({ type: \"summary\", id, description: options.description, summary: registrationError });\n\t\t\tthrow new Error(registrationError);\n\t\t}\n\t\tif (this.#disposed || lifecycle !== this.#lifecycle) {\n\t\t\tcleanupRegistration();\n\t\t\tthrow new Error(\"Cannot create file monitor: monitor registry is disposed.\");\n\t\t}\n\t\tconst record: FileMonitorRecord = {\n\t\t\tid,\n\t\t\tmonitorId: options.monitorId ?? allocateMonitorId(),\n\t\t\tsessionId: id,\n\t\t\tdescription: options.description,\n\t\t\tstartedAtMs: Date.now(),\n\t\t\tpath,\n\t\t\tcanonicalPath,\n\t\t\tcanonicalParent: approvedParent,\n\t\t\tevent: options.event,\n\t\t\twatcher,\n\t\t\trelease: release ?? (() => {}),\n\t\t\tpoll: setInterval(() => void this.#checkFile(id), 250),\n\t\t\tpaused: false,\n\t\t\tsettled: false,\n\t\t\tpresent: initial !== null,\n\t\t\tmtimeMs: initial?.mtimeMs ?? 0,\n\t\t\tsize: initial?.size ?? 0,\n\t\t\tdigest,\n\t\t\tdevice: initial?.dev ?? 0,\n\t\t\tinode: initial?.ino ?? 0,\n\t\t\tpendingChange: false,\n\t\t\tdirty: false,\n\t\t\tdirtyPasses: 0,\n\t\t\tdirtyWindowStartedAt: 0,\n\t\t\tchecking: undefined,\n\t\t\tdeadline: setTimeout(() => {\n\t\t\t\tconst current = this.#files.get(id);\n\t\t\t\tif (current) this.#settleFile(current, \"watcher timed_out\");\n\t\t\t}, options.timeoutMs),\n\t\t};\n\t\tthis.#files.set(id, record);\n\t\tfinishRegistration();\n\t\tthis.#finishPending(pending, true);\n\t\tif (registrationError || this.#disposed || lifecycle !== this.#lifecycle) {\n\t\t\tthis.#settleFile(record, registrationError ?? \"watcher killed\");\n\t\t\tthrow new Error(registrationError ?? \"Cannot create file monitor: monitor registry is disposed.\");\n\t\t}\n\t\tthis.#notifyChange();\n\t\treturn { id, monitorId: record.monitorId };\n\t}\n\n\tasync stopFile(id: string): Promise<boolean> {\n\t\tconst record = this.#files.get(id);\n\t\tif (!record) return false;\n\t\tthis.#settleFile(record, \"watcher killed\");\n\t\treturn true;\n\t}\n\n\tasync stopAllFiles(): Promise<number> {\n\t\tthis.#lifecycle += 1;\n\t\tconst records = [...this.#files.values()];\n\t\tfor (const record of records) this.#settleFile(record, \"watcher killed\");\n\t\tfor (const pending of [...this.#pending]) this.#finishPending(pending);\n\t\treturn records.length;\n\t}\n\n\t#settleFile(record: FileMonitorRecord, summary: string): void {\n\t\tif (record.settled) return;\n\t\trecord.settled = true;\n\t\tclearInterval(record.poll);\n\t\tclearTimeout(record.deadline);\n\t\trecord.watcher.close();\n\t\trecord.release();\n\t\tthis.#files.delete(record.id);\n\t\tthis.#notifyChange();\n\t\tthis.#emit({ type: \"summary\", id: record.id, description: record.description, summary });\n\t}\n\n\tasync #checkFile(id: string): Promise<void> {\n\t\tconst record = this.#files.get(id);\n\t\tif (!record || record.settled) return;\n\t\tif (record.checking) {\n\t\t\trecord.dirty = true;\n\t\t\treturn;\n\t\t}\n\t\trecord.checking = this.#checkFileImpl(record)\n\t\t\t.catch((error) => {\n\t\t\t\tif (!record.settled)\n\t\t\t\t\tthis.#settleFile(record, `watcher error: ${error instanceof Error ? error.message : String(error)}`);\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\trecord.checking = undefined;\n\t\t\t\tconst now = Date.now();\n\t\t\t\tif (now - record.dirtyWindowStartedAt >= 1_000) {\n\t\t\t\t\trecord.dirtyWindowStartedAt = now;\n\t\t\t\t\trecord.dirtyPasses = 0;\n\t\t\t\t}\n\t\t\t\tif (record.dirty && !record.settled && record.dirtyPasses < 1) {\n\t\t\t\t\trecord.dirty = false;\n\t\t\t\t\trecord.dirtyPasses += 1;\n\t\t\t\t\tvoid this.#checkFile(id);\n\t\t\t\t} else {\n\t\t\t\t\trecord.dirty = false;\n\t\t\t\t}\n\t\t\t});\n\t\treturn record.checking;\n\t}\n\n\tasync #checkFileImpl(record: FileMonitorRecord): Promise<void> {\n\t\tif (record.settled) return;\n\t\tlet current: Awaited<ReturnType<typeof stat>> | null = null;\n\t\tlet handle: FileHandle | undefined;\n\t\ttry {\n\t\t\tconst currentParent = await realpath(dirname(record.path));\n\t\t\tif (currentParent !== record.canonicalParent) {\n\t\t\t\tthis.#settleFile(record, `watcher error: monitored parent changed: ${dirname(record.path)}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst target = await lstat(record.canonicalPath);\n\t\t\tif (target.isSymbolicLink()) throw new Error(`Cannot watch file: target identity changed: ${record.path}`);\n\t\t\tconst resolvedTarget = await realpath(record.canonicalPath);\n\t\t\tif (resolvedTarget !== record.canonicalPath)\n\t\t\t\tthrow new Error(`Cannot watch file: target identity changed: ${record.path}`);\n\t\t\thandle = await open(record.canonicalPath, \"r\");\n\t\t\tconst opened = await handle.stat();\n\t\t\tif (!opened.isFile()) throw new Error(`Cannot watch file: target is not a regular file: ${record.path}`);\n\t\t\tif ((opened.dev !== record.device || opened.ino !== record.inode) && opened.nlink > 1)\n\t\t\t\tthrow new Error(`Cannot watch file: target identity changed: ${record.path}`);\n\t\t\tcurrent = opened;\n\t\t\tconst rebound = await lstat(record.canonicalPath);\n\t\t\tif (rebound.isSymbolicLink()) throw new Error(`Cannot watch file: target identity changed: ${record.path}`);\n\t\t\tconst reboundPath = await stat(record.canonicalPath);\n\t\t\tif (!reboundPath.isFile() || reboundPath.dev !== opened.dev || reboundPath.ino !== opened.ino)\n\t\t\t\tthrow new Error(`Cannot watch file: target identity changed: ${record.path}`);\n\t\t} catch (error) {\n\t\t\tawait handle?.close();\n\t\t\tif ((error as NodeJS.ErrnoException)?.code !== \"ENOENT\") {\n\t\t\t\tthis.#settleFile(record, `watcher error: ${error instanceof Error ? error.message : String(error)}`);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tconst present = current !== null;\n\t\tlet digest = \"\";\n\t\ttry {\n\t\t\tdigest = present && handle ? await this.#digestHandle(handle) : \"\";\n\t\t\tif (present && handle) {\n\t\t\t\tconst afterDigest = await stat(record.canonicalPath);\n\t\t\t\tconst opened = await handle.stat();\n\t\t\t\tif (afterDigest.dev !== opened.dev || afterDigest.ino !== opened.ino)\n\t\t\t\t\tthrow new Error(`Cannot watch file: target identity changed: ${record.path}`);\n\t\t\t}\n\t\t} finally {\n\t\t\tawait handle?.close();\n\t\t}\n\t\tconst changed =\n\t\t\trecord.event === \"create\"\n\t\t\t\t? !record.present && present\n\t\t\t\t: record.present &&\n\t\t\t\t\tpresent &&\n\t\t\t\t\t(current!.mtimeMs !== record.mtimeMs || current!.size !== record.size || digest !== record.digest);\n\t\trecord.pendingChange ||= changed;\n\t\tif (!record.present && current) {\n\t\t\trecord.device = current.dev;\n\t\t\trecord.inode = current.ino;\n\t\t}\n\t\trecord.present = present;\n\t\trecord.mtimeMs = current?.mtimeMs ?? 0;\n\t\trecord.size = current?.size ?? 0;\n\t\trecord.digest = digest;\n\t\tif (!record.pendingChange || record.paused || record.settled) return;\n\t\trecord.pendingChange = false;\n\t\tif (record.settled) return;\n\t\tthis.#emit({\n\t\t\ttype: \"line\",\n\t\t\tid: record.id,\n\t\t\tdescription: record.description,\n\t\t\tline: `${record.event} ${record.path}`,\n\t\t});\n\t\tthis.#settleFile(record, \"watcher completed\");\n\t}\n\n\tregister(options: RegisterMonitorOptions): string {\n\t\tconst record: MonitorRecord = {\n\t\t\tid: options.id,\n\t\t\tmonitorId: options.monitorId ?? allocateMonitorId(),\n\t\t\tsessionId: options.id,\n\t\t\tdescription: options.description,\n\t\t\tstartedAtMs: Date.now(),\n\t\t\truntime: options.runtime,\n\t\t\tfilter: options.filter,\n\t\t\tlineBuffer: \"\",\n\t\t\tmutedDropped: 0,\n\t\t\tpaused: false,\n\t\t\tsettled: false,\n\t\t\tunsubscribeOutput: undefined,\n\t\t\tunsubscribeExit: undefined,\n\t\t};\n\t\tthis.#records.set(record.id, record);\n\t\tthis.#notifyChange();\n\n\t\t// Runtime output is already bounded. Read what was produced before monitor registration,\n\t\t// then subscribe synchronously so a fast watcher cannot lose its first line.\n\t\tthis.#consume(record, record.runtime.fullOutput());\n\t\trecord.unsubscribeOutput = record.runtime.onOutput((chunk) => this.#consume(record, chunk));\n\t\trecord.unsubscribeExit = record.runtime.session.onExit(() => this.#settle(record));\n\t\tif (record.runtime.exited) this.#settle(record);\n\t\treturn record.monitorId;\n\t}\n\n\tpause(ids: readonly string[]): string[] {\n\t\tconst paused: string[] = [];\n\t\tfor (const id of ids) {\n\t\t\tconst record = this.#records.get(id) ?? this.#files.get(id);\n\t\t\tif (!record || record.paused) continue;\n\t\t\trecord.paused = true;\n\t\t\tpaused.push(record.id);\n\t\t}\n\t\tif (paused.length > 0) this.#notifyChange();\n\t\treturn paused;\n\t}\n\n\tpauseAll(): string[] {\n\t\treturn this.pause([...this.#records.keys(), ...this.#files.keys()]);\n\t}\n\n\tresume(ids?: readonly string[]): MonitorResumeResult[] {\n\t\tconst candidates = ids ?? [...this.#records.keys(), ...this.#files.keys()];\n\t\tconst resumed: MonitorResumeResult[] = [];\n\t\tfor (const id of candidates) {\n\t\t\tconst record = this.#records.get(id) ?? this.#files.get(id);\n\t\t\tif (!record?.paused) continue;\n\t\t\trecord.paused = false;\n\t\t\tconst mutedDropped = \"mutedDropped\" in record ? record.mutedDropped : 0;\n\t\t\tif (\"mutedDropped\" in record) record.mutedDropped = 0;\n\t\t\tresumed.push({ id: record.id, mutedDropped });\n\t\t\tif (\"pendingChange\" in record && record.pendingChange) void this.#checkFile(record.id);\n\t\t}\n\t\tif (resumed.length > 0) this.#notifyChange();\n\t\treturn resumed;\n\t}\n\n\tmutedDropped(id: string): number {\n\t\treturn this.#records.get(id)?.mutedDropped ?? 0;\n\t}\n\n\trearm(id: string): MonitorRearmResult {\n\t\tconst record = this.#records.get(id) ?? this.#files.get(id);\n\t\tif (!record) return \"not_found\";\n\t\tif (!record.paused) return \"not_paused\";\n\t\tthis.resume([id]);\n\t\treturn \"rearmed\";\n\t}\n\n\tdispose(): void {\n\t\tthis.#disposed = true;\n\t\tthis.#lifecycle += 1;\n\t\tfor (const record of this.#records.values()) this.#disposeRecord(record);\n\t\tfor (const record of this.#files.values()) this.#settleFile(record, \"watcher disposed\");\n\t\tfor (const pending of this.#pending) this.#finishPending(pending);\n\t\tthis.#records.clear();\n\t\tthis.#notifyChange();\n\t}\n\n\t#finishPending(pending: PendingFileRegistration, transfer = false): void {\n\t\tif (pending.settled) return;\n\t\tpending.settled = true;\n\t\tclearTimeout(pending.deadline);\n\t\tthis.#pending.delete(pending);\n\t\tif (transfer) pending.release = undefined;\n\t\telse {\n\t\t\tpending.abort.abort();\n\t\t\tpending.release?.();\n\t\t}\n\t}\n\n\tasync #registrationAwait<T>(\n\t\tpending: PendingFileRegistration,\n\t\toperation: Promise<T>,\n\t\tlateCleanup?: (value: T) => Promise<void>,\n\t): Promise<T> {\n\t\tif (pending.abort.signal.aborted) {\n\t\t\tvoid operation.then(\n\t\t\t\t(value) => lateCleanup?.(value),\n\t\t\t\t() => undefined,\n\t\t\t);\n\t\t\tthrow new Error(\"Cannot create file monitor: registration timed out or was disposed.\");\n\t\t}\n\t\tlet aborted = false;\n\t\tconst abort = new Promise<never>((_, reject) =>\n\t\t\tpending.abort.signal.addEventListener(\n\t\t\t\t\"abort\",\n\t\t\t\t() => {\n\t\t\t\t\taborted = true;\n\t\t\t\t\treject(new Error(\"Cannot create file monitor: registration timed out or was disposed.\"));\n\t\t\t\t},\n\t\t\t\t{ once: true },\n\t\t\t),\n\t\t);\n\t\tconst guarded = operation.then(\n\t\t\t(value) => {\n\t\t\t\tif (aborted) void lateCleanup?.(value);\n\t\t\t\treturn value;\n\t\t\t},\n\t\t\t(error) => {\n\t\t\t\tif (aborted) return undefined as T;\n\t\t\t\tthrow error;\n\t\t\t},\n\t\t);\n\t\treturn Promise.race([guarded, abort]);\n\t}\n\n\tasync #digestHandle(handle: FileHandle, signal?: AbortSignal): Promise<string> {\n\t\tconst SAMPLE_SIZE = 64 * 1024;\n\t\tif (signal?.aborted) throw new Error(\"file monitor registration cancelled\");\n\t\tconst metadata = await handle.stat();\n\t\tconst hash = createHash(\"sha256\");\n\t\tconst first = Buffer.alloc(Math.min(SAMPLE_SIZE, metadata.size));\n\t\tif (first.length > 0) {\n\t\t\tawait handle.read(first, 0, first.length, 0);\n\t\t\thash.update(first);\n\t\t}\n\t\tif (metadata.size > SAMPLE_SIZE) {\n\t\t\tconst middle = Buffer.alloc(SAMPLE_SIZE);\n\t\t\tawait handle.read(middle, 0, middle.length, Math.floor((metadata.size - middle.length) / 2));\n\t\t\thash.update(middle);\n\t\t\tconst last = Buffer.alloc(SAMPLE_SIZE);\n\t\t\tawait handle.read(last, 0, last.length, metadata.size - last.length);\n\t\t\thash.update(last);\n\t\t}\n\t\treturn `${metadata.size}:${hash.digest(\"hex\")}`;\n\t}\n\n\t#notifyChange(): void {\n\t\tthis.#onChange?.(this.snapshot());\n\t}\n\n\t#consume(record: MonitorRecord, chunk: string): void {\n\t\tif (record.settled || chunk.length === 0) return;\n\t\tlet remaining = record.lineBuffer + chunk;\n\t\tfor (;;) {\n\t\t\tconst newline = remaining.indexOf(\"\\n\");\n\t\t\tif (newline < 0) break;\n\t\t\tconst rawLine = remaining.slice(0, newline);\n\t\t\tremaining = remaining.slice(newline + 1);\n\t\t\tconst line = rawLine.endsWith(\"\\r\") ? rawLine.slice(0, -1) : rawLine;\n\t\t\tconst matchesFilter = !record.filter || record.filter.test(line);\n\t\t\tif (!matchesFilter) continue;\n\t\t\tif (record.paused) {\n\t\t\t\trecord.mutedDropped += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis.#emit({ type: \"line\", id: record.id, description: record.description, line });\n\t\t}\n\t\trecord.lineBuffer = remaining;\n\t}\n\n\t#settle(record: MonitorRecord): void {\n\t\tif (record.settled) return;\n\t\trecord.settled = true;\n\t\trecord.unsubscribeOutput?.();\n\t\trecord.unsubscribeExit?.();\n\t\tthis.#records.delete(record.id);\n\t\tthis.#notifyChange();\n\t\tconst status = describeExit(record.runtime) ?? \"exited\";\n\t\tconst code = record.runtime.exitResult?.exitCode;\n\t\tconst codeText = code === null || code === undefined ? \"\" : ` (exit code ${code})`;\n\t\tthis.#emit({\n\t\t\ttype: \"summary\",\n\t\t\tid: record.id,\n\t\t\tdescription: record.description,\n\t\t\tsummary: `watcher ${status}${codeText}`,\n\t\t});\n\t}\n\n\t#disposeRecord(record: MonitorRecord): void {\n\t\trecord.settled = true;\n\t\trecord.unsubscribeOutput?.();\n\t\trecord.unsubscribeExit?.();\n\t}\n}\n"]}
@@ -1,3 +1,14 @@
1
- /** System-prompt guidance for the persistent-terminal tool suite (CC-close, snake_case). */
2
- export declare const TERMINAL_PROMPT_SECTION = "\n## Persistent terminal sessions\n\nThe `bash` tool is PTY-backed. For long-running or interactive work, do NOT use tmux or\nmanual `&` backgrounding \u2014 use the built-in session tools:\n\n- `bash({ command, run_in_background: true })` starts a persistent session and returns a\n `bash_id` immediately. Foreground calls still block and return output; their `timeout`\n (seconds) is a kill deadline. Background sessions ignore `timeout` and live until they\n exit or you call `kill_bash`.\n- `bash_output({ bash_id, filter, view })` peeks at a session without blocking: new output\n since the last read, the status line, or a rendered full-screen snapshot of TUIs via\n `view: \"screen\"`. Completion arrives as a notification carrying the exit code and output\n tail \u2014 peeking is for steering, never for waiting.\n- `monitor` subscribes you to a change. Pass `command` XOR `path` \u2014 one branch per call,\n never both:\n - `monitor({ description, command, filter?, timeout_ms?, persistent? })` watches a command:\n newline-terminated PTY output lines (stderr included) matching `filter` arrive as injected\n events while you keep working; command exit always delivers a summary. One-shot gate: wait\n inside the command and print one sentinel (`until <cond>; do sleep 1; done;\n printf 'READY\\n'`). Stream: `tail -n 0 -F | grep --line-buffered`. Filter noise at the\n source and stop with `kill_bash`.\n - `monitor({ description, path, event? })` natively watches one regular file and fires once \u2014\n prefer it over a shell poll loop. `\"create\"` (the default) fires only when the file appears\n after registration, so watch an already-existing file with `\"modify\"`; registration needs the\n parent directory to exist already, so poll with a `command` when the run creates that\n directory too. This branch takes no `filter` and no `persistent`.\n Identical updates are deduped; repeated monitor-only wakes pause the noisy monitor(s) that\n caused them, not all monitors. Completion still wakes the session, and\n `monitor({ action: \"rearm\", bash_id })` resumes one while `monitor({ action: \"rearm\" })`\n resumes all paused monitors; real user input also resumes paused monitors.\n- `bash_input({ bash_id, input, keys, submit })` sends stdin or named keys (e.g.\n `[\"ctrl+c\"]`, `[\"enter\"]`) to steer a REPL or interrupt a process.\n- `bash_resize({ bash_id, cols, rows })` resizes the PTY so full-screen programs reflow.\n- `kill_bash({ bash_id })` (or `{ all: true }`) tears the session tree down with no orphans.\n";
1
+ export interface TerminalPromptOptions {
2
+ /** True when the session routes shell tools through eval cells, so call shapes must be `tool.<name>(`. */
3
+ readonly evalOnly: boolean;
4
+ }
5
+ /**
6
+ * System-prompt guidance for the persistent-terminal tool suite (CC-close, snake_case).
7
+ *
8
+ * `bash` and `monitor` leave the model's direct tool list whenever the session has an
9
+ * `eval` tool, so their call shapes are rendered per branch: a hardcoded direct shape
10
+ * would teach a call the model cannot make. The steering companions
11
+ * (`bash_output`/`bash_input`/`bash_resize`/`kill_bash`) stay directly callable in both.
12
+ */
13
+ export declare function buildTerminalPromptSection(options: TerminalPromptOptions): string;
3
14
  //# sourceMappingURL=prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/terminal/prompt.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,eAAO,MAAM,uBAAuB,8hFAmCnC,CAAC"}
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/terminal/prompt.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACrC,0GAA0G;IAC1G,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAuCjF"}
@@ -1,11 +1,21 @@
1
- /** System-prompt guidance for the persistent-terminal tool suite (CC-close, snake_case). */
2
- export const TERMINAL_PROMPT_SECTION = `
1
+ /**
2
+ * System-prompt guidance for the persistent-terminal tool suite (CC-close, snake_case).
3
+ *
4
+ * `bash` and `monitor` leave the model's direct tool list whenever the session has an
5
+ * `eval` tool, so their call shapes are rendered per branch: a hardcoded direct shape
6
+ * would teach a call the model cannot make. The steering companions
7
+ * (`bash_output`/`bash_input`/`bash_resize`/`kill_bash`) stay directly callable in both.
8
+ */
9
+ export function buildTerminalPromptSection(options) {
10
+ const bash = options.evalOnly ? "tool.bash" : "bash";
11
+ const monitor = options.evalOnly ? "tool.monitor" : "monitor";
12
+ return `
3
13
  ## Persistent terminal sessions
4
14
 
5
15
  The \`bash\` tool is PTY-backed. For long-running or interactive work, do NOT use tmux or
6
16
  manual \`&\` backgrounding — use the built-in session tools:
7
17
 
8
- - \`bash({ command, run_in_background: true })\` starts a persistent session and returns a
18
+ - \`${bash}({ command, run_in_background: true })\` starts a persistent session and returns a
9
19
  \`bash_id\` immediately. Foreground calls still block and return output; their \`timeout\`
10
20
  (seconds) is a kill deadline. Background sessions ignore \`timeout\` and live until they
11
21
  exit or you call \`kill_bash\`.
@@ -13,26 +23,27 @@ manual \`&\` backgrounding — use the built-in session tools:
13
23
  since the last read, the status line, or a rendered full-screen snapshot of TUIs via
14
24
  \`view: "screen"\`. Completion arrives as a notification carrying the exit code and output
15
25
  tail — peeking is for steering, never for waiting.
16
- - \`monitor\` subscribes you to a change. Pass \`command\` XOR \`path\` — one branch per call,
26
+ - \`${monitor}\` subscribes you to a change. Pass \`command\` XOR \`path\` — one branch per call,
17
27
  never both:
18
- - \`monitor({ description, command, filter?, timeout_ms?, persistent? })\` watches a command:
28
+ - \`${monitor}({ description, command, filter?, timeout_ms?, persistent? })\` watches a command:
19
29
  newline-terminated PTY output lines (stderr included) matching \`filter\` arrive as injected
20
30
  events while you keep working; command exit always delivers a summary. One-shot gate: wait
21
31
  inside the command and print one sentinel (\`until <cond>; do sleep 1; done;
22
32
  printf 'READY\\n'\`). Stream: \`tail -n 0 -F | grep --line-buffered\`. Filter noise at the
23
33
  source and stop with \`kill_bash\`.
24
- - \`monitor({ description, path, event? })\` natively watches one regular file and fires once —
34
+ - \`${monitor}({ description, path, event? })\` natively watches one regular file and fires once —
25
35
  prefer it over a shell poll loop. \`"create"\` (the default) fires only when the file appears
26
36
  after registration, so watch an already-existing file with \`"modify"\`; registration needs the
27
37
  parent directory to exist already, so poll with a \`command\` when the run creates that
28
38
  directory too. This branch takes no \`filter\` and no \`persistent\`.
29
39
  Identical updates are deduped; repeated monitor-only wakes pause the noisy monitor(s) that
30
40
  caused them, not all monitors. Completion still wakes the session, and
31
- \`monitor({ action: "rearm", bash_id })\` resumes one while \`monitor({ action: "rearm" })\`
41
+ \`${monitor}({ action: "rearm", bash_id })\` resumes one while \`${monitor}({ action: "rearm" })\`
32
42
  resumes all paused monitors; real user input also resumes paused monitors.
33
43
  - \`bash_input({ bash_id, input, keys, submit })\` sends stdin or named keys (e.g.
34
44
  \`["ctrl+c"]\`, \`["enter"]\`) to steer a REPL or interrupt a process.
35
45
  - \`bash_resize({ bash_id, cols, rows })\` resizes the PTY so full-screen programs reflow.
36
46
  - \`kill_bash({ bash_id })\` (or \`{ all: true }\`) tears the session tree down with no orphans.
37
47
  `;
48
+ }
38
49
  //# sourceMappingURL=prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/terminal/prompt.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCtC,CAAC","sourcesContent":["/** System-prompt guidance for the persistent-terminal tool suite (CC-close, snake_case). */\nexport const TERMINAL_PROMPT_SECTION = `\n## Persistent terminal sessions\n\nThe \\`bash\\` tool is PTY-backed. For long-running or interactive work, do NOT use tmux or\nmanual \\`&\\` backgrounding — use the built-in session tools:\n\n- \\`bash({ command, run_in_background: true })\\` starts a persistent session and returns a\n \\`bash_id\\` immediately. Foreground calls still block and return output; their \\`timeout\\`\n (seconds) is a kill deadline. Background sessions ignore \\`timeout\\` and live until they\n exit or you call \\`kill_bash\\`.\n- \\`bash_output({ bash_id, filter, view })\\` peeks at a session without blocking: new output\n since the last read, the status line, or a rendered full-screen snapshot of TUIs via\n \\`view: \"screen\"\\`. Completion arrives as a notification carrying the exit code and output\n tail — peeking is for steering, never for waiting.\n- \\`monitor\\` subscribes you to a change. Pass \\`command\\` XOR \\`path\\` — one branch per call,\n never both:\n - \\`monitor({ description, command, filter?, timeout_ms?, persistent? })\\` watches a command:\n newline-terminated PTY output lines (stderr included) matching \\`filter\\` arrive as injected\n events while you keep working; command exit always delivers a summary. One-shot gate: wait\n inside the command and print one sentinel (\\`until <cond>; do sleep 1; done;\n printf 'READY\\\\n'\\`). Stream: \\`tail -n 0 -F | grep --line-buffered\\`. Filter noise at the\n source and stop with \\`kill_bash\\`.\n - \\`monitor({ description, path, event? })\\` natively watches one regular file and fires once —\n prefer it over a shell poll loop. \\`\"create\"\\` (the default) fires only when the file appears\n after registration, so watch an already-existing file with \\`\"modify\"\\`; registration needs the\n parent directory to exist already, so poll with a \\`command\\` when the run creates that\n directory too. This branch takes no \\`filter\\` and no \\`persistent\\`.\n Identical updates are deduped; repeated monitor-only wakes pause the noisy monitor(s) that\n caused them, not all monitors. Completion still wakes the session, and\n \\`monitor({ action: \"rearm\", bash_id })\\` resumes one while \\`monitor({ action: \"rearm\" })\\`\n resumes all paused monitors; real user input also resumes paused monitors.\n- \\`bash_input({ bash_id, input, keys, submit })\\` sends stdin or named keys (e.g.\n \\`[\"ctrl+c\"]\\`, \\`[\"enter\"]\\`) to steer a REPL or interrupt a process.\n- \\`bash_resize({ bash_id, cols, rows })\\` resizes the PTY so full-screen programs reflow.\n- \\`kill_bash({ bash_id })\\` (or \\`{ all: true }\\`) tears the session tree down with no orphans.\n`;\n"]}
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/terminal/prompt.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAA8B;IACxE,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,OAAO;;;;;;MAMF,IAAI;;;;;;;;MAQJ,OAAO;;QAEL,OAAO;;;;;;QAMP,OAAO;;;;;;;MAOT,OAAO,wDAAwD,OAAO;;;;;;CAM3E,CAAC;AACF,CAAC","sourcesContent":["export interface TerminalPromptOptions {\n\t/** True when the session routes shell tools through eval cells, so call shapes must be `tool.<name>(`. */\n\treadonly evalOnly: boolean;\n}\n\n/**\n * System-prompt guidance for the persistent-terminal tool suite (CC-close, snake_case).\n *\n * `bash` and `monitor` leave the model's direct tool list whenever the session has an\n * `eval` tool, so their call shapes are rendered per branch: a hardcoded direct shape\n * would teach a call the model cannot make. The steering companions\n * (`bash_output`/`bash_input`/`bash_resize`/`kill_bash`) stay directly callable in both.\n */\nexport function buildTerminalPromptSection(options: TerminalPromptOptions): string {\n\tconst bash = options.evalOnly ? \"tool.bash\" : \"bash\";\n\tconst monitor = options.evalOnly ? \"tool.monitor\" : \"monitor\";\n\treturn `\n## Persistent terminal sessions\n\nThe \\`bash\\` tool is PTY-backed. For long-running or interactive work, do NOT use tmux or\nmanual \\`&\\` backgrounding — use the built-in session tools:\n\n- \\`${bash}({ command, run_in_background: true })\\` starts a persistent session and returns a\n \\`bash_id\\` immediately. Foreground calls still block and return output; their \\`timeout\\`\n (seconds) is a kill deadline. Background sessions ignore \\`timeout\\` and live until they\n exit or you call \\`kill_bash\\`.\n- \\`bash_output({ bash_id, filter, view })\\` peeks at a session without blocking: new output\n since the last read, the status line, or a rendered full-screen snapshot of TUIs via\n \\`view: \"screen\"\\`. Completion arrives as a notification carrying the exit code and output\n tail — peeking is for steering, never for waiting.\n- \\`${monitor}\\` subscribes you to a change. Pass \\`command\\` XOR \\`path\\` — one branch per call,\n never both:\n - \\`${monitor}({ description, command, filter?, timeout_ms?, persistent? })\\` watches a command:\n newline-terminated PTY output lines (stderr included) matching \\`filter\\` arrive as injected\n events while you keep working; command exit always delivers a summary. One-shot gate: wait\n inside the command and print one sentinel (\\`until <cond>; do sleep 1; done;\n printf 'READY\\\\n'\\`). Stream: \\`tail -n 0 -F | grep --line-buffered\\`. Filter noise at the\n source and stop with \\`kill_bash\\`.\n - \\`${monitor}({ description, path, event? })\\` natively watches one regular file and fires once —\n prefer it over a shell poll loop. \\`\"create\"\\` (the default) fires only when the file appears\n after registration, so watch an already-existing file with \\`\"modify\"\\`; registration needs the\n parent directory to exist already, so poll with a \\`command\\` when the run creates that\n directory too. This branch takes no \\`filter\\` and no \\`persistent\\`.\n Identical updates are deduped; repeated monitor-only wakes pause the noisy monitor(s) that\n caused them, not all monitors. Completion still wakes the session, and\n \\`${monitor}({ action: \"rearm\", bash_id })\\` resumes one while \\`${monitor}({ action: \"rearm\" })\\`\n resumes all paused monitors; real user input also resumes paused monitors.\n- \\`bash_input({ bash_id, input, keys, submit })\\` sends stdin or named keys (e.g.\n \\`[\"ctrl+c\"]\\`, \\`[\"enter\"]\\`) to steer a REPL or interrupt a process.\n- \\`bash_resize({ bash_id, cols, rows })\\` resizes the PTY so full-screen programs reflow.\n- \\`kill_bash({ bash_id })\\` (or \\`{ all: true }\\`) tears the session tree down with no orphans.\n`;\n}\n"]}