@xrkseek/harness 0.4.0-rc.4 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (625) hide show
  1. package/dist/index.d.ts +3 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +3 -2
  4. package/dist/index.js.map +1 -1
  5. package/node_modules/@xrkseek/checkpoint/README.md +88 -0
  6. package/node_modules/@xrkseek/checkpoint/dist/index.d.ts +5 -0
  7. package/node_modules/@xrkseek/checkpoint/dist/index.d.ts.map +1 -0
  8. package/node_modules/@xrkseek/checkpoint/dist/index.js +5 -0
  9. package/node_modules/@xrkseek/checkpoint/dist/index.js.map +1 -0
  10. package/node_modules/@xrkseek/checkpoint/dist/json-file.d.ts +5 -0
  11. package/node_modules/@xrkseek/checkpoint/dist/json-file.d.ts.map +1 -0
  12. package/node_modules/@xrkseek/checkpoint/dist/json-file.js +29 -0
  13. package/node_modules/@xrkseek/checkpoint/dist/json-file.js.map +1 -0
  14. package/node_modules/@xrkseek/checkpoint/dist/process-git.d.ts +8 -0
  15. package/node_modules/@xrkseek/checkpoint/dist/process-git.d.ts.map +1 -0
  16. package/node_modules/@xrkseek/checkpoint/dist/process-git.js +40 -0
  17. package/node_modules/@xrkseek/checkpoint/dist/process-git.js.map +1 -0
  18. package/node_modules/@xrkseek/checkpoint/dist/store.d.ts +101 -0
  19. package/node_modules/@xrkseek/checkpoint/dist/store.d.ts.map +1 -0
  20. package/node_modules/@xrkseek/checkpoint/dist/store.js +312 -0
  21. package/node_modules/@xrkseek/checkpoint/dist/store.js.map +1 -0
  22. package/node_modules/@xrkseek/checkpoint/dist/types.d.ts +65 -0
  23. package/node_modules/@xrkseek/checkpoint/dist/types.d.ts.map +1 -0
  24. package/node_modules/@xrkseek/checkpoint/dist/types.js +18 -0
  25. package/node_modules/@xrkseek/checkpoint/dist/types.js.map +1 -0
  26. package/node_modules/@xrkseek/checkpoint/package.json +23 -0
  27. package/node_modules/@xrkseek/code-runtime/README.md +11 -4
  28. package/node_modules/@xrkseek/code-runtime/dist/index.d.ts +43 -3
  29. package/node_modules/@xrkseek/code-runtime/dist/index.d.ts.map +1 -1
  30. package/node_modules/@xrkseek/code-runtime/dist/index.js +209 -7
  31. package/node_modules/@xrkseek/code-runtime/dist/index.js.map +1 -1
  32. package/node_modules/@xrkseek/context-fragments/README.md +28 -0
  33. package/node_modules/@xrkseek/context-fragments/dist/index.d.ts +104 -0
  34. package/node_modules/@xrkseek/context-fragments/dist/index.d.ts.map +1 -0
  35. package/node_modules/@xrkseek/context-fragments/dist/index.js +192 -0
  36. package/node_modules/@xrkseek/context-fragments/dist/index.js.map +1 -0
  37. package/node_modules/@xrkseek/context-fragments/package.json +27 -0
  38. package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts +1 -1
  39. package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts.map +1 -1
  40. package/node_modules/@xrkseek/core-agent-loop/dist/index.js +7 -4
  41. package/node_modules/@xrkseek/core-agent-loop/dist/index.js.map +1 -1
  42. package/node_modules/@xrkseek/core-agent-loop/dist/invariant.d.ts +11 -0
  43. package/node_modules/@xrkseek/core-agent-loop/dist/invariant.d.ts.map +1 -0
  44. package/node_modules/@xrkseek/core-agent-loop/dist/invariant.js +21 -0
  45. package/node_modules/@xrkseek/core-agent-loop/dist/invariant.js.map +1 -0
  46. package/node_modules/@xrkseek/core-agent-loop/dist/tool-result-bound.d.ts +7 -5
  47. package/node_modules/@xrkseek/core-agent-loop/dist/tool-result-bound.d.ts.map +1 -1
  48. package/node_modules/@xrkseek/core-agent-loop/dist/tool-result-bound.js +24 -109
  49. package/node_modules/@xrkseek/core-agent-loop/dist/tool-result-bound.js.map +1 -1
  50. package/node_modules/@xrkseek/core-agent-loop/package.json +7 -0
  51. package/node_modules/@xrkseek/core-session/README.md +3 -1
  52. package/node_modules/@xrkseek/core-session/dist/invariant.d.ts +18 -0
  53. package/node_modules/@xrkseek/core-session/dist/invariant.d.ts.map +1 -0
  54. package/node_modules/@xrkseek/core-session/dist/invariant.js +114 -0
  55. package/node_modules/@xrkseek/core-session/dist/invariant.js.map +1 -0
  56. package/node_modules/@xrkseek/core-session/dist/session-interchange.d.ts +2 -1
  57. package/node_modules/@xrkseek/core-session/dist/session-interchange.d.ts.map +1 -1
  58. package/node_modules/@xrkseek/core-session/dist/session-interchange.js +6 -1
  59. package/node_modules/@xrkseek/core-session/dist/session-interchange.js.map +1 -1
  60. package/node_modules/@xrkseek/core-session/dist/sqlite-store.d.ts.map +1 -1
  61. package/node_modules/@xrkseek/core-session/dist/sqlite-store.js +37 -23
  62. package/node_modules/@xrkseek/core-session/dist/sqlite-store.js.map +1 -1
  63. package/node_modules/@xrkseek/core-session/package.json +33 -26
  64. package/node_modules/@xrkseek/core-system-prompt/README.md +7 -7
  65. package/node_modules/@xrkseek/core-system-prompt/dist/index.d.ts +1 -1
  66. package/node_modules/@xrkseek/core-system-prompt/dist/index.d.ts.map +1 -1
  67. package/node_modules/@xrkseek/core-system-prompt/dist/index.js +1 -1
  68. package/node_modules/@xrkseek/core-system-prompt/dist/index.js.map +1 -1
  69. package/node_modules/@xrkseek/core-system-prompt/dist/three-layer.d.ts +55 -3
  70. package/node_modules/@xrkseek/core-system-prompt/dist/three-layer.d.ts.map +1 -1
  71. package/node_modules/@xrkseek/core-system-prompt/dist/three-layer.js +107 -11
  72. package/node_modules/@xrkseek/core-system-prompt/dist/three-layer.js.map +1 -1
  73. package/node_modules/@xrkseek/core-tools/dist/guards.d.ts +9 -1
  74. package/node_modules/@xrkseek/core-tools/dist/guards.d.ts.map +1 -1
  75. package/node_modules/@xrkseek/core-tools/dist/guards.js +53 -9
  76. package/node_modules/@xrkseek/core-tools/dist/guards.js.map +1 -1
  77. package/node_modules/@xrkseek/core-tools/dist/index.d.ts +2 -1
  78. package/node_modules/@xrkseek/core-tools/dist/index.d.ts.map +1 -1
  79. package/node_modules/@xrkseek/core-tools/dist/index.js +2 -1
  80. package/node_modules/@xrkseek/core-tools/dist/index.js.map +1 -1
  81. package/node_modules/@xrkseek/core-tools/dist/session-query-prompt.d.ts +5 -0
  82. package/node_modules/@xrkseek/core-tools/dist/session-query-prompt.d.ts.map +1 -0
  83. package/node_modules/@xrkseek/core-tools/dist/session-query-prompt.js +12 -0
  84. package/node_modules/@xrkseek/core-tools/dist/session-query-prompt.js.map +1 -0
  85. package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.d.ts.map +1 -1
  86. package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.js +6 -2
  87. package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.js.map +1 -1
  88. package/node_modules/@xrkseek/exec-computer-use/README.md +1 -1
  89. package/node_modules/@xrkseek/exec-computer-use/dist/format.d.ts.map +1 -1
  90. package/node_modules/@xrkseek/exec-computer-use/dist/format.js +7 -5
  91. package/node_modules/@xrkseek/exec-computer-use/dist/format.js.map +1 -1
  92. package/node_modules/@xrkseek/exec-computer-use/dist/index.d.ts +14 -3
  93. package/node_modules/@xrkseek/exec-computer-use/dist/index.d.ts.map +1 -1
  94. package/node_modules/@xrkseek/exec-computer-use/dist/index.js +22 -8
  95. package/node_modules/@xrkseek/exec-computer-use/dist/index.js.map +1 -1
  96. package/node_modules/@xrkseek/exec-computer-use/dist/keys.d.ts +10 -0
  97. package/node_modules/@xrkseek/exec-computer-use/dist/keys.d.ts.map +1 -0
  98. package/node_modules/@xrkseek/exec-computer-use/dist/keys.js +89 -0
  99. package/node_modules/@xrkseek/exec-computer-use/dist/keys.js.map +1 -0
  100. package/node_modules/@xrkseek/exec-computer-use/dist/tools.d.ts +3 -1
  101. package/node_modules/@xrkseek/exec-computer-use/dist/tools.d.ts.map +1 -1
  102. package/node_modules/@xrkseek/exec-computer-use/dist/tools.js +12 -8
  103. package/node_modules/@xrkseek/exec-computer-use/dist/tools.js.map +1 -1
  104. package/node_modules/@xrkseek/exec-computer-use/dist/windows-uia.d.ts.map +1 -1
  105. package/node_modules/@xrkseek/exec-computer-use/dist/windows-uia.js +138 -2
  106. package/node_modules/@xrkseek/exec-computer-use/dist/windows-uia.js.map +1 -1
  107. package/node_modules/@xrkseek/exec-fs/README.md +12 -9
  108. package/node_modules/@xrkseek/exec-fs/dist/apply-patch-apply.d.ts +32 -0
  109. package/node_modules/@xrkseek/exec-fs/dist/apply-patch-apply.d.ts.map +1 -0
  110. package/node_modules/@xrkseek/exec-fs/dist/apply-patch-apply.js +203 -0
  111. package/node_modules/@xrkseek/exec-fs/dist/apply-patch-apply.js.map +1 -0
  112. package/node_modules/@xrkseek/exec-fs/dist/apply-patch-parser.d.ts +52 -0
  113. package/node_modules/@xrkseek/exec-fs/dist/apply-patch-parser.d.ts.map +1 -0
  114. package/node_modules/@xrkseek/exec-fs/dist/apply-patch-parser.js +260 -0
  115. package/node_modules/@xrkseek/exec-fs/dist/apply-patch-parser.js.map +1 -0
  116. package/node_modules/@xrkseek/exec-fs/dist/apply-patch.d.ts +27 -0
  117. package/node_modules/@xrkseek/exec-fs/dist/apply-patch.d.ts.map +1 -0
  118. package/node_modules/@xrkseek/exec-fs/dist/apply-patch.js +69 -0
  119. package/node_modules/@xrkseek/exec-fs/dist/apply-patch.js.map +1 -0
  120. package/node_modules/@xrkseek/exec-fs/dist/index.d.ts +6 -1
  121. package/node_modules/@xrkseek/exec-fs/dist/index.d.ts.map +1 -1
  122. package/node_modules/@xrkseek/exec-fs/dist/index.js +72 -3
  123. package/node_modules/@xrkseek/exec-fs/dist/index.js.map +1 -1
  124. package/node_modules/@xrkseek/exec-fs/dist/present.d.ts +4 -0
  125. package/node_modules/@xrkseek/exec-fs/dist/present.d.ts.map +1 -1
  126. package/node_modules/@xrkseek/exec-fs/dist/present.js +25 -0
  127. package/node_modules/@xrkseek/exec-fs/dist/present.js.map +1 -1
  128. package/node_modules/@xrkseek/exec-fs/dist/routing-prompt.d.ts +1 -1
  129. package/node_modules/@xrkseek/exec-fs/dist/routing-prompt.d.ts.map +1 -1
  130. package/node_modules/@xrkseek/exec-fs/dist/routing-prompt.js +10 -6
  131. package/node_modules/@xrkseek/exec-fs/dist/routing-prompt.js.map +1 -1
  132. package/node_modules/@xrkseek/exec-image-gen/dist/index.d.ts +15 -2
  133. package/node_modules/@xrkseek/exec-image-gen/dist/index.d.ts.map +1 -1
  134. package/node_modules/@xrkseek/exec-image-gen/dist/index.js +14 -7
  135. package/node_modules/@xrkseek/exec-image-gen/dist/index.js.map +1 -1
  136. package/node_modules/@xrkseek/exec-image-gen/dist/tools.d.ts +6 -1
  137. package/node_modules/@xrkseek/exec-image-gen/dist/tools.d.ts.map +1 -1
  138. package/node_modules/@xrkseek/exec-image-gen/dist/tools.js +14 -8
  139. package/node_modules/@xrkseek/exec-image-gen/dist/tools.js.map +1 -1
  140. package/node_modules/@xrkseek/exec-memory/README.md +5 -3
  141. package/node_modules/@xrkseek/exec-memory/dist/http.d.ts +42 -0
  142. package/node_modules/@xrkseek/exec-memory/dist/http.d.ts.map +1 -0
  143. package/node_modules/@xrkseek/exec-memory/dist/http.js +232 -0
  144. package/node_modules/@xrkseek/exec-memory/dist/http.js.map +1 -0
  145. package/node_modules/@xrkseek/exec-memory/dist/index.d.ts +5 -2
  146. package/node_modules/@xrkseek/exec-memory/dist/index.d.ts.map +1 -1
  147. package/node_modules/@xrkseek/exec-memory/dist/index.js +3 -1
  148. package/node_modules/@xrkseek/exec-memory/dist/index.js.map +1 -1
  149. package/node_modules/@xrkseek/exec-memory/dist/provider.d.ts +19 -0
  150. package/node_modules/@xrkseek/exec-memory/dist/provider.d.ts.map +1 -0
  151. package/node_modules/@xrkseek/exec-memory/dist/provider.js +8 -0
  152. package/node_modules/@xrkseek/exec-memory/dist/provider.js.map +1 -0
  153. package/node_modules/@xrkseek/exec-memory/dist/resolve.d.ts +25 -0
  154. package/node_modules/@xrkseek/exec-memory/dist/resolve.d.ts.map +1 -0
  155. package/node_modules/@xrkseek/exec-memory/dist/resolve.js +46 -0
  156. package/node_modules/@xrkseek/exec-memory/dist/resolve.js.map +1 -0
  157. package/node_modules/@xrkseek/exec-memory/dist/store.d.ts +8 -4
  158. package/node_modules/@xrkseek/exec-memory/dist/store.d.ts.map +1 -1
  159. package/node_modules/@xrkseek/exec-memory/dist/store.js +6 -0
  160. package/node_modules/@xrkseek/exec-memory/dist/store.js.map +1 -1
  161. package/node_modules/@xrkseek/exec-memory/dist/tools.d.ts.map +1 -1
  162. package/node_modules/@xrkseek/exec-memory/dist/tools.js +12 -9
  163. package/node_modules/@xrkseek/exec-memory/dist/tools.js.map +1 -1
  164. package/node_modules/@xrkseek/exec-memory/dist/write-path.d.ts +17 -6
  165. package/node_modules/@xrkseek/exec-memory/dist/write-path.d.ts.map +1 -1
  166. package/node_modules/@xrkseek/exec-memory/dist/write-path.js +81 -20
  167. package/node_modules/@xrkseek/exec-memory/dist/write-path.js.map +1 -1
  168. package/node_modules/@xrkseek/exec-memory/package.json +1 -0
  169. package/node_modules/@xrkseek/exec-sandbox/dist/doctor.d.ts +24 -0
  170. package/node_modules/@xrkseek/exec-sandbox/dist/doctor.d.ts.map +1 -0
  171. package/node_modules/@xrkseek/exec-sandbox/dist/doctor.js +118 -0
  172. package/node_modules/@xrkseek/exec-sandbox/dist/doctor.js.map +1 -0
  173. package/node_modules/@xrkseek/exec-sandbox/dist/hardline.d.ts +24 -0
  174. package/node_modules/@xrkseek/exec-sandbox/dist/hardline.d.ts.map +1 -0
  175. package/node_modules/@xrkseek/exec-sandbox/dist/hardline.js +93 -0
  176. package/node_modules/@xrkseek/exec-sandbox/dist/hardline.js.map +1 -0
  177. package/node_modules/@xrkseek/exec-sandbox/dist/index.d.ts +3 -1
  178. package/node_modules/@xrkseek/exec-sandbox/dist/index.d.ts.map +1 -1
  179. package/node_modules/@xrkseek/exec-sandbox/dist/index.js +3 -1
  180. package/node_modules/@xrkseek/exec-sandbox/dist/index.js.map +1 -1
  181. package/node_modules/@xrkseek/exec-sandbox/dist/resolve.d.ts +17 -0
  182. package/node_modules/@xrkseek/exec-sandbox/dist/resolve.d.ts.map +1 -1
  183. package/node_modules/@xrkseek/exec-sandbox/dist/resolve.js +47 -5
  184. package/node_modules/@xrkseek/exec-sandbox/dist/resolve.js.map +1 -1
  185. package/node_modules/@xrkseek/exec-sandbox/dist/service.d.ts.map +1 -1
  186. package/node_modules/@xrkseek/exec-sandbox/dist/service.js +2 -5
  187. package/node_modules/@xrkseek/exec-sandbox/dist/service.js.map +1 -1
  188. package/node_modules/@xrkseek/exec-ssh/README.md +16 -16
  189. package/node_modules/@xrkseek/exec-ssh/dist/config.d.ts +10 -0
  190. package/node_modules/@xrkseek/exec-ssh/dist/config.d.ts.map +1 -1
  191. package/node_modules/@xrkseek/exec-ssh/dist/config.js +50 -0
  192. package/node_modules/@xrkseek/exec-ssh/dist/config.js.map +1 -1
  193. package/node_modules/@xrkseek/exec-ssh/dist/fs.d.ts +1 -1
  194. package/node_modules/@xrkseek/exec-ssh/dist/fs.d.ts.map +1 -1
  195. package/node_modules/@xrkseek/exec-ssh/dist/fs.js +18 -1
  196. package/node_modules/@xrkseek/exec-ssh/dist/fs.js.map +1 -1
  197. package/node_modules/@xrkseek/exec-ssh/dist/index.d.ts +1 -1
  198. package/node_modules/@xrkseek/exec-ssh/dist/index.d.ts.map +1 -1
  199. package/node_modules/@xrkseek/exec-ssh/dist/index.js +1 -1
  200. package/node_modules/@xrkseek/exec-ssh/dist/index.js.map +1 -1
  201. package/node_modules/@xrkseek/exec-video-gen/dist/index.d.ts +15 -2
  202. package/node_modules/@xrkseek/exec-video-gen/dist/index.d.ts.map +1 -1
  203. package/node_modules/@xrkseek/exec-video-gen/dist/index.js +14 -9
  204. package/node_modules/@xrkseek/exec-video-gen/dist/index.js.map +1 -1
  205. package/node_modules/@xrkseek/exec-video-gen/dist/tools.d.ts +6 -1
  206. package/node_modules/@xrkseek/exec-video-gen/dist/tools.d.ts.map +1 -1
  207. package/node_modules/@xrkseek/exec-video-gen/dist/tools.js +14 -10
  208. package/node_modules/@xrkseek/exec-video-gen/dist/tools.js.map +1 -1
  209. package/node_modules/@xrkseek/exec-voice/README.md +25 -25
  210. package/node_modules/@xrkseek/exec-voice/dist/index.d.ts +16 -3
  211. package/node_modules/@xrkseek/exec-voice/dist/index.d.ts.map +1 -1
  212. package/node_modules/@xrkseek/exec-voice/dist/index.js +14 -8
  213. package/node_modules/@xrkseek/exec-voice/dist/index.js.map +1 -1
  214. package/node_modules/@xrkseek/exec-voice/dist/readiness.d.ts +26 -0
  215. package/node_modules/@xrkseek/exec-voice/dist/readiness.d.ts.map +1 -0
  216. package/node_modules/@xrkseek/exec-voice/dist/readiness.js +69 -0
  217. package/node_modules/@xrkseek/exec-voice/dist/readiness.js.map +1 -0
  218. package/node_modules/@xrkseek/exec-voice/dist/tools.d.ts +4 -1
  219. package/node_modules/@xrkseek/exec-voice/dist/tools.d.ts.map +1 -1
  220. package/node_modules/@xrkseek/exec-voice/dist/tools.js +3 -14
  221. package/node_modules/@xrkseek/exec-voice/dist/tools.js.map +1 -1
  222. package/node_modules/@xrkseek/exec-web/README.md +11 -11
  223. package/node_modules/@xrkseek/exec-web/dist/browser-cdp.d.ts +22 -0
  224. package/node_modules/@xrkseek/exec-web/dist/browser-cdp.d.ts.map +1 -1
  225. package/node_modules/@xrkseek/exec-web/dist/browser-cdp.js +32 -1
  226. package/node_modules/@xrkseek/exec-web/dist/browser-cdp.js.map +1 -1
  227. package/node_modules/@xrkseek/exec-web/dist/browser-runtime-registry.d.ts +21 -0
  228. package/node_modules/@xrkseek/exec-web/dist/browser-runtime-registry.d.ts.map +1 -0
  229. package/node_modules/@xrkseek/exec-web/dist/browser-runtime-registry.js +52 -0
  230. package/node_modules/@xrkseek/exec-web/dist/browser-runtime-registry.js.map +1 -0
  231. package/node_modules/@xrkseek/exec-web/dist/browser-session.d.ts +2 -0
  232. package/node_modules/@xrkseek/exec-web/dist/browser-session.d.ts.map +1 -1
  233. package/node_modules/@xrkseek/exec-web/dist/browser-session.js +3 -0
  234. package/node_modules/@xrkseek/exec-web/dist/browser-session.js.map +1 -1
  235. package/node_modules/@xrkseek/exec-web/dist/browser-tools.d.ts +9 -0
  236. package/node_modules/@xrkseek/exec-web/dist/browser-tools.d.ts.map +1 -1
  237. package/node_modules/@xrkseek/exec-web/dist/browser-tools.js +34 -15
  238. package/node_modules/@xrkseek/exec-web/dist/browser-tools.js.map +1 -1
  239. package/node_modules/@xrkseek/exec-web/dist/fetch-http.d.ts +7 -0
  240. package/node_modules/@xrkseek/exec-web/dist/fetch-http.d.ts.map +1 -1
  241. package/node_modules/@xrkseek/exec-web/dist/fetch-http.js +8 -2
  242. package/node_modules/@xrkseek/exec-web/dist/fetch-http.js.map +1 -1
  243. package/node_modules/@xrkseek/exec-web/dist/format.d.ts.map +1 -1
  244. package/node_modules/@xrkseek/exec-web/dist/format.js +4 -3
  245. package/node_modules/@xrkseek/exec-web/dist/format.js.map +1 -1
  246. package/node_modules/@xrkseek/exec-web/dist/index.d.ts +4 -2
  247. package/node_modules/@xrkseek/exec-web/dist/index.d.ts.map +1 -1
  248. package/node_modules/@xrkseek/exec-web/dist/index.js +8 -3
  249. package/node_modules/@xrkseek/exec-web/dist/index.js.map +1 -1
  250. package/node_modules/@xrkseek/exec-web/dist/outbound-allowlist.d.ts +46 -0
  251. package/node_modules/@xrkseek/exec-web/dist/outbound-allowlist.d.ts.map +1 -0
  252. package/node_modules/@xrkseek/exec-web/dist/outbound-allowlist.js +144 -0
  253. package/node_modules/@xrkseek/exec-web/dist/outbound-allowlist.js.map +1 -0
  254. package/node_modules/@xrkseek/exec-web/dist/url-policy.d.ts +6 -1
  255. package/node_modules/@xrkseek/exec-web/dist/url-policy.d.ts.map +1 -1
  256. package/node_modules/@xrkseek/exec-web/dist/url-policy.js +5 -2
  257. package/node_modules/@xrkseek/exec-web/dist/url-policy.js.map +1 -1
  258. package/node_modules/@xrkseek/im-gateway-contract/README.md +50 -0
  259. package/node_modules/@xrkseek/im-gateway-contract/dist/index.d.ts +77 -0
  260. package/node_modules/@xrkseek/im-gateway-contract/dist/index.d.ts.map +1 -0
  261. package/node_modules/@xrkseek/im-gateway-contract/dist/index.js +120 -0
  262. package/node_modules/@xrkseek/im-gateway-contract/dist/index.js.map +1 -0
  263. package/node_modules/@xrkseek/im-gateway-contract/examples/mock-sidecar.mjs +124 -0
  264. package/node_modules/@xrkseek/im-gateway-contract/package.json +25 -0
  265. package/node_modules/@xrkseek/mcp/dist/index.d.ts +1 -0
  266. package/node_modules/@xrkseek/mcp/dist/index.d.ts.map +1 -1
  267. package/node_modules/@xrkseek/mcp/dist/index.js +1 -0
  268. package/node_modules/@xrkseek/mcp/dist/index.js.map +1 -1
  269. package/node_modules/@xrkseek/mcp/dist/oauth-product.d.ts +31 -0
  270. package/node_modules/@xrkseek/mcp/dist/oauth-product.d.ts.map +1 -0
  271. package/node_modules/@xrkseek/mcp/dist/oauth-product.js +72 -0
  272. package/node_modules/@xrkseek/mcp/dist/oauth-product.js.map +1 -0
  273. package/node_modules/@xrkseek/policy/README.md +18 -15
  274. package/node_modules/@xrkseek/policy/dist/index.d.ts +1 -0
  275. package/node_modules/@xrkseek/policy/dist/index.d.ts.map +1 -1
  276. package/node_modules/@xrkseek/policy/dist/index.js +1 -0
  277. package/node_modules/@xrkseek/policy/dist/index.js.map +1 -1
  278. package/node_modules/@xrkseek/policy/dist/permission-pre.d.ts.map +1 -1
  279. package/node_modules/@xrkseek/policy/dist/permission-pre.js +1 -0
  280. package/node_modules/@xrkseek/policy/dist/permission-pre.js.map +1 -1
  281. package/node_modules/@xrkseek/policy/dist/security-guidance.d.ts +50 -0
  282. package/node_modules/@xrkseek/policy/dist/security-guidance.d.ts.map +1 -0
  283. package/node_modules/@xrkseek/policy/dist/security-guidance.js +262 -0
  284. package/node_modules/@xrkseek/policy/dist/security-guidance.js.map +1 -0
  285. package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts +81 -7
  286. package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts.map +1 -1
  287. package/node_modules/@xrkseek/preset-harness/dist/preset.js +307 -63
  288. package/node_modules/@xrkseek/preset-harness/dist/preset.js.map +1 -1
  289. package/node_modules/@xrkseek/preset-harness/dist/tsconfig.tsbuildinfo +1 -1
  290. package/node_modules/@xrkseek/preset-harness/package.json +53 -52
  291. package/node_modules/@xrkseek/preset-minimal/dist/preset.d.ts.map +1 -1
  292. package/node_modules/@xrkseek/preset-minimal/dist/preset.js +7 -2
  293. package/node_modules/@xrkseek/preset-minimal/dist/preset.js.map +1 -1
  294. package/node_modules/@xrkseek/preset-minimal/dist/tsconfig.tsbuildinfo +1 -1
  295. package/node_modules/@xrkseek/preset-server/dist/preset.d.ts.map +1 -1
  296. package/node_modules/@xrkseek/preset-server/dist/preset.js +19 -1
  297. package/node_modules/@xrkseek/preset-server/dist/preset.js.map +1 -1
  298. package/node_modules/@xrkseek/preset-server/dist/tsconfig.tsbuildinfo +1 -1
  299. package/node_modules/@xrkseek/protocol/dist/json-schema.d.ts.map +1 -1
  300. package/node_modules/@xrkseek/protocol/dist/json-schema.js +3 -0
  301. package/node_modules/@xrkseek/protocol/dist/json-schema.js.map +1 -1
  302. package/node_modules/@xrkseek/protocol/dist/session-events.d.ts +18 -0
  303. package/node_modules/@xrkseek/protocol/dist/session-events.d.ts.map +1 -1
  304. package/node_modules/@xrkseek/protocol/dist/session-events.js.map +1 -1
  305. package/node_modules/@xrkseek/protocol/dist/validate.d.ts.map +1 -1
  306. package/node_modules/@xrkseek/protocol/dist/validate.js +30 -0
  307. package/node_modules/@xrkseek/protocol/dist/validate.js.map +1 -1
  308. package/node_modules/@xrkseek/runtime-invariants/README.md +28 -0
  309. package/node_modules/@xrkseek/runtime-invariants/dist/index.d.ts +94 -0
  310. package/node_modules/@xrkseek/runtime-invariants/dist/index.d.ts.map +1 -0
  311. package/node_modules/@xrkseek/runtime-invariants/dist/index.js +163 -0
  312. package/node_modules/@xrkseek/runtime-invariants/dist/index.js.map +1 -0
  313. package/node_modules/@xrkseek/runtime-invariants/package.json +27 -0
  314. package/node_modules/@xrkseek/secrets/README.md +28 -0
  315. package/node_modules/@xrkseek/secrets/dist/index.d.ts +11 -0
  316. package/node_modules/@xrkseek/secrets/dist/index.d.ts.map +1 -0
  317. package/node_modules/@xrkseek/secrets/dist/index.js +23 -0
  318. package/node_modules/@xrkseek/secrets/dist/index.js.map +1 -0
  319. package/node_modules/@xrkseek/secrets/dist/keyring.d.ts +10 -0
  320. package/node_modules/@xrkseek/secrets/dist/keyring.d.ts.map +1 -0
  321. package/node_modules/@xrkseek/secrets/dist/keyring.js +77 -0
  322. package/node_modules/@xrkseek/secrets/dist/keyring.js.map +1 -0
  323. package/node_modules/@xrkseek/secrets/dist/memory.d.ts +4 -0
  324. package/node_modules/@xrkseek/secrets/dist/memory.d.ts.map +1 -0
  325. package/node_modules/@xrkseek/secrets/dist/memory.js +21 -0
  326. package/node_modules/@xrkseek/secrets/dist/memory.js.map +1 -0
  327. package/node_modules/@xrkseek/secrets/dist/redact.d.ts +23 -0
  328. package/node_modules/@xrkseek/secrets/dist/redact.d.ts.map +1 -0
  329. package/node_modules/@xrkseek/secrets/dist/redact.js +38 -0
  330. package/node_modules/@xrkseek/secrets/dist/redact.js.map +1 -0
  331. package/node_modules/@xrkseek/secrets/dist/resolve.d.ts +10 -0
  332. package/node_modules/@xrkseek/secrets/dist/resolve.d.ts.map +1 -0
  333. package/node_modules/@xrkseek/secrets/dist/resolve.js +24 -0
  334. package/node_modules/@xrkseek/secrets/dist/resolve.js.map +1 -0
  335. package/node_modules/@xrkseek/secrets/dist/types.d.ts +27 -0
  336. package/node_modules/@xrkseek/secrets/dist/types.d.ts.map +1 -0
  337. package/node_modules/@xrkseek/secrets/dist/types.js +15 -0
  338. package/node_modules/@xrkseek/secrets/dist/types.js.map +1 -0
  339. package/node_modules/@xrkseek/secrets/package.json +29 -0
  340. package/node_modules/@xrkseek/server-config/dist/index.d.ts +6 -0
  341. package/node_modules/@xrkseek/server-config/dist/index.d.ts.map +1 -1
  342. package/node_modules/@xrkseek/server-config/dist/index.js +12 -0
  343. package/node_modules/@xrkseek/server-config/dist/index.js.map +1 -1
  344. package/node_modules/@xrkseek/server-cron/README.md +1 -1
  345. package/node_modules/@xrkseek/server-cron/dist/index.d.ts +10 -1
  346. package/node_modules/@xrkseek/server-cron/dist/index.d.ts.map +1 -1
  347. package/node_modules/@xrkseek/server-cron/dist/index.js +9 -2
  348. package/node_modules/@xrkseek/server-cron/dist/index.js.map +1 -1
  349. package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.d.ts.map +1 -1
  350. package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.js +6 -2
  351. package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.js.map +1 -1
  352. package/node_modules/@xrkseek/server-face/dist/agent-team-output.d.ts +34 -0
  353. package/node_modules/@xrkseek/server-face/dist/agent-team-output.d.ts.map +1 -0
  354. package/node_modules/@xrkseek/server-face/dist/agent-team-output.js +140 -0
  355. package/node_modules/@xrkseek/server-face/dist/agent-team-output.js.map +1 -0
  356. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.d.ts +13 -0
  357. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.d.ts.map +1 -0
  358. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.js +67 -0
  359. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.js.map +1 -0
  360. package/node_modules/@xrkseek/server-face/dist/agent-team-tasks.d.ts +79 -0
  361. package/node_modules/@xrkseek/server-face/dist/agent-team-tasks.d.ts.map +1 -0
  362. package/node_modules/@xrkseek/server-face/dist/agent-team-tasks.js +230 -0
  363. package/node_modules/@xrkseek/server-face/dist/agent-team-tasks.js.map +1 -0
  364. package/node_modules/@xrkseek/server-face/dist/approval-category.d.ts +25 -0
  365. package/node_modules/@xrkseek/server-face/dist/approval-category.d.ts.map +1 -0
  366. package/node_modules/@xrkseek/server-face/dist/approval-category.js +108 -0
  367. package/node_modules/@xrkseek/server-face/dist/approval-category.js.map +1 -0
  368. package/node_modules/@xrkseek/server-face/dist/approvals.d.ts +17 -0
  369. package/node_modules/@xrkseek/server-face/dist/approvals.d.ts.map +1 -1
  370. package/node_modules/@xrkseek/server-face/dist/approvals.js +50 -0
  371. package/node_modules/@xrkseek/server-face/dist/approvals.js.map +1 -1
  372. package/node_modules/@xrkseek/server-face/dist/context.d.ts +22 -0
  373. package/node_modules/@xrkseek/server-face/dist/context.d.ts.map +1 -1
  374. package/node_modules/@xrkseek/server-face/dist/cost-meter-store.d.ts.map +1 -1
  375. package/node_modules/@xrkseek/server-face/dist/cost-meter-store.js +22 -0
  376. package/node_modules/@xrkseek/server-face/dist/cost-meter-store.js.map +1 -1
  377. package/node_modules/@xrkseek/server-face/dist/dispatch.d.ts.map +1 -1
  378. package/node_modules/@xrkseek/server-face/dist/dispatch.js +14 -2
  379. package/node_modules/@xrkseek/server-face/dist/dispatch.js.map +1 -1
  380. package/node_modules/@xrkseek/server-face/dist/external-agent-runtime.d.ts +87 -2
  381. package/node_modules/@xrkseek/server-face/dist/external-agent-runtime.d.ts.map +1 -1
  382. package/node_modules/@xrkseek/server-face/dist/external-agent-runtime.js +456 -32
  383. package/node_modules/@xrkseek/server-face/dist/external-agent-runtime.js.map +1 -1
  384. package/node_modules/@xrkseek/server-face/dist/goal-round-driver.d.ts +48 -0
  385. package/node_modules/@xrkseek/server-face/dist/goal-round-driver.d.ts.map +1 -0
  386. package/node_modules/@xrkseek/server-face/dist/goal-round-driver.js +69 -0
  387. package/node_modules/@xrkseek/server-face/dist/goal-round-driver.js.map +1 -0
  388. package/node_modules/@xrkseek/server-face/dist/goal-store.d.ts +6 -1
  389. package/node_modules/@xrkseek/server-face/dist/goal-store.d.ts.map +1 -1
  390. package/node_modules/@xrkseek/server-face/dist/goal-store.js +45 -9
  391. package/node_modules/@xrkseek/server-face/dist/goal-store.js.map +1 -1
  392. package/node_modules/@xrkseek/server-face/dist/goal-tools.d.ts +13 -0
  393. package/node_modules/@xrkseek/server-face/dist/goal-tools.d.ts.map +1 -0
  394. package/node_modules/@xrkseek/server-face/dist/goal-tools.js +131 -0
  395. package/node_modules/@xrkseek/server-face/dist/goal-tools.js.map +1 -0
  396. package/node_modules/@xrkseek/server-face/dist/handlers/checkpoint.d.ts +10 -0
  397. package/node_modules/@xrkseek/server-face/dist/handlers/checkpoint.d.ts.map +1 -0
  398. package/node_modules/@xrkseek/server-face/dist/handlers/checkpoint.js +156 -0
  399. package/node_modules/@xrkseek/server-face/dist/handlers/checkpoint.js.map +1 -0
  400. package/node_modules/@xrkseek/server-face/dist/handlers/session.d.ts +7 -0
  401. package/node_modules/@xrkseek/server-face/dist/handlers/session.d.ts.map +1 -1
  402. package/node_modules/@xrkseek/server-face/dist/handlers/session.js +88 -2
  403. package/node_modules/@xrkseek/server-face/dist/handlers/session.js.map +1 -1
  404. package/node_modules/@xrkseek/server-face/dist/handlers/subagent.d.ts.map +1 -1
  405. package/node_modules/@xrkseek/server-face/dist/handlers/subagent.js +62 -3
  406. package/node_modules/@xrkseek/server-face/dist/handlers/subagent.js.map +1 -1
  407. package/node_modules/@xrkseek/server-face/dist/index.d.ts +19 -5
  408. package/node_modules/@xrkseek/server-face/dist/index.d.ts.map +1 -1
  409. package/node_modules/@xrkseek/server-face/dist/index.js +18 -4
  410. package/node_modules/@xrkseek/server-face/dist/index.js.map +1 -1
  411. package/node_modules/@xrkseek/server-face/dist/managed-worktree.d.ts +115 -0
  412. package/node_modules/@xrkseek/server-face/dist/managed-worktree.d.ts.map +1 -0
  413. package/node_modules/@xrkseek/server-face/dist/managed-worktree.js +330 -0
  414. package/node_modules/@xrkseek/server-face/dist/managed-worktree.js.map +1 -0
  415. package/node_modules/@xrkseek/server-face/dist/mcp-oauth.d.ts +33 -0
  416. package/node_modules/@xrkseek/server-face/dist/mcp-oauth.d.ts.map +1 -0
  417. package/node_modules/@xrkseek/server-face/dist/mcp-oauth.js +352 -0
  418. package/node_modules/@xrkseek/server-face/dist/mcp-oauth.js.map +1 -0
  419. package/node_modules/@xrkseek/server-face/dist/projections/index.d.ts +1 -1
  420. package/node_modules/@xrkseek/server-face/dist/projections/index.d.ts.map +1 -1
  421. package/node_modules/@xrkseek/server-face/dist/projections/index.js.map +1 -1
  422. package/node_modules/@xrkseek/server-face/dist/projections/units/context-timeline.d.ts +15 -1
  423. package/node_modules/@xrkseek/server-face/dist/projections/units/context-timeline.d.ts.map +1 -1
  424. package/node_modules/@xrkseek/server-face/dist/projections/units/context-timeline.js +26 -2
  425. package/node_modules/@xrkseek/server-face/dist/projections/units/context-timeline.js.map +1 -1
  426. package/node_modules/@xrkseek/server-face/dist/propose-skill.d.ts +20 -0
  427. package/node_modules/@xrkseek/server-face/dist/propose-skill.d.ts.map +1 -0
  428. package/node_modules/@xrkseek/server-face/dist/propose-skill.js +65 -0
  429. package/node_modules/@xrkseek/server-face/dist/propose-skill.js.map +1 -0
  430. package/node_modules/@xrkseek/server-face/dist/ralph-tool.d.ts +33 -0
  431. package/node_modules/@xrkseek/server-face/dist/ralph-tool.d.ts.map +1 -0
  432. package/node_modules/@xrkseek/server-face/dist/ralph-tool.js +366 -0
  433. package/node_modules/@xrkseek/server-face/dist/ralph-tool.js.map +1 -0
  434. package/node_modules/@xrkseek/server-face/dist/reference-discovery.d.ts.map +1 -1
  435. package/node_modules/@xrkseek/server-face/dist/reference-discovery.js +1 -0
  436. package/node_modules/@xrkseek/server-face/dist/reference-discovery.js.map +1 -1
  437. package/node_modules/@xrkseek/server-face/dist/rollout-trace.d.ts +58 -0
  438. package/node_modules/@xrkseek/server-face/dist/rollout-trace.d.ts.map +1 -0
  439. package/node_modules/@xrkseek/server-face/dist/rollout-trace.js +194 -0
  440. package/node_modules/@xrkseek/server-face/dist/rollout-trace.js.map +1 -0
  441. package/node_modules/@xrkseek/server-face/dist/runtime.d.ts +7 -0
  442. package/node_modules/@xrkseek/server-face/dist/runtime.d.ts.map +1 -1
  443. package/node_modules/@xrkseek/server-face/dist/runtime.js +93 -4
  444. package/node_modules/@xrkseek/server-face/dist/runtime.js.map +1 -1
  445. package/node_modules/@xrkseek/server-face/dist/session-export.d.ts.map +1 -1
  446. package/node_modules/@xrkseek/server-face/dist/session-export.js +74 -0
  447. package/node_modules/@xrkseek/server-face/dist/session-export.js.map +1 -1
  448. package/node_modules/@xrkseek/server-face/dist/session-query-tools.d.ts +23 -0
  449. package/node_modules/@xrkseek/server-face/dist/session-query-tools.d.ts.map +1 -0
  450. package/node_modules/@xrkseek/server-face/dist/session-query-tools.js +275 -0
  451. package/node_modules/@xrkseek/server-face/dist/session-query-tools.js.map +1 -0
  452. package/node_modules/@xrkseek/server-face/dist/session-status.d.ts +209 -0
  453. package/node_modules/@xrkseek/server-face/dist/session-status.d.ts.map +1 -0
  454. package/node_modules/@xrkseek/server-face/dist/session-status.js +559 -0
  455. package/node_modules/@xrkseek/server-face/dist/session-status.js.map +1 -0
  456. package/node_modules/@xrkseek/server-face/dist/settings-credentials.d.ts +2 -0
  457. package/node_modules/@xrkseek/server-face/dist/settings-credentials.d.ts.map +1 -1
  458. package/node_modules/@xrkseek/server-face/dist/settings-credentials.js +67 -0
  459. package/node_modules/@xrkseek/server-face/dist/settings-credentials.js.map +1 -1
  460. package/node_modules/@xrkseek/server-face/dist/settings-document.d.ts +5 -0
  461. package/node_modules/@xrkseek/server-face/dist/settings-document.d.ts.map +1 -1
  462. package/node_modules/@xrkseek/server-face/dist/settings-document.js +69 -0
  463. package/node_modules/@xrkseek/server-face/dist/settings-document.js.map +1 -1
  464. package/node_modules/@xrkseek/server-face/dist/settings-schemas.d.ts.map +1 -1
  465. package/node_modules/@xrkseek/server-face/dist/settings-schemas.js +220 -1
  466. package/node_modules/@xrkseek/server-face/dist/settings-schemas.js.map +1 -1
  467. package/node_modules/@xrkseek/server-face/dist/slash.d.ts.map +1 -1
  468. package/node_modules/@xrkseek/server-face/dist/slash.js +70 -16
  469. package/node_modules/@xrkseek/server-face/dist/slash.js.map +1 -1
  470. package/node_modules/@xrkseek/server-face/dist/subagent-registry.d.ts +4 -0
  471. package/node_modules/@xrkseek/server-face/dist/subagent-registry.d.ts.map +1 -1
  472. package/node_modules/@xrkseek/server-face/dist/subagent-registry.js +4 -0
  473. package/node_modules/@xrkseek/server-face/dist/subagent-registry.js.map +1 -1
  474. package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts +14 -1
  475. package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts.map +1 -1
  476. package/node_modules/@xrkseek/server-face/dist/subagent-tools.js +614 -62
  477. package/node_modules/@xrkseek/server-face/dist/subagent-tools.js.map +1 -1
  478. package/node_modules/@xrkseek/server-face/dist/subagent-worktree.d.ts.map +1 -1
  479. package/node_modules/@xrkseek/server-face/dist/subagent-worktree.js +7 -2
  480. package/node_modules/@xrkseek/server-face/dist/subagent-worktree.js.map +1 -1
  481. package/node_modules/@xrkseek/server-face/dist/types.d.ts +4 -0
  482. package/node_modules/@xrkseek/server-face/dist/types.d.ts.map +1 -1
  483. package/node_modules/@xrkseek/server-face/dist/wire/rpc-error.d.ts.map +1 -1
  484. package/node_modules/@xrkseek/server-face/dist/wire/rpc-error.js +11 -0
  485. package/node_modules/@xrkseek/server-face/dist/wire/rpc-error.js.map +1 -1
  486. package/node_modules/@xrkseek/server-face/dist/workspace-checkpoint.d.ts +40 -0
  487. package/node_modules/@xrkseek/server-face/dist/workspace-checkpoint.d.ts.map +1 -0
  488. package/node_modules/@xrkseek/server-face/dist/workspace-checkpoint.js +154 -0
  489. package/node_modules/@xrkseek/server-face/dist/workspace-checkpoint.js.map +1 -0
  490. package/node_modules/@xrkseek/server-face/dist/workspace-face.d.ts +1 -0
  491. package/node_modules/@xrkseek/server-face/dist/workspace-face.d.ts.map +1 -1
  492. package/node_modules/@xrkseek/server-face/dist/workspace-face.js +25 -0
  493. package/node_modules/@xrkseek/server-face/dist/workspace-face.js.map +1 -1
  494. package/node_modules/@xrkseek/server-face/dist/workspace-registry.d.ts +11 -0
  495. package/node_modules/@xrkseek/server-face/dist/workspace-registry.d.ts.map +1 -1
  496. package/node_modules/@xrkseek/server-face/dist/workspace-registry.js +14 -4
  497. package/node_modules/@xrkseek/server-face/dist/workspace-registry.js.map +1 -1
  498. package/node_modules/@xrkseek/server-face/package.json +3 -0
  499. package/node_modules/@xrkseek/server-host/dist/index.d.ts +61 -0
  500. package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
  501. package/node_modules/@xrkseek/server-host/dist/index.js +376 -10
  502. package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
  503. package/node_modules/@xrkseek/server-host/dist/invariants-fail-fast.d.ts +16 -0
  504. package/node_modules/@xrkseek/server-host/dist/invariants-fail-fast.d.ts.map +1 -0
  505. package/node_modules/@xrkseek/server-host/dist/invariants-fail-fast.js +24 -0
  506. package/node_modules/@xrkseek/server-host/dist/invariants-fail-fast.js.map +1 -0
  507. package/node_modules/@xrkseek/server-host/dist/standing-tools.d.ts.map +1 -1
  508. package/node_modules/@xrkseek/server-host/dist/standing-tools.js +4 -1
  509. package/node_modules/@xrkseek/server-host/dist/standing-tools.js.map +1 -1
  510. package/node_modules/@xrkseek/server-host/package.json +10 -0
  511. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-providers.d.ts.map +1 -1
  512. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-providers.js +10 -4
  513. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-providers.js.map +1 -1
  514. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-types.d.ts +17 -0
  515. package/node_modules/@xrkseek/server-http/dist/dsh-compat/adapter-types.d.ts.map +1 -1
  516. package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-classifier.d.ts +8 -0
  517. package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-classifier.d.ts.map +1 -1
  518. package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-classifier.js +20 -5
  519. package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-classifier.js.map +1 -1
  520. package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-http.js +1 -1
  521. package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-http.js.map +1 -1
  522. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-compat-matrix.js +2 -2
  523. package/node_modules/@xrkseek/server-http/dist/dsh-compat/dsh-compat-matrix.js.map +1 -1
  524. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-gateway-sidecar.d.ts +5 -17
  525. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-gateway-sidecar.d.ts.map +1 -1
  526. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-gateway-sidecar.js +50 -49
  527. package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-gateway-sidecar.js.map +1 -1
  528. package/node_modules/@xrkseek/server-http/dist/dsh-compat/memory-embeddings.d.ts +14 -4
  529. package/node_modules/@xrkseek/server-http/dist/dsh-compat/memory-embeddings.d.ts.map +1 -1
  530. package/node_modules/@xrkseek/server-http/dist/dsh-compat/memory-embeddings.js +30 -14
  531. package/node_modules/@xrkseek/server-http/dist/dsh-compat/memory-embeddings.js.map +1 -1
  532. package/node_modules/@xrkseek/server-http/dist/dsh-compat/noema.d.ts +3 -0
  533. package/node_modules/@xrkseek/server-http/dist/dsh-compat/noema.d.ts.map +1 -1
  534. package/node_modules/@xrkseek/server-http/dist/dsh-compat/noema.js +5 -5
  535. package/node_modules/@xrkseek/server-http/dist/dsh-compat/noema.js.map +1 -1
  536. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-adapter.d.ts +5 -0
  537. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-adapter.d.ts.map +1 -1
  538. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-adapter.js +1 -0
  539. package/node_modules/@xrkseek/server-http/dist/sidebar/sidebar-adapter.js.map +1 -1
  540. package/node_modules/@xrkseek/server-http/package.json +1 -0
  541. package/node_modules/@xrkseek/server-loader/dist/index.d.ts +1 -1
  542. package/node_modules/@xrkseek/server-loader/dist/index.d.ts.map +1 -1
  543. package/node_modules/@xrkseek/server-loader/dist/index.js +1 -1
  544. package/node_modules/@xrkseek/server-loader/dist/index.js.map +1 -1
  545. package/node_modules/@xrkseek/server-loader/dist/shell-hooks.d.ts +75 -3
  546. package/node_modules/@xrkseek/server-loader/dist/shell-hooks.d.ts.map +1 -1
  547. package/node_modules/@xrkseek/server-loader/dist/shell-hooks.js +415 -46
  548. package/node_modules/@xrkseek/server-loader/dist/shell-hooks.js.map +1 -1
  549. package/node_modules/@xrkseek/session-format/README.md +20 -0
  550. package/node_modules/@xrkseek/session-format/dist/catalog.d.ts +27 -0
  551. package/node_modules/@xrkseek/session-format/dist/catalog.d.ts.map +1 -0
  552. package/node_modules/@xrkseek/session-format/dist/catalog.js +36 -0
  553. package/node_modules/@xrkseek/session-format/dist/catalog.js.map +1 -0
  554. package/node_modules/@xrkseek/session-format/dist/chain.d.ts +38 -0
  555. package/node_modules/@xrkseek/session-format/dist/chain.d.ts.map +1 -0
  556. package/node_modules/@xrkseek/session-format/dist/chain.js +86 -0
  557. package/node_modules/@xrkseek/session-format/dist/chain.js.map +1 -0
  558. package/node_modules/@xrkseek/session-format/dist/detect.d.ts +29 -0
  559. package/node_modules/@xrkseek/session-format/dist/detect.d.ts.map +1 -0
  560. package/node_modules/@xrkseek/session-format/dist/detect.js +68 -0
  561. package/node_modules/@xrkseek/session-format/dist/detect.js.map +1 -0
  562. package/node_modules/@xrkseek/session-format/dist/index.d.ts +12 -0
  563. package/node_modules/@xrkseek/session-format/dist/index.d.ts.map +1 -0
  564. package/node_modules/@xrkseek/session-format/dist/index.js +12 -0
  565. package/node_modules/@xrkseek/session-format/dist/index.js.map +1 -0
  566. package/node_modules/@xrkseek/session-format/dist/interchange-version.d.ts +6 -0
  567. package/node_modules/@xrkseek/session-format/dist/interchange-version.d.ts.map +1 -0
  568. package/node_modules/@xrkseek/session-format/dist/interchange-version.js +6 -0
  569. package/node_modules/@xrkseek/session-format/dist/interchange-version.js.map +1 -0
  570. package/node_modules/@xrkseek/session-format/dist/sqlite-schema.d.ts +31 -0
  571. package/node_modules/@xrkseek/session-format/dist/sqlite-schema.d.ts.map +1 -0
  572. package/node_modules/@xrkseek/session-format/dist/sqlite-schema.js +52 -0
  573. package/node_modules/@xrkseek/session-format/dist/sqlite-schema.js.map +1 -0
  574. package/node_modules/@xrkseek/session-format/package.json +24 -0
  575. package/node_modules/@xrkseek/session-telemetry/dist/index.d.ts +18 -4
  576. package/node_modules/@xrkseek/session-telemetry/dist/index.d.ts.map +1 -1
  577. package/node_modules/@xrkseek/session-telemetry/dist/index.js +97 -36
  578. package/node_modules/@xrkseek/session-telemetry/dist/index.js.map +1 -1
  579. package/node_modules/@xrkseek/spill/README.md +27 -0
  580. package/node_modules/@xrkseek/spill/dist/index.d.ts +11 -0
  581. package/node_modules/@xrkseek/spill/dist/index.d.ts.map +1 -0
  582. package/node_modules/@xrkseek/spill/dist/index.js +11 -0
  583. package/node_modules/@xrkseek/spill/dist/index.js.map +1 -0
  584. package/node_modules/@xrkseek/spill/dist/local-store.d.ts +30 -0
  585. package/node_modules/@xrkseek/spill/dist/local-store.d.ts.map +1 -0
  586. package/node_modules/@xrkseek/spill/dist/local-store.js +73 -0
  587. package/node_modules/@xrkseek/spill/dist/local-store.js.map +1 -0
  588. package/node_modules/@xrkseek/spill/dist/policy.d.ts +59 -0
  589. package/node_modules/@xrkseek/spill/dist/policy.d.ts.map +1 -0
  590. package/node_modules/@xrkseek/spill/dist/policy.js +143 -0
  591. package/node_modules/@xrkseek/spill/dist/policy.js.map +1 -0
  592. package/node_modules/@xrkseek/spill/dist/types.d.ts +46 -0
  593. package/node_modules/@xrkseek/spill/dist/types.d.ts.map +1 -0
  594. package/node_modules/@xrkseek/spill/dist/types.js +8 -0
  595. package/node_modules/@xrkseek/spill/dist/types.js.map +1 -0
  596. package/node_modules/@xrkseek/spill/package.json +27 -0
  597. package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.d.ts.map +1 -1
  598. package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.js +2 -0
  599. package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.js.map +1 -1
  600. package/node_modules/@xrkseek/workspace/dist/index.d.ts +1 -0
  601. package/node_modules/@xrkseek/workspace/dist/index.d.ts.map +1 -1
  602. package/node_modules/@xrkseek/workspace/dist/index.js +1 -0
  603. package/node_modules/@xrkseek/workspace/dist/index.js.map +1 -1
  604. package/node_modules/@xrkseek/workspace/dist/skill-propose.d.ts +71 -0
  605. package/node_modules/@xrkseek/workspace/dist/skill-propose.d.ts.map +1 -0
  606. package/node_modules/@xrkseek/workspace/dist/skill-propose.js +259 -0
  607. package/node_modules/@xrkseek/workspace/dist/skill-propose.js.map +1 -0
  608. package/node_modules/@xrkseek/xrk-file-reference-local/README.md +46 -45
  609. package/node_modules/@xrkseek/xrk-file-reference-local/README.zh.md +46 -45
  610. package/node_modules/@xrkseek/xrk-file-reference-local/dist/gitignore.d.ts +37 -0
  611. package/node_modules/@xrkseek/xrk-file-reference-local/dist/gitignore.d.ts.map +1 -0
  612. package/node_modules/@xrkseek/xrk-file-reference-local/dist/gitignore.js +91 -0
  613. package/node_modules/@xrkseek/xrk-file-reference-local/dist/gitignore.js.map +1 -0
  614. package/node_modules/@xrkseek/xrk-file-reference-local/dist/search.d.ts +7 -0
  615. package/node_modules/@xrkseek/xrk-file-reference-local/dist/search.d.ts.map +1 -1
  616. package/node_modules/@xrkseek/xrk-file-reference-local/dist/search.js +46 -4
  617. package/node_modules/@xrkseek/xrk-file-reference-local/dist/search.js.map +1 -1
  618. package/node_modules/@xrkseek/xrk-file-reference-local/package.json +30 -29
  619. package/node_modules/ignore/LICENSE-MIT +21 -0
  620. package/node_modules/ignore/README.md +452 -0
  621. package/node_modules/ignore/index.d.ts +81 -0
  622. package/node_modules/ignore/index.js +793 -0
  623. package/node_modules/ignore/legacy.js +690 -0
  624. package/node_modules/ignore/package.json +87 -0
  625. package/package.json +17 -1
