@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.
- package/README.md +99 -8
- package/dist/src/agent.d.ts +291 -23
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +596 -61
- package/dist/src/agent.js.map +1 -1
- package/dist/src/api/server.d.ts.map +1 -1
- package/dist/src/api/server.js +5 -4
- package/dist/src/api/server.js.map +1 -1
- package/dist/src/auto-continue.d.ts +34 -0
- package/dist/src/auto-continue.d.ts.map +1 -0
- package/dist/src/auto-continue.js +36 -0
- package/dist/src/auto-continue.js.map +1 -0
- package/dist/src/code-execution/isolate/scripts.d.ts +11 -0
- package/dist/src/code-execution/isolate/scripts.d.ts.map +1 -1
- package/dist/src/code-execution/isolate/scripts.js +5 -1
- package/dist/src/code-execution/isolate/scripts.js.map +1 -1
- package/dist/src/cut-off-round.d.ts +24 -0
- package/dist/src/cut-off-round.d.ts.map +1 -0
- package/dist/src/cut-off-round.js +87 -0
- package/dist/src/cut-off-round.js.map +1 -0
- package/dist/src/framework.d.ts +1038 -193
- package/dist/src/framework.d.ts.map +1 -1
- package/dist/src/framework.js +5967 -1514
- package/dist/src/framework.js.map +1 -1
- package/dist/src/gate/event-gate.d.ts +405 -46
- package/dist/src/gate/event-gate.d.ts.map +1 -1
- package/dist/src/gate/event-gate.js +2646 -399
- package/dist/src/gate/event-gate.js.map +1 -1
- package/dist/src/gate/index.d.ts +3 -2
- package/dist/src/gate/index.d.ts.map +1 -1
- package/dist/src/gate/index.js +2 -1
- package/dist/src/gate/index.js.map +1 -1
- package/dist/src/gate/recipe-reconcile.d.ts +103 -0
- package/dist/src/gate/recipe-reconcile.d.ts.map +1 -0
- package/dist/src/gate/recipe-reconcile.js +325 -0
- package/dist/src/gate/recipe-reconcile.js.map +1 -0
- package/dist/src/gate/reply-judge.d.ts +116 -0
- package/dist/src/gate/reply-judge.d.ts.map +1 -0
- package/dist/src/gate/reply-judge.js +467 -0
- package/dist/src/gate/reply-judge.js.map +1 -0
- package/dist/src/gate/types.d.ts +229 -8
- package/dist/src/gate/types.d.ts.map +1 -1
- package/dist/src/heartbeat/heartbeat.d.ts +184 -0
- package/dist/src/heartbeat/heartbeat.d.ts.map +1 -0
- package/dist/src/heartbeat/heartbeat.js +752 -0
- package/dist/src/heartbeat/heartbeat.js.map +1 -0
- package/dist/src/heartbeat/reminder-time.d.ts +5 -0
- package/dist/src/heartbeat/reminder-time.d.ts.map +1 -0
- package/dist/src/heartbeat/reminder-time.js +107 -0
- package/dist/src/heartbeat/reminder-time.js.map +1 -0
- package/dist/src/index.d.ts +10 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcpl/capability-mask.d.ts.map +1 -1
- package/dist/src/mcpl/capability-mask.js +3 -2
- package/dist/src/mcpl/capability-mask.js.map +1 -1
- package/dist/src/mcpl/channel-registry.d.ts +433 -113
- package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
- package/dist/src/mcpl/channel-registry.js +1154 -435
- package/dist/src/mcpl/channel-registry.js.map +1 -1
- package/dist/src/mcpl/conversation-router.d.ts +16 -8
- package/dist/src/mcpl/conversation-router.d.ts.map +1 -1
- package/dist/src/mcpl/conversation-router.js +29 -15
- package/dist/src/mcpl/conversation-router.js.map +1 -1
- package/dist/src/mcpl/convert-block.d.ts.map +1 -1
- package/dist/src/mcpl/convert-block.js +14 -2
- package/dist/src/mcpl/convert-block.js.map +1 -1
- package/dist/src/mcpl/hook-orchestrator.d.ts +7 -1
- package/dist/src/mcpl/hook-orchestrator.d.ts.map +1 -1
- package/dist/src/mcpl/hook-orchestrator.js +32 -7
- package/dist/src/mcpl/hook-orchestrator.js.map +1 -1
- package/dist/src/mcpl/inbound-source.d.ts +26 -10
- package/dist/src/mcpl/inbound-source.d.ts.map +1 -1
- package/dist/src/mcpl/inbound-source.js +40 -69
- package/dist/src/mcpl/inbound-source.js.map +1 -1
- package/dist/src/mcpl/index.d.ts +5 -1
- package/dist/src/mcpl/index.d.ts.map +1 -1
- package/dist/src/mcpl/index.js +4 -0
- package/dist/src/mcpl/index.js.map +1 -1
- package/dist/src/mcpl/inference-router.d.ts +14 -2
- package/dist/src/mcpl/inference-router.d.ts.map +1 -1
- package/dist/src/mcpl/inference-router.js +73 -28
- package/dist/src/mcpl/inference-router.js.map +1 -1
- package/dist/src/mcpl/prose-grammar.d.ts +4 -0
- package/dist/src/mcpl/prose-grammar.d.ts.map +1 -1
- package/dist/src/mcpl/prose-grammar.js +6 -0
- package/dist/src/mcpl/prose-grammar.js.map +1 -1
- package/dist/src/mcpl/protocol-family.d.ts.map +1 -1
- package/dist/src/mcpl/protocol-family.js +3 -0
- package/dist/src/mcpl/protocol-family.js.map +1 -1
- package/dist/src/mcpl/push-coalescer.d.ts +20 -2
- package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
- package/dist/src/mcpl/push-coalescer.js +33 -11
- package/dist/src/mcpl/push-coalescer.js.map +1 -1
- package/dist/src/mcpl/reference-fetcher.d.ts +63 -42
- package/dist/src/mcpl/reference-fetcher.d.ts.map +1 -1
- package/dist/src/mcpl/reference-fetcher.js +177 -145
- package/dist/src/mcpl/reference-fetcher.js.map +1 -1
- package/dist/src/mcpl/references.d.ts +380 -46
- package/dist/src/mcpl/references.d.ts.map +1 -1
- package/dist/src/mcpl/references.js +736 -77
- package/dist/src/mcpl/references.js.map +1 -1
- package/dist/src/mcpl/server-connection.d.ts +93 -4
- package/dist/src/mcpl/server-connection.d.ts.map +1 -1
- package/dist/src/mcpl/server-connection.js +176 -11
- package/dist/src/mcpl/server-connection.js.map +1 -1
- package/dist/src/mcpl/tags.d.ts +9 -2
- package/dist/src/mcpl/tags.d.ts.map +1 -1
- package/dist/src/mcpl/tags.js +12 -2
- package/dist/src/mcpl/tags.js.map +1 -1
- package/dist/src/mcpl/tool-lifecycle.d.ts +11 -0
- package/dist/src/mcpl/tool-lifecycle.d.ts.map +1 -1
- package/dist/src/mcpl/tool-lifecycle.js +21 -0
- package/dist/src/mcpl/tool-lifecycle.js.map +1 -1
- package/dist/src/mcpl/tool-presence.d.ts +311 -0
- package/dist/src/mcpl/tool-presence.d.ts.map +1 -0
- package/dist/src/mcpl/tool-presence.js +697 -0
- package/dist/src/mcpl/tool-presence.js.map +1 -0
- package/dist/src/mcpl/tool-result-normalize.d.ts +9 -3
- package/dist/src/mcpl/tool-result-normalize.d.ts.map +1 -1
- package/dist/src/mcpl/tool-result-normalize.js +14 -6
- package/dist/src/mcpl/tool-result-normalize.js.map +1 -1
- package/dist/src/mcpl/tool-signature.d.ts +46 -0
- package/dist/src/mcpl/tool-signature.d.ts.map +1 -0
- package/dist/src/mcpl/tool-signature.js +321 -0
- package/dist/src/mcpl/tool-signature.js.map +1 -0
- package/dist/src/mcpl/toolset-host.d.ts +251 -0
- package/dist/src/mcpl/toolset-host.d.ts.map +1 -0
- package/dist/src/mcpl/toolset-host.js +720 -0
- package/dist/src/mcpl/toolset-host.js.map +1 -0
- package/dist/src/mcpl/toolsets-module.d.ts +83 -0
- package/dist/src/mcpl/toolsets-module.d.ts.map +1 -0
- package/dist/src/mcpl/toolsets-module.js +523 -0
- package/dist/src/mcpl/toolsets-module.js.map +1 -0
- package/dist/src/mcpl/transport.d.ts +2 -2
- package/dist/src/mcpl/transport.d.ts.map +1 -1
- package/dist/src/mcpl/transport.js +3 -2
- package/dist/src/mcpl/transport.js.map +1 -1
- package/dist/src/mcpl/types.d.ts +24 -2
- package/dist/src/mcpl/types.d.ts.map +1 -1
- package/dist/src/mcpl/types.js.map +1 -1
- package/dist/src/mcpl/visible-content.d.ts +7 -9
- package/dist/src/mcpl/visible-content.d.ts.map +1 -1
- package/dist/src/mcpl/visible-content.js +21 -9
- package/dist/src/mcpl/visible-content.js.map +1 -1
- package/dist/src/module-registry.d.ts +27 -9
- package/dist/src/module-registry.d.ts.map +1 -1
- package/dist/src/module-registry.js +77 -17
- package/dist/src/module-registry.js.map +1 -1
- package/dist/src/modules/discord/index.js +1 -1
- package/dist/src/modules/discord/index.js.map +1 -1
- package/dist/src/modules/history/index.d.ts +2 -1
- package/dist/src/modules/history/index.d.ts.map +1 -1
- package/dist/src/modules/history/index.js +73 -28
- package/dist/src/modules/history/index.js.map +1 -1
- package/dist/src/modules/history/semantic.d.ts +108 -6
- package/dist/src/modules/history/semantic.d.ts.map +1 -1
- package/dist/src/modules/history/semantic.js +273 -57
- package/dist/src/modules/history/semantic.js.map +1 -1
- package/dist/src/modules/workspace/answers.d.ts +22 -0
- package/dist/src/modules/workspace/answers.d.ts.map +1 -0
- package/dist/src/modules/workspace/answers.js +123 -0
- package/dist/src/modules/workspace/answers.js.map +1 -0
- package/dist/src/modules/workspace/branch-intent.d.ts +5 -3
- package/dist/src/modules/workspace/branch-intent.d.ts.map +1 -1
- package/dist/src/modules/workspace/branch-intent.js +6 -2
- package/dist/src/modules/workspace/branch-intent.js.map +1 -1
- package/dist/src/modules/workspace/direct-write.d.ts +184 -0
- package/dist/src/modules/workspace/direct-write.d.ts.map +1 -0
- package/dist/src/modules/workspace/direct-write.js +417 -0
- package/dist/src/modules/workspace/direct-write.js.map +1 -0
- package/dist/src/modules/workspace/disk-agreement.d.ts +33 -11
- package/dist/src/modules/workspace/disk-agreement.d.ts.map +1 -1
- package/dist/src/modules/workspace/disk-agreement.js +48 -17
- package/dist/src/modules/workspace/disk-agreement.js.map +1 -1
- package/dist/src/modules/workspace/edit-text.d.ts +27 -12
- package/dist/src/modules/workspace/edit-text.d.ts.map +1 -1
- package/dist/src/modules/workspace/edit-text.js +61 -29
- package/dist/src/modules/workspace/edit-text.js.map +1 -1
- package/dist/src/modules/workspace/effects.d.ts +10 -0
- package/dist/src/modules/workspace/effects.d.ts.map +1 -1
- package/dist/src/modules/workspace/effects.js +21 -14
- package/dist/src/modules/workspace/effects.js.map +1 -1
- package/dist/src/modules/workspace/index.d.ts +308 -78
- package/dist/src/modules/workspace/index.d.ts.map +1 -1
- package/dist/src/modules/workspace/index.js +2103 -720
- package/dist/src/modules/workspace/index.js.map +1 -1
- package/dist/src/modules/workspace/observe.d.ts +75 -63
- package/dist/src/modules/workspace/observe.d.ts.map +1 -1
- package/dist/src/modules/workspace/observe.js +366 -180
- package/dist/src/modules/workspace/observe.js.map +1 -1
- package/dist/src/modules/workspace/read-page.d.ts +41 -0
- package/dist/src/modules/workspace/read-page.d.ts.map +1 -0
- package/dist/src/modules/workspace/read-page.js +219 -0
- package/dist/src/modules/workspace/read-page.js.map +1 -0
- package/dist/src/modules/workspace/reconcile.d.ts.map +1 -1
- package/dist/src/modules/workspace/reconcile.js +26 -16
- package/dist/src/modules/workspace/reconcile.js.map +1 -1
- package/dist/src/modules/workspace/result-text.d.ts +68 -0
- package/dist/src/modules/workspace/result-text.d.ts.map +1 -0
- package/dist/src/modules/workspace/result-text.js +94 -0
- package/dist/src/modules/workspace/result-text.js.map +1 -0
- package/dist/src/modules/workspace/sync.d.ts +9 -0
- package/dist/src/modules/workspace/sync.d.ts.map +1 -1
- package/dist/src/modules/workspace/sync.js +14 -0
- package/dist/src/modules/workspace/sync.js.map +1 -1
- package/dist/src/modules/workspace/text.d.ts +29 -12
- package/dist/src/modules/workspace/text.d.ts.map +1 -1
- package/dist/src/modules/workspace/text.js +35 -33
- package/dist/src/modules/workspace/text.js.map +1 -1
- package/dist/src/modules/workspace/types.d.ts +137 -60
- package/dist/src/modules/workspace/types.d.ts.map +1 -1
- package/dist/src/modules/workspace/types.js.map +1 -1
- package/dist/src/modules/workspace/watcher.d.ts.map +1 -1
- package/dist/src/modules/workspace/watcher.js +8 -3
- package/dist/src/modules/workspace/watcher.js.map +1 -1
- package/dist/src/prose-drafts.d.ts +4 -3
- package/dist/src/prose-drafts.d.ts.map +1 -1
- package/dist/src/prose-drafts.js +3 -2
- package/dist/src/prose-drafts.js.map +1 -1
- package/dist/src/reasoning-loss-notice.d.ts +23 -0
- package/dist/src/reasoning-loss-notice.d.ts.map +1 -0
- package/dist/src/reasoning-loss-notice.js +50 -0
- package/dist/src/reasoning-loss-notice.js.map +1 -0
- package/dist/src/reasoning-loss.d.ts +24 -0
- package/dist/src/reasoning-loss.d.ts.map +1 -0
- package/dist/src/reasoning-loss.js +102 -0
- package/dist/src/reasoning-loss.js.map +1 -0
- package/dist/src/send-tools.d.ts +3 -2
- package/dist/src/send-tools.d.ts.map +1 -1
- package/dist/src/send-tools.js +3 -2
- package/dist/src/send-tools.js.map +1 -1
- package/dist/src/sent-rows.d.ts +59 -0
- package/dist/src/sent-rows.d.ts.map +1 -0
- package/dist/src/sent-rows.js +145 -0
- package/dist/src/sent-rows.js.map +1 -0
- package/dist/src/silent-heartbeat.d.ts +17 -10
- package/dist/src/silent-heartbeat.d.ts.map +1 -1
- package/dist/src/silent-heartbeat.js.map +1 -1
- package/dist/src/stable-hash.d.ts +3 -0
- package/dist/src/stable-hash.d.ts.map +1 -0
- package/dist/src/stable-hash.js +15 -0
- package/dist/src/stable-hash.js.map +1 -0
- package/dist/src/stored-injections.d.ts +99 -0
- package/dist/src/stored-injections.d.ts.map +1 -0
- package/dist/src/stored-injections.js +106 -0
- package/dist/src/stored-injections.js.map +1 -0
- package/dist/src/text-as-stored.d.ts +4 -3
- package/dist/src/text-as-stored.d.ts.map +1 -1
- package/dist/src/text-as-stored.js +4 -3
- package/dist/src/text-as-stored.js.map +1 -1
- package/dist/src/thinking-drops.d.ts +74 -0
- package/dist/src/thinking-drops.d.ts.map +1 -0
- package/dist/src/thinking-drops.js +96 -0
- package/dist/src/thinking-drops.js.map +1 -0
- package/dist/src/tool-args.d.ts +12 -0
- package/dist/src/tool-args.d.ts.map +1 -1
- package/dist/src/tool-args.js +35 -1
- package/dist/src/tool-args.js.map +1 -1
- package/dist/src/tool-image-ledger.d.ts +9 -8
- package/dist/src/tool-image-ledger.d.ts.map +1 -1
- package/dist/src/tool-image-ledger.js +9 -8
- package/dist/src/tool-image-ledger.js.map +1 -1
- package/dist/src/tool-presentation.d.ts.map +1 -1
- package/dist/src/tool-presentation.js +3 -1
- package/dist/src/tool-presentation.js.map +1 -1
- package/dist/src/tool-result-guard.d.ts +12 -6
- package/dist/src/tool-result-guard.d.ts.map +1 -1
- package/dist/src/tool-result-guard.js +44 -17
- package/dist/src/tool-result-guard.js.map +1 -1
- package/dist/src/tool-result-history.d.ts +176 -24
- package/dist/src/tool-result-history.d.ts.map +1 -1
- package/dist/src/tool-result-history.js +411 -91
- package/dist/src/tool-result-history.js.map +1 -1
- package/dist/src/tune-out/coordinator.d.ts +17 -9
- package/dist/src/tune-out/coordinator.d.ts.map +1 -1
- package/dist/src/tune-out/coordinator.js +84 -37
- package/dist/src/tune-out/coordinator.js.map +1 -1
- package/dist/src/tune-out/tools.d.ts +4 -1
- package/dist/src/tune-out/tools.d.ts.map +1 -1
- package/dist/src/types/agent.d.ts +217 -7
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/events.d.ts +33 -9
- package/dist/src/types/events.d.ts.map +1 -1
- package/dist/src/types/framework.d.ts +39 -3
- package/dist/src/types/framework.d.ts.map +1 -1
- package/dist/src/types/module.d.ts +95 -9
- package/dist/src/types/module.d.ts.map +1 -1
- package/dist/src/types/trace.d.ts +91 -3
- package/dist/src/types/trace.d.ts.map +1 -1
- package/package.json +5 -4
- package/src/agent.ts +661 -67
- package/src/api/server.ts +5 -4
- package/src/auto-continue.ts +43 -0
- package/src/code-execution/isolate/scripts.ts +11 -3
- package/src/cut-off-round.ts +98 -0
- package/src/framework.ts +6168 -1540
- package/src/gate/event-gate.ts +2895 -405
- package/src/gate/index.ts +10 -1
- package/src/gate/recipe-reconcile.ts +355 -0
- package/src/gate/reply-judge.ts +512 -0
- package/src/gate/types.ts +234 -9
- package/src/heartbeat/heartbeat.ts +804 -0
- package/src/heartbeat/reminder-time.ts +107 -0
- package/src/index.ts +11 -4
- package/src/mcpl/capability-mask.ts +3 -2
- package/src/mcpl/channel-registry.ts +1222 -468
- package/src/mcpl/conversation-router.ts +34 -16
- package/src/mcpl/convert-block.ts +14 -1
- package/src/mcpl/hook-orchestrator.ts +33 -6
- package/src/mcpl/inbound-source.ts +42 -69
- package/src/mcpl/index.ts +6 -1
- package/src/mcpl/inference-router.ts +79 -34
- package/src/mcpl/prose-grammar.ts +7 -0
- package/src/mcpl/protocol-family.ts +2 -0
- package/src/mcpl/push-coalescer.ts +51 -13
- package/src/mcpl/reference-fetcher.ts +201 -162
- package/src/mcpl/references.ts +851 -77
- package/src/mcpl/server-connection.ts +189 -11
- package/src/mcpl/tags.ts +13 -2
- package/src/mcpl/tool-lifecycle.ts +21 -0
- package/src/mcpl/tool-presence.ts +716 -0
- package/src/mcpl/tool-result-normalize.ts +18 -6
- package/src/mcpl/tool-signature.ts +316 -0
- package/src/mcpl/toolset-host.ts +727 -0
- package/src/mcpl/toolsets-module.ts +545 -0
- package/src/mcpl/transport.ts +3 -2
- package/src/mcpl/types.ts +25 -2
- package/src/mcpl/visible-content.ts +22 -9
- package/src/module-registry.ts +85 -26
- package/src/modules/discord/index.ts +1 -1
- package/src/modules/history/index.ts +70 -30
- package/src/modules/history/semantic.ts +308 -54
- package/src/modules/workspace/answers.ts +133 -0
- package/src/modules/workspace/branch-intent.ts +10 -5
- package/src/modules/workspace/direct-write.ts +460 -0
- package/src/modules/workspace/disk-agreement.ts +52 -21
- package/src/modules/workspace/edit-text.ts +84 -35
- package/src/modules/workspace/effects.ts +22 -13
- package/src/modules/workspace/index.ts +2142 -723
- package/src/modules/workspace/observe.ts +381 -177
- package/src/modules/workspace/read-page.ts +228 -0
- package/src/modules/workspace/reconcile.ts +27 -15
- package/src/modules/workspace/result-text.ts +121 -0
- package/src/modules/workspace/sync.ts +16 -0
- package/src/modules/workspace/text.ts +58 -32
- package/src/modules/workspace/types.ts +137 -60
- package/src/modules/workspace/watcher.ts +8 -3
- package/src/prose-drafts.ts +4 -3
- package/src/reasoning-loss-notice.ts +62 -0
- package/src/reasoning-loss.ts +120 -0
- package/src/send-tools.ts +3 -2
- package/src/sent-rows.ts +162 -0
- package/src/silent-heartbeat.ts +17 -10
- package/src/stable-hash.ts +14 -0
- package/src/stored-injections.ts +131 -0
- package/src/text-as-stored.ts +4 -3
- package/src/thinking-drops.ts +135 -0
- package/src/tool-args.ts +34 -1
- package/src/tool-image-ledger.ts +9 -8
- package/src/tool-presentation.ts +3 -1
- package/src/tool-result-guard.ts +45 -17
- package/src/tool-result-history.ts +471 -90
- package/src/tune-out/coordinator.ts +80 -37
- package/src/tune-out/tools.ts +4 -1
- package/src/types/agent.ts +220 -7
- package/src/types/events.ts +33 -9
- package/src/types/framework.ts +36 -3
- package/src/types/module.ts +91 -9
- package/src/types/trace.ts +94 -3
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCPL RFC-014, host side: per server, the controller that feeds the
|
|
3
|
+
* server's tool presence (tool-presence.ts) from what its connection reads,
|
|
4
|
+
* sends toolsets/open, close and list, recovers from a lost rev, and renders
|
|
5
|
+
* what changed; and the hub that holds every server's controller for the
|
|
6
|
+
* meta-tools (toolsets-module.ts) and for reminders.
|
|
7
|
+
*
|
|
8
|
+
* Hint changes apply as their message is read (RFC §6.1); a static↔dynamic
|
|
9
|
+
* move takes effect when a tools/list states it (§4.1), and the model's tool
|
|
10
|
+
* list shows it at its next rebuild; until then the tool is called at either
|
|
11
|
+
* place (§4.2). The connection's read tap hands
|
|
12
|
+
* the controller every result of a hinted request (awaited or not, while no
|
|
13
|
+
* more than 1,000 hinted requests await an answer), each tools/list whole, every push/event and every tools/hints, of the
|
|
14
|
+
* current transport, synchronously and in arrival order, before anything
|
|
15
|
+
* routes the message or anything read after it is handled.
|
|
16
|
+
* What a message's changes did to the model's view is kept by the object
|
|
17
|
+
* that carried them (`readChanges`), so whoever later handles that object
|
|
18
|
+
* (the tool result, the push, the meta-tool) renders it next to the content.
|
|
19
|
+
*
|
|
20
|
+
* Reminders (RFC §8.3): after each compile built to send, the hub reads
|
|
21
|
+
* which open toolsets' markers (`[server/toolset:instance]`) the request
|
|
22
|
+
* carried. A marker an agent has had in view, gone from a later request
|
|
23
|
+
* (compressed, or out of the window), makes a reminder due for that agent,
|
|
24
|
+
* which the toolsets module gathers at its next start as a stored
|
|
25
|
+
* `afterUser` injection.
|
|
26
|
+
*/
|
|
27
|
+
import { type McplServerConnection } from './server-connection.js';
|
|
28
|
+
import type { McplServerConfig } from './types.js';
|
|
29
|
+
import { ToolPresence, type ChangeSet, type MetaToolNames, type Presence } from './tool-presence.js';
|
|
30
|
+
/** The meta-tools' module, whose tools are `toolsets--open` and so on. */
|
|
31
|
+
export declare const TOOLSETS_MODULE = "toolsets";
|
|
32
|
+
export declare const META_TOOL_NAMES: MetaToolNames;
|
|
33
|
+
/** How long an open or close is waited for. A late result still applies when it's read. */
|
|
34
|
+
export declare const TOOLSET_REQUEST_TIMEOUT_MS = 60000;
|
|
35
|
+
export interface ToolsetHostDeps {
|
|
36
|
+
/** A standalone notice into the conversation: a tools/hints change, a late
|
|
37
|
+
* result's, a reconnect's adoption, a recovery's. `invite`: it suggests an
|
|
38
|
+
* open. The host applies its usual rules for events. */
|
|
39
|
+
notify(serverId: string, text: string, opts: {
|
|
40
|
+
invite: boolean;
|
|
41
|
+
}): boolean;
|
|
42
|
+
/** Whether the server's changes may be put into the conversation unasked
|
|
43
|
+
* (its `pushEvents` grant): notices and reminders. */
|
|
44
|
+
canNotify(serverId: string): boolean;
|
|
45
|
+
/** The operator's log. */
|
|
46
|
+
log(line: string): void;
|
|
47
|
+
/** How a static tool is named in the tool list (`prefix--tool`). */
|
|
48
|
+
listedName(serverId: string, tool: string): string;
|
|
49
|
+
/** Where the model's published tool list last put a server's tool:
|
|
50
|
+
* offered in it (static), listed but not offered (dynamic), or undefined
|
|
51
|
+
* where it isn't published. RFC §4.2: until its move applies, a tool
|
|
52
|
+
* keeps working where it is. */
|
|
53
|
+
published?(serverId: string, tool: string): Presence | undefined;
|
|
54
|
+
}
|
|
55
|
+
/** One server's RFC-014 state and traffic. Lives as long as the server's
|
|
56
|
+
* configuration, across reconnects and the server's restarts (its `ended`
|
|
57
|
+
* ids and what the model was shown carry over), in memory only. */
|
|
58
|
+
export declare class ToolsetController {
|
|
59
|
+
readonly serverId: string;
|
|
60
|
+
private config;
|
|
61
|
+
private readonly deps;
|
|
62
|
+
readonly presence: ToolPresence;
|
|
63
|
+
private connection;
|
|
64
|
+
/** The transport epoch the presence's revs belong to. */
|
|
65
|
+
private epoch;
|
|
66
|
+
/** What applying a message's hints changed, by the object that carried them. */
|
|
67
|
+
private readonly readChanges;
|
|
68
|
+
/** Results whose change no one has taken yet, in the order they were read, with their method (tellUnlessClaimed). */
|
|
69
|
+
private readonly unclaimed;
|
|
70
|
+
/** eventIds of pushes read on this transport (bounded): a repeat's hints are ignored (RFC §6.1). */
|
|
71
|
+
private seenEvents;
|
|
72
|
+
private recoveryTimer;
|
|
73
|
+
private recovering;
|
|
74
|
+
private recoverAgain;
|
|
75
|
+
constructor(serverId: string, config: McplServerConfig, deps: ToolsetHostDeps);
|
|
76
|
+
private log;
|
|
77
|
+
private field;
|
|
78
|
+
private failure;
|
|
79
|
+
/** A restart can bring a new configuration under the same id. */
|
|
80
|
+
setConfig(config: McplServerConfig): void;
|
|
81
|
+
/** Tap this connection (a connect or a restart's new one). */
|
|
82
|
+
attach(connection: McplServerConnection): void;
|
|
83
|
+
release(): void;
|
|
84
|
+
/** The server's connection is gone for good (disconnected, removed). */
|
|
85
|
+
detach(connection: McplServerConnection): void;
|
|
86
|
+
/** Whether the meta-tools speak for this server now. */
|
|
87
|
+
get presents(): boolean;
|
|
88
|
+
/** The live connection, for a request. */
|
|
89
|
+
private live;
|
|
90
|
+
/**
|
|
91
|
+
* A new transport: revs start over (RFC §6.1), and its advertisement says
|
|
92
|
+
* whether hints are in effect. Read from the connection, which holds the
|
|
93
|
+
* advertisement before its transport can deliver anything.
|
|
94
|
+
*/
|
|
95
|
+
private sync;
|
|
96
|
+
private onRead;
|
|
97
|
+
private readResult;
|
|
98
|
+
/**
|
|
99
|
+
* The one apply path (RFC §6.1) for a HintChanges from any carrier, as its
|
|
100
|
+
* message is read. Revs are consecutive: anything but the last + 1 means a
|
|
101
|
+
* message was lost or misordered, and the host recovers.
|
|
102
|
+
*/
|
|
103
|
+
private applyHints;
|
|
104
|
+
/** tools/list, as read: definitions and presence as of its `mcpl/rev`, which takes no rev of its own (RFC §4.1). */
|
|
105
|
+
private readToolList;
|
|
106
|
+
/** toolsets/list, as read: a full statement of dynamic-tool state under its own rev (RFC §5.3, §6.1). */
|
|
107
|
+
private readToolsetList;
|
|
108
|
+
/** A change with nothing else to ride on, told as a notice, after every result's change still unclaimed. */
|
|
109
|
+
private deliver;
|
|
110
|
+
/**
|
|
111
|
+
* Unclaimed carriers' changes, told as notices in the order they were read,
|
|
112
|
+
* through `upTo` when given. When no notice can be written, a push keeps its
|
|
113
|
+
* change for the framework's push path, which takes it when the push gets
|
|
114
|
+
* there; a result's is dropped, whether or not its caller is still to
|
|
115
|
+
* resume.
|
|
116
|
+
*/
|
|
117
|
+
private tellUnclaimed;
|
|
118
|
+
/** Whether a notice was written, there was nothing left to tell (`empty`), or one couldn't be written (`refused`). */
|
|
119
|
+
private notice;
|
|
120
|
+
/**
|
|
121
|
+
* A dynamic tool called by its namespaced name, as if it were listed (a
|
|
122
|
+
* model imitating an earlier call, a module): refused, so every call into
|
|
123
|
+
* a toolset goes through act, which knows its instance and gates closed
|
|
124
|
+
* groups (RFC §5.4, §5.5). Null for any other tool, including one the tool
|
|
125
|
+
* list last published or the server's latest tools/list puts as static
|
|
126
|
+
* (shownAs: RFC §4.2, until its move applies).
|
|
127
|
+
*/
|
|
128
|
+
dynamicCallRefusal(tool: string, calledAs: string): string | null;
|
|
129
|
+
/**
|
|
130
|
+
* An awaited result's change is told by whoever renders that result, when
|
|
131
|
+
* the result goes to the agent: the model's own call of a tool (its tool
|
|
132
|
+
* result), a meta-tool. One no one renders by the time the awaiting code has
|
|
133
|
+
* run (the next macrotask), such as the result of a call the framework makes
|
|
134
|
+
* itself (a reaction, a send, an accounted side effect), is told as a notice
|
|
135
|
+
* instead, as a standalone tools/hints is (RFC §6.1: every change reaches the
|
|
136
|
+
* agent once), or dropped as tellUnclaimed says when none can be written.
|
|
137
|
+
*/
|
|
138
|
+
private tellUnlessClaimed;
|
|
139
|
+
/**
|
|
140
|
+
* The change a carrier's hints made (a tool result, a push's params), taken
|
|
141
|
+
* by a caller that shows it to an agent with the carrier: it isn't told as a
|
|
142
|
+
* notice, and the caller says when it has reached an agent (told). Call it
|
|
143
|
+
* synchronously as the carrier is read, before the next macrotask, when an
|
|
144
|
+
* unclaimed carrier's change goes out as a notice instead (tellUnclaimed
|
|
145
|
+
* says what happens when none can be written). A change already gone that
|
|
146
|
+
* way is empty here. Unclaimed carriers read before this one
|
|
147
|
+
* are told first, as notices, so no later change is shown before them.
|
|
148
|
+
*/
|
|
149
|
+
takeChange(carrier: unknown): ChangeSet;
|
|
150
|
+
/** A change its taker showed to an agent: its ended records count as told, and the definitions it describes as shown, unless the taker showed it without its blocks (`blocksShown: false`). */
|
|
151
|
+
told(cs: ChangeSet): void;
|
|
152
|
+
/** A change its taker couldn't show, told as a notice instead, or dropped when none can be written. */
|
|
153
|
+
tell(cs: ChangeSet): void;
|
|
154
|
+
private changeOf;
|
|
155
|
+
private scheduleRecovery;
|
|
156
|
+
/**
|
|
157
|
+
* Recovering: re-read tools/list (presence, declared definitions), then
|
|
158
|
+
* toolsets/list (dynamic-tool state in full), so every tool the statement
|
|
159
|
+
* names is already known, unless tools/list failed: a tool the last list
|
|
160
|
+
* lacks then stays unknown until a later change or list starts a recovery.
|
|
161
|
+
* Each applies where it's read. What
|
|
162
|
+
* changed is told. (stdio and WebSocket deliver in order, so no early rev is
|
|
163
|
+
* held.)
|
|
164
|
+
*/
|
|
165
|
+
private recover;
|
|
166
|
+
/** The tap applies the list and tells its change as it's read. */
|
|
167
|
+
private ownToolList;
|
|
168
|
+
private ownToolsetList;
|
|
169
|
+
/**
|
|
170
|
+
* After every (re)connect, once its policy has settled (RFC §5.3): tools/list
|
|
171
|
+
* then toolsets/list, the truth. What the server reports open is adopted
|
|
172
|
+
* (a game kept across the reconnect); what the host believed open and it
|
|
173
|
+
* doesn't report is closed, never re-opened here, since opening can start a
|
|
174
|
+
* new game. What ended meanwhile is told, each `ended` id once.
|
|
175
|
+
*/
|
|
176
|
+
connected(connection: McplServerConnection): Promise<void>;
|
|
177
|
+
/**
|
|
178
|
+
* Re-read what the server holds open (titles, visibility) without telling
|
|
179
|
+
* it, for look. Returns what the re-read changed, taken from the notice it
|
|
180
|
+
* would otherwise get when `shown` (its result reaches an agent): look then
|
|
181
|
+
* either shows it (told) or hands it back (tell). Otherwise the change is
|
|
182
|
+
* left to its notice, and returned to be shown to the caller alone. Null
|
|
183
|
+
* when nothing was read.
|
|
184
|
+
*/
|
|
185
|
+
refreshOpen(opts: {
|
|
186
|
+
shown: boolean;
|
|
187
|
+
}): Promise<ChangeSet | null>;
|
|
188
|
+
/** toolsets/open (RFC §5.2). The server's refusal rejects. Its change is
|
|
189
|
+
* taken when `shown` (its result reaches an agent), else left to its
|
|
190
|
+
* notice and returned for the caller alone; close's is the same. */
|
|
191
|
+
open(toolset: string, instance: string | undefined, options: Record<string, unknown> | undefined, opts: {
|
|
192
|
+
shown: boolean;
|
|
193
|
+
}): Promise<{
|
|
194
|
+
key: string;
|
|
195
|
+
title?: string;
|
|
196
|
+
content: unknown[];
|
|
197
|
+
change: ChangeSet;
|
|
198
|
+
adopted: boolean;
|
|
199
|
+
}>;
|
|
200
|
+
/** toolsets/close (RFC §5.2). */
|
|
201
|
+
close(toolset: string, instance: string | undefined, opts: {
|
|
202
|
+
shown: boolean;
|
|
203
|
+
}): Promise<{
|
|
204
|
+
content: unknown[];
|
|
205
|
+
change: ChangeSet;
|
|
206
|
+
}>;
|
|
207
|
+
/** Open or close an undeclared group (RFC §5.4): the host's own act; the server isn't told. */
|
|
208
|
+
setGroupOpen(group: string, open: boolean): ChangeSet;
|
|
209
|
+
/**
|
|
210
|
+
* A manifest re-fetch (RFC §5.1): the `toolsets` domain's declarations, as
|
|
211
|
+
* the server sent them. A toolset removed ends its instances; a server
|
|
212
|
+
* that withdraws toolHints is hint-less from then on. What changed is told.
|
|
213
|
+
*/
|
|
214
|
+
manifestChanged(declarations: Record<string, unknown> | null): void;
|
|
215
|
+
/** At a rebuild of the model's tool list (RFC §4.2), tell where the tools it moved went: `moves`, those still pending, or every one pending. A move a list has undone since the rebuild listed the server isn't told; the next rebuild publishes the undoing. */
|
|
216
|
+
applyMoves(moves?: Array<{
|
|
217
|
+
name: string;
|
|
218
|
+
to: Presence;
|
|
219
|
+
}>): void;
|
|
220
|
+
}
|
|
221
|
+
/** Every server's controller, for the meta-tools and reminders. */
|
|
222
|
+
export declare class ToolsetHub {
|
|
223
|
+
private readonly deps;
|
|
224
|
+
private readonly controllers;
|
|
225
|
+
/** Per agent: the markers it has had in view (seen), and whether a reminder is due. */
|
|
226
|
+
private readonly seen;
|
|
227
|
+
private readonly due;
|
|
228
|
+
constructor(deps: ToolsetHostDeps);
|
|
229
|
+
/** The controller for a server, made at its first connect. */
|
|
230
|
+
controllerFor(config: McplServerConfig): ToolsetController;
|
|
231
|
+
get(serverId: string): ToolsetController | undefined;
|
|
232
|
+
/** A server's configuration went (removed): its controller lets go of the
|
|
233
|
+
* connection it holds, and is forgotten, so a server added later under
|
|
234
|
+
* the same id starts from nothing. */
|
|
235
|
+
forget(serverId: string): void;
|
|
236
|
+
all(): ToolsetController[];
|
|
237
|
+
/** The servers the meta-tools speak for now. */
|
|
238
|
+
presenting(): ToolsetController[];
|
|
239
|
+
/** Every open key's marker, across servers. */
|
|
240
|
+
private openMarkers;
|
|
241
|
+
/**
|
|
242
|
+
* A compile built to send for `agentName` (RFC §8.3): which open toolsets'
|
|
243
|
+
* announcements the request carries. One the agent has had in view and the
|
|
244
|
+
* request no longer carries (compressed, or out of the window) makes a
|
|
245
|
+
* reminder due.
|
|
246
|
+
*/
|
|
247
|
+
observeCompile(agentName: string, messages: readonly unknown[]): void;
|
|
248
|
+
/** The reminder due for `agentName`, or null when none is. */
|
|
249
|
+
reminderFor(agentName: string): string | null;
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=toolset-host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolset-host.d.ts","sourceRoot":"","sources":["../../../src/mcpl/toolset-host.ts"],"names":[],"mappings":"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"}
|