@xrkseek/harness 0.6.3 → 0.6.5

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 (239) hide show
  1. package/node_modules/@xrkseek/core-agent/dist/index.d.ts +6 -2
  2. package/node_modules/@xrkseek/core-agent/dist/index.d.ts.map +1 -1
  3. package/node_modules/@xrkseek/core-agent/dist/index.js +6 -0
  4. package/node_modules/@xrkseek/core-agent/dist/index.js.map +1 -1
  5. package/node_modules/@xrkseek/core-agent-loop/dist/compaction.d.ts.map +1 -1
  6. package/node_modules/@xrkseek/core-agent-loop/dist/compaction.js +9 -0
  7. package/node_modules/@xrkseek/core-agent-loop/dist/compaction.js.map +1 -1
  8. package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts +23 -5
  9. package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts.map +1 -1
  10. package/node_modules/@xrkseek/core-agent-loop/dist/index.js +91 -11
  11. package/node_modules/@xrkseek/core-agent-loop/dist/index.js.map +1 -1
  12. package/node_modules/@xrkseek/core-session/dist/compaction.d.ts +30 -0
  13. package/node_modules/@xrkseek/core-session/dist/compaction.d.ts.map +1 -1
  14. package/node_modules/@xrkseek/core-session/dist/compaction.js +15 -0
  15. package/node_modules/@xrkseek/core-session/dist/compaction.js.map +1 -1
  16. package/node_modules/@xrkseek/core-session/dist/index.d.ts +1 -1
  17. package/node_modules/@xrkseek/core-session/dist/index.d.ts.map +1 -1
  18. package/node_modules/@xrkseek/core-session/dist/index.js +1 -1
  19. package/node_modules/@xrkseek/core-session/dist/index.js.map +1 -1
  20. package/node_modules/@xrkseek/core-session/dist/search-text.d.ts.map +1 -1
  21. package/node_modules/@xrkseek/core-session/dist/search-text.js +6 -0
  22. package/node_modules/@xrkseek/core-session/dist/search-text.js.map +1 -1
  23. package/node_modules/@xrkseek/core-session/dist/sqlite-store.d.ts +5 -2
  24. package/node_modules/@xrkseek/core-session/dist/sqlite-store.d.ts.map +1 -1
  25. package/node_modules/@xrkseek/core-session/dist/sqlite-store.js +155 -29
  26. package/node_modules/@xrkseek/core-session/dist/sqlite-store.js.map +1 -1
  27. package/node_modules/@xrkseek/core-tools/dist/std-tools.d.ts.map +1 -1
  28. package/node_modules/@xrkseek/core-tools/dist/std-tools.js +2 -1
  29. package/node_modules/@xrkseek/core-tools/dist/std-tools.js.map +1 -1
  30. package/node_modules/@xrkseek/core-tools/dist/tool-exposure.d.ts +6 -2
  31. package/node_modules/@xrkseek/core-tools/dist/tool-exposure.d.ts.map +1 -1
  32. package/node_modules/@xrkseek/core-tools/dist/tool-exposure.js +10 -3
  33. package/node_modules/@xrkseek/core-tools/dist/tool-exposure.js.map +1 -1
  34. package/node_modules/@xrkseek/exec-environment/dist/http.d.ts.map +1 -1
  35. package/node_modules/@xrkseek/exec-environment/dist/http.js +2 -0
  36. package/node_modules/@xrkseek/exec-environment/dist/http.js.map +1 -1
  37. package/node_modules/@xrkseek/exec-environment/dist/memory.d.ts.map +1 -1
  38. package/node_modules/@xrkseek/exec-environment/dist/memory.js +13 -9
  39. package/node_modules/@xrkseek/exec-environment/dist/memory.js.map +1 -1
  40. package/node_modules/@xrkseek/exec-fs/dist/edit-text.d.ts +6 -1
  41. package/node_modules/@xrkseek/exec-fs/dist/edit-text.d.ts.map +1 -1
  42. package/node_modules/@xrkseek/exec-fs/dist/edit-text.js +139 -11
  43. package/node_modules/@xrkseek/exec-fs/dist/edit-text.js.map +1 -1
  44. package/node_modules/@xrkseek/exec-fs/dist/index.d.ts +7 -2
  45. package/node_modules/@xrkseek/exec-fs/dist/index.d.ts.map +1 -1
  46. package/node_modules/@xrkseek/exec-fs/dist/index.js +36 -9
  47. package/node_modules/@xrkseek/exec-fs/dist/index.js.map +1 -1
  48. package/node_modules/@xrkseek/exec-fs/dist/open-nofollow.d.ts +13 -0
  49. package/node_modules/@xrkseek/exec-fs/dist/open-nofollow.d.ts.map +1 -0
  50. package/node_modules/@xrkseek/exec-fs/dist/open-nofollow.js +90 -0
  51. package/node_modules/@xrkseek/exec-fs/dist/open-nofollow.js.map +1 -0
  52. package/node_modules/@xrkseek/exec-pty/dist/env.d.ts +3 -23
  53. package/node_modules/@xrkseek/exec-pty/dist/env.d.ts.map +1 -1
  54. package/node_modules/@xrkseek/exec-pty/dist/env.js +3 -48
  55. package/node_modules/@xrkseek/exec-pty/dist/env.js.map +1 -1
  56. package/node_modules/@xrkseek/exec-pty/package.json +2 -1
  57. package/node_modules/@xrkseek/exec-ssh/dist/fs.d.ts.map +1 -1
  58. package/node_modules/@xrkseek/exec-ssh/dist/fs.js +2 -1
  59. package/node_modules/@xrkseek/exec-ssh/dist/fs.js.map +1 -1
  60. package/node_modules/@xrkseek/exec-subprocess/dist/env.d.ts +26 -0
  61. package/node_modules/@xrkseek/exec-subprocess/dist/env.d.ts.map +1 -0
  62. package/node_modules/@xrkseek/exec-subprocess/dist/env.js +65 -0
  63. package/node_modules/@xrkseek/exec-subprocess/dist/env.js.map +1 -0
  64. package/node_modules/@xrkseek/exec-subprocess/dist/index.d.ts +1 -0
  65. package/node_modules/@xrkseek/exec-subprocess/dist/index.d.ts.map +1 -1
  66. package/node_modules/@xrkseek/exec-subprocess/dist/index.js +5 -1
  67. package/node_modules/@xrkseek/exec-subprocess/dist/index.js.map +1 -1
  68. package/node_modules/@xrkseek/llm/dist/failure.d.ts.map +1 -1
  69. package/node_modules/@xrkseek/llm/dist/failure.js +7 -2
  70. package/node_modules/@xrkseek/llm/dist/failure.js.map +1 -1
  71. package/node_modules/@xrkseek/llm/dist/index.d.ts +1 -0
  72. package/node_modules/@xrkseek/llm/dist/index.d.ts.map +1 -1
  73. package/node_modules/@xrkseek/llm/dist/index.js +1 -0
  74. package/node_modules/@xrkseek/llm/dist/index.js.map +1 -1
  75. package/node_modules/@xrkseek/llm/dist/retry-policy.js +1 -1
  76. package/node_modules/@xrkseek/llm/dist/retry-policy.js.map +1 -1
  77. package/node_modules/@xrkseek/llm/dist/trace-context.d.ts +32 -0
  78. package/node_modules/@xrkseek/llm/dist/trace-context.d.ts.map +1 -0
  79. package/node_modules/@xrkseek/llm/dist/trace-context.js +89 -0
  80. package/node_modules/@xrkseek/llm/dist/trace-context.js.map +1 -0
  81. package/node_modules/@xrkseek/llm-anthropic/dist/index.d.ts.map +1 -1
  82. package/node_modules/@xrkseek/llm-anthropic/dist/index.js +3 -3
  83. package/node_modules/@xrkseek/llm-anthropic/dist/index.js.map +1 -1
  84. package/node_modules/@xrkseek/llm-gemini/dist/index.d.ts.map +1 -1
  85. package/node_modules/@xrkseek/llm-gemini/dist/index.js +3 -3
  86. package/node_modules/@xrkseek/llm-gemini/dist/index.js.map +1 -1
  87. package/node_modules/@xrkseek/llm-openai-compatible/dist/index.d.ts.map +1 -1
  88. package/node_modules/@xrkseek/llm-openai-compatible/dist/index.js +2 -2
  89. package/node_modules/@xrkseek/llm-openai-compatible/dist/index.js.map +1 -1
  90. package/node_modules/@xrkseek/llm-openai-responses/dist/index.d.ts.map +1 -1
  91. package/node_modules/@xrkseek/llm-openai-responses/dist/index.js +3 -3
  92. package/node_modules/@xrkseek/llm-openai-responses/dist/index.js.map +1 -1
  93. package/node_modules/@xrkseek/llm-registry/dist/discover.d.ts +11 -0
  94. package/node_modules/@xrkseek/llm-registry/dist/discover.d.ts.map +1 -1
  95. package/node_modules/@xrkseek/llm-registry/dist/discover.js +61 -0
  96. package/node_modules/@xrkseek/llm-registry/dist/discover.js.map +1 -1
  97. package/node_modules/@xrkseek/llm-registry/dist/index.d.ts +1 -1
  98. package/node_modules/@xrkseek/llm-registry/dist/index.d.ts.map +1 -1
  99. package/node_modules/@xrkseek/llm-registry/dist/index.js.map +1 -1
  100. package/node_modules/@xrkseek/policy/dist/index.d.ts +1 -0
  101. package/node_modules/@xrkseek/policy/dist/index.d.ts.map +1 -1
  102. package/node_modules/@xrkseek/policy/dist/index.js +1 -0
  103. package/node_modules/@xrkseek/policy/dist/index.js.map +1 -1
  104. package/node_modules/@xrkseek/policy/dist/ruleset.d.ts +6 -0
  105. package/node_modules/@xrkseek/policy/dist/ruleset.d.ts.map +1 -1
  106. package/node_modules/@xrkseek/policy/dist/ruleset.js +67 -14
  107. package/node_modules/@xrkseek/policy/dist/ruleset.js.map +1 -1
  108. package/node_modules/@xrkseek/policy/dist/schema.d.ts +6 -0
  109. package/node_modules/@xrkseek/policy/dist/schema.d.ts.map +1 -1
  110. package/node_modules/@xrkseek/policy/dist/schema.js +6 -0
  111. package/node_modules/@xrkseek/policy/dist/schema.js.map +1 -1
  112. package/node_modules/@xrkseek/policy/dist/when-expr.d.ts +30 -0
  113. package/node_modules/@xrkseek/policy/dist/when-expr.d.ts.map +1 -0
  114. package/node_modules/@xrkseek/policy/dist/when-expr.js +514 -0
  115. package/node_modules/@xrkseek/policy/dist/when-expr.js.map +1 -0
  116. package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts.map +1 -1
  117. package/node_modules/@xrkseek/preset-harness/dist/preset.js +68 -14
  118. package/node_modules/@xrkseek/preset-harness/dist/preset.js.map +1 -1
  119. package/node_modules/@xrkseek/preset-harness/dist/tsconfig.tsbuildinfo +1 -1
  120. package/node_modules/@xrkseek/preset-minimal/dist/tsconfig.tsbuildinfo +1 -1
  121. package/node_modules/@xrkseek/preset-server/dist/tsconfig.tsbuildinfo +1 -1
  122. package/node_modules/@xrkseek/protocol/dist/session-events.d.ts +3 -3
  123. package/node_modules/@xrkseek/server-face/dist/adapt/index.d.ts +1 -1
  124. package/node_modules/@xrkseek/server-face/dist/adapt/index.d.ts.map +1 -1
  125. package/node_modules/@xrkseek/server-face/dist/adapt/index.js +1 -1
  126. package/node_modules/@xrkseek/server-face/dist/adapt/index.js.map +1 -1
  127. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.d.ts +15 -1
  128. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.d.ts.map +1 -1
  129. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.js +108 -8
  130. package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.js.map +1 -1
  131. package/node_modules/@xrkseek/server-face/dist/context.d.ts +5 -0
  132. package/node_modules/@xrkseek/server-face/dist/context.d.ts.map +1 -1
  133. package/node_modules/@xrkseek/server-face/dist/handlers/session.d.ts.map +1 -1
  134. package/node_modules/@xrkseek/server-face/dist/handlers/session.js +69 -19
  135. package/node_modules/@xrkseek/server-face/dist/handlers/session.js.map +1 -1
  136. package/node_modules/@xrkseek/server-face/dist/handlers/subagent.d.ts.map +1 -1
  137. package/node_modules/@xrkseek/server-face/dist/handlers/subagent.js +7 -1
  138. package/node_modules/@xrkseek/server-face/dist/handlers/subagent.js.map +1 -1
  139. package/node_modules/@xrkseek/server-face/dist/index.d.ts +3 -2
  140. package/node_modules/@xrkseek/server-face/dist/index.d.ts.map +1 -1
  141. package/node_modules/@xrkseek/server-face/dist/index.js +3 -2
  142. package/node_modules/@xrkseek/server-face/dist/index.js.map +1 -1
  143. package/node_modules/@xrkseek/server-face/dist/model-catalog.d.ts.map +1 -1
  144. package/node_modules/@xrkseek/server-face/dist/model-catalog.js +2 -1
  145. package/node_modules/@xrkseek/server-face/dist/model-catalog.js.map +1 -1
  146. package/node_modules/@xrkseek/server-face/dist/peer-session-wait.d.ts.map +1 -1
  147. package/node_modules/@xrkseek/server-face/dist/peer-session-wait.js +16 -9
  148. package/node_modules/@xrkseek/server-face/dist/peer-session-wait.js.map +1 -1
  149. package/node_modules/@xrkseek/server-face/dist/ralph-tool.d.ts.map +1 -1
  150. package/node_modules/@xrkseek/server-face/dist/ralph-tool.js +19 -20
  151. package/node_modules/@xrkseek/server-face/dist/ralph-tool.js.map +1 -1
  152. package/node_modules/@xrkseek/server-face/dist/runtime.d.ts.map +1 -1
  153. package/node_modules/@xrkseek/server-face/dist/runtime.js +58 -13
  154. package/node_modules/@xrkseek/server-face/dist/runtime.js.map +1 -1
  155. package/node_modules/@xrkseek/server-face/dist/select-session-model.d.ts.map +1 -1
  156. package/node_modules/@xrkseek/server-face/dist/select-session-model.js +33 -1
  157. package/node_modules/@xrkseek/server-face/dist/select-session-model.js.map +1 -1
  158. package/node_modules/@xrkseek/server-face/dist/session-thread-message.d.ts +5 -0
  159. package/node_modules/@xrkseek/server-face/dist/session-thread-message.d.ts.map +1 -1
  160. package/node_modules/@xrkseek/server-face/dist/session-thread-message.js +8 -0
  161. package/node_modules/@xrkseek/server-face/dist/session-thread-message.js.map +1 -1
  162. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.d.ts.map +1 -1
  163. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.js +4 -1
  164. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.js.map +1 -1
  165. package/node_modules/@xrkseek/server-face/dist/settings-schemas.d.ts.map +1 -1
  166. package/node_modules/@xrkseek/server-face/dist/settings-schemas.js +32 -5
  167. package/node_modules/@xrkseek/server-face/dist/settings-schemas.js.map +1 -1
  168. package/node_modules/@xrkseek/server-face/dist/subagent-registry.d.ts +7 -0
  169. package/node_modules/@xrkseek/server-face/dist/subagent-registry.d.ts.map +1 -1
  170. package/node_modules/@xrkseek/server-face/dist/subagent-registry.js +21 -5
  171. package/node_modules/@xrkseek/server-face/dist/subagent-registry.js.map +1 -1
  172. package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts.map +1 -1
  173. package/node_modules/@xrkseek/server-face/dist/subagent-tools.js +79 -149
  174. package/node_modules/@xrkseek/server-face/dist/subagent-tools.js.map +1 -1
  175. package/node_modules/@xrkseek/server-face/dist/wait-drain-idle.d.ts +32 -0
  176. package/node_modules/@xrkseek/server-face/dist/wait-drain-idle.d.ts.map +1 -0
  177. package/node_modules/@xrkseek/server-face/dist/wait-drain-idle.js +138 -0
  178. package/node_modules/@xrkseek/server-face/dist/wait-drain-idle.js.map +1 -0
  179. package/node_modules/@xrkseek/server-face/dist/wire/index.d.ts +1 -1
  180. package/node_modules/@xrkseek/server-face/dist/wire/index.d.ts.map +1 -1
  181. package/node_modules/@xrkseek/server-face/dist/wire/index.js +1 -1
  182. package/node_modules/@xrkseek/server-face/dist/wire/index.js.map +1 -1
  183. package/node_modules/@xrkseek/server-face/dist/wire/loopback.d.ts +5 -0
  184. package/node_modules/@xrkseek/server-face/dist/wire/loopback.d.ts.map +1 -1
  185. package/node_modules/@xrkseek/server-face/dist/wire/loopback.js +14 -0
  186. package/node_modules/@xrkseek/server-face/dist/wire/loopback.js.map +1 -1
  187. package/node_modules/@xrkseek/server-face/dist/workspace-orchestrate-tools.d.ts.map +1 -1
  188. package/node_modules/@xrkseek/server-face/dist/workspace-orchestrate-tools.js +2 -1
  189. package/node_modules/@xrkseek/server-face/dist/workspace-orchestrate-tools.js.map +1 -1
  190. package/node_modules/@xrkseek/server-host/dist/agent-cache.d.ts +26 -4
  191. package/node_modules/@xrkseek/server-host/dist/agent-cache.d.ts.map +1 -1
  192. package/node_modules/@xrkseek/server-host/dist/agent-cache.js +63 -16
  193. package/node_modules/@xrkseek/server-host/dist/agent-cache.js.map +1 -1
  194. package/node_modules/@xrkseek/server-host/dist/index.d.ts +1 -1
  195. package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
  196. package/node_modules/@xrkseek/server-host/dist/index.js +98 -25
  197. package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
  198. package/node_modules/@xrkseek/server-host/dist/workflow-engine-mount.d.ts.map +1 -1
  199. package/node_modules/@xrkseek/server-host/dist/workflow-engine-mount.js +16 -21
  200. package/node_modules/@xrkseek/server-host/dist/workflow-engine-mount.js.map +1 -1
  201. package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-classifier.d.ts +2 -2
  202. package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-classifier.d.ts.map +1 -1
  203. package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-classifier.js +7 -1
  204. package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-classifier.js.map +1 -1
  205. package/node_modules/@xrkseek/server-http/dist/dsh-compat/community-llm-host-sync.d.ts.map +1 -1
  206. package/node_modules/@xrkseek/server-http/dist/dsh-compat/community-llm-host-sync.js +49 -11
  207. package/node_modules/@xrkseek/server-http/dist/dsh-compat/community-llm-host-sync.js.map +1 -1
  208. package/node_modules/@xrkseek/server-loader/dist/index.d.ts +1 -1
  209. package/node_modules/@xrkseek/server-loader/dist/index.d.ts.map +1 -1
  210. package/node_modules/@xrkseek/server-loader/dist/index.js +1 -1
  211. package/node_modules/@xrkseek/server-loader/dist/index.js.map +1 -1
  212. package/node_modules/@xrkseek/server-loader/dist/shell-hooks.d.ts +31 -1
  213. package/node_modules/@xrkseek/server-loader/dist/shell-hooks.d.ts.map +1 -1
  214. package/node_modules/@xrkseek/server-loader/dist/shell-hooks.js +126 -14
  215. package/node_modules/@xrkseek/server-loader/dist/shell-hooks.js.map +1 -1
  216. package/node_modules/@xrkseek/session-projection/dist/index.d.ts +7 -0
  217. package/node_modules/@xrkseek/session-projection/dist/index.d.ts.map +1 -1
  218. package/node_modules/@xrkseek/session-projection/dist/index.js +16 -0
  219. package/node_modules/@xrkseek/session-projection/dist/index.js.map +1 -1
  220. package/node_modules/@xrkseek/workspace/dist/durable-inject.d.ts +10 -0
  221. package/node_modules/@xrkseek/workspace/dist/durable-inject.d.ts.map +1 -1
  222. package/node_modules/@xrkseek/workspace/dist/durable-inject.js +38 -0
  223. package/node_modules/@xrkseek/workspace/dist/durable-inject.js.map +1 -1
  224. package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.d.ts.map +1 -1
  225. package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.js +23 -11
  226. package/node_modules/@xrkseek/workspace/dist/ecosystem-instructions.js.map +1 -1
  227. package/node_modules/@xrkseek/workspace/dist/index.d.ts +1 -0
  228. package/node_modules/@xrkseek/workspace/dist/index.d.ts.map +1 -1
  229. package/node_modules/@xrkseek/workspace/dist/index.js +1 -0
  230. package/node_modules/@xrkseek/workspace/dist/index.js.map +1 -1
  231. package/node_modules/@xrkseek/workspace/dist/scan-guards.d.ts +21 -0
  232. package/node_modules/@xrkseek/workspace/dist/scan-guards.d.ts.map +1 -1
  233. package/node_modules/@xrkseek/workspace/dist/scan-guards.js +48 -0
  234. package/node_modules/@xrkseek/workspace/dist/scan-guards.js.map +1 -1
  235. package/node_modules/@xrkseek/workspace/dist/skill-select.d.ts +29 -0
  236. package/node_modules/@xrkseek/workspace/dist/skill-select.d.ts.map +1 -0
  237. package/node_modules/@xrkseek/workspace/dist/skill-select.js +77 -0
  238. package/node_modules/@xrkseek/workspace/dist/skill-select.js.map +1 -0
  239. package/package.json +1 -1