@@ -1,15 +1,70 @@
1
1
  import { SUBAGENT_ROUTING_PROMPT_TEXT } from "@xrkseek/core-tools";
2
- import { readSessionEvents } from "@xrkseek/core-session";
2
+ import { listPendingAdmits, readSessionEvents, } from "@xrkseek/core-session";
3
3
  import { dispatchFaceMethod } from "./dispatch.js";
4
4
  import { lastAssistantBodyText } from "./adapt/subagent-notice.js";
5
- import { DEFAULT_MAX_ACTIVE_CHILDREN, DEFAULT_MAX_DEPTH } from "./presets-catalog.js";
5
+ import { DEFAULT_MAX_ACTIVE_CHILDREN, DEFAULT_MAX_DEPTH, resolveAgentPresetProfile, } from "./presets-catalog.js";
6
6
  import { resolveSessionCwd } from "./session-cwd.js";
7
- import { ExternalAgentError, parseExternalAgentKind, runExternalAgentTurn, } from "./external-agent-runtime.js";
7
+ import { ExternalAgentError, parseExternalAgentKind, parseExternalAgentProduct, runExternalAgentTurn, supportsExternalContinuable, startExternalContinuable, isChildSessionActive, } from "./external-agent-runtime.js";
8
8
  import { createSubagentWorktree, finalizeSubagentWorktree, formatWorktreeResult, worktreeContextNote, worktreeSkippedForRemote, } from "./subagent-worktree.js";
