@animalabs/agent-framework 0.26.2 → 0.27.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 +56 -6
- package/dist/src/agent.d.ts +263 -22
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +531 -54
- package/dist/src/agent.js.map +1 -1
- package/dist/src/api/server.d.ts.map +1 -1
- package/dist/src/api/server.js +1 -2
- package/dist/src/api/server.js.map +1 -1
- package/dist/src/auto-continue.d.ts +33 -0
- package/dist/src/auto-continue.d.ts.map +1 -0
- package/dist/src/auto-continue.js +35 -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/framework.d.ts +759 -129
- package/dist/src/framework.d.ts.map +1 -1
- package/dist/src/framework.js +3482 -928
- package/dist/src/framework.js.map +1 -1
- package/dist/src/gate/event-gate.d.ts +309 -46
- package/dist/src/gate/event-gate.d.ts.map +1 -1
- package/dist/src/gate/event-gate.js +2117 -395
- package/dist/src/gate/event-gate.js.map +1 -1
- package/dist/src/gate/index.d.ts +2 -2
- package/dist/src/gate/index.d.ts.map +1 -1
- package/dist/src/gate/index.js +1 -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/types.d.ts +68 -8
- package/dist/src/gate/types.d.ts.map +1 -1
- package/dist/src/index.d.ts +6 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -2
- package/dist/src/index.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 +1152 -434
- 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/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 +82 -3
- package/dist/src/mcpl/server-connection.d.ts.map +1 -1
- package/dist/src/mcpl/server-connection.js +132 -7
- package/dist/src/mcpl/server-connection.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 +259 -0
- package/dist/src/mcpl/tool-presence.d.ts.map +1 -0
- package/dist/src/mcpl/tool-presence.js +628 -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 +39 -0
- package/dist/src/mcpl/tool-signature.d.ts.map +1 -0
- package/dist/src/mcpl/tool-signature.js +292 -0
- package/dist/src/mcpl/tool-signature.js.map +1 -0
- package/dist/src/mcpl/toolset-host.d.ts +200 -0
- package/dist/src/mcpl/toolset-host.d.ts.map +1 -0
- package/dist/src/mcpl/toolset-host.js +621 -0
- package/dist/src/mcpl/toolset-host.js.map +1 -0
- package/dist/src/mcpl/toolsets-module.d.ts +80 -0
- package/dist/src/mcpl/toolsets-module.d.ts.map +1 -0
- package/dist/src/mcpl/toolsets-module.js +431 -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 +21 -1
- 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 +23 -8
- package/dist/src/module-registry.d.ts.map +1 -1
- package/dist/src/module-registry.js +68 -15
- 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 +51 -17
- 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/direct-write.d.ts +181 -0
- package/dist/src/modules/workspace/direct-write.d.ts.map +1 -0
- package/dist/src/modules/workspace/direct-write.js +384 -0
- package/dist/src/modules/workspace/direct-write.js.map +1 -0
- package/dist/src/modules/workspace/edit-text.d.ts +26 -12
- package/dist/src/modules/workspace/edit-text.d.ts.map +1 -1
- package/dist/src/modules/workspace/edit-text.js +58 -28
- 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 +1 -1
- package/dist/src/modules/workspace/effects.js.map +1 -1
- package/dist/src/modules/workspace/index.d.ts +246 -27
- package/dist/src/modules/workspace/index.d.ts.map +1 -1
- package/dist/src/modules/workspace/index.js +1216 -236
- package/dist/src/modules/workspace/index.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 +213 -0
- package/dist/src/modules/workspace/read-page.js.map +1 -0
- package/dist/src/modules/workspace/result-text.d.ts +67 -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/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 +41 -17
- package/dist/src/modules/workspace/types.d.ts.map +1 -1
- package/dist/src/modules/workspace/types.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 +81 -0
- package/dist/src/thinking-drops.d.ts.map +1 -0
- package/dist/src/thinking-drops.js +103 -0
- package/dist/src/thinking-drops.js.map +1 -0
- 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 +4 -2
- package/dist/src/tool-result-guard.d.ts.map +1 -1
- package/dist/src/tool-result-guard.js +21 -6
- 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/types/agent.d.ts +186 -7
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/events.d.ts +15 -1
- package/dist/src/types/events.d.ts.map +1 -1
- package/dist/src/types/framework.d.ts +24 -3
- package/dist/src/types/framework.d.ts.map +1 -1
- package/dist/src/types/module.d.ts +90 -7
- package/dist/src/types/module.d.ts.map +1 -1
- package/dist/src/types/trace.d.ts +57 -2
- package/dist/src/types/trace.d.ts.map +1 -1
- package/package.json +4 -3
- package/src/agent.ts +593 -60
- package/src/api/server.ts +1 -2
- package/src/auto-continue.ts +42 -0
- package/src/code-execution/isolate/scripts.ts +11 -3
- package/src/framework.ts +3601 -967
- package/src/gate/event-gate.ts +2315 -389
- package/src/gate/index.ts +2 -1
- package/src/gate/recipe-reconcile.ts +355 -0
- package/src/gate/types.ts +70 -8
- package/src/index.ts +7 -4
- package/src/mcpl/channel-registry.ts +1220 -467
- 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/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 +145 -7
- package/src/mcpl/tool-lifecycle.ts +21 -0
- package/src/mcpl/tool-presence.ts +650 -0
- package/src/mcpl/tool-result-normalize.ts +18 -6
- package/src/mcpl/tool-signature.ts +285 -0
- package/src/mcpl/toolset-host.ts +637 -0
- package/src/mcpl/toolsets-module.ts +451 -0
- package/src/mcpl/transport.ts +3 -2
- package/src/mcpl/types.ts +22 -1
- package/src/mcpl/visible-content.ts +22 -9
- package/src/module-registry.ts +77 -24
- package/src/modules/discord/index.ts +1 -1
- package/src/modules/history/index.ts +48 -18
- package/src/modules/history/semantic.ts +308 -54
- package/src/modules/workspace/direct-write.ts +425 -0
- package/src/modules/workspace/edit-text.ts +82 -35
- package/src/modules/workspace/effects.ts +1 -1
- package/src/modules/workspace/index.ts +1274 -241
- package/src/modules/workspace/read-page.ts +222 -0
- package/src/modules/workspace/result-text.ts +119 -0
- package/src/modules/workspace/text.ts +58 -32
- package/src/modules/workspace/types.ts +41 -17
- 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 +141 -0
- package/src/tool-image-ledger.ts +9 -8
- package/src/tool-presentation.ts +3 -1
- package/src/tool-result-guard.ts +19 -6
- package/src/tool-result-history.ts +471 -90
- package/src/tune-out/coordinator.ts +80 -37
- package/src/types/agent.ts +189 -7
- package/src/types/events.ts +15 -1
- package/src/types/framework.ts +21 -3
- package/src/types/module.ts +86 -7
- package/src/types/trace.ts +58 -2
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The host's own interface to MCPL dynamic tools (RFC-014 §8.2): four tools,
|
|
3
|
+
* constant and static, aggregated across every server that presents
|
|
4
|
+
* toolsets.
|
|
5
|
+
*
|
|
6
|
+
* toolsets--open {server?, toolset?, instance?, options?}
|
|
7
|
+
* toolsets--act {server?, tool, instance?, args?}
|
|
8
|
+
* toolsets--look {server?, toolset?, instance?, tool?}
|
|
9
|
+
* toolsets--close {server?, toolset?, instance?}
|
|
10
|
+
*
|
|
11
|
+
* Dynamic tools never enter the API tool list: changing it rebuilds the
|
|
12
|
+
* prompt cache. They're announced in the conversation (in these tools'
|
|
13
|
+
* results, in the results of calls that changed them, in push events and in
|
|
14
|
+
* notices) and called through `toolsets--act`, which this module only
|
|
15
|
+
* resolves (resolveAct): the framework dispatches the call it resolves to
|
|
16
|
+
* down the same path as a direct call of the server's tool. The module is registered when a server is
|
|
17
|
+
* configured with `toolHints: true`; its tools never change after that.
|
|
18
|
+
*
|
|
19
|
+
* Its gatherContext publishes the RFC §8.3 reminder, as a stored `afterUser`
|
|
20
|
+
* injection, when an agent's earlier announcements of an open toolset have
|
|
21
|
+
* left its context (ToolsetHub.observeCompile).
|
|
22
|
+
*
|
|
23
|
+
* Ported from mcpl-cc-bridge's meta-tools.ts, the reference host.
|
|
24
|
+
*/
|
|
25
|
+
import type { EventResponse, Module, ModuleContext, ModuleContextInjection, ProcessState } from '../types/module.js';
|
|
26
|
+
import type { ProcessEvent, ToolCall, ToolDefinition, ToolResult } from '../types/events.js';
|
|
27
|
+
import { type ToolsetHub } from './toolset-host.js';
|
|
28
|
+
/** The namespace a reminder's stored injection carries. */
|
|
29
|
+
export declare const TOOLSETS_REMINDER_NAMESPACE = "mcpl-toolsets";
|
|
30
|
+
/** What a `toolsets--act` call resolves to: the server's tool, its instance and arguments. */
|
|
31
|
+
export type ActTarget = {
|
|
32
|
+
ok: true;
|
|
33
|
+
serverId: string;
|
|
34
|
+
tool: string;
|
|
35
|
+
instance?: string;
|
|
36
|
+
args: Record<string, unknown>;
|
|
37
|
+
} | {
|
|
38
|
+
ok: false;
|
|
39
|
+
error: string;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Resolve a `toolsets--act` call (RFC §8.2) to the dynamic tool it calls,
|
|
43
|
+
* or the reason it can't be sent. The framework then dispatches it exactly as
|
|
44
|
+
* a direct call of that tool, with `_meta["mcpl/instance"]` added (RFC §5.5).
|
|
45
|
+
* Refused here, before anything is sent: a tool no presenting server has, a
|
|
46
|
+
* static tool (it's in the tool list), an instance that isn't named where
|
|
47
|
+
* several are open, a group the host has closed (RFC §5.4), and arguments
|
|
48
|
+
* that don't fit the definition in force for that instance (RFC §6.1).
|
|
49
|
+
*/
|
|
50
|
+
export declare function resolveAct(hub: ToolsetHub, input: unknown): ActTarget;
|
|
51
|
+
export declare class ToolsetsModule implements Module {
|
|
52
|
+
private readonly hub;
|
|
53
|
+
readonly name = "toolsets";
|
|
54
|
+
constructor(hub: ToolsetHub);
|
|
55
|
+
start(_ctx: ModuleContext): Promise<void>;
|
|
56
|
+
stop(): Promise<void>;
|
|
57
|
+
getTools(): ToolDefinition[];
|
|
58
|
+
onProcess(_event: ProcessEvent, _state: ProcessState): Promise<EventResponse>;
|
|
59
|
+
/** RFC §8.3: the reminder due for this agent, stored where compile() would place it. */
|
|
60
|
+
gatherContext(agentName: string): Promise<ModuleContextInjection[]>;
|
|
61
|
+
handleToolCall(call: ToolCall): Promise<ToolResult>;
|
|
62
|
+
private toolsAt;
|
|
63
|
+
/** A change set rendered without the key the caller already showed whole. */
|
|
64
|
+
private renderOthers;
|
|
65
|
+
private open;
|
|
66
|
+
/**
|
|
67
|
+
* act is dispatched by the framework, not here: it resolves the call
|
|
68
|
+
* (resolveAct) and sends it down the same path as a direct call of the
|
|
69
|
+
* server's tool, so state, results, refusals and lifecycle are the same.
|
|
70
|
+
* A caller that reaches the module itself gets the resolution's refusal,
|
|
71
|
+
* or this.
|
|
72
|
+
*/
|
|
73
|
+
private act;
|
|
74
|
+
/** look restates the present: titles and visibility are re-read from the servers first (toolsets/list). */
|
|
75
|
+
private look;
|
|
76
|
+
private lookNow;
|
|
77
|
+
private lookTool;
|
|
78
|
+
private close;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=toolsets-module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolsets-module.d.ts","sourceRoot":"","sources":["../../../src/mcpl/toolsets-module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACrH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE7F,OAAO,EAA4D,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI9G,2DAA2D;AAC3D,eAAO,MAAM,2BAA2B,kBAAkB,CAAC;AAqI3D,8FAA8F;AAC9F,MAAM,MAAM,SAAS,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtJ;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,CAsCrE;AAED,qBAAa,cAAe,YAAW,MAAM;IAG/B,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFhC,QAAQ,CAAC,IAAI,cAAmB;IAEhC,YAA6B,GAAG,EAAE,UAAU,EAAI;IAE1C,KAAK,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAG;IAC5C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAG;IAE9B,QAAQ,IAAI,cAAc,EAAE,CAE3B;IAEK,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAElF;IAED,wFAAwF;IAClF,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAIxE;IAEK,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAgBxD;IAED,OAAO,CAAC,OAAO;IAIf,6EAA6E;IAC7E,OAAO,CAAC,YAAY;YAMN,IAAI;IAoDlB;;;;;;OAMG;IACH,OAAO,CAAC,GAAG;IAMX,2GAA2G;YAC7F,IAAI;IAQlB,OAAO,CAAC,OAAO;IAkDf,OAAO,CAAC,QAAQ;YAUF,KAAK;CA+CpB"}
|
|
@@ -0,0 +1,431 @@
|
|
|
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, renderToolDefinition } from './tool-signature.js';
|
|
5
|
+
/** The namespace a reminder's stored injection carries. */
|
|
6
|
+
export const TOOLSETS_REMINDER_NAMESPACE = 'mcpl-toolsets';
|
|
7
|
+
const META_TOOLS = [
|
|
8
|
+
{
|
|
9
|
+
name: 'open',
|
|
10
|
+
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. ' +
|
|
11
|
+
'Returns what the server shows on opening and the tools available now. server may be left out when one server has the toolset, ' +
|
|
12
|
+
'and toolset when the server has only one; instance names a separate copy where a toolset allows several (two games at once); ' +
|
|
13
|
+
'options as toolsets--look lists them.',
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
server: { type: 'string', description: 'the MCPL server id' },
|
|
18
|
+
toolset: { type: 'string' },
|
|
19
|
+
instance: { type: 'string', description: 'a name for this copy (toolsets with instances only)' },
|
|
20
|
+
options: { type: 'object', description: 'toolset options, as toolsets--look shows them' },
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'act',
|
|
26
|
+
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. ' +
|
|
27
|
+
'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. ' +
|
|
28
|
+
'Returns the server\'s result, then any change in which tools are available.',
|
|
29
|
+
inputSchema: {
|
|
30
|
+
type: 'object',
|
|
31
|
+
properties: {
|
|
32
|
+
server: { type: 'string', description: 'the MCPL server id (only needed when two servers have the tool)' },
|
|
33
|
+
tool: { type: 'string' },
|
|
34
|
+
instance: { type: 'string', description: 'which open copy (only needed when several are open)' },
|
|
35
|
+
args: { type: 'object' },
|
|
36
|
+
},
|
|
37
|
+
required: ['tool'],
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'look',
|
|
42
|
+
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. ' +
|
|
43
|
+
'With tool: that tool\'s full description and input schema. With toolset or instance: just that one.',
|
|
44
|
+
inputSchema: {
|
|
45
|
+
type: 'object',
|
|
46
|
+
properties: {
|
|
47
|
+
server: { type: 'string' },
|
|
48
|
+
toolset: { type: 'string' },
|
|
49
|
+
instance: { type: 'string' },
|
|
50
|
+
tool: { type: 'string' },
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'close',
|
|
56
|
+
description: 'Close an open toolset or instance: its tools and its events stop. Closing a game in progress may count as leaving it.',
|
|
57
|
+
inputSchema: {
|
|
58
|
+
type: 'object',
|
|
59
|
+
properties: {
|
|
60
|
+
server: { type: 'string', description: 'the MCPL server id (may be left out when one server has the toolset open)' },
|
|
61
|
+
toolset: { type: 'string', description: 'may be left out when only one thing is open on the server' },
|
|
62
|
+
instance: { type: 'string' },
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
const str = (v) => (typeof v === 'string' && v.trim() ? v.trim() : undefined);
|
|
68
|
+
const isObj = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
69
|
+
class MetaError extends Error {
|
|
70
|
+
}
|
|
71
|
+
const fail = (message) => {
|
|
72
|
+
throw new MetaError(message);
|
|
73
|
+
};
|
|
74
|
+
/** A text-only result. */
|
|
75
|
+
const textResult = (text) => ({ success: true, data: text });
|
|
76
|
+
/** Adjacent text blocks merged, so a result reads as one message. */
|
|
77
|
+
function mergeText(blocks) {
|
|
78
|
+
const out = [];
|
|
79
|
+
for (const b of blocks) {
|
|
80
|
+
if (b.type === 'text' && !b.text)
|
|
81
|
+
continue;
|
|
82
|
+
const prev = out[out.length - 1];
|
|
83
|
+
if (b.type === 'text' && prev?.type === 'text')
|
|
84
|
+
out[out.length - 1] = { type: 'text', text: `${prev.text}\n${b.text}` };
|
|
85
|
+
else
|
|
86
|
+
out.push(b);
|
|
87
|
+
}
|
|
88
|
+
return out;
|
|
89
|
+
}
|
|
90
|
+
/** Content blocks as a result: content when anything isn't text, else its text. */
|
|
91
|
+
function blocksResult(blocks, isError = false) {
|
|
92
|
+
const merged = mergeText(blocks);
|
|
93
|
+
if (isError) {
|
|
94
|
+
const text = merged.map((b) => (b.type === 'text' ? b.text ?? '' : `[${b.type}]`)).join('\n');
|
|
95
|
+
return { success: false, isError: true, error: text || 'the server answered with an error' };
|
|
96
|
+
}
|
|
97
|
+
if (merged.every((b) => b.type === 'text'))
|
|
98
|
+
return textResult(merged.map((b) => b.text ?? '').join('\n'));
|
|
99
|
+
return { success: true, data: merged, dataIsContent: true };
|
|
100
|
+
}
|
|
101
|
+
const asBlocks = (content) => content.filter((b) => isObj(b) && typeof b.type === 'string');
|
|
102
|
+
// ── choosing the server ──
|
|
103
|
+
function pick(hub, server) {
|
|
104
|
+
const id = str(server);
|
|
105
|
+
const ids = hub.presenting().map((c) => c.serverId);
|
|
106
|
+
if (!id) {
|
|
107
|
+
if (ids.length === 1)
|
|
108
|
+
return hub.get(ids[0]);
|
|
109
|
+
return fail(`name a server: ${ids.join(', ') || '(no MCPL server presents toolsets now)'}`);
|
|
110
|
+
}
|
|
111
|
+
const c = hub.get(id);
|
|
112
|
+
if (!c)
|
|
113
|
+
return fail(`no server "${id}" presents toolsets; the ones that do: ${ids.join(', ') || 'none'}`);
|
|
114
|
+
if (!c.presence.active)
|
|
115
|
+
return fail(`${id} sends no tool hints now: its tools are in your tool list`);
|
|
116
|
+
return c;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* RFC §8.2: `server` may be left out; the name decides, when exactly one
|
|
120
|
+
* presenting server has it. Two or more: name the server.
|
|
121
|
+
*/
|
|
122
|
+
function owner(hub, server, has, what) {
|
|
123
|
+
if (str(server))
|
|
124
|
+
return pick(hub, server);
|
|
125
|
+
const owners = hub.presenting().filter(has);
|
|
126
|
+
if (owners.length === 1)
|
|
127
|
+
return owners[0];
|
|
128
|
+
return fail(owners.length
|
|
129
|
+
? `${what} is on several servers (${owners.map((c) => c.serverId).join(', ')}): add server`
|
|
130
|
+
: `no server that presents toolsets has ${what}`);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Resolve a `toolsets--act` call (RFC §8.2) to the dynamic tool it calls,
|
|
134
|
+
* or the reason it can't be sent. The framework then dispatches it exactly as
|
|
135
|
+
* a direct call of that tool, with `_meta["mcpl/instance"]` added (RFC §5.5).
|
|
136
|
+
* Refused here, before anything is sent: a tool no presenting server has, a
|
|
137
|
+
* static tool (it's in the tool list), an instance that isn't named where
|
|
138
|
+
* several are open, a group the host has closed (RFC §5.4), and arguments
|
|
139
|
+
* that don't fit the definition in force for that instance (RFC §6.1).
|
|
140
|
+
*/
|
|
141
|
+
export function resolveAct(hub, input) {
|
|
142
|
+
try {
|
|
143
|
+
const args = isObj(input) ? input : {};
|
|
144
|
+
const tool = str(args.tool) ?? fail('name the tool');
|
|
145
|
+
const c = owner(hub, args.server, (x) => !!x.presence.tool(tool), `a tool "${tool}"`);
|
|
146
|
+
const p = c.presence;
|
|
147
|
+
if (!p.tool(tool))
|
|
148
|
+
fail(`${c.serverId} has no tool "${tool}": ${META_TOOL_NAMES.look} {server:"${c.serverId}"} shows what's available`);
|
|
149
|
+
if (p.presenceOf(tool) === 'static')
|
|
150
|
+
fail(`${tool} is not a dynamic tool: ${p.toolStatus(tool)}. Call it there.`);
|
|
151
|
+
if (args.args !== undefined && !isObj(args.args))
|
|
152
|
+
fail('args must be an object of the tool\'s arguments');
|
|
153
|
+
const callArgs = (args.args ?? {});
|
|
154
|
+
let instance = str(args.instance);
|
|
155
|
+
const ts = p.toolsetOf(tool);
|
|
156
|
+
const declared = ts !== undefined && p.isDeclared(ts);
|
|
157
|
+
const withInstances = declared && !!p.declared[ts].instances;
|
|
158
|
+
if (withInstances && !instance) {
|
|
159
|
+
// RFC §5.5: the instance rides in _meta; with exactly one open, it's that one.
|
|
160
|
+
const open = p.openRecords(ts);
|
|
161
|
+
if (open.length === 1)
|
|
162
|
+
instance = open[0].instance;
|
|
163
|
+
else if (!open.length)
|
|
164
|
+
fail(`${tool} belongs to ${ts}, which isn't open: ${p.openHint(ts)}`);
|
|
165
|
+
else
|
|
166
|
+
fail(`several ${ts} instances are open (${open.map((o) => o.instance).join(', ')}): say which with instance`);
|
|
167
|
+
}
|
|
168
|
+
if (instance && !withInstances)
|
|
169
|
+
fail(`${tool} ${ts ? `belongs to ${ts}, which has no instances` : 'belongs to no toolset'}: call it without instance`);
|
|
170
|
+
// RFC §5.4: the host gates calls into an undeclared group it has closed.
|
|
171
|
+
if (ts && !declared && !p.isOpen(ts))
|
|
172
|
+
fail(`${tool} is in ${ts}, which isn't open: ${p.openHint(ts)}`);
|
|
173
|
+
// RFC §6.1: arguments are checked against the definition in force for
|
|
174
|
+
// that instance: its own from hints (the legal moves of one game), else
|
|
175
|
+
// the toolset's, else the listed one.
|
|
176
|
+
const key = ts ? keyOf(ts, withInstances ? instance : undefined) : keyOf('');
|
|
177
|
+
const problem = checkArgs(p.defOf(key, tool).inputSchema, callArgs);
|
|
178
|
+
if (problem) {
|
|
179
|
+
fail(`Invalid arguments for ${tool} in ${p.label(key)}: ${problem}. Nothing was sent; ` +
|
|
180
|
+
`${META_TOOL_NAMES.look} {server:"${c.serverId}", tool:"${tool}"${instance ? `, instance:"${instance}"` : ''}} shows its current definition.`);
|
|
181
|
+
}
|
|
182
|
+
return { ok: true, serverId: c.serverId, tool, ...(instance ? { instance } : {}), args: callArgs };
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
if (error instanceof MetaError)
|
|
186
|
+
return { ok: false, error: error.message };
|
|
187
|
+
throw error;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
export class ToolsetsModule {
|
|
191
|
+
hub;
|
|
192
|
+
name = TOOLSETS_MODULE;
|
|
193
|
+
constructor(hub) {
|
|
194
|
+
this.hub = hub;
|
|
195
|
+
}
|
|
196
|
+
async start(_ctx) { }
|
|
197
|
+
async stop() { }
|
|
198
|
+
getTools() {
|
|
199
|
+
return META_TOOLS;
|
|
200
|
+
}
|
|
201
|
+
async onProcess(_event, _state) {
|
|
202
|
+
return {};
|
|
203
|
+
}
|
|
204
|
+
/** RFC §8.3: the reminder due for this agent, stored where compile() would place it. */
|
|
205
|
+
async gatherContext(agentName) {
|
|
206
|
+
const reminder = this.hub.reminderFor(agentName);
|
|
207
|
+
if (!reminder)
|
|
208
|
+
return [];
|
|
209
|
+
return [{ namespace: TOOLSETS_REMINDER_NAMESPACE, position: 'afterUser', content: [{ type: 'text', text: reminder }] }];
|
|
210
|
+
}
|
|
211
|
+
async handleToolCall(call) {
|
|
212
|
+
const args = isObj(call.input) ? call.input : {};
|
|
213
|
+
try {
|
|
214
|
+
switch (call.name) {
|
|
215
|
+
case 'open': return await this.open(args);
|
|
216
|
+
case 'act': return this.act(args);
|
|
217
|
+
case 'look': return await this.look(args);
|
|
218
|
+
case 'close': return await this.close(args);
|
|
219
|
+
default: return { success: false, isError: true, error: unknownToolMessage(this.name, call.name, META_TOOLS) };
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
const message = error instanceof MetaError
|
|
224
|
+
? error.message
|
|
225
|
+
: `${META_TOOL_NAMES[call.name] ?? call.name}: ${error instanceof Error ? error.message : String(error)}`;
|
|
226
|
+
return { success: false, isError: true, error: message };
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
toolsAt(c, key) {
|
|
230
|
+
return [...(c.presence.view().get(key)?.tools.values() ?? [])];
|
|
231
|
+
}
|
|
232
|
+
/** A change set rendered without the key the caller already showed whole. */
|
|
233
|
+
renderOthers(c, cs, key) {
|
|
234
|
+
return c.presence.render({ ...cs, changes: cs.changes.filter((ch) => ch.key !== key) });
|
|
235
|
+
}
|
|
236
|
+
// ── the tools ──
|
|
237
|
+
async open(args) {
|
|
238
|
+
let toolset = str(args.toolset);
|
|
239
|
+
const c = toolset && !str(args.server)
|
|
240
|
+
? owner(this.hub, undefined, (x) => x.presence.isDeclared(toolset) || x.presence.undeclaredGroups.includes(toolset), `a toolset "${toolset}"`)
|
|
241
|
+
: pick(this.hub, args.server);
|
|
242
|
+
const p = c.presence;
|
|
243
|
+
const openable = [...Object.keys(p.declared), ...p.undeclaredGroups];
|
|
244
|
+
if (!toolset) {
|
|
245
|
+
if (openable.length !== 1)
|
|
246
|
+
fail(`${c.serverId} has ${openable.length ? `several toolsets: name one of ${openable.join(', ')}` : 'no toolsets'}`);
|
|
247
|
+
toolset = openable[0];
|
|
248
|
+
}
|
|
249
|
+
const instance = str(args.instance);
|
|
250
|
+
if (args.options !== undefined && !isObj(args.options))
|
|
251
|
+
fail('options must be an object');
|
|
252
|
+
const options = args.options;
|
|
253
|
+
if (p.isDeclared(toolset)) {
|
|
254
|
+
if (instance && !p.declared[toolset].instances)
|
|
255
|
+
fail(`${c.serverId}/${toolset} has no instances: open it without one`);
|
|
256
|
+
let opened;
|
|
257
|
+
try {
|
|
258
|
+
opened = await c.open(toolset, instance, options);
|
|
259
|
+
}
|
|
260
|
+
catch (error) {
|
|
261
|
+
return fail(`${c.serverId} did not open ${toolset}: ${error instanceof Error ? error.message : String(error)}`);
|
|
262
|
+
}
|
|
263
|
+
// RFC §5.2: opening what is open adopts it; its content says which options weren't applied.
|
|
264
|
+
const blocks = [
|
|
265
|
+
{ type: 'text', text: `${p.label(opened.key)}${opened.title ? ` ${opened.title}` : ''}${opened.adopted ? ' (already open)' : ''}` },
|
|
266
|
+
...asBlocks(opened.content),
|
|
267
|
+
];
|
|
268
|
+
const tail = [...p.toolBlock(opened.key, this.toolsAt(c, opened.key), { headed: false })];
|
|
269
|
+
const gone = opened.change.changes.find((ch) => ch.key === opened.key)?.gone ?? [];
|
|
270
|
+
if (gone.length)
|
|
271
|
+
tail.push(`now unavailable: ${gone.join(', ')}`);
|
|
272
|
+
const others = this.renderOthers(c, opened.change, opened.key);
|
|
273
|
+
if (others)
|
|
274
|
+
tail.push(others);
|
|
275
|
+
const close = p.closeHint(opened.key);
|
|
276
|
+
if (close)
|
|
277
|
+
tail.push(`${close} closes it.`);
|
|
278
|
+
blocks.push({ type: 'text', text: tail.join('\n') });
|
|
279
|
+
return blocksResult(blocks);
|
|
280
|
+
}
|
|
281
|
+
if (p.undeclaredGroups.includes(toolset)) {
|
|
282
|
+
// RFC §5.4: a grouping the server offers but doesn't track: the host opens it, the server isn't told.
|
|
283
|
+
if (instance || options)
|
|
284
|
+
fail(`${c.serverId}/${toolset} takes no instance or options (the server doesn't declare it)`);
|
|
285
|
+
const cs = c.setGroupOpen(toolset, true);
|
|
286
|
+
const key = keyOf(toolset);
|
|
287
|
+
const lines = [`${p.label(key)} open.`, ...p.toolBlock(key, this.toolsAt(c, key), { headed: false })];
|
|
288
|
+
const others = this.renderOthers(c, cs, key);
|
|
289
|
+
if (others)
|
|
290
|
+
lines.push(others);
|
|
291
|
+
lines.push(`${p.closeHint(key)} closes it.`);
|
|
292
|
+
return textResult(lines.join('\n'));
|
|
293
|
+
}
|
|
294
|
+
return fail(`${c.serverId} has no toolset "${toolset}"${openable.length ? `; it has ${openable.join(', ')}` : ''}`);
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* act is dispatched by the framework, not here: it resolves the call
|
|
298
|
+
* (resolveAct) and sends it down the same path as a direct call of the
|
|
299
|
+
* server's tool, so state, results, refusals and lifecycle are the same.
|
|
300
|
+
* A caller that reaches the module itself gets the resolution's refusal,
|
|
301
|
+
* or this.
|
|
302
|
+
*/
|
|
303
|
+
act(args) {
|
|
304
|
+
const target = resolveAct(this.hub, args);
|
|
305
|
+
if (!target.ok)
|
|
306
|
+
return { success: false, isError: true, error: target.error };
|
|
307
|
+
return { success: false, isError: true, error: `${META_TOOL_NAMES.act} is dispatched by the framework; nothing was sent` };
|
|
308
|
+
}
|
|
309
|
+
/** look restates the present: titles and visibility are re-read from the servers first (toolsets/list). */
|
|
310
|
+
async look(args) {
|
|
311
|
+
const server = str(args.server);
|
|
312
|
+
const targets = server ? [this.hub.get(server)].filter((c) => !!c && c.presents) : this.hub.presenting();
|
|
313
|
+
const notes = (await Promise.all(targets.map((c) => c.refreshOpen().catch(() => [])))).flat();
|
|
314
|
+
const result = this.lookNow(args, server, str(args.tool));
|
|
315
|
+
return notes.length && !result.isError && typeof result.data === 'string' ? textResult(`${result.data}\n${notes.join('\n')}`) : result;
|
|
316
|
+
}
|
|
317
|
+
lookNow(args, server, tool) {
|
|
318
|
+
if (!server) {
|
|
319
|
+
if (tool)
|
|
320
|
+
return this.lookTool(owner(this.hub, undefined, (c) => !!c.presence.tool(tool), `a tool "${tool}"`), tool, str(args.instance));
|
|
321
|
+
const ts = str(args.toolset);
|
|
322
|
+
const inst = str(args.instance);
|
|
323
|
+
if (ts || inst) {
|
|
324
|
+
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}"`);
|
|
325
|
+
return this.lookNow(args, c.serverId, tool);
|
|
326
|
+
}
|
|
327
|
+
const all = this.hub.presenting();
|
|
328
|
+
if (!all.length)
|
|
329
|
+
return textResult('No MCPL server presents toolsets or dynamic tools now; every tool is in your tool list.');
|
|
330
|
+
return textResult(all.map((c) => c.presence.catalog()).join('\n\n'));
|
|
331
|
+
}
|
|
332
|
+
const c = pick(this.hub, server);
|
|
333
|
+
if (tool)
|
|
334
|
+
return this.lookTool(c, tool, str(args.instance));
|
|
335
|
+
const p = c.presence;
|
|
336
|
+
let toolset = str(args.toolset);
|
|
337
|
+
const instance = str(args.instance);
|
|
338
|
+
if (!toolset && instance)
|
|
339
|
+
toolset = p.openRecords().find((o) => o.instance === instance)?.toolset ?? fail(`no open instance "${instance}" on ${c.serverId}`);
|
|
340
|
+
if (!toolset)
|
|
341
|
+
return textResult(p.catalog());
|
|
342
|
+
if (p.isOpen(toolset, instance) || (!instance && p.openRecords(toolset).length === 1)) {
|
|
343
|
+
const rec = p.isDeclared(toolset) ? (instance ? p.openRecords(toolset).find((o) => o.instance === instance) : p.openRecords(toolset)[0]) : undefined;
|
|
344
|
+
const key = keyOf(toolset, rec?.instance);
|
|
345
|
+
const lines = p.toolBlock(key, this.toolsAt(c, key), { describeAll: true, title: rec?.title });
|
|
346
|
+
const close = p.closeHint(key);
|
|
347
|
+
if (close)
|
|
348
|
+
lines.push(`${close} closes it.`);
|
|
349
|
+
return textResult(lines.join('\n'));
|
|
350
|
+
}
|
|
351
|
+
const d = p.declared[toolset];
|
|
352
|
+
if (d) {
|
|
353
|
+
const open = p.openRecords(toolset);
|
|
354
|
+
return textResult([
|
|
355
|
+
`${c.serverId}/${toolset}${d.title ? ` — ${d.title}` : ''}${d.summary ? `: ${d.summary}` : ''}`,
|
|
356
|
+
open.length ? `open: ${open.map((o) => o.instance ?? toolset).join(', ')}` : 'not open',
|
|
357
|
+
...(d.instances ? ['several can be open at once; name each with instance'] : []),
|
|
358
|
+
...(d.options ? [`options: ${JSON.stringify(d.options)}`] : []),
|
|
359
|
+
`${p.openHint(toolset)} opens it.`,
|
|
360
|
+
].join('\n'));
|
|
361
|
+
}
|
|
362
|
+
if (p.undeclaredGroups.includes(toolset)) {
|
|
363
|
+
const names = p.allTools.filter((t) => p.toolsetOf(t.name) === toolset).map((t) => t.name);
|
|
364
|
+
return textResult(`${c.serverId}/${toolset}: ${names.join(', ')}; not open: ${p.openHint(toolset)} opens it.`);
|
|
365
|
+
}
|
|
366
|
+
return fail(`${c.serverId} has no toolset "${toolset}"`);
|
|
367
|
+
}
|
|
368
|
+
lookTool(c, tool, instance) {
|
|
369
|
+
const p = c.presence;
|
|
370
|
+
if (!p.tool(tool))
|
|
371
|
+
fail(`${c.serverId} has no tool "${tool}"`);
|
|
372
|
+
const ts = p.toolsetOf(tool);
|
|
373
|
+
const where = [...p.view().entries()].filter(([, e]) => e.tools.has(tool)).map(([k]) => k);
|
|
374
|
+
const key = instance && ts ? keyOf(ts, instance) : where[0];
|
|
375
|
+
const def = key ? p.defOf(key, tool) : p.tool(tool);
|
|
376
|
+
return textResult(`${renderToolDefinition(def)}\n${p.toolStatus(tool)}`);
|
|
377
|
+
}
|
|
378
|
+
async close(args) {
|
|
379
|
+
const named = str(args.toolset);
|
|
380
|
+
const c = named && !str(args.server)
|
|
381
|
+
? owner(this.hub, undefined, (x) => x.presence.isOpen(named, str(args.instance)) || x.presence.openRecords(named).length > 0, `an open toolset "${named}"`)
|
|
382
|
+
: pick(this.hub, args.server);
|
|
383
|
+
const p = c.presence;
|
|
384
|
+
let toolset = named;
|
|
385
|
+
let instance = str(args.instance);
|
|
386
|
+
if (!toolset) {
|
|
387
|
+
const open = [
|
|
388
|
+
...p.openRecords().filter((o) => !instance || o.instance === instance),
|
|
389
|
+
...(instance ? [] : p.openGroups.map((g) => ({ toolset: g, instance: undefined }))),
|
|
390
|
+
];
|
|
391
|
+
if (open.length !== 1) {
|
|
392
|
+
fail(open.length
|
|
393
|
+
? `several are open on ${c.serverId}: name one of ${open.map((o) => `${o.toolset}${o.instance ? `:${o.instance}` : ''}`).join(', ')}`
|
|
394
|
+
: `nothing is open on ${c.serverId}`);
|
|
395
|
+
}
|
|
396
|
+
toolset = open[0].toolset;
|
|
397
|
+
instance = open[0].instance;
|
|
398
|
+
}
|
|
399
|
+
if (p.isDeclared(toolset)) {
|
|
400
|
+
// As open refuses one: a toolset without instances is closed without one.
|
|
401
|
+
if (instance && !p.declared[toolset].instances)
|
|
402
|
+
fail(`${c.serverId}/${toolset} has no instances: close it without one`);
|
|
403
|
+
if (p.declared[toolset].instances && !instance) {
|
|
404
|
+
const open = p.openRecords(toolset);
|
|
405
|
+
if (open.length !== 1)
|
|
406
|
+
fail(open.length ? `several ${toolset} instances are open (${open.map((o) => o.instance).join(', ')}): say which` : `${toolset} is not open`);
|
|
407
|
+
instance = open[0].instance;
|
|
408
|
+
}
|
|
409
|
+
let closed;
|
|
410
|
+
try {
|
|
411
|
+
closed = await c.close(toolset, instance);
|
|
412
|
+
}
|
|
413
|
+
catch (error) {
|
|
414
|
+
return fail(`${c.serverId} did not close ${toolset}${instance ? `:${instance}` : ''}: ${error instanceof Error ? error.message : String(error)}`);
|
|
415
|
+
}
|
|
416
|
+
const key = keyOf(toolset, instance);
|
|
417
|
+
const change = p.render(closed.change) || `${p.label(key)} closed.`;
|
|
418
|
+
return blocksResult([...asBlocks(closed.content), { type: 'text', text: change }]);
|
|
419
|
+
}
|
|
420
|
+
if (p.undeclaredGroups.includes(toolset)) {
|
|
421
|
+
if (instance)
|
|
422
|
+
fail(`${c.serverId}/${toolset} takes no instance (the server doesn't declare it)`);
|
|
423
|
+
if (!p.isOpen(toolset))
|
|
424
|
+
fail(`${c.serverId}/${toolset} is not open`);
|
|
425
|
+
const cs = c.setGroupOpen(toolset, false);
|
|
426
|
+
return textResult(p.render(cs) || `${p.label(keyOf(toolset))} closed.`);
|
|
427
|
+
}
|
|
428
|
+
return fail(`${c.serverId} has no toolset "${toolset}"`);
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
//# sourceMappingURL=toolsets-module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolsets-module.js","sourceRoot":"","sources":["../../../src/mcpl/toolsets-module.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,eAAe,EAA2C,MAAM,mBAAmB,CAAC;AAC9G,OAAO,EAAE,KAAK,EAAkB,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAmB,MAAM,qBAAqB,CAAC;AAEvF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,2BAA2B,GAAG,eAAe,CAAC;AAE3D,MAAM,UAAU,GAAqB;IACnC;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EACT,0HAA0H;YAC1H,gIAAgI;YAChI,+HAA+H;YAC/H,uCAAuC;QACzC,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;gBAC7D,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qDAAqD,EAAE;gBAChG,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+CAA+C,EAAE;aAC1F;SACF;KACF;IACD;QACE,IAAI,EAAE,KAAK;QACX,WAAW,EACT,2IAA2I;YAC3I,wJAAwJ;YACxJ,6EAA6E;QAC/E,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iEAAiE,EAAE;gBAC1G,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qDAAqD,EAAE;gBAChG,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aACzB;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EACT,qJAAqJ;YACrJ,qGAAqG;QACvG,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC5B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aACzB;SACF;KACF;IACD;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,uHAAuH;QACpI,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2EAA2E,EAAE;gBACpH,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2DAA2D,EAAE;gBACrG,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC7B;SACF;KACF;CACF,CAAC;AAEF,MAAM,GAAG,GAAG,CAAC,CAAU,EAAsB,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC3G,MAAM,KAAK,GAAG,CAAC,CAAU,EAAgC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAIrH,MAAM,SAAU,SAAQ,KAAK;CAAG;AAChC,MAAM,IAAI,GAAG,CAAC,OAAe,EAAS,EAAE;IACtC,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,0BAA0B;AAC1B,MAAM,UAAU,GAAG,CAAC,IAAY,EAAc,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAEjF,qEAAqE;AACrE,SAAS,SAAS,CAAC,MAAe;IAChC,MAAM,GAAG,GAAY,EAAE,CAAC;IACxB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI;YAAE,SAAS;QAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,EAAE,IAAI,KAAK,MAAM;YAAE,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;;YACnH,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,mFAAmF;AACnF,SAAS,YAAY,CAAC,MAAe,EAAE,OAAO,GAAG,KAAK;IACpD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9F,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,mCAAmC,EAAE,CAAC;IAC/F,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;QAAE,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1G,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,OAAkB,EAAW,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAc,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AAG5H,4BAA4B;AAE5B,SAAS,IAAI,CAAC,GAAe,EAAE,MAAe;IAC5C,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAE,CAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,wCAAwC,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtB,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC,cAAc,EAAE,0CAA0C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;IAC1G,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,2DAA2D,CAAC,CAAC;IACtG,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;GAGG;AACH,SAAS,KAAK,CAAC,GAAe,EAAE,MAAe,EAAE,GAAsC,EAAE,IAAY;IACnG,IAAI,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,CAAC,CAAE,CAAC;IAC3C,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM;QACvB,CAAC,CAAC,GAAG,IAAI,2BAA2B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe;QAC3F,CAAC,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC;AACtD,CAAC;AAKD;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,GAAe,EAAE,KAAc;IACxD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC;QACrD,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,IAAI,GAAG,CAAC,CAAC;QACtF,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QACrB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,iBAAiB,IAAI,MAAM,eAAe,CAAC,IAAI,aAAa,CAAC,CAAC,QAAQ,2BAA2B,CAAC,CAAC;QACxI,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,QAAQ;YAAE,IAAI,CAAC,GAAG,IAAI,2BAA2B,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClH,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAC1G,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC;QAC9D,IAAI,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,QAAQ,GAAG,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,aAAa,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAG,CAAE,CAAC,SAAS,CAAC;QAC/D,IAAI,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/B,+EAA+E;YAC/E,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC;iBAC/C,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,IAAI,CAAC,GAAG,IAAI,eAAe,EAAE,uBAAuB,CAAC,CAAC,QAAQ,CAAC,EAAG,CAAC,EAAE,CAAC,CAAC;;gBACzF,IAAI,CAAC,WAAW,EAAE,wBAAwB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACrH,CAAC;QACD,IAAI,QAAQ,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC,CAAC,uBAAuB,4BAA4B,CAAC,CAAC;QACvJ,yEAAyE;QACzE,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YAAE,IAAI,CAAC,GAAG,IAAI,UAAU,EAAE,uBAAuB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACvG,sEAAsE;QACtE,wEAAwE;QACxE,sCAAsC;QACtC,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACpE,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,yBAAyB,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,sBAAsB;gBACrF,GAAG,eAAe,CAAC,IAAI,aAAa,CAAC,CAAC,QAAQ,YAAY,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,eAAe,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAC;QACnJ,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACrG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,SAAS;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3E,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,OAAO,cAAc;IAGI,GAAG;IAFvB,IAAI,GAAG,eAAe,CAAC;IAEhC,YAA6B,GAAe;mBAAf,GAAG;IAAe,CAAC;IAEhD,KAAK,CAAC,KAAK,CAAC,IAAmB,IAAkB,CAAC;IAClD,KAAK,CAAC,IAAI,KAAmB,CAAC;IAE9B,QAAQ;QACN,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAoB,EAAE,MAAoB;QACxD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,wFAAwF;IACxF,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QACzB,OAAO,CAAC,EAAE,SAAS,EAAE,2BAA2B,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1H,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAc;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC;YACH,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,MAAM,EAAE,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1C,KAAK,KAAK,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAClC,KAAK,MAAM,EAAE,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1C,KAAK,OAAO,EAAE,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5C,SAAS,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;YACjH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,SAAS;gBACxC,CAAC,CAAC,KAAK,CAAC,OAAO;gBACf,CAAC,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,IAAoC,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5I,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAC3D,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,CAAoB,EAAE,GAAW;QAC/C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,6EAA6E;IACrE,YAAY,CAAC,CAAoB,EAAE,EAAa,EAAE,GAAW;QACnE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,kBAAkB;IAEV,KAAK,CAAC,IAAI,CAAC,IAA6B;QAC9C,IAAI,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;YACpC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAQ,CAAC,EAAE,cAAc,OAAO,GAAG,CAAC;YAChJ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QACrB,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,QAAQ,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,iCAAiC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;YACjJ,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;QACzB,CAAC;QACD,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC1F,MAAM,OAAO,GAAG,IAAI,CAAC,OAA8C,CAAC;QAEpE,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,IAAI,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAE,CAAC,SAAS;gBAAE,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,OAAO,wCAAwC,CAAC,CAAC;YACxH,IAAI,MAAsD,CAAC;YAC3D,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,iBAAiB,OAAO,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClH,CAAC;YACD,4FAA4F;YAC5F,MAAM,MAAM,GAAY;gBACtB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;gBACnI,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;aAC5B,CAAC;YACF,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAC1F,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;YACnF,IAAI,IAAI,CAAC,MAAM;gBAAE,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/D,IAAI,MAAM;gBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,KAAK;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrD,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACzC,sGAAsG;YACtG,IAAI,QAAQ,IAAI,OAAO;gBAAE,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,OAAO,+DAA+D,CAAC,CAAC;YACvH,MAAM,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3B,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACtG,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC7C,IAAI,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC7C,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,oBAAoB,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtH,CAAC;IAED;;;;;;OAMG;IACK,GAAG,CAAC,IAA6B;QACvC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAC9E,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC,GAAG,mDAAmD,EAAE,CAAC;IAC7H,CAAC;IAED,2GAA2G;IACnG,KAAK,CAAC,IAAI,CAAC,IAA6B;QAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAA0B,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QACjI,MAAM,KAAK,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1G,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACzI,CAAC;IAEO,OAAO,CAAC,IAA6B,EAAE,MAA0B,EAAE,IAAwB;QACjG,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YACzI,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;gBACf,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EACtB,SAAS,EACT,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,EAClK,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,mBAAmB,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,IAAI,GAAG,CACjG,CAAC;gBACF,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,MAAM;gBAAE,OAAO,UAAU,CAAC,yFAAyF,CAAC,CAAC;YAC9H,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QACrB,IAAI,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,IAAI,QAAQ;YAAE,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,qBAAqB,QAAQ,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7J,IAAI,CAAC,OAAO;YAAE,OAAO,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YACtF,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACrJ,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC1C,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/F,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC;YAC7C,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC;YACN,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACpC,OAAO,UAAU,CAAC;gBAChB,GAAG,CAAC,CAAC,QAAQ,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC/F,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;gBACvF,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,sDAAsD,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChF,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/D,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY;aACnC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3F,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACjH,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,oBAAoB,OAAO,GAAG,CAAC,CAAC;IAC3D,CAAC;IAEO,QAAQ,CAAC,CAAoB,EAAE,IAAY,EAAE,QAA4B;QAC/E,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QACrB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,iBAAiB,IAAI,GAAG,CAAC,CAAC;QAC/D,MAAM,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3F,MAAM,GAAG,GAAG,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC;QACrD,OAAO,UAAU,CAAC,GAAG,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,IAA6B;QAC/C,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;YAClC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,oBAAoB,KAAK,GAAG,CAAC;YAC3J,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QACrB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,GAAG;gBACX,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;gBACtE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,SAA+B,EAAE,CAAC,CAAC,CAAC;aAC1G,CAAC;YACF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,IAAI,CAAC,MAAM;oBACd,CAAC,CAAC,uBAAuB,CAAC,CAAC,QAAQ,iBAAiB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACrI,CAAC,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1C,CAAC;YACD,OAAO,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC;YAC3B,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,CAAC,OAAQ,CAAC,EAAE,CAAC;YAC3B,0EAA0E;YAC1E,IAAI,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAQ,CAAE,CAAC,SAAS;gBAAE,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,OAAO,yCAAyC,CAAC,CAAC;YAC1H,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAQ,CAAE,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjD,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBACpC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;oBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,OAAO,wBAAwB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,cAAc,CAAC,CAAC;gBACrK,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC;YAC/B,CAAC;YACD,IAAI,MAAuD,CAAC;YAC5D,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,OAAQ,EAAE,QAAQ,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,kBAAkB,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpJ,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAQ,EAAE,QAAQ,CAAC,CAAC;YACtC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC;YACpE,OAAO,YAAY,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAQ,CAAC,EAAE,CAAC;YAC1C,IAAI,QAAQ;gBAAE,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,OAAO,oDAAoD,CAAC,CAAC;YACjG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAQ,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,OAAO,cAAc,CAAC,CAAC;YACtE,MAAM,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,OAAQ,EAAE,KAAK,CAAC,CAAC;YAC3C,OAAO,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAQ,CAAC,CAAC,UAAU,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,oBAAoB,OAAO,GAAG,CAAC,CAAC;IAC3D,CAAC;CACF"}
|
|
@@ -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
|
|
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
|
|
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
|