@inhuman.tools/harness 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. package/compact.prompt +12 -2
  2. package/dist/builtin-tools/catalog-entry.d.ts.map +1 -1
  3. package/dist/builtin-tools/catalog-entry.js +1 -0
  4. package/dist/builtin-tools/catalog-entry.js.map +1 -1
  5. package/dist/builtin-tools/index.d.ts +1 -2
  6. package/dist/builtin-tools/index.d.ts.map +1 -1
  7. package/dist/builtin-tools/index.js +1 -2
  8. package/dist/builtin-tools/index.js.map +1 -1
  9. package/dist/builtin-tools/metadata/context-need.d.ts +1 -0
  10. package/dist/builtin-tools/metadata/context-need.d.ts.map +1 -1
  11. package/dist/builtin-tools/metadata/context-need.js +13 -6
  12. package/dist/builtin-tools/metadata/context-need.js.map +1 -1
  13. package/dist/builtin-tools/metadata/context-recall.d.ts +1 -5
  14. package/dist/builtin-tools/metadata/context-recall.d.ts.map +1 -1
  15. package/dist/builtin-tools/metadata/context-recall.js +10 -7
  16. package/dist/builtin-tools/metadata/context-recall.js.map +1 -1
  17. package/dist/builtin-tools/metadata/update-metadata.d.ts +1 -0
  18. package/dist/builtin-tools/metadata/update-metadata.d.ts.map +1 -1
  19. package/dist/builtin-tools/metadata/update-metadata.js +12 -12
  20. package/dist/builtin-tools/metadata/update-metadata.js.map +1 -1
  21. package/dist/builtin-tools/named-agents/agent-catalog.d.ts.map +1 -1
  22. package/dist/builtin-tools/named-agents/agent-catalog.js +9 -9
  23. package/dist/builtin-tools/named-agents/agent-catalog.js.map +1 -1
  24. package/dist/builtin-tools/named-agents/agent-stdlib.d.ts.map +1 -1
  25. package/dist/builtin-tools/named-agents/agent-stdlib.js +2 -0
  26. package/dist/builtin-tools/named-agents/agent-stdlib.js.map +1 -1
  27. package/dist/builtin-tools/schemas/tool-result.d.ts +2 -0
  28. package/dist/builtin-tools/schemas/tool-result.d.ts.map +1 -1
  29. package/dist/builtin-tools/schemas/tool-result.js +2 -0
  30. package/dist/builtin-tools/schemas/tool-result.js.map +1 -1
  31. package/dist/builtin-tools/shell/job-stop.d.ts +1 -0
  32. package/dist/builtin-tools/shell/job-stop.d.ts.map +1 -1
  33. package/dist/builtin-tools/shell/shell-tool.d.ts +1 -0
  34. package/dist/builtin-tools/shell/shell-tool.d.ts.map +1 -1
  35. package/dist/builtin-tools/toolkit/dist-tools.d.ts +1 -0
  36. package/dist/builtin-tools/toolkit/dist-tools.d.ts.map +1 -1
  37. package/dist/builtin-tools/toolkit/dist-tools.js +1 -0
  38. package/dist/builtin-tools/toolkit/dist-tools.js.map +1 -1
  39. package/dist/connections/adopt.d.ts +2 -0
  40. package/dist/connections/adopt.d.ts.map +1 -1
  41. package/dist/connections/adopt.js.map +1 -1
  42. package/dist/connections/index.d.ts +1 -1
  43. package/dist/connections/index.d.ts.map +1 -1
  44. package/dist/extensions/behavior.d.ts.map +1 -1
  45. package/dist/extensions/behavior.js +17 -4
  46. package/dist/extensions/behavior.js.map +1 -1
  47. package/dist/extensions/consent.d.ts +0 -68
  48. package/dist/extensions/consent.d.ts.map +1 -1
  49. package/dist/extensions/consent.js +0 -69
  50. package/dist/extensions/consent.js.map +1 -1
  51. package/dist/extensions/contributions.d.ts.map +1 -1
  52. package/dist/extensions/contributions.js +1 -0
  53. package/dist/extensions/contributions.js.map +1 -1
  54. package/dist/extensions/dispatch.d.ts +1 -9
  55. package/dist/extensions/dispatch.d.ts.map +1 -1
  56. package/dist/extensions/dispatch.js +5 -7
  57. package/dist/extensions/dispatch.js.map +1 -1
  58. package/dist/extensions/eval.d.ts.map +1 -1
  59. package/dist/extensions/eval.js +2 -0
  60. package/dist/extensions/eval.js.map +1 -1
  61. package/dist/extensions/hook-deadline.d.ts +28 -0
  62. package/dist/extensions/hook-deadline.d.ts.map +1 -0
  63. package/dist/extensions/hook-deadline.js +72 -0
  64. package/dist/extensions/hook-deadline.js.map +1 -0
  65. package/dist/extensions/host.d.ts +2 -0
  66. package/dist/extensions/host.d.ts.map +1 -1
  67. package/dist/extensions/host.js +15 -0
  68. package/dist/extensions/host.js.map +1 -1
  69. package/dist/extensions/inventory.d.ts +9 -0
  70. package/dist/extensions/inventory.d.ts.map +1 -1
  71. package/dist/extensions/inventory.js +15 -1
  72. package/dist/extensions/inventory.js.map +1 -1
  73. package/dist/extensions/notes.d.ts +1 -0
  74. package/dist/extensions/notes.d.ts.map +1 -1
  75. package/dist/extensions/notes.js +1 -0
  76. package/dist/extensions/notes.js.map +1 -1
  77. package/dist/extensions/schemas/bot-definition.d.ts +1 -1
  78. package/dist/extensions/schemas/bot-definition.d.ts.map +1 -1
  79. package/dist/extensions/schemas/plugin-manifest.d.ts +4 -4
  80. package/dist/extensions/schemas/plugin-manifest.d.ts.map +1 -1
  81. package/dist/extensions/schemas/plugin-manifest.js +13 -1
  82. package/dist/extensions/schemas/plugin-manifest.js.map +1 -1
  83. package/dist/extensions/state.d.ts.map +1 -1
  84. package/dist/extensions/state.js +5 -0
  85. package/dist/extensions/state.js.map +1 -1
  86. package/dist/extensions/value.d.ts +4 -0
  87. package/dist/extensions/value.d.ts.map +1 -1
  88. package/dist/extensions/value.js.map +1 -1
  89. package/dist/protocol/schemas/health.d.ts +1 -3
  90. package/dist/protocol/schemas/health.d.ts.map +1 -1
  91. package/dist/protocol/schemas/health.js.map +1 -1
  92. package/dist/protocol/schemas/identity.d.ts +0 -4
  93. package/dist/protocol/schemas/identity.d.ts.map +1 -1
  94. package/dist/protocol/schemas/identity.js.map +1 -1
  95. package/dist/protocol/schemas/loss.d.ts +0 -2
  96. package/dist/protocol/schemas/loss.d.ts.map +1 -1
  97. package/dist/protocol/schemas/loss.js.map +1 -1
  98. package/dist/protocol/schemas/message.d.ts +0 -1
  99. package/dist/protocol/schemas/message.d.ts.map +1 -1
  100. package/dist/protocol/supervision/loss.d.ts +0 -1
  101. package/dist/protocol/supervision/loss.d.ts.map +1 -1
  102. package/dist/protocol/supervision/loss.js +0 -3
  103. package/dist/protocol/supervision/loss.js.map +1 -1
  104. package/dist/providers/auth/index.d.ts +2 -2
  105. package/dist/providers/auth/index.d.ts.map +1 -1
  106. package/dist/providers/auth/index.js +2 -2
  107. package/dist/providers/auth/index.js.map +1 -1
  108. package/dist/providers/auth/loopback.d.ts +0 -2
  109. package/dist/providers/auth/loopback.d.ts.map +1 -1
  110. package/dist/providers/auth/loopback.js.map +1 -1
  111. package/dist/providers/chatgpt/connection.d.ts +1 -0
  112. package/dist/providers/chatgpt/connection.d.ts.map +1 -1
  113. package/dist/providers/chatgpt/connection.js +1 -1
  114. package/dist/providers/chatgpt/connection.js.map +1 -1
  115. package/dist/providers/grok/connection.d.ts +2 -1
  116. package/dist/providers/grok/connection.d.ts.map +1 -1
  117. package/dist/providers/grok/connection.js +1 -1
  118. package/dist/providers/grok/connection.js.map +1 -1
  119. package/dist/providers/mcp/fetch.d.ts.map +1 -1
  120. package/dist/providers/mcp/fetch.js +2 -6
  121. package/dist/providers/mcp/fetch.js.map +1 -1
  122. package/dist/providers/nous/driver.d.ts +1 -0
  123. package/dist/providers/nous/driver.d.ts.map +1 -1
  124. package/dist/providers/openai-compat/actor.d.ts.map +1 -1
  125. package/dist/providers/openai-compat/actor.js +167 -39
  126. package/dist/providers/openai-compat/actor.js.map +1 -1
  127. package/dist/providers/openai-compat/adopt.d.ts +2 -0
  128. package/dist/providers/openai-compat/adopt.d.ts.map +1 -1
  129. package/dist/providers/openai-compat/adopt.js.map +1 -1
  130. package/dist/providers/openai-compat/connection.d.ts +9 -2
  131. package/dist/providers/openai-compat/connection.d.ts.map +1 -1
  132. package/dist/providers/openai-compat/connection.js +35 -27
  133. package/dist/providers/openai-compat/connection.js.map +1 -1
  134. package/dist/providers/openai-compat/fetch-types.d.ts.map +1 -1
  135. package/dist/providers/openai-compat/fetch-types.js +2 -6
  136. package/dist/providers/openai-compat/fetch-types.js.map +1 -1
  137. package/dist/providers/openai-compat/index.d.ts +2 -2
  138. package/dist/providers/openai-compat/index.d.ts.map +1 -1
  139. package/dist/providers/openai-compat/index.js +2 -2
  140. package/dist/providers/openai-compat/index.js.map +1 -1
  141. package/dist/providers/openai-compat/model-capabilities.d.ts +7 -0
  142. package/dist/providers/openai-compat/model-capabilities.d.ts.map +1 -0
  143. package/dist/providers/openai-compat/model-capabilities.js +24 -0
  144. package/dist/providers/openai-compat/model-capabilities.js.map +1 -0
  145. package/dist/providers/openai-compat/schema.d.ts +1 -1
  146. package/dist/providers/web/registrations/ids.d.ts +0 -2
  147. package/dist/providers/web/registrations/ids.d.ts.map +1 -1
  148. package/dist/providers/web/registrations/ids.js +0 -1
  149. package/dist/providers/web/registrations/ids.js.map +1 -1
  150. package/dist/runtime/bot-mcp.d.ts.map +1 -1
  151. package/dist/runtime/bot-mcp.js +1 -4
  152. package/dist/runtime/bot-mcp.js.map +1 -1
  153. package/dist/runtime/intent-recovery.d.ts +3 -20
  154. package/dist/runtime/intent-recovery.d.ts.map +1 -1
  155. package/dist/runtime/intent-recovery.js +1 -122
  156. package/dist/runtime/intent-recovery.js.map +1 -1
  157. package/dist/server/ask-answer.d.ts.map +1 -1
  158. package/dist/server/ask-answer.js +3 -3
  159. package/dist/server/ask-answer.js.map +1 -1
  160. package/dist/server/daemon/kernel/KernelDaemon.d.ts +4 -0
  161. package/dist/server/daemon/kernel/KernelDaemon.d.ts.map +1 -1
  162. package/dist/server/daemon/kernel/KernelDaemon.js +100 -40
  163. package/dist/server/daemon/kernel/KernelDaemon.js.map +1 -1
  164. package/dist/server/daemon/kernel/completion-catalog.d.ts +8 -0
  165. package/dist/server/daemon/kernel/completion-catalog.d.ts.map +1 -1
  166. package/dist/server/daemon/kernel/completion-catalog.js +16 -0
  167. package/dist/server/daemon/kernel/completion-catalog.js.map +1 -1
  168. package/dist/server/daemon/kernel/fs-reflection/reflectKernel.d.ts.map +1 -1
  169. package/dist/server/daemon/kernel/fs-reflection/reflectKernel.js +47 -1
  170. package/dist/server/daemon/kernel/fs-reflection/reflectKernel.js.map +1 -1
  171. package/dist/server/daemon/kernel/glance-ask-line.d.ts +1 -6
  172. package/dist/server/daemon/kernel/glance-ask-line.d.ts.map +1 -1
  173. package/dist/server/daemon/kernel/glance-ask-line.js +1 -35
  174. package/dist/server/daemon/kernel/glance-ask-line.js.map +1 -1
  175. package/dist/server/daemon/kernel/settings-files.d.ts +1 -1
  176. package/dist/server/daemon/kernel/settings-files.d.ts.map +1 -1
  177. package/dist/server/daemon/kernel/settings-files.js +3 -6
  178. package/dist/server/daemon/kernel/settings-files.js.map +1 -1
  179. package/dist/server/daemon/project/ProjectDaemon.d.ts +4 -0
  180. package/dist/server/daemon/project/ProjectDaemon.d.ts.map +1 -1
  181. package/dist/server/daemon/project/ProjectDaemon.js +11 -0
  182. package/dist/server/daemon/project/ProjectDaemon.js.map +1 -1
  183. package/dist/server/daemon/session/SessionDaemon.d.ts +5 -3
  184. package/dist/server/daemon/session/SessionDaemon.d.ts.map +1 -1
  185. package/dist/server/daemon/session/SessionDaemon.js +54 -37
  186. package/dist/server/daemon/session/SessionDaemon.js.map +1 -1
  187. package/dist/server/daemon/session/SessionOrchestrator.d.ts +1 -0
  188. package/dist/server/daemon/session/SessionOrchestrator.d.ts.map +1 -1
  189. package/dist/server/daemon/session/SessionOrchestrator.js +1371 -1146
  190. package/dist/server/daemon/session/SessionOrchestrator.js.map +1 -1
  191. package/dist/server/daemon/session/agent-runtime.d.ts +2 -0
  192. package/dist/server/daemon/session/agent-runtime.d.ts.map +1 -1
  193. package/dist/server/daemon/session/agent-runtime.js +55 -6
  194. package/dist/server/daemon/session/agent-runtime.js.map +1 -1
  195. package/dist/server/daemon/session/ambient-compact.d.ts +3 -21
  196. package/dist/server/daemon/session/ambient-compact.d.ts.map +1 -1
  197. package/dist/server/daemon/session/ambient-compact.js +7 -116
  198. package/dist/server/daemon/session/ambient-compact.js.map +1 -1
  199. package/dist/server/daemon/session/behavior-host.d.ts +9 -3
  200. package/dist/server/daemon/session/behavior-host.d.ts.map +1 -1
  201. package/dist/server/daemon/session/behavior-host.js +222 -47
  202. package/dist/server/daemon/session/behavior-host.js.map +1 -1
  203. package/dist/server/daemon/session/compact.d.ts +0 -1
  204. package/dist/server/daemon/session/compact.d.ts.map +1 -1
  205. package/dist/server/daemon/session/compact.js +7 -1
  206. package/dist/server/daemon/session/compact.js.map +1 -1
  207. package/dist/server/daemon/session/plugin-abi.d.ts.map +1 -1
  208. package/dist/server/daemon/session/plugin-abi.js +7 -11
  209. package/dist/server/daemon/session/plugin-abi.js.map +1 -1
  210. package/dist/server/daemon/session/prompt-message-of.d.ts +1 -8
  211. package/dist/server/daemon/session/prompt-message-of.d.ts.map +1 -1
  212. package/dist/server/daemon/session/prompt-message-of.js +2 -12
  213. package/dist/server/daemon/session/prompt-message-of.js.map +1 -1
  214. package/dist/server/daemon/session/re-act-loop-intent-detected-trigger.d.ts +3 -42
  215. package/dist/server/daemon/session/re-act-loop-intent-detected-trigger.d.ts.map +1 -1
  216. package/dist/server/daemon/session/re-act-loop-intent-detected-trigger.js +4 -145
  217. package/dist/server/daemon/session/re-act-loop-intent-detected-trigger.js.map +1 -1
  218. package/dist/server/daemon/session/round-boundary.d.ts +13 -0
  219. package/dist/server/daemon/session/round-boundary.d.ts.map +1 -0
  220. package/dist/server/daemon/session/round-boundary.js +196 -0
  221. package/dist/server/daemon/session/round-boundary.js.map +1 -0
  222. package/dist/server/daemon/session/round-stop.d.ts +1 -25
  223. package/dist/server/daemon/session/round-stop.d.ts.map +1 -1
  224. package/dist/server/daemon/session/round-stop.js +1 -75
  225. package/dist/server/daemon/session/round-stop.js.map +1 -1
  226. package/dist/server/daemon/session/turn-iterator.d.ts +1 -44
  227. package/dist/server/daemon/session/turn-iterator.d.ts.map +1 -1
  228. package/dist/server/daemon/session/turn-iterator.js +1 -435
  229. package/dist/server/daemon/session/turn-iterator.js.map +1 -1
  230. package/dist/server/daemon/session/turn-resolvers.d.ts +1 -16
  231. package/dist/server/daemon/session/turn-resolvers.d.ts.map +1 -1
  232. package/dist/server/daemon/session/turn-resolvers.js +1 -28
  233. package/dist/server/daemon/session/turn-resolvers.js.map +1 -1
  234. package/dist/server/daemon/session/visual-store.d.ts +2 -2
  235. package/dist/server/daemon/session/visual-store.d.ts.map +1 -1
  236. package/dist/server/daemon/session/visual-store.js +19 -20
  237. package/dist/server/daemon/session/visual-store.js.map +1 -1
  238. package/dist/server/drivers/request-timeout.d.ts +1 -0
  239. package/dist/server/drivers/request-timeout.d.ts.map +1 -1
  240. package/dist/server/drivers/request-timeout.js +2 -1
  241. package/dist/server/drivers/request-timeout.js.map +1 -1
  242. package/dist/server/runtime-bin.js +5 -8
  243. package/dist/server/runtime-bin.js.map +1 -1
  244. package/dist/server/schemas/index.d.ts +0 -1
  245. package/dist/server/schemas/index.d.ts.map +1 -1
  246. package/dist/server/schemas/index.js +0 -1
  247. package/dist/server/schemas/index.js.map +1 -1
  248. package/dist/server/schemas/json-record.d.ts +0 -6
  249. package/dist/server/schemas/json-record.d.ts.map +1 -1
  250. package/dist/server/schemas/json-record.js +0 -16
  251. package/dist/server/schemas/json-record.js.map +1 -1
  252. package/dist/server/schemas/well-known.d.ts +0 -2
  253. package/dist/server/schemas/well-known.d.ts.map +1 -1
  254. package/dist/server/schemas/well-known.js +0 -1
  255. package/dist/server/schemas/well-known.js.map +1 -1
  256. package/dist/server/testkit/scripted-model.d.ts +11 -0
  257. package/dist/server/testkit/scripted-model.d.ts.map +1 -1
  258. package/dist/server/testkit/scripted-model.js +42 -3
  259. package/dist/server/testkit/scripted-model.js.map +1 -1
  260. package/dist/server/toolkit/actor.d.ts +0 -1
  261. package/dist/server/toolkit/actor.d.ts.map +1 -1
  262. package/dist/server/toolkit/actor.js +2 -5
  263. package/dist/server/toolkit/actor.js.map +1 -1
  264. package/dist/server/toolkit/catalog.d.ts +0 -2
  265. package/dist/server/toolkit/catalog.d.ts.map +1 -1
  266. package/dist/server/toolkit/catalog.js +0 -81
  267. package/dist/server/toolkit/catalog.js.map +1 -1
  268. package/dist/server/toolkit/pack-catalog.d.ts +2 -1
  269. package/dist/server/toolkit/pack-catalog.d.ts.map +1 -1
  270. package/dist/server/toolkit/pack-catalog.js +1 -0
  271. package/dist/server/toolkit/pack-catalog.js.map +1 -1
  272. package/dist/server/toolkit/tool-entry.d.ts.map +1 -1
  273. package/dist/server/toolkit/tool-entry.js +1 -0
  274. package/dist/server/toolkit/tool-entry.js.map +1 -1
  275. package/dist/server/toolkit/tool-table.d.ts +0 -1
  276. package/dist/server/toolkit/tool-table.d.ts.map +1 -1
  277. package/dist/server/toolkit/tool-table.js +0 -3
  278. package/dist/server/toolkit/tool-table.js.map +1 -1
  279. package/dist/server/util/read-field.d.ts +0 -2
  280. package/dist/server/util/read-field.d.ts.map +1 -1
  281. package/dist/server/util/read-field.js +0 -9
  282. package/dist/server/util/read-field.js.map +1 -1
  283. package/dist/server/util/tool-call-json.d.ts +0 -1
  284. package/dist/server/util/tool-call-json.d.ts.map +1 -1
  285. package/dist/server/util/tool-call-json.js +0 -25
  286. package/dist/server/util/tool-call-json.js.map +1 -1
  287. package/dist/session/index.d.ts +4 -1
  288. package/dist/session/index.d.ts.map +1 -1
  289. package/dist/session/index.js +10 -1
  290. package/dist/session/index.js.map +1 -1
  291. package/dist/tool-runtime/guard-tool.d.ts +3 -0
  292. package/dist/tool-runtime/guard-tool.d.ts.map +1 -1
  293. package/dist/tool-runtime/guard-tool.js +37 -3
  294. package/dist/tool-runtime/guard-tool.js.map +1 -1
  295. package/dist/yjs/document-service.d.ts +2 -4
  296. package/dist/yjs/document-service.d.ts.map +1 -1
  297. package/dist/yjs/document-service.js +0 -6
  298. package/dist/yjs/document-service.js.map +1 -1
  299. package/package.json +40 -40
