@animalabs/agent-framework 0.22.0 → 0.22.2

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 (418) hide show
  1. package/README.md +12 -5
  2. package/dist/src/agent.d.ts +192 -19
  3. package/dist/src/agent.d.ts.map +1 -1
  4. package/dist/src/agent.js +407 -66
  5. package/dist/src/agent.js.map +1 -1
  6. package/dist/src/api/mcp-server-core.d.ts +41 -0
  7. package/dist/src/api/mcp-server-core.d.ts.map +1 -0
  8. package/dist/src/api/mcp-server-core.js +593 -0
  9. package/dist/src/api/mcp-server-core.js.map +1 -0
  10. package/dist/src/api/mcp-server.d.ts +2 -36
  11. package/dist/src/api/mcp-server.d.ts.map +1 -1
  12. package/dist/src/api/mcp-server.js +15 -595
  13. package/dist/src/api/mcp-server.js.map +1 -1
  14. package/dist/src/api/server.d.ts +9 -1
  15. package/dist/src/api/server.d.ts.map +1 -1
  16. package/dist/src/api/server.js +84 -23
  17. package/dist/src/api/server.js.map +1 -1
  18. package/dist/src/api/types.d.ts +9 -1
  19. package/dist/src/api/types.d.ts.map +1 -1
  20. package/dist/src/code-execution/py-runner.d.ts.map +1 -1
  21. package/dist/src/code-execution/py-runner.js.map +1 -1
  22. package/dist/src/framework.d.ts +682 -103
  23. package/dist/src/framework.d.ts.map +1 -1
  24. package/dist/src/framework.js +3202 -718
  25. package/dist/src/framework.js.map +1 -1
  26. package/dist/src/gate/event-gate.d.ts.map +1 -1
  27. package/dist/src/gate/gate-script.d.ts.map +1 -1
  28. package/dist/src/gate/gate-script.js.map +1 -1
  29. package/dist/src/index.d.ts +4 -4
  30. package/dist/src/index.d.ts.map +1 -1
  31. package/dist/src/index.js +2 -2
  32. package/dist/src/index.js.map +1 -1
  33. package/dist/src/mcpl/capability-grant.d.ts.map +1 -1
  34. package/dist/src/mcpl/channel-registry.d.ts +26 -7
  35. package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
  36. package/dist/src/mcpl/channel-registry.js +102 -22
  37. package/dist/src/mcpl/channel-registry.js.map +1 -1
  38. package/dist/src/mcpl/checkpoint-manager.d.ts.map +1 -1
  39. package/dist/src/mcpl/checkpoint-manager.js.map +1 -1
  40. package/dist/src/mcpl/conversation-router.d.ts.map +1 -1
  41. package/dist/src/mcpl/errors.js.map +1 -1
  42. package/dist/src/mcpl/feature-set-manager.d.ts.map +1 -1
  43. package/dist/src/mcpl/feature-set-manager.js +4 -3
  44. package/dist/src/mcpl/feature-set-manager.js.map +1 -1
  45. package/dist/src/mcpl/hook-orchestrator.d.ts.map +1 -1
  46. package/dist/src/mcpl/index.d.ts +2 -0
  47. package/dist/src/mcpl/index.d.ts.map +1 -1
  48. package/dist/src/mcpl/index.js.map +1 -1
  49. package/dist/src/mcpl/inference-router.d.ts.map +1 -1
  50. package/dist/src/mcpl/log-value.d.ts +54 -0
  51. package/dist/src/mcpl/log-value.d.ts.map +1 -0
  52. package/dist/src/mcpl/log-value.js +109 -0
  53. package/dist/src/mcpl/log-value.js.map +1 -0
  54. package/dist/src/mcpl/prose-stream-router.d.ts +6 -6
  55. package/dist/src/mcpl/prose-stream-router.d.ts.map +1 -1
  56. package/dist/src/mcpl/prose-stream-router.js +4 -4
  57. package/dist/src/mcpl/prose-stream-router.js.map +1 -1
  58. package/dist/src/mcpl/push-coalescer.d.ts +38 -3
  59. package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
  60. package/dist/src/mcpl/push-coalescer.js +81 -16
  61. package/dist/src/mcpl/push-coalescer.js.map +1 -1
  62. package/dist/src/mcpl/push-handler.d.ts +26 -3
  63. package/dist/src/mcpl/push-handler.d.ts.map +1 -1
  64. package/dist/src/mcpl/push-handler.js +87 -23
  65. package/dist/src/mcpl/push-handler.js.map +1 -1
  66. package/dist/src/mcpl/reference-fetcher.d.ts +2 -1
  67. package/dist/src/mcpl/reference-fetcher.d.ts.map +1 -1
  68. package/dist/src/mcpl/reference-fetcher.js +20 -9
  69. package/dist/src/mcpl/reference-fetcher.js.map +1 -1
  70. package/dist/src/mcpl/references.d.ts +29 -6
  71. package/dist/src/mcpl/references.d.ts.map +1 -1
  72. package/dist/src/mcpl/references.js +57 -16
  73. package/dist/src/mcpl/references.js.map +1 -1
  74. package/dist/src/mcpl/refusal-lines.d.ts +37 -0
  75. package/dist/src/mcpl/refusal-lines.d.ts.map +1 -0
  76. package/dist/src/mcpl/refusal-lines.js +61 -0
  77. package/dist/src/mcpl/refusal-lines.js.map +1 -0
  78. package/dist/src/mcpl/scope-manager.d.ts.map +1 -1
  79. package/dist/src/mcpl/server-connection.d.ts +46 -3
  80. package/dist/src/mcpl/server-connection.d.ts.map +1 -1
  81. package/dist/src/mcpl/server-connection.js +98 -15
  82. package/dist/src/mcpl/server-connection.js.map +1 -1
  83. package/dist/src/mcpl/server-registry.d.ts.map +1 -1
  84. package/dist/src/mcpl/tool-classes.d.ts +1 -1
  85. package/dist/src/mcpl/tool-classes.d.ts.map +1 -1
  86. package/dist/src/mcpl/tool-classes.js +3 -2
  87. package/dist/src/mcpl/tool-classes.js.map +1 -1
  88. package/dist/src/mcpl/tool-lifecycle.d.ts.map +1 -1
  89. package/dist/src/mcpl/tool-lifecycle.js.map +1 -1
  90. package/dist/src/mcpl/transport.d.ts +23 -5
  91. package/dist/src/mcpl/transport.d.ts.map +1 -1
  92. package/dist/src/mcpl/transport.js +103 -10
  93. package/dist/src/mcpl/transport.js.map +1 -1
  94. package/dist/src/mcpl/types.d.ts +30 -26
  95. package/dist/src/mcpl/types.d.ts.map +1 -1
  96. package/dist/src/mcpl/types.js.map +1 -1
  97. package/dist/src/module-registry.d.ts +9 -3
  98. package/dist/src/module-registry.d.ts.map +1 -1
  99. package/dist/src/module-registry.js +3 -2
  100. package/dist/src/module-registry.js.map +1 -1
  101. package/dist/src/modules/api/index.d.ts.map +1 -1
  102. package/dist/src/modules/discord/discord-js-client.d.ts.map +1 -1
  103. package/dist/src/modules/discord/discord-js-client.js.map +1 -1
  104. package/dist/src/modules/discord/index.d.ts.map +1 -1
  105. package/dist/src/modules/discord/index.js +4 -2
  106. package/dist/src/modules/discord/index.js.map +1 -1
  107. package/dist/src/modules/health/index.d.ts.map +1 -1
  108. package/dist/src/modules/health/index.js.map +1 -1
  109. package/dist/src/modules/history/index.d.ts.map +1 -1
  110. package/dist/src/modules/history/index.js.map +1 -1
  111. package/dist/src/modules/history/semantic.d.ts.map +1 -1
  112. package/dist/src/modules/history/semantic.js.map +1 -1
  113. package/dist/src/modules/workspace/branch-intent.d.ts.map +1 -1
  114. package/dist/src/modules/workspace/branch-intent.js.map +1 -1
  115. package/dist/src/modules/workspace/disk-agreement.d.ts +22 -4
  116. package/dist/src/modules/workspace/disk-agreement.d.ts.map +1 -1
  117. package/dist/src/modules/workspace/disk-agreement.js +63 -25
  118. package/dist/src/modules/workspace/disk-agreement.js.map +1 -1
  119. package/dist/src/modules/workspace/effects.d.ts.map +1 -1
  120. package/dist/src/modules/workspace/index.d.ts +8 -4
  121. package/dist/src/modules/workspace/index.d.ts.map +1 -1
  122. package/dist/src/modules/workspace/index.js +85 -16
  123. package/dist/src/modules/workspace/index.js.map +1 -1
  124. package/dist/src/modules/workspace/observe.d.ts +56 -11
  125. package/dist/src/modules/workspace/observe.d.ts.map +1 -1
  126. package/dist/src/modules/workspace/observe.js +288 -43
  127. package/dist/src/modules/workspace/observe.js.map +1 -1
  128. package/dist/src/modules/workspace/reconcile.d.ts +31 -1
  129. package/dist/src/modules/workspace/reconcile.d.ts.map +1 -1
  130. package/dist/src/modules/workspace/reconcile.js +63 -12
  131. package/dist/src/modules/workspace/reconcile.js.map +1 -1
  132. package/dist/src/modules/workspace/types.d.ts +27 -2
  133. package/dist/src/modules/workspace/types.d.ts.map +1 -1
  134. package/dist/src/modules/workspace/types.js.map +1 -1
  135. package/dist/src/modules/workspace/watcher.d.ts.map +1 -1
  136. package/dist/src/modules/workspace/watcher.js.map +1 -1
  137. package/dist/src/operator-log.d.ts +41 -0
  138. package/dist/src/operator-log.d.ts.map +1 -1
  139. package/dist/src/operator-log.js.map +1 -1
  140. package/dist/src/provider-waits.d.ts +216 -0
  141. package/dist/src/provider-waits.d.ts.map +1 -0
  142. package/dist/src/provider-waits.js +482 -0
  143. package/dist/src/provider-waits.js.map +1 -0
  144. package/dist/src/queue.d.ts.map +1 -1
  145. package/dist/src/record-journal.d.ts.map +1 -1
  146. package/dist/src/record-journal.js.map +1 -1
  147. package/dist/src/recovery/discord-awareness-outbox.d.ts.map +1 -1
  148. package/dist/src/recovery/discord-awareness-outbox.js.map +1 -1
  149. package/dist/src/recovery/offline-branch.d.ts.map +1 -1
  150. package/dist/src/recovery/offline-branch.js +29 -24
  151. package/dist/src/recovery/offline-branch.js.map +1 -1
  152. package/dist/src/recovery/recover-cli.js.map +1 -1
  153. package/dist/src/refusal-reactions.d.ts +14 -12
  154. package/dist/src/refusal-reactions.d.ts.map +1 -1
  155. package/dist/src/refusal-reactions.js +14 -12
  156. package/dist/src/refusal-reactions.js.map +1 -1
  157. package/dist/src/runtime/liveness-watchdog.d.ts.map +1 -1
  158. package/dist/src/runtime/liveness-watchdog.js.map +1 -1
  159. package/dist/src/shutdown.d.ts.map +1 -1
  160. package/dist/src/shutdown.js.map +1 -1
  161. package/dist/src/stored-removal.d.ts +73 -0
  162. package/dist/src/stored-removal.d.ts.map +1 -0
  163. package/dist/src/stored-removal.js +100 -0
  164. package/dist/src/stored-removal.js.map +1 -0
  165. package/dist/src/thinking-token-stamp.js.map +1 -1
  166. package/dist/src/tool-image-ledger.d.ts.map +1 -1
  167. package/dist/src/tool-image-ledger.js.map +1 -1
  168. package/dist/src/tool-presentation.d.ts.map +1 -1
  169. package/dist/src/tool-presentation.js.map +1 -1
  170. package/dist/src/tool-result-guard.d.ts +30 -13
  171. package/dist/src/tool-result-guard.d.ts.map +1 -1
  172. package/dist/src/tool-result-guard.js +71 -25
  173. package/dist/src/tool-result-guard.js.map +1 -1
  174. package/dist/src/tune-out/coordinator.d.ts.map +1 -1
  175. package/dist/src/tune-out/coordinator.js.map +1 -1
  176. package/dist/src/tune-out/tools.d.ts +1 -1
  177. package/dist/src/tune-out/tools.d.ts.map +1 -1
  178. package/dist/src/types/agent.d.ts +42 -6
  179. package/dist/src/types/agent.d.ts.map +1 -1
  180. package/dist/src/types/events.d.ts +12 -0
  181. package/dist/src/types/events.d.ts.map +1 -1
  182. package/dist/src/types/framework.d.ts +10 -0
  183. package/dist/src/types/framework.d.ts.map +1 -1
  184. package/dist/src/types/module.d.ts +20 -8
  185. package/dist/src/types/module.d.ts.map +1 -1
  186. package/dist/src/types/trace.d.ts +75 -13
  187. package/dist/src/types/trace.d.ts.map +1 -1
  188. package/dist/src/usage/usage-tracker.d.ts.map +1 -1
  189. package/dist/test/agent-runtime-settings.test.js +1139 -3
  190. package/dist/test/agent-runtime-settings.test.js.map +1 -1
  191. package/dist/test/batched-wake-locus.test.js.map +1 -1
  192. package/dist/test/channel-label-history.test.js.map +1 -1
  193. package/dist/test/code-execution.test.js.map +1 -1
  194. package/dist/test/conversation-fork-injection-scoping.test.js.map +1 -1
  195. package/dist/test/conversation-router.test.js.map +1 -1
  196. package/dist/test/conversation-routing.test.js +240 -6
  197. package/dist/test/conversation-routing.test.js.map +1 -1
  198. package/dist/test/discord-awareness-outbox.test.js +107 -0
  199. package/dist/test/discord-awareness-outbox.test.js.map +1 -1
  200. package/dist/test/discord-typing-keepalive.test.d.ts +2 -0
  201. package/dist/test/discord-typing-keepalive.test.d.ts.map +1 -0
  202. package/dist/test/discord-typing-keepalive.test.js +77 -0
  203. package/dist/test/discord-typing-keepalive.test.js.map +1 -0
  204. package/dist/test/ephemeral-settle.test.js.map +1 -1
  205. package/dist/test/event-gate-passthrough.test.js.map +1 -1
  206. package/dist/test/event-gate-policy-mutation.test.js.map +1 -1
  207. package/dist/test/event-gate-rate-limit.test.js.map +1 -1
  208. package/dist/test/event-gate-script.test.js.map +1 -1
  209. package/dist/test/event-gate-selfwake.test.js.map +1 -1
  210. package/dist/test/event-gate-tags.test.js.map +1 -1
  211. package/dist/test/event-gate.test.js.map +1 -1
  212. package/dist/test/explicit-prose-routing.test.js +363 -44
  213. package/dist/test/explicit-prose-routing.test.js.map +1 -1
  214. package/dist/test/framework.test.js +160 -1
  215. package/dist/test/framework.test.js.map +1 -1
  216. package/dist/test/helpers/coalescing-fixture.d.ts +2 -0
  217. package/dist/test/helpers/coalescing-fixture.d.ts.map +1 -1
  218. package/dist/test/helpers/coalescing-fixture.js +11 -4
  219. package/dist/test/helpers/coalescing-fixture.js.map +1 -1
  220. package/dist/test/helpers/mock-membrane.d.ts.map +1 -1
  221. package/dist/test/helpers/mock-membrane.js.map +1 -1
  222. package/dist/test/hide-then-turn.test.d.ts +2 -0
  223. package/dist/test/hide-then-turn.test.d.ts.map +1 -0
  224. package/dist/test/hide-then-turn.test.js +101 -0
  225. package/dist/test/hide-then-turn.test.js.map +1 -0
  226. package/dist/test/history-module-overview.test.js.map +1 -1
  227. package/dist/test/history-module-semantic.test.js.map +1 -1
  228. package/dist/test/history-module.test.js.map +1 -1
  229. package/dist/test/history-semantic-review-findings.test.js.map +1 -1
  230. package/dist/test/host-quiesce.test.js +125 -0
  231. package/dist/test/host-quiesce.test.js.map +1 -1
  232. package/dist/test/inference-exhaustion-rewind.test.js +220 -14
  233. package/dist/test/inference-exhaustion-rewind.test.js.map +1 -1
  234. package/dist/test/inference-failure-bounds.test.d.ts +2 -0
  235. package/dist/test/inference-failure-bounds.test.d.ts.map +1 -0
  236. package/dist/test/inference-failure-bounds.test.js +1202 -0
  237. package/dist/test/inference-failure-bounds.test.js.map +1 -0
  238. package/dist/test/kv-unified-open-flight-retry.test.js.map +1 -1
  239. package/dist/test/late-events-after-stop.test.d.ts +2 -0
  240. package/dist/test/late-events-after-stop.test.d.ts.map +1 -0
  241. package/dist/test/late-events-after-stop.test.js +122 -0
  242. package/dist/test/late-events-after-stop.test.js.map +1 -0
  243. package/dist/test/liveness-watchdog.test.js.map +1 -1
  244. package/dist/test/maintenance-timer.test.js +1564 -2
  245. package/dist/test/maintenance-timer.test.js.map +1 -1
  246. package/dist/test/mcp-server-bin.test.d.ts +2 -0
  247. package/dist/test/mcp-server-bin.test.d.ts.map +1 -0
  248. package/dist/test/mcp-server-bin.test.js +142 -0
  249. package/dist/test/mcp-server-bin.test.js.map +1 -0
  250. package/dist/test/mcpl-awareness-barrier.test.js +141 -0
  251. package/dist/test/mcpl-awareness-barrier.test.js.map +1 -1
  252. package/dist/test/mcpl-child-env.test.js +1 -1
  253. package/dist/test/mcpl-child-env.test.js.map +1 -1
  254. package/dist/test/mcpl-coalesced-content-parity.test.d.ts +2 -0
  255. package/dist/test/mcpl-coalesced-content-parity.test.d.ts.map +1 -0
  256. package/dist/test/mcpl-coalesced-content-parity.test.js +532 -0
  257. package/dist/test/mcpl-coalesced-content-parity.test.js.map +1 -0
  258. package/dist/test/mcpl-coalescing.test.js +78 -16
  259. package/dist/test/mcpl-coalescing.test.js.map +1 -1
  260. package/dist/test/mcpl-config-diagnostics.test.js +6 -3
  261. package/dist/test/mcpl-config-diagnostics.test.js.map +1 -1
  262. package/dist/test/mcpl-gate-roundtrip.test.js.map +1 -1
  263. package/dist/test/mcpl-manifest-changed.test.js +2 -1
  264. package/dist/test/mcpl-manifest-changed.test.js.map +1 -1
  265. package/dist/test/mcpl-reconnect-events.test.js.map +1 -1
  266. package/dist/test/mcpl-reconnect-reregistration.test.js +2 -0
  267. package/dist/test/mcpl-reconnect-reregistration.test.js.map +1 -1
  268. package/dist/test/mcpl-reference-fetcher.test.js +232 -4
  269. package/dist/test/mcpl-reference-fetcher.test.js.map +1 -1
  270. package/dist/test/mcpl-reference-fields.test.js +69 -2
  271. package/dist/test/mcpl-reference-fields.test.js.map +1 -1
  272. package/dist/test/mcpl-rejection-log-lines.test.d.ts +2 -0
  273. package/dist/test/mcpl-rejection-log-lines.test.d.ts.map +1 -0
  274. package/dist/test/mcpl-rejection-log-lines.test.js +349 -0
  275. package/dist/test/mcpl-rejection-log-lines.test.js.map +1 -0
  276. package/dist/test/mcpl-stderr-tail.test.d.ts +2 -0
  277. package/dist/test/mcpl-stderr-tail.test.d.ts.map +1 -0
  278. package/dist/test/mcpl-stderr-tail.test.js +210 -0
  279. package/dist/test/mcpl-stderr-tail.test.js.map +1 -0
  280. package/dist/test/mcpl-tool-lifecycle-e2e.test.js.map +1 -1
  281. package/dist/test/mcpl-tool-lifecycle-emitter.test.js.map +1 -1
  282. package/dist/test/mcpl-tool-lifecycle-script.test.js.map +1 -1
  283. package/dist/test/mcpl-tool-lifecycle.test.js.map +1 -1
  284. package/dist/test/mcpl-transport-close.test.d.ts +2 -0
  285. package/dist/test/mcpl-transport-close.test.d.ts.map +1 -0
  286. package/dist/test/mcpl-transport-close.test.js +373 -0
  287. package/dist/test/mcpl-transport-close.test.js.map +1 -0
  288. package/dist/test/mcpl-transport-spawn.test.d.ts +2 -0
  289. package/dist/test/mcpl-transport-spawn.test.d.ts.map +1 -0
  290. package/dist/test/mcpl-transport-spawn.test.js +58 -0
  291. package/dist/test/mcpl-transport-spawn.test.js.map +1 -0
  292. package/dist/test/mcpl-ws-transport.test.js +104 -0
  293. package/dist/test/mcpl-ws-transport.test.js.map +1 -1
  294. package/dist/test/offline-recovery-branch.test.js +344 -0
  295. package/dist/test/offline-recovery-branch.test.js.map +1 -1
  296. package/dist/test/operator-surgery.test.js +197 -0
  297. package/dist/test/operator-surgery.test.js.map +1 -1
  298. package/dist/test/ops-alert.test.js +2 -1
  299. package/dist/test/ops-alert.test.js.map +1 -1
  300. package/dist/test/overbudget-drain-breaker.test.js +1 -0
  301. package/dist/test/overbudget-drain-breaker.test.js.map +1 -1
  302. package/dist/test/pack-installs-alone.test.d.ts +2 -0
  303. package/dist/test/pack-installs-alone.test.d.ts.map +1 -0
  304. package/dist/test/pack-installs-alone.test.js +284 -0
  305. package/dist/test/pack-installs-alone.test.js.map +1 -0
  306. package/dist/test/physical-window-restart.test.d.ts +6 -4
  307. package/dist/test/physical-window-restart.test.d.ts.map +1 -1
  308. package/dist/test/physical-window-restart.test.js +275 -10
  309. package/dist/test/physical-window-restart.test.js.map +1 -1
  310. package/dist/test/placed-reaction-baseline.test.d.ts +2 -0
  311. package/dist/test/placed-reaction-baseline.test.d.ts.map +1 -0
  312. package/dist/test/placed-reaction-baseline.test.js +312 -0
  313. package/dist/test/placed-reaction-baseline.test.js.map +1 -0
  314. package/dist/test/present-while-acting.test.js +949 -6
  315. package/dist/test/present-while-acting.test.js.map +1 -1
  316. package/dist/test/provider-acceleration-cooldown.test.js +5 -1
  317. package/dist/test/provider-acceleration-cooldown.test.js.map +1 -1
  318. package/dist/test/provider-waits.test.d.ts +2 -0
  319. package/dist/test/provider-waits.test.d.ts.map +1 -0
  320. package/dist/test/provider-waits.test.js +2259 -0
  321. package/dist/test/provider-waits.test.js.map +1 -0
  322. package/dist/test/puppet-tool-call.test.js +2 -0
  323. package/dist/test/puppet-tool-call.test.js.map +1 -1
  324. package/dist/test/reaction-baseline-platform.test.d.ts +2 -0
  325. package/dist/test/reaction-baseline-platform.test.d.ts.map +1 -0
  326. package/dist/test/reaction-baseline-platform.test.js +124 -0
  327. package/dist/test/reaction-baseline-platform.test.js.map +1 -0
  328. package/dist/test/record-journal.test.js.map +1 -1
  329. package/dist/test/refusal-reaction-baseline.test.js +10 -3
  330. package/dist/test/refusal-reaction-baseline.test.js.map +1 -1
  331. package/dist/test/refusal-rewind.test.js +9 -0
  332. package/dist/test/refusal-rewind.test.js.map +1 -1
  333. package/dist/test/refusal-single-call.test.js.map +1 -1
  334. package/dist/test/release-bump.test.d.ts +2 -0
  335. package/dist/test/release-bump.test.d.ts.map +1 -0
  336. package/dist/test/release-bump.test.js +248 -0
  337. package/dist/test/release-bump.test.js.map +1 -0
  338. package/dist/test/release-changelog.test.js.map +1 -1
  339. package/dist/test/release-holds.test.d.ts +2 -0
  340. package/dist/test/release-holds.test.d.ts.map +1 -0
  341. package/dist/test/release-holds.test.js +456 -0
  342. package/dist/test/release-holds.test.js.map +1 -0
  343. package/dist/test/same-round-think-policy.test.js.map +1 -1
  344. package/dist/test/save-recent-image.test.js +138 -2
  345. package/dist/test/save-recent-image.test.js.map +1 -1
  346. package/dist/test/shutdown-errors.test.js.map +1 -1
  347. package/dist/test/silent-heartbeat-rows.test.js.map +1 -1
  348. package/dist/test/stop-with-host-operations.test.d.ts +20 -0
  349. package/dist/test/stop-with-host-operations.test.d.ts.map +1 -0
  350. package/dist/test/stop-with-host-operations.test.js +1174 -0
  351. package/dist/test/stop-with-host-operations.test.js.map +1 -0
  352. package/dist/test/stop-with-work-in-flight.test.js +162 -50
  353. package/dist/test/stop-with-work-in-flight.test.js.map +1 -1
  354. package/dist/test/surgery-marks-receipt.test.d.ts +2 -0
  355. package/dist/test/surgery-marks-receipt.test.d.ts.map +1 -0
  356. package/dist/test/surgery-marks-receipt.test.js +540 -0
  357. package/dist/test/surgery-marks-receipt.test.js.map +1 -0
  358. package/dist/test/tool-batch-hook.test.js.map +1 -1
  359. package/dist/test/tool-result-guard.test.js +352 -16
  360. package/dist/test/tool-result-guard.test.js.map +1 -1
  361. package/dist/test/tool-result-spill.test.js.map +1 -1
  362. package/dist/test/tool-wrapper-prose-guard-integration.test.js.map +1 -1
  363. package/dist/test/trunk-channel-routing.test.js +330 -7
  364. package/dist/test/trunk-channel-routing.test.js.map +1 -1
  365. package/dist/test/tune-out-e2e.test.js.map +1 -1
  366. package/dist/test/unconvertible-tool-result.test.js.map +1 -1
  367. package/dist/test/unsent-compiles.test.d.ts +2 -0
  368. package/dist/test/unsent-compiles.test.d.ts.map +1 -0
  369. package/dist/test/unsent-compiles.test.js +139 -0
  370. package/dist/test/unsent-compiles.test.js.map +1 -0
  371. package/dist/test/workspace-branch-continuation.test.js.map +1 -1
  372. package/dist/test/workspace-materialize-freshness.test.js.map +1 -1
  373. package/dist/test/workspace-read-text.test.js.map +1 -1
  374. package/dist/test/workspace-three-way.test.js +1022 -7
  375. package/dist/test/workspace-three-way.test.js.map +1 -1
  376. package/dist/test/workspace-watcher.test.js.map +1 -1
  377. package/dist/test/xml-round-persist.test.js.map +1 -1
  378. package/dist/tsconfig.tsbuildinfo +1 -1
  379. package/package.json +8 -6
  380. package/src/agent.ts +415 -67
  381. package/src/api/mcp-server-core.ts +681 -0
  382. package/src/api/mcp-server.ts +16 -685
  383. package/src/api/server.ts +87 -26
  384. package/src/api/types.ts +9 -1
  385. package/src/framework.ts +3389 -782
  386. package/src/index.ts +9 -4
  387. package/src/mcpl/channel-registry.ts +126 -31
  388. package/src/mcpl/feature-set-manager.ts +4 -3
  389. package/src/mcpl/index.ts +2 -0
  390. package/src/mcpl/log-value.ts +116 -0
  391. package/src/mcpl/prose-stream-router.ts +6 -6
  392. package/src/mcpl/push-coalescer.ts +76 -12
  393. package/src/mcpl/push-handler.ts +95 -23
  394. package/src/mcpl/reference-fetcher.ts +18 -8
  395. package/src/mcpl/references.ts +57 -13
  396. package/src/mcpl/refusal-lines.ts +59 -0
  397. package/src/mcpl/server-connection.ts +125 -15
  398. package/src/mcpl/tool-classes.ts +3 -2
  399. package/src/mcpl/transport.ts +105 -14
  400. package/src/mcpl/types.ts +5 -1
  401. package/src/module-registry.ts +17 -9
  402. package/src/modules/discord/index.ts +4 -2
  403. package/src/modules/workspace/disk-agreement.ts +74 -18
  404. package/src/modules/workspace/index.ts +85 -15
  405. package/src/modules/workspace/observe.ts +295 -43
  406. package/src/modules/workspace/reconcile.ts +90 -12
  407. package/src/modules/workspace/types.ts +26 -1
  408. package/src/operator-log.ts +30 -0
  409. package/src/provider-waits.ts +523 -0
  410. package/src/recovery/offline-branch.ts +32 -28
  411. package/src/refusal-reactions.ts +14 -12
  412. package/src/stored-removal.ts +126 -0
  413. package/src/tool-result-guard.ts +72 -24
  414. package/src/types/agent.ts +42 -6
  415. package/src/types/events.ts +12 -0
  416. package/src/types/framework.ts +10 -0
  417. package/src/types/module.ts +20 -8
  418. package/src/types/trace.ts +76 -14