@@ -16,12 +16,12 @@ import { createA2aInboundPublicHandler } from "./a2a-inbound-public.js";
16
16
  import { createCronApiHandler } from "./cron-http.js";
17
17
  import { tryMountHostIsolatingWorkflowEngine } from "./workflow-engine-mount.js";
18
18
  import { applyXrkProductBootPolicy, chainPublicHandlers, ensureDshCompatHostPlugin, DSH_COMPAT_HOST_PLUGIN_ID, createLiveHostPluginsPublicHandler, createHttpServer, createXrkPluginPublicHandler, createSidebarPublicHandler, prewarmDshCompatAdapters, shutdownDshCompatServices, applyHostPackageByName, stopHostPackage, listHostAppliedPackages, invokeDshCompatRpc, attachDshCompatUpgrades, DSH_SETTINGS_NAMESPACES, DSH_SETTINGS_DEFAULTS, runPluginMutate, ensureXrkPlatformClientBootEntries, injectBootIntoHtml, injectBootThemeIntoHtml, injectMobileAccessShellIntoHtml, loadBootManifestFromWebDist, mergeWebBootManifests, resolveWebBootManifest, createXrkWalletPort, createMobileAccessGateChecker, createMobileAccessGateHandler, loadSidebarPrefs, createAutoReviewToolPre, isAutoReviewEnabled, setAutoReviewEnabled, setImFaceAdmitHook, } from "@xrkseek/server-http";
