@animalabs/agent-framework 0.26.2 → 0.28.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 (371) hide show
  1. package/README.md +99 -8
  2. package/dist/src/agent.d.ts +291 -23
  3. package/dist/src/agent.d.ts.map +1 -1
  4. package/dist/src/agent.js +596 -61
  5. package/dist/src/agent.js.map +1 -1
  6. package/dist/src/api/server.d.ts.map +1 -1
  7. package/dist/src/api/server.js +5 -4
  8. package/dist/src/api/server.js.map +1 -1
  9. package/dist/src/auto-continue.d.ts +34 -0
  10. package/dist/src/auto-continue.d.ts.map +1 -0
  11. package/dist/src/auto-continue.js +36 -0
  12. package/dist/src/auto-continue.js.map +1 -0
  13. package/dist/src/code-execution/isolate/scripts.d.ts +11 -0
  14. package/dist/src/code-execution/isolate/scripts.d.ts.map +1 -1
  15. package/dist/src/code-execution/isolate/scripts.js +5 -1
  16. package/dist/src/code-execution/isolate/scripts.js.map +1 -1
  17. package/dist/src/cut-off-round.d.ts +24 -0
  18. package/dist/src/cut-off-round.d.ts.map +1 -0
  19. package/dist/src/cut-off-round.js +87 -0
  20. package/dist/src/cut-off-round.js.map +1 -0
  21. package/dist/src/framework.d.ts +1038 -193
  22. package/dist/src/framework.d.ts.map +1 -1
  23. package/dist/src/framework.js +5967 -1514
  24. package/dist/src/framework.js.map +1 -1
  25. package/dist/src/gate/event-gate.d.ts +405 -46
  26. package/dist/src/gate/event-gate.d.ts.map +1 -1
  27. package/dist/src/gate/event-gate.js +2646 -399
  28. package/dist/src/gate/event-gate.js.map +1 -1
  29. package/dist/src/gate/index.d.ts +3 -2
  30. package/dist/src/gate/index.d.ts.map +1 -1
  31. package/dist/src/gate/index.js +2 -1
  32. package/dist/src/gate/index.js.map +1 -1
  33. package/dist/src/gate/recipe-reconcile.d.ts +103 -0
  34. package/dist/src/gate/recipe-reconcile.d.ts.map +1 -0
  35. package/dist/src/gate/recipe-reconcile.js +325 -0
  36. package/dist/src/gate/recipe-reconcile.js.map +1 -0
  37. package/dist/src/gate/reply-judge.d.ts +116 -0
  38. package/dist/src/gate/reply-judge.d.ts.map +1 -0
  39. package/dist/src/gate/reply-judge.js +467 -0
  40. package/dist/src/gate/reply-judge.js.map +1 -0
  41. package/dist/src/gate/types.d.ts +229 -8
  42. package/dist/src/gate/types.d.ts.map +1 -1
  43. package/dist/src/heartbeat/heartbeat.d.ts +184 -0
  44. package/dist/src/heartbeat/heartbeat.d.ts.map +1 -0
  45. package/dist/src/heartbeat/heartbeat.js +752 -0
  46. package/dist/src/heartbeat/heartbeat.js.map +1 -0
  47. package/dist/src/heartbeat/reminder-time.d.ts +5 -0
  48. package/dist/src/heartbeat/reminder-time.d.ts.map +1 -0
  49. package/dist/src/heartbeat/reminder-time.js +107 -0
  50. package/dist/src/heartbeat/reminder-time.js.map +1 -0
  51. package/dist/src/index.d.ts +10 -4
  52. package/dist/src/index.d.ts.map +1 -1
  53. package/dist/src/index.js +7 -2
  54. package/dist/src/index.js.map +1 -1
  55. package/dist/src/mcpl/capability-mask.d.ts.map +1 -1
  56. package/dist/src/mcpl/capability-mask.js +3 -2
  57. package/dist/src/mcpl/capability-mask.js.map +1 -1
  58. package/dist/src/mcpl/channel-registry.d.ts +433 -113
  59. package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
  60. package/dist/src/mcpl/channel-registry.js +1154 -435
  61. package/dist/src/mcpl/channel-registry.js.map +1 -1
  62. package/dist/src/mcpl/conversation-router.d.ts +16 -8
  63. package/dist/src/mcpl/conversation-router.d.ts.map +1 -1
  64. package/dist/src/mcpl/conversation-router.js +29 -15
  65. package/dist/src/mcpl/conversation-router.js.map +1 -1
  66. package/dist/src/mcpl/convert-block.d.ts.map +1 -1
  67. package/dist/src/mcpl/convert-block.js +14 -2
  68. package/dist/src/mcpl/convert-block.js.map +1 -1
  69. package/dist/src/mcpl/hook-orchestrator.d.ts +7 -1
  70. package/dist/src/mcpl/hook-orchestrator.d.ts.map +1 -1
  71. package/dist/src/mcpl/hook-orchestrator.js +32 -7
  72. package/dist/src/mcpl/hook-orchestrator.js.map +1 -1
  73. package/dist/src/mcpl/inbound-source.d.ts +26 -10
  74. package/dist/src/mcpl/inbound-source.d.ts.map +1 -1
  75. package/dist/src/mcpl/inbound-source.js +40 -69
  76. package/dist/src/mcpl/inbound-source.js.map +1 -1
  77. package/dist/src/mcpl/index.d.ts +5 -1
  78. package/dist/src/mcpl/index.d.ts.map +1 -1
  79. package/dist/src/mcpl/index.js +4 -0
  80. package/dist/src/mcpl/index.js.map +1 -1
  81. package/dist/src/mcpl/inference-router.d.ts +14 -2
  82. package/dist/src/mcpl/inference-router.d.ts.map +1 -1
  83. package/dist/src/mcpl/inference-router.js +73 -28
  84. package/dist/src/mcpl/inference-router.js.map +1 -1
  85. package/dist/src/mcpl/prose-grammar.d.ts +4 -0
  86. package/dist/src/mcpl/prose-grammar.d.ts.map +1 -1
  87. package/dist/src/mcpl/prose-grammar.js +6 -0
  88. package/dist/src/mcpl/prose-grammar.js.map +1 -1
  89. package/dist/src/mcpl/protocol-family.d.ts.map +1 -1
  90. package/dist/src/mcpl/protocol-family.js +3 -0
  91. package/dist/src/mcpl/protocol-family.js.map +1 -1
  92. package/dist/src/mcpl/push-coalescer.d.ts +20 -2
  93. package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
  94. package/dist/src/mcpl/push-coalescer.js +33 -11
  95. package/dist/src/mcpl/push-coalescer.js.map +1 -1
  96. package/dist/src/mcpl/reference-fetcher.d.ts +63 -42
  97. package/dist/src/mcpl/reference-fetcher.d.ts.map +1 -1
  98. package/dist/src/mcpl/reference-fetcher.js +177 -145
  99. package/dist/src/mcpl/reference-fetcher.js.map +1 -1
  100. package/dist/src/mcpl/references.d.ts +380 -46
  101. package/dist/src/mcpl/references.d.ts.map +1 -1
  102. package/dist/src/mcpl/references.js +736 -77
  103. package/dist/src/mcpl/references.js.map +1 -1
  104. package/dist/src/mcpl/server-connection.d.ts +93 -4
  105. package/dist/src/mcpl/server-connection.d.ts.map +1 -1
  106. package/dist/src/mcpl/server-connection.js +176 -11
  107. package/dist/src/mcpl/server-connection.js.map +1 -1
  108. package/dist/src/mcpl/tags.d.ts +9 -2
  109. package/dist/src/mcpl/tags.d.ts.map +1 -1
  110. package/dist/src/mcpl/tags.js +12 -2
  111. package/dist/src/mcpl/tags.js.map +1 -1
  112. package/dist/src/mcpl/tool-lifecycle.d.ts +11 -0
  113. package/dist/src/mcpl/tool-lifecycle.d.ts.map +1 -1
  114. package/dist/src/mcpl/tool-lifecycle.js +21 -0
  115. package/dist/src/mcpl/tool-lifecycle.js.map +1 -1
  116. package/dist/src/mcpl/tool-presence.d.ts +311 -0
  117. package/dist/src/mcpl/tool-presence.d.ts.map +1 -0
  118. package/dist/src/mcpl/tool-presence.js +697 -0
  119. package/dist/src/mcpl/tool-presence.js.map +1 -0
  120. package/dist/src/mcpl/tool-result-normalize.d.ts +9 -3
  121. package/dist/src/mcpl/tool-result-normalize.d.ts.map +1 -1
  122. package/dist/src/mcpl/tool-result-normalize.js +14 -6
  123. package/dist/src/mcpl/tool-result-normalize.js.map +1 -1
  124. package/dist/src/mcpl/tool-signature.d.ts +46 -0
  125. package/dist/src/mcpl/tool-signature.d.ts.map +1 -0
  126. package/dist/src/mcpl/tool-signature.js +321 -0
  127. package/dist/src/mcpl/tool-signature.js.map +1 -0
  128. package/dist/src/mcpl/toolset-host.d.ts +251 -0
  129. package/dist/src/mcpl/toolset-host.d.ts.map +1 -0
  130. package/dist/src/mcpl/toolset-host.js +720 -0
  131. package/dist/src/mcpl/toolset-host.js.map +1 -0
  132. package/dist/src/mcpl/toolsets-module.d.ts +83 -0
  133. package/dist/src/mcpl/toolsets-module.d.ts.map +1 -0
  134. package/dist/src/mcpl/toolsets-module.js +523 -0
  135. package/dist/src/mcpl/toolsets-module.js.map +1 -0
  136. package/dist/src/mcpl/transport.d.ts +2 -2
  137. package/dist/src/mcpl/transport.d.ts.map +1 -1
  138. package/dist/src/mcpl/transport.js +3 -2
  139. package/dist/src/mcpl/transport.js.map +1 -1
  140. package/dist/src/mcpl/types.d.ts +24 -2
  141. package/dist/src/mcpl/types.d.ts.map +1 -1
  142. package/dist/src/mcpl/types.js.map +1 -1
  143. package/dist/src/mcpl/visible-content.d.ts +7 -9
  144. package/dist/src/mcpl/visible-content.d.ts.map +1 -1
  145. package/dist/src/mcpl/visible-content.js +21 -9
  146. package/dist/src/mcpl/visible-content.js.map +1 -1
  147. package/dist/src/module-registry.d.ts +27 -9
  148. package/dist/src/module-registry.d.ts.map +1 -1
  149. package/dist/src/module-registry.js +77 -17
  150. package/dist/src/module-registry.js.map +1 -1
  151. package/dist/src/modules/discord/index.js +1 -1
  152. package/dist/src/modules/discord/index.js.map +1 -1
  153. package/dist/src/modules/history/index.d.ts +2 -1
  154. package/dist/src/modules/history/index.d.ts.map +1 -1
  155. package/dist/src/modules/history/index.js +73 -28
  156. package/dist/src/modules/history/index.js.map +1 -1
  157. package/dist/src/modules/history/semantic.d.ts +108 -6
  158. package/dist/src/modules/history/semantic.d.ts.map +1 -1
  159. package/dist/src/modules/history/semantic.js +273 -57
  160. package/dist/src/modules/history/semantic.js.map +1 -1
  161. package/dist/src/modules/workspace/answers.d.ts +22 -0
  162. package/dist/src/modules/workspace/answers.d.ts.map +1 -0
  163. package/dist/src/modules/workspace/answers.js +123 -0
  164. package/dist/src/modules/workspace/answers.js.map +1 -0
  165. package/dist/src/modules/workspace/branch-intent.d.ts +5 -3
  166. package/dist/src/modules/workspace/branch-intent.d.ts.map +1 -1
  167. package/dist/src/modules/workspace/branch-intent.js +6 -2
  168. package/dist/src/modules/workspace/branch-intent.js.map +1 -1
  169. package/dist/src/modules/workspace/direct-write.d.ts +184 -0
  170. package/dist/src/modules/workspace/direct-write.d.ts.map +1 -0
  171. package/dist/src/modules/workspace/direct-write.js +417 -0
  172. package/dist/src/modules/workspace/direct-write.js.map +1 -0
  173. package/dist/src/modules/workspace/disk-agreement.d.ts +33 -11
  174. package/dist/src/modules/workspace/disk-agreement.d.ts.map +1 -1
  175. package/dist/src/modules/workspace/disk-agreement.js +48 -17
  176. package/dist/src/modules/workspace/disk-agreement.js.map +1 -1
  177. package/dist/src/modules/workspace/edit-text.d.ts +27 -12
  178. package/dist/src/modules/workspace/edit-text.d.ts.map +1 -1
  179. package/dist/src/modules/workspace/edit-text.js +61 -29
  180. package/dist/src/modules/workspace/edit-text.js.map +1 -1
  181. package/dist/src/modules/workspace/effects.d.ts +10 -0
  182. package/dist/src/modules/workspace/effects.d.ts.map +1 -1
  183. package/dist/src/modules/workspace/effects.js +21 -14
  184. package/dist/src/modules/workspace/effects.js.map +1 -1
  185. package/dist/src/modules/workspace/index.d.ts +308 -78
  186. package/dist/src/modules/workspace/index.d.ts.map +1 -1
  187. package/dist/src/modules/workspace/index.js +2103 -720
  188. package/dist/src/modules/workspace/index.js.map +1 -1
  189. package/dist/src/modules/workspace/observe.d.ts +75 -63
  190. package/dist/src/modules/workspace/observe.d.ts.map +1 -1
  191. package/dist/src/modules/workspace/observe.js +366 -180
  192. package/dist/src/modules/workspace/observe.js.map +1 -1
  193. package/dist/src/modules/workspace/read-page.d.ts +41 -0
  194. package/dist/src/modules/workspace/read-page.d.ts.map +1 -0
  195. package/dist/src/modules/workspace/read-page.js +219 -0
  196. package/dist/src/modules/workspace/read-page.js.map +1 -0
  197. package/dist/src/modules/workspace/reconcile.d.ts.map +1 -1
  198. package/dist/src/modules/workspace/reconcile.js +26 -16
  199. package/dist/src/modules/workspace/reconcile.js.map +1 -1
  200. package/dist/src/modules/workspace/result-text.d.ts +68 -0
  201. package/dist/src/modules/workspace/result-text.d.ts.map +1 -0
  202. package/dist/src/modules/workspace/result-text.js +94 -0
  203. package/dist/src/modules/workspace/result-text.js.map +1 -0
  204. package/dist/src/modules/workspace/sync.d.ts +9 -0
  205. package/dist/src/modules/workspace/sync.d.ts.map +1 -1
  206. package/dist/src/modules/workspace/sync.js +14 -0
  207. package/dist/src/modules/workspace/sync.js.map +1 -1
  208. package/dist/src/modules/workspace/text.d.ts +29 -12
  209. package/dist/src/modules/workspace/text.d.ts.map +1 -1
  210. package/dist/src/modules/workspace/text.js +35 -33
  211. package/dist/src/modules/workspace/text.js.map +1 -1
  212. package/dist/src/modules/workspace/types.d.ts +137 -60
  213. package/dist/src/modules/workspace/types.d.ts.map +1 -1
  214. package/dist/src/modules/workspace/types.js.map +1 -1
  215. package/dist/src/modules/workspace/watcher.d.ts.map +1 -1
  216. package/dist/src/modules/workspace/watcher.js +8 -3
  217. package/dist/src/modules/workspace/watcher.js.map +1 -1
  218. package/dist/src/prose-drafts.d.ts +4 -3
  219. package/dist/src/prose-drafts.d.ts.map +1 -1
  220. package/dist/src/prose-drafts.js +3 -2
  221. package/dist/src/prose-drafts.js.map +1 -1
  222. package/dist/src/reasoning-loss-notice.d.ts +23 -0
  223. package/dist/src/reasoning-loss-notice.d.ts.map +1 -0
  224. package/dist/src/reasoning-loss-notice.js +50 -0
  225. package/dist/src/reasoning-loss-notice.js.map +1 -0
  226. package/dist/src/reasoning-loss.d.ts +24 -0
  227. package/dist/src/reasoning-loss.d.ts.map +1 -0
  228. package/dist/src/reasoning-loss.js +102 -0
  229. package/dist/src/reasoning-loss.js.map +1 -0
  230. package/dist/src/send-tools.d.ts +3 -2
  231. package/dist/src/send-tools.d.ts.map +1 -1
  232. package/dist/src/send-tools.js +3 -2
  233. package/dist/src/send-tools.js.map +1 -1
  234. package/dist/src/sent-rows.d.ts +59 -0
  235. package/dist/src/sent-rows.d.ts.map +1 -0
  236. package/dist/src/sent-rows.js +145 -0
  237. package/dist/src/sent-rows.js.map +1 -0
  238. package/dist/src/silent-heartbeat.d.ts +17 -10
  239. package/dist/src/silent-heartbeat.d.ts.map +1 -1
  240. package/dist/src/silent-heartbeat.js.map +1 -1
  241. package/dist/src/stable-hash.d.ts +3 -0
  242. package/dist/src/stable-hash.d.ts.map +1 -0
  243. package/dist/src/stable-hash.js +15 -0
  244. package/dist/src/stable-hash.js.map +1 -0
  245. package/dist/src/stored-injections.d.ts +99 -0
  246. package/dist/src/stored-injections.d.ts.map +1 -0
  247. package/dist/src/stored-injections.js +106 -0
  248. package/dist/src/stored-injections.js.map +1 -0
  249. package/dist/src/text-as-stored.d.ts +4 -3
  250. package/dist/src/text-as-stored.d.ts.map +1 -1
  251. package/dist/src/text-as-stored.js +4 -3
  252. package/dist/src/text-as-stored.js.map +1 -1
  253. package/dist/src/thinking-drops.d.ts +74 -0
  254. package/dist/src/thinking-drops.d.ts.map +1 -0
  255. package/dist/src/thinking-drops.js +96 -0
  256. package/dist/src/thinking-drops.js.map +1 -0
  257. package/dist/src/tool-args.d.ts +12 -0
  258. package/dist/src/tool-args.d.ts.map +1 -1
  259. package/dist/src/tool-args.js +35 -1
  260. package/dist/src/tool-args.js.map +1 -1
  261. package/dist/src/tool-image-ledger.d.ts +9 -8
  262. package/dist/src/tool-image-ledger.d.ts.map +1 -1
  263. package/dist/src/tool-image-ledger.js +9 -8
  264. package/dist/src/tool-image-ledger.js.map +1 -1
  265. package/dist/src/tool-presentation.d.ts.map +1 -1
  266. package/dist/src/tool-presentation.js +3 -1
  267. package/dist/src/tool-presentation.js.map +1 -1
  268. package/dist/src/tool-result-guard.d.ts +12 -6
  269. package/dist/src/tool-result-guard.d.ts.map +1 -1
  270. package/dist/src/tool-result-guard.js +44 -17
  271. package/dist/src/tool-result-guard.js.map +1 -1
  272. package/dist/src/tool-result-history.d.ts +176 -24
  273. package/dist/src/tool-result-history.d.ts.map +1 -1
  274. package/dist/src/tool-result-history.js +411 -91
  275. package/dist/src/tool-result-history.js.map +1 -1
  276. package/dist/src/tune-out/coordinator.d.ts +17 -9
  277. package/dist/src/tune-out/coordinator.d.ts.map +1 -1
  278. package/dist/src/tune-out/coordinator.js +84 -37
  279. package/dist/src/tune-out/coordinator.js.map +1 -1
  280. package/dist/src/tune-out/tools.d.ts +4 -1
  281. package/dist/src/tune-out/tools.d.ts.map +1 -1
  282. package/dist/src/types/agent.d.ts +217 -7
  283. package/dist/src/types/agent.d.ts.map +1 -1
  284. package/dist/src/types/events.d.ts +33 -9
  285. package/dist/src/types/events.d.ts.map +1 -1
  286. package/dist/src/types/framework.d.ts +39 -3
  287. package/dist/src/types/framework.d.ts.map +1 -1
  288. package/dist/src/types/module.d.ts +95 -9
  289. package/dist/src/types/module.d.ts.map +1 -1
  290. package/dist/src/types/trace.d.ts +91 -3
  291. package/dist/src/types/trace.d.ts.map +1 -1
  292. package/package.json +5 -4
  293. package/src/agent.ts +661 -67
  294. package/src/api/server.ts +5 -4
  295. package/src/auto-continue.ts +43 -0
  296. package/src/code-execution/isolate/scripts.ts +11 -3
  297. package/src/cut-off-round.ts +98 -0
  298. package/src/framework.ts +6168 -1540
  299. package/src/gate/event-gate.ts +2895 -405
  300. package/src/gate/index.ts +10 -1
  301. package/src/gate/recipe-reconcile.ts +355 -0
  302. package/src/gate/reply-judge.ts +512 -0
  303. package/src/gate/types.ts +234 -9
  304. package/src/heartbeat/heartbeat.ts +804 -0
  305. package/src/heartbeat/reminder-time.ts +107 -0
  306. package/src/index.ts +11 -4
  307. package/src/mcpl/capability-mask.ts +3 -2
  308. package/src/mcpl/channel-registry.ts +1222 -468
  309. package/src/mcpl/conversation-router.ts +34 -16
  310. package/src/mcpl/convert-block.ts +14 -1
  311. package/src/mcpl/hook-orchestrator.ts +33 -6
  312. package/src/mcpl/inbound-source.ts +42 -69
  313. package/src/mcpl/index.ts +6 -1
  314. package/src/mcpl/inference-router.ts +79 -34
  315. package/src/mcpl/prose-grammar.ts +7 -0
  316. package/src/mcpl/protocol-family.ts +2 -0
  317. package/src/mcpl/push-coalescer.ts +51 -13
  318. package/src/mcpl/reference-fetcher.ts +201 -162
  319. package/src/mcpl/references.ts +851 -77
  320. package/src/mcpl/server-connection.ts +189 -11
  321. package/src/mcpl/tags.ts +13 -2
  322. package/src/mcpl/tool-lifecycle.ts +21 -0
  323. package/src/mcpl/tool-presence.ts +716 -0
  324. package/src/mcpl/tool-result-normalize.ts +18 -6
  325. package/src/mcpl/tool-signature.ts +316 -0
  326. package/src/mcpl/toolset-host.ts +727 -0
  327. package/src/mcpl/toolsets-module.ts +545 -0
  328. package/src/mcpl/transport.ts +3 -2
  329. package/src/mcpl/types.ts +25 -2
  330. package/src/mcpl/visible-content.ts +22 -9
  331. package/src/module-registry.ts +85 -26
  332. package/src/modules/discord/index.ts +1 -1
  333. package/src/modules/history/index.ts +70 -30
  334. package/src/modules/history/semantic.ts +308 -54
  335. package/src/modules/workspace/answers.ts +133 -0
  336. package/src/modules/workspace/branch-intent.ts +10 -5
  337. package/src/modules/workspace/direct-write.ts +460 -0
  338. package/src/modules/workspace/disk-agreement.ts +52 -21
  339. package/src/modules/workspace/edit-text.ts +84 -35
  340. package/src/modules/workspace/effects.ts +22 -13
  341. package/src/modules/workspace/index.ts +2142 -723
  342. package/src/modules/workspace/observe.ts +381 -177
  343. package/src/modules/workspace/read-page.ts +228 -0
  344. package/src/modules/workspace/reconcile.ts +27 -15
  345. package/src/modules/workspace/result-text.ts +121 -0
  346. package/src/modules/workspace/sync.ts +16 -0
  347. package/src/modules/workspace/text.ts +58 -32
  348. package/src/modules/workspace/types.ts +137 -60
  349. package/src/modules/workspace/watcher.ts +8 -3
  350. package/src/prose-drafts.ts +4 -3
  351. package/src/reasoning-loss-notice.ts +62 -0
  352. package/src/reasoning-loss.ts +120 -0
  353. package/src/send-tools.ts +3 -2
  354. package/src/sent-rows.ts +162 -0
  355. package/src/silent-heartbeat.ts +17 -10
  356. package/src/stable-hash.ts +14 -0
  357. package/src/stored-injections.ts +131 -0
  358. package/src/text-as-stored.ts +4 -3
  359. package/src/thinking-drops.ts +135 -0
  360. package/src/tool-args.ts +34 -1
  361. package/src/tool-image-ledger.ts +9 -8
  362. package/src/tool-presentation.ts +3 -1
  363. package/src/tool-result-guard.ts +45 -17
  364. package/src/tool-result-history.ts +471 -90
  365. package/src/tune-out/coordinator.ts +80 -37
  366. package/src/tune-out/tools.ts +4 -1
  367. package/src/types/agent.ts +220 -7
  368. package/src/types/events.ts +33 -9
  369. package/src/types/framework.ts +36 -3
  370. package/src/types/module.ts +91 -9
  371. package/src/types/trace.ts +94 -3