@@ -1,598 +1,18 @@
1
+ #!/usr/bin/env node
1
2
  /**
2
- * MCP Server for Claude Code integration
3
- *
4
- * Exposes agent framework capabilities as MCP tools that can be called
5
- * from Claude Code or other MCP clients.
6
- *
7
- * Communicates with the WebSocket API server to perform operations.
3
+ * The `agent-framework-mcp` command: an MCP server over stdio for Claude Code
4
+ * and other MCP clients, as a client of the framework's WebSocket API at
5
+ * AGENT_FRAMEWORK_WS_URL (default ws://localhost:8765/ws). It always starts:
6
+ * the server itself is McpServer, in ./mcp-server-core.ts, which the package
7
+ * root exports, so importing the package never runs this file. The package's
8
+ * `exports` names only its root, so nothing outside it can import this path
9
+ * by the package's name.
8
10
  */
9
- import WebSocket from 'ws';
10
- import { createInterface } from 'node:readline';
11
- // ============================================================================
12
- // MCP Server Implementation
13
- // ============================================================================
14
- export class McpServer {
15
- ws = null;
16
- wsUrl;
17
- requestId = 0;
18
- pendingRequests = new Map();
19
- connected = false;
20
- reconnecting = false;
21
- reconnectInterval = 2000; // Retry every 2s
22
- closing = false;
23
- constructor(wsUrl = 'ws://localhost:8765/ws') {
24
- this.wsUrl = wsUrl;
25
- }
26
- /**
27
- * Start the MCP server (stdio mode).
28
- */
29
- async start() {
30
- // Connect to WebSocket API
31
- await this.connectWs();
32
- // Set up stdio interface
33
- const rl = createInterface({
34
- input: process.stdin,
35
- output: process.stdout,
36
- terminal: false,
37
- });
38
- rl.on('line', (line) => {
39
- this.handleInput(line);
40
- });
41
- rl.on('close', () => {
42
- this.close();
43
- process.exit(0);
44
- });
45
- // Handle SIGINT gracefully
46
- process.on('SIGINT', () => {
47
- this.close();
48
- process.exit(0);
49
- });
50
- }
51
- async connectWs() {
52
- return new Promise((resolve, reject) => {
53
- this.ws = new WebSocket(this.wsUrl);
54
- this.ws.on('open', () => {
55
- this.connected = true;
56
- this.reconnecting = false;
57
- resolve();
58
- });
59
- this.ws.on('message', (data) => {
60
- this.handleWsMessage(data.toString());
61
- });
62
- this.ws.on('close', () => {
63
- this.connected = false;
64
- if (!this.closing) {
65
- this.scheduleReconnect();
66
- }
67
- });
68
- this.ws.on('error', (error) => {
69
- if (!this.connected) {
70
- // Connection failed - reject so we can retry
71
- reject(error);
72
- }
73
- else {
74
- // Connected but got an error - just log it
75
- this.sendNotification('notifications/message', {
76
- level: 'error',
77
- logger: 'agent-framework',
78
- data: `WebSocket error: ${error.message}`,
79
- });
80
- }
81
- });
82
- });
83
- }
84
- scheduleReconnect() {
85
- if (this.reconnecting || this.closing)
86
- return;
87
- this.reconnecting = true;
88
- setTimeout(() => {
89
- if (this.closing)
90
- return;
91
- this.connectWs().catch(() => {
92
- this.reconnecting = false;
93
- this.scheduleReconnect();
94
- });
95
- }, this.reconnectInterval);
96
- }
97
- handleWsMessage(data) {
98
- try {
99
- const message = JSON.parse(data);
100
- if (message.type === 'response' && 'id' in message && message.id) {
101
- // Handle response to our request
102
- const pending = this.pendingRequests.get(message.id);
103
- if (pending) {
104
- this.pendingRequests.delete(message.id);
105
- if (message.success) {
106
- pending.resolve(message.data);
107
- }
108
- else {
109
- pending.reject(new Error(message.error ?? 'Unknown error'));
110
- }
111
- }
112
- }
113
- else if (message.type === 'event') {
114
- // Forward events as MCP notifications
115
- this.sendNotification('notifications/message', {
116
- level: 'info',
117
- logger: 'agent-framework',
118
- data: `Event: ${message.event} - ${JSON.stringify(message.data)}`,
119
- });
120
- }
121
- }
122
- catch {
123
- // Ignore parse errors
124
- }
125
- }
126
- handleInput(line) {
127
- try {
128
- const message = JSON.parse(line);
129
- // Check if this is a notification (no id) or a request (has id)
130
- if (!('id' in message) || message.id === undefined) {
131
- // This is a notification - handle silently without response
132
- // Common notifications: notifications/initialized, notifications/cancelled
133
- return;
134
- }
135
- // This is a request - process and respond
136
- this.handleRequest(message);
137
- }
138
- catch {
139
- this.sendError(null, -32700, 'Parse error');
140
- }
141
- }
142
- async handleRequest(request) {
143
- try {
144
- switch (request.method) {
145
- case 'initialize':
146
- this.sendResult(request.id, {
147
- protocolVersion: '2024-11-05',
148
- capabilities: {
149
- tools: {},
150
- },
151
- serverInfo: {
152
- name: 'agent-framework',
153
- version: '0.1.0',
154
- },
155
- });
156
- break;
157
- case 'initialized':
158
- // Client acknowledgment, no response needed
159
- break;
160
- case 'tools/list':
161
- this.sendResult(request.id, { tools: this.getTools() });
162
- break;
163
- case 'tools/call':
164
- await this.handleToolCall(request);
165
- break;
166
- case 'ping':
167
- this.sendResult(request.id, {});
168
- break;
169
- default:
170
- this.sendError(request.id, -32601, `Method not found: ${request.method}`);
171
- }
172
- }
173
- catch (error) {
174
- this.sendError(request.id, -32603, error instanceof Error ? error.message : String(error));
175
- }
176
- }
177
- getTools() {
178
- return [
179
- {
180
- name: 'agent_send_message',
181
- description: 'Send a message to the agent framework. This will add the message to the conversation and optionally trigger inference.',
182
- inputSchema: {
183
- type: 'object',
184
- properties: {
185
- participant: {
186
- type: 'string',
187
- description: 'Name of the participant sending the message (e.g., "user")',
188
- },
189
- content: {
190
- type: 'string',
191
- description: 'The message content',
192
- },
193
- triggerInference: {
194
- type: 'boolean',
195
- description: 'Whether to trigger agent inference after sending (default: true)',
196
- },
197
- targetAgents: {
198
- type: 'array',
199
- items: { type: 'string' },
200
- description: 'Specific agents to trigger (optional, defaults to all)',
201
- },
202
- },
203
- required: ['participant', 'content'],
204
- },
205
- },
206
- {
207
- name: 'agent_list_messages',
208
- description: 'List recent messages in the conversation',
209
- inputSchema: {
210
- type: 'object',
211
- properties: {
212
- limit: {
213
- type: 'number',
214
- description: 'Maximum number of messages to return (default: 50)',
215
- },
216
- offset: {
217
- type: 'number',
218
- description: 'Offset from the most recent message (default: 0)',
219
- },
220
- },
221
- },
222
- },
223
- {
224
- name: 'agent_request_inference',
225
- description: 'Request the agent to run inference and generate a response',
226
- inputSchema: {
227
- type: 'object',
228
- properties: {
229
- agentName: {
230
- type: 'string',
231
- description: 'Specific agent to run (optional, defaults to all)',
232
- },
233
- reason: {
234
- type: 'string',
235
- description: 'Reason for the inference request',
236
- },
237
- },
238
- },
239
- },
240
- {
241
- name: 'branch_list',
242
- description: 'List all branches in the agent framework',
243
- inputSchema: {
244
- type: 'object',
245
- properties: {},
246
- },
247
- },
248
- {
249
- name: 'branch_create',
250
- description: 'Create a new branch from the current state',
251
- inputSchema: {
252
- type: 'object',
253
- properties: {
254
- name: {
255
- type: 'string',
256
- description: 'Name for the new branch',
257
- },
258
- switchTo: {
259
- type: 'boolean',
260
- description: 'Whether to switch to the new branch after creation (default: false)',
261
- },
262
- },
263
- required: ['name'],
264
- },
265
- },
266
- {
267
- name: 'branch_switch',
268
- description: 'Switch to a different branch',
269
- inputSchema: {
270
- type: 'object',
271
- properties: {
272
- name: {
273
- type: 'string',
274
- description: 'Name of the branch to switch to',
275
- },
276
- },
277
- required: ['name'],
278
- },
279
- },
280
- {
281
- name: 'branch_current',
282
- description: 'Get the name of the current branch',
283
- inputSchema: {
284
- type: 'object',
285
- properties: {},
286
- },
287
- },
288
- {
289
- name: 'branch_delete',
290
- description: 'Delete a branch (cannot delete current or main branch)',
291
- inputSchema: {
292
- type: 'object',
293
- properties: {
294
- name: {
295
- type: 'string',
296
- description: 'Name of the branch to delete',
297
- },
298
- },
299
- required: ['name'],
300
- },
301
- },
302
- {
303
- name: 'agent_list',
304
- description: 'List all agents in the framework',
305
- inputSchema: {
306
- type: 'object',
307
- properties: {},
308
- },
309
- },
310
- {
311
- name: 'agent_context',
312
- description: "Get an agent's current context (compiled messages)",
313
- inputSchema: {
314
- type: 'object',
315
- properties: {
316
- agentName: {
317
- type: 'string',
318
- description: 'Name of the agent',
319
- },
320
- maxTokens: {
321
- type: 'number',
322
- description: 'Maximum tokens to include (optional)',
323
- },
324
- },
325
- required: ['agentName'],
326
- },
327
- },
328
- {
329
- name: 'module_list',
330
- description: 'List all modules registered with the framework',
331
- inputSchema: {
332
- type: 'object',
333
- properties: {},
334
- },
335
- },
336
- {
337
- name: 'module_state',
338
- description: "Get a module's current state",
339
- inputSchema: {
340
- type: 'object',
341
- properties: {
342
- moduleName: {
343
- type: 'string',
344
- description: 'Name of the module',
345
- },
346
- },
347
- required: ['moduleName'],
348
- },
349
- },
350
- {
351
- name: 'store_states',
352
- description: 'List all states in the store',
353
- inputSchema: {
354
- type: 'object',
355
- properties: {
356
- namespace: {
357
- type: 'string',
358
- description: "Filter by namespace prefix (e.g., 'agents/', 'modules/')",
359
- },
360
- limit: {
361
- type: 'number',
362
- description: 'Maximum number of states to return (default: 50)',
363
- },
364
- },
365
- },
366
- },
367
- {
368
- name: 'store_search',
369
- description: 'Search through store states by namespace and/or content pattern',
370
- inputSchema: {
371
- type: 'object',
372
- properties: {
373
- namespace: {
374
- type: 'string',
375
- description: 'Filter by namespace prefix',
376
- },
377
- contentPattern: {
378
- type: 'string',
379
- description: 'Regex pattern to match against state content (JSON stringified)',
380
- },
381
- limit: {
382
- type: 'number',
383
- description: 'Maximum number of results (default: 20)',
384
- },
385
- offset: {
386
- type: 'number',
387
- description: 'Skip first N results for pagination (default: 0)',
388
- },
389
- previewLength: {
390
- type: 'number',
391
- description: 'Preview length in characters (default: 300)',
392
- },
393
- },
394
- },
395
- },
396
- {
397
- name: 'store_inspect',
398
- description: 'Inspect a specific state in the store',
399
- inputSchema: {
400
- type: 'object',
401
- properties: {
402
- stateId: {
403
- type: 'string',
404
- description: 'ID of the state to inspect',
405
- },
406
- },
407
- required: ['stateId'],
408
- },
409
- },
410
- // Inference logging tools
411
- {
412
- name: 'inference_tail',
413
- description: 'Get the most recent inference log entries. Shows raw LLM requests and responses for debugging.',
414
- inputSchema: {
415
- type: 'object',
416
- properties: {
417
- count: {
418
- type: 'number',
419
- description: 'Number of recent entries to return (default: 10)',
420
- },
421
- agentName: {
422
- type: 'string',
423
- description: 'Filter by agent name (optional)',
424
- },
425
- },
426
- },
427
- },
428
- {
429
- name: 'inference_inspect',
430
- description: 'Inspect a specific inference log entry by sequence number. Returns full raw request and response.',
431
- inputSchema: {
432
- type: 'object',
433
- properties: {
434
- sequence: {
435
- type: 'number',
436
- description: 'Sequence number of the log entry to inspect',
437
- },
438
- },
439
- required: ['sequence'],
440
- },
441
- },
442
- {
443
- name: 'inference_search',
444
- description: 'Search through inference logs by agent, pattern, or error status. Useful for debugging specific issues.',
445
- inputSchema: {
446
- type: 'object',
447
- properties: {
448
- agentName: {
449
- type: 'string',
450
- description: 'Filter by agent name',
451
- },
452
- pattern: {
453
- type: 'string',
454
- description: 'Regex pattern to search in log content',
455
- },
456
- errorsOnly: {
457
- type: 'boolean',
458
- description: 'Only show failed inferences',
459
- },
460
- limit: {
461
- type: 'number',
462
- description: 'Maximum number of results (default: 20)',
463
- },
464
- offset: {
465
- type: 'number',
466
- description: 'Skip first N results for pagination (default: 0)',
467
- },
468
- },
469
- },
470
- },
471
- ];
472
- }
473
- async handleToolCall(request) {
474
- const params = request.params;
475
- const { name, arguments: args } = params;
476
- // Map MCP tool names to API commands
477
- const toolToCommand = {
478
- agent_send_message: 'message.send',
479
- agent_list_messages: 'message.list',
480
- agent_request_inference: 'inference.request',
481
- branch_list: 'branch.list',
482
- branch_create: 'branch.create',
483
- branch_switch: 'branch.switch',
484
- branch_current: 'branch.current',
485
- branch_delete: 'branch.delete',
486
- agent_list: 'agent.list',
487
- agent_context: 'agent.context',
488
- module_list: 'module.list',
489
- module_state: 'module.state',
490
- store_states: 'store.states',
491
- store_search: 'store.search',
492
- store_inspect: 'store.inspect',
493
- inference_tail: 'inference.tail',
494
- inference_inspect: 'inference.inspect',
495
- inference_search: 'inference.search',
496
- };
497
- const command = toolToCommand[name];
498
- if (!command) {
499
- this.sendError(request.id, -32602, `Unknown tool: ${name}`);
500
- return;
501
- }
502
- try {
503
- const result = await this.sendApiRequest(command, args);
504
- this.sendResult(request.id, {
505
- content: [
506
- {
507
- type: 'text',
508
- text: JSON.stringify(result, null, 2),
509
- },
510
- ],
511
- });
512
- }
513
- catch (error) {
514
- this.sendResult(request.id, {
515
- content: [
516
- {
517
- type: 'text',
518
- text: `Error: ${error instanceof Error ? error.message : String(error)}`,
519
- },
520
- ],
521
- isError: true,
522
- });
523
- }
524
- }
525
- sendApiRequest(command, params) {
526
- return new Promise((resolve, reject) => {
527
- if (!this.ws || !this.connected) {
528
- reject(new Error('Not connected to API server'));
529
- return;
530
- }
531
- const id = `mcp-${++this.requestId}`;
532
- this.pendingRequests.set(id, { resolve, reject });
533
- const request = {
534
- type: 'request',
535
- id,
536
- command,
537
- params,
538
- };
539
- this.ws.send(JSON.stringify(request));
540
- // Timeout after 30 seconds
541
- setTimeout(() => {
542
- if (this.pendingRequests.has(id)) {
543
- this.pendingRequests.delete(id);
544
- reject(new Error('Request timeout'));
545
- }
546
- }, 30000);
547
- });
548
- }
549
- sendResult(id, result) {
550
- const response = {
551
- jsonrpc: '2.0',
552
- id,
553
- result,
554
- };
555
- this.send(response);
556
- }
557
- sendError(id, code, message) {
558
- const response = {
559
- jsonrpc: '2.0',
560
- id,
561
- error: { code, message },
562
- };
563
- this.send(response);
564
- }
565
- sendNotification(method, params) {
566
- const notification = {
567
- jsonrpc: '2.0',
568
- method,
569
- params,
570
- };
571
- this.send(notification);
572
- }
573
- send(message) {
574
- process.stdout.write(JSON.stringify(message) + '\n');
575
- }
576
- close() {
577
- this.closing = true;
578
- if (this.ws) {
579
- this.ws.close();
580
- this.ws = null;
581
- }
582
- this.connected = false;
583
- }
584
- }
585
- // ============================================================================
586
- // CLI Entry Point
587
- // ============================================================================
588
- // Run if executed directly
589
- const isMain = process.argv[1]?.endsWith('mcp-server.js');
590
- if (isMain) {
591
- const wsUrl = process.env.AGENT_FRAMEWORK_WS_URL ?? 'ws://localhost:8765/ws';
592
- const server = new McpServer(wsUrl);
593
- server.start().catch((error) => {
594
- console.error('Failed to start MCP server:', error);
595
- process.exit(1);
596
- });
597
- }
11
+ import { McpServer } from './mcp-server-core.js';
12
+ const wsUrl = process.env.AGENT_FRAMEWORK_WS_URL ?? 'ws://localhost:8765/ws';
13
+ const server = new McpServer(wsUrl);
14
+ server.start().catch((error) => {
15
+ console.error('Failed to start MCP server:', error);
16
+ process.exit(1);
17
+ });
598
18
  //# sourceMappingURL=mcp-server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../../src/api/mcp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../../src/api/mcp-server.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,wBAAwB,CAAC;AAC7E,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;AACpC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAC7B,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;IACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -17,7 +17,15 @@ export declare class ApiServer {