19
- import { attachFaceUpgrades, bindSubagentTools, bindSessionQueryTools, createFaceRuntime, IM_AGENT_PRESET_ID, IM_WORKSPACE_ID, QICHUANG_AGENT_PRESET_ID, XIANGYANG_WORKSPACE_ID, isOrchestrationWorkspaceId, effectiveHostApiKey, ensureMcpLiveIfIdle, isLoopbackAddress, listCredentialSlots, peekSettingsYamlSection, publishRemoteEvent, createSessionRoutingLlm, liveRouteAllowsImageInput, resolveSessionCwd, ensureSessionWorkingDirectory, setSessionWorkingDirectory, createSessionWorktree, canonicalAgentPresetId, resolveAgentPresetProfile, effectiveSessionAgentPreset, tryHandleFaceHttp, isPluginSoftDisabledAt, readDisabledPluginIdsAt, readManagedPackageIndexAt, reconcileManagedProcessPlugins, snapshotSessionWorkspace, SNAPSHOT_DRAIN_BUDGET_MS, applyRosterToolPolicy, migrateAutoSessionsToFullAccess, approvePendingAutoReview, createCollabBoardFragmentProvider, createSessionCapabilityFragmentProvider, createSessionPostureFragmentProvider, canvasWorkspaceIdForSession, resolveSessionModelSelection, credentialsSet, settingsMutateFace, communityLoopbackBaseUrlCollision, existingPiAiProvider, mergeCommunityProviderModels, } from "@xrkseek/server-face";
19
+ import { attachFaceUpgrades, bindSubagentTools, bindSessionQueryTools, createFaceRuntime, IM_AGENT_PRESET_ID, IM_WORKSPACE_ID, QICHUANG_AGENT_PRESET_ID, XIANGYANG_WORKSPACE_ID, isOrchestrationWorkspaceId, effectiveHostApiKey, ensureMcpLiveIfIdle, isLoopbackAddress, timingSafeStringEqual, listCredentialSlots, peekSettingsYamlSection, publishRemoteEvent, createSessionRoutingLlm, liveRouteAllowsImageInput, resolveSessionCwd, ensureSessionWorkingDirectory, setSessionWorkingDirectory, createSessionWorktree, canonicalAgentPresetId, resolveAgentPresetProfile, effectiveSessionAgentPreset, tryHandleFaceHttp, isPluginSoftDisabledAt, readDisabledPluginIdsAt, readManagedPackageIndexAt, reconcileManagedProcessPlugins, snapshotSessionWorkspace, SNAPSHOT_DRAIN_BUDGET_MS, applyRosterToolPolicy, migrateAutoSessionsToFullAccess, approvePendingAutoReview, createCollabBoardFragmentProvider, createSessionCapabilityFragmentProvider, createSessionPostureFragmentProvider, canvasWorkspaceIdForSession, resolveSessionModelSelection, credentialsSet, settingsMutateFace, communityLoopbackBaseUrlCollision, existingPiAiProvider, mergeCommunityProviderModels, } from "@xrkseek/server-face";
20
20
  import { createPluginLoader, composeHostPolicyEngine, wireCompositionChannels, wireCompositionLlm, collectChannelPluginRegistrations, isOptionalBundleEnabledAt, } from "@xrkseek/server-loader";