9
+ import { appendOutputContract, buildOutputSchemaRetryMessage, coerceOutputSchema, validateOutputAgainstSchema, } from "./agent-team-output.js";
10
+ import { applySpawnRoleReminder, parseAgentTeamSpawnRole, } from "./agent-team-roles.js";
11
+ import { bindRalphTool } from "./ralph-tool.js";
9
12
  const FOREGROUND_WAIT_MS = 10 * 60 * 1000;
13
+ const WAIT_AGENT_DEFAULT_MS = 5 * 60 * 1000;
14
+ const WAIT_AGENT_MIN_MS = 1_000;
10
15
  const POLL_MS = 50;
11
16
  export { SUBAGENT_ROUTING_PROMPT_TEXT, DEFAULT_MAX_ACTIVE_CHILDREN, DEFAULT_MAX_DEPTH };
12
- export { parseExternalAgentKind, runExternalAgentTurn, resolveExternalAgentLaunch, ExternalAgentError, } from "./external-agent-runtime.js";
17
+ /**
18
+ * Resolve live quota for Status / `analytics` (Face agent-loop ∩ badge ceiling).
19
+ */
20
+ export function resolveSubagentQuota(runtime, sessionId) {
21
+ const loopValue = runtime.settingsNamespaces.view("agent-loop").value;
22
+ const faceDepth = typeof loopValue.maxSubagentDepth === "number" &&
23
+ Number.isFinite(loopValue.maxSubagentDepth) &&
24
+ loopValue.maxSubagentDepth >= 1
25
+ ? Math.min(3, Math.floor(loopValue.maxSubagentDepth))
26
+ : DEFAULT_MAX_DEPTH;
27
+ const faceActive = typeof loopValue.maxActiveSubagents === "number" &&
28
+ Number.isFinite(loopValue.maxActiveSubagents) &&
29
+ loopValue.maxActiveSubagents >= 1
30
+ ? Math.min(16, Math.floor(loopValue.maxActiveSubagents))
31
+ : DEFAULT_MAX_ACTIVE_CHILDREN;
32
+ const presetId = runtime.sessionAgentPresets.get(sessionId);
33
+ const profile = resolveAgentPresetProfile(presetId);
34
+ const maxDepth = profile.subagents.maxDepth !== undefined
35
+ ? Math.min(faceDepth, profile.subagents.maxDepth)
36
+ : faceDepth;
37
+ const maxActive = profile.subagents.maxActiveChildren !== undefined
38
+ ? Math.min(faceActive, profile.subagents.maxActiveChildren)
39
+ : faceActive;
40
+ const depth = subagentDepth(runtime, sessionId);
41
+ const active = countActiveChildren(runtime, sessionId);
42
+ const delegated = runtime.subagents.listDelegated(sessionId).length;
43
+ return {
44
+ depth,
45
+ maxDepth,
46
+ active,
47
+ maxActive,
48
+ delegated,
49
+ slotsFree: Math.max(0, maxActive - active),
50
+ };
51
+ }
52
+ function childInboxCounts(runtime, childSessionId) {
53
+ if (!runtime.store.has(childSessionId)) {
54
+ return { queued: 0, steering: 0 };
55
+ }
56
+ const pending = listPendingAdmits(readSessionEvents(runtime.store, childSessionId), childSessionId);
57
+ let queued = 0;
58
+ let steering = 0;
59
+ for (const admit of pending) {
60
+ if (admit.delivery === "steer")
61
+ steering += 1;
62
+ else
63
+ queued += 1;
64
+ }
65
+ return { queued, steering };
66
+ }
67
+ export { parseExternalAgentKind, parseExternalAgentProduct, runExternalAgentTurn, resolveExternalAgentLaunch, openExternalAgentLiveSession, supportsExternalContinuable, ExternalAgentError, ExternalAgentSessionRegistry, isChildSessionActive, startExternalContinuable, promptExternalContinuable, interruptExternalContinuable, } from "./external-agent-runtime.js";
13
68
  export function subagentDepth(runtime, sessionId) {
14
69
  let depth = 0;
15
70
  let cur = sessionId;
@@ -44,7 +99,7 @@ async function waitDrainIdle(runtime, sessionId, signal, timeoutMs = FOREGROUND_
44
99
  function countActiveChildren(runtime, parentSessionId) {
45
100
  let n = 0;
46
101
  for (const link of runtime.subagents.listDelegated(parentSessionId)) {
47
- if (runtime.drain.isActive(link.childSessionId))
102
+ if (isChildSessionActive(runtime, link.childSessionId))
48
103
  n += 1;
49
104
  }
50
105
  return n;
@@ -54,14 +109,18 @@ function createSubagentTool(options) {
54
109
  const maxActiveChildren = options.maxActiveChildren ?? DEFAULT_MAX_ACTIVE_CHILDREN;
55
110
  return {
56
111
  name: "subagent",
57
- description: "Delegate a self-contained task to a subagent (separate session/context). " +
112
+ description: "Delegate a self-contained task to a teammate subagent (separate session/context). " +
58
113
  "Use for focused independent work — research, a scoped implementation, analysis, or read-only review — " +
59
114
  "so it does not consume this conversation's context. " +
60
115
  "By default the child cannot see this chat — give a complete standalone prompt. " +
61
116
  "Set inherit_context true to seed the child with this session's completed turns only " +
62
117
  "(the current in-flight turn is excluded). " +
63
118
  "By default waits for the result; set run_in_background true to get a durable child id and continue later via send_message. " +
64
- "Optional runtime: omit or in-process (default Face child); acp / app-server / claude-code spawn an external one-shot subprocess (no Face child; background not supported).",
119
+ "Optional role (worker|researcher|reviewer|lead) prefixes a role reminder; " +
120
+ "optional output_schema appends an OUTPUT CONTRACT and validates the final JSON; " +
121
+ "optional task_id / task_name register the work on the Agent Teams task board. " +
122
+ "Optional runtime: omit or in-process (default Face child); acp / app-server / claude-code spawn an external subprocess. " +
123
+ "acp / app-server support run_in_background + followup_task / send_message / wait_agent / interrupt_agent on the same list surface; claude-code remains one-shot print.",
65
124
  parameters: {
66
125
  type: "object",
67
126
  properties: {
@@ -79,11 +138,31 @@ function createSubagentTool(options) {
79
138
  },
80
139
  run_in_background: {
81
140
  type: "boolean",
82
- description: "If true, return the child session id immediately (continuable). Default false (wait for the child's final answer). Not supported for external runtimes.",
141
+ description: "If true, return the child session id immediately (continuable). Default false (wait for the child's final answer). Supported for in-process and external acp / app-server (not claude-code).",
142
+ },
143
+ role: {
144
+ type: "string",
145
+ description: "Spawn role template: default | worker | researcher | reviewer | lead (alias: agent_type).",
146
+ },
147
+ agent_type: {
148
+ type: "string",
149
+ description: "Alias of role (Codex agent_type).",
150
+ },
151
+ task_id: {
152
+ type: "string",
153
+ description: "Optional stable task id on the Agent Teams board (auto-minted when omitted).",
154
+ },
155
+ task_name: {
156
+ type: "string",
157
+ description: "Task board title (defaults to description / task_id).",
158
+ },
159
+ output_schema: {
160
+ type: "object",
161
+ description: "Optional JSON Schema for the child's FINAL answer (Hermes OUTPUT CONTRACT). Validated after the turn; one correction turn on failure for foreground waits.",
83
162
  },
84
163
  runtime: {
85
164
  type: "string",
86
- description: "Delegation runtime: in-process (default), acp (XRK_ACP_AGENT), app-server (XRK_CODEX_APP_SERVER / codex app-server), claude-code (XRK_CLAUDE_CODE / claude -p).",
165
+ description: "Delegation runtime: in-process (default), acp (Settings external-agent.acpAgent / XRK_ACP_AGENT), app-server (Settings / XRK_CODEX_APP_SERVER), claude-code (Settings / XRK_CLAUDE_CODE).",
87
166
  },
88
167
  worktree: {
89
168
  type: "boolean",
@@ -106,6 +185,25 @@ function createSubagentTool(options) {
106
185
  if (!prompt) {
107
186
  return { content: "subagent: empty prompt", isError: true };
108
187
  }
188
+ const roleRaw = a.role ?? a.agent_type;
189
+ let spawnRole;
190
+ if (roleRaw !== undefined && String(roleRaw).trim()) {
191
+ spawnRole = parseAgentTeamSpawnRole(roleRaw);
192
+ if (!spawnRole) {
193
+ return {
194
+ content: "subagent: role/agent_type must be default | worker | researcher | reviewer | lead",
195
+ isError: true,
196
+ };
197
+ }
198
+ }
199
+ const schemaCoerce = coerceOutputSchema(a.output_schema);
200
+ if (schemaCoerce.error) {
201
+ return {
202
+ content: `subagent: ${schemaCoerce.error}`,
203
+ isError: true,
204
+ };
205
+ }
206
+ const outputSchema = schemaCoerce.schema;
109
207
  const runtimeKind = parseExternalAgentKind(a.runtime);
110
208
  if (runtimeKind === undefined) {
111
209
  return {
@@ -114,19 +212,93 @@ function createSubagentTool(options) {
114
212
  };
115
213
  }
116
214
  if (runtimeKind !== "in-process") {
117
- if (a.run_in_background === true) {
215
+ const background = a.run_in_background === true;
216
+ if (background && !supportsExternalContinuable(runtimeKind)) {
118
217
  return {
119
- content: "subagent: run_in_background is not supported for external runtimes",
218
+ content: "subagent: run_in_background is not supported for claude-code (print); use acp or app-server",
219
+ isError: true,
220
+ };
221
+ }
222
+ const depth = subagentDepth(options.runtime, options.parentSessionId);
223
+ if (depth >= maxDepth) {
224
+ return {
225
+ content: `subagent: max depth ${maxDepth} reached (current depth ${depth})`,
226
+ isError: true,
227
+ };
228
+ }
229
+ const active = countActiveChildren(options.runtime, options.parentSessionId);
230
+ if (active >= maxActiveChildren) {
231
+ return {
232
+ content: `subagent: max active children ${maxActiveChildren} reached (active ${active})`,
120
233
  isError: true,
121
234
  };
122
235
  }
123
236
  try {
237
+ const product = parseExternalAgentProduct(options.runtime.settingsNamespaces.view("external-agent").value);
238
+ if (background && supportsExternalContinuable(runtimeKind)) {
239
+ const label = String(a.description ?? "").trim() ||
240
+ String(a.task_name ?? "").trim() ||
241
+ `external-${runtimeKind}`;
242
+ const created = await dispatchFaceMethod(options.runtime, "session.create", `tool-sa-ext-${Date.now()}`, {
243
+ parentSessionId: options.parentSessionId,
244
+ label,
245
+ mode: "continuable",
246
+ });
247
+ if (!created.result.ok) {
248
+ return {
249
+ content: `subagent create failed: ${created.result.error.message}`,
250
+ isError: true,
251
+ };
252
+ }
253
+ const childId = String(created.result.value.sessionId);
254
+ const taskTitle = String(a.task_name ?? "").trim() || label;
255
+ const task = options.runtime.agentTeamTasks.open({
256
+ parentSessionId: options.parentSessionId,
257
+ title: taskTitle,
258
+ childSessionId: childId,
259
+ ...(spawnRole && spawnRole !== "default"
260
+ ? { role: spawnRole }
261
+ : {}),
262
+ ...(String(a.task_id ?? "").trim()
263
+ ? { taskId: String(a.task_id).trim() }
264
+ : {}),
265
+ });
266
+ if (outputSchema) {
267
+ options.runtime.agentTeamTasks.setOutputSchema(task.id, outputSchema);
268
+ }
269
+ await startExternalContinuable({
270
+ runtime: options.runtime,
271
+ faceSessionId: childId,
272
+ kind: runtimeKind,
273
+ cwd: resolveSessionCwd(options.runtime, options.parentSessionId) ?? options.runtime.workspaceRoot,
274
+ prompt,
275
+ background: true,
276
+ ...(signal ? { signal } : {}),
277
+ ...(options.externalEnv ? { env: options.externalEnv } : {}),
278
+ ...(product ? { product } : {}),
279
+ ...(options.externalSpawn
280
+ ? { spawnImpl: options.externalSpawn }
281
+ : {}),
282
+ });
283
+ return {
284
+ content: [
285
+ `Started background external subagent \`${childId}\` (${label} · ${runtimeKind}).`,
286
+ `task ${task.id}` +
287
+ (spawnRole && spawnRole !== "default"
288
+ ? ` · role ${spawnRole}`
289
+ : ""),
290
+ "Use followup_task / send_message / wait_agent / interrupt_agent / list_agents / analytics.",
291
+ "Keep working; do not busy-poll.",
292
+ ].join("\n"),
293
+ };
294
+ }
124
295
  const result = await runExternalAgentTurn({
125
296
  kind: runtimeKind,
126
297
  cwd: options.runtime.workspaceRoot,
127
298
  prompt,
128
299
  ...(signal ? { signal } : {}),
129
300
  ...(options.externalEnv ? { env: options.externalEnv } : {}),
301
+ ...(product ? { product } : {}),
130
302
  ...(options.externalSpawn
131
303
  ? { spawnImpl: options.externalSpawn }
132
304
  : {}),
@@ -161,26 +333,104 @@ function createSubagentTool(options) {
161
333
  const background = a.run_in_background === true;
162
334
  const inherit = a.inherit_context === true;
163
335
  const label = String(a.description ?? "").trim() ||
336
+ String(a.task_name ?? "").trim() ||
164
337
  (background ? "subagent" : "subagent-task");
165
338
  const linkMode = background ? "continuable" : "one-shot";
166
339
  const parentCwd = resolveSessionCwd(options.runtime, options.parentSessionId);
167
340
  let isolated = null;
341
+ let managedLease = null;
168
342
  let worktreeSkip = "";
169
343
  if (a.worktree === true) {
170
344
  if (worktreeSkippedForRemote(options.runtime.remoteExecution)) {
171
345
  worktreeSkip = "worktree skipped: not a local terminal";
172
346
  }
173
347
  else {
174
- isolated = createSubagentWorktree(parentCwd);
175
- if (!isolated) {
176
- worktreeSkip =
177
- "worktree skipped: not a git repository or worktree add failed";
348
+ managedLease =
349
+ options.runtime.managedWorktrees.allocate({
350
+ parentCwd,
351
+ parentSessionId: options.parentSessionId,
352
+ }) ?? null;
353
+ if (managedLease) {
354
+ isolated = {
355
+ path: managedLease.path,
356
+ branch: managedLease.branch,
357
+ repoRoot: managedLease.repoRoot,
358
+ baseCommit: managedLease.baseCommit,
359
+ };
360
+ }
361
+ else {
362
+ // Fall back to one-shot create when the registry path fails.
363
+ isolated = createSubagentWorktree(parentCwd);
364
+ if (!isolated) {
365
+ worktreeSkip =
366
+ "worktree skipped: not a git repository or worktree add failed";
367
+ }
178
368
  }
179
369
  }
180
370
  }
181
- const childPrompt = isolated
182
- ? `${prompt}\n\n${worktreeContextNote(isolated)}`
183
- : prompt;
371
+ let childPrompt = applySpawnRoleReminder(prompt, spawnRole);
372
+ if (outputSchema) {
373
+ childPrompt = appendOutputContract(childPrompt, outputSchema);
374
+ }
375
+ childPrompt = isolated
376
+ ? `${childPrompt}\n\n${worktreeContextNote(isolated)}`
377
+ : childPrompt;
378
+ const taskTitle = String(a.task_name ?? "").trim() || label;
379
+ const taskIdHint = String(a.task_id ?? "").trim() || undefined;
380
+ const openTask = (childSessionId) => {
381
+ const task = options.runtime.agentTeamTasks.open({
382
+ parentSessionId: options.parentSessionId,
383
+ title: taskTitle,
384
+ childSessionId,
385
+ ...(spawnRole && spawnRole !== "default" ? { role: spawnRole } : {}),
386
+ ...(taskIdHint ? { taskId: taskIdHint } : {}),
387
+ });
388
+ if (outputSchema) {
389
+ options.runtime.agentTeamTasks.setOutputSchema(task.id, outputSchema);
390
+ }
391
+ if (managedLease) {
392
+ options.runtime.managedWorktrees.bind(managedLease.id, {
393
+ childSessionId,
394
+ teamTaskId: task.id,
395
+ });
396
+ options.runtime.agentTeamTasks.bindWorktree(task.id, {
397
+ path: managedLease.path,
398
+ branch: managedLease.branch,
399
+ id: managedLease.id,
400
+ });
401
+ }
402
+ else if (isolated) {
403
+ options.runtime.agentTeamTasks.bindWorktree(task.id, {
404
+ path: isolated.path,
405
+ branch: isolated.branch,
406
+ });
407
+ }
408
+ return task;
409
+ };
410
+ const reclaimIsolated = (keep) => {
411
+ if (worktreeSkip)
412
+ return worktreeSkip;
413
+ if (!isolated)
414
+ return "";
415
+ if (keep) {
416
+ return `[worktree] ${isolated.path}\nbranch ${isolated.branch}\nleft in place (child still running)`;
417
+ }
418
+ if (managedLease) {
419
+ return formatWorktreeResult(options.runtime.managedWorktrees.reclaim(managedLease.id) ??
420
+ finalizeSubagentWorktree(isolated));
421
+ }
422
+ return formatWorktreeResult(finalizeSubagentWorktree(isolated));
423
+ };
424
+ const dropIsolated = () => {
425
+ if (!isolated)
426
+ return;
427
+ if (managedLease) {
428
+ options.runtime.managedWorktrees.reclaim(managedLease.id);
429
+ }
430
+ else {
431
+ finalizeSubagentWorktree(isolated);
432
+ }
433
+ };
184
434
  let childId;
185
435
  let seedEventCount = 0;
186
436
  if (inherit) {
@@ -198,8 +448,7 @@ function createSubagentTool(options) {
198
448
  mode: linkMode,
199
449
  });
200
450
  if (!created.result.ok) {
201
- if (isolated)
202
- finalizeSubagentWorktree(isolated);
451
+ dropIsolated();
203
452
  return {
204
453
  content: `subagent create failed: ${created.result.error.message}`,
205
454
  isError: true,
@@ -208,8 +457,7 @@ function createSubagentTool(options) {
208
457
  childId = String(created.result.value.sessionId);
209
458
  }
210
459
  else {
211
- if (isolated)
212
- finalizeSubagentWorktree(isolated);
460
+ dropIsolated();
213
461
  return {
214
462
  content: `subagent seed failed: ${forked.result.error.message}`,
215
463
  isError: true,
@@ -228,8 +476,7 @@ function createSubagentTool(options) {
228
476
  mode: linkMode,
229
477
  });
230
478
  if (!created.result.ok) {
231
- if (isolated)
232
- finalizeSubagentWorktree(isolated);
479
+ dropIsolated();
233
480
  return {
234
481
  content: `subagent create failed: ${created.result.error.message}`,
235
482
  isError: true,
@@ -241,16 +488,8 @@ function createSubagentTool(options) {
241
488
  options.runtime.sessionCwds.set(childId, isolated.path);
242
489
  await options.runtime.invalidateAgent?.(childId);
243
490
  }
244
- const worktreeLine = (keep) => {
245
- if (worktreeSkip)
246
- return worktreeSkip;
247
- if (!isolated)
248
- return "";
249
- if (keep) {
250
- return `[worktree] ${isolated.path}\nbranch ${isolated.branch}\nleft in place (child still running)`;
251
- }
252
- return formatWorktreeResult(finalizeSubagentWorktree(isolated));
253
- };
491
+ const task = openTask(childId);
492
+ const worktreeLine = reclaimIsolated;
254
493
  const prompted = await dispatchFaceMethod(options.runtime, "session.prompt", `tool-sa-p-${childId}`, {
255
494
  sessionId: childId,
256
495
  mode: "queue",
@@ -269,10 +508,15 @@ function createSubagentTool(options) {
269
508
  return {
270
509
  content: [
271
510
  `Started background subagent \`${childId}\` (${label}).`,
511
+ `task ${task.id}` +
512
+ (spawnRole && spawnRole !== "default" ? ` · role ${spawnRole}` : ""),
272
513
  inherit
273
514
  ? "Seeded with this session's completed turns (open turn excluded)."
274
515
  : undefined,
275
- "Use send_message to continue, interrupt_agent to stop, list_agents to inspect.",
516
+ outputSchema
517
+ ? "OUTPUT CONTRACT attached; result will be schema-checked on idle."
518
+ : undefined,
519
+ "Use followup_task to wake a new task, send_message (delivery queue|steer) to continue, wait_agent for results, interrupt_agent (takeover true to pause for human) to stop, list_agents / analytics for quota.",
276
520
  "Keep working; do not busy-poll.",
277
521
  worktreeLine(true) || undefined,
278
522
  ]
@@ -286,6 +530,10 @@ function createSubagentTool(options) {
286
530
  catch (err) {
287
531
  const message = err instanceof Error ? err.message : String(err);
288
532
  await dispatchFaceMethod(options.runtime, "session.cancel", `tool-sa-c-${childId}`, { sessionId: childId }).catch(() => undefined);
533
+ options.runtime.agentTeamTasks.complete(task.id, {
534
+ ok: false,
535
+ preview: message,
536
+ });
289
537
  const extra = worktreeLine(false);
290
538
  return {
291
539
  content: [`subagent failed: ${message}`, extra].filter(Boolean).join("\n"),
@@ -294,8 +542,48 @@ function createSubagentTool(options) {
294
542
  }
295
543
  const all = readSessionEvents(options.runtime.store, childId);
296
544
  // Never return seeded parent assistant text as the child's result.
297
- const owned = seedEventCount > 0 ? all.slice(seedEventCount) : all;
298
- const text = lastAssistantBodyText(owned);
545
+ let owned = seedEventCount > 0 ? all.slice(seedEventCount) : all;
546
+ let text = lastAssistantBodyText(owned);
547
+ let schemaValid;
548
+ let schemaErrors;
549
+ if (outputSchema && text) {
550
+ let checked = validateOutputAgainstSchema(text, outputSchema);
551
+ if (!checked.valid) {
552
+ const retry = await dispatchFaceMethod(options.runtime, "session.prompt", `tool-sa-schema-${childId}`, {
553
+ sessionId: childId,
554
+ mode: "queue",
555
+ content: [
556
+ {
557
+ type: "text",
558
+ text: buildOutputSchemaRetryMessage(checked.errors),
559
+ },
560
+ ],
561
+ });
562
+ if (retry.result.ok) {
563
+ try {
564
+ await waitDrainIdle(options.runtime, childId, signal);
565
+ }
566
+ catch {
567
+ /* keep first answer */
568
+ }
569
+ owned = seedEventCount > 0
570
+ ? readSessionEvents(options.runtime.store, childId).slice(seedEventCount)
571
+ : readSessionEvents(options.runtime.store, childId);
572
+ text = lastAssistantBodyText(owned) || text;
573
+ checked = validateOutputAgainstSchema(text, outputSchema);
574
+ }
575
+ }
576
+ schemaValid = checked.valid;
577
+ schemaErrors = checked.errors;
578
+ }
579
+ options.runtime.agentTeamTasks.complete(task.id, {
580
+ ok: true,
581
+ ...(text ? { preview: text } : {}),
582
+ ...(schemaValid !== undefined ? { schemaValid } : {}),
583
+ ...(schemaErrors && schemaErrors.length > 0
584
+ ? { schemaErrors }
585
+ : {}),
586
+ });
299
587
  const extra = worktreeLine(false);
300
588
  if (!text) {
301
589
  return {
@@ -304,14 +592,23 @@ function createSubagentTool(options) {
304
592
  .join("\n"),
305
593
  };
306
594
  }
307
- return { content: [text, extra].filter(Boolean).join("\n") };
595
+ const schemaLine = schemaValid === undefined
596
+ ? undefined
597
+ : schemaValid
598
+ ? "schema_valid=true"
599
+ : `schema_valid=false\n${(schemaErrors ?? []).map((e) => `- ${e}`).join("\n")}`;
600
+ return {
601
+ content: [text, schemaLine, extra].filter(Boolean).join("\n"),
602
+ ...(schemaValid === false ? { isError: true } : {}),
603
+ };
308
604
  },
309
605
  };
310
606
  }
311
607
  function createListAgentsTool(options) {
312
608
  return {
313
609
  name: "list_agents",
314
- description: "List direct child subagents of this session (id, label, mode, running).",
610
+ description: "List direct child subagents of this session (id, label, mode, running, inbox queue/steer). " +
611
+ "Prefaces with depth/active quota. Prefer `analytics` for a fuller quota snapshot.",
315
612
  parameters: { type: "object", properties: {} },
316
613
  isConcurrencySafe: () => true,
317
614
  async execute() {
@@ -324,31 +621,40 @@ function createListAgentsTool(options) {
324
621
  }
325
622
  const value = listed.result.value;
326
623
  const entries = value.entries ?? [];
327
- if (!entries.length)
328
- return { content: "(no subagents)" };
329
- return {
330
- content: entries
331
- .map((e) => {
332
- if (e.kind === "diagnostic") {
333
- return `${e.id ?? "?"}\tdiagnostic\t${e.reason ?? "unavailable"}`;
334
- }
335
- const id = e.id ?? "?";
336
- const label = e.label ?? "subagent";
337
- const mode = e.mode ?? "?";
338
- const activity = e.activity ?? "idle";
339
- return `${id}\t${label}\t${mode}\t${activity}`;
340
- })
341
- .join("\n"),
342
- };
624
+ const quota = resolveSubagentQuota(options.runtime, options.parentSessionId);
625
+ const header = `quota depth ${quota.depth}/${quota.maxDepth}` +
626
+ ` · active ${quota.active}/${quota.maxActive}` +
627
+ ` · slots_free ${quota.slotsFree}` +
628
+ ` · delegated ${quota.delegated}`;
629
+ if (!entries.length) {
630
+ return { content: `${header}\n(no subagents)` };
631
+ }
632
+ const lines = entries.map((e) => {
633
+ if (e.kind === "diagnostic") {
634
+ return `${e.id ?? "?"}\tdiagnostic\t${e.reason ?? "unavailable"}`;
635
+ }
636
+ const id = e.id ?? "?";
637
+ const label = e.label ?? "subagent";
638
+ const mode = e.mode ?? "?";
639
+ const activity = e.activity ?? "idle";
640
+ const inbox = id !== "?"
641
+ ? childInboxCounts(options.runtime, id)
642
+ : { queued: 0, steering: 0 };
643
+ return `${id}\t${label}\t${mode}\t${activity}\tq=${inbox.queued}\tsteer=${inbox.steering}`;
644
+ });
645
+ return { content: [header, ...lines].join("\n") };
343
646
  },
344
647
  };
345
648
  }
346
649
  function createSendMessageTool(options) {
347
650
  return {
348
651
  name: "send_message",
349
- description: "Send a follow-up to a continuable background subagent by child session id. " +
350
- "If the child is still working, the message waits in its inbox (does not steer the in-flight turn). " +
351
- "Returns delivery confirmation only — not the child's answer.",
652
+ description: "Pass a message to a continuable background subagent without forcing a new task turn by default. " +
653
+ "delivery=queue (default): land in the child's inbox if it is still working. " +
654
+ "delivery=steer: nudge at the next tool-step / turn boundary. " +
655
+ "For a new task that should trigger a turn, prefer `followup_task`. " +
656
+ "Clears human takeover pause on the Agent Teams task board. " +
657
+ "Returns delivery confirmation only — not the child's answer (use `wait_agent`).",
352
658
  parameters: {
353
659
  type: "object",
354
660
  properties: {
@@ -357,6 +663,10 @@ function createSendMessageTool(options) {
357
663
  description: "Child session id from subagent / list_agents.",
358
664
  },
359
665
  message: { type: "string", description: "Follow-up text for the child." },
666
+ delivery: {
667
+ type: "string",
668
+ description: "queue (default) or steer.",
669
+ },
360
670
  },
361
671
  required: ["agent_id", "message"],
362
672
  },
@@ -370,10 +680,60 @@ function createSendMessageTool(options) {
370
680
  isError: true,
371
681
  };
372
682
  }
683
+ const delivery = a.delivery === "steer" || a.delivery === "queue" ? a.delivery : "queue";
373
684
  const prompted = await dispatchFaceMethod(options.runtime, "subagent.prompt", `tool-sa-sm-${childId}`, {
374
685
  parentSessionId: options.parentSessionId,
375
686
  childSessionId: childId,
376
687
  mode: "continuable",
688
+ delivery,
689
+ content: [{ type: "text", text: message }],
690
+ });
691
+ if (!prompted.result.ok) {
692
+ return {
693
+ content: prompted.result.error.message,
694
+ isError: true,
695
+ };
696
+ }
697
+ options.runtime.agentTeamTasks.markResumed(childId);
698
+ return { content: `sent to ${childId} (${delivery})` };
699
+ },
700
+ };
701
+ }
702
+ function createFollowupTaskTool(options) {
703
+ return {
704
+ name: "followup_task",
705
+ description: "Give an existing continuable subagent a new task and trigger a turn (Codex followup_task / TriggerTurn). " +
706
+ "Unlike `send_message` (default queue-only), this always wakes the child. " +
707
+ "Returns delivery confirmation only — use `wait_agent` for the answer.",
708
+ parameters: {
709
+ type: "object",
710
+ properties: {
711
+ agent_id: {
712
+ type: "string",
713
+ description: "Child session id from subagent / list_agents.",
714
+ },
715
+ message: {
716
+ type: "string",
717
+ description: "New task text for the child (triggers a turn).",
718
+ },
719
+ },
720
+ required: ["agent_id", "message"],
721
+ },
722
+ async execute(args) {
723
+ const a = args;
724
+ const childId = String(a.agent_id ?? "").trim();
725
+ const message = String(a.message ?? "").trim();
726
+ if (!childId || !message) {
727
+ return {
728
+ content: "followup_task requires agent_id and message",
729
+ isError: true,
730
+ };
731
+ }
732
+ const prompted = await dispatchFaceMethod(options.runtime, "subagent.prompt", `tool-sa-fu-${childId}`, {
733
+ parentSessionId: options.parentSessionId,
734
+ childSessionId: childId,
735
+ mode: "continuable",
736
+ delivery: "steer",
377
737
  content: [{ type: "text", text: message }],
378
738
  });
379
739
  if (!prompted.result.ok) {
@@ -382,14 +742,187 @@ function createSendMessageTool(options) {
382
742
  isError: true,
383
743
  };
384
744
  }
385
- return { content: `sent to ${childId}` };
745
+ options.runtime.agentTeamTasks.markResumed(childId);
746
+ return { content: `followup_task sent to ${childId} (steer)` };
747
+ },
748
+ };
749
+ }
750
+ function parseWaitTargets(args) {
751
+ const out = [];
752
+ const push = (raw) => {
753
+ const id = String(raw ?? "").trim();
754
+ if (id && !out.includes(id))
755
+ out.push(id);
756
+ };
757
+ if (Array.isArray(args.targets)) {
758
+ for (const t of args.targets)
759
+ push(t);
760
+ }
761
+ else if (typeof args.targets === "string" && args.targets.trim()) {
762
+ for (const part of args.targets.split(/[\s,]+/))
763
+ push(part);
764
+ }
765
+ push(args.agent_id);
766
+ return out;
767
+ }
768
+ function createWaitAgentTool(options) {
769
+ return {
770
+ name: "wait_agent",
771
+ description: "Wait until listed child subagents become idle (Codex wait_agent targets). " +
772
+ "Returns each child's final status and last assistant text when idle. " +
773
+ "Prefer longer timeouts (minutes) over busy-polling with list_agents.",
774
+ parameters: {
775
+ type: "object",
776
+ properties: {
777
+ targets: {
778
+ type: "array",
779
+ description: "Child session ids to wait on (from subagent / list_agents).",
780
+ items: { type: "string" },
781
+ },
782
+ agent_id: {
783
+ type: "string",
784
+ description: "Convenience single-target alias of targets=[agent_id].",
785
+ },
786
+ timeout_ms: {
787
+ type: "number",
788
+ description: `Max wait in ms (default ${WAIT_AGENT_DEFAULT_MS}; max ${FOREGROUND_WAIT_MS}).`,
789
+ },
790
+ },
791
+ },
792
+ async execute(args, signal) {
793
+ const a = args;
794
+ const targets = parseWaitTargets(a);
795
+ if (!targets.length) {
796
+ return {
797
+ content: "wait_agent requires targets or agent_id",
798
+ isError: true,
799
+ };
800
+ }
801
+ let timeoutMs = WAIT_AGENT_DEFAULT_MS;
802
+ if (typeof a.timeout_ms === "number" && Number.isFinite(a.timeout_ms)) {
803
+ timeoutMs = Math.min(FOREGROUND_WAIT_MS, Math.max(WAIT_AGENT_MIN_MS, Math.floor(a.timeout_ms)));
804
+ }
805
+ for (const childId of targets) {
806
+ const link = options.runtime.subagents.getByChild(childId);
807
+ if (!link ||
808
+ link.parentSessionId !== options.parentSessionId ||
809
+ link.mode === "fork") {
810
+ return {
811
+ content: `wait_agent: ${childId} is not a delegated child of this session`,
812
+ isError: true,
813
+ };
814
+ }
815
+ }
816
+ const deadline = Date.now() + timeoutMs;
817
+ const stillRunning = () => targets.some((id) => isChildSessionActive(options.runtime, id));
818
+ while (stillRunning()) {
819
+ if (signal?.aborted) {
820
+ throw new DOMException("aborted", "AbortError");
821
+ }
822
+ if (Date.now() > deadline)
823
+ break;
824
+ const remaining = Math.max(0, deadline - Date.now());
825
+ const slice = Math.min(POLL_MS * 20, remaining);
826
+ const activeOnes = targets.filter((id) => isChildSessionActive(options.runtime, id));
827
+ if (activeOnes.length === 1 &&
828
+ options.runtime.drain.run &&
829
+ !options.runtime.externalAgents.has(activeOnes[0])) {
830
+ try {
831
+ await Promise.race([
832
+ options.runtime.drain.run(activeOnes[0]),
833
+ new Promise((_, reject) => setTimeout(() => reject(new Error("wait slice")), Math.max(POLL_MS, slice))),
834
+ ]);
835
+ }
836
+ catch {
837
+ /* keep polling until deadline */
838
+ }
839
+ }
840
+ else {
841
+ await new Promise((r) => setTimeout(r, Math.max(POLL_MS, slice)));
842
+ }
843
+ }
844
+ const timedOut = stillRunning();
845
+ const lines = [
846
+ timedOut
847
+ ? `wait_agent timed out after ${timeoutMs}ms`
848
+ : `wait_agent completed (${timeoutMs}ms budget)`,
849
+ ];
850
+ for (const childId of targets) {
851
+ const running = isChildSessionActive(options.runtime, childId);
852
+ const text = running
853
+ ? undefined
854
+ : lastAssistantBodyText(readSessionEvents(options.runtime.store, childId));
855
+ const inbox = childInboxCounts(options.runtime, childId);
856
+ lines.push([
857
+ childId,
858
+ running ? "running" : "idle",
859
+ `q=${inbox.queued}`,
860
+ `steer=${inbox.steering}`,
861
+ text
862
+ ? `answer:\n${text}`
863
+ : running
864
+ ? "(still running)"
865
+ : "(no assistant text)",
866
+ ].join("\t"));
867
+ }
868
+ return {
869
+ content: lines.join("\n"),
870
+ ...(timedOut ? { isError: true } : {}),
871
+ };
872
+ },
873
+ };
874
+ }
875
+ function createAnalyticsTool(options) {
876
+ return {
877
+ name: "analytics",
878
+ description: "Local subagent quota and queue snapshot for this session (not cloud telemetry). " +
879
+ "Shows depth/active caps, free slots, and each child's running state plus inbox queue/steer counts.",
880
+ parameters: { type: "object", properties: {} },
881
+ isConcurrencySafe: () => true,
882
+ async execute() {
883
+ const quota = resolveSubagentQuota(options.runtime, options.parentSessionId);
884
+ const parentPending = listPendingAdmits(readSessionEvents(options.runtime.store, options.parentSessionId), options.parentSessionId);
885
+ let parentQueued = 0;
886
+ let parentSteer = 0;
887
+ for (const admit of parentPending) {
888
+ if (admit.delivery === "steer")
889
+ parentSteer += 1;
890
+ else
891
+ parentQueued += 1;
892
+ }
893
+ const lines = [
894
+ `purpose: local-debug`,
895
+ `depth: ${quota.depth}/${quota.maxDepth}`,
896
+ `active: ${quota.active}/${quota.maxActive}`,
897
+ `slots_free: ${quota.slotsFree}`,
898
+ `delegated: ${quota.delegated}`,
899
+ `parent_inbox: queue=${parentQueued} steer=${parentSteer}`,
900
+ "children:",
901
+ ];
902
+ const children = options.runtime.subagents.listDelegated(options.parentSessionId);
903
+ if (!children.length) {
904
+ lines.push(" (none)");
905
+ }
906
+ else {
907
+ for (const link of children) {
908
+ const activity = isChildSessionActive(options.runtime, link.childSessionId)
909
+ ? "running"
910
+ : "idle";
911
+ const inbox = childInboxCounts(options.runtime, link.childSessionId);
912
+ lines.push(` ${link.childSessionId}\t${link.label ?? "subagent"}\t${link.mode}\t${activity}\tq=${inbox.queued}\tsteer=${inbox.steering}`);
913
+ }
914
+ }
915
+ return { content: lines.join("\n") };
386
916
  },
387
917
  };
388
918
  }
389
919
  function createInterruptAgentTool(options) {
390
920
  return {
391
921
  name: "interrupt_agent",
392
- description: "Interrupt a running child subagent by session id.",
922
+ description: "Interrupt a running child subagent by session id. " +
923
+ "Suppresses the automatic parent completion steer for this idle stretch. " +
924
+ "Set takeover true to mark the Agent Teams task as paused for human ownership " +
925
+ "(open the child session in the UI; resume later with send_message).",
393
926
  parameters: {
394
927
  type: "object",
395
928
  properties: {
@@ -397,18 +930,25 @@ function createInterruptAgentTool(options) {
397
930
  type: "string",
398
931
  description: "Child session id from subagent / list_agents.",
399
932
  },
933
+ takeover: {
934
+ type: "boolean",
935
+ description: "If true, pause the task board entry and hand the child to a human (no auto completion notice).",
936
+ },
400
937
  },
401
938
  required: ["agent_id"],
402
939
  },
403
940
  async execute(args) {
404
- const childId = String(args.agent_id ?? "").trim();
941
+ const a = args;
942
+ const childId = String(a.agent_id ?? "").trim();
405
943
  if (!childId) {
406
944
  return { content: "interrupt_agent requires agent_id", isError: true };
407
945
  }
946
+ const takeover = a.takeover === true;
408
947
  const stopped = await dispatchFaceMethod(options.runtime, "subagent.interrupt", `tool-sa-int-${childId}`, {
409
948
  parentSessionId: options.parentSessionId,
410
949
  childSessionId: childId,
411
950
  mode: "continuable",
951
+ ...(takeover ? { takeover: true } : {}),
412
952
  });
413
953
  if (!stopped.result.ok) {
414
954
  // one-shot children: fall back to session.cancel
@@ -419,8 +959,16 @@ function createInterruptAgentTool(options) {
419
959
  isError: true,
420
960
  };
421
961
  }
962
+ options.runtime.suppressOwnedSubagentCompletion(childId);
422
963
  }
423
- return { content: `interrupted ${childId}` };
964
+ if (takeover) {
965
+ options.runtime.agentTeamTasks.markTakeover(childId);
966
+ }
967
+ return {
968
+ content: takeover
969
+ ? `interrupted ${childId} (human takeover — task paused)`
970
+ : `interrupted ${childId}`,
971
+ };
424
972
  },
425
973
  };
426
974
  }
@@ -430,6 +978,9 @@ export function bindSubagentTools(tools, options) {
430
978
  createSubagentTool(options),
431
979
  createListAgentsTool(options),
432
980
  createSendMessageTool(options),
981
+ createFollowupTaskTool(options),
982
+ createWaitAgentTool(options),
983
+ createAnalyticsTool(options),
433
984
  createInterruptAgentTool(options),
434
985
  ]) {
435
986
  if (tools.get(tool.name)) {
@@ -439,5 +990,6 @@ export function bindSubagentTools(tools, options) {
439
990
  tools.register(tool);
440
991
  }
441
992
  }
993
+ bindRalphTool(tools, options);
442
994
  }
443
995
  //# sourceMappingURL=subagent-tools.js.map