@introspection-ai/recipes 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +184 -0
  3. package/dist/agent-tool.d.ts +42 -0
  4. package/dist/agent-tool.d.ts.map +1 -0
  5. package/dist/agent-tool.js +159 -0
  6. package/dist/agent-tool.js.map +1 -0
  7. package/dist/child-agent-completions.d.ts +61 -0
  8. package/dist/child-agent-completions.d.ts.map +1 -0
  9. package/dist/child-agent-completions.js +135 -0
  10. package/dist/child-agent-completions.js.map +1 -0
  11. package/dist/child-agent-store.d.ts +48 -0
  12. package/dist/child-agent-store.d.ts.map +1 -0
  13. package/dist/child-agent-store.js +98 -0
  14. package/dist/child-agent-store.js.map +1 -0
  15. package/dist/child-agent.d.ts +43 -0
  16. package/dist/child-agent.d.ts.map +1 -0
  17. package/dist/child-agent.js +268 -0
  18. package/dist/child-agent.js.map +1 -0
  19. package/dist/direct-cli.d.ts +9 -0
  20. package/dist/direct-cli.d.ts.map +1 -0
  21. package/dist/direct-cli.js +22 -0
  22. package/dist/direct-cli.js.map +1 -0
  23. package/dist/index.d.ts +14 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +14 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/inspect.d.ts +26 -0
  28. package/dist/inspect.d.ts.map +1 -0
  29. package/dist/inspect.js +70 -0
  30. package/dist/inspect.js.map +1 -0
  31. package/dist/interactions.d.ts +204 -0
  32. package/dist/interactions.d.ts.map +1 -0
  33. package/dist/interactions.js +358 -0
  34. package/dist/interactions.js.map +1 -0
  35. package/dist/mcp-catalog.d.ts +8 -0
  36. package/dist/mcp-catalog.d.ts.map +1 -0
  37. package/dist/mcp-catalog.js +60 -0
  38. package/dist/mcp-catalog.js.map +1 -0
  39. package/dist/mcp-cli-core.d.ts +79 -0
  40. package/dist/mcp-cli-core.d.ts.map +1 -0
  41. package/dist/mcp-cli-core.js +1717 -0
  42. package/dist/mcp-cli-core.js.map +1 -0
  43. package/dist/mcp-cli-help.d.ts +2 -0
  44. package/dist/mcp-cli-help.d.ts.map +1 -0
  45. package/dist/mcp-cli-help.js +36 -0
  46. package/dist/mcp-cli-help.js.map +1 -0
  47. package/dist/mcp-cli-policy.d.ts +17 -0
  48. package/dist/mcp-cli-policy.d.ts.map +1 -0
  49. package/dist/mcp-cli-policy.js +230 -0
  50. package/dist/mcp-cli-policy.js.map +1 -0
  51. package/dist/mcp-cli.d.ts +3 -0
  52. package/dist/mcp-cli.d.ts.map +1 -0
  53. package/dist/mcp-cli.js +33 -0
  54. package/dist/mcp-cli.js.map +1 -0
  55. package/dist/mcp-client.d.ts +3 -0
  56. package/dist/mcp-client.d.ts.map +1 -0
  57. package/dist/mcp-client.js +86 -0
  58. package/dist/mcp-client.js.map +1 -0
  59. package/dist/mcp-command-context.d.ts +13 -0
  60. package/dist/mcp-command-context.d.ts.map +1 -0
  61. package/dist/mcp-command-context.js +29 -0
  62. package/dist/mcp-command-context.js.map +1 -0
  63. package/dist/mcp-contract.d.ts +16 -0
  64. package/dist/mcp-contract.d.ts.map +1 -0
  65. package/dist/mcp-contract.js +306 -0
  66. package/dist/mcp-contract.js.map +1 -0
  67. package/dist/mcp-daemon-client.d.ts +10 -0
  68. package/dist/mcp-daemon-client.d.ts.map +1 -0
  69. package/dist/mcp-daemon-client.js +119 -0
  70. package/dist/mcp-daemon-client.js.map +1 -0
  71. package/dist/mcp-daemon-protocol.d.ts +64 -0
  72. package/dist/mcp-daemon-protocol.d.ts.map +1 -0
  73. package/dist/mcp-daemon-protocol.js +6 -0
  74. package/dist/mcp-daemon-protocol.js.map +1 -0
  75. package/dist/mcp-daemon.d.ts +3 -0
  76. package/dist/mcp-daemon.d.ts.map +1 -0
  77. package/dist/mcp-daemon.js +76880 -0
  78. package/dist/mcp-daemon.js.map +1 -0
  79. package/dist/mcp-run-worker.d.ts +2 -0
  80. package/dist/mcp-run-worker.d.ts.map +1 -0
  81. package/dist/mcp-run-worker.js +76579 -0
  82. package/dist/mcp-run-worker.js.map +1 -0
  83. package/dist/mcp.d.ts +168 -0
  84. package/dist/mcp.d.ts.map +1 -0
  85. package/dist/mcp.js +558 -0
  86. package/dist/mcp.js.map +1 -0
  87. package/dist/pi-extension.d.ts +30 -0
  88. package/dist/pi-extension.d.ts.map +1 -0
  89. package/dist/pi-extension.js +880 -0
  90. package/dist/pi-extension.js.map +1 -0
  91. package/dist/provider-env.d.ts +2 -0
  92. package/dist/provider-env.d.ts.map +1 -0
  93. package/dist/provider-env.js +21 -0
  94. package/dist/provider-env.js.map +1 -0
  95. package/dist/recipe/resolve.d.ts +30 -0
  96. package/dist/recipe/resolve.d.ts.map +1 -0
  97. package/dist/recipe/resolve.js +131 -0
  98. package/dist/recipe/resolve.js.map +1 -0
  99. package/dist/recipe-agent.d.ts +71 -0
  100. package/dist/recipe-agent.d.ts.map +1 -0
  101. package/dist/recipe-agent.js +555 -0
  102. package/dist/recipe-agent.js.map +1 -0
  103. package/dist/recipe-extensions.d.ts +9 -0
  104. package/dist/recipe-extensions.d.ts.map +1 -0
  105. package/dist/recipe-extensions.js +81 -0
  106. package/dist/recipe-extensions.js.map +1 -0
  107. package/dist/recipe-mcp-config.d.ts +15 -0
  108. package/dist/recipe-mcp-config.d.ts.map +1 -0
  109. package/dist/recipe-mcp-config.js +82 -0
  110. package/dist/recipe-mcp-config.js.map +1 -0
  111. package/dist/recipe-model.d.ts +49 -0
  112. package/dist/recipe-model.d.ts.map +1 -0
  113. package/dist/recipe-model.js +299 -0
  114. package/dist/recipe-model.js.map +1 -0
  115. package/dist/recipe-package.d.ts +79 -0
  116. package/dist/recipe-package.d.ts.map +1 -0
  117. package/dist/recipe-package.js +479 -0
  118. package/dist/recipe-package.js.map +1 -0
  119. package/dist/recipe-skills.d.ts +7 -0
  120. package/dist/recipe-skills.d.ts.map +1 -0
  121. package/dist/recipe-skills.js +46 -0
  122. package/dist/recipe-skills.js.map +1 -0
  123. package/dist/run-controller.d.ts +32 -0
  124. package/dist/run-controller.d.ts.map +1 -0
  125. package/dist/run-controller.js +259 -0
  126. package/dist/run-controller.js.map +1 -0
  127. package/dist/run.d.ts +28 -0
  128. package/dist/run.d.ts.map +1 -0
  129. package/dist/run.js +84 -0
  130. package/dist/run.js.map +1 -0
  131. package/dist/session.d.ts +140 -0
  132. package/dist/session.d.ts.map +1 -0
  133. package/dist/session.js +363 -0
  134. package/dist/session.js.map +1 -0
  135. package/dist/test-utils.d.ts +32 -0
  136. package/dist/test-utils.d.ts.map +1 -0
  137. package/dist/test-utils.js +259 -0
  138. package/dist/test-utils.js.map +1 -0
  139. package/dist/testing.d.ts +25 -0
  140. package/dist/testing.d.ts.map +1 -0
  141. package/dist/testing.js +96 -0
  142. package/dist/testing.js.map +1 -0
  143. package/docs/agent-composition.md +196 -0
  144. package/docs/deployment-configuration.md +65 -0
  145. package/docs/index.md +49 -0
  146. package/docs/interactions.md +210 -0
  147. package/docs/mcp-auth.md +80 -0
  148. package/docs/mcp-configuration.md +126 -0
  149. package/docs/migration.md +70 -0
  150. package/docs/pi-extension.md +97 -0
  151. package/docs/python-bindings-release.md +47 -0
  152. package/docs/recipe-evals.md +70 -0
  153. package/docs/recipe-flow.md +41 -0
  154. package/docs/recipe-format.md +186 -0
  155. package/docs/recipe-judges.md +152 -0
  156. package/docs/runtime-library.md +171 -0
  157. package/package.json +106 -0
  158. package/vendor/mcp-client/darwin-arm64/mcp-client +0 -0
  159. package/vendor/mcp-client/darwin-x64/mcp-client +0 -0
  160. package/vendor/mcp-client/linux-arm64/mcp-client +0 -0
  161. package/vendor/mcp-client/linux-x64/mcp-client +0 -0