21
21
  import { existsSync } from "node:fs";
22
22
  import { access } from "node:fs/promises";
23
23
  import path from "node:path";
24
- import { createHostAgentCache } from "./agent-cache.js";
24
+ import { createHostAgentCache, deferBusyAgentInvalidate } from "./agent-cache.js";
25
25
  import { createHostCron } from "@xrkseek/server-cron";
26
26
  import { AsyncLocalStorage } from "node:async_hooks";
27
27
  import { wireDrainStatus, publishDrainIdle } from "./drain-status.js";
@@ -48,7 +48,7 @@ import { resolveExecEnvironment, } from "@xrkseek/exec-environment";
48
48
  import { createSshExecutionWorldReady, resolveSshConfig, } from "@xrkseek/exec-ssh";
49
49
  /** True while an unattended cron agent turn is running — skip cron tools to avoid recursion. */
50
50
  const cronAgentDepth = new AsyncLocalStorage();
51
- export { createHostAgentCache, HOST_PLUGINS_KEY } from "./agent-cache.js";
51
+ export { createHostAgentCache, deferBusyAgentInvalidate, HOST_PLUGINS_KEY } from "./agent-cache.js";
52
52
  export { createStandingToolRegistry } from "./standing-tools.js";
53
53
  export { a2aInboundSessionId, createA2aInboundPublicHandler, resolveA2aInboundEnabled, } from "./a2a-inbound-public.js";
