@qjp88995/agent-runtime 0.0.0-stage → 0.1.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 (477) hide show
  1. package/dist/agent-extensions.d.ts +30 -0
  2. package/dist/agent-extensions.d.ts.map +1 -0
  3. package/dist/agent-extensions.js +4 -0
  4. package/dist/agent-extensions.js.map +1 -0
  5. package/dist/builtins/ask-outcome.d.ts +49 -0
  6. package/dist/builtins/ask-outcome.d.ts.map +1 -0
  7. package/dist/builtins/ask-outcome.js +128 -0
  8. package/dist/builtins/ask-outcome.js.map +1 -0
  9. package/dist/builtins/ask-schema.d.ts +110 -0
  10. package/dist/builtins/ask-schema.d.ts.map +1 -0
  11. package/dist/builtins/ask-schema.js +124 -0
  12. package/dist/builtins/ask-schema.js.map +1 -0
  13. package/dist/builtins/ask.service.d.ts +210 -0
  14. package/dist/builtins/ask.service.d.ts.map +1 -0
  15. package/dist/builtins/ask.service.js +373 -0
  16. package/dist/builtins/ask.service.js.map +1 -0
  17. package/dist/builtins/ask.tool.d.ts +49 -0
  18. package/dist/builtins/ask.tool.d.ts.map +1 -0
  19. package/dist/builtins/ask.tool.js +109 -0
  20. package/dist/builtins/ask.tool.js.map +1 -0
  21. package/dist/builtins/index.d.ts +8 -0
  22. package/dist/builtins/index.d.ts.map +1 -0
  23. package/dist/builtins/index.js +8 -0
  24. package/dist/builtins/index.js.map +1 -0
  25. package/dist/builtins/todo-schema.d.ts +90 -0
  26. package/dist/builtins/todo-schema.d.ts.map +1 -0
  27. package/dist/builtins/todo-schema.js +97 -0
  28. package/dist/builtins/todo-schema.js.map +1 -0
  29. package/dist/builtins/todo-settle.hook.d.ts +110 -0
  30. package/dist/builtins/todo-settle.hook.d.ts.map +1 -0
  31. package/dist/builtins/todo-settle.hook.js +174 -0
  32. package/dist/builtins/todo-settle.hook.js.map +1 -0
  33. package/dist/builtins/todo.tool.d.ts +59 -0
  34. package/dist/builtins/todo.tool.d.ts.map +1 -0
  35. package/dist/builtins/todo.tool.js +107 -0
  36. package/dist/builtins/todo.tool.js.map +1 -0
  37. package/dist/context/context-budget-tracker.d.ts +185 -0
  38. package/dist/context/context-budget-tracker.d.ts.map +1 -0
  39. package/dist/context/context-budget-tracker.js +400 -0
  40. package/dist/context/context-budget-tracker.js.map +1 -0
  41. package/dist/context/context-budget.d.ts +48 -0
  42. package/dist/context/context-budget.d.ts.map +1 -0
  43. package/dist/context/context-budget.js +89 -0
  44. package/dist/context/context-budget.js.map +1 -0
  45. package/dist/context/index.d.ts +3 -0
  46. package/dist/context/index.d.ts.map +1 -0
  47. package/dist/context/index.js +3 -0
  48. package/dist/context/index.js.map +1 -0
  49. package/dist/extensions/repeat-call.hook.d.ts +32 -0
  50. package/dist/extensions/repeat-call.hook.d.ts.map +1 -0
  51. package/dist/extensions/repeat-call.hook.js +54 -0
  52. package/dist/extensions/repeat-call.hook.js.map +1 -0
  53. package/dist/hooks/index.d.ts +3 -0
  54. package/dist/hooks/index.d.ts.map +1 -0
  55. package/dist/hooks/index.js +3 -0
  56. package/dist/hooks/index.js.map +1 -0
  57. package/dist/hooks/turn-hook.registry.d.ts +51 -0
  58. package/dist/hooks/turn-hook.registry.d.ts.map +1 -0
  59. package/dist/hooks/turn-hook.registry.js +233 -0
  60. package/dist/hooks/turn-hook.registry.js.map +1 -0
  61. package/dist/hooks/turn-hook.types.d.ts +179 -0
  62. package/dist/hooks/turn-hook.types.d.ts.map +1 -0
  63. package/dist/hooks/turn-hook.types.js +48 -0
  64. package/dist/hooks/turn-hook.types.js.map +1 -0
  65. package/dist/images/byte-cache.d.ts +24 -0
  66. package/dist/images/byte-cache.d.ts.map +1 -0
  67. package/dist/images/byte-cache.js +51 -0
  68. package/dist/images/byte-cache.js.map +1 -0
  69. package/dist/images/delivery.d.ts +115 -0
  70. package/dist/images/delivery.d.ts.map +1 -0
  71. package/dist/images/delivery.js +321 -0
  72. package/dist/images/delivery.js.map +1 -0
  73. package/dist/images/index.d.ts +5 -0
  74. package/dist/images/index.d.ts.map +1 -0
  75. package/dist/images/index.js +5 -0
  76. package/dist/images/index.js.map +1 -0
  77. package/dist/images/prompt.d.ts +151 -0
  78. package/dist/images/prompt.d.ts.map +1 -0
  79. package/dist/images/prompt.js +172 -0
  80. package/dist/images/prompt.js.map +1 -0
  81. package/dist/images/vendor-files.d.ts +93 -0
  82. package/dist/images/vendor-files.d.ts.map +1 -0
  83. package/dist/images/vendor-files.js +156 -0
  84. package/dist/images/vendor-files.js.map +1 -0
  85. package/dist/in-process/conversation-store.d.ts +64 -0
  86. package/dist/in-process/conversation-store.d.ts.map +1 -0
  87. package/dist/in-process/conversation-store.js +222 -0
  88. package/dist/in-process/conversation-store.js.map +1 -0
  89. package/dist/in-process/coordination.d.ts +54 -0
  90. package/dist/in-process/coordination.d.ts.map +1 -0
  91. package/dist/in-process/coordination.js +137 -0
  92. package/dist/in-process/coordination.js.map +1 -0
  93. package/dist/in-process/image-source.d.ts +15 -0
  94. package/dist/in-process/image-source.d.ts.map +1 -0
  95. package/dist/in-process/image-source.js +27 -0
  96. package/dist/in-process/image-source.js.map +1 -0
  97. package/dist/in-process/index.d.ts +36 -0
  98. package/dist/in-process/index.d.ts.map +1 -0
  99. package/dist/in-process/index.js +37 -0
  100. package/dist/in-process/index.js.map +1 -0
  101. package/dist/in-process/question-store.d.ts +28 -0
  102. package/dist/in-process/question-store.d.ts.map +1 -0
  103. package/dist/in-process/question-store.js +122 -0
  104. package/dist/in-process/question-store.js.map +1 -0
  105. package/dist/in-process/run-store.d.ts +36 -0
  106. package/dist/in-process/run-store.d.ts.map +1 -0
  107. package/dist/in-process/run-store.js +81 -0
  108. package/dist/in-process/run-store.js.map +1 -0
  109. package/dist/in-process/session-store.d.ts +33 -0
  110. package/dist/in-process/session-store.d.ts.map +1 -0
  111. package/dist/in-process/session-store.js +93 -0
  112. package/dist/in-process/session-store.js.map +1 -0
  113. package/dist/in-process/stream-bus.d.ts +52 -0
  114. package/dist/in-process/stream-bus.d.ts.map +1 -0
  115. package/dist/in-process/stream-bus.js +200 -0
  116. package/dist/in-process/stream-bus.js.map +1 -0
  117. package/dist/in-process/vendor-file-cache.d.ts +11 -0
  118. package/dist/in-process/vendor-file-cache.d.ts.map +1 -0
  119. package/dist/in-process/vendor-file-cache.js +47 -0
  120. package/dist/in-process/vendor-file-cache.js.map +1 -0
  121. package/dist/index.d.ts +21 -0
  122. package/dist/index.d.ts.map +1 -0
  123. package/dist/index.js +21 -0
  124. package/dist/index.js.map +1 -0
  125. package/dist/loop/active-tick.registry.d.ts +31 -0
  126. package/dist/loop/active-tick.registry.d.ts.map +1 -0
  127. package/dist/loop/active-tick.registry.js +45 -0
  128. package/dist/loop/active-tick.registry.js.map +1 -0
  129. package/dist/loop/index.d.ts +6 -0
  130. package/dist/loop/index.d.ts.map +1 -0
  131. package/dist/loop/index.js +6 -0
  132. package/dist/loop/index.js.map +1 -0
  133. package/dist/loop/loop-driver.d.ts +127 -0
  134. package/dist/loop/loop-driver.d.ts.map +1 -0
  135. package/dist/loop/loop-driver.js +199 -0
  136. package/dist/loop/loop-driver.js.map +1 -0
  137. package/dist/loop/message-hub.d.ts +236 -0
  138. package/dist/loop/message-hub.d.ts.map +1 -0
  139. package/dist/loop/message-hub.js +439 -0
  140. package/dist/loop/message-hub.js.map +1 -0
  141. package/dist/loop/orphan-run.sweeper.d.ts +79 -0
  142. package/dist/loop/orphan-run.sweeper.d.ts.map +1 -0
  143. package/dist/loop/orphan-run.sweeper.js +145 -0
  144. package/dist/loop/orphan-run.sweeper.js.map +1 -0
  145. package/dist/loop/root-host.d.ts +51 -0
  146. package/dist/loop/root-host.d.ts.map +1 -0
  147. package/dist/loop/root-host.js +65 -0
  148. package/dist/loop/root-host.js.map +1 -0
  149. package/dist/ports/context-store.d.ts +69 -0
  150. package/dist/ports/context-store.d.ts.map +1 -0
  151. package/dist/ports/context-store.js +2 -0
  152. package/dist/ports/context-store.js.map +1 -0
  153. package/dist/ports/conversation-store.d.ts +144 -0
  154. package/dist/ports/conversation-store.d.ts.map +1 -0
  155. package/dist/ports/conversation-store.js +2 -0
  156. package/dist/ports/conversation-store.js.map +1 -0
  157. package/dist/ports/coordination.d.ts +76 -0
  158. package/dist/ports/coordination.d.ts.map +1 -0
  159. package/dist/ports/coordination.js +12 -0
  160. package/dist/ports/coordination.js.map +1 -0
  161. package/dist/ports/image-source.d.ts +26 -0
  162. package/dist/ports/image-source.d.ts.map +1 -0
  163. package/dist/ports/image-source.js +2 -0
  164. package/dist/ports/image-source.js.map +1 -0
  165. package/dist/ports/index.d.ts +11 -0
  166. package/dist/ports/index.d.ts.map +1 -0
  167. package/dist/ports/index.js +4 -0
  168. package/dist/ports/index.js.map +1 -0
  169. package/dist/ports/logger.d.ts +14 -0
  170. package/dist/ports/logger.d.ts.map +1 -0
  171. package/dist/ports/logger.js +23 -0
  172. package/dist/ports/logger.js.map +1 -0
  173. package/dist/ports/question-store.d.ts +91 -0
  174. package/dist/ports/question-store.d.ts.map +1 -0
  175. package/dist/ports/question-store.js +8 -0
  176. package/dist/ports/question-store.js.map +1 -0
  177. package/dist/ports/run-store.d.ts +66 -0
  178. package/dist/ports/run-store.d.ts.map +1 -0
  179. package/dist/ports/run-store.js +2 -0
  180. package/dist/ports/run-store.js.map +1 -0
  181. package/dist/ports/session-store.d.ts +72 -0
  182. package/dist/ports/session-store.d.ts.map +1 -0
  183. package/dist/ports/session-store.js +9 -0
  184. package/dist/ports/session-store.js.map +1 -0
  185. package/dist/ports/stream-bus.d.ts +52 -0
  186. package/dist/ports/stream-bus.d.ts.map +1 -0
  187. package/dist/ports/stream-bus.js +2 -0
  188. package/dist/ports/stream-bus.js.map +1 -0
  189. package/dist/ports/vendor-file-cache.d.ts +46 -0
  190. package/dist/ports/vendor-file-cache.d.ts.map +1 -0
  191. package/dist/ports/vendor-file-cache.js +2 -0
  192. package/dist/ports/vendor-file-cache.js.map +1 -0
  193. package/dist/schema/agent-event.d.ts +35 -0
  194. package/dist/schema/agent-event.d.ts.map +1 -0
  195. package/dist/schema/agent-event.js +46 -0
  196. package/dist/schema/agent-event.js.map +1 -0
  197. package/dist/schema/agent-run.d.ts +23 -0
  198. package/dist/schema/agent-run.d.ts.map +1 -0
  199. package/dist/schema/agent-run.js +37 -0
  200. package/dist/schema/agent-run.js.map +1 -0
  201. package/dist/schema/index.d.ts +4 -0
  202. package/dist/schema/index.d.ts.map +1 -0
  203. package/dist/schema/index.js +4 -0
  204. package/dist/schema/index.js.map +1 -0
  205. package/dist/schema/message-part.d.ts +73 -0
  206. package/dist/schema/message-part.d.ts.map +1 -0
  207. package/dist/schema/message-part.js +90 -0
  208. package/dist/schema/message-part.js.map +1 -0
  209. package/dist/subagent/delegate.tool.d.ts +145 -0
  210. package/dist/subagent/delegate.tool.d.ts.map +1 -0
  211. package/dist/subagent/delegate.tool.js +329 -0
  212. package/dist/subagent/delegate.tool.js.map +1 -0
  213. package/dist/subagent/index.d.ts +10 -0
  214. package/dist/subagent/index.d.ts.map +1 -0
  215. package/dist/subagent/index.js +10 -0
  216. package/dist/subagent/index.js.map +1 -0
  217. package/dist/subagent/milestone-body.d.ts +82 -0
  218. package/dist/subagent/milestone-body.d.ts.map +1 -0
  219. package/dist/subagent/milestone-body.js +112 -0
  220. package/dist/subagent/milestone-body.js.map +1 -0
  221. package/dist/subagent/output-scan.d.ts +14 -0
  222. package/dist/subagent/output-scan.d.ts.map +1 -0
  223. package/dist/subagent/output-scan.js +41 -0
  224. package/dist/subagent/output-scan.js.map +1 -0
  225. package/dist/subagent/registry-spawn-policy.d.ts +32 -0
  226. package/dist/subagent/registry-spawn-policy.d.ts.map +1 -0
  227. package/dist/subagent/registry-spawn-policy.js +48 -0
  228. package/dist/subagent/registry-spawn-policy.js.map +1 -0
  229. package/dist/subagent/roster-block.d.ts +45 -0
  230. package/dist/subagent/roster-block.d.ts.map +1 -0
  231. package/dist/subagent/roster-block.js +69 -0
  232. package/dist/subagent/roster-block.js.map +1 -0
  233. package/dist/subagent/situation-block.d.ts +16 -0
  234. package/dist/subagent/situation-block.d.ts.map +1 -0
  235. package/dist/subagent/situation-block.js +71 -0
  236. package/dist/subagent/situation-block.js.map +1 -0
  237. package/dist/subagent/spawn-guards.d.ts +32 -0
  238. package/dist/subagent/spawn-guards.d.ts.map +1 -0
  239. package/dist/subagent/spawn-guards.js +39 -0
  240. package/dist/subagent/spawn-guards.js.map +1 -0
  241. package/dist/subagent/subagent-registry.d.ts +150 -0
  242. package/dist/subagent/subagent-registry.d.ts.map +1 -0
  243. package/dist/subagent/subagent-registry.js +167 -0
  244. package/dist/subagent/subagent-registry.js.map +1 -0
  245. package/dist/subagent/subagent-sessions.d.ts +213 -0
  246. package/dist/subagent/subagent-sessions.d.ts.map +1 -0
  247. package/dist/subagent/subagent-sessions.js +295 -0
  248. package/dist/subagent/subagent-sessions.js.map +1 -0
  249. package/dist/testing/contracts.d.ts +37 -0
  250. package/dist/testing/contracts.d.ts.map +1 -0
  251. package/dist/testing/contracts.js +607 -0
  252. package/dist/testing/contracts.js.map +1 -0
  253. package/dist/testing/index.d.ts +5 -0
  254. package/dist/testing/index.d.ts.map +1 -0
  255. package/dist/testing/index.js +5 -0
  256. package/dist/testing/index.js.map +1 -0
  257. package/dist/testing/stub.d.ts +28 -0
  258. package/dist/testing/stub.d.ts.map +1 -0
  259. package/dist/testing/stub.js +3 -0
  260. package/dist/testing/stub.js.map +1 -0
  261. package/dist/tools/agent-tool.base.d.ts +186 -0
  262. package/dist/tools/agent-tool.base.d.ts.map +1 -0
  263. package/dist/tools/agent-tool.base.js +243 -0
  264. package/dist/tools/agent-tool.base.js.map +1 -0
  265. package/dist/tools/agent-tool.interface.d.ts +95 -0
  266. package/dist/tools/agent-tool.interface.d.ts.map +1 -0
  267. package/dist/tools/agent-tool.interface.js +2 -0
  268. package/dist/tools/agent-tool.interface.js.map +1 -0
  269. package/dist/tools/builtin-names.d.ts +18 -0
  270. package/dist/tools/builtin-names.d.ts.map +1 -0
  271. package/dist/tools/builtin-names.js +20 -0
  272. package/dist/tools/builtin-names.js.map +1 -0
  273. package/dist/tools/index.d.ts +9 -0
  274. package/dist/tools/index.d.ts.map +1 -0
  275. package/dist/tools/index.js +6 -0
  276. package/dist/tools/index.js.map +1 -0
  277. package/dist/tools/tool-definition.d.ts +18 -0
  278. package/dist/tools/tool-definition.d.ts.map +1 -0
  279. package/dist/tools/tool-definition.js +77 -0
  280. package/dist/tools/tool-definition.js.map +1 -0
  281. package/dist/tools/tool-meta.d.ts +55 -0
  282. package/dist/tools/tool-meta.d.ts.map +1 -0
  283. package/dist/tools/tool-meta.js +2 -0
  284. package/dist/tools/tool-meta.js.map +1 -0
  285. package/dist/tools/tool-registry.d.ts +190 -0
  286. package/dist/tools/tool-registry.d.ts.map +1 -0
  287. package/dist/tools/tool-registry.js +379 -0
  288. package/dist/tools/tool-registry.js.map +1 -0
  289. package/dist/tools/tool-result.d.ts +41 -0
  290. package/dist/tools/tool-result.d.ts.map +1 -0
  291. package/dist/tools/tool-result.js +19 -0
  292. package/dist/tools/tool-result.js.map +1 -0
  293. package/dist/tools/tool-wire.d.ts +24 -0
  294. package/dist/tools/tool-wire.d.ts.map +1 -0
  295. package/dist/tools/tool-wire.js +2 -0
  296. package/dist/tools/tool-wire.js.map +1 -0
  297. package/dist/turn/agent-runtime.d.ts +31 -0
  298. package/dist/turn/agent-runtime.d.ts.map +1 -0
  299. package/dist/turn/agent-runtime.js +30 -0
  300. package/dist/turn/agent-runtime.js.map +1 -0
  301. package/dist/turn/chunk-projection.d.ts +32 -0
  302. package/dist/turn/chunk-projection.d.ts.map +1 -0
  303. package/dist/turn/chunk-projection.js +62 -0
  304. package/dist/turn/chunk-projection.js.map +1 -0
  305. package/dist/turn/compaction.d.ts +48 -0
  306. package/dist/turn/compaction.d.ts.map +1 -0
  307. package/dist/turn/compaction.js +89 -0
  308. package/dist/turn/compaction.js.map +1 -0
  309. package/dist/turn/context-overflow.d.ts +11 -0
  310. package/dist/turn/context-overflow.d.ts.map +1 -0
  311. package/dist/turn/context-overflow.js +53 -0
  312. package/dist/turn/context-overflow.js.map +1 -0
  313. package/dist/turn/context-pressure.d.ts +100 -0
  314. package/dist/turn/context-pressure.d.ts.map +1 -0
  315. package/dist/turn/context-pressure.js +21 -0
  316. package/dist/turn/context-pressure.js.map +1 -0
  317. package/dist/turn/events-to-steps.d.ts +8 -0
  318. package/dist/turn/events-to-steps.d.ts.map +1 -0
  319. package/dist/turn/events-to-steps.js +64 -0
  320. package/dist/turn/events-to-steps.js.map +1 -0
  321. package/dist/turn/index.d.ts +17 -0
  322. package/dist/turn/index.d.ts.map +1 -0
  323. package/dist/turn/index.js +16 -0
  324. package/dist/turn/index.js.map +1 -0
  325. package/dist/turn/json-preview.d.ts +22 -0
  326. package/dist/turn/json-preview.d.ts.map +1 -0
  327. package/dist/turn/json-preview.js +34 -0
  328. package/dist/turn/json-preview.js.map +1 -0
  329. package/dist/turn/json-string-field.d.ts +30 -0
  330. package/dist/turn/json-string-field.d.ts.map +1 -0
  331. package/dist/turn/json-string-field.js +125 -0
  332. package/dist/turn/json-string-field.js.map +1 -0
  333. package/dist/turn/loop-reminder.d.ts +79 -0
  334. package/dist/turn/loop-reminder.d.ts.map +1 -0
  335. package/dist/turn/loop-reminder.js +0 -0
  336. package/dist/turn/loop-reminder.js.map +1 -0
  337. package/dist/turn/nul-safe.d.ts +21 -0
  338. package/dist/turn/nul-safe.d.ts.map +1 -0
  339. package/dist/turn/nul-safe.js +23 -0
  340. package/dist/turn/nul-safe.js.map +1 -0
  341. package/dist/turn/parts-from-events.d.ts +71 -0
  342. package/dist/turn/parts-from-events.d.ts.map +1 -0
  343. package/dist/turn/parts-from-events.js +217 -0
  344. package/dist/turn/parts-from-events.js.map +1 -0
  345. package/dist/turn/parts-to-model-messages.d.ts +158 -0
  346. package/dist/turn/parts-to-model-messages.d.ts.map +1 -0
  347. package/dist/turn/parts-to-model-messages.js +334 -0
  348. package/dist/turn/parts-to-model-messages.js.map +1 -0
  349. package/dist/turn/pending-work.d.ts +10 -0
  350. package/dist/turn/pending-work.d.ts.map +1 -0
  351. package/dist/turn/pending-work.js +14 -0
  352. package/dist/turn/pending-work.js.map +1 -0
  353. package/dist/turn/provider-error.d.ts +45 -0
  354. package/dist/turn/provider-error.d.ts.map +1 -0
  355. package/dist/turn/provider-error.js +154 -0
  356. package/dist/turn/provider-error.js.map +1 -0
  357. package/dist/turn/tool-input-preview.d.ts +94 -0
  358. package/dist/turn/tool-input-preview.d.ts.map +1 -0
  359. package/dist/turn/tool-input-preview.js +143 -0
  360. package/dist/turn/tool-input-preview.js.map +1 -0
  361. package/dist/turn/tool-input-progress.d.ts +47 -0
  362. package/dist/turn/tool-input-progress.d.ts.map +1 -0
  363. package/dist/turn/tool-input-progress.js +50 -0
  364. package/dist/turn/tool-input-progress.js.map +1 -0
  365. package/dist/turn/turn-envelope.d.ts +184 -0
  366. package/dist/turn/turn-envelope.d.ts.map +1 -0
  367. package/dist/turn/turn-envelope.js +2 -0
  368. package/dist/turn/turn-envelope.js.map +1 -0
  369. package/dist/turn/turn-journal.d.ts +49 -0
  370. package/dist/turn/turn-journal.d.ts.map +1 -0
  371. package/dist/turn/turn-journal.js +51 -0
  372. package/dist/turn/turn-journal.js.map +1 -0
  373. package/dist/turn/turn-run.d.ts +487 -0
  374. package/dist/turn/turn-run.d.ts.map +1 -0
  375. package/dist/turn/turn-run.js +1167 -0
  376. package/dist/turn/turn-run.js.map +1 -0
  377. package/dist/turn/usage.d.ts +27 -0
  378. package/dist/turn/usage.d.ts.map +1 -0
  379. package/dist/turn/usage.js +51 -0
  380. package/dist/turn/usage.js.map +1 -0
  381. package/package.json +55 -3
  382. package/src/agent-extensions.ts +33 -0
  383. package/src/builtins/ask-outcome.ts +168 -0
  384. package/src/builtins/ask-schema.ts +186 -0
  385. package/src/builtins/ask.service.ts +482 -0
  386. package/src/builtins/ask.tool.ts +138 -0
  387. package/src/builtins/index.ts +25 -0
  388. package/src/builtins/todo-schema.ts +108 -0
  389. package/src/builtins/todo-settle.hook.ts +221 -0
  390. package/src/builtins/todo.tool.ts +134 -0
  391. package/src/context/context-budget-tracker.ts +519 -0
  392. package/src/context/context-budget.ts +124 -0
  393. package/src/context/index.ts +17 -0
  394. package/src/extensions/repeat-call.hook.ts +77 -0
  395. package/src/hooks/index.ts +19 -0
  396. package/src/hooks/turn-hook.registry.ts +307 -0
  397. package/src/hooks/turn-hook.types.ts +210 -0
  398. package/src/images/byte-cache.ts +61 -0
  399. package/src/images/delivery.ts +508 -0
  400. package/src/images/index.ts +35 -0
  401. package/src/images/prompt.ts +289 -0
  402. package/src/images/vendor-files.ts +235 -0
  403. package/src/in-process/conversation-store.ts +304 -0
  404. package/src/in-process/coordination.ts +177 -0
  405. package/src/in-process/image-source.ts +29 -0
  406. package/src/in-process/index.ts +52 -0
  407. package/src/in-process/question-store.ts +155 -0
  408. package/src/in-process/run-store.ts +115 -0
  409. package/src/in-process/session-store.ts +118 -0
  410. package/src/in-process/stream-bus.ts +244 -0
  411. package/src/in-process/vendor-file-cache.ts +67 -0
  412. package/src/index.ts +28 -0
  413. package/src/loop/active-tick.registry.ts +49 -0
  414. package/src/loop/index.ts +25 -0
  415. package/src/loop/loop-driver.ts +275 -0
  416. package/src/loop/message-hub.ts +532 -0
  417. package/src/loop/orphan-run.sweeper.ts +204 -0
  418. package/src/loop/root-host.ts +119 -0
  419. package/src/ports/context-store.ts +71 -0
  420. package/src/ports/conversation-store.ts +165 -0
  421. package/src/ports/coordination.ts +81 -0
  422. package/src/ports/image-source.ts +26 -0
  423. package/src/ports/index.ts +56 -0
  424. package/src/ports/logger.ts +34 -0
  425. package/src/ports/question-store.ts +117 -0
  426. package/src/ports/run-store.ts +69 -0
  427. package/src/ports/session-store.ts +80 -0
  428. package/src/ports/stream-bus.ts +59 -0
  429. package/src/ports/vendor-file-cache.ts +54 -0
  430. package/src/schema/agent-event.ts +69 -0
  431. package/src/schema/agent-run.ts +44 -0
  432. package/src/schema/index.ts +25 -0
  433. package/src/schema/message-part.ts +100 -0
  434. package/src/subagent/delegate.tool.ts +476 -0
  435. package/src/subagent/index.ts +63 -0
  436. package/src/subagent/milestone-body.ts +144 -0
  437. package/src/subagent/output-scan.ts +56 -0
  438. package/src/subagent/registry-spawn-policy.ts +85 -0
  439. package/src/subagent/roster-block.ts +103 -0
  440. package/src/subagent/situation-block.ts +83 -0
  441. package/src/subagent/spawn-guards.ts +54 -0
  442. package/src/subagent/subagent-registry.ts +283 -0
  443. package/src/subagent/subagent-sessions.ts +496 -0
  444. package/src/testing/contracts.ts +882 -0
  445. package/src/testing/index.ts +14 -0
  446. package/src/testing/stub.ts +28 -0
  447. package/src/tools/agent-tool.base.ts +361 -0
  448. package/src/tools/agent-tool.interface.ts +101 -0
  449. package/src/tools/builtin-names.ts +26 -0
  450. package/src/tools/index.ts +39 -0
  451. package/src/tools/tool-definition.ts +93 -0
  452. package/src/tools/tool-meta.ts +60 -0
  453. package/src/tools/tool-registry.ts +513 -0
  454. package/src/tools/tool-result.ts +45 -0
  455. package/src/tools/tool-wire.ts +24 -0
  456. package/src/turn/agent-runtime.ts +43 -0
  457. package/src/turn/chunk-projection.ts +81 -0
  458. package/src/turn/compaction.ts +103 -0
  459. package/src/turn/context-overflow.ts +54 -0
  460. package/src/turn/context-pressure.ts +114 -0
  461. package/src/turn/events-to-steps.ts +73 -0
  462. package/src/turn/index.ts +71 -0
  463. package/src/turn/json-preview.ts +36 -0
  464. package/src/turn/json-string-field.ts +134 -0
  465. package/src/turn/loop-reminder.ts +0 -0
  466. package/src/turn/nul-safe.ts +22 -0
  467. package/src/turn/parts-from-events.ts +248 -0
  468. package/src/turn/parts-to-model-messages.ts +428 -0
  469. package/src/turn/pending-work.ts +14 -0
  470. package/src/turn/provider-error.ts +160 -0
  471. package/src/turn/tool-input-preview.ts +223 -0
  472. package/src/turn/tool-input-progress.ts +76 -0
  473. package/src/turn/turn-envelope.ts +185 -0
  474. package/src/turn/turn-journal.ts +102 -0
  475. package/src/turn/turn-run.ts +1479 -0
  476. package/src/turn/usage.ts +56 -0
  477. package/README.md +0 -3
