@plurnk/plurnk-mcp 1.18.0 → 1.19.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/.env.defaults +11 -5
- package/README.md +13 -6
- package/SPEC.md +185 -54
- package/dist/ContentProjection.d.ts +11 -0
- package/dist/ContentProjection.d.ts.map +1 -0
- package/dist/ContentProjection.js +24 -0
- package/dist/ContentProjection.js.map +1 -0
- package/dist/McpExecutor.d.ts +1 -1
- package/dist/McpExecutor.d.ts.map +1 -1
- package/dist/McpExecutor.js +42 -50
- package/dist/McpExecutor.js.map +1 -1
- package/dist/McpResources.d.ts.map +1 -1
- package/dist/McpResources.js +27 -5
- package/dist/McpResources.js.map +1 -1
- package/dist/Module.d.ts +7 -2
- package/dist/Module.d.ts.map +1 -1
- package/dist/Module.js +92 -29
- package/dist/Module.js.map +1 -1
- package/dist/Summary.d.ts +3 -0
- package/dist/Summary.d.ts.map +1 -0
- package/dist/Summary.js +15 -0
- package/dist/Summary.js.map +1 -0
- package/dist/ToolPresentation.d.ts.map +1 -1
- package/dist/ToolPresentation.js +3 -23
- package/dist/ToolPresentation.js.map +1 -1
- package/dist/capabilityMatrix.js +37 -37
- package/dist/capabilityMatrix.js.map +1 -1
- package/dist/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +114 -60
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +54 -33
- package/dist/config.js.map +1 -1
- package/dist/inputRequired.d.ts +5 -2
- package/dist/inputRequired.d.ts.map +1 -1
- package/dist/inputRequired.js +31 -8
- package/dist/inputRequired.js.map +1 -1
- package/dist/mcp-watchdog.mjs +3 -2
- package/dist/subscriptions.d.ts +4 -2
- package/dist/subscriptions.d.ts.map +1 -1
- package/dist/subscriptions.js +27 -12
- package/dist/subscriptions.js.map +1 -1
- package/dist/tasks.d.ts.map +1 -1
- package/dist/tasks.js +11 -13
- package/dist/tasks.js.map +1 -1
- package/docs/mcp.md +37 -13
- package/package.json +6 -6
package/.env.defaults
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
# @plurnk/plurnk-mcp —
|
|
1
|
+
# @plurnk/plurnk-mcp — workspace MCP servers.
|
|
2
2
|
# Alias blocks make servers available; ENABLED selects initial attachments.
|
|
3
|
-
#
|
|
3
|
+
# An empty alias target masks its definition, companions and ENABLED/EXPANDED selections.
|
|
4
|
+
# Workers manage the shared servers through the mcp Functionality controls.
|
|
4
5
|
|
|
5
|
-
# Connection and
|
|
6
|
+
# Connection deadline and complete catalog/list-walk deadline, positive ms each.
|
|
6
7
|
PLURNK_MCP_CONNECT_TIMEOUT=30000
|
|
7
|
-
#
|
|
8
|
+
# Whole-operation deadline including client input, positive ms; caller cancellation still applies.
|
|
8
9
|
PLURNK_MCP_REQUEST_TIMEOUT=86400000
|
|
10
|
+
# First delay before the adapter retries a dropped subscription or a failed catalog refresh, positive ms; it doubles per attempt.
|
|
11
|
+
PLURNK_MCP_RETRY_FLOOR_MS=250
|
|
12
|
+
# Ceiling of that doubling delay, positive ms, at least the floor.
|
|
13
|
+
PLURNK_MCP_RETRY_CEILING_MS=5000
|
|
9
14
|
# Initially enabled aliases, JSON array; [] = none.
|
|
10
15
|
PLURNK_MCP_ENABLED=[]
|
|
11
16
|
# Expand these servers' tool lists in turn 0; otherwise show one row per server.
|
|
@@ -19,7 +24,8 @@ PLURNK_MCP_ENABLED=[]
|
|
|
19
24
|
|
|
20
25
|
# --- stdio target ---
|
|
21
26
|
# One exact executable (not a shell command); ARGS is a literal JSON array.
|
|
22
|
-
# CWD
|
|
27
|
+
# CWD defaults to per-workspace server state under XDG_STATE_HOME (normally ~/.local/state).
|
|
28
|
+
# Explicit CWD is honored; ENV overlays the subprocess environment, resolving ${NAME} references.
|
|
23
29
|
# PLURNK_MCP_browser=node
|
|
24
30
|
# PLURNK_MCP_browser_ARGS=["/absolute/path/to/browser-server.mjs"]
|
|
25
31
|
# PLURNK_MCP_browser_CWD=/absolute/working/directory
|
package/README.md
CHANGED
|
@@ -60,7 +60,7 @@ published by the coordinator and the two continuations by this module:
|
|
|
60
60
|
| `workspace.mcp.oauth.complete` | `alias`, complete `callbackUrl` |
|
|
61
61
|
| `workspace.mcp.complete` | `server`, completion `ref` and `argument`; optional `context` |
|
|
62
62
|
|
|
63
|
-
The model manages the same family through ````
|
|
63
|
+
The model manages the same family through ````` ````mcp (list|discover|add|enable|disable|remove) `````.
|
|
64
64
|
|
|
65
65
|
Tool discovery uses ordinary `FIND (worker:///_plurnk/tools/*.md)` and READ.
|
|
66
66
|
Each server's document lists enabled tool calls with required-field previews
|
|
@@ -78,15 +78,15 @@ can provide the executable while one project's `.env` supplies its identity:
|
|
|
78
78
|
|
|
79
79
|
```text
|
|
80
80
|
# $XDG_CONFIG_HOME/plurnk/.env, read by the service
|
|
81
|
-
|
|
81
|
+
PLURNK_MCP_project=/opt/mcp/current-server
|
|
82
82
|
PLURNK_MCP_ENABLED=[]
|
|
83
83
|
|
|
84
84
|
# <project>/.env, read by the client
|
|
85
|
-
|
|
85
|
+
PLURNK_MCP_project_ARGS=["--stdio","--project","example"]
|
|
86
86
|
```
|
|
87
87
|
|
|
88
88
|
The client carries its raw declarations while listing and enabling. Listing is
|
|
89
|
-
inert. `/mcp enable
|
|
89
|
+
inert. `/mcp enable project` (or `plurnk mcp enable project` in a bound conversation)
|
|
90
90
|
composes service, durable workspace, client, and optional command-file fields
|
|
91
91
|
in that order, prepares the connection, then persists the complete unexpanded
|
|
92
92
|
workspace definition. Arrays and maps replace rather than append or merge.
|
|
@@ -98,7 +98,7 @@ the same workspace alias requires explicit removal before replacement.
|
|
|
98
98
|
Web discovery is an ordinary MCP attachment ({§web-search-retrieval}); the demo
|
|
99
99
|
tier exercises search through a documented fixture rather than an owned
|
|
100
100
|
runtime. Two service-owned definitions are permitted to participate in demos
|
|
101
|
-
of MCP and model behavior — Gitea
|
|
101
|
+
of MCP and model behavior — Gitea and Brave Search:
|
|
102
102
|
|
|
103
103
|
```text
|
|
104
104
|
# $XDG_CONFIG_HOME/plurnk/.env, read by the service — demo fixtures; never default-enabled
|
|
@@ -152,6 +152,13 @@ whitespace. Arguments are a JSON array; the module never parses or invokes a
|
|
|
152
152
|
shell command. `${NAME}` references resolve from the daemon's inherited
|
|
153
153
|
environment only while preparing a connection.
|
|
154
154
|
|
|
155
|
+
Without `CWD`, a local server uses its own workspace directory under
|
|
156
|
+
`$XDG_STATE_HOME/plurnk` (normally `~/.local/state/plurnk`), not the daemon's
|
|
157
|
+
launch directory. State survives reconnects and disable/remove; discovery
|
|
158
|
+
scratch is removed after its probe closes. Use absolute project paths or an
|
|
159
|
+
explicit `CWD` for servers that operate on a project. This default does not
|
|
160
|
+
confine arbitrary subprocess writes.
|
|
161
|
+
|
|
155
162
|
`PLURNK_MCP_<server>_TOOLS` is an optional JSON array of exact names. Absence
|
|
156
163
|
enables every listed server tool; an array enables exactly those names; `[]`
|
|
157
164
|
enables none. `PLURNK_MCP_<server>_READ` is an exact enabled-tool subset whose
|
|
@@ -166,7 +173,7 @@ Portable timeouts and complete examples live in [`.env.defaults`](./.env.default
|
|
|
166
173
|
| MCP surface | Plurnk surface |
|
|
167
174
|
|---|---|
|
|
168
175
|
| Server tools | `worker:///_plurnk/tools/<server>.md` family summary |
|
|
169
|
-
| Enabled tool | Exact `worker:///_plurnk/tools/<server>/<encoded-tool>.
|
|
176
|
+
| Enabled tool | Exact `worker:///_plurnk/tools/<server>/<encoded-tool>.json` document and ````` ````server (tool) ````` |
|
|
170
177
|
| Resource catalog | `server:///` or `server:///resources` |
|
|
171
178
|
| Resource | `server:///resources/<encoded-uri>` through ordinary `FIND` and `READ` |
|
|
172
179
|
| Prompt catalog | `server:///prompts` |
|
package/SPEC.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Plurnk MCP host specification
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## Host boundary
|
|
4
4
|
|
|
5
5
|
`@plurnk/plurnk-mcp` is an MCP **host/client** that projects trusted remote
|
|
6
6
|
servers into Plurnk. It does not implement an MCP server or authorization
|
|
@@ -34,8 +34,8 @@ per-connection and absent from a legacy peer.
|
|
|
34
34
|
## §mcp-core-matrix Core capability matrix
|
|
35
35
|
|
|
36
36
|
The accountable capability matrix lives in `capabilityMatrix.ts`
|
|
37
|
-
({§mcp-capability-matrix})
|
|
38
|
-
|
|
37
|
+
({§mcp-capability-matrix}). This table describes the pinned revision;
|
|
38
|
+
{§mcp-authority} owns the SDK-negotiated older-peer surface.
|
|
39
39
|
|
|
40
40
|
| Surface | Upstream contract | Plurnk host disposition |
|
|
41
41
|
|---|---|---|
|
|
@@ -64,6 +64,28 @@ Pagination, caching, and the cap remain the SDK's; a converging server's pages a
|
|
|
64
64
|
before. This is a host guard over an upstream behavior, not a second paginator; the upstream
|
|
65
65
|
report is #601's to file.
|
|
66
66
|
|
|
67
|
+
§mcp-catalog-deadline `PLURNK_MCP_CONNECT_TIMEOUT` bounds connection setup and,
|
|
68
|
+
separately, each complete catalog/list walk, including parallel collections and
|
|
69
|
+
all pagination. Failure cancels unfinished sibling lists; it never publishes a
|
|
70
|
+
partial catalog. Caller cancellation and connection shutdown still apply.
|
|
71
|
+
Tool calls, resource reads, prompt retrieval, and their client-input waits retain
|
|
72
|
+
`PLURNK_MCP_REQUEST_TIMEOUT`; discovery does not borrow that operation allowance.
|
|
73
|
+
|
|
74
|
+
§mcp-retry-pacing Every retry the adapter schedules on its own — reopening a dropped
|
|
75
|
+
subscription, refreshing a catalog a server announced as changed — waits
|
|
76
|
+
`PLURNK_MCP_RETRY_FLOOR_MS`, doubling per attempt up to `PLURNK_MCP_RETRY_CEILING_MS`.
|
|
77
|
+
One pacing serves them all; a ceiling beneath the floor fails configuration. The
|
|
78
|
+
deadlines above bound an attempt; this paces the next one.
|
|
79
|
+
|
|
80
|
+
§mcp-catalog-list-absence **An unsupported list method does not disable the server.**
|
|
81
|
+
At the first page of `tools/list`, `resources/list`, `resources/templates/list`, or
|
|
82
|
+
`prompts/list`, JSON-RPC `-32601` yields an empty collection for that method and an
|
|
83
|
+
availability detail naming the unsupported method. This is host tolerance, not
|
|
84
|
+
a claim that the server satisfies its advertised capabilities. The empty result
|
|
85
|
+
is immediately stale; a later successful listing clears the diagnostic. An error
|
|
86
|
+
after the first page, any other protocol error, transport/authentication failure,
|
|
87
|
+
or non-convergence remains a failure. SDK pagination and caching retain ownership.
|
|
88
|
+
|
|
67
89
|
## §mcp-tasks Tasks extension
|
|
68
90
|
|
|
69
91
|
Tasks is the optional `io.modelcontextprotocol/tasks` extension, never core
|
|
@@ -81,22 +103,30 @@ interaction per observed input set. A completed Task is validated as the
|
|
|
81
103
|
originating tool result; a failed Task preserves its JSON-RPC error.
|
|
82
104
|
Handle ownership and the restart journey are bounded in {§tasks-lifetime}.
|
|
83
105
|
|
|
84
|
-
|
|
106
|
+
§mcp-subscription-ownership Notification filters belong to the shared connection,
|
|
107
|
+
not an individual operation. Acquiring or releasing Task interest schedules a
|
|
108
|
+
filter update without blocking Task polling, settlement, or cancellation; the
|
|
109
|
+
ordinary `tasks/get` path remains available before acknowledgement and during
|
|
110
|
+
watch recovery. A resource READ may await cache-watch setup, but owner
|
|
111
|
+
cancellation ends only that caller's wait. It neither cancels another caller's
|
|
112
|
+
setup nor closes the connection. Filter acknowledgement, overlap replacement,
|
|
113
|
+
retry, and teardown retain one connection-level owner.
|
|
114
|
+
|
|
115
|
+
## §tasks-lifetime Tasks lifetime
|
|
85
116
|
|
|
86
|
-
Task handles
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
restart re-runs the operation, which drives a fresh task. The server's own
|
|
91
|
-
persistence of task state is respected only within one connection lifetime;
|
|
92
|
-
nothing task-shaped is written to SQLite and no MCP sidecar lifecycle exists.
|
|
117
|
+
Task handles belong to the connection and operation that created them. They
|
|
118
|
+
are process-local, never persisted or automatically replayed. Ordinary host
|
|
119
|
+
lifecycle owns interruption and recovery ({§worker-lifecycle-restart-recovery});
|
|
120
|
+
MCP adds no second scheduler or client-disconnect policy.
|
|
93
121
|
|
|
94
122
|
| Boundary | Behaviour |
|
|
95
123
|
|---|---|
|
|
96
|
-
| Client
|
|
97
|
-
|
|
|
98
|
-
|
|
|
99
|
-
|
|
|
124
|
+
| Client interrupt / reattach | The live operation retains its pending input across the intentional Run boundary; synchronization re-presents it ({§agui-conversation-sync}). |
|
|
125
|
+
| Client hangup | Inherits the owning client's cancellation or observer-detachment semantics; MCP does not change them. |
|
|
126
|
+
| Graceful shutdown | Aborts and settles owned work before closing its protocol connection ({§mcp-connection-shutdown}). |
|
|
127
|
+
| Restart after owner loss | No Task resume or automatic tool replay; core reconciles the interrupted operation and its durable evidence. |
|
|
128
|
+
| Workspace reactivation | Reconstructs the attachment from its definition, not an old Task handle. Active Tasks retain workspace residency ({§module-workspace-residency}). |
|
|
129
|
+
| Expiry | The owning operation deadline also bounds client-input waits ({§mcp-input-deadline}); expiry cancels the Task before settling the failed operation. MRTR retains its separate round bound. |
|
|
100
130
|
| Cancellation | Owner abort cancels the task before settling; the handle is then terminal. |
|
|
101
131
|
| Already terminal | Terminal results and errors are consumed by the drive loop; a completed or failed task is never re-polled or re-resumed. |
|
|
102
132
|
|
|
@@ -107,7 +137,7 @@ nothing task-shaped is written to SQLite and no MCP sidecar lifecycle exists.
|
|
|
107
137
|
| Deprecated | Roots, Sampling, Logging | Do not advertise or implement; use explicit resources/tool arguments, Plurnk's provider layer, and stderr/OpenTelemetry respectively |
|
|
108
138
|
| Deprecated | HTTP+SSE transport; Sampling `includeContext` values | Do not adopt; use Streamable HTTP and no Sampling |
|
|
109
139
|
| Deprecated fallback | OAuth Dynamic Client Registration | Prefer pre-registration, then CIMD when advertised; use DCR only when authorization-server metadata advertises `registration_endpoint`; otherwise fail without probing an inferred endpoint |
|
|
110
|
-
| Removed | `initialize`, `notifications/initialized`, `Mcp-Session-Id`, HTTP GET event stream |
|
|
140
|
+
| Removed at pinned revision | `initialize`, `notifications/initialized`, `Mcp-Session-Id`, HTTP GET event stream | Absent on modern connections; the negotiated older-peer lifecycle remains SDK-owned ({§mcp-authority}) |
|
|
111
141
|
| Removed | `ping`, `logging/setLevel`, `notifications/roots/list_changed` | Do not send, handle, or teach |
|
|
112
142
|
| Removed | `resources/subscribe`, `resources/unsubscribe`, SSE resumption and `Last-Event-ID` | Use `subscriptions/listen`; reissue a lost request with a new ID |
|
|
113
143
|
| Removed | Legacy Tasks `tasks/list`, `tasks/result`, and task-augmentation request fields | Use only the negotiated final Tasks extension |
|
|
@@ -131,7 +161,7 @@ The static wire advertisement is derived from the matrix by construction
|
|
|
131
161
|
row says `always`, and a `conditional` extension is added only by its owning
|
|
132
162
|
connection logic ({§oauth-client-credentials}). The matrix unit tests enforce
|
|
133
163
|
unique identities, no excluded row advertising, supported rows citing evidence,
|
|
134
|
-
composed coverage for
|
|
164
|
+
composed coverage for every advertised row, and exact reconciliation
|
|
135
165
|
between the matrix and the derived advertisement. Official required
|
|
136
166
|
conformance stays a separate named gate, never folded into a matrix row.
|
|
137
167
|
|
|
@@ -140,14 +170,14 @@ conformance stays a separate named gate, never folded into a matrix row.
|
|
|
140
170
|
| Binding | Contract |
|
|
141
171
|
|---|---|
|
|
142
172
|
| stdio | Spawn one exact executable with an explicit argument array and no shell; newline-delimited JSON-RPC is the only stdout/stdin traffic; stderr is diagnostic; shutdown closes stdin, waits, then terminates if necessary |
|
|
143
|
-
| Streamable HTTP | Send one POST per request or notification; accept JSON or SSE responses; close the response stream to cancel; never open the removed general GET stream |
|
|
173
|
+
| Streamable HTTP | Send one POST per request or notification; accept JSON or SSE responses; close the response stream to cancel; modern connections never open the removed general GET stream |
|
|
144
174
|
|
|
145
175
|
§mcp-stdio-process-ownership A stdio connection owns the complete process group
|
|
146
176
|
created for its server. Ordinary closure forwards stdin EOF and permits a
|
|
147
177
|
bounded graceful exit; an expired shutdown bound or disappearance of the host
|
|
148
178
|
process forcibly terminates the group, including descendants.
|
|
149
179
|
|
|
150
|
-
|
|
180
|
+
At the pinned revision, HTTP requests carry matching `MCP-Protocol-Version` and `Mcp-Method`
|
|
151
181
|
headers. Named requests also carry `Mcp-Name`; declared primitive tool
|
|
152
182
|
parameters carry validated `Mcp-Param-*` headers. Header names compare
|
|
153
183
|
case-insensitively, and body/header disagreement fails instead of guessing.
|
|
@@ -194,7 +224,7 @@ unavailable candidate without changing durable state.
|
|
|
194
224
|
|
|
195
225
|
| Variable | Contract |
|
|
196
226
|
|---|---|
|
|
197
|
-
| `PLURNK_MCP_<server>` | HTTP(S) URL or exact stdio executable |
|
|
227
|
+
| `PLURNK_MCP_<server>` | HTTP(S) URL or exact stdio executable; empty masks the definition ({§mcp-configuration-cascade}) |
|
|
198
228
|
| `PLURNK_MCP_<server>_ARGS` | JSON string array for stdio |
|
|
199
229
|
| `PLURNK_MCP_<server>_CWD` | Working directory for stdio |
|
|
200
230
|
| `PLURNK_MCP_<server>_ENV` | JSON string map for stdio |
|
|
@@ -204,7 +234,7 @@ unavailable candidate without changing durable state.
|
|
|
204
234
|
| `PLURNK_MCP_<server>_READ` | JSON string array forming an exact subset of enabled tools that the operator classifies as read-only; every other enabled tool retains the conservative `host` effect |
|
|
205
235
|
| `PLURNK_MCP_<server>_SUMMARY` | Authored one-line server orientation ({§mcp-summary-derivation}) |
|
|
206
236
|
| `PLURNK_MCP_<server>_<tool>_SUMMARY` | Authored one-line tool orientation; tool names fold the same way and may contain underscores |
|
|
207
|
-
| `PLURNK_MCP_ENABLED` | JSON array of exact configured server aliases enabled by default
|
|
237
|
+
| `PLURNK_MCP_ENABLED` | JSON array of exact configured server aliases enabled by default. `[]` is the one spelling of none: the panel states it, and an absent or empty key is refused by name |
|
|
208
238
|
| `PLURNK_MCP_EXPANDED` | JSON array subset of enabled servers whose every tool is surveyed at turn 0 — one FIND row per executable block of the family document, with aside and signature ({§tools-resource-materialization}); never a document delivered unasked; absent or `[]` expands none |
|
|
209
239
|
| `PLURNK_MCP_CONNECT_TIMEOUT` | Positive integer milliseconds |
|
|
210
240
|
| `PLURNK_MCP_REQUEST_TIMEOUT` | Positive integer milliseconds |
|
|
@@ -217,18 +247,25 @@ executable string even when its path contains whitespace; arguments never hide
|
|
|
217
247
|
inside it. Bearer authentication and a case-insensitive `Authorization` entry
|
|
218
248
|
in `_HEADERS` are mutually exclusive.
|
|
219
249
|
|
|
220
|
-
§mcp-summary-derivation **
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
250
|
+
§mcp-summary-derivation **Orientation prefers authored purpose over display
|
|
251
|
+
labels; no capabilities are inferred.** Blank values fall through:
|
|
252
|
+
|
|
253
|
+
| Summary | Precedence, highest first |
|
|
254
|
+
|---|---|
|
|
255
|
+
| Server | `_SUMMARY` → `serverInfo.description` → `instructions` → `serverInfo.title` → effective admitted tool-name list → server alias |
|
|
256
|
+
| Tool | `_<server>_<tool>_SUMMARY` → `description` → `title` → `annotations.title` → tool name |
|
|
257
|
+
|
|
258
|
+
Derived prose is whitespace-normalized, limited to its first sentence, and
|
|
259
|
+
clipped within 80 characters plus an ellipsis, preferring a word boundary. Explicit
|
|
260
|
+
one-line overrides remain intact. Full server instructions remain authored
|
|
261
|
+
Markdown in the family document's runtime `details`, available on demand;
|
|
262
|
+
turn0 surveys only the compact summary/invocations. Full tool descriptions
|
|
263
|
+
remain in the linked input-contract documents. With tools, the runtime declares
|
|
264
|
+
`{ from: "tools", description }`: purpose annotates rather than replaces the
|
|
265
|
+
complete effective menu in the family Summary and survey row
|
|
266
|
+
({§scheme-catalog-aside}). Without authored purpose the menu stands alone. The tool
|
|
230
267
|
doc's Summary section IS the invocation form
|
|
231
|
-
````
|
|
268
|
+
````` ````server (tool) <!-- one-liner --> `````, so the discovery row teaches the
|
|
232
269
|
call ({§tools-resource-materialization}). Summary companions expand `${NAME}`
|
|
233
270
|
references like every other companion.
|
|
234
271
|
|
|
@@ -265,6 +302,11 @@ transport-inapplicable options before any connection work.
|
|
|
265
302
|
§mcp-configuration-cascade MCP server configuration has one field-wise
|
|
266
303
|
precedence order: service environment, then the workspace's durable definition.
|
|
267
304
|
Arrays and maps replace their lower value instead of appending or merging.
|
|
305
|
+
An explicitly empty environment target omits that service definition, its
|
|
306
|
+
companions (including summaries), and its inherited `ENABLED`/`EXPANDED`
|
|
307
|
+
selections. Companion values are neither parsed nor expanded. It does not
|
|
308
|
+
remove a workspace-owned definition or prohibit adding one. Genuinely undeclared
|
|
309
|
+
aliases and case-fold collisions still fail validation.
|
|
268
310
|
Client configuration is not a live layer: the contracts-owned
|
|
269
311
|
`{§mcp-configuration-overlay}` enters only as the `configuration` of a
|
|
270
312
|
`discover` query, is parsed by the same owner and path as service environment
|
|
@@ -276,6 +318,41 @@ the service at connection preparation.
|
|
|
276
318
|
|
|
277
319
|
### §mcp-module The MCP family beneath the coordinator
|
|
278
320
|
|
|
321
|
+
§mcp-launch-environment Discovery and stdio connection preparation use the workspace
|
|
322
|
+
environment supplied by Core ({§workspace-env}), never the invoking worker's overrides.
|
|
323
|
+
The admitted workspace environment reaches the actual subprocess; explicit definition
|
|
324
|
+
launch options override it. Symbolic references resolve against the operator environment
|
|
325
|
+
with the same workspace entries and masks applied. Resolved ambient values are never
|
|
326
|
+
copied into durable definitions.
|
|
327
|
+
|
|
328
|
+
An `env` header option on `mcp (add)` becomes that definition's retained stdio launch
|
|
329
|
+
override, with the definition's existing symbolic-reference semantics. On `discover`
|
|
330
|
+
it applies to the probe and its returned candidate. HTTP servers
|
|
331
|
+
have no local process environment and refuse these stdio launch overrides; ordinary
|
|
332
|
+
HTTP authorization/header references may use workspace values. A running server keeps
|
|
333
|
+
its launch environment. Use ordinary `disable` and `enable` to restart it after an env
|
|
334
|
+
change; there is no automatic restart or stale-configuration state.
|
|
335
|
+
|
|
336
|
+
§mcp-working-storage **A local server never implicitly inherits the daemon's
|
|
337
|
+
working directory.** The common connection boundary requires an explicit CWD
|
|
338
|
+
or a host-supplied default. Missing or unusable storage fails connection
|
|
339
|
+
preparation; it never falls back to the project.
|
|
340
|
+
|
|
341
|
+
| Connection | Working directory and lifetime |
|
|
342
|
+
| --- | --- |
|
|
343
|
+
| Attached stdio server without `cwd` | `servers/<alias>` under the module directory from {§module-workspace-directory}; created lazily with mode `0700`, retained across disable/enable, removal, cooling, and daemon restart. |
|
|
344
|
+
| Direct stdio discovery | A unique `discover-*` directory beneath that same module root; removed only after the probe connection closes, including unsuccessful probes. It is never persisted in the candidate definition. |
|
|
345
|
+
| Explicit `cwd` | Honored without creation or cleanup. Relative values resolve against the launcher's CWD, not the default storage directory. |
|
|
346
|
+
| HTTP | No local working directory is allocated. |
|
|
347
|
+
|
|
348
|
+
Host-owned storage does not replace `HOME`, credentials, XDG environment values,
|
|
349
|
+
tool arguments, or the project CWD of ordinary executors. Executables and file
|
|
350
|
+
arguments needing a particular project must name it explicitly or configure
|
|
351
|
+
`cwd`. Stored streams/resources retain their existing ownership. This is a
|
|
352
|
+
default-placement contract, not filesystem confinement or a promise to
|
|
353
|
+
redirect a third-party server's absolute writes. No server-specific flags or
|
|
354
|
+
deprecated roots capability are introduced.
|
|
355
|
+
|
|
279
356
|
§mcp-management-actions MCP is one family of workspace Functionality
|
|
280
357
|
({§functionality-coordinator}): the coordinator publishes `workspace.mcp.list |
|
|
281
358
|
discover | add | enable | disable | remove` and the model's `mcp` executable fence
|
|
@@ -355,7 +432,7 @@ as an accidental failure.
|
|
|
355
432
|
| Pending authorization | One pending candidate per `(workspace, alias)`; a new add or customized enable cancels and replaces it. A callback from a superseded attempt fails state validation instead of cross-completing. |
|
|
356
433
|
| Client disconnect | Does not touch the pending candidate; it can still be completed, or replaced by a fresh request. |
|
|
357
434
|
| Daemon restart during pending | The candidate is lost: nothing was durable, no attachment publishes, and `oauth.complete` answers `404 oauth-not-pending`. Start authorization again. |
|
|
358
|
-
| Daemon restart after authorization | The durable definition rehydrates but tokens are gone; the attachment publishes `authorization-required` and enable returns
|
|
435
|
+
| Daemon restart after authorization | The durable definition rehydrates but tokens are gone; the attachment publishes `authorization-required` and enable returns status `202` with `definition.authorization.url` in the common mutation result. The operator reauthorizes. |
|
|
359
436
|
| Token expiry | An expired access token surfaces as one unauthorized response; the SDK re-acquires via `refresh_token` when one was issued, otherwise re-enters interactive authorization. |
|
|
360
437
|
| Refresh | Happens only against the issuer bound during the original authorization; the refreshed token replaces the in-memory token. |
|
|
361
438
|
| Workspace disable/remove | Closes the attachment and clears its pending candidate; no durable secret deletion is needed because nothing secret is durable. |
|
|
@@ -421,7 +498,19 @@ duplicate remote name, an enabled name not representable as a Plurnk target,
|
|
|
421
498
|
or a `read` name outside the enabled set fails that workspace activation. No
|
|
422
499
|
partial namespace is published and every acquired candidate closes.
|
|
423
500
|
|
|
424
|
-
|
|
501
|
+
§mcp-catalog-refresh-in-place **A catalog change refreshes in place.** An unchanged
|
|
502
|
+
definition re-lists over its existing connection and atomically republishes its
|
|
503
|
+
executor, documents, and resource facet through {§functionality-publication}.
|
|
504
|
+
SDK cache invalidation and the host's publication acknowledgement are separate
|
|
505
|
+
boundaries; neither closes or replaces the committed connection.
|
|
506
|
+
|
|
507
|
+
| Refresh boundary | Pending invalidation |
|
|
508
|
+
|---|---|
|
|
509
|
+
| Notification | Marks the alias immediately; notifications coalesce under the existing refresh timer. |
|
|
510
|
+
| Successful publication | Acknowledges only the invalidation captured by that preparation. A newer notification remains pending. |
|
|
511
|
+
| Failed listing | Keeps the previous usable snapshot and retries pending work with bounded backoff. |
|
|
512
|
+
| Aborted publication | Does not acknowledge the unpublished catalog. |
|
|
513
|
+
| Disable/remove, workspace cooling, or shutdown | Retires obsolete refresh timers and invalidations. |
|
|
425
514
|
|
|
426
515
|
MCP participates in core Functionality residency ({§module-workspace-residency}).
|
|
427
516
|
Every tool call and Task retains the workspace from executor entry through its
|
|
@@ -444,13 +533,15 @@ commit leaves the durable definition, connection, Registry, docs, and resource
|
|
|
444
533
|
authority unchanged. Materialization and registration inspect the complete
|
|
445
534
|
owning operation result; a non-success preserves its original Problem.
|
|
446
535
|
|
|
447
|
-
Shutdown
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
536
|
+
§mcp-connection-shutdown Shutdown prevents new work and aborts each connection's
|
|
537
|
+
active requests, including client-input waits. Their protocol cleanup settles
|
|
538
|
+
before the extension channel or connected transport closes, so a created Task
|
|
539
|
+
can receive `tasks/cancel`. Concurrent closers await the same settlement.
|
|
540
|
+
Candidates still negotiating and standalone OAuth transports close immediately.
|
|
541
|
+
Infrastructure watches retire without a redundant per-listen cancellation;
|
|
542
|
+
active mutations settle, process-local snapshots are discarded, and close
|
|
543
|
+
failures are reported. Core's shutdown deadline remains the outer bound
|
|
544
|
+
({§crash-only-stop}).
|
|
454
545
|
|
|
455
546
|
## §mcp-host-composition Protocol-to-Plurnk composition
|
|
456
547
|
|
|
@@ -463,19 +554,28 @@ workspace attachment. The host does not reproduce SDK protocol machinery.
|
|
|
463
554
|
| `tools/call` progress | Writes ordinary transient progress on the owning execution stream; it creates no log sibling or polling vocabulary. |
|
|
464
555
|
| Operation cancellation | The owning execution's abort signal closes the HTTP request stream or sends the stdio cancellation notification. |
|
|
465
556
|
| `input_required` | Batches all embedded requests from one result into one atomic client interaction. Opaque `requestState` remains private to the connection and only the originating request is reissued after a complete response. |
|
|
466
|
-
| Elicitation form / URL | Validates the response against the requested form or URL action contract. Client cancellation becomes the standard `cancel` action; unsupported families or modes fail before any interaction or retry. |
|
|
557
|
+
| Elicitation form / URL | Validates the response against the requested form or URL action contract. Each response-schema property's `description` carries its request message and, for URL mode, the browser URL; a generic schema renderer can present the decision without decoding MCP arguments. Client cancellation becomes the standard `cancel` action; unsupported families or modes fail before any interaction or retry. |
|
|
467
558
|
| Task handle | Keeps the original execution stream active, follows `tasks/get` and selected Task notifications, and settles that same stream with the terminal result or error. |
|
|
468
559
|
| Task input | Routes through the operation's client interaction, then sends `tasks/update`; it never asks the model to manufacture protocol state. |
|
|
469
560
|
| Task cancellation | The owning execution's cancellation invokes `tasks/cancel` before settling the ordinary stream cancellation. |
|
|
470
|
-
| List
|
|
561
|
+
| List invalidation | Invalidates SDK catalogs and atomically refreshes the attachment snapshot. |
|
|
562
|
+
| Selected resource update | Invalidates that URI's SDK cache entry; a subsequent READ acquires current content. Private entries remain authorization-partitioned. Earlier READ receipts stay unchanged; ordinary remote changes neither broadcast nor wake workers ({§actor-boundary-lineage-attention}). |
|
|
471
563
|
| Prompt get / completion | Serves ordinary resource-authority reads and host interactions from negotiated prompt/template definitions; no prompt becomes an executable tool. |
|
|
472
564
|
|
|
473
565
|
The general executor interaction contract, not this package, owns client
|
|
474
|
-
interrupt durability and AG-UI presentation.
|
|
475
|
-
|
|
566
|
+
interrupt durability and AG-UI presentation. Reattachment re-surfaces input
|
|
567
|
+
only while its originating operation remains live. MRTR round
|
|
476
568
|
limits, request timeout, cancellation, and Task terminal state are one
|
|
477
569
|
operation lifecycle; none becomes a hidden retry loop.
|
|
478
570
|
|
|
571
|
+
§mcp-input-deadline Client-input waits consume the remaining owning operation
|
|
572
|
+
budget (`PLURNK_MCP_REQUEST_TIMEOUT`); each MRTR round or Task input set does not
|
|
573
|
+
start a fresh budget. Expiry aborts the input's ordinary Core waiter, removes it
|
|
574
|
+
from pending/reconnect discovery, and enters the same bounded protocol cleanup
|
|
575
|
+
as other operation failures. A late response is no longer pending. No response
|
|
576
|
+
or tool replay is fabricated; the failed operation remains available to the
|
|
577
|
+
worker for recovery. SDK wire-leg timeouts retain ownership of transport waits.
|
|
578
|
+
|
|
479
579
|
§mcp-tool-replay A tool call is effectful unless host policy proves otherwise.
|
|
480
580
|
After dispatch, a transport failure cannot prove that the MCP server did not
|
|
481
581
|
apply the call, so `tool-call-failed` is non-retryable and never recommends
|
|
@@ -487,6 +587,12 @@ remote diagnostic as structured extensions. Their prose states only the failed
|
|
|
487
587
|
boundary fact; it neither repeats those fields nor infers whether the remote
|
|
488
588
|
effect occurred.
|
|
489
589
|
|
|
590
|
+
§mcp-trailing-aside A tool call's body is one JSON object. HTML comments after
|
|
591
|
+
that object are the writer's aside, not arguments: when the body does not parse
|
|
592
|
+
as written, trailing `<!-- … -->` comments are removed and the object is read.
|
|
593
|
+
Any other trailing text is still `invalid-tool-arguments`. Nothing teaches the
|
|
594
|
+
tolerance (#758).
|
|
595
|
+
|
|
490
596
|
## §mcp-result-content Passive result content
|
|
491
597
|
|
|
492
598
|
The default output channel carries the tool's result, not its transport envelope:
|
|
@@ -509,7 +615,8 @@ complete result, including metadata and annotations, remains available in
|
|
|
509
615
|
Unnamed resources receive eight-character hexadecimal identifiers, not ordinal
|
|
510
616
|
labels. No binary base64 is copied into the default result body. Listing a
|
|
511
617
|
resource creates no native model attachment; READ uses {§packet-attachment-parts},
|
|
512
|
-
including scoped byte reads, supported modalities, and
|
|
618
|
+
including scoped byte reads, supported modalities, and the owning READ's retention
|
|
619
|
+
and curation lifecycle.
|
|
513
620
|
Resource publication is passive; completion of the originating execution retains
|
|
514
621
|
its ordinary wake semantics. A single `resources/read` content item becomes the
|
|
515
622
|
resource's typed body; multiple items become named children under its `resources/`
|
|
@@ -522,13 +629,23 @@ standalone `blob` content block is not a modern `tools/call` content member
|
|
|
522
629
|
protocol-invalid. Size limits and MIME trust remain ordinary channel and
|
|
523
630
|
entry policy, not MCP-specific rules.
|
|
524
631
|
|
|
632
|
+
§mcp-prompt-content Retrieved prompts retain their ordered message list, roles,
|
|
633
|
+
text, and metadata as data, not conversation injections. The same content
|
|
634
|
+
projection used for tools replaces non-text parts with resource links: embedded
|
|
635
|
+
content becomes typed snapshots under the prompt's `resources/` folder; remote
|
|
636
|
+
links resolve through the server resource authority. Reading a snapshot does
|
|
637
|
+
not retrieve the prompt again or discard its arguments. A missing snapshot is
|
|
638
|
+
not found, never an implicit prompt re-execution. The prompt's `#json` preserves
|
|
639
|
+
the complete original response. Media acquisition, native delivery, retention,
|
|
640
|
+
and curation use the ordinary READ contract, not a separate prompt lifecycle.
|
|
641
|
+
|
|
525
642
|
## §mcp-apps-exclusion MCP Apps exclusion
|
|
526
643
|
|
|
527
644
|
Plurnk does not advertise or implement MCP Apps. An Apps host must sandbox
|
|
528
645
|
render third-party HTML/JavaScript, enforce CSP and `_meta.ui` permissions,
|
|
529
646
|
mediate a `postMessage` JSON-RPC `ui/` dialect, proxy app-initiated tool
|
|
530
647
|
calls with consent, and own teardown. No Plurnk client can enforce that
|
|
531
|
-
sandbox today (terminal
|
|
648
|
+
sandbox today (the terminal cannot), the daemon is not a second
|
|
532
649
|
application platform, and AG-UI has no standard Apps projection — inventing
|
|
533
650
|
a private event stream to carry Apps is rejected. Tool descriptions carrying
|
|
534
651
|
`_meta.ui` metadata project into Plurnk without it: model-facing summaries
|
|
@@ -538,12 +655,24 @@ non-advertised ({§mcp-capability-matrix}). Re-evaluate only when a
|
|
|
538
655
|
sandbox-capable client exists and a standard AG-UI projection is agreed;
|
|
539
656
|
even then the capability would be per-client-advertised, never daemon-wide.
|
|
540
657
|
|
|
658
|
+
## §mcp-skills-deferral Skills extension adoption boundary
|
|
659
|
+
|
|
660
|
+
Plurnk does not advertise or implement `io.modelcontextprotocol/skills`.
|
|
661
|
+
[SEP-2640](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/seps/2640-skills-extension.md)
|
|
662
|
+
is Final, with a
|
|
663
|
+
[stable extension specification](https://github.com/modelcontextprotocol/ext-skills/blob/main/specification/stable/skills.mdx).
|
|
664
|
+
Deferral concerns host integration, not standards maturity: origin-qualified
|
|
665
|
+
identities, manifest verification, content-bound approval, and activation
|
|
666
|
+
must compose with the existing skills, resource, and proposal owners before
|
|
667
|
+
adoption. Reading an MCP resource does not claim extension support or activate
|
|
668
|
+
it as a skill. The design review is tracked in #654.
|
|
669
|
+
|
|
541
670
|
## §mcp-model-projection Model-facing projection
|
|
542
671
|
|
|
543
672
|
| MCP surface | Plurnk surface |
|
|
544
673
|
|---|---|
|
|
545
674
|
| Server | One registered executor family, `worker:///_plurnk/tools/<server>.md`, and matching resource scheme |
|
|
546
|
-
| Enabled tool | One annotated call in the compact family document plus one exact `worker:///_plurnk/tools/<server>/<encoded-tool>.
|
|
675
|
+
| Enabled tool | One annotated call in the compact family document plus one exact `worker:///_plurnk/tools/<server>/<encoded-tool>.json` input-contract document |
|
|
547
676
|
| Tool survey | Ordinary FIND summary metadata from the standard executable-tool resource tree |
|
|
548
677
|
| Resource catalog | `<server>:///` and `<server>:///resources` |
|
|
549
678
|
| Resources | `<server>:///resources` and encoded resource-URI descendants |
|
|
@@ -566,9 +695,7 @@ The compact family document contains annotated, copyable tool invocations with
|
|
|
566
695
|
shallow required-field previews and alias-scoped schema links. Each linked child
|
|
567
696
|
preserves the complete remote description and raw input schema, without
|
|
568
697
|
reconstructing property tables or expanding nested constraints into the preview.
|
|
569
|
-
|
|
570
|
-
capability claim. Output schemas
|
|
571
|
-
do not enter model teaching; the returned value remains ordinary evidence. Disabled names
|
|
698
|
+
Output schemas do not enter model teaching; the returned value remains ordinary evidence. Disabled names
|
|
572
699
|
appear in neither discovery nor admission, and there is no MCP-specific FIND,
|
|
573
700
|
READ, authority-root, or other model discovery mechanism for tools.
|
|
574
701
|
|
|
@@ -591,6 +718,10 @@ target is an internal contract violation rather than a conservative guess.
|
|
|
591
718
|
Protocol conformance runs through official
|
|
592
719
|
`@modelcontextprotocol/conformance@0.2.0-alpha.11`, whose immutable
|
|
593
720
|
`2026-07-28` requirement manifest freezes the release-time alpha.10 scenario
|
|
594
|
-
set.
|
|
595
|
-
|
|
596
|
-
|
|
721
|
+
set. Its required client leg must pass; `not_scored` probes remain visible
|
|
722
|
+
without changing that verdict. The adopted `auth/client-credentials-basic`
|
|
723
|
+
extension runs as a separate named gate requiring successful grant and bearer
|
|
724
|
+
checks; an empty or skipped report never passes. Extension scenarios have no
|
|
725
|
+
dated-spec filter and do not alter the core pass rate. The JWT arm remains
|
|
726
|
+
excluded under {§oauth-client-credentials}. Atlas and third-party
|
|
727
|
+
stdio/Streamable HTTP servers are composition evidence only.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ContentBlock, ResourceLink, TextContent } from "@modelcontextprotocol/client";
|
|
2
|
+
import type { EntryData } from "@plurnk/plurnk-schemes";
|
|
3
|
+
interface ResourceProjection {
|
|
4
|
+
address(uri: string): string | Promise<string>;
|
|
5
|
+
publish?(channel: EntryData["channels"][string], name?: string): Promise<string>;
|
|
6
|
+
}
|
|
7
|
+
export default class ContentProjection {
|
|
8
|
+
static project(part: ContentBlock, resources: ResourceProjection): Promise<TextContent | ResourceLink>;
|
|
9
|
+
}
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=ContentProjection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentProjection.d.ts","sourceRoot":"","sources":["../src/ContentProjection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC5F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGxD,UAAU,kBAAkB;IACxB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,OAAO,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpF;AAED,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAClC,OAAa,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,GAAG,YAAY,CAAC,CAgB3G;CACJ"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import ResourceContent from "./ResourceContent.js";
|
|
2
|
+
export default class ContentProjection {
|
|
3
|
+
static async project(part, resources) {
|
|
4
|
+
if (part.type === "text")
|
|
5
|
+
return part;
|
|
6
|
+
if (part.type === "resource_link")
|
|
7
|
+
return { ...part, uri: await resources.address(part.uri) };
|
|
8
|
+
if (resources.publish === undefined)
|
|
9
|
+
throw new Error("MCP content requires a resource publisher.");
|
|
10
|
+
const name = part.type === "resource" ? ResourceContent.name(part.resource) : undefined;
|
|
11
|
+
const channel = part.type === "resource" ? ResourceContent.channel(part.resource)
|
|
12
|
+
: { content: "", bytes: Buffer.from(part.data, "base64"), mimetype: part.mimeType };
|
|
13
|
+
const uri = await resources.publish(channel, name);
|
|
14
|
+
return {
|
|
15
|
+
type: "resource_link",
|
|
16
|
+
uri,
|
|
17
|
+
name: name ?? decodeURIComponent(new URL(uri).pathname.split("/").at(-1)),
|
|
18
|
+
mimeType: channel.mimetype,
|
|
19
|
+
...(part.annotations === undefined ? {} : { annotations: part.annotations }),
|
|
20
|
+
...(part._meta === undefined ? {} : { _meta: part._meta }),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=ContentProjection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentProjection.js","sourceRoot":"","sources":["../src/ContentProjection.ts"],"names":[],"mappings":"AAEA,OAAO,eAAe,MAAM,sBAAsB,CAAC;AAOnD,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAClC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAkB,EAAE,SAA6B;QAClE,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QACtC,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe;YAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9F,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QACnG,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC7E,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxF,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnD,OAAO;YACH,IAAI,EAAE,eAAe;YACrB,GAAG;YACH,IAAI,EAAE,IAAI,IAAI,kBAAkB,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;YAC1E,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5E,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;SAC7D,CAAC;IACN,CAAC;CACJ"}
|
package/dist/McpExecutor.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export declare const toolResultBody: (result: ToolResultShape, runtime: string,
|
|
|
14
14
|
content: string;
|
|
15
15
|
mimetype: string;
|
|
16
16
|
}>;
|
|
17
|
-
export declare const runtimeDecl: (name: string, summary: RuntimeSummaryDecl, expandTools: boolean) => RuntimeDecl;
|
|
17
|
+
export declare const runtimeDecl: (name: string, summary: RuntimeSummaryDecl, expandTools: boolean, instructions?: string) => RuntimeDecl;
|
|
18
18
|
export default class McpExecutor extends BaseExecutor {
|
|
19
19
|
#private;
|
|
20
20
|
constructor(metadata: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpExecutor.d.ts","sourceRoot":"","sources":["../src/McpExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EAKf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EACR,WAAW,EACX,MAAM,EACN,QAAQ,EACR,UAAU,EAEV,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,gBAAgB,EAAE,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,8BAA8B,CAAC;AAGjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"McpExecutor.d.ts","sourceRoot":"","sources":["../src/McpExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EAKf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EACR,WAAW,EACX,MAAM,EACN,QAAQ,EACR,UAAU,EAEV,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,gBAAgB,EAAE,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,8BAA8B,CAAC;AAGjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAiB9C,eAAO,MAAM,aAAa,SAChB,MAAM,WACH,aAAa,GAAG,SAAS,YACxB,MAAM,GAAG,SAAS,KAC7B,MAOF,CAAC;AAGF,eAAO,MAAM,oBAAoB,SACvB,MAAM,WACH,aAAa,GAAG,SAAS,YACxB,MAAM,GAAG,SAAS,KAC7B,kBAKF,CAAC;AAMF,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAC3C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,cAAc,WAAkB,eAAe,WAAW,MAAM,UAAU,QAAQ,CAAC,OAAO,CAAC,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAqBvJ,CAAC;AAEF,eAAO,MAAM,WAAW,SAAU,MAAM,WAAW,kBAAkB,eAAe,OAAO,iBAAiB,MAAM,KAAG,WAenH,CAAC;AAuBH,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,YAAY;;IAoBjD,YACI,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAC5C,UAAU,EAAE,gBAAgB,EAC5B,eAAe,EAAE,MAAM,MAAM,IAAI,EACjC,MAAM,GAAE,OAAO,CAAC,UAAU,CAAM,EAChC,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAQ9C;IAED,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAOpD;IAEQ,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAK7C;IAED,IAAa,gBAAgB,IAAI,MAAM,CAEtC;IAgCD,YAAY,IAAI,mBAAmB,CAKlC;IAED,IAAI,OAAO,IAAI,aAAa,CAK3B;IAEc,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAgBvE;IAEK,gBAAgB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAwBzE;IAEK,GAAG,CAAC,EACN,OAAO,EACP,IAAI,EACJ,MAAM,EACN,MAAM,EACN,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,KAAK,GACR,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CA2HhC;CACJ"}
|