54
54
  import { createImFaceAdmitHook } from "./im-face-admit.js";
@@ -467,6 +467,11 @@ export function createHostManager() {
467
467
  pendingAgentInvalidate.add(sessionId);
468
468
  return true;
469
469
  },
470
+ // Idle parent of a busy nested worker: hold until the child drains,
471
+ // else parent.dispose cascades and paints the worker 「已停止」.
472
+ onHold: (sessionId) => {
473
+ pendingAgentInvalidate.add(sessionId);
474
+ },
470
475
  });
471
476
  await mcpDeferred.flush();
472
477
  };
@@ -801,15 +806,29 @@ export function createHostManager() {
801
806
  }
802
807
  return pathAccessModeFromSandbox(effectiveSandboxMode(readSessionEvents(store, sessionId)));
803
808
  },
804
- readSessionPathAllowlist: () => faceBox.runtime?.pathAllowlist.list(sessionId) ?? [],
809
+ readSessionPathAllowlist: () => {
810
+ const rt = faceBox.runtime;
811
+ if (!rt)
812
+ return [];
813
+ // Resident eviction forgets the in-memory map; cron/IM/drain
814
+ // turns may never call session.history — refill from the log.
815
+ rt.pathAllowlist.hydrate(rt.store, sessionId);
816
+ return rt.pathAllowlist.list(sessionId);
817
+ },
805
818
  clearSessionPathOnce: () => {
806
819
  faceBox.runtime?.pathAllowlist.clearOnce(sessionId);
807
820
  },