17
17
  private wss;
18
18
  private httpServer;
19
19
  private clients;
20
- private currentBranch;
20
+ /** The store's branch as last read: what the API reports once the store has closed. */
21
+ private lastKnownBranch;
22
+ /**
23
+ * The store's current branch, read from the store while it's open. A cached
24
+ * name would go stale behind any move the API server didn't make itself (a
25
+ * rollback, a host's switch), and behind a switch whose move comes after
26
+ * its call returns, as one does once running maintenance has finished.
27
+ */
28
+ private get currentBranch();
21
29
  /** Map from client to their subscription IDs */
22
30
  private clientSubscriptions;
23
31
  /** Subscription poll interval timer */
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/api/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD,OAAO,KAAK,EACV,eAAe,EA8BhB,MAAM,YAAY,CAAC;AAEpB,cAAc,YAAY,CAAC;AAsB3B;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,UAAU,CAAgD;IAClE,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,aAAa,CAAU;IAE/B,gDAAgD;IAChD,OAAO,CAAC,mBAAmB,CAA0C;IACrE,uCAAuC;IACvC,OAAO,CAAC,wBAAwB,CAA+C;gBAEnE,SAAS,EAAE,cAAc,EAAE,MAAM,GAAE,eAAoB;IAUnE;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAkBrB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkD5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoC3B;;OAEG;IACH,IAAI,GAAG,IAAI,MAAM,CAEhB;IAMD,OAAO,CAAC,gBAAgB;YAkCV,mBAAmB;IAgCjC,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,gBAAgB;YAeV,cAAc;IAiG5B;yEACqE;IACrE,OAAO,CAAC,iBAAiB;YAYX,cAAc;YAiBd,cAAc;YAkBd,mBAAmB;YAWnB,iBAAiB;YAajB,aAAa;YAYb,eAAe;YAoBf,eAAe;YA6Bf,gBAAgB;YAIhB,eAAe;YAyBf,OAAO;YAoBP,OAAO;IAoBrB,OAAO,CAAC,YAAY;YAYN,YAAY;YAcZ,eAAe;YAoBf,aAAa;YAcb,cAAc;YAYd,cAAc;YAsBd,cAAc;YA2Cd,eAAe;YAef,gBAAgB;YAShB,mBAAmB;YAanB,kBAAkB;YAgBlB,aAAa;YASb,gBAAgB;YAahB,eAAe;YAYf,kBAAkB;IAmDhC,OAAO,CAAC,iBAAiB;YA+HX,iBAAiB;YA8DjB,mBAAmB;IA0BjC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAYlC;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAiC1B"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/api/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAItD,OAAO,KAAK,EACV,eAAe,EA8BhB,MAAM,YAAY,CAAC;AAEpB,cAAc,YAAY,CAAC;AAsB3B;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,UAAU,CAAgD;IAClE,OAAO,CAAC,OAAO,CAA6B;IAC5C,uFAAuF;IACvF,OAAO,CAAC,eAAe,CAAU;IAEjC;;;;;OAKG;IACH,OAAO,KAAK,aAAa,GAIxB;IAED,gDAAgD;IAChD,OAAO,CAAC,mBAAmB,CAA0C;IACrE,uCAAuC;IACvC,OAAO,CAAC,wBAAwB,CAA+C;IAE/E,YAAY,SAAS,EAAE,cAAc,EAAE,MAAM,GAAE,eAAoB,EAQlE;IAED;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAkBrB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAgD3B;IAED;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAkC1B;IAED;;OAEG;IACH,IAAI,GAAG,IAAI,MAAM,CAEhB;IAMD,OAAO,CAAC,gBAAgB;YAkCV,mBAAmB;IAgCjC,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,gBAAgB;YAeV,cAAc;IAgI5B;yEACqE;IACrE,OAAO,CAAC,iBAAiB;YAYX,cAAc;YAiBd,cAAc;YAsBd,mBAAmB;YAWnB,iBAAiB;YAajB,aAAa;YAYb,eAAe;YAoBf,eAAe;YA8Bf,gBAAgB;YAIhB,eAAe;YAyBf,OAAO;YAoBP,OAAO;IAoBrB,OAAO,CAAC,YAAY;YAYN,YAAY;YAcZ,eAAe;YA+Bf,aAAa;YAcb,cAAc;YAYd,cAAc;YAsBd,cAAc;YA2Cd,eAAe;YAef,gBAAgB;YAShB,mBAAmB;YAanB,kBAAkB;YAgBlB,aAAa;YASb,gBAAgB;YAahB,eAAe;YAYf,kBAAkB;IAmDhC,OAAO,CAAC,iBAAiB;YA+HX,iBAAiB;YA8DjB,mBAAmB;IA0BjC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAYlC;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAiC1B"}