@@ -6,12 +6,13 @@
6
6
  * and tool boundaries a running wrap holds open live here too.
7
7
  */
8
8
  import { fail } from "@inhuman.tools/harness-diagnostics";
9
- import { AskAgentSpec, cancelOutcomeText, CallJob, FailureOutcome, SuccessfulOutcome, } from "@inhuman.tools/harness-model";
9
+ import { AskAgentSpec, hostingTurnOf, cancelOutcomeText, CallJob, FailureOutcome, SessionTurn, SuccessfulOutcome, } from "@inhuman.tools/harness-model";
10
10
  import { runInAction, when } from "mobx";
11
11
  import { declaredToolEntries, Dict, EMPTY_PIN, foregroundChoices, outcomeValue, parseAgentPin, pinJson, repin, } from "../../../extensions/index.js";
12
+ import { bounded } from "../../../extensions/hook-deadline.js";
13
+ import { isWorkReachable } from "../../../session/index.js";
12
14
  import { bindBehaviorEntries } from "../../../tool-catalog/index.js";
13
15
  import { guardedOutcomeJson } from "../../../tool-runtime/index.js";
14
- import { bounded } from "./hook-deadline.js";
15
16
  export function isForegroundAgent(session) {
16
17
  const spec = session.agent.spec;
17
18
  return spec.name === "" && !(spec instanceof AskAgentSpec);
@@ -30,6 +31,21 @@ function callSettle(job, fallback) {
30
31
  function messageOf(error) {
31
32
  return error instanceof Error ? error.message : String(error);
32
33
  }
34
+ /** Executor ownership is nearest-first; inherited plugin/eval context may use an outer turn. */
35
+ function* owningTurns(job) {
36
+ const seen = new Set();
37
+ let node = job;
38
+ while (node != null && !seen.has(node)) {
39
+ seen.add(node);
40
+ if (node instanceof SessionTurn)
41
+ yield node;
42
+ const parent = node.parent;
43
+ node =
44
+ parent != null && typeof parent === "object" && "parent" in parent
45
+ ? parent
46
+ : null;
47
+ }
48
+ }
33
49
  export class SessionBehavior {
34
50
  kernel;
35
51
  session;
@@ -40,11 +56,15 @@ export class SessionBehavior {
40
56
  #attaching = null;
41
57
  #problems = { pin: "", load: "" };
42
58
  #turnProblems = [];
59
+ #lifetime = new AbortController();
60
+ #admission = new AbortController();
61
+ #signals = new Map();
43
62
  #turns = new Map();
44
63
  /** Tool calls whose plugin guards reached the core and wait for its result. */
45
64
  #tools = new Map();
65
+ #finishing = new Map();
46
66
  /** Pending job-ending releases of {@link holdTool}. */
47
- #releases = new Set();
67
+ #releases = new Map();
48
68
  constructor(kernel, session, projectId,
49
69
  /** Host tools a declared tool may not shadow. */
50
70
  hostCatalog, hooks) {
@@ -59,7 +79,10 @@ export class SessionBehavior {
59
79
  return this.#attached?.agent ?? null;
60
80
  }
61
81
  /** Turn start: re-select the foreground's bots, then attach the pin. */
62
- async prepare() {
82
+ async prepare(signal) {
83
+ signal?.throwIfAborted();
84
+ this.hooks.ownershipSignal?.throwIfAborted();
85
+ this.#lifetime.signal.throwIfAborted();
63
86
  this.#turnProblems = [];
64
87
  this.#publish();
65
88
  const spec = this.session.agent.spec;
@@ -73,6 +96,9 @@ export class SessionBehavior {
73
96
  /* a pin this host cannot read is replaced by a fresh selection */
74
97
  }
75
98
  const next = pinJson(await repin(foregroundChoices(this.kernel.packages(), errors), previous, errors));
99
+ signal?.throwIfAborted();
100
+ this.hooks.ownershipSignal?.throwIfAborted();
101
+ this.#lifetime.signal.throwIfAborted();
76
102
  this.#report("pin", errors);
77
103
  if (next !== spec.behaviorPin) {
78
104
  runInAction(() => {
@@ -80,10 +106,13 @@ export class SessionBehavior {
80
106
  });
81
107
  }
82
108
  }
83
- return this.attach();
109
+ return this.attach(signal);
84
110
  }
85
111
  /** Attach whatever the session's spec pins now. */
86
- async attach() {
112
+ async attach(signal) {
113
+ signal?.throwIfAborted();
114
+ this.hooks.ownershipSignal?.throwIfAborted();
115
+ this.#lifetime.signal.throwIfAborted();
87
116
  const json = this.session.agent.spec.behaviorPin;
88
117
  if (this.#attached?.json === json)
89
118
  return this.#attached.agent;
@@ -92,8 +121,15 @@ export class SessionBehavior {
92
121
  pending = { json, promise: this.#load(json) };
93
122
  this.#attaching = pending;
94
123
  }
95
- const agent = await pending.promise;
96
- if (this.#attaching === pending) {
124
+ const { agent, errors } = await pending.promise;
125
+ signal?.throwIfAborted();
126
+ this.hooks.ownershipSignal?.throwIfAborted();
127
+ this.#lifetime.signal.throwIfAborted();
128
+ if (this.hooks.canApplyResults?.() !== false &&
129
+ this.#attaching === pending &&
130
+ this.session.agent.spec.behaviorPin === json) {
131
+ bindBehaviorEntries(this.session, declaredToolEntries(agent, (name) => this.hostCatalog.catalogEntry(name) != null, errors, () => this.session.findRunningTurn()?.uuid ?? ""));
132
+ this.#report("load", errors);
97
133
  this.#attached = { json, agent };
98
134
  this.#attaching = null;
99
135
  }
@@ -114,24 +150,69 @@ export class SessionBehavior {
114
150
  pin,
115
151
  });
116
152
  errors.push(...attached.errors);
117
- bindBehaviorEntries(this.session, declaredToolEntries(attached.agent, (name) => this.hostCatalog.catalogEntry(name) != null, errors, () => this.session.findRunningTurn()?.uuid ?? ""));
118
- this.#report("load", errors);
119
- return attached.agent;
153
+ return { agent: attached.agent, errors };
120
154
  }
121
155
  /**
122
156
  * A plugin promise this host waits on is bounded: by the hook deadline, and
123
157
  * (when `honourStop`) by the turn's cancel request. A timeout is recorded
124
158
  * as a problem and the boundary is skipped; the plugin's late result is dropped.
125
159
  */
126
- async #within(turn, work, what, honourStop) {
160
+ async #within(turn, work, what, honourStop, opened) {
127
161
  const ms = this.hooks.hookTimeoutMs();
128
- const outcome = await bounded(work, honourStop ? { ms, stopped: () => turn.cancelRequested } : { ms });
129
- if (outcome.kind === "done")
130
- return { ok: true, value: outcome.value };
162
+ let outcome;
163
+ try {
164
+ outcome = await bounded(work, {
165
+ ms,
166
+ signal: honourStop
167
+ ? AbortSignal.any([
168
+ this.#lifetime.signal,
169
+ this.#admission.signal,
170
+ ...(this.hooks.ownershipSignal == null ? [] : [this.hooks.ownershipSignal]),
171
+ ...(this.#signals.has(turn) ? [this.#signals.get(turn)] : []),
172
+ ])
173
+ : AbortSignal.any([
174
+ this.#lifetime.signal,
175
+ ...(this.hooks.ownershipSignal == null ? [] : [this.hooks.ownershipSignal]),
176
+ ]),
177
+ stopped: () => this.hooks.canApplyResults?.() === false ||
178
+ !isWorkReachable(this.session, turn) ||
179
+ (honourStop && turn.cancelRequested),
180
+ });
181
+ }
182
+ catch (error) {
183
+ opened?.abandon();
184
+ throw error;
185
+ }
186
+ if (outcome.kind === "done") {
187
+ if (this.hooks.canApplyResults?.() !== false &&
188
+ !this.#lifetime.signal.aborted &&
189
+ isWorkReachable(this.session, turn) &&
190
+ (!honourStop || (!this.#admission.signal.aborted && !this.#signals.get(turn)?.aborted && !turn.cancelRequested))) {
191
+ return { ok: true, value: outcome.value };
192
+ }
193
+ opened?.abandon();
194
+ return { ok: false };
195
+ }
196
+ opened?.abandon();
131
197
  if (outcome.kind === "timeout")
132
198
  this.problem(what, new Error(`no answer in ${ms}ms; skipped`));
133
199
  return { ok: false };
134
200
  }
201
+ /** A guard cannot outlive its wrap or the turn that admitted it. */
202
+ signalFor(job) {
203
+ const owner = [...owningTurns(job)].find((turn) => this.#signals.has(turn));
204
+ const signal = owner == null ? undefined : this.#signals.get(owner);
205
+ return AbortSignal.any([
206
+ this.#lifetime.signal,
207
+ this.#admission.signal,
208
+ ...(this.hooks.ownershipSignal == null ? [] : [this.hooks.ownershipSignal]),
209
+ ...(signal == null ? [] : [signal]),
210
+ ]);
211
+ }
212
+ /** Stop new plugin entry immediately, while an effect already on the wire may still drain. */
213
+ stopAdmission() {
214
+ this.#admission.abort(new Error("plugin admission stopped"));
215
+ }
135
216
  /** A hook or guard failure in this turn. Shown until the next turn starts. */
136
217
  problem(what, error) {
137
218
  const text = `${what}: ${messageOf(error)}`;
@@ -151,6 +232,8 @@ export class SessionBehavior {
151
232
  fail("plugin behavior", text);
152
233
  }
153
234
  #publish() {
235
+ if (this.hooks.canApplyResults?.() === false)
236
+ return;
154
237
  const joined = [this.#problems.pin, this.#problems.load, ...this.#turnProblems]
155
238
  .filter((row) => row !== "")
156
239
  .join("; ");
@@ -163,18 +246,33 @@ export class SessionBehavior {
163
246
  }
164
247
  /** A parked turn is resumed by the next wrap, which opens its boundary again. */
165
248
  dropTurn(turn) {
249
+ const state = this.#turns.get(turn);
250
+ state?.round?.abandon();
251
+ state?.turn?.abandon();
166
252
  this.#turns.delete(turn);
253
+ this.#signals.delete(turn);
167
254
  }
168
255
  /**
169
256
  * Attach the session's behavior and open the turn boundary the first time
170
257
  * this orchestrator runs the turn. A turn picked up after a park or restart
171
258
  * (`resumed`) opens it again, so its post hooks still run when it ends.
172
259
  */
173
- async enterTurn(turn, resumed) {
260
+ async enterTurn(turn, resumed, signal) {
261
+ this.#signals.set(turn, signal);
174
262
  const known = this.#turns.get(turn);
175
263
  if (known != null)
176
264
  return known;
177
- const prepared = await this.#within(turn, this.prepare(), "plugin behavior", true);
265
+ const preparation = new AbortController();
266
+ const signalForPreparation = AbortSignal.any([
267
+ signal,
268
+ ...(this.hooks.ownershipSignal == null ? [] : [this.hooks.ownershipSignal]),
269
+ this.#lifetime.signal,
270
+ this.#admission.signal,
271
+ preparation.signal,
272
+ ]);
273
+ const prepared = await this.#within(turn, this.prepare(signalForPreparation), "plugin behavior", true, {
274
+ abandon: () => preparation.abort(new Error("plugin preparation abandoned")),
275
+ });
178
276
  if (!prepared.ok)
179
277
  return null;
180
278
  const agent = prepared.value;
@@ -184,10 +282,10 @@ export class SessionBehavior {
184
282
  if (agent.empty)
185
283
  return state;
186
284
  const opened = agent.openBoundary("turn", new Dict({ id: turn.uuid, prompt: turn.prompt, resumed }), turn.uuid);
187
- const started = await this.#within(turn, opened.started, "plugin turn hook", true);
285
+ const started = await this.#within(turn, opened.started, "plugin turn hook", true, opened);
188
286
  // Stopped: no turn. Timed out: the turn runs without that boundary.
189
287
  if (!started.ok)
190
- return turn.cancelRequested ? null : state;
288
+ return signal.aborted || turn.cancelRequested || !isWorkReachable(this.session, turn) ? null : state;
191
289
  if (!started.value.entered) {
192
290
  this.#refused("turn", started.value.outcome);
193
291
  return null;
@@ -200,7 +298,7 @@ export class SessionBehavior {
200
298
  return true;
201
299
  state.rounds += 1;
202
300
  const opened = state.agent.openBoundary("round", new Dict({ turn: turn.uuid, index: state.rounds }), turn.uuid);
203
- const started = await this.#within(turn, opened.started, "plugin round hook", true);
301
+ const started = await this.#within(turn, opened.started, "plugin round hook", true, opened);
204
302
  if (!started.ok)
205
303
  return !turn.cancelRequested;
206
304
  if (!started.value.entered) {
@@ -216,14 +314,20 @@ export class SessionBehavior {
216
314
  if (state == null || round == null)
217
315
  return;
218
316
  state.round = null;
219
- const finished = await this.#within(turn, round.finish(settle), "plugin round hook", true);
317
+ const finished = await this.#within(turn, round.finish(settle), "plugin round hook", true, round);
220
318
  if (finished.ok)
221
319
  this.#boundaryReport("round", finished.value);
222
320
  }
223
321
  /** A round still open here did not finish. The turn fails only when cancelled or broken. */
224
322
  async leaveTurn(turn, broke) {
323
+ await Promise.all([...this.#finishing.values()].filter((work) => work.owner === turn).map((work) => work.promise));
324
+ if (this.hooks.canApplyResults?.() === false) {
325
+ this.dropTurn(turn);
326
+ return;
327
+ }
225
328
  const state = this.#turns.get(turn);
226
329
  if (state == null) {
330
+ this.#signals.delete(turn);
227
331
  this.#recordPluginState(turn);
228
332
  return;
229
333
  }
@@ -234,12 +338,12 @@ export class SessionBehavior {
234
338
  if (state.round != null) {
235
339
  const round = state.round;
236
340
  state.round = null;
237
- const finished = await this.#within(turn, round.finish({ ok: false, error: failure === "" ? "round did not finish" : failure }), "plugin round hook", false);
341
+ const finished = await this.#within(turn, round.finish({ ok: false, error: failure === "" ? "round did not finish" : failure }), "plugin round hook", false, round);
238
342
  if (finished.ok)
239
343
  this.#boundaryReport("round", finished.value);
240
344
  }
241
- if (state.turn != null) {
242
- const finished = await this.#within(turn, state.turn.finish(failure === "" ? { ok: true, value: false } : { ok: false, error: failure }), "plugin turn hook", false);
345
+ if (this.hooks.canApplyResults?.() !== false && state.turn != null) {
346
+ const finished = await this.#within(turn, state.turn.finish(failure === "" ? { ok: true, value: false } : { ok: false, error: failure }), "plugin turn hook", false, state.turn);
243
347
  if (finished.ok)
244
348
  this.#boundaryReport("turn", finished.value);
245
349
  }
@@ -248,7 +352,9 @@ export class SessionBehavior {
248
352
  this.problem("plugin turn boundary", error);
249
353
  }
250
354
  finally {
251
- this.kernel.notes.expireUnused(this.session.sessionId, turn.uuid);
355
+ this.#signals.delete(turn);
356
+ if (this.hooks.canApplyResults?.() !== false)
357
+ this.kernel.notes.expireUnused(this.session.sessionId, turn.uuid);
252
358
  this.#recordPluginState(turn);
253
359
  }
254
360
  }
@@ -257,10 +363,12 @@ export class SessionBehavior {
257
363
  * away while its hooks ran must not leave their writes on the new head.
258
364
  */
259
365
  #recordPluginState(turn) {
366
+ if (this.hooks.canApplyResults?.() === false)
367
+ return;
260
368
  // A turn off the live chain was rewound away. The plugin state in the
261
369
  // session now belongs to the head that replaced it: record nothing on the
262
370
  // old turn and restore nothing, however late its hooks finish.
263
- if (!this.session.liveChain.includes(turn))
371
+ if (!isWorkReachable(this.session, turn))
264
372
  return;
265
373
  turn.pluginState = this.session.pluginState;
266
374
  }
@@ -281,12 +389,16 @@ export class SessionBehavior {
281
389
  * hooks would never run and the closure would stay held.
282
390
  */
283
391
  holdTool(job, opened) {
284
- this.#tools.set(job, opened);
285
- let release;
392
+ const origin = hostingTurnOf(this.session, job);
393
+ const held = {
394
+ opened,
395
+ owner: owningTurns(job).next().value ?? null,
396
+ retained: () => origin != null && this.session.liveTurns.has(origin) && origin.subtreeWork.includes(job),
397
+ };
398
+ this.#tools.set(job, held);
286
399
  const fire = () => {
287
- if (release !== undefined)
288
- this.#releases.delete(release);
289
- if (this.#tools.get(job) !== opened)
400
+ this.#releases.delete(job);
401
+ if (this.#tools.get(job) !== held)
290
402
  return;
291
403
  this.#tools.delete(job);
292
404
  const receipt = job.receiptJson ?? "";
@@ -295,34 +407,49 @@ export class SessionBehavior {
295
407
  : receipt !== ""
296
408
  ? outcomeValue(receipt)
297
409
  : { ok: false, error: "cancelled" };
298
- void opened.finish(settle).then((outcome) => this.toolReport(job, outcome), (error) => this.problem(`plugin ${job.name} hook`, error));
410
+ const finishing = this.#finishToolBoundary(job, held, settle);
411
+ this.#finishing.set(job, { owner: held.owner, promise: finishing });
412
+ void finishing.finally(() => this.#finishing.delete(job));
299
413
  };
300
- release = when(() => job.completed || job.cancelled, fire);
301
- if (this.#tools.get(job) === opened)
302
- this.#releases.add(release);
414
+ const release = when(() => job.completed || job.cancelled, fire);
415
+ if (this.#tools.get(job) === held)
416
+ this.#releases.set(job, release);
303
417
  }
304
418
  /** Post hooks observe the worker's settled outcome. */
305
419
  async finishCall(job, signal) {
306
- const opened = this.#tools.get(job);
307
- if (opened == null)
420
+ const held = this.#tools.get(job);
421
+ if (held == null) {
422
+ await this.#finishing.get(job)?.promise;
308
423
  return;
424
+ }
425
+ const { opened } = held;
309
426
  this.#tools.delete(job);
310
- if (isParkAbort(signal))
427
+ this.#releases.get(job)?.();
428
+ this.#releases.delete(job);
429
+ if (isParkAbort(signal)) {
430
+ opened.abandon();
311
431
  return;
312
- this.toolReport(job, await opened.finish(callSettle(job, signal.aborted ? cancelOutcomeText(signal.reason) : "no outcome")));
432
+ }
433
+ await this.#finishToolBoundary(job, held, callSettle(job, signal.aborted ? cancelOutcomeText(signal.reason) : "no outcome"), signal);
313
434
  }
314
435
  /** Post hooks and guard tails see the core's receipt, which they may replace or annotate. */
315
436
  async finishTool(job, signal) {
316
- const opened = this.#tools.get(job);
317
- if (opened == null)
437
+ const held = this.#tools.get(job);
438
+ if (held == null) {
439
+ await this.#finishing.get(job)?.promise;
318
440
  return;
441
+ }
442
+ const { opened } = held;
319
443
  this.#tools.delete(job);
320
- if (isParkAbort(signal))
444
+ this.#releases.get(job)?.();
445
+ this.#releases.delete(job);
446
+ if (isParkAbort(signal)) {
447
+ opened.abandon();
321
448
  return;
449
+ }
322
450
  const receipt = job.receiptJson ?? "";
323
- const outcome = await opened.finish(outcomeValue(receipt));
324
- this.toolReport(job, outcome);
325
- if (job.completed || job.cancelled)
451
+ const outcome = await this.#finishToolBoundary(job, held, outcomeValue(receipt), signal);
452
+ if (outcome == null || signal.aborted || job.completed || job.cancelled)
326
453
  return;
327
454
  const next = guardedOutcomeJson(receipt, outcome);
328
455
  if (next !== receipt) {
@@ -331,6 +458,47 @@ export class SessionBehavior {
331
458
  });
332
459
  }
333
460
  }
461
+ async #finishToolBoundary(job, held, settle, signal) {
462
+ const { opened } = held;
463
+ const inactive = () => this.hooks.canApplyResults?.() === false ||
464
+ this.#lifetime.signal.aborted ||
465
+ this.#admission.signal.aborted ||
466
+ signal?.aborted === true ||
467
+ !held.retained();
468
+ if (inactive()) {
469
+ opened.abandon();
470
+ return null;
471
+ }
472
+ try {
473
+ const result = await bounded(opened.finish(settle), {
474
+ ms: this.hooks.hookTimeoutMs(),
475
+ signal: AbortSignal.any([
476
+ this.#lifetime.signal,
477
+ this.#admission.signal,
478
+ ...(this.hooks.ownershipSignal == null ? [] : [this.hooks.ownershipSignal]),
479
+ ...(signal == null ? [] : [signal]),
480
+ ]),
481
+ stopped: () => !held.retained(),
482
+ });
483
+ if (result.kind !== "done") {
484
+ opened.abandon();
485
+ if (result.kind === "timeout")
486
+ this.problem(`plugin ${job.name} hook`, new Error("deadline exceeded; skipped"));
487
+ return null;
488
+ }
489
+ if (inactive()) {
490
+ opened.abandon();
491
+ return null;
492
+ }
493
+ this.toolReport(job, result.value);
494
+ return result.value;
495
+ }
496
+ catch (error) {
497
+ opened.abandon();
498
+ this.problem(`plugin ${job.name} hook`, error);
499
+ return null;
500
+ }
501
+ }
334
502
  toolReport(job, outcome) {
335
503
  for (const failure of outcome.hookFailures)
336
504
  this.problem(`plugin ${job.name} hook`, failure);
@@ -338,11 +506,18 @@ export class SessionBehavior {
338
506
  this.problem(`plugin ${job.name} guard`, outcome.guardFailure);
339
507
  }
340
508
  [Symbol.dispose]() {
341
- for (const release of this.#releases)
509
+ this.#lifetime.abort(new Error("plugin behavior disposed"));
510
+ for (const turn of this.#turns.keys())
511
+ this.dropTurn(turn);
512
+ for (const held of this.#tools.values())
513
+ held.opened.abandon();
514
+ for (const release of this.#releases.values())
342
515
  release();
343
516
  this.#releases.clear();
344
517
  this.#tools.clear();
345
- bindBehaviorEntries(this.session, []);
518
+ this.#signals.clear();
519
+ if (this.hooks.canApplyResults?.() !== false)
520
+ bindBehaviorEntries(this.session, []);
346
521
  }
347
522
  }
348
523
  //# sourceMappingURL=behavior-host.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"behavior-host.js","sourceRoot":"","sources":["../../../../src/server/daemon/session/behavior-host.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,OAAO,EACP,cAAc,EAGd,iBAAiB,GAElB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEzC,OAAO,EACL,mBAAmB,EACnB,IAAI,EACJ,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,OAAO,EACP,KAAK,GAQN,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,MAAM,UAAU,iBAAiB,CAAC,OAAoB;IACpD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;IAChC,OAAO,IAAI,CAAC,IAAI,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,YAAY,YAAY,CAAC,CAAC;AAC7D,CAAC;AAiBD,qEAAqE;AACrE,MAAM,UAAU,WAAW,CAAC,MAAmB;IAC7C,OAAO,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC;AACpD,CAAC;AAED,+FAA+F;AAC/F,SAAS,UAAU,CAAC,GAAY,EAAE,QAAgB;IAChD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAC5B,IAAI,OAAO,YAAY,iBAAiB;QAAE,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAClH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,YAAY,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC9G,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,OAAO,eAAe;IAeP;IACA;IACA;IAEA;IACA;IAnBnB,SAAS,GAAoE,IAAI,CAAC;IAClF,UAAU,GAGC,IAAI,CAAC;IACP,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAC3C,aAAa,GAAa,EAAE,CAAC;IACpB,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;IACvD,+EAA+E;IACtE,MAAM,GAAG,IAAI,GAAG,EAAoC,CAAC;IAC9D,uDAAuD;IAC9C,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;IAE3C,YACmB,MAAsB,EACtB,OAAoB,EACpB,SAAiB;IAClC,iDAAiD;IAChC,WAA8B,EAC9B,KAA2B;QAL3B,WAAM,GAAN,MAAM,CAAgB;QACtB,YAAO,GAAP,OAAO,CAAa;QACpB,cAAS,GAAT,SAAS,CAAQ;QAEjB,gBAAW,GAAX,WAAW,CAAmB;QAC9B,UAAK,GAAL,KAAK,CAAsB;IAC3C,CAAC;IAEJ,0EAA0E;IAC1E,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,IAAI,CAAC;IACvC,CAAC;IAED,wEAAwE;IACxE,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QACrC,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,QAAQ,GAAa,SAAS,CAAC;YACnC,IAAI,CAAC;gBACH,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACP,kEAAkE;YACpE,CAAC;YACD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;YACvG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC5B,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC9B,WAAW,CAAC,GAAG,EAAE;oBACf,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBAC1B,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAED,mDAAmD;IACnD,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;QACjD,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAC/D,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;QAC9B,IAAI,OAAO,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;QAC5B,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;QACpC,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,GAAG,GAAa,SAAS,CAAC;QAC9B,IAAI,CAAC;YACH,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACxC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,GAAG;SACJ,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAChC,mBAAmB,CACjB,IAAI,CAAC,OAAO,EACZ,mBAAmB,CACjB,QAAQ,CAAC,KAAK,EACd,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,EACrD,MAAM,EACN,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,IAAI,IAAI,EAAE,CACjD,CACF,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,OAAO,QAAQ,CAAC,KAAK,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CACX,IAAiB,EACjB,IAAgB,EAChB,IAAY,EACZ,UAAmB;QAEnB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACvG,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QACvE,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC;QAC/F,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,8EAA8E;IAC9E,OAAO,CAAC,IAAY,EAAE,KAAc;QAClC,MAAM,IAAI,GAAG,GAAG,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO;QAC9C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,KAAqB,EAAE,MAAyB;QACtD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO;QAC3C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,IAAI,KAAK,EAAE;YAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,QAAQ;QACN,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;aAC5E,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC;aAC3B,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI;YAAE,OAAO;QAChD,WAAW,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iFAAiF;IACjF,QAAQ,CAAC,IAAiB;QACxB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,SAAS,CAAC,IAAiB,EAAE,OAAgB;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,KAAK,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;QACnF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAChH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;QACnF,oEAAoE;QACpE,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAiB,EAAE,KAAmB;QACpD,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACnC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QAClB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAChH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC;QACpF,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC9C,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAiB,EAAE,MAAc;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,KAAK,EAAE,KAAK,CAAC;QAC3B,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO;QAC3C,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;QACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC;QAC3F,IAAI,QAAQ,CAAC,EAAE;YAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjE,CAAC;IAED,4FAA4F;IAC5F,KAAK,CAAC,SAAS,CAAC,IAAiB,EAAE,KAAa;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3D,IAAI,CAAC;YACH,yFAAyF;YACzF,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC1B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;gBACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CACjC,IAAI,EACJ,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EACrF,mBAAmB,EACnB,KAAK,CACN,CAAC;gBACF,IAAI,QAAQ,CAAC,EAAE;oBAAE,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CACjC,IAAI,EACJ,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAC9F,kBAAkB,EAClB,KAAK,CACN,CAAC;gBACF,IAAI,QAAQ,CAAC,EAAE;oBAAE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAClE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,IAAiB;QAClC,sEAAsE;QACtE,0EAA0E;QAC1E,+DAA+D;QAC/D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO;QACnD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IAC9C,CAAC;IAED,eAAe,CAAC,KAAa,EAAE,OAAwB;QACrD,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,YAAY;YAAE,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1F,IAAI,OAAO,CAAC,YAAY,KAAK,EAAE;YAAE,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/F,CAAC;IAED,QAAQ,CAAC,KAAa,EAAE,OAAwB;QAC9C,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,UAAU,EAAE,OAAO,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACpG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,GAAgB,EAAE,MAA2B;QACpD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC7B,IAAI,OAAiC,CAAC;QACtC,MAAM,IAAI,GAAG,GAAS,EAAE;YACtB,IAAI,OAAO,KAAK,SAAS;gBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1D,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM;gBAAE,OAAO;YAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;YACtC,MAAM,MAAM,GACV,GAAG,YAAY,OAAO;gBACpB,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC;gBAC9B,CAAC,CAAC,OAAO,KAAK,EAAE;oBACd,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC;oBACvB,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAC7B,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,EAC1C,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,IAAI,OAAO,EAAE,KAAK,CAAC,CACnE,CAAC;QACJ,CAAC,CAAC;QACF,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,MAAM;YAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,uDAAuD;IACvD,KAAK,CAAC,UAAU,CAAC,GAAY,EAAE,MAAmB;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,MAAM,IAAI,IAAI;YAAE,OAAO;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,WAAW,CAAC,MAAM,CAAC;YAAE,OAAO;QAChC,IAAI,CAAC,UAAU,CACb,GAAG,EACH,MAAM,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CACvG,CAAC;IACJ,CAAC;IAED,6FAA6F;IAC7F,KAAK,CAAC,UAAU,CAAC,GAAgB,EAAE,MAAmB;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,MAAM,IAAI,IAAI;YAAE,OAAO;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,WAAW,CAAC,MAAM,CAAC;YAAE,OAAO;QAChC,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC9B,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS;YAAE,OAAO;QAC3C,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,WAAW,CAAC,GAAG,EAAE;gBACf,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;YACzB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,UAAU,CAAC,GAAgB,EAAE,OAAoB;QAC/C,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,YAAY;YAAE,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,IAAI,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7F,IAAI,OAAO,CAAC,YAAY,KAAK,EAAE;YAAE,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,IAAI,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAClG,CAAC;IAED,CAAC,MAAM,CAAC,OAAO,CAAC;QACd,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAChD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC;CACF"}
1
+ {"version":3,"file":"behavior-host.js","sourceRoot":"","sources":["../../../../src/server/daemon/session/behavior-host.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { type CompactProgram as LoadedCompactProgram } from "../../../session/index.js";
2
- export type CompactProgram = LoadedCompactProgram;
3
2
  /**
4
3
  * The loaded strategy. `source` is what `applyCompact` executes; `sourcePath`
5
4
  * is the module root for `(require …)`.
@@ -1 +1 @@
1
- {"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../../../src/server/daemon/session/compact.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,cAAc,IAAI,oBAAoB,EAE5C,MAAM,WAAW,CAAC;AAInB,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC;AASlD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAE7F"}
1
+ {"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../../../src/server/daemon/session/compact.ts"],"names":[],"mappings":"AAWA,OAAO,EAEL,KAAK,cAAc,IAAI,oBAAoB,EAE5C,MAAM,WAAW,CAAC;AAWnB;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAK7F"}
@@ -4,6 +4,9 @@
4
4
  * strategy paths are the harness's.
5
5
  */
6
6
  import { readFileSync } from "node:fs";
7
+ import { dirname } from "node:path";
8
+ import { programSourceLoader } from "@inhuman.tools/scheme-program/fs";
9
+ import { pinModuleLoader } from "@inhuman.tools/turn/resources";
7
10
  import { loadCompactProgram as loadSessionCompactProgram, } from "../../../session/index.js";
8
11
  import { defaultCompactStrategySource, packageStrategyPath, resolveCompactStrategyPath } from "../../defaults/index.js";
9
12
  const resolve = {
@@ -17,6 +20,9 @@ const resolve = {
17
20
  * is the module root for `(require …)`.
18
21
  */
19
22
  export function loadCompactProgram(spec, kernelFsRoot) {
20
- return loadSessionCompactProgram(spec, kernelFsRoot, resolve);
23
+ const loaded = loadSessionCompactProgram(spec, kernelFsRoot, resolve);
24
+ return loaded.sourcePath == null
25
+ ? loaded
26
+ : { ...loaded, moduleLoader: pinModuleLoader(programSourceLoader(dirname(loaded.sourcePath))) };
21
27
  }
22
28
  //# sourceMappingURL=compact.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compact.js","sourceRoot":"","sources":["../../../../src/server/daemon/session/compact.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EACL,kBAAkB,IAAI,yBAAyB,GAGhD,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAIxH,MAAM,OAAO,GAA2B;IACtC,WAAW,EAAE,0BAA0B;IACvC,aAAa,EAAE,4BAA4B;IAC3C,mBAAmB;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;CAC/C,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAa,EAAE,YAAqB;IACrE,OAAO,yBAAyB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"compact.js","sourceRoot":"","sources":["../../../../src/server/daemon/session/compact.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EACL,kBAAkB,IAAI,yBAAyB,GAGhD,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAExH,MAAM,OAAO,GAA2B;IACtC,WAAW,EAAE,0BAA0B;IACvC,aAAa,EAAE,4BAA4B;IAC3C,mBAAmB;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;CAC/C,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAa,EAAE,YAAqB;IACrE,MAAM,MAAM,GAAG,yBAAyB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC,UAAU,IAAI,IAAI;QAC9B,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,eAAe,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;AACpG,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-abi.d.ts","sourceRoot":"","sources":["../../../../src/server/daemon/session/plugin-abi.ts"],"names":[],"mappings":"AAeA,OAAO,EASL,KAAK,aAAa,EAElB,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMtE,0DAA0D;AAC1D,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;CAC3C,CAAC;AAEF,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,SAAS,aAAa,EAAE,EAClC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,SAAS,EAAE,CAAC,CAOtB"}
1
+ {"version":3,"file":"plugin-abi.d.ts","sourceRoot":"","sources":["../../../../src/server/daemon/session/plugin-abi.ts"],"names":[],"mappings":"AAiBA,OAAO,EASL,KAAK,aAAa,EAElB,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMtE,0DAA0D;AAC1D,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;CAC3C,CAAC;AAEF,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,SAAS,aAAa,EAAE,EAClC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,SAAS,EAAE,CAAC,CAOtB"}
@@ -10,6 +10,7 @@
10
10
  import { AsyncLocalStorage } from "node:async_hooks";
11
11
  import { randomUUID } from "node:crypto";
12
12
  import { readFileSync } from "node:fs";
13
+ import invariant from "tiny-invariant";
13
14
  import { documentRoot, SessionRoot, ToolCallJob } from "@inhuman.tools/harness-model";
14
15
  import { callDeclaredTool, Dict, jsonToVal, loadProgram, Proc, resolvePackageSurface, toJS, toolResultOf, } from "../../../extensions/index.js";
15
16
  import { ToolCallHandler } from "../../../tool-runtime/index.js";
@@ -68,6 +69,7 @@ async function loadAbi(plugin, kernel, problems) {
68
69
  parameters: { ...decl.input.json },
69
70
  class: decl.toolClass === "" ? "effect" : decl.toolClass,
70
71
  source: { kind: "pack", pluginName: plugin.name },
72
+ continuation: decl.continuation,
71
73
  triggersReactLoop: decl.triggersReactLoop,
72
74
  isSideChannel: decl.isSideChannel,
73
75
  representation: decl.representation,
@@ -137,8 +139,7 @@ function fileArgs(name, values) {
137
139
  continue;
138
140
  }
139
141
  if (typeof value === "string" && value.startsWith(":") && value.length > 1 && positionals.length > 0) {
140
- if (index + 1 >= values.length)
141
- throw new Error(`${name}: dangling keyword ${value}`);
142
+ invariant(index + 1 < values.length, `${name}: dangling keyword ${value}`);
142
143
  options[value.slice(1)] = toJS(values[index + 1]);
143
144
  index += 1;
144
145
  continue;
@@ -146,21 +147,16 @@ function fileArgs(name, values) {
146
147
  positionals.push(value);
147
148
  }
148
149
  const head = positionals[0];
149
- if (typeof head !== "string")
150
- throw new Error(`${name}: ${FILE_FIELD[name]} is required`);
151
- if (positionals.length > 1)
152
- throw new Error(`${name}: unexpected argument`);
150
+ invariant(typeof head === "string", `${name}: ${FILE_FIELD[name]} is required`);
151
+ invariant(positionals.length <= 1, `${name}: unexpected argument`);
153
152
  return { [FILE_FIELD[name]]: head, ...options };
154
153
  }
155
154
  async function callCatalog(name, args) {
156
155
  const slot = examToolCtx.getStore();
157
- if (slot == null)
158
- throw new Error(`${name}: kernel tool catalog is missing`);
156
+ invariant(slot != null, `${name}: kernel tool catalog is missing`);
159
157
  const parent = slot.invocation;
160
158
  const session = parent instanceof ToolCallJob ? documentRoot(parent) : null;
161
- if (!(parent instanceof ToolCallJob) || !(session instanceof SessionRoot)) {
162
- throw new TypeError(`${name}: runs only inside a session tool call`);
163
- }
159
+ invariant(parent instanceof ToolCallJob && session instanceof SessionRoot, `${name}: runs only inside a session tool call`);
164
160
  const call = { id: randomUUID(), type: "function", function: { name, arguments: JSON.stringify(args) } };
165
161
  const inner = new ToolCallHandler({ catalog: slot.catalog }).admit(call, slot.catalog, { session, parent });
166
162
  // Settles on the inner receipt; a failed receipt rejects with its text.