808
- ...(faceBox.runtime
809
- ? {
810
- toolSearchState: faceBox.runtime.toolDisclosure.stateFor(sessionId),
811
- }
812
- : {}),
821
+ // Always register tool_search — even while Face is still booting.
822
+ // Omitting toolSearchState used to dump every deferred MCP schema
823
+ // onto the wire (~100k+ tokens). Live getters attach to Face
824
+ // disclosure once runtime is assigned.
825
+ toolSearchState: {
826
+ listExpanded: () => faceBox.runtime?.toolDisclosure.listExpanded(sessionId) ??
827
+ new Set(),
828
+ expand: (names) => {
829
+ faceBox.runtime?.toolDisclosure.expand(sessionId, names);
830
+ },
831
+ },
813
832
  routeAllowsImage: () => faceForModality.current
814
833
  ? liveRouteAllowsImageInput(faceForModality.current, sessionId)
815
834
  : false,
@@ -1252,15 +1271,16 @@ export function createHostManager() {
1252
1271
  if (!running &&
1253
1272
  "flush" in store &&
1254
1273
  typeof store.flush === "function") {
1255
- store.flush();
1256
- }
1257
- if (!running && pendingAgentInvalidate.has(sid)) {
1258
- pendingAgentInvalidate.delete(sid);
1259
- void agentCache.invalidate(sid).then(() => mcpDeferred.flush());
1274
+ store.flush(sid);
1260
1275
  }
1261
- else if (!running) {
1262
- // Flush stragglers skipped via isBusy when their drain never
1263
- // opened (subagent edge) but the agent latch has since idled.
1276
+ if (!running) {
1277
+ // Invalidate this session if it was deferred mid-turn, then flush
1278
+ // other pending ids that are idle (incl. parents held only to
1279
+ // protect a nested busy child — see agent-cache onHold).
1280
+ if (pendingAgentInvalidate.has(sid)) {
1281
+ pendingAgentInvalidate.delete(sid);
1282
+ void agentCache.invalidate(sid).then(() => mcpDeferred.flush());
1283
+ }
1264
1284
  for (const pending of [...pendingAgentInvalidate]) {
1265
1285
  if (pending === sid)
1266
1286
  continue;
@@ -1268,10 +1288,19 @@ export function createHostManager() {
1268
1288
  agentCache.isBusy(pending)) {
1269
1289
  continue;
1270
1290
  }
1291
+ // Idle parent held only for a nested worker: wait until that
1292
+ // child is no longer protected, else parent.dispose cascades.
1293
+ if (agentCache.hasProtectedNestedChild(pending, (id) => pendingAgentInvalidate.has(id) ||
1294
+ drainActiveBox.isActive(id) ||
1295
+ agentCache.isBusy(id))) {
1296
+ continue;
1297
+ }
1271
1298
  pendingAgentInvalidate.delete(pending);
1272
1299
  void agentCache.invalidate(pending);
1273
1300
  }
1274
- void mcpDeferred.flush();
1301
+ if (!pendingAgentInvalidate.has(sid)) {
1302
+ void mcpDeferred.flush();
1303
+ }
1275
1304
  }
1276
1305
  hostStatusBox.publish?.(sid, running);
1277
1306
  });