@@ -0,0 +1,184 @@
1
+ import type { ModelMessage } from 'ai';
2
+ import type { MessagePart } from '../schema/index.js';
3
+ export interface TurnEnvelope {
4
+ /** agent 的 id(同 `AgentDefinition.id`)。 */
5
+ agentId: string;
6
+ /**
7
+ * 本轮实际用的模型与推理等级,记进跑次(`RunStore.open` 的 `model`)。取自模型句柄,内核不解释。
8
+ */
9
+ modelUsed: {
10
+ modelId: string;
11
+ label: string;
12
+ reasoningEffort: string;
13
+ };
14
+ /** 用户输入。 */
15
+ parts: MessagePart[];
16
+ /** 根 turn 的 id;同时是 StreamBus 的 streamId。 */
17
+ streamId: string;
18
+ /** 根会话 id(观测/产物树级作用域键;pre-1b 根 tick = sessionId)。 */
19
+ rootSessionId: string;
20
+ /** 当前 loop 的会话 id。 */
21
+ sessionId: string;
22
+ /** 本次执行的 run id(根 turn 与 streamId 可相同,子 agent 各自不同)。 */
23
+ runId: string;
24
+ parentRunId?: string | null;
25
+ depth?: number;
26
+ /**
27
+ * 宿主给这个跑次的不透明附加列(跑的是哪个 agent、发布版号、账本序号……),原样交给
28
+ * `RunStore.open` 的 `attrs`。内核不解释。
29
+ */
30
+ runAttrs?: Readonly<Record<string, unknown>>;
31
+ /**
32
+ * 会话上的不透明附加信息,原样进 `ToolContext.sessionMetadata`(派子 Agent 时子会话继承)。
33
+ * 省略 = 空对象。
34
+ */
35
+ sessionMetadata?: Readonly<Record<string, unknown>>;
36
+ userId?: string | null;
37
+ /**
38
+ * 本轮模型标了哪些能力(模型句柄的 `capabilities`)。内核只透传进
39
+ * `ToolContext.agent.modelCapabilities`。省略 = 空数组。
40
+ */
41
+ modelCapabilities?: readonly string[];
42
+ /**
43
+ * 子 run 的宿主 agent 名(Plan 3 子 agent 用)。供前端画子轨道标题
44
+ * (Task 9);内核本身不消费。根 run 不传。
45
+ */
46
+ agentName?: string;
47
+ /**
48
+ * 父写给子的 task prompt(Plan 3 子 agent 用)。供 run-start 事件
49
+ * 携带、UI 展示;内核本身不消费。根 run 不传。
50
+ */
51
+ prompt?: string;
52
+ /**
53
+ * 子 run 的一句话任务标题(spawn 时模型显式提供,落在子会话 `title`)。
54
+ * 供 run-start 事件携带、前端子 Agent 卡做标题;内核本身不消费。根 run 不传。
55
+ */
56
+ title?: string;
57
+ }
58
+ /**
59
+ * loop 从 inbox 领到的一条消息——内核只认 parts,不认 inbox 行结构。
60
+ * `metadata` 是可选的宿主级附加信息(当前唯一用途:tool_result 里程碑回投时
61
+ * 携带 `{ source }`,供 `onUserMessages` 落进 `chat_message.metadata`,供前端
62
+ * 未来渲染来源角标;内核本身不消费)。
63
+ */
64
+ export interface DrainedTurnMessage {
65
+ /** 预生成的落库 id(root 的用户消息经 start() 预生成、inbox 透传);无则落库自生 uuid。 */
66
+ id?: string;
67
+ /** **落库的那份**——数据本身。`onUserMessages` 写的就是它。 */
68
+ parts: MessagePart[];
69
+ /**
70
+ * **注入模型的那份**——同一条消息的呈现形态,缺省即 `parts`。
71
+ *
72
+ * 当前唯一用途:子 Agent 回执要包进 `<subagent-result …>` 围栏(不可信外部
73
+ * 输入需要一条字节层面可判定的边界,见 `milestone-body.ts#wrapSubagentResult`),
74
+ * 而围栏是给模型看的、不该落进 `chat_message`——否则前端渲染回执气泡时还得
75
+ * 把标签剥回去,等于把一个自己刚拼上的格式再解析一遍。
76
+ *
77
+ * 内核对这层区分一无所知,只负责「push 进 messages 时优先用它」。
78
+ */
79
+ modelParts?: MessagePart[];
80
+ metadata?: Record<string, unknown>;
81
+ }
82
+ /** 壳提供的宿主能力。内核对"消息存哪、怎么投递"一无所知。 */
83
+ export interface TurnHost {
84
+ /** 历史从哪来。必须返回 ModelMessage[],不许退化成 {role,content:string}[]。 */
85
+ loadContext(): Promise<ModelMessage[]>;
86
+ /** system prompt 拼装(可在 agent.systemPrompt 之上追加时间块等)。 */
87
+ assembleSystem(agentPrompt: string): Promise<string>;
88
+ /**
89
+ * 取出本会话 inbox 里排队的消息。**实现方必须在取出的同一个事务里落库**
90
+ * —— 取出是 DELETE,拆成「先取后写」两步的话,中间失败就两边都没有了。
91
+ * 内核因此不再有 `onUserMessages` 钩子(那正是被忘掉的第二步)。
92
+ *
93
+ * **一轮只调一次**(本轮第一次迭代),之后改用 `hasPendingInbox` 探测并
94
+ * 换轮,见那个方法。缺省(裸 host)视为恒空。
95
+ */
96
+ drainInbox?(): Promise<DrainedTurnMessage[]>;
97
+ /**
98
+ * 探一眼 inbox 还有没有排队的消息 —— **只探不取**。
99
+ *
100
+ * 内核用它决定「换轮」:本轮第一次迭代照常 `drainInbox` 真取,之后每次调
101
+ * 模型前只探这一下,见货就收尾这一轮,把消息留给**下一个 tick** 的首次
102
+ * drain。新 runId / 新 `agent_run` / 新 assistant 行 / 新流全由既有的
103
+ * re-wake 白拿(`LoopDriverService.onWake` 释放锁后本来就查一次 inbox)。
104
+ *
105
+ * 这样插话在 `created_at` 上天然落在它引发的那段文字**之前**,不必再在
106
+ * 宿主里封口当前段落、把后续输出切到新的一行 —— 那套分段连同它散在六处
107
+ * 的判据(`persist` 盖哪一行、前端按 runId 聚合/收段…)由此整块消失。
108
+ *
109
+ * **第一次为什么不能也只探不取**:那样会话空闲时用户发一条消息就会
110
+ * 收尾 → re-wake → 又探到有货 → 收尾 …… 永远没人取走它。判据是 `TurnRun`
111
+ * 内部的一个局部标志(`drainedOnce`),投递方什么都不用知道。
112
+ *
113
+ * 缺省(不实现)= 恒 false = 永不换轮,裸 host 的行为因此不变。
114
+ */
115
+ hasPendingInbox?(): Promise<boolean>;
116
+ /**
117
+ * 本轮又产出了这一截 parts(从事件账本重建,见 `TurnRun.flushStep`)——增量
118
+ * 落库。**只交增量**:调用方带着游标,同一条 part 不会交第二次。
119
+ *
120
+ * **不带 usage**:本轮的 usage 累加到终态一次性交给 `persist`,而这里曾经那个
121
+ * 参数从来没有实现方读过(宿主写的一直是 `usageAcc`)。一个没人读的参数迟早
122
+ * 会有人以为它写进了库。
123
+ *
124
+ * `uptoSeq`:这批 parts 覆盖到的最后一个事件的 seq(见
125
+ * `partsFromEventBufferWithBoundary`)。宿主把它与 parts 一起落库
126
+ * (`metadata.flushedSeq`),再据此让会话流退役 seq ≤ 它的事件。
127
+ */
128
+ onAssistantStep?(parts: MessagePart[], uptoSeq: number | null): Promise<void>;
129
+ /**
130
+ * 收尾:盖终态。**不再交 parts** —— 这一轮产出过什么,`onAssistantStep` 已经
131
+ * 逐段交过了(终态路径也一样:内核在 `finish()` 里先把账本里剩下的那一截交
132
+ * 出去,再调这里)。宿主因此不必再判「这一轮到底落过库没有」,那套
133
+ * `wroteAnyStep` 分流随之消失。
134
+ */
135
+ persist(result: TurnResult): Promise<void>;
136
+ /**
137
+ * 宿主为本轮**预置**的插件状态(键 = 插件的 `name`,取用见 `turnStateOf`)。
138
+ * 不给就是一张空表,插件各自懒建自己那一份。
139
+ *
140
+ * **这是个数据字段,不是能力方法**,存在的理由只有一条:有些 per-turn 对象
141
+ * 天生同时服务骨架与插件,而它必须是**同一个实例**。上下文预算的
142
+ * `ContextBudgetTracker` 就是——`loadContext()` 用它投影历史并留下轮初那批行
143
+ * 的快照,`beforeModelCall` 插件用同一份快照算切点、只替换 `messages` 的头部,
144
+ * 终态又用它落 `contextThreshold`。三方各建一个的话,`ContextRelief.replaces`
145
+ * 与内存里真实的头部长度就不是一回事,`splice` 会把尾部整体错位一格——**而那
146
+ * 是静默的**(历史与围栏消息一起被吃掉,没有任何报错)。
147
+ *
148
+ * 所以由**建它的那一方**(宿主,`loadContext` 的实现者)顺手挂在这里,而不是
149
+ * 让插件在切点上懒建:切点跑在第一次 `drainInbox` **之后**,那时本轮的用户
150
+ * 消息已经进库,懒建出来的快照会把它们算进可裁剪的阴影区。
151
+ */
152
+ turnState?: Map<string, unknown>;
153
+ }
154
+ export type TurnStatus = 'completed' | 'aborted' | 'rejected' | 'failed';
155
+ /**
156
+ * 一轮的终态。**没有 `parts` 字段是有意的**(阶段 3):本轮产出过什么由
157
+ * `onAssistantStep` 逐段交出去,终态只回答「怎么结束的、花了多少」。
158
+ *
159
+ * 曾经它带着整轮重建出来的 parts,宿主再按「这一轮落过库没有」分流:落过就只
160
+ * 盖终态、没落过就拿这份补落一条。那套分流有两个已知漏洞(多步中途 abort、
161
+ * reviewOutput 改写:两者的 parts 都会在首步已落库之后才出现,于是被丢掉),
162
+ * 而漏洞的根在「同一批内容有两条落库路径」。现在只剩一条。
163
+ */
164
+ export interface TurnResult {
165
+ streamId: string;
166
+ runId: string;
167
+ status: TurnStatus;
168
+ /** 最终文本(reviewOutput 改写后的)。 */
169
+ text: string;
170
+ usage?: Record<string, number>;
171
+ stopReason?: string;
172
+ error?: string;
173
+ /**
174
+ * **这一轮结束时上下文有多大** = 末步 provider 报的 `inputTokens` + 那一步的
175
+ * `outputTokens`(那条回复此刻已经在历史里,下一轮就是输入的一部分)。宿主
176
+ * 落进 `chat_message.metadata`,供下一轮开头当压力基线 —— 那一刻还没调过模型,
177
+ * 没有别的办法知道这个会话的上下文有多大。
178
+ *
179
+ * **与 `usage.inputTokens` 不是一回事**:后者是整轮各 step 的累加和(账单
180
+ * 口径,单步轮相等、多步轮按步数放大)。这个是一次快照。
181
+ */
182
+ contextTokens?: number;
183
+ }
184
+ //# sourceMappingURL=turn-envelope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-envelope.d.ts","sourceRoot":"","sources":["../../src/turn/turn-envelope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=turn-envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-envelope.js","sourceRoot":"","sources":["../../src/turn/turn-envelope.ts"],"names":[],"mappings":""}
@@ -0,0 +1,49 @@
1
+ import type { Logger } from '../ports/logger.js';
2
+ import type { AgentEvent, AgentEventType } from '../schema/agent-event.js';
3
+ import type { TurnEnvelope } from './turn-envelope.js';
4
+ /**
5
+ * 一轮的事件账本。**同步 append、可回读**——事件流不只是对外广播,它同时是
6
+ * 内核自己的兜底状态源:`eventsToSteps` 靠它落 `agent_run.steps`,abort 与
7
+ * 失败路径靠 `partsFromEventBuffer(entries())` 重建这一轮已经产出的 parts。
8
+ *
9
+ * **绝不要把它改成异步或 fire-and-forget**:那两条路径会就此失去唯一的依据,
10
+ * 症状是「被中断的那一轮,已经打出来的字没了」。
11
+ */
12
+ export interface TurnJournal {
13
+ /** 记一条并投递出去。**同步**,且在调用点的原位置调用。 */
14
+ append(type: AgentEventType, payload: unknown): void;
15
+ /** 回读:`eventsToSteps` / `partsFromEventBuffer` 的输入。 */
16
+ entries(): readonly AgentEvent[];
17
+ /**
18
+ * 把 `mark`(= 某一刻的 `entries().length`)之后的条目**物理删掉**,返回
19
+ * 被删的那些。
20
+ *
21
+ * 账本原则上只增不改——这是它唯一的例外,且只有一个合法调用方:一步的
22
+ * 模型调用在响应中途断连、内核要作废这一步的半截产出重发时
23
+ * (`turn-run.ts#settleStep`)。合法的前提是**被删的条目没有一条交给过宿主**:
24
+ * 从 `startInference` 到 `settleStep` 之间不会有任何 `flushStep`,所以这一
25
+ * 段账本还没有投影成任何落库 part,删掉它不会让库里出现「已经写进去又消失」
26
+ * 的东西。反过来说,删掉已经 flush 过的条目会让 `flushedParts` 游标指向一个
27
+ * 不再存在的前缀——那种错误不会报,只会让下一次 flush 把同一批 part 再落
28
+ * 一次。**别在别处调它。**
29
+ *
30
+ * 已投递出去的事件收不回来,这是刻意的:由调用方紧接着 append 一条
31
+ * `step-retract` 告诉订阅者「这一段作废」,seq 单调不复用,作废段与重发段
32
+ * 在流里天然可分。
33
+ */
34
+ discardAfter(mark: number): AgentEvent[];
35
+ }
36
+ export interface TurnJournalDeps {
37
+ envelope: TurnEnvelope;
38
+ /** 该 stream 的 seq 分配器(由壳 open 时取得)。 */
39
+ nextSeq: () => number;
40
+ /**
41
+ * 事件往哪去。**内核对此一无所知**:壳传本轮 recorder 的 `emit`(消息中心,
42
+ * 见 `TurnRecorder.emit`),单测传一个数组的 push。
43
+ */
44
+ sink: (event: AgentEvent) => void;
45
+ /** sink 抛错时记一条 warn。缺省不记。 */
46
+ logger?: Logger;
47
+ }
48
+ export declare function createTurnJournal(deps: TurnJournalDeps): TurnJournal;
49
+ //# sourceMappingURL=turn-journal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-journal.d.ts","sourceRoot":"","sources":["../../src/turn/turn-journal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACrD,uDAAuD;IACvD,OAAO,IAAI,SAAS,UAAU,EAAE,CAAC;IACjC;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,YAAY,CAAC;IACvB,uCAAuC;IACvC,OAAO,EAAE,MAAM,MAAM,CAAC;IACtB;;;OAGG;IACH,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW,CAmDpE"}
@@ -0,0 +1,51 @@
1
+ export function createTurnJournal(deps) {
2
+ const { envelope, nextSeq, sink, logger } = deps;
3
+ const entries = [];
4
+ return {
5
+ append(type, payload) {
6
+ const event = {
7
+ seq: nextSeq(),
8
+ streamId: envelope.streamId,
9
+ rootSessionId: envelope.rootSessionId,
10
+ sessionId: envelope.sessionId,
11
+ runId: envelope.runId,
12
+ // **恒等于 runId**:一轮一行,本轮 assistant 输出全部归属那一条。
13
+ //
14
+ // 曾经这里每次 append 都重新问一次宿主的 `assistantMessageId()`——软
15
+ // 插话会在轮中途封口当前段、把后续输出切到新的一行,缓存一次就等于把
16
+ // 插话之后的全部增量继续投递到已经封口的那条气泡上。那套分段随「换轮」
17
+ // 一起拆掉了(见 `TurnHost.hasPendingInbox`),宿主不再需要被问。
18
+ //
19
+ // **字段本身保留**:它是前端把流式增量路由到气泡的键(`chunk.id`),
20
+ // wire 形状因此逐字不变。
21
+ messageId: envelope.runId,
22
+ parentRunId: envelope.parentRunId ?? null,
23
+ depth: envelope.depth ?? 0,
24
+ ts: Date.now(),
25
+ type,
26
+ payload,
27
+ };
28
+ // **先记账后投递**:账本是承重的(abort 路径靠它重建 parts),sink 不是。
29
+ entries.push(event);
30
+ try {
31
+ sink(event);
32
+ }
33
+ catch (err) {
34
+ // 观测非承重:投递抛错绝不能把一轮成功的生成变成 failed。
35
+ // `RedisStreamBus.publish` 已经自己吞了序列化异常(那里有判据),但
36
+ // 账本不该假设每个 sink 都这么守规矩——这是最后一道。
37
+ //
38
+ // **不去重、不静默计数**:sink 抛错是 bug 不是常态,压掉只会让它更难
39
+ // 被发现。
40
+ logger?.warn(`event sink threw for run ${envelope.runId} (${type}), event still recorded: ${String(err)}`);
41
+ }
42
+ },
43
+ entries() {
44
+ return entries;
45
+ },
46
+ discardAfter(mark) {
47
+ return entries.splice(mark);
48
+ },
49
+ };
50
+ }
51
+ //# sourceMappingURL=turn-journal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-journal.js","sourceRoot":"","sources":["../../src/turn/turn-journal.ts"],"names":[],"mappings":"AAkDA,MAAM,UAAU,iBAAiB,CAAC,IAAqB;IACrD,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACjD,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,OAAO;QACL,MAAM,CAAC,IAAI,EAAE,OAAO;YAClB,MAAM,KAAK,GAAe;gBACxB,GAAG,EAAE,OAAO,EAAE;gBACd,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,aAAa,EAAE,QAAQ,CAAC,aAAa;gBACrC,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,6CAA6C;gBAC7C,EAAE;gBACF,oDAAoD;gBACpD,oCAAoC;gBACpC,qCAAqC;gBACrC,gDAAgD;gBAChD,EAAE;gBACF,2CAA2C;gBAC3C,iBAAiB;gBACjB,SAAS,EAAE,QAAQ,CAAC,KAAK;gBACzB,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,IAAI;gBACzC,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,CAAC;gBAC1B,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;gBACd,IAAI;gBACJ,OAAO;aACR,CAAC;YACF,iDAAiD;YACjD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,CAAC;YACd,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,kCAAkC;gBAClC,gDAAgD;gBAChD,gCAAgC;gBAChC,EAAE;gBACF,2CAA2C;gBAC3C,OAAO;gBACP,MAAM,EAAE,IAAI,CACV,4BAA4B,QAAQ,CAAC,KAAK,KAAK,IAAI,4BAA4B,MAAM,CAAC,GAAG,CAAC,EAAE,CAC7F,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO;YACL,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,YAAY,CAAC,IAAI;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;KACF,CAAC;AACJ,CAAC"}