@animalabs/agent-framework 0.7.4 → 0.9.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/dist/src/agent.d.ts +10 -0
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +33 -3
- package/dist/src/agent.js.map +1 -1
- package/dist/src/code-execution/index.d.ts +1 -1
- package/dist/src/code-execution/index.d.ts.map +1 -1
- package/dist/src/code-execution/index.js.map +1 -1
- package/dist/src/code-execution/py-runner.d.ts +23 -1
- package/dist/src/code-execution/py-runner.d.ts.map +1 -1
- package/dist/src/code-execution/py-runner.js +40 -4
- package/dist/src/code-execution/py-runner.js.map +1 -1
- package/dist/src/code-execution/runtime-py.d.ts +15 -2
- package/dist/src/code-execution/runtime-py.d.ts.map +1 -1
- package/dist/src/code-execution/runtime-py.js +156 -7
- package/dist/src/code-execution/runtime-py.js.map +1 -1
- package/dist/src/code-execution/tool-definition.d.ts.map +1 -1
- package/dist/src/code-execution/tool-definition.js +27 -2
- package/dist/src/code-execution/tool-definition.js.map +1 -1
- package/dist/src/framework.d.ts +234 -5
- package/dist/src/framework.d.ts.map +1 -1
- package/dist/src/framework.js +1818 -188
- package/dist/src/framework.js.map +1 -1
- package/dist/src/gate/event-gate.d.ts +11 -0
- package/dist/src/gate/event-gate.d.ts.map +1 -1
- package/dist/src/gate/event-gate.js +66 -0
- package/dist/src/gate/event-gate.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcpl/capability-grant.d.ts +115 -0
- package/dist/src/mcpl/capability-grant.d.ts.map +1 -0
- package/dist/src/mcpl/capability-grant.js +291 -0
- package/dist/src/mcpl/capability-grant.js.map +1 -0
- package/dist/src/mcpl/capability-mask.d.ts +51 -0
- package/dist/src/mcpl/capability-mask.d.ts.map +1 -0
- package/dist/src/mcpl/capability-mask.js +190 -0
- package/dist/src/mcpl/capability-mask.js.map +1 -0
- package/dist/src/mcpl/channel-registry.d.ts +30 -2
- package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
- package/dist/src/mcpl/channel-registry.js +216 -43
- package/dist/src/mcpl/channel-registry.js.map +1 -1
- package/dist/src/mcpl/checkpoint-manager.d.ts +8 -3
- package/dist/src/mcpl/checkpoint-manager.d.ts.map +1 -1
- package/dist/src/mcpl/checkpoint-manager.js +28 -8
- package/dist/src/mcpl/checkpoint-manager.js.map +1 -1
- package/dist/src/mcpl/errors.d.ts +6 -0
- package/dist/src/mcpl/errors.d.ts.map +1 -1
- package/dist/src/mcpl/errors.js +6 -0
- package/dist/src/mcpl/errors.js.map +1 -1
- package/dist/src/mcpl/feature-set-manager.d.ts +10 -1
- package/dist/src/mcpl/feature-set-manager.d.ts.map +1 -1
- package/dist/src/mcpl/feature-set-manager.js +45 -4
- package/dist/src/mcpl/feature-set-manager.js.map +1 -1
- package/dist/src/mcpl/hook-orchestrator.d.ts +10 -14
- package/dist/src/mcpl/hook-orchestrator.d.ts.map +1 -1
- package/dist/src/mcpl/hook-orchestrator.js +58 -67
- package/dist/src/mcpl/hook-orchestrator.js.map +1 -1
- package/dist/src/mcpl/index.d.ts +1 -1
- package/dist/src/mcpl/index.d.ts.map +1 -1
- package/dist/src/mcpl/index.js.map +1 -1
- package/dist/src/mcpl/prose-stream-router.d.ts +9 -0
- package/dist/src/mcpl/prose-stream-router.d.ts.map +1 -1
- package/dist/src/mcpl/prose-stream-router.js +16 -0
- package/dist/src/mcpl/prose-stream-router.js.map +1 -1
- package/dist/src/mcpl/push-handler.d.ts.map +1 -1
- package/dist/src/mcpl/push-handler.js +20 -2
- package/dist/src/mcpl/push-handler.js.map +1 -1
- package/dist/src/mcpl/server-connection.d.ts +93 -9
- package/dist/src/mcpl/server-connection.d.ts.map +1 -1
- package/dist/src/mcpl/server-connection.js +231 -32
- package/dist/src/mcpl/server-connection.js.map +1 -1
- package/dist/src/mcpl/server-registry.d.ts.map +1 -1
- package/dist/src/mcpl/server-registry.js +4 -3
- package/dist/src/mcpl/server-registry.js.map +1 -1
- package/dist/src/mcpl/tags.d.ts +24 -0
- package/dist/src/mcpl/tags.d.ts.map +1 -0
- package/dist/src/mcpl/tags.js +52 -0
- package/dist/src/mcpl/tags.js.map +1 -0
- package/dist/src/mcpl/transport.d.ts +1 -1
- package/dist/src/mcpl/transport.d.ts.map +1 -1
- package/dist/src/mcpl/transport.js +35 -7
- package/dist/src/mcpl/transport.js.map +1 -1
- package/dist/src/mcpl/types.d.ts +169 -64
- package/dist/src/mcpl/types.d.ts.map +1 -1
- package/dist/src/mcpl/types.js +16 -2
- package/dist/src/mcpl/types.js.map +1 -1
- package/dist/src/module-registry.d.ts +12 -0
- package/dist/src/module-registry.d.ts.map +1 -1
- package/dist/src/module-registry.js +26 -0
- package/dist/src/module-registry.js.map +1 -1
- package/dist/src/modules/workspace/index.d.ts +20 -0
- package/dist/src/modules/workspace/index.d.ts.map +1 -1
- package/dist/src/modules/workspace/index.js +48 -15
- package/dist/src/modules/workspace/index.js.map +1 -1
- package/dist/src/modules/workspace/sync.d.ts +4 -0
- package/dist/src/modules/workspace/sync.d.ts.map +1 -1
- package/dist/src/modules/workspace/sync.js +1 -1
- package/dist/src/modules/workspace/sync.js.map +1 -1
- package/dist/src/refusal-reactions.d.ts +27 -0
- package/dist/src/refusal-reactions.d.ts.map +1 -0
- package/dist/src/refusal-reactions.js +35 -0
- package/dist/src/refusal-reactions.js.map +1 -0
- package/dist/src/tool-result-history.d.ts +10 -0
- package/dist/src/tool-result-history.d.ts.map +1 -1
- package/dist/src/tool-result-history.js +16 -5
- package/dist/src/tool-result-history.js.map +1 -1
- package/dist/src/types/agent.d.ts +35 -0
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/framework.d.ts +26 -0
- package/dist/src/types/framework.d.ts.map +1 -1
- package/dist/src/types/module.d.ts +22 -0
- package/dist/src/types/module.d.ts.map +1 -1
- package/dist/src/types/trace.d.ts +24 -0
- package/dist/src/types/trace.d.ts.map +1 -1
- package/dist/test/busy-agent-scheduler.test.js +1 -0
- package/dist/test/busy-agent-scheduler.test.js.map +1 -1
- package/dist/test/channel-registry-routing.test.js +38 -10
- package/dist/test/channel-registry-routing.test.js.map +1 -1
- package/dist/test/channel-registry-typing.test.js +10 -1
- package/dist/test/channel-registry-typing.test.js.map +1 -1
- package/dist/test/checkpoint-attribution.test.js +168 -8
- package/dist/test/checkpoint-attribution.test.js.map +1 -1
- package/dist/test/code-execution.test.js +327 -1
- package/dist/test/code-execution.test.js.map +1 -1
- package/dist/test/conversation-fork-injection-scoping.test.js +8 -3
- package/dist/test/conversation-fork-injection-scoping.test.js.map +1 -1
- package/dist/test/deferred-wake-integrity.test.d.ts +29 -0
- package/dist/test/deferred-wake-integrity.test.d.ts.map +1 -0
- package/dist/test/deferred-wake-integrity.test.js +320 -0
- package/dist/test/deferred-wake-integrity.test.js.map +1 -0
- package/dist/test/event-gate-selfwake.test.d.ts +15 -0
- package/dist/test/event-gate-selfwake.test.d.ts.map +1 -0
- package/dist/test/event-gate-selfwake.test.js +125 -0
- package/dist/test/event-gate-selfwake.test.js.map +1 -0
- package/dist/test/machine-close-provenance.test.d.ts +2 -0
- package/dist/test/machine-close-provenance.test.d.ts.map +1 -0
- package/dist/test/machine-close-provenance.test.js +116 -0
- package/dist/test/machine-close-provenance.test.js.map +1 -0
- package/dist/test/mcpl-access-provider.test.d.ts +2 -0
- package/dist/test/mcpl-access-provider.test.d.ts.map +1 -0
- package/dist/test/mcpl-access-provider.test.js +20 -0
- package/dist/test/mcpl-access-provider.test.js.map +1 -0
- package/dist/test/mcpl-awareness-barrier.test.js +10 -0
- package/dist/test/mcpl-awareness-barrier.test.js.map +1 -1
- package/dist/test/mcpl-capability-grant.test.d.ts +10 -0
- package/dist/test/mcpl-capability-grant.test.d.ts.map +1 -0
- package/dist/test/mcpl-capability-grant.test.js +109 -0
- package/dist/test/mcpl-capability-grant.test.js.map +1 -0
- package/dist/test/mcpl-capability-scoping.test.d.ts +2 -0
- package/dist/test/mcpl-capability-scoping.test.d.ts.map +1 -0
- package/dist/test/mcpl-capability-scoping.test.js +266 -0
- package/dist/test/mcpl-capability-scoping.test.js.map +1 -0
- package/dist/test/mcpl-gate-roundtrip.test.js +13 -0
- package/dist/test/mcpl-gate-roundtrip.test.js.map +1 -1
- package/dist/test/mcpl-list-status.test.d.ts +2 -0
- package/dist/test/mcpl-list-status.test.d.ts.map +1 -0
- package/dist/test/mcpl-list-status.test.js +78 -0
- package/dist/test/mcpl-list-status.test.js.map +1 -0
- package/dist/test/mcpl-manifest-changed.test.d.ts +2 -0
- package/dist/test/mcpl-manifest-changed.test.d.ts.map +1 -0
- package/dist/test/mcpl-manifest-changed.test.js +177 -0
- package/dist/test/mcpl-manifest-changed.test.js.map +1 -0
- package/dist/test/mcpl-reconnect-events.test.js +27 -2
- package/dist/test/mcpl-reconnect-events.test.js.map +1 -1
- package/dist/test/mcpl-reconnect-reregistration.test.js +53 -17
- package/dist/test/mcpl-reconnect-reregistration.test.js.map +1 -1
- package/dist/test/mcpl-request-timeout.test.js +1 -1
- package/dist/test/mcpl-request-timeout.test.js.map +1 -1
- package/dist/test/module-context-integration.test.d.ts +18 -0
- package/dist/test/module-context-integration.test.d.ts.map +1 -0
- package/dist/test/module-context-integration.test.js +181 -0
- package/dist/test/module-context-integration.test.js.map +1 -0
- package/dist/test/physical-window-restart.test.d.ts +14 -0
- package/dist/test/physical-window-restart.test.d.ts.map +1 -0
- package/dist/test/physical-window-restart.test.js +222 -0
- package/dist/test/physical-window-restart.test.js.map +1 -0
- package/dist/test/present-while-acting.test.js +270 -0
- package/dist/test/present-while-acting.test.js.map +1 -1
- package/dist/test/refusal-reaction-baseline.test.d.ts +2 -0
- package/dist/test/refusal-reaction-baseline.test.d.ts.map +1 -0
- package/dist/test/refusal-reaction-baseline.test.js +74 -0
- package/dist/test/refusal-reaction-baseline.test.js.map +1 -0
- package/dist/test/state-scaling-e2e.test.js +7 -1
- package/dist/test/state-scaling-e2e.test.js.map +1 -1
- package/dist/test/state-scaling.test.js +9 -1
- package/dist/test/state-scaling.test.js.map +1 -1
- package/dist/test/tool-result-spill.test.d.ts +13 -0
- package/dist/test/tool-result-spill.test.d.ts.map +1 -0
- package/dist/test/tool-result-spill.test.js +463 -0
- package/dist/test/tool-result-spill.test.js.map +1 -0
- package/dist/test/trunk-channel-routing.test.js +45 -0
- package/dist/test/trunk-channel-routing.test.js.map +1 -1
- package/dist/test/utils-surface.test.d.ts +2 -0
- package/dist/test/utils-surface.test.d.ts.map +1 -0
- package/dist/test/utils-surface.test.js +145 -0
- package/dist/test/utils-surface.test.js.map +1 -0
- package/dist/test/workspace-read-image.test.js +71 -0
- package/dist/test/workspace-read-image.test.js.map +1 -1
- package/dist/test/workspace-restore-order.test.d.ts +16 -0
- package/dist/test/workspace-restore-order.test.d.ts.map +1 -0
- package/dist/test/workspace-restore-order.test.js +140 -0
- package/dist/test/workspace-restore-order.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/src/agent.ts +37 -3
- package/src/code-execution/index.ts +1 -0
- package/src/code-execution/py-runner.ts +56 -4
- package/src/code-execution/runtime-py.ts +156 -7
- package/src/code-execution/tool-definition.ts +27 -2
- package/src/framework.ts +2080 -203
- package/src/gate/event-gate.ts +72 -0
- package/src/index.ts +1 -0
- package/src/mcpl/capability-grant.ts +319 -0
- package/src/mcpl/capability-mask.ts +228 -0
- package/src/mcpl/channel-registry.ts +265 -43
- package/src/mcpl/checkpoint-manager.ts +28 -8
- package/src/mcpl/errors.ts +7 -0
- package/src/mcpl/feature-set-manager.ts +50 -5
- package/src/mcpl/hook-orchestrator.ts +64 -86
- package/src/mcpl/index.ts +0 -2
- package/src/mcpl/prose-stream-router.ts +17 -0
- package/src/mcpl/push-handler.ts +18 -2
- package/src/mcpl/server-connection.ts +262 -34
- package/src/mcpl/server-registry.ts +4 -3
- package/src/mcpl/tags.ts +50 -0
- package/src/mcpl/transport.ts +37 -7
- package/src/mcpl/types.ts +187 -78
- package/src/module-registry.ts +34 -0
- package/src/modules/workspace/index.ts +49 -15
- package/src/modules/workspace/sync.ts +1 -1
- package/src/refusal-reactions.ts +37 -0
- package/src/tool-result-history.ts +17 -5
- package/src/types/agent.ts +36 -0
- package/src/types/framework.ts +27 -0
- package/src/types/module.ts +24 -0
- package/src/types/trace.ts +22 -0
|
@@ -3,18 +3,26 @@
|
|
|
3
3
|
*
|
|
4
4
|
* This is the bridge between the MCPL protocol and the agent-framework inference
|
|
5
5
|
* pipeline. It collects ContextInjection[] from MCPL servers via beforeInference
|
|
6
|
-
* and feeds them into context-manager's compile().
|
|
7
|
-
*
|
|
6
|
+
* and feeds them into context-manager's compile(). Turn boundaries are announced
|
|
7
|
+
* via metadata-only `inference/lifecycle` notifications (§10.5) —
|
|
8
|
+
* context/afterInference and its modifiedResponse are removed in 0.5.0.
|
|
8
9
|
*
|
|
9
10
|
* Design principles:
|
|
10
11
|
* - Fail-open: timeouts and errors never block inference
|
|
11
12
|
* - Parallel fan-out with per-server timeouts
|
|
12
13
|
* - Loop prevention: rejects inference/request while inside a hook
|
|
13
14
|
*/
|
|
15
|
+
import { CapabilityGrant } from './capability-grant.js';
|
|
14
16
|
/** Timeout for beforeInference per server (fail-open). */
|
|
15
17
|
const BEFORE_INFERENCE_TIMEOUT_MS = 5_000;
|
|
16
|
-
/**
|
|
17
|
-
|
|
18
|
+
/** The three injection positions and their §6.2 capability paths. Position
|
|
19
|
+
* is the TYPED field on the injection — authorization never reads the
|
|
20
|
+
* response's featureSet (§5.4). */
|
|
21
|
+
const INJECT_LEAVES = [
|
|
22
|
+
{ position: 'system', path: 'contextHooks.beforeInference.inject.system' },
|
|
23
|
+
{ position: 'beforeUser', path: 'contextHooks.beforeInference.inject.beforeUser' },
|
|
24
|
+
{ position: 'afterUser', path: 'contextHooks.beforeInference.inject.afterUser' },
|
|
25
|
+
];
|
|
18
26
|
/**
|
|
19
27
|
* Races a promise against a timeout. Rejects with a descriptive error on timeout.
|
|
20
28
|
*/
|
|
@@ -109,7 +117,14 @@ export class HookOrchestrator {
|
|
|
109
117
|
* Fail-open: servers that time out or error are silently skipped.
|
|
110
118
|
*/
|
|
111
119
|
async beforeInference(params) {
|
|
112
|
-
|
|
120
|
+
// §5.4: the GRANT decides fan-out, not the raw advertisement — which
|
|
121
|
+
// also fixes selection for the recursive §5.1 shape, where
|
|
122
|
+
// `beforeInference: {observe: true, …}` is an object, not `true`. A
|
|
123
|
+
// server granted any inject.* leaf but not observe is still CALLED
|
|
124
|
+
// (§10.1 — the hook is how injection happens) and receives
|
|
125
|
+
// `userMessage: null` instead of the user's text.
|
|
126
|
+
const servers = this.registry.getAllServers().filter((s) => CapabilityGrant.of(s).has('contextHooks.beforeInference.observe')
|
|
127
|
+
|| INJECT_LEAVES.some((leaf) => CapabilityGrant.of(s).has(leaf.path)));
|
|
113
128
|
if (servers.length === 0) {
|
|
114
129
|
return [];
|
|
115
130
|
}
|
|
@@ -122,30 +137,38 @@ export class HookOrchestrator {
|
|
|
122
137
|
}
|
|
123
138
|
}
|
|
124
139
|
/**
|
|
125
|
-
* Fan out `
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
140
|
+
* Fan out `inference/lifecycle` (§10.5) — the metadata-only replacement
|
|
141
|
+
* for context/afterInference. Notifications, fire-and-forget, gated on the
|
|
142
|
+
* inferenceLifecycle grant. BEST-EFFORT by design: the host attempts one
|
|
143
|
+
* terminal per `started` on every exit path it controls; consumers dedupe
|
|
144
|
+
* by inferenceId and keep a safety timeout. Never blocks the turn.
|
|
130
145
|
*/
|
|
131
|
-
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
this._isInHook = false;
|
|
146
|
+
emitLifecycle(params) {
|
|
147
|
+
for (const server of this.registry.getAllServers()) {
|
|
148
|
+
if (!CapabilityGrant.of(server).has('inferenceLifecycle'))
|
|
149
|
+
continue;
|
|
150
|
+
try {
|
|
151
|
+
server.sendInferenceLifecycle(params);
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
/* best-effort — a failed notify never disturbs the turn */
|
|
155
|
+
}
|
|
142
156
|
}
|
|
143
157
|
}
|
|
144
158
|
// ==========================================================================
|
|
145
159
|
// Private: beforeInference fan-out
|
|
146
160
|
// ==========================================================================
|
|
147
161
|
async fanOutBeforeInference(servers, params) {
|
|
148
|
-
const results = await Promise.allSettled(servers.map((server) =>
|
|
162
|
+
const results = await Promise.allSettled(servers.map((server) => {
|
|
163
|
+
// §10.1: a server not granted observe MUST receive
|
|
164
|
+
// `userMessage: null` — the field is ABSENT authority, not merely
|
|
165
|
+
// discouraged — while the hook is still invoked so granted
|
|
166
|
+
// injection positions keep working (write-without-read).
|
|
167
|
+
const perServer = CapabilityGrant.of(server).has('contextHooks.beforeInference.observe')
|
|
168
|
+
? params
|
|
169
|
+
: { ...params, userMessage: null };
|
|
170
|
+
return withTimeout(server.sendBeforeInference(perServer), BEFORE_INFERENCE_TIMEOUT_MS, `beforeInference to "${server.id}"`).then((result) => ({ server, result }));
|
|
171
|
+
}));
|
|
149
172
|
const injections = [];
|
|
150
173
|
for (const settled of results) {
|
|
151
174
|
if (settled.status === 'rejected') {
|
|
@@ -153,7 +176,9 @@ export class HookOrchestrator {
|
|
|
153
176
|
continue;
|
|
154
177
|
}
|
|
155
178
|
const { server, result } = settled.value;
|
|
156
|
-
//
|
|
179
|
+
// Feature-set discipline (diagnostics; §5.4 forbids using the
|
|
180
|
+
// response-supplied featureSet as AUTHORIZATION — that is the
|
|
181
|
+
// position check below).
|
|
157
182
|
try {
|
|
158
183
|
this.featureSetManager.validateInbound(server.id, result.featureSet);
|
|
159
184
|
}
|
|
@@ -161,57 +186,23 @@ export class HookOrchestrator {
|
|
|
161
186
|
// Feature set not enabled or unknown — skip injections from this server
|
|
162
187
|
continue;
|
|
163
188
|
}
|
|
164
|
-
//
|
|
189
|
+
// §5.4/§10.8: authorize EACH injection by its typed position against
|
|
190
|
+
// the grant CURRENT NOW, at response receipt — not when the request
|
|
191
|
+
// was sent. A revocation that landed while the hook was in flight is
|
|
192
|
+
// enforced here without extra machinery.
|
|
165
193
|
if (result.contextInjections && result.contextInjections.length > 0) {
|
|
166
194
|
for (const mcplInj of result.contextInjections) {
|
|
195
|
+
const leaf = INJECT_LEAVES.find((l) => l.position === mcplInj.position);
|
|
196
|
+
if (!leaf || !CapabilityGrant.of(server).has(leaf.path)) {
|
|
197
|
+
console.error(`[mcpl] ${server.id}: dropped beforeInference injection at position ` +
|
|
198
|
+
`"${mcplInj.position}" — not in the effective grant (§10.8)`);
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
167
201
|
injections.push(convertMcplInjection(mcplInj));
|
|
168
202
|
}
|
|
169
203
|
}
|
|
170
204
|
}
|
|
171
205
|
return injections;
|
|
172
206
|
}
|
|
173
|
-
// ==========================================================================
|
|
174
|
-
// Private: afterInference fan-out
|
|
175
|
-
// ==========================================================================
|
|
176
|
-
async fanOutAfterInference(servers, params) {
|
|
177
|
-
const blockingPromises = [];
|
|
178
|
-
for (const server of servers) {
|
|
179
|
-
const isBlocking = this.isBlockingAfterInference(server);
|
|
180
|
-
if (isBlocking) {
|
|
181
|
-
// Send as request, await response with timeout
|
|
182
|
-
const promise = withTimeout(server.sendAfterInference(params, true), AFTER_INFERENCE_BLOCKING_TIMEOUT_MS, `afterInference (blocking) to "${server.id}"`).catch(() => {
|
|
183
|
-
// Fail-open: timeout or error — treat as no modification
|
|
184
|
-
return null;
|
|
185
|
-
});
|
|
186
|
-
blockingPromises.push(promise);
|
|
187
|
-
}
|
|
188
|
-
else {
|
|
189
|
-
// Send as notification (fire-and-forget)
|
|
190
|
-
server.sendAfterInference(params, false);
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
if (blockingPromises.length === 0) {
|
|
194
|
-
return null;
|
|
195
|
-
}
|
|
196
|
-
// Await all blocking responses and return the first valid result
|
|
197
|
-
const results = await Promise.all(blockingPromises);
|
|
198
|
-
for (const result of results) {
|
|
199
|
-
if (result && result.modifiedResponse) {
|
|
200
|
-
return result;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
return null;
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Check if a server's afterInference capability is blocking.
|
|
207
|
-
*/
|
|
208
|
-
isBlockingAfterInference(server) {
|
|
209
|
-
const caps = server.capabilities;
|
|
210
|
-
if (!caps?.contextHooks?.afterInference) {
|
|
211
|
-
return false;
|
|
212
|
-
}
|
|
213
|
-
const afterCap = caps.contextHooks.afterInference;
|
|
214
|
-
return typeof afterCap === 'object' && afterCap !== null && 'blocking' in afterCap && afterCap.blocking === true;
|
|
215
|
-
}
|
|
216
207
|
}
|
|
217
208
|
//# sourceMappingURL=hook-orchestrator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-orchestrator.js","sourceRoot":"","sources":["../../../src/mcpl/hook-orchestrator.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hook-orchestrator.js","sourceRoot":"","sources":["../../../src/mcpl/hook-orchestrator.ts"],"names":[],"mappings":"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"}
|
package/dist/src/mcpl/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { JsonRpcRequest, JsonRpcResponse, JsonRpcError, McplContentBlock, McplTextContent, McplImageContent, McplAudioContent, McplResourceContent, McplCapabilities, McplHostCapabilities, McplChannelCapabilities, McplServerConfig, FeatureSetUse, FeatureSetDeclaration, FeatureSetsUpdateParams, FeatureSetsChangedParams, ScopeConfig, ScopeLabel, ScopeElevateParams, ScopeElevateResult, StateCheckpoint, JsonPatchOperation, StateRollbackParams, StateRollbackResult, PushEventParams, PushEventResult, McplModelInfo, BeforeInferenceParams, McplContextInjection, BeforeInferenceResult,
|
|
1
|
+
export type { JsonRpcRequest, JsonRpcResponse, JsonRpcError, McplContentBlock, McplTextContent, McplImageContent, McplAudioContent, McplResourceContent, McplCapabilities, McplHostCapabilities, McplChannelCapabilities, McplServerConfig, FeatureSetUse, FeatureSetDeclaration, FeatureSetsUpdateParams, FeatureSetsChangedParams, ScopeConfig, ScopeLabel, ScopeElevateParams, ScopeElevateResult, StateCheckpoint, JsonPatchOperation, StateRollbackParams, StateRollbackResult, PushEventParams, PushEventResult, McplModelInfo, BeforeInferenceParams, McplContextInjection, BeforeInferenceResult, McplMessage, McplInferenceRequestParams, McplInferencePreferences, McplInferenceRequestResult, InferenceChunkParams, ChannelDescriptor, ChannelContext, ChannelsRegisterParams, ChannelsRegisterResult, ChannelsChangedParams, ChannelsListResult, ChannelsOpenParams, ChannelsOpenResult, ChannelsCloseParams, ChannelsCloseResult, ChannelsOutgoingChunkParams, ChannelsOutgoingCompleteParams, ChannelsPublishParams, ChannelsPublishResult, ChannelIncomingMessage, ChannelsIncomingParams, ChannelsIncomingResult, ChannelIncomingMessageResult, InferenceRoutingPolicy, McplMethodName, McpToolDefinition, McpToolCallResult, McpToolResultContent, } from './types.js';
|
|
2
2
|
export { McplMethod } from './types.js';
|
|
3
3
|
export { FEATURE_SET_NOT_ENABLED, UNKNOWN_FEATURE_SET, CHECKPOINT_NOT_FOUND, CHANNEL_NOT_PERMITTED, UNKNOWN_CHANNEL, CHANNEL_OPEN_FAILED, featureSetNotEnabled, unknownFeatureSet, checkpointNotFound, channelNotPermitted, unknownChannel, channelOpenFailed, } from './errors.js';
|
|
4
4
|
export { McplServerConnection } from './server-connection.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcpl/index.ts"],"names":[],"mappings":"AACA,YAAY,EAEV,cAAc,EACd,eAAe,EACf,YAAY,EAGZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EAGnB,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EAGvB,gBAAgB,EAGhB,aAAa,EACb,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EAGxB,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAGlB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EAGnB,eAAe,EACf,eAAe,EAGf,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcpl/index.ts"],"names":[],"mappings":"AACA,YAAY,EAEV,cAAc,EACd,eAAe,EACf,YAAY,EAGZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EAGnB,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EAGvB,gBAAgB,EAGhB,aAAa,EACb,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EAGxB,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAGlB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EAGnB,eAAe,EACf,eAAe,EAGf,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EAGrB,WAAW,EACX,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,EAC1B,oBAAoB,EAGpB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,EAC3B,8BAA8B,EAC9B,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,4BAA4B,EAG5B,sBAAsB,EAGtB,cAAc,EAGd,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAGpF,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGlF,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACtF,YAAY,EACV,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,QAAQ,EACR,WAAW,EACX,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcpl/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcpl/index.ts"],"names":[],"mappings":"AAyFA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,4BAA4B;AAC5B,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,iCAAiC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAA4B,MAAM,sBAAsB,CAAC;AAEpF,4CAA4C;AAC5C,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAElF,qDAAqD;AACrD,OAAO,EAAE,YAAY,EAAyB,MAAM,oBAAoB,CAAC;AAEzE,8DAA8D;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,0BAA0B;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,0CAA0C;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,6EAA6E;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,6DAA6D;AAC7D,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAWtF,8DAA8D;AAC9D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -46,6 +46,15 @@ export declare class ProseStreamRouter {
|
|
|
46
46
|
});
|
|
47
47
|
/** Per-channel full text emitted so far (for outgoing/complete). */
|
|
48
48
|
byChannel(): ReadonlyMap<string, string>;
|
|
49
|
+
/**
|
|
50
|
+
* Drop everything routed so far and return to the constructed state.
|
|
51
|
+
*
|
|
52
|
+
* For a membrane refusal retry (RetryingEvent): the abandoned attempt's
|
|
53
|
+
* prose must not survive into the new one, and `accumulated` feeds
|
|
54
|
+
* outgoing/complete — leaving it would finalize text the model never
|
|
55
|
+
* actually said in the attempt that stands.
|
|
56
|
+
*/
|
|
57
|
+
reset(): void;
|
|
49
58
|
feed(delta: string): RoutedDelta[];
|
|
50
59
|
/** End of stream: flush any held line-start text (it can no longer become a
|
|
51
60
|
* complete prefix; an unterminated `>>tok` at EOF is routing metadata with
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prose-stream-router.d.ts","sourceRoot":"","sources":["../../../src/mcpl/prose-stream-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAID,qBAAa,iBAAiB;IAS1B,OAAO,CAAC,IAAI;IARd,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAA6B;gBAGtC,IAAI,EAAE;QACZ,oEAAoE;QACpE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;QAC3B,uEAAuE;QACvE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,yEAAyE;QACzE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;KAC1C;IAMH,oEAAoE;IACpE,SAAS,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;IAIxC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE;IAMlC;;gFAE4E;IAC5E,MAAM,IAAI,WAAW,EAAE;IASvB,OAAO,CAAC,IAAI;IA2DZ,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,IAAI;CAKb"}
|
|
1
|
+
{"version":3,"file":"prose-stream-router.d.ts","sourceRoot":"","sources":["../../../src/mcpl/prose-stream-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAID,qBAAa,iBAAiB;IAS1B,OAAO,CAAC,IAAI;IARd,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAA6B;gBAGtC,IAAI,EAAE;QACZ,oEAAoE;QACpE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;QAC3B,uEAAuE;QACvE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,yEAAyE;QACzE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;KAC1C;IAMH,oEAAoE;IACpE,SAAS,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;IAIxC;;;;;;;OAOG;IACH,KAAK,IAAI,IAAI;IASb,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE;IAMlC;;gFAE4E;IAC5E,MAAM,IAAI,WAAW,EAAE;IASvB,OAAO,CAAC,IAAI;IA2DZ,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,IAAI;CAKb"}
|
|
@@ -42,6 +42,22 @@ export class ProseStreamRouter {
|
|
|
42
42
|
byChannel() {
|
|
43
43
|
return this.accumulated;
|
|
44
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Drop everything routed so far and return to the constructed state.
|
|
47
|
+
*
|
|
48
|
+
* For a membrane refusal retry (RetryingEvent): the abandoned attempt's
|
|
49
|
+
* prose must not survive into the new one, and `accumulated` feeds
|
|
50
|
+
* outgoing/complete — leaving it would finalize text the model never
|
|
51
|
+
* actually said in the attempt that stands.
|
|
52
|
+
*/
|
|
53
|
+
reset() {
|
|
54
|
+
this.target = this.opts.initialTarget;
|
|
55
|
+
this.state = this.opts.mode === 'locus' ? 'body' : 'line-start';
|
|
56
|
+
this.held = '';
|
|
57
|
+
this.token = '';
|
|
58
|
+
this.sawBang = false;
|
|
59
|
+
this.accumulated = new Map();
|
|
60
|
+
}
|
|
45
61
|
feed(delta) {
|
|
46
62
|
const out = [];
|
|
47
63
|
for (const ch of delta)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prose-stream-router.js","sourceRoot":"","sources":["../../../src/mcpl/prose-stream-router.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prose-stream-router.js","sourceRoot":"","sources":["../../../src/mcpl/prose-stream-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AASH,MAAM,OAAO,iBAAiB;IASlB;IARF,MAAM,CAAgB;IACtB,KAAK,GAAU,YAAY,CAAC;IAC5B,IAAI,GAAG,EAAE,CAAC,CAAM,+CAA+C;IAC/D,KAAK,GAAG,EAAE,CAAC,CAAK,qCAAqC;IACrD,OAAO,GAAG,KAAK,CAAC;IAChB,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEhD,YACU,IAOP;QAPO,SAAI,GAAJ,IAAI,CAOX;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;IACjD,CAAC;IAED,oEAAoE;IACpE,SAAS;QACP,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;;;;;OAOG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QACtC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;QAChE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,KAAa;QAChB,MAAM,GAAG,GAAkB,EAAE,CAAC;QAC9B,KAAK,MAAM,EAAE,IAAI,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC3C,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED;;gFAE4E;IAC5E,MAAM;QACJ,MAAM,GAAG,GAAkB,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,KAAK,KAAK,cAAc;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,kBAAkB;QAChF,4EAA4E;QAC5E,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;QAC1B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAEO,IAAI,CAAC,EAAU,EAAE,GAAkB;QACzC,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,KAAK,MAAM;gBACT,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACjD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBACrB,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACrB,CAAC;gBACD,OAAO;YAET,KAAK,YAAY;gBACf,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;oBAAC,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC;oBAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBACzE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACnB,OAAO;YAET,KAAK,cAAc;gBACjB,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;oBAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBAClE,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBACvB,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;wBAC7C,0DAA0D;wBAC1D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;wBAC1B,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;wBACf,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;wBACpB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;wBACnB,OAAO;oBACT,CAAC;oBACD,qBAAqB;oBACrB,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC;oBAC5B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;oBAChB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;oBACf,OAAO;gBACT,CAAC;gBACD,4DAA4D;gBAC5D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC1B,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACnB,OAAO;YAET,KAAK,cAAc;gBACjB,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;oBAAC,IAAI,CAAC,WAAW,EAAE,CAAC;oBAAC,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;oBAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBAChH,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;oBAAC,IAAI,CAAC,WAAW,EAAE,CAAC;oBAAC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBAC3E,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACjB,OAAO;YAET,KAAK,aAAa;gBAChB,uEAAuE;gBACvE,gEAAgE;gBAChE,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI;oBAAE,OAAO;gBACtC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;oBAAC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBACvD,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBACjE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;gBACpB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACnB,OAAO;QACX,CAAC;IACH,CAAC;IAEO,WAAW;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YAAC,OAAO;QAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAEO,IAAI,CAAC,IAAY,EAAE,GAAkB;QAC3C,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO;QAC1C,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACtF,CAAC;CACF;AAED,SAAS,QAAQ,CAAC,MAAqB;IACrC,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjC,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;YAAE,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC;;YAC7D,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push-handler.d.ts","sourceRoot":"","sources":["../../../src/mcpl/push-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAEV,eAAe,EACf,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"push-handler.d.ts","sourceRoot":"","sources":["../../../src/mcpl/push-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAEV,eAAe,EACf,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAQlE;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAgFD,qEAAqE;AACrE,UAAU,SAAS;IACjB,OAAO,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IACvC,YAAY,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACpE;AAMD,qBAAa,WAAW;IACtB,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,WAAW,CAA4D;IAC/E,OAAO,CAAC,sBAAsB,CAAC,CAAkE;IACjG,OAAO,CAAC,KAAK,CAAsB;gBAGjC,iBAAiB,EAAE,iBAAiB,EACpC,WAAW,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EAC3C,WAAW,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,IAAI,EACtE,sBAAsB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO;IAQ1F;;;;;;;;;;OAUG;IACH,eAAe,CACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,eAAe,EACvB,SAAS,CAAC,EAAE,SAAS,GACpB,IAAI;CAuFR"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* Spec reference: Section 9 (Push Events).
|
|
8
8
|
*/
|
|
9
9
|
import { McplFeatureSetError } from './feature-set-manager.js';
|
|
10
|
+
import { expandCoreTags } from './tags.js';
|
|
10
11
|
// ============================================================================
|
|
11
12
|
// Content conversion: McplContentBlock → membrane ContentBlock
|
|
12
13
|
// ============================================================================
|
|
@@ -99,7 +100,19 @@ export class PushHandler {
|
|
|
99
100
|
* 7. Respond with accepted + inferenceId
|
|
100
101
|
*/
|
|
101
102
|
handlePushEvent(serverId, params, responder) {
|
|
102
|
-
//
|
|
103
|
+
// §16.3: expand the normative chat:* core closure once, at entry, so
|
|
104
|
+
// every downstream consumer (wake matching, metadata, the queued event)
|
|
105
|
+
// sees the closed set. Producer `implies` edges are NOT consumed —
|
|
106
|
+
// advisory pending acceptance (§16.4). Tags were admitted before this
|
|
107
|
+
// point and grant nothing (§16.6).
|
|
108
|
+
if (params.tags)
|
|
109
|
+
params.tags = expandCoreTags(params.tags);
|
|
110
|
+
// 1. Validate feature set. §6.6: rejection is diagnostics, not
|
|
111
|
+
// authorization, and MUST be a JSON-RPC error object — not a result
|
|
112
|
+
// carrying a failure flag. (The old `{accepted:false, reason}` result
|
|
113
|
+
// was AUDIT-001's finding: the error factories existed and were never
|
|
114
|
+
// invoked.) Falls back to the result shape only for a legacy responder
|
|
115
|
+
// with no error path.
|
|
103
116
|
try {
|
|
104
117
|
this.featureSetManager.validateInbound(serverId, params.featureSet);
|
|
105
118
|
}
|
|
@@ -110,7 +123,12 @@ export class PushHandler {
|
|
|
110
123
|
// Loud rejection — a rejected push event is an agent that silently
|
|
111
124
|
// never hears the message. (2026-07-09 diagnosability pass.)
|
|
112
125
|
console.error(`[push-event-rejected] server=${serverId} eventId=${params.eventId} reason=${reason}`);
|
|
113
|
-
|
|
126
|
+
if (err instanceof McplFeatureSetError && responder?.respondError) {
|
|
127
|
+
responder.respondError(err.code, reason, { featureSet: err.featureSet });
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
responder?.respond({ accepted: false, reason });
|
|
131
|
+
}
|
|
114
132
|
return;
|
|
115
133
|
}
|
|
116
134
|
// 2. Deduplicate by eventId
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push-handler.js","sourceRoot":"","sources":["../../../src/mcpl/push-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"push-handler.js","sourceRoot":"","sources":["../../../src/mcpl/push-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
* stdio and WebSocket behave identically above the transport seam.
|
|
10
10
|
*/
|
|
11
11
|
import { EventEmitter } from 'node:events';
|
|
12
|
-
import
|
|
12
|
+
import { CapabilityGrant } from './capability-grant.js';
|
|
13
|
+
import type { McplServerConfig, McplCapabilities, McplHostCapabilities, BeforeInferenceParams, BeforeInferenceResult, FeatureSetsUpdateParams, FeatureSetsUpdateResult, InferenceChunkParams, InferenceLifecycleParams, StateRollbackParams, StateRollbackResult, ChannelsOpenParams, ChannelsOpenResult, ChannelsCloseParams, ChannelsCloseResult, ChannelsAcknowledgeParams, ChannelsAcknowledgeResult, ChannelsListResult, ChannelsPublishParams, ChannelsPublishResult, ChannelsOutgoingChunkParams, ChannelsOutgoingCompleteParams, McpToolDefinition, McpToolCallResult } from './types.js';
|
|
13
14
|
/**
|
|
14
15
|
* McplServerConnection manages a single JSON-RPC 2.0 connection to an
|
|
15
16
|
* MCPL server over stdio. Use the static `connect()` factory to create
|
|
@@ -22,7 +23,6 @@ import type { McplServerConfig, McplCapabilities, McplHostCapabilities, BeforeIn
|
|
|
22
23
|
* - `'channels-register'` — Server sent `channels/register`
|
|
23
24
|
* - `'channels-changed'` — Server sent `channels/changed`
|
|
24
25
|
* - `'channels-incoming'` — Server sent `channels/incoming`
|
|
25
|
-
* - `'feature-sets-changed'` — Server sent `featureSets/changed`
|
|
26
26
|
* - `'error'` — Connection-level error
|
|
27
27
|
* - `'close'` — Connection closed
|
|
28
28
|
* - `'connect-failed'` — Initial connect failed; background retry scheduled
|
|
@@ -32,8 +32,57 @@ import type { McplServerConfig, McplCapabilities, McplHostCapabilities, BeforeIn
|
|
|
32
32
|
export declare class McplServerConnection extends EventEmitter {
|
|
33
33
|
/** Unique server identifier from config. */
|
|
34
34
|
readonly id: string;
|
|
35
|
-
/** MCPL capabilities negotiated during the initialize handshake
|
|
35
|
+
/** MCPL capabilities negotiated during the initialize handshake — after
|
|
36
|
+
* host-side capability scoping (enabledCapabilities/disabledCapabilities)
|
|
37
|
+
* — or null if the server does not support MCPL. */
|
|
36
38
|
capabilities: McplCapabilities | null;
|
|
39
|
+
/** Dotted paths of advertised capabilities the host config masked at the
|
|
40
|
+
* last handshake (empty when no scoping is configured). Inbound methods
|
|
41
|
+
* gated by a masked capability are rejected in setupMessageRouting. */
|
|
42
|
+
droppedCapabilities: ReadonlySet<string>;
|
|
43
|
+
/** OUTER standard MCP capabilities.tools was present at handshake (§5.1 —
|
|
44
|
+
* the sole source of the `tools` capability path). */
|
|
45
|
+
mcpToolsAdvertised: boolean;
|
|
46
|
+
/** Host-owned per-server authority for host/command (config
|
|
47
|
+
* allowHostCommands, default false). No capability path exists and the
|
|
48
|
+
* grant cannot confer it — server params never decide admin authority. */
|
|
49
|
+
allowHostCommands: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* The effective capability grant (§5.4) — the sole authorization
|
|
52
|
+
* allowlist for this connection. Starts EMPTY: until the initial policy
|
|
53
|
+
* exchange completes (§5.3) nothing is granted and every privileged
|
|
54
|
+
* inbound method is rejected. The framework computes the grant from the
|
|
55
|
+
* masked advertisement and activates it via establishGrant() only after
|
|
56
|
+
* the featureSets/update Request is answered (expansion activates on
|
|
57
|
+
* receipt, §6.7); revocations re-call establishGrant() BEFORE the
|
|
58
|
+
* corresponding Request is sent (reduction applies first, §6.7).
|
|
59
|
+
*/
|
|
60
|
+
grant: CapabilityGrant;
|
|
61
|
+
/** True once the §5.3 initial policy Request has been answered. */
|
|
62
|
+
policyEstablished: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* §17 manifest tracking (host side of RFC-003): what this host actually
|
|
65
|
+
* fetched and acted on — never the server's announcement log (§17.10:
|
|
66
|
+
* those are different facts). Read by the legibility surface.
|
|
67
|
+
*/
|
|
68
|
+
manifestState: {
|
|
69
|
+
/** revision of the last VALIDATED fetched manifest (server-authored,
|
|
70
|
+
* untrusted, equality-only) — null until a §17.4 fetch succeeds. */
|
|
71
|
+
lastValidatedRevision: string | null;
|
|
72
|
+
lastFetchedAt: number | null;
|
|
73
|
+
/** epoch ms of the last §6.7 receipt that activated a grant change. */
|
|
74
|
+
lastNegotiatedAt: number | null;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Activate (or replace) the effective grant. Ordering is the caller's
|
|
78
|
+
* contract per §6.7: call BEFORE sending a reducing featureSets/update,
|
|
79
|
+
* AFTER the receipt for an expanding one.
|
|
80
|
+
*/
|
|
81
|
+
establishGrant(grant: CapabilityGrant): void;
|
|
82
|
+
/** A §5.3 grant belongs to one initialized transport epoch. Reconnecting
|
|
83
|
+
* performs a fresh initialize handshake, so authority from the dead epoch
|
|
84
|
+
* must be revoked before the replacement transport is exposed. */
|
|
85
|
+
private resetPolicyForTransportBoundary;
|
|
37
86
|
/** The active transport (stdio child or WebSocket). Null for a disconnected
|
|
38
87
|
* stub awaiting its first background reconnect. */
|
|
39
88
|
private transport;
|
|
@@ -92,6 +141,9 @@ export declare class McplServerConnection extends EventEmitter {
|
|
|
92
141
|
* new data-plane gate before the fresh transport is exposed.
|
|
93
142
|
*/
|
|
94
143
|
emit(event: string | symbol, ...args: unknown[]): boolean;
|
|
144
|
+
/** Event-name form of METHOD_TO_REQUIRED_CAPABILITY, for admission-time
|
|
145
|
+
* enforcement in emit(). */
|
|
146
|
+
private static readonly EVENT_TO_REQUIRED_CAPABILITY;
|
|
95
147
|
private static isControlPlaneEvent;
|
|
96
148
|
private static isLifecycleEvent;
|
|
97
149
|
/**
|
|
@@ -126,16 +178,30 @@ export declare class McplServerConnection extends EventEmitter {
|
|
|
126
178
|
private static createDisconnectedStub;
|
|
127
179
|
/** Send `context/beforeInference` and await result. */
|
|
128
180
|
sendBeforeInference(params: BeforeInferenceParams): Promise<BeforeInferenceResult>;
|
|
181
|
+
/** Send `featureSets/update` as a Notification. §6.7: valid ONLY for
|
|
182
|
+
* purely descriptive metadata that does not alter the grant. Any grant
|
|
183
|
+
* change — including the §5.3 initial policy — MUST use the Request form
|
|
184
|
+
* below. */
|
|
185
|
+
sendFeatureSetsUpdate(params: FeatureSetsUpdateParams): void;
|
|
129
186
|
/**
|
|
130
|
-
* Send `
|
|
131
|
-
*
|
|
132
|
-
*
|
|
187
|
+
* Send `featureSets/update` as a Request (§5.3, §6.7) and await the
|
|
188
|
+
* degradation receipt. A short timeout, distinct from tool-call timeouts:
|
|
189
|
+
* a pre-0.5 server treats the Request as a notification and never
|
|
190
|
+
* answers, and per §6.7 an unanswered expansion simply does not activate
|
|
191
|
+
* — the caller leaves the grant empty and the connection MCP-only.
|
|
133
192
|
*/
|
|
134
|
-
|
|
135
|
-
/** Send `featureSets/update` notification. */
|
|
136
|
-
sendFeatureSetsUpdate(params: FeatureSetsUpdateParams): void;
|
|
193
|
+
sendFeatureSetsUpdateRequest(params: FeatureSetsUpdateParams, timeoutMs?: number): Promise<FeatureSetsUpdateResult>;
|
|
137
194
|
/** Send `inference/chunk` notification. */
|
|
138
195
|
sendInferenceChunk(params: InferenceChunkParams): void;
|
|
196
|
+
/** Send `inference/lifecycle` notification (§10.5). Best-effort. */
|
|
197
|
+
sendInferenceLifecycle(params: InferenceLifecycleParams): void;
|
|
198
|
+
/**
|
|
199
|
+
* Fetch the server's complete current manifest (§17.4) — the
|
|
200
|
+
* experimental.mcpl object in the same shape initialize carries, never a
|
|
201
|
+
* delta. The fetched CONTENT is authoritative for every decision; the
|
|
202
|
+
* revision is only the cheap path (§17.1).
|
|
203
|
+
*/
|
|
204
|
+
sendManifestRequest(timeoutMs?: number): Promise<McplCapabilities | null>;
|
|
139
205
|
/** Send `state/rollback` request and await result. */
|
|
140
206
|
sendStateRollback(params: StateRollbackParams): Promise<StateRollbackResult>;
|
|
141
207
|
/** Send `channels/open` request and await result. */
|
|
@@ -226,6 +292,24 @@ export declare class McplServerConnection extends EventEmitter {
|
|
|
226
292
|
* Map from JSON-RPC method name to the EventEmitter event name.
|
|
227
293
|
*/
|
|
228
294
|
private static readonly METHOD_TO_EVENT;
|
|
295
|
+
/**
|
|
296
|
+
* Inbound (server-initiated) method → required capability path, per SPEC
|
|
297
|
+
* §14.1's table plus the non-channel privileged methods. **Positive-grant
|
|
298
|
+
* enforcement** (§5.4): the method is admitted only when the effective
|
|
299
|
+
* grant contains the named path — absence is denial, and before the
|
|
300
|
+
* initial policy exchange completes the grant is empty, so everything
|
|
301
|
+
* privileged is rejected (§5.3).
|
|
302
|
+
*
|
|
303
|
+
* This replaces the earlier `droppedCapabilities` deny-list check, which
|
|
304
|
+
* could only deny what had been advertised-then-masked: a server that
|
|
305
|
+
* never advertised a capability at all was never denied. (Adjudicated in
|
|
306
|
+
* review of PR #75; the mask itself is retained as the config-policy
|
|
307
|
+
* layer feeding the grant.)
|
|
308
|
+
*
|
|
309
|
+
* Channel methods key on their specific sub-capabilities, not the bare
|
|
310
|
+
* `channels` parent — a bare parent grants nothing (§5.4).
|
|
311
|
+
*/
|
|
312
|
+
private static readonly METHOD_TO_REQUIRED_CAPABILITY;
|
|
229
313
|
/**
|
|
230
314
|
* Bind all transport-level handlers (inbound routing, lifecycle, stderr) to a
|
|
231
315
|
* transport. Called from the constructor and again from attemptReconnect when
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-connection.d.ts","sourceRoot":"","sources":["../../../src/mcpl/server-connection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EAGpB,qBAAqB,EACrB,qBAAqB,EACrB,
|
|
1
|
+
{"version":3,"file":"server-connection.d.ts","sourceRoot":"","sources":["../../../src/mcpl/server-connection.ts"],"names":[],"mappings":"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"}
|