@@ -1594,7 +1623,15 @@ export function createHostManager() {
1594
1623
  ...(config.runtime.policyFile
1595
1624
  ? { settingsDocumentPath: path.resolve(config.runtime.policyFile) }
1596
1625
  : {}),
1597
- invalidateAgent: (sessionId) => agentCache.invalidate(sessionId),
1626
+ invalidateAgent: (sessionId) => deferBusyAgentInvalidate({
1627
+ sessionId,
1628
+ drainActive: drainActiveBox.isActive(sessionId),
1629
+ busy: agentCache.isBusy(sessionId),
1630
+ defer: (id) => {
1631
+ pendingAgentInvalidate.add(id);
1632
+ },
1633
+ invalidate: (id) => agentCache.invalidate(id),
1634
+ }),
1598
1635
  onSessionFinalize: (sessionId) => {
1599
1636
  consolidateCuratedMemoryForSession(sessionId);
1600
1637
  sharedBrowser?.drop(sessionId);
@@ -1720,6 +1757,22 @@ export function createHostManager() {
1720
1757
  compactionStrategyRaw === "off"
1721
1758
  ? compactionStrategyRaw
1722
1759
  : undefined;
1760
+ const softBudgetTriggerPercent = typeof loop.softBudgetTriggerPercent === "number" &&
1761
+ Number.isFinite(loop.softBudgetTriggerPercent) &&
1762
+ loop.softBudgetTriggerPercent >= 50 &&
1763
+ loop.softBudgetTriggerPercent <= 100
1764
+ ? Math.floor(loop.softBudgetTriggerPercent)
1765
+ : undefined;
1766
+ const compactRecentMaxTokens = typeof loop.compactRecentMaxTokens === "number" &&
1767
+ Number.isFinite(loop.compactRecentMaxTokens) &&
1768
+ loop.compactRecentMaxTokens >= 2_000
1769
+ ? Math.floor(loop.compactRecentMaxTokens)
1770
+ : undefined;
1771
+ const softBudgetPeelAttempts = typeof loop.softBudgetPeelAttempts === "number" &&
1772
+ Number.isFinite(loop.softBudgetPeelAttempts) &&
1773
+ loop.softBudgetPeelAttempts >= 0
1774
+ ? Math.floor(loop.softBudgetPeelAttempts)
1775
+ : undefined;
1723
1776
  const toolResultMaxInlineBytes = typeof loop.toolResultMaxInlineBytes === "number" &&
1724
1777
  Number.isFinite(loop.toolResultMaxInlineBytes) &&
1725
1778
  loop.toolResultMaxInlineBytes >= 0
@@ -2035,8 +2088,28 @@ export function createHostManager() {
2035
2088
  ...(toolOrder !== undefined ? { toolOrder } : {}),
2036
2089
  ...(toolSettle !== undefined ? { toolSettle } : {}),
2037
2090
  ...(llmRetryMaxRetries !== undefined ? { llmRetryMaxRetries } : {}),
2038
- ...(compactionStrategy !== undefined
2039
- ? { compaction: { strategy: compactionStrategy } }
2091
+ ...(compactionStrategy !== undefined ||
2092
+ softBudgetTriggerPercent !== undefined ||
2093
+ compactRecentMaxTokens !== undefined ||
2094
+ softBudgetPeelAttempts !== undefined
2095
+ ? {
2096
+ compaction: {
2097
+ ...(compactionStrategy !== undefined
2098
+ ? { strategy: compactionStrategy }
2099
+ : {}),
2100
+ ...(softBudgetTriggerPercent !== undefined
2101
+ ? {
2102
+ softBudgetTriggerRatio: softBudgetTriggerPercent / 100,
2103
+ }
2104
+ : {}),
2105
+ ...(compactRecentMaxTokens !== undefined
2106
+ ? { compactRecentMaxTokens }
2107
+ : {}),
2108
+ ...(softBudgetPeelAttempts !== undefined
2109
+ ? { softBudgetPeelAttempts }
2110
+ : {}),
2111
+ },
2112
+ }
2040
2113
  : {}),
2041
2114
  ...(toolResultMaxInlineBytes !== undefined
2042
2115
  ? { toolResultMaxInlineBytes }
@@ -2123,9 +2196,9 @@ export function createHostManager() {
2123
2196
  }
2124
2197
  }
2125
2198
  });
2126
- // Tool-delegated children nest under the parent compose scope. UI/rewind
2127
- // forks (`mode: "fork"`) stay root `agent:{id}` scopes — nesting them
2128
- // under a live parent races dispose while the child's create() awaits.
2199
+ // Summoning session id is for identity / workspace inject only.
2200
+ // Agent scopes stay siblings under the host root so one session's
2201
+ // dispose cannot abort another.
2129
2202
  lineage.parentOf = (sessionId) => {
2130
2203
  const link = faceRuntime.subagents.getByChild(sessionId);
2131
2204
  if (!link || link.mode === "fork")
@@ -2162,7 +2235,7 @@ export function createHostManager() {
2162
2235
  ? auth.slice("Bearer ".length)
2163
2236
  : undefined;
2164
2237
  const key = bearer ?? (typeof headerKey === "string" ? headerKey : undefined);
2165
- if (key === expected)
2238
+ if (timingSafeStringEqual(key, expected))
2166
2239
  return true;
2167
2240
  // DSH Web 同源不带 Authorization;本机回环放行。
2168
2241
  return !key && isLoopbackAddress(r.socket.remoteAddress);