@@ -0,0 +1,523 @@
1
+ import { unknownToolMessage } from '../modules/unknown-tool.js';
2
+ import { META_TOOL_NAMES, TOOLSETS_MODULE } from './toolset-host.js';
3
+ import { keyOf } from './tool-presence.js';
4
+ import { checkArgs, jsonText, renderToolDefinition } from './tool-signature.js';
5
+ import { McplRequestError } from './server-connection.js';
6
+ /** The namespace a reminder's stored injection carries. */
7
+ export const TOOLSETS_REMINDER_NAMESPACE = 'mcpl-toolsets';
8
+ const META_TOOLS = [
9
+ {
10
+ name: 'open',
11
+ description: 'Open a toolset of an MCPL server (a game, a building mode, a card table) so its tools can be called with toolsets--act. ' +
12
+ 'Returns what the server shows on opening and the tools available now. server may be left out when one server has the toolset, ' +
13
+ 'and toolset when the server has only one; instance names a separate copy where a toolset allows several (two games at once); ' +
14
+ 'options as toolsets--look lists them.',
15
+ inputSchema: {
16
+ type: 'object',
17
+ properties: {
18
+ server: { type: 'string', description: 'the MCPL server id' },
19
+ toolset: { type: 'string' },
20
+ instance: { type: 'string', description: 'a name for this copy (toolsets with instances only)' },
21
+ options: { type: 'object', description: 'toolset options, as toolsets--look shows them' },
22
+ },
23
+ },
24
+ },
25
+ {
26
+ name: 'act',
27
+ description: 'Call a tool that was announced in the conversation (a tool of an open toolset, or another dynamic tool); they are not in your tool list. ' +
28
+ 'args are the arguments its signature shows; instance picks the open copy when several are open; server is needed only when two servers have the tool. ' +
29
+ 'Returns the server\'s result, then any change it made in which tools are available, unless that change already went out as a notice. toolsets--look shows what is available now.',
30
+ inputSchema: {
31
+ type: 'object',
32
+ properties: {
33
+ server: { type: 'string', description: 'the MCPL server id (only needed when two servers have the tool)' },
34
+ tool: { type: 'string' },
35
+ instance: { type: 'string', description: 'which open copy (only needed when several are open)' },
36
+ args: { type: 'object' },
37
+ },
38
+ required: ['tool'],
39
+ },
40
+ },
41
+ {
42
+ name: 'look',
43
+ description: 'Show what is open and what can be opened on MCPL servers, with the tools usable now: announcements earlier in the conversation may be out of date. ' +
44
+ 'With tool: that tool\'s full description and input schema. With toolset or instance: just that one.',
45
+ inputSchema: {
46
+ type: 'object',
47
+ properties: {
48
+ server: { type: 'string' },
49
+ toolset: { type: 'string' },
50
+ instance: { type: 'string' },
51
+ tool: { type: 'string' },
52
+ },
53
+ },
54
+ },
55
+ {
56
+ name: 'close',
57
+ description: 'Close an open toolset or instance: its tools stop, and for a toolset the server declares, the server is told and stops its events too. Closing a game in progress may count as leaving it.',
58
+ inputSchema: {
59
+ type: 'object',
60
+ properties: {
61
+ server: { type: 'string', description: 'the MCPL server id (may be left out when one server has the toolset open)' },
62
+ toolset: { type: 'string', description: 'may be left out when only one thing is open on the server' },
63
+ instance: { type: 'string' },
64
+ },
65
+ },
66
+ },
67
+ ];
68
+ const str = (v) => (typeof v === 'string' && v.trim() ? v.trim() : undefined);
69
+ const SELECTORS = ['server', 'toolset', 'instance', 'tool'];
70
+ function checkSelectors(args) {
71
+ for (const key of SELECTORS) {
72
+ const v = args[key];
73
+ if (v === undefined || v === null || str(v) !== undefined)
74
+ continue;
75
+ const got = typeof v === 'string' ? 'a blank string' : Array.isArray(v) ? 'a list' : typeof v === 'object' ? 'an object' : `a ${typeof v}`;
76
+ fail(`${key} must be a name, or left out; got ${got}, so nothing was done`);
77
+ }
78
+ }
79
+ /** A failure whose outcome is unknown, with how to find it out. */
80
+ export function withLookHint(serverId, text) {
81
+ const said = text.trimEnd();
82
+ return `${said}${/[.!?]$/.test(said) ? '' : '.'} ${META_TOOL_NAMES.look} {server:"${serverId}"} asks it what's open, or says it couldn't.`;
83
+ }
84
+ function requestFailure(serverId, did, unconfirmed, error) {
85
+ const message = error instanceof Error ? error.message : String(error);
86
+ if (error instanceof McplRequestError && error.outcome === 'not-sent')
87
+ return fail(`${serverId} ${did}: ${message}`);
88
+ return fail(withLookHint(serverId, `${serverId} ${unconfirmed}: ${message}`));
89
+ }
90
+ const isObj = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
91
+ class MetaError extends Error {
92
+ }
93
+ const fail = (message) => {
94
+ throw new MetaError(message);
95
+ };
96
+ /** A text-only result. */
97
+ const textResult = (text) => ({ success: true, data: text });
98
+ /** Adjacent text blocks merged, so a result reads as one message. */
99
+ function mergeText(blocks) {
100
+ const out = [];
101
+ for (const b of blocks) {
102
+ if (b.type === 'text' && !b.text)
103
+ continue;
104
+ const prev = out[out.length - 1];
105
+ if (b.type === 'text' && prev?.type === 'text')
106
+ out[out.length - 1] = { type: 'text', text: `${prev.text}\n${b.text}` };
107
+ else
108
+ out.push(b);
109
+ }
110
+ return out;
111
+ }
112
+ /** Content blocks as a result: content when anything isn't text, else its text. */
113
+ function blocksResult(blocks, isError = false) {
114
+ const merged = mergeText(blocks);
115
+ if (isError) {
116
+ const text = merged.map((b) => (b.type === 'text' ? b.text ?? '' : `[${b.type}]`)).join('\n');
117
+ return { success: false, isError: true, error: text || 'the server answered with an error' };
118
+ }
119
+ if (merged.every((b) => b.type === 'text'))
120
+ return textResult(merged.map((b) => b.text ?? '').join('\n'));
121
+ return { success: true, data: merged, dataIsContent: true };
122
+ }
123
+ const asBlocks = (content) => content.filter((b) => isObj(b) && typeof b.type === 'string');
124
+ // ── choosing the server ──
125
+ function pick(hub, server) {
126
+ const id = str(server);
127
+ const ids = hub.presenting().map((c) => c.serverId);
128
+ if (!id) {
129
+ if (ids.length === 1)
130
+ return hub.get(ids[0]);
131
+ return fail(ids.length ? `name a server: ${ids.join(', ')}` : NONE_PRESENTS);
132
+ }
133
+ const c = hub.get(id);
134
+ if (!c)
135
+ return fail(`no server "${id}" presents toolsets; the ones that do: ${ids.join(', ') || 'none'}`);
136
+ if (!c.presence.active)
137
+ return fail(`${id} sends no tool hints now: its tools are called directly, by name, not through ${META_TOOL_NAMES.act}`);
138
+ return c;
139
+ }
140
+ /**
141
+ * RFC §8.2: `server` may be left out; the name decides, when exactly one
142
+ * presenting server has it. Two or more: name the server.
143
+ */
144
+ function owner(hub, server, has, what) {
145
+ if (str(server))
146
+ return pick(hub, server);
147
+ const owners = hub.presenting().filter(has);
148
+ if (owners.length === 1)
149
+ return owners[0];
150
+ if (owners.length)
151
+ return fail(`${what} is on several servers (${owners.map((c) => c.serverId).join(', ')}): add server`);
152
+ return fail(hub.presenting().length ? `no server that presents toolsets has ${what}: ${META_TOOL_NAMES.look} shows what they have` : NONE_PRESENTS);
153
+ }
154
+ const NONE_PRESENTS = 'no MCPL server presents toolsets now: MCPL tools are called directly, by name';
155
+ function noToolset(c, toolset) {
156
+ const names = [...Object.keys(c.presence.declared), ...c.presence.undeclaredGroups];
157
+ return `${c.serverId} has no toolset "${toolset}"; ${names.length ? `it has ${names.join(', ')}` : 'it has none'}`;
158
+ }
159
+ /**
160
+ * Resolve a `toolsets--act` call (RFC §8.2) to the dynamic tool it calls,
161
+ * or the reason it can't be sent. The framework then dispatches it exactly as
162
+ * a direct call of that tool, with `_meta["mcpl/instance"]` added (RFC §5.5).
163
+ * Refused here, before anything is sent: a tool no presenting server has, a
164
+ * tool neither the published list nor the server's latest tools/list puts as dynamic (RFC §4.2), an instance that isn't named where
165
+ * several are open, a group the host has closed (RFC §5.4), and arguments
166
+ * that don't fit the definition in force for that instance (RFC §6.1).
167
+ */
168
+ const hasInstances = (p, ts) => ts !== undefined && p.isDeclared(ts) && !!p.declared[ts].instances;
169
+ /** The key whose definition act checks a call of `tool` against (RFC §6.1): an instance's own, else the toolset's, else the listed one. */
170
+ function actKey(p, tool, instance) {
171
+ const ts = p.toolsetOf(tool);
172
+ return ts ? keyOf(ts, hasInstances(p, ts) ? instance : undefined) : keyOf('');
173
+ }
174
+ export function resolveAct(hub, input) {
175
+ try {
176
+ const args = isObj(input) ? input : {};
177
+ checkSelectors(args);
178
+ const tool = str(args.tool) ?? fail('name the tool');
179
+ const c = owner(hub, args.server, (x) => !!x.presence.tool(tool), `a tool "${tool}"`);
180
+ const p = c.presence;
181
+ if (!p.tool(tool))
182
+ fail(`${c.serverId} has no tool "${tool}": ${META_TOOL_NAMES.look} {server:"${c.serverId}"} shows what's available`);
183
+ if (!p.shownAs(tool, 'dynamic'))
184
+ fail(`${tool} is not a dynamic tool: ${p.toolStatus(tool)}. Call it there.`);
185
+ if (args.args !== undefined && !isObj(args.args))
186
+ fail('args must be an object of the tool\'s arguments');
187
+ const callArgs = (args.args ?? {});
188
+ let instance = str(args.instance);
189
+ const ts = p.toolsetOf(tool);
190
+ const declared = ts !== undefined && p.isDeclared(ts);
191
+ const withInstances = hasInstances(p, ts);
192
+ if (withInstances && !instance) {
193
+ // RFC §5.5: the instance rides in _meta; with exactly one open, it's that one.
194
+ const open = p.openRecords(ts);
195
+ if (open.length === 1)
196
+ instance = open[0].instance;
197
+ else if (!open.length)
198
+ fail(`${tool} belongs to ${ts}, which isn't open: ${p.openHint(ts)}`);
199
+ else
200
+ fail(`several ${ts} instances are open (${open.map((o) => o.instance).join(', ')}): say which with instance`);
201
+ }
202
+ if (instance && !withInstances)
203
+ fail(`${tool} ${ts ? `belongs to ${ts}, which has no instances` : 'belongs to no toolset'}: call it without instance`);
204
+ // RFC §5.4: the host gates calls into an undeclared group it has closed.
205
+ if (ts && !declared && !p.isOpen(ts))
206
+ fail(`${tool} is in ${ts}, which isn't open: ${p.openHint(ts)}`);
207
+ // RFC §6.1: arguments are checked against the definition in force for
208
+ // that instance: its own from hints (the legal moves of one game), else
209
+ // the toolset's, else the listed one.
210
+ const key = actKey(p, tool, instance);
211
+ const problem = checkArgs(p.defOf(key, tool).inputSchema, callArgs);
212
+ if (problem) {
213
+ fail(`Invalid arguments for ${tool} in ${p.label(key)}: ${problem}. Nothing was sent; ` +
214
+ `${META_TOOL_NAMES.look} {server:"${c.serverId}", tool:"${tool}"${instance ? `, instance:"${instance}"` : ''}} shows its current definition.`);
215
+ }
216
+ return { ok: true, serverId: c.serverId, tool, ...(instance ? { instance } : {}), args: callArgs };
217
+ }
218
+ catch (error) {
219
+ if (error instanceof MetaError)
220
+ return { ok: false, error: error.message };
221
+ throw error;
222
+ }
223
+ }
224
+ export class ToolsetsModule {
225
+ hub;
226
+ takerFor;
227
+ name = TOOLSETS_MODULE;
228
+ /** `takerFor`: who shows a call's result to an agent, taking the tool
229
+ * change rendered into it; null when the result may reach none, and its
230
+ * change is left to a notice (RFC-014 §6.1: told once). */
231
+ constructor(hub, takerFor) {
232
+ this.hub = hub;
233
+ this.takerFor = takerFor;
234
+ }
235
+ async start(_ctx) { }
236
+ async stop() { }
237
+ getTools() {
238
+ return META_TOOLS;
239
+ }
240
+ async onProcess(_event, _state) {
241
+ return {};
242
+ }
243
+ /** RFC §8.3: the reminder due for this agent, stored where compile() would place it. */
244
+ async gatherContext(agentName) {
245
+ const reminder = this.hub.reminderFor(agentName);
246
+ if (!reminder)
247
+ return [];
248
+ return [{ namespace: TOOLSETS_REMINDER_NAMESPACE, position: 'afterUser', content: [{ type: 'text', text: reminder }] }];
249
+ }
250
+ async handleToolCall(call) {
251
+ const args = isObj(call.input) ? call.input : {};
252
+ try {
253
+ checkSelectors(args);
254
+ const take = this.takerFor(call);
255
+ switch (call.name) {
256
+ case 'open': return await this.open(args, take);
257
+ case 'act': return this.act(args);
258
+ case 'look': return await this.look(args, take);
259
+ case 'close': return await this.close(args, take);
260
+ default: return { success: false, isError: true, error: unknownToolMessage(this.name, call.name, META_TOOLS) };
261
+ }
262
+ }
263
+ catch (error) {
264
+ const message = error instanceof MetaError
265
+ ? error.message
266
+ : `${META_TOOL_NAMES[call.name] ?? call.name}: ${error instanceof Error ? error.message : String(error)}`;
267
+ return { success: false, isError: true, error: message };
268
+ }
269
+ }
270
+ toolsAt(c, key) {
271
+ return [...(c.presence.view().get(key)?.tools.values() ?? [])];
272
+ }
273
+ /** A change set rendered without the key the caller already showed whole. */
274
+ renderOthers(c, cs, key, shown) {
275
+ return c.presence.render({ ...cs, changes: cs.changes.filter((ch) => ch.key !== key) }, { mark: shown, describeAll: !shown });
276
+ }
277
+ // ── the tools ──
278
+ async open(args, take) {
279
+ const shown = take !== null;
280
+ let toolset = str(args.toolset);
281
+ const c = toolset && !str(args.server)
282
+ ? owner(this.hub, undefined, (x) => x.presence.isDeclared(toolset) || x.presence.undeclaredGroups.includes(toolset), `a toolset "${toolset}"`)
283
+ : pick(this.hub, args.server);
284
+ const p = c.presence;
285
+ const openable = [...Object.keys(p.declared), ...p.undeclaredGroups];
286
+ if (!toolset) {
287
+ if (openable.length !== 1)
288
+ fail(`${c.serverId} has ${openable.length ? `several toolsets: name one of ${openable.join(', ')}` : 'no toolsets'}`);
289
+ toolset = openable[0];
290
+ }
291
+ const instance = str(args.instance);
292
+ if (args.options !== undefined && !isObj(args.options))
293
+ fail('options must be an object');
294
+ const options = args.options;
295
+ if (p.isDeclared(toolset)) {
296
+ if (instance && !p.declared[toolset].instances)
297
+ fail(`${c.serverId}/${toolset} has no instances: open it without one`);
298
+ let opened;
299
+ try {
300
+ opened = await c.open(toolset, instance, options, { shown });
301
+ }
302
+ catch (error) {
303
+ return requestFailure(c.serverId, `did not open ${toolset}`, `didn't confirm opening ${toolset}`, error);
304
+ }
305
+ // RFC §5.2: opening what is open adopts it; its content says which options weren't applied.
306
+ const blocks = [
307
+ { type: 'text', text: `${p.label(opened.key)}${opened.title ? ` ${opened.title}` : ''}${opened.adopted ? ' (already open)' : ''}` },
308
+ ...asBlocks(opened.content),
309
+ ];
310
+ const tail = [...p.toolBlock(opened.key, this.toolsAt(c, opened.key), { headed: false, describeAll: !shown, seen: shown ? undefined : new Set() })];
311
+ const gone = opened.change.changes.find((ch) => ch.key === opened.key)?.gone ?? [];
312
+ if (gone.length)
313
+ tail.push(`now unavailable: ${gone.join(', ')}`);
314
+ const others = this.renderOthers(c, opened.change, opened.key, shown);
315
+ if (others)
316
+ tail.push(others);
317
+ const close = p.closeHint(opened.key);
318
+ if (close)
319
+ tail.push(`${close} closes it.`);
320
+ blocks.push({ type: 'text', text: tail.join('\n') });
321
+ take?.({ toolsets: c, cs: opened.change });
322
+ return blocksResult(blocks);
323
+ }
324
+ if (p.undeclaredGroups.includes(toolset)) {
325
+ // RFC §5.4: a grouping the server offers but doesn't track: the host opens it, the server isn't told.
326
+ if (instance || options)
327
+ fail(`${c.serverId}/${toolset} takes no instance or options (the server doesn't declare it)`);
328
+ const cs = c.setGroupOpen(toolset, true);
329
+ const key = keyOf(toolset);
330
+ const lines = [`${p.label(key)} open.`, ...p.toolBlock(key, this.toolsAt(c, key), { headed: false, describeAll: !shown, seen: shown ? undefined : new Set() })];
331
+ const others = this.renderOthers(c, cs, key, shown);
332
+ if (others)
333
+ lines.push(others);
334
+ lines.push(`${p.closeHint(key)} closes it.`);
335
+ if (take)
336
+ take({ toolsets: c, cs });
337
+ else
338
+ c.tell(cs);
339
+ return textResult(lines.join('\n'));
340
+ }
341
+ return fail(noToolset(c, toolset));
342
+ }
343
+ /**
344
+ * act is dispatched by the framework, not here: it resolves the call
345
+ * (resolveAct) and sends it down the same path as a direct call of the
346
+ * server's tool, so state, results, refusals and lifecycle are the same.
347
+ * A caller that reaches the module itself gets the resolution's refusal,
348
+ * or this.
349
+ */
350
+ act(args) {
351
+ const target = resolveAct(this.hub, args);
352
+ if (!target.ok)
353
+ return { success: false, isError: true, error: target.error };
354
+ return { success: false, isError: true, error: `${META_TOOL_NAMES.act} is dispatched by the framework; nothing was sent` };
355
+ }
356
+ /** look restates the present: titles and visibility are re-read from the servers first (toolsets/list). */
357
+ async look(args, take) {
358
+ const server = str(args.server);
359
+ const targets = server ? [this.hub.get(server)].filter((c) => !!c && c.presents) : this.hub.presenting();
360
+ const shown = take !== null;
361
+ const reads = await Promise.all(targets.map(async (c) => ({ c, cs: await c.refreshOpen({ shown }).catch(() => null) })));
362
+ const read = reads.filter((r) => r.cs !== null);
363
+ const unread = reads.filter((r) => r.cs === null).map(({ c }) => `${c.serverId} couldn't be asked just now: this is what the host last knew of it.`);
364
+ const giveBack = () => {
365
+ if (shown)
366
+ for (const { c, cs } of read)
367
+ c.tell(cs);
368
+ };
369
+ let result;
370
+ try {
371
+ result = this.lookNow(args, server, str(args.tool), shown);
372
+ }
373
+ catch (error) {
374
+ giveBack();
375
+ if (error instanceof MetaError && unread.length)
376
+ fail([error.message, ...unread].join('\n'));
377
+ throw error;
378
+ }
379
+ if (result.isError || typeof result.data !== 'string') {
380
+ giveBack();
381
+ return result;
382
+ }
383
+ const restates = !str(args.tool) && !str(args.toolset) && !str(args.instance);
384
+ if (!restates)
385
+ giveBack();
386
+ const lines = restates
387
+ ? read.flatMap(({ c, cs }) => {
388
+ const said = [...cs.suggest.map((s) => c.presence.renderSuggestion(s)), ...c.presence.untoldNotes(cs), ...cs.notes];
389
+ // The catalog above counted what it showed; the change's own blocks weren't shown, but stay for a notice if its taker can't show the result.
390
+ take?.({ toolsets: c, cs: { ...cs, blocksShown: false } });
391
+ return said;
392
+ })
393
+ : [];
394
+ lines.push(...unread);
395
+ return lines.length ? textResult(`${result.data}\n${lines.join('\n')}`) : result;
396
+ }
397
+ lookNow(args, server, tool, mark) {
398
+ if (!server) {
399
+ if (tool)
400
+ return this.lookTool(owner(this.hub, undefined, (c) => !!c.presence.tool(tool), `a tool "${tool}"`), tool, str(args.instance));
401
+ const ts = str(args.toolset);
402
+ const inst = str(args.instance);
403
+ if (ts || inst) {
404
+ const c = owner(this.hub, undefined, (x) => (ts ? x.presence.isDeclared(ts) || x.presence.undeclaredGroups.includes(ts) : true) && (!inst || x.presence.openRecords().some((o) => o.instance === inst)), ts ? `a toolset "${ts}"${inst ? ` with instance "${inst}"` : ''}` : `an open instance "${inst}"`);
405
+ return this.lookNow(args, c.serverId, tool, mark);
406
+ }
407
+ const all = this.hub.presenting();
408
+ if (!all.length)
409
+ return textResult('No MCPL server presents toolsets or dynamic tools now; MCPL tools are called directly, by name.');
410
+ return textResult(all.map((c) => c.presence.catalog({ mark })).join('\n\n'));
411
+ }
412
+ const c = pick(this.hub, server);
413
+ if (tool)
414
+ return this.lookTool(c, tool, str(args.instance));
415
+ const p = c.presence;
416
+ let toolset = str(args.toolset);
417
+ const instance = str(args.instance);
418
+ if (!toolset && instance) {
419
+ const open = p.openRecords().filter((o) => o.instance !== undefined);
420
+ toolset = open.find((o) => o.instance === instance)?.toolset
421
+ ?? fail(`no open instance "${instance}" on ${c.serverId}; ${open.length ? `open: ${open.map((o) => `${o.toolset}:${o.instance}`).join(', ')}` : 'no instance is open there'}`);
422
+ }
423
+ if (!toolset)
424
+ return textResult(p.catalog({ mark }));
425
+ if (p.isOpen(toolset, instance) || (!instance && p.openRecords(toolset).length === 1)) {
426
+ const rec = p.isDeclared(toolset) ? (instance ? p.openRecords(toolset).find((o) => o.instance === instance) : p.openRecords(toolset)[0]) : undefined;
427
+ const key = keyOf(toolset, rec?.instance);
428
+ const lines = p.toolBlock(key, this.toolsAt(c, key), { describeAll: true, title: rec?.title, seen: mark ? undefined : new Set() });
429
+ const close = p.closeHint(key);
430
+ if (close)
431
+ lines.push(`${close} closes it.`);
432
+ return textResult(lines.join('\n'));
433
+ }
434
+ const d = p.declared[toolset];
435
+ if (d) {
436
+ const open = p.openRecords(toolset);
437
+ return textResult([
438
+ `${c.serverId}/${toolset}${d.title ? ` — ${d.title}` : ''}${d.summary ? `: ${d.summary}` : ''}`,
439
+ open.length ? `open: ${open.map((o) => o.instance ?? toolset).join(', ')}` : 'not open',
440
+ ...(d.instances ? ['several can be open at once; name each with instance'] : []),
441
+ ...(d.options ? [`options: ${jsonText(d.options)}`] : []),
442
+ `${p.openHint(toolset)} opens it.`,
443
+ ].join('\n'));
444
+ }
445
+ if (p.undeclaredGroups.includes(toolset)) {
446
+ const names = p.allTools.filter((t) => p.toolsetOf(t.name) === toolset).map((t) => t.name);
447
+ return textResult(`${c.serverId}/${toolset}: ${names.join(', ')}; not open: ${p.openHint(toolset)} opens it.`);
448
+ }
449
+ return fail(noToolset(c, toolset));
450
+ }
451
+ lookTool(c, tool, instance) {
452
+ const p = c.presence;
453
+ if (!p.tool(tool))
454
+ fail(`${c.serverId} has no tool "${tool}": ${META_TOOL_NAMES.look} {server:"${c.serverId}"} shows what's available`);
455
+ const ts = p.toolsetOf(tool);
456
+ // The definition act would check, wherever act would take the tool.
457
+ const open = !instance && hasInstances(p, ts) ? p.openRecords(ts) : [];
458
+ const key = !p.shownAs(tool, 'dynamic') ? undefined : actKey(p, tool, instance ?? (open.length === 1 ? open[0].instance : undefined));
459
+ const def = key ? p.defOf(key, tool) : p.tool(tool);
460
+ return textResult(`${renderToolDefinition(def)}\n${p.toolStatus(tool)}`);
461
+ }
462
+ async close(args, take) {
463
+ const shown = take !== null;
464
+ const named = str(args.toolset);
465
+ const c = named && !str(args.server)
466
+ ? owner(this.hub, undefined, (x) => x.presence.isOpen(named, str(args.instance)) || x.presence.openRecords(named).length > 0, `an open toolset "${named}"`)
467
+ : pick(this.hub, args.server);
468
+ const p = c.presence;
469
+ let toolset = named;
470
+ let instance = str(args.instance);
471
+ if (!toolset) {
472
+ const open = [
473
+ ...p.openRecords().filter((o) => !instance || o.instance === instance),
474
+ ...(instance ? [] : p.openGroups.map((g) => ({ toolset: g, instance: undefined }))),
475
+ ];
476
+ if (open.length !== 1) {
477
+ fail(open.length
478
+ ? `several are open on ${c.serverId}: name one of ${open.map((o) => `${o.toolset}${o.instance ? `:${o.instance}` : ''}`).join(', ')}`
479
+ : `nothing is open on ${c.serverId}`);
480
+ }
481
+ toolset = open[0].toolset;
482
+ instance = open[0].instance;
483
+ }
484
+ if (p.isDeclared(toolset)) {
485
+ // As open refuses one: a toolset without instances is closed without one.
486
+ if (instance && !p.declared[toolset].instances)
487
+ fail(`${c.serverId}/${toolset} has no instances: close it without one`);
488
+ if (p.declared[toolset].instances && !instance) {
489
+ const open = p.openRecords(toolset);
490
+ if (open.length !== 1)
491
+ fail(open.length ? `several ${toolset} instances are open (${open.map((o) => o.instance).join(', ')}): say which` : `${toolset} is not open`);
492
+ instance = open[0].instance;
493
+ }
494
+ let closed;
495
+ try {
496
+ closed = await c.close(toolset, instance, { shown });
497
+ }
498
+ catch (error) {
499
+ const what = `${toolset}${instance ? `:${instance}` : ''}`;
500
+ return requestFailure(c.serverId, `did not close ${what}`, `didn't confirm closing ${what}`, error);
501
+ }
502
+ const key = keyOf(toolset, instance);
503
+ const change = p.render(closed.change, { mark: shown, describeAll: !shown }) || `${p.label(key)} closed.`;
504
+ take?.({ toolsets: c, cs: closed.change });
505
+ return blocksResult([...asBlocks(closed.content), { type: 'text', text: change }]);
506
+ }
507
+ if (p.undeclaredGroups.includes(toolset)) {
508
+ if (instance)
509
+ fail(`${c.serverId}/${toolset} takes no instance (the server doesn't declare it)`);
510
+ if (!p.isOpen(toolset))
511
+ fail(`${c.serverId}/${toolset} is not open`);
512
+ const cs = c.setGroupOpen(toolset, false);
513
+ const text = p.render(cs, { mark: shown, describeAll: !shown }) || `${p.label(keyOf(toolset))} closed.`;
514
+ if (take)
515
+ take({ toolsets: c, cs });
516
+ else
517
+ c.tell(cs);
518
+ return textResult(text);
519
+ }
520
+ return fail(noToolset(c, toolset));
521
+ }
522
+ }
523
+ //# sourceMappingURL=toolsets-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolsets-module.js","sourceRoot":"","sources":["../../../src/mcpl/toolsets-module.ts"],"names":[],"mappings":"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"}
@@ -248,8 +248,8 @@ export declare function buildWebSocketUrl(config: McplServerConfig, tokenOverrid
248
248
  * for a configuration it refuses. */
249
249
  export declare function isWebSocketTransport(config: McplServerConfig): boolean;
250
250
  /**
251
- * Refuse a server config whose `inheritEnv`, `reconnect` or `allowHostCommands`
252
- * holds anything but true or false. A config read from JSON can carry a quoted
251
+ * Refuse a server config whose `inheritEnv`, `reconnect`, `allowHostCommands`
252
+ * or `toolHints` holds anything but true or false. A config read from JSON can carry a quoted
253
253
  * "false" where the type says boolean, and every reader of these settings takes
254
254
  * only `true` as on, so the quotes would hide what the value does. null counts
255
255
  * as not set, so a generated config that writes an unset setting as null
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/mcpl/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/mcpl/transport.ts"],"names":[],"mappings":"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"}
@@ -788,10 +788,11 @@ const SERVER_CONFIG_BOOLEANS = {
788
788
  inheritEnv: 'true passes the server the host\'s whole environment, and false or leaving it out passes only the allowlisted and LC_* host variables',
789
789
  reconnect: 'true retries in the background when the server can\'t be reached or its connection drops, and false or leaving it out doesn\'t',
790
790
  allowHostCommands: 'true lets the server run the host\'s admin commands, such as undo, hide, unstick and quiesce, and false or leaving it out refuses them',
791
+ toolHints: 'true advertises MCPL tool hints (RFC-014), so the server\'s dynamic tools are announced in the conversation and called through toolsets--act, and false or leaving it out lists every tool as before',
791
792
  };
792
793
  /**
793
- * Refuse a server config whose `inheritEnv`, `reconnect` or `allowHostCommands`
794
- * holds anything but true or false. A config read from JSON can carry a quoted
794
+ * Refuse a server config whose `inheritEnv`, `reconnect`, `allowHostCommands`
795
+ * or `toolHints` holds anything but true or false. A config read from JSON can carry a quoted
795
796
  * "false" where the type says boolean, and every reader of these settings takes
796
797
  * only `true` as on, so the quotes would hide what the value does. null counts
797
798
  * as not set, so a generated config that writes an unset setting as null