@@ -0,0 +1,358 @@
1
+ /**
2
+ * Interaction mechanics for recipe tools: ask the user a question or request
3
+ * approval with one contract that works on every pi host.
4
+ *
5
+ * This module registers no tools. Recipes own their interaction tools and call
6
+ * `askUserQuestion()` or `askUserApproval()` from the tool's `execute()`;
7
+ * raw `askUser()` is the lower-level escape hatch. The module resolves the
8
+ * best available interaction channel and always returns a finished tool result:
9
+ *
10
+ * 1. `PI_ASK_USER_AUTO_APPROVE` — headless/CI: confirmations approve,
11
+ * questions decline. Deterministic, never blocks.
12
+ * 2. `ctx.hasUI` (TUI and RPC modes) — walk the built-in dialogs, or the
13
+ * caller's `interactive` override.
14
+ * 3. `PI_INTERRUPT_RESUME` (host capability flag) — return an "Awaiting
15
+ * user response." result carrying a `details.interrupt` pause
16
+ * descriptor; the host pauses the run and later resumes it by rewriting
17
+ * this tool result with the user's response envelope.
18
+ * 4. Otherwise — report that interaction is unavailable so the model asks
19
+ * in its plain chat reply instead. An unrendered question is never
20
+ * treated as declined.
21
+ *
22
+ * The response envelopes are a frozen wire contract shared with interrupt-
23
+ * capable hosts (see `docs/interactions.md`): both sides must synthesize
24
+ * byte-identical text for the same outcome so recipes cannot tell whether an
25
+ * answer arrived through a local dialog or a remote resume.
26
+ *
27
+ * A `details.interrupt` with `outcome.type === "awaiting_user"` is the pause
28
+ * signal. Runtime hosts may adapt it to their own pause/resume state.
29
+ */
30
+ import { AsyncLocalStorage } from "node:async_hooks";
31
+ /** Well-known `reason` for a question the model needs answered. */
32
+ export const ASK_USER_REASON_INPUT_REQUIRED = "input_required";
33
+ /** Well-known `reason` for an approve/request-changes decision. */
34
+ export const ASK_USER_REASON_CONFIRMATION = "confirmation";
35
+ /** Well-known `reason` for a decision bound to a specific tool call. */
36
+ export const ASK_USER_REASON_TOOL_CALL = "tool_call";
37
+ /**
38
+ * Default dialog timeout applied in RPC mode only. RPC clients may never
39
+ * render a dialog, so an unanswered one must not wedge the session; the TUI
40
+ * gets no default timeout (a visible dialog can wait for the user).
41
+ */
42
+ export const DEFAULT_RPC_DIALOG_TIMEOUT_MS = 120_000;
43
+ const APPROVE_OPTION = "Approve";
44
+ const REQUEST_CHANGES_OPTION = "Request changes";
45
+ const CUSTOM_ANSWER_OPTION = "Other";
46
+ // Frozen envelope literals — the interaction wire contract. Interrupt-capable
47
+ // hosts synthesize the same literals when resuming a paused run, so recipes
48
+ // see identical tool results in every mode. Do not reword without a
49
+ // coordinated protocol change (see docs/interactions.md).
50
+ const DECLINED_ENVELOPE = "User declined to answer. Proceed with your best judgment.";
51
+ const AWAITING_USER_ENVELOPE = "Awaiting user response.";
52
+ const UNAVAILABLE_ENVELOPE = "User interaction is unavailable in this session; nothing was shown to the user. " +
53
+ "Ask the user in your normal assistant reply instead, and continue after they respond.";
54
+ // Recipe extensions and their host may resolve separate physical copies of
55
+ // Recipes (for example, one under the recipe and one under runtime-worker).
56
+ // Keep the async context process-global so either copy can establish the child
57
+ // boundary and every current copy observes it. Retain the pre-rename symbol
58
+ // key so old and new package versions interoperate in the same process.
59
+ const INTERACTION_AUTO_RESOLUTION_KEY = Symbol.for("@introspection-ai/pi-recipes/interaction-auto-resolution");
60
+ const interactionGlobals = globalThis;
61
+ const interactionAutoResolution = interactionGlobals[INTERACTION_AUTO_RESOLUTION_KEY] ??
62
+ new AsyncLocalStorage();
63
+ interactionGlobals[INTERACTION_AUTO_RESOLUTION_KEY] = interactionAutoResolution;
64
+ /**
65
+ * Run `fn` with interaction requests resolved without prompting the user.
66
+ *
67
+ * Child sessions cannot own the root session's user interaction lifecycle.
68
+ * Approval requests are approved and questions are declined so the child can
69
+ * make progress without surfacing a UI dialog or an interrupt.
70
+ */
71
+ export function autoResolveInteractions(fn) {
72
+ return interactionAutoResolution.run(true, fn);
73
+ }
74
+ /** @deprecated Use `autoResolveInteractions()` for the explicit behavior. */
75
+ export function suppressInterruptResume(fn) {
76
+ return autoResolveInteractions(fn);
77
+ }
78
+ /** Ask the user, resolving the best available interaction channel. */
79
+ export async function askUser(request, opts) {
80
+ const env = opts.env ?? process.env;
81
+ if (interactionAutoResolution.getStore() === true) {
82
+ return finishedResult(request, isApprovalReason(request.reason)
83
+ ? { type: "approved" }
84
+ : { type: "declined" });
85
+ }
86
+ if (flagEnabled(env.PI_ASK_USER_AUTO_APPROVE)) {
87
+ return finishedResult(request, isApprovalReason(request.reason)
88
+ ? { type: "approved" }
89
+ : { type: "declined" });
90
+ }
91
+ if (opts.ctx.hasUI) {
92
+ const timeout = opts.timeoutMs ??
93
+ (opts.ctx.mode === "rpc" ? DEFAULT_RPC_DIALOG_TIMEOUT_MS : undefined);
94
+ const dialog = {
95
+ ...(opts.signal ? { signal: opts.signal } : {}),
96
+ ...(timeout !== undefined ? { timeout } : {}),
97
+ };
98
+ const custom = opts.interactive
99
+ ? await opts.interactive(opts.ctx.ui, dialog)
100
+ : undefined;
101
+ throwIfAborted(opts.signal);
102
+ const outcome = custom ?? (await dialogWalk(request, opts.ctx.ui, dialog, opts.signal));
103
+ return finishedResult(request, outcome);
104
+ }
105
+ if (flagEnabled(env.PI_INTERRUPT_RESUME)) {
106
+ return awaitingUserResult(request, opts.toolCallId);
107
+ }
108
+ return finishedResult(request, { type: "unavailable" });
109
+ }
110
+ /** Ask a blocking clarification question without hand-authoring interrupt details. */
111
+ export async function askUserQuestion(request, opts) {
112
+ const metadata = compactRecord({
113
+ kind: "ask_user_question",
114
+ ...(request.header ? { header: request.header } : {}),
115
+ question: request.question,
116
+ ...(request.metadata ?? {}),
117
+ });
118
+ return askUser({
119
+ reason: ASK_USER_REASON_INPUT_REQUIRED,
120
+ message: request.question,
121
+ options: request.options,
122
+ ...(Object.keys(metadata).length > 0 ? { metadata } : {}),
123
+ ...(request.display ? { display: request.display } : {}),
124
+ ...(request.expiresAt ? { expiresAt: request.expiresAt } : {}),
125
+ }, opts);
126
+ }
127
+ /** Request approval without hand-authoring interrupt details or display data. */
128
+ export async function askUserApproval(request, opts) {
129
+ const kind = request.kind?.trim() || "approval";
130
+ const title = request.title?.trim();
131
+ const body = request.body?.trim();
132
+ const message = request.message?.trim() || (title ? `Approve ${title}?` : "Approve?");
133
+ const display = compactDisplay({
134
+ kind,
135
+ ...(title ? { title } : {}),
136
+ ...(body ? { body } : {}),
137
+ ...(request.sections?.length ? { sections: request.sections } : {}),
138
+ });
139
+ const metadata = compactRecord({
140
+ kind,
141
+ ...(title ? { title } : {}),
142
+ ...(body ? { body } : {}),
143
+ ...(display?.sections?.length ? { sections: display.sections } : {}),
144
+ ...(request.metadata ?? {}),
145
+ });
146
+ return askUser({
147
+ reason: ASK_USER_REASON_CONFIRMATION,
148
+ message,
149
+ ...(Object.keys(metadata).length > 0 ? { metadata } : {}),
150
+ ...(display ? { display } : {}),
151
+ ...(request.expiresAt ? { expiresAt: request.expiresAt } : {}),
152
+ }, opts);
153
+ }
154
+ function flagEnabled(value) {
155
+ if (!value)
156
+ return false;
157
+ const normalized = value.trim().toLowerCase();
158
+ return normalized !== "" && normalized !== "0" && normalized !== "false";
159
+ }
160
+ function isApprovalReason(reason) {
161
+ return (reason === ASK_USER_REASON_CONFIRMATION ||
162
+ reason === ASK_USER_REASON_TOOL_CALL);
163
+ }
164
+ function throwIfAborted(signal) {
165
+ // Dialogs resolve undefined for both a user dismissal and a turn abort;
166
+ // only the signal distinguishes them. A dismissal is a decline, an abort
167
+ // must not fabricate an outcome.
168
+ if (signal?.aborted) {
169
+ throw new Error("User interaction aborted");
170
+ }
171
+ }
172
+ function compactRecord(record) {
173
+ return Object.fromEntries(Object.entries(record).filter(([, value]) => value !== undefined &&
174
+ value !== null &&
175
+ (!Array.isArray(value) || value.length > 0)));
176
+ }
177
+ function compactDisplay(display) {
178
+ const title = display.title?.trim();
179
+ const body = display.body?.trim();
180
+ const sections = (display.sections ?? [])
181
+ .map((section) => {
182
+ const sectionTitle = section.title.trim();
183
+ const sectionBody = section.body?.trim();
184
+ const items = section.items?.map((item) => item.trim()).filter(Boolean);
185
+ if (!sectionTitle && !sectionBody && (!items || items.length === 0)) {
186
+ return null;
187
+ }
188
+ return {
189
+ title: sectionTitle,
190
+ ...(sectionBody ? { body: sectionBody } : {}),
191
+ ...(items && items.length > 0 ? { items } : {}),
192
+ };
193
+ })
194
+ .filter((section) => Boolean(section));
195
+ if (!title && !body && sections.length === 0)
196
+ return undefined;
197
+ return {
198
+ kind: display.kind,
199
+ ...(title ? { title } : {}),
200
+ ...(body ? { body } : {}),
201
+ ...(sections.length > 0 ? { sections } : {}),
202
+ };
203
+ }
204
+ /**
205
+ * Built-in dialog walk. Deliberately minimal: a select for fixed choices or
206
+ * approvals, a text input otherwise. Empty and dismissed answers decline —
207
+ * the user saw the question and chose not to answer it.
208
+ */
209
+ async function dialogWalk(request, ui, dialog, signal) {
210
+ if (isApprovalReason(request.reason)) {
211
+ // ui.confirm() cannot carry per-option labels, so approvals use a select.
212
+ const choice = await ui.select(localDialogMessage(request), [APPROVE_OPTION, REQUEST_CHANGES_OPTION], dialog);
213
+ throwIfAborted(signal);
214
+ if (choice === undefined)
215
+ return { type: "declined" };
216
+ if (choice === APPROVE_OPTION)
217
+ return { type: "approved" };
218
+ const feedback = await ui.input("Feedback", "Describe the changes you want (optional)", dialog);
219
+ throwIfAborted(signal);
220
+ const trimmed = feedback?.trim();
221
+ return trimmed
222
+ ? { type: "revision_requested", feedback: trimmed }
223
+ : { type: "revision_requested" };
224
+ }
225
+ if (request.options && request.options.length > 0) {
226
+ const options = normalizeOptions(request.options);
227
+ const selectOptions = [...options.map((option) => option.label)];
228
+ if (!selectOptions.includes(CUSTOM_ANSWER_OPTION)) {
229
+ selectOptions.push(CUSTOM_ANSWER_OPTION);
230
+ }
231
+ const choice = await ui.select(localDialogMessage(request), selectOptions, dialog);
232
+ throwIfAborted(signal);
233
+ if (choice === undefined)
234
+ return { type: "declined" };
235
+ if (choice === CUSTOM_ANSWER_OPTION) {
236
+ const text = await ui.input("Answer", "Type your own answer", dialog);
237
+ throwIfAborted(signal);
238
+ const trimmed = text?.trim();
239
+ return trimmed
240
+ ? { type: "answered", answer: trimmed }
241
+ : { type: "declined" };
242
+ }
243
+ const selected = options.find((option) => option.label === choice);
244
+ return {
245
+ type: "answered",
246
+ answer: selected?.value?.trim() || selected?.label || choice,
247
+ };
248
+ }
249
+ const text = await ui.input(localDialogMessage(request), undefined, dialog);
250
+ throwIfAborted(signal);
251
+ const trimmed = text?.trim();
252
+ return trimmed
253
+ ? { type: "answered", answer: trimmed }
254
+ : { type: "declined" };
255
+ }
256
+ function localDialogMessage(request) {
257
+ const display = request.display;
258
+ if (!display)
259
+ return request.message;
260
+ const lines = [];
261
+ const title = display.title?.trim();
262
+ if (title) {
263
+ lines.push(title);
264
+ }
265
+ else {
266
+ lines.push(request.message);
267
+ }
268
+ const body = display.body?.trim();
269
+ if (body) {
270
+ lines.push("", body);
271
+ }
272
+ for (const section of display.sections ?? []) {
273
+ const sectionTitle = section.title.trim();
274
+ const sectionBody = section.body?.trim();
275
+ const items = section.items?.map((item) => item.trim()).filter(Boolean) ?? [];
276
+ if (!sectionTitle && !sectionBody && items.length === 0)
277
+ continue;
278
+ lines.push("");
279
+ if (sectionTitle)
280
+ lines.push(`${sectionTitle}:`);
281
+ if (sectionBody)
282
+ lines.push(sectionBody);
283
+ for (const item of items) {
284
+ lines.push(`- ${item}`);
285
+ }
286
+ }
287
+ return lines.join("\n");
288
+ }
289
+ function envelopeText(outcome) {
290
+ switch (outcome.type) {
291
+ case "answered":
292
+ return `Answer: ${outcome.answer}`;
293
+ case "approved":
294
+ return outcome.feedback
295
+ ? `Approved. Feedback: ${outcome.feedback}`
296
+ : "Approved.";
297
+ case "revision_requested":
298
+ return outcome.feedback
299
+ ? `Revision requested. Feedback: ${outcome.feedback}`
300
+ : "Revision requested.";
301
+ case "declined":
302
+ return DECLINED_ENVELOPE;
303
+ case "awaiting_user":
304
+ return AWAITING_USER_ENVELOPE;
305
+ case "unavailable":
306
+ return UNAVAILABLE_ENVELOPE;
307
+ }
308
+ }
309
+ function normalizeOptions(options) {
310
+ return (options ?? []).flatMap((option) => {
311
+ if (typeof option === "string") {
312
+ const label = option.trim();
313
+ return label ? [{ label }] : [];
314
+ }
315
+ const label = option.label.trim();
316
+ if (!label)
317
+ return [];
318
+ const value = option.value?.trim();
319
+ const description = option.description?.trim();
320
+ return [
321
+ {
322
+ label,
323
+ ...(value ? { value } : {}),
324
+ ...(description ? { description } : {}),
325
+ },
326
+ ];
327
+ });
328
+ }
329
+ function interruptDetails(request, outcome) {
330
+ const options = normalizeOptions(request.options);
331
+ return {
332
+ interrupt: {
333
+ reason: request.reason,
334
+ message: request.message,
335
+ ...(options.length > 0 ? { options } : {}),
336
+ ...(request.metadata ? { metadata: request.metadata } : {}),
337
+ ...(request.display ? { display: request.display } : {}),
338
+ ...(request.expiresAt ? { expiresAt: request.expiresAt } : {}),
339
+ outcome,
340
+ },
341
+ };
342
+ }
343
+ function finishedResult(request, outcome) {
344
+ return {
345
+ outcome,
346
+ content: [{ type: "text", text: envelopeText(outcome) }],
347
+ details: interruptDetails(request, outcome),
348
+ };
349
+ }
350
+ function awaitingUserResult(request, _toolCallId) {
351
+ const outcome = { type: "awaiting_user" };
352
+ return {
353
+ outcome,
354
+ content: [{ type: "text", text: envelopeText(outcome) }],
355
+ details: interruptDetails(request, outcome),
356
+ };
357
+ }
358
+ //# sourceMappingURL=interactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactions.js","sourceRoot":"","sources":["../src/interactions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { McpCatalogServer } from "./mcp-daemon-protocol.js";
2
+ export declare function preloadMcpCatalogs(options?: {
3
+ env?: NodeJS.ProcessEnv;
4
+ timeoutMs?: number;
5
+ }): Promise<McpCatalogServer[]>;
6
+ export declare function clearMcpCatalogPreload(env?: NodeJS.ProcessEnv): void;
7
+ export type { McpCatalogServer } from "./mcp-daemon-protocol.js";
8
+ //# sourceMappingURL=mcp-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-catalog.d.ts","sourceRoot":"","sources":["../src/mcp-catalog.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAUjE,wBAAgB,kBAAkB,CAAC,OAAO,GAAE;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA4CnC;AAED,wBAAgB,sBAAsB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,IAAI,CAMjF;AAED,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { ensureMcpDaemon, exchangeMcpDaemon, mcpDaemonEnvironment, } from "./mcp-daemon-client.js";
3
+ const DEFAULT_CATALOG_ATTEMPT_TIMEOUT_MS = 5_000;
4
+ const catalogPreloads = new Map();
5
+ function preloadKey(env) {
6
+ const { socketPath, fingerprint } = mcpDaemonEnvironment(env);
7
+ return `${socketPath}\0${fingerprint}`;
8
+ }
9
+ export function preloadMcpCatalogs(options = {}) {
10
+ const env = options.env ?? process.env;
11
+ const timeoutMs = options.timeoutMs ?? DEFAULT_CATALOG_ATTEMPT_TIMEOUT_MS;
12
+ const key = preloadKey(env);
13
+ const existing = catalogPreloads.get(key);
14
+ if (existing)
15
+ return existing;
16
+ const requestCatalogs = async () => {
17
+ await ensureMcpDaemon(env);
18
+ const { token, fingerprint } = mcpDaemonEnvironment(env);
19
+ const id = randomUUID();
20
+ let catalogs;
21
+ let daemonError;
22
+ await exchangeMcpDaemon({ type: "catalog", id, token, fingerprint, timeoutMs }, (envelope, socket) => {
23
+ if ("catalogs" in envelope) {
24
+ catalogs = envelope.catalogs;
25
+ socket.end();
26
+ }
27
+ else if ("error" in envelope) {
28
+ daemonError = envelope.error;
29
+ socket.end();
30
+ }
31
+ }, env);
32
+ if (daemonError)
33
+ throw new Error(`MCP daemon: ${daemonError}`);
34
+ if (!catalogs)
35
+ throw new Error("MCP daemon returned no catalog result.");
36
+ const failures = catalogs.filter((server) => server.error);
37
+ if (failures.length > 0) {
38
+ throw new Error(`MCP catalog preload failed for ${failures
39
+ .map((server) => `${server.id}: ${server.error}`)
40
+ .join("; ")}`);
41
+ }
42
+ return catalogs;
43
+ };
44
+ const preload = requestCatalogs();
45
+ catalogPreloads.set(key, preload);
46
+ void preload.catch(() => {
47
+ if (catalogPreloads.get(key) === preload)
48
+ catalogPreloads.delete(key);
49
+ });
50
+ return preload;
51
+ }
52
+ export function clearMcpCatalogPreload(env = process.env) {
53
+ try {
54
+ catalogPreloads.delete(preloadKey(env));
55
+ }
56
+ catch {
57
+ // An incomplete daemon environment has no preload state to clear.
58
+ }
59
+ }
60
+ //# sourceMappingURL=mcp-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-catalog.js","sourceRoot":"","sources":["../src/mcp-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import type { Readable, Writable } from "node:stream";
2
+ import { type McpRuntime } from "./mcp-command-context.js";
3
+ import { type McpSessionConfig } from "./mcp.js";
4
+ import type { McpCatalogServer } from "./mcp-daemon-protocol.js";
5
+ export interface ToolSearchMatch {
6
+ ref: string;
7
+ server: string;
8
+ tool: string;
9
+ description: string;
10
+ required: string[];
11
+ score: number;
12
+ inspect: string;
13
+ call: string;
14
+ annotations?: Record<string, unknown>;
15
+ }
16
+ export declare class McpRunUsageError extends Error {
17
+ }
18
+ export declare class McpRunTimeoutError extends Error {
19
+ readonly outcome = "unknown";
20
+ constructor(message: string);
21
+ }
22
+ export interface McpRunRemoteErrorDetails extends Record<string, unknown> {
23
+ code?: string;
24
+ message: string;
25
+ retryable?: boolean;
26
+ action?: string;
27
+ outcome?: string;
28
+ }
29
+ export declare class McpRunToolError extends Error {
30
+ readonly server: string;
31
+ readonly tool: string;
32
+ readonly kind = "tool_execution";
33
+ readonly details?: McpRunRemoteErrorDetails;
34
+ readonly code?: string;
35
+ readonly retryable?: boolean;
36
+ readonly action?: string;
37
+ readonly outcome?: string;
38
+ constructor(server: string, tool: string, message: string, options?: ErrorOptions & {
39
+ details?: McpRunRemoteErrorDetails;
40
+ });
41
+ }
42
+ export declare function mcpListHelpText(): string;
43
+ export declare function mcpCallHelpText(): string;
44
+ export declare function mcpSearchHelpText(): string;
45
+ export declare function mcpRunHelpText(): string;
46
+ export declare function searchMcpTools(session: McpSessionConfig, query: string, opts?: {
47
+ limit?: number;
48
+ regex?: boolean;
49
+ }): ToolSearchMatch[];
50
+ export declare function discoverMcpCatalogs(runtime: McpRuntime, timeoutMs: number): Promise<McpCatalogServer[]>;
51
+ export declare function parseListTimeoutMs(args: readonly string[]): number | string;
52
+ export declare function withListTimeout<T>(promise: Promise<T>, timeoutMs: number): Promise<T>;
53
+ export declare function aggregateListExitCode(hadFailure: boolean, args: readonly string[]): number;
54
+ export declare function describeUnknownRunServer(server: string, servers: string[]): string;
55
+ export declare function describeUnavailableRunTool(server: string, tool: string, knownTools: string[]): string;
56
+ export declare function runMcpJavaScript(code: string, opts?: {
57
+ timeoutMs?: number;
58
+ callTimeoutMs?: number;
59
+ maxCalls?: number;
60
+ maxConcurrentCalls?: number;
61
+ vars?: Record<string, string>;
62
+ }): Promise<void>;
63
+ export declare function createDelegatedErrorFilter(write: (text: string) => void): {
64
+ push(chunk: string): void;
65
+ flush(): void;
66
+ };
67
+ export declare function duplicateCallArgumentKeys(args: string[]): string[];
68
+ export declare function callJsonArgumentError(args: readonly string[]): string | null;
69
+ export declare function malformedCallExpression(args: string[]): string | null;
70
+ export declare function main(args?: string[]): Promise<number>;
71
+ export declare function executeMcpCommand(opts: {
72
+ args: string[];
73
+ runtime: McpRuntime;
74
+ stdin: Readable;
75
+ stdout: Writable;
76
+ stderr: Writable;
77
+ signal: AbortSignal;
78
+ }): Promise<number>;
79
+ //# sourceMappingURL=mcp-cli-core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-cli-core.d.ts","sourceRoot":"","sources":["../src/mcp-cli-core.ts"],"names":[],"mappings":"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"}