@zackbart/connecta 0.7.9 → 0.8.1

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 (199) hide show
  1. package/CHANGELOG.md +135 -0
  2. package/README.md +47 -148
  3. package/dist/activity.d.ts +0 -8
  4. package/dist/activity.d.ts.map +1 -1
  5. package/dist/activity.js +0 -1
  6. package/dist/activity.js.map +1 -1
  7. package/dist/auth/bearer.d.ts +1 -7
  8. package/dist/auth/bearer.d.ts.map +1 -1
  9. package/dist/auth/bearer.js +3 -24
  10. package/dist/auth/bearer.js.map +1 -1
  11. package/dist/auth/clerk.d.ts +2 -11
  12. package/dist/auth/clerk.d.ts.map +1 -1
  13. package/dist/auth/clerk.js +31 -46
  14. package/dist/auth/clerk.js.map +1 -1
  15. package/dist/call-admission.d.ts.map +1 -1
  16. package/dist/call-admission.js +9 -4
  17. package/dist/call-admission.js.map +1 -1
  18. package/dist/catalog-fingerprint.d.ts +20 -0
  19. package/dist/catalog-fingerprint.d.ts.map +1 -0
  20. package/dist/catalog-fingerprint.js +34 -0
  21. package/dist/catalog-fingerprint.js.map +1 -0
  22. package/dist/catalog-limits.d.ts +10 -0
  23. package/dist/catalog-limits.d.ts.map +1 -0
  24. package/dist/catalog-limits.js +10 -0
  25. package/dist/catalog-limits.js.map +1 -0
  26. package/dist/catalog-service.d.ts +137 -0
  27. package/dist/catalog-service.d.ts.map +1 -0
  28. package/dist/catalog-service.js +401 -0
  29. package/dist/catalog-service.js.map +1 -0
  30. package/dist/catalog.d.ts +6 -0
  31. package/dist/catalog.d.ts.map +1 -1
  32. package/dist/catalog.js +53 -2
  33. package/dist/catalog.js.map +1 -1
  34. package/dist/concurrency.d.ts +4 -0
  35. package/dist/concurrency.d.ts.map +1 -0
  36. package/dist/concurrency.js +31 -0
  37. package/dist/concurrency.js.map +1 -0
  38. package/dist/connectors/api.d.ts.map +1 -1
  39. package/dist/connectors/api.js +22 -12
  40. package/dist/connectors/api.js.map +1 -1
  41. package/dist/connectors/remote-mcp.d.ts.map +1 -1
  42. package/dist/connectors/remote-mcp.js +53 -41
  43. package/dist/connectors/remote-mcp.js.map +1 -1
  44. package/dist/credentials.d.ts +3 -2
  45. package/dist/credentials.d.ts.map +1 -1
  46. package/dist/errors.d.ts +19 -1
  47. package/dist/errors.d.ts.map +1 -1
  48. package/dist/errors.js.map +1 -1
  49. package/dist/execute.d.ts +10 -16
  50. package/dist/execute.d.ts.map +1 -1
  51. package/dist/execute.js +143 -330
  52. package/dist/execute.js.map +1 -1
  53. package/dist/executor-result.d.ts +0 -3
  54. package/dist/executor-result.d.ts.map +1 -1
  55. package/dist/executor-result.js +3 -3
  56. package/dist/executor-result.js.map +1 -1
  57. package/dist/executors/quickjs-child.js +3 -3
  58. package/dist/executors/quickjs-child.js.map +1 -1
  59. package/dist/executors/quickjs-protocol.d.ts +4 -1
  60. package/dist/executors/quickjs-protocol.d.ts.map +1 -1
  61. package/dist/executors/quickjs-runtime.d.ts.map +1 -1
  62. package/dist/executors/quickjs-runtime.js +7 -2
  63. package/dist/executors/quickjs-runtime.js.map +1 -1
  64. package/dist/executors/quickjs.d.ts.map +1 -1
  65. package/dist/executors/quickjs.js +4 -1
  66. package/dist/executors/quickjs.js.map +1 -1
  67. package/dist/favicon.js +2 -2
  68. package/dist/favicon.js.map +1 -1
  69. package/dist/index.d.ts +8 -82
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +58 -104
  72. package/dist/index.js.map +1 -1
  73. package/dist/invocation.d.ts +101 -0
  74. package/dist/invocation.d.ts.map +1 -0
  75. package/dist/invocation.js +405 -0
  76. package/dist/invocation.js.map +1 -0
  77. package/dist/meta-tools.d.ts +9 -95
  78. package/dist/meta-tools.d.ts.map +1 -1
  79. package/dist/meta-tools.js +235 -725
  80. package/dist/meta-tools.js.map +1 -1
  81. package/dist/operator-ui/generated.d.ts +3 -0
  82. package/dist/operator-ui/generated.d.ts.map +1 -0
  83. package/dist/operator-ui/generated.js +5 -0
  84. package/dist/operator-ui/generated.js.map +1 -0
  85. package/dist/operator-ui/model.d.ts +73 -0
  86. package/dist/operator-ui/model.d.ts.map +1 -0
  87. package/dist/operator-ui/model.js +28 -0
  88. package/dist/operator-ui/model.js.map +1 -0
  89. package/dist/registry.d.ts +33 -184
  90. package/dist/registry.d.ts.map +1 -1
  91. package/dist/registry.js +345 -330
  92. package/dist/registry.js.map +1 -1
  93. package/dist/retired-toolkits.d.ts +3 -0
  94. package/dist/retired-toolkits.d.ts.map +1 -0
  95. package/dist/retired-toolkits.js +9 -0
  96. package/dist/retired-toolkits.js.map +1 -0
  97. package/dist/routes/activity.d.ts +3 -0
  98. package/dist/routes/activity.d.ts.map +1 -0
  99. package/dist/routes/activity.js +170 -0
  100. package/dist/routes/activity.js.map +1 -0
  101. package/dist/routes/credentials.d.ts +3 -0
  102. package/dist/routes/credentials.d.ts.map +1 -0
  103. package/dist/routes/credentials.js +170 -0
  104. package/dist/routes/credentials.js.map +1 -0
  105. package/dist/routes/mcp.d.ts +8 -0
  106. package/dist/routes/mcp.d.ts.map +1 -0
  107. package/dist/routes/mcp.js +270 -0
  108. package/dist/routes/mcp.js.map +1 -0
  109. package/dist/routes/oauth.d.ts +4 -0
  110. package/dist/routes/oauth.d.ts.map +1 -0
  111. package/dist/routes/oauth.js +263 -0
  112. package/dist/routes/oauth.js.map +1 -0
  113. package/dist/routes/shared.d.ts +76 -0
  114. package/dist/routes/shared.d.ts.map +1 -0
  115. package/dist/routes/shared.js +140 -0
  116. package/dist/routes/shared.js.map +1 -0
  117. package/dist/routes/ui.d.ts +3 -0
  118. package/dist/routes/ui.d.ts.map +1 -0
  119. package/dist/routes/ui.js +116 -0
  120. package/dist/routes/ui.js.map +1 -0
  121. package/dist/server.d.ts +9 -40
  122. package/dist/server.d.ts.map +1 -1
  123. package/dist/server.js +62 -1322
  124. package/dist/server.js.map +1 -1
  125. package/dist/skills.d.ts +3 -21
  126. package/dist/skills.d.ts.map +1 -1
  127. package/dist/skills.js +15 -43
  128. package/dist/skills.js.map +1 -1
  129. package/dist/storage/file.d.ts.map +1 -1
  130. package/dist/storage/file.js +3 -1
  131. package/dist/storage/file.js.map +1 -1
  132. package/dist/storage/memory.d.ts.map +1 -1
  133. package/dist/storage/memory.js +3 -1
  134. package/dist/storage/memory.js.map +1 -1
  135. package/dist/timeout.d.ts.map +1 -1
  136. package/dist/timeout.js +2 -4
  137. package/dist/timeout.js.map +1 -1
  138. package/dist/types.d.ts +9 -59
  139. package/dist/types.d.ts.map +1 -1
  140. package/dist/ui.d.ts +3 -94
  141. package/dist/ui.d.ts.map +1 -1
  142. package/dist/ui.js +30 -1427
  143. package/dist/ui.js.map +1 -1
  144. package/dist/version.d.ts +1 -1
  145. package/dist/version.js +1 -1
  146. package/package.json +15 -8
  147. package/src/activity.ts +0 -9
  148. package/src/auth/bearer.ts +4 -33
  149. package/src/auth/clerk.ts +35 -48
  150. package/src/call-admission.ts +8 -6
  151. package/src/catalog-fingerprint.ts +52 -0
  152. package/src/catalog-limits.ts +11 -0
  153. package/src/catalog-service.ts +601 -0
  154. package/src/catalog.ts +57 -2
  155. package/src/concurrency.ts +39 -0
  156. package/src/connectors/api.ts +22 -12
  157. package/src/connectors/remote-mcp.ts +63 -45
  158. package/src/credentials.ts +2 -2
  159. package/src/errors.ts +21 -1
  160. package/src/execute.ts +193 -423
  161. package/src/executor-result.ts +3 -3
  162. package/src/executors/quickjs-child.ts +8 -4
  163. package/src/executors/quickjs-protocol.ts +1 -1
  164. package/src/executors/quickjs-runtime.ts +5 -1
  165. package/src/executors/quickjs.ts +11 -8
  166. package/src/favicon.ts +2 -2
  167. package/src/index.ts +70 -222
  168. package/src/invocation.ts +580 -0
  169. package/src/meta-tools.ts +393 -985
  170. package/src/operator-ui/browser.css +360 -0
  171. package/src/operator-ui/browser.ts +987 -0
  172. package/src/operator-ui/generated.ts +4 -0
  173. package/src/operator-ui/model.ts +105 -0
  174. package/src/registry.ts +459 -439
  175. package/src/retired-toolkits.ts +14 -0
  176. package/src/routes/activity.ts +215 -0
  177. package/src/routes/credentials.ts +254 -0
  178. package/src/routes/mcp.ts +339 -0
  179. package/src/routes/oauth.ts +322 -0
  180. package/src/routes/shared.ts +240 -0
  181. package/src/routes/ui.ts +143 -0
  182. package/src/server.ts +64 -1731
  183. package/src/skills.ts +15 -43
  184. package/src/storage/file.ts +3 -1
  185. package/src/storage/memory.ts +3 -1
  186. package/src/timeout.ts +2 -4
  187. package/src/types.ts +8 -60
  188. package/src/ui.ts +60 -1538
  189. package/src/version.ts +1 -1
  190. package/dist/credential-health.d.ts +0 -227
  191. package/dist/credential-health.d.ts.map +0 -1
  192. package/dist/credential-health.js +0 -606
  193. package/dist/credential-health.js.map +0 -1
  194. package/dist/toolkits.d.ts +0 -146
  195. package/dist/toolkits.d.ts.map +0 -1
  196. package/dist/toolkits.js +0 -322
  197. package/dist/toolkits.js.map +0 -1
  198. package/src/credential-health.ts +0 -832
  199. package/src/toolkits.ts +0 -461
package/dist/execute.js CHANGED
@@ -1,16 +1,13 @@
1
1
  import { z } from "zod";
2
- import { compactSchema, rankTools, summarizeDescription } from "./catalog.js";
3
- import { recordToolActivity } from "./activity.js";
4
- import { assertDiscoveryResultSize, discoveryAddresses, discoverySearchLimit, errorResult, jsonResult, } from "./meta-tools.js";
2
+ import { boundedDiscoveryText, CatalogService, flatSearchResult, } from "./catalog-service.js";
3
+ import { errorResult, jsonResult } from "./meta-tools.js";
5
4
  import { guardExecuteResultValue, MAX_EXECUTE_LOG_CHARS, truncateExecuteText, } from "./executor-result.js";
6
- import { classifyCallError, ConnectorCallError } from "./errors.js";
7
- import { isCallAdmissionError } from "./call-admission.js";
8
5
  import { ExecutorAdmissionError, isAdmittingExecutor, } from "./executor-admission.js";
9
- import { unwrapMcpResult } from "./mcp-result.js";
6
+ import { InvocationFailure, InvocationService, } from "./invocation.js";
10
7
  /** Keep one model-written program from amplifying into an unbounded fan-out. */
11
- export const EXECUTE_MAX_HOST_CALLS = 20;
8
+ const EXECUTE_MAX_HOST_CALLS = 20;
12
9
  export const EXECUTE_MAX_BATCH_CALLS = 10;
13
- export const EXECUTE_HOST_CALL_TIMEOUT_MS = 15_000;
10
+ const EXECUTE_HOST_CALL_TIMEOUT_MS = 15_000;
14
11
  // deno-fmt-ignore
15
12
  const RESERVED = new Set([
16
13
  "break",
@@ -64,349 +61,158 @@ export function sanitizeIdentifier(name) {
64
61
  id = `${id}_`;
65
62
  return id;
66
63
  }
64
+ const SANDBOX_RESERVED_NAMES = new Set([
65
+ "connecta",
66
+ "console",
67
+ "arguments",
68
+ "result",
69
+ "undefined",
70
+ "setTimeout",
71
+ "Promise",
72
+ "Error",
73
+ "WorkerEntrypoint",
74
+ "CodeExecutor",
75
+ "__invoke",
76
+ "__namespace",
77
+ "__call",
78
+ "__log",
79
+ "__dispatchers",
80
+ "__connectors",
81
+ "__logs",
82
+ "__CODEMODE_BINARY_TAG",
83
+ "__bytesToBase64",
84
+ "__base64ToBytes",
85
+ "__encodeCodemodeValue",
86
+ "__decodeCodemodeValue",
87
+ "__stringifyForCodemode",
88
+ "__parseForCodemode",
89
+ ]);
67
90
  function msg(err) {
68
91
  return err instanceof Error ? err.message : String(err);
69
92
  }
70
- /**
71
- * Unwrap an MCP CallToolResult so sandbox code sees plain values:
72
- * isError throws (a real exception the code can catch), structuredContent
73
- * wins when present, all-text content is JSON.parsed when possible.
74
- * Non-MCP connectors already return plain values.
75
- */
76
- export function unwrapForSandbox(kind, result) {
77
- return unwrapMcpResult(kind, result);
93
+ function lazyNamespacePrelude(connectors) {
94
+ const declarations = connectors
95
+ .map(({ id, namespace }) => `globalThis[${JSON.stringify(namespace)}] = __makeConnectaNamespace(${JSON.stringify(id)});`)
96
+ .join("\n");
97
+ return `(() => {
98
+ const __makeConnectaNamespace = (connectorId) => Object.freeze(new Proxy(Object.create(null), {
99
+ get: (_target, toolName) => typeof toolName === "string"
100
+ ? (args) => connecta.__callNamespace(connectorId, toolName, args)
101
+ : undefined
102
+ }));
103
+ ${declarations}
104
+ })();`;
78
105
  }
79
106
  /**
80
- * Expose the registry to a sandbox: one provider (global namespace) per
81
- * connector with a function per tool, plus `connecta.call(address, args)` as
82
- * the raw-address escape hatch. Broken connectors are skipped, not fatal.
107
+ * Expose one fixed host provider plus trusted sandbox setup that creates a
108
+ * lazy proxy global per connector. No connector catalog is touched until code
109
+ * calls that namespace or explicitly asks search/describe.
83
110
  */
84
111
  export async function buildSandboxProviders(registry, baseUrl, logger, activity, limits = {}) {
85
- const providers = [];
86
112
  // All host calls made by one execute_code invocation share a downstream
87
113
  // connection, while a later invocation receives a fresh request scope.
88
114
  const requestScope = {};
115
+ const catalog = new CatalogService(registry, baseUrl, {
116
+ requestScope,
117
+ ...(limits.discoveryConcurrency !== undefined
118
+ ? { concurrency: limits.discoveryConcurrency }
119
+ : {}),
120
+ });
121
+ const invocation = new InvocationService(registry, catalog, activity);
89
122
  const maxHostCalls = Math.max(1, Math.trunc(limits.maxHostCalls ?? EXECUTE_MAX_HOST_CALLS));
90
123
  const hostCallTimeoutMs = Math.max(1, Math.trunc(limits.hostCallTimeoutMs ?? EXECUTE_HOST_CALL_TIMEOUT_MS));
91
124
  let hostCalls = 0;
92
- // Reserve the `connecta` namespace plus every global the sandbox bridge
93
- // installs (see setupScript/installBridge in quickjs.ts) — a connector id
94
- // sanitizing to one of these would clobber log capture or the call bridge.
95
- const used = new Set([
96
- "connecta",
97
- "console",
98
- "__invoke",
99
- "__namespace",
100
- "__call",
101
- "__log",
102
- ]);
103
125
  const connectors = registry.listConnectors();
104
- const catalogStarted = Date.now();
105
- const loaded = await Promise.allSettled(connectors.map((connector) => registry.getTools(connector.id, baseUrl, requestScope, {
106
- signal: limits.signal,
107
- })));
108
- if (limits.signal?.aborted) {
109
- throw new ExecutorAdmissionError("executor_cancelled", "Execution was cancelled during catalog construction.");
110
- }
111
- const catalogs = new Map();
112
- const callAddress = async (address, args) => {
113
- const resolved = registry.resolveAddress(String(address));
114
- if (!resolved)
115
- throw new Error(`Unknown address "${String(address)}"`);
116
- const definition = catalogs
117
- .get(resolved.connector.id)
118
- ?.find((tool) => tool.name === resolved.toolName);
119
- if (!definition) {
120
- throw new Error(`Unknown tool "${resolved.toolName}" on connector "${resolved.connector.id}"`);
121
- }
122
- if (definition.annotations?.readOnlyHint !== true ||
123
- definition.annotations?.destructiveHint === true) {
124
- throw new Error(`Tool "${String(address)}" is not explicitly read-only and cannot run inside execute_code. Invoke it through call_destructive_tool so the MCP host can request explicit approval.`);
126
+ const namespaces = [];
127
+ const namespaceOwners = new Map();
128
+ for (const connector of connectors) {
129
+ const namespace = sanitizeIdentifier(connector.id);
130
+ const owner = namespaceOwners.get(namespace);
131
+ const problem = SANDBOX_RESERVED_NAMES.has(namespace)
132
+ ? `Connector "${connector.id}" sanitizes to reserved execute_code namespace "${namespace}". Rename or exclude the connector before using execute_code.`
133
+ : owner
134
+ ? `Connector ids "${owner}" and "${connector.id}" both sanitize to execute_code namespace "${namespace}". Rename or exclude one connector before using execute_code.`
135
+ : undefined;
136
+ if (problem) {
137
+ logger.warn(`[connecta] execute_code: ${problem}`);
138
+ throw new Error(problem);
125
139
  }
126
- hostCalls++;
127
- if (hostCalls > maxHostCalls) {
128
- throw new Error(`execute_code host-call budget exceeded (${maxHostCalls} calls maximum)`);
129
- }
130
- if (limits.signal?.aborted) {
131
- throw new Error("execute_code host call cancelled");
132
- }
133
- const controller = new AbortController();
134
- const cancel = () => controller.abort(limits.signal?.reason);
135
- limits.signal?.addEventListener("abort", cancel, { once: true });
136
- if (limits.signal?.aborted)
137
- cancel();
138
- let timer;
139
- let onAbort;
140
- const started = Date.now();
141
- let permit;
142
- try {
143
- permit = await registry.admitCall(resolved.connector.id, {
144
- toolName: resolved.toolName,
145
- args: args ?? {},
146
- signal: controller.signal,
147
- });
148
- let rejectCancelled;
149
- const cancelled = new Promise((_, reject) => {
150
- rejectCancelled = reject;
151
- });
152
- onAbort = () => {
153
- rejectCancelled(controller.signal.reason instanceof Error
154
- ? controller.signal.reason
155
- : new Error("execute_code host call cancelled"));
156
- };
157
- controller.signal.addEventListener("abort", onAbort, { once: true });
158
- if (controller.signal.aborted)
159
- onAbort();
160
- if (controller.signal.aborted)
161
- await cancelled;
162
- const ctx = registry.contextFor(resolved.connector.id, baseUrl, requestScope, { signal: controller.signal, timeoutMs: hostCallTimeoutMs });
163
- timer = setTimeout(() => {
164
- controller.abort(new ConnectorCallError("timeout", `Tool call timed out after ${hostCallTimeoutMs}ms`));
165
- }, hostCallTimeoutMs);
166
- const pending = resolved.connector.callTool(resolved.toolName, args ?? {}, ctx);
167
- const value = unwrapForSandbox(resolved.connector.kind, await Promise.race([pending, cancelled]));
168
- registry.recordSuccess(resolved.connector.id, Date.now() - started);
169
- recordToolActivity(activity, {
170
- connectorId: resolved.connector.id,
171
- toolName: resolved.toolName,
172
- address: `${resolved.connector.id}.${resolved.toolName}`,
173
- source: "execute_code",
174
- outcome: "success",
175
- durationMs: Date.now() - started,
176
- attempts: 1,
177
- });
178
- return value;
179
- }
180
- catch (err) {
181
- const callerCancelled = limits.signal?.aborted === true ||
182
- (isCallAdmissionError(err) && err.admissionKind === "cancelled");
183
- if (!callerCancelled && !isCallAdmissionError(err)) {
184
- registry.recordFailure(resolved.connector.id, Date.now() - started, err);
140
+ namespaceOwners.set(namespace, connector.id);
141
+ namespaces.push({ id: connector.id, namespace });
142
+ }
143
+ const invocationContext = () => ({
144
+ source: "execute_code",
145
+ timeoutMs: hostCallTimeoutMs,
146
+ ...(limits.signal !== undefined ? { requestSignal: limits.signal } : {}),
147
+ unwrapResult: true,
148
+ beforeDispatch: () => {
149
+ hostCalls++;
150
+ if (hostCalls > maxHostCalls) {
151
+ throw new Error(`execute_code host-call budget exceeded (${maxHostCalls} calls maximum)`);
185
152
  }
186
- const details = callerCancelled
187
- ? {
188
- code: "cancelled",
189
- message: "Tool call was cancelled by the caller.",
190
- retryable: false,
191
- }
192
- : classifyCallError(err);
193
- recordToolActivity(activity, {
194
- connectorId: resolved.connector.id,
195
- toolName: resolved.toolName,
196
- address: `${resolved.connector.id}.${resolved.toolName}`,
197
- source: "execute_code",
198
- outcome: details.code === "timeout"
199
- ? "timeout"
200
- : details.code === "cancelled"
201
- ? "cancelled"
202
- : "error",
203
- durationMs: Date.now() - started,
204
- attempts: 1,
205
- errorCode: details.code,
206
- });
207
- throw err;
208
- }
209
- finally {
210
- if (timer)
211
- clearTimeout(timer);
212
- if (onAbort)
213
- controller.signal.removeEventListener("abort", onAbort);
214
- limits.signal?.removeEventListener("abort", cancel);
215
- permit?.release();
216
- }
153
+ },
154
+ });
155
+ const callAddress = async (address, args) => {
156
+ const outcome = await invocation.invoke(String(address), args ?? {}, invocationContext());
157
+ if (!outcome.ok)
158
+ throw new InvocationFailure(outcome.error);
159
+ return outcome.value;
217
160
  };
218
- for (let i = 0; i < connectors.length; i++) {
219
- const connector = connectors[i];
220
- const ns = sanitizeIdentifier(connector.id);
221
- if (used.has(ns)) {
222
- logger.warn(`[connecta] execute_code: namespace "${ns}" (connector "${connector.id}") collides with a reserved name or an earlier connector — connector skipped`);
223
- continue;
224
- }
225
- const loadedTools = loaded[i];
226
- if (loadedTools.status === "rejected") {
227
- // Same health accounting as the call_tool catalog catch: a connector whose
228
- // catalog cannot be fetched is unusable, and dropping its namespace with
229
- // only a warn would leave the cheap `list_connectors({ probe: false })`
230
- // signal clean for a code-mode deployment whose downstream grant was
231
- // revoked. Recorded through `registry` — this run's view — so a
232
- // toolkit-scoped execute_code lands in that toolkit's log as well.
233
- registry.recordFailure(connector.id, Date.now() - catalogStarted, loadedTools.reason);
234
- // classifyCallError so a typed auth_required thrown while listing tools
235
- // keeps its code where an operator can see it; health stores the message.
236
- const details = classifyCallError(loadedTools.reason, "catalog_lookup_failed");
237
- logger.warn(`[connecta] execute_code: connector "${connector.id}" skipped (${details.code}): ${msg(loadedTools.reason)}`);
238
- continue;
239
- }
240
- const tools = loadedTools.value;
241
- catalogs.set(connector.id, tools);
242
- // Null-prototype map: tools named `toString`/`hasOwnProperty`/`constructor`
243
- // are legitimate and must not collide with inherited Object members.
244
- const fns = Object.create(null);
245
- for (const t of tools) {
246
- if (t.annotations?.readOnlyHint !== true ||
247
- t.annotations?.destructiveHint === true) {
248
- continue;
249
- }
250
- const key = sanitizeIdentifier(t.name);
251
- if (Object.hasOwn(fns, key)) {
252
- logger.warn(`[connecta] execute_code: tool "${connector.id}.${t.name}" sanitizes to duplicate "${key}" — skipped`);
253
- continue;
254
- }
255
- // `await` (not a bare promise return) so a synchronous throw inside
256
- // callAddress never sits handler-less for the thenable-adoption
257
- // microtask — workerd reports that gap as an unhandled rejection.
258
- fns[key] = async (args) => await callAddress(`${connector.id}.${t.name}`, args);
259
- }
260
- if (Object.keys(fns).length > 0) {
261
- providers.push({ name: ns, fns });
262
- used.add(ns);
263
- }
264
- }
265
- providers.push({
266
- name: "connecta",
267
- fns: {
268
- call: callAddress,
269
- batch: async (calls) => {
270
- if (!Array.isArray(calls))
271
- throw new Error("calls must be an array");
272
- if (calls.length > EXECUTE_MAX_BATCH_CALLS) {
273
- throw new Error(`connecta.batch accepts at most ${EXECUTE_MAX_BATCH_CALLS} calls`);
274
- }
275
- return await Promise.all(calls.map(async (call) => {
276
- const item = call;
277
- try {
278
- return {
279
- address: String(item.address),
280
- ok: true,
281
- data: await callAddress(item.address, item.args),
282
- };
283
- }
284
- catch (err) {
285
- return {
286
- address: String(item.address),
287
- ok: false,
288
- error: msg(err),
289
- };
290
- }
291
- }));
292
- },
293
- search: async (raw) => {
294
- const args = (raw ?? {});
295
- const matches = [];
296
- let matchMode = "all";
297
- const collectMatches = (mode) => {
298
- matches.length = 0;
299
- let orderBase = 0;
300
- for (const connector of connectors) {
301
- if (args.connector && connector.id !== args.connector)
302
- continue;
303
- const tools = catalogs.get(connector.id);
304
- if (!tools)
305
- continue;
306
- for (const ranked of rankTools(tools, args.query ?? "", mode)) {
307
- matches.push({
308
- connector: connector.id,
309
- tool: ranked.tool,
310
- score: ranked.score,
311
- order: orderBase + ranked.order,
312
- });
313
- }
314
- orderBase += tools.length;
161
+ const callNamespace = async (connectorId, toolAlias, args) => {
162
+ const outcome = await invocation.invokeToolAlias(String(connectorId), String(toolAlias), sanitizeIdentifier, args ?? {}, invocationContext());
163
+ if (!outcome.ok)
164
+ throw new InvocationFailure(outcome.error);
165
+ return outcome.value;
166
+ };
167
+ return [
168
+ {
169
+ name: "connecta",
170
+ prelude: lazyNamespacePrelude(namespaces),
171
+ fns: {
172
+ __callNamespace: callNamespace,
173
+ call: callAddress,
174
+ batch: async (calls) => {
175
+ if (!Array.isArray(calls))
176
+ throw new Error("calls must be an array");
177
+ if (calls.length > EXECUTE_MAX_BATCH_CALLS) {
178
+ throw new Error(`connecta.batch accepts at most ${EXECUTE_MAX_BATCH_CALLS} calls`);
315
179
  }
316
- };
317
- collectMatches("all");
318
- if ((args.query ?? "").trim() && matches.length === 0) {
319
- matchMode = "partial";
320
- collectMatches(matchMode);
321
- }
322
- matches.sort((a, b) => b.score - a.score || a.order - b.order);
323
- const offset = Math.max(0, Math.trunc(args.offset ?? 0));
324
- const limit = discoverySearchLimit(args.limit);
325
- const page = matches.slice(offset, offset + limit).map((match) => {
326
- const input = match.tool.inputSchema ?? { type: "object" };
327
- return {
328
- name: match.tool.name,
329
- address: `${match.connector}.${match.tool.name}`,
330
- description: summarizeDescription(match.tool.description, args.fullDescriptions === true),
331
- ...(args.includeSchemas
332
- ? {
333
- inputSchema: args.includeSchemas === "json"
334
- ? input
335
- : compactSchema(input),
336
- }
337
- : {}),
338
- ...(args.includeSchemas && match.tool.outputSchema
339
- ? {
340
- outputSchema: args.includeSchemas === "json"
341
- ? match.tool.outputSchema
342
- : compactSchema(match.tool.outputSchema),
343
- }
344
- : {}),
345
- ...(match.tool.annotations
346
- ? { annotations: match.tool.annotations }
347
- : {}),
348
- };
349
- });
350
- const nextOffset = offset + page.length < matches.length
351
- ? offset + page.length
352
- : undefined;
353
- const result = {
354
- tools: page,
355
- total: matches.length,
356
- offset,
357
- limit,
358
- hasMore: nextOffset !== undefined,
359
- ...(nextOffset !== undefined ? { nextOffset } : {}),
360
- ...(matchMode === "partial" && matches.length > 0
361
- ? { matchMode }
362
- : {}),
363
- };
364
- assertDiscoveryResultSize(result, "Request a smaller limit, omit fullDescriptions, or use compact schemas.");
365
- return result;
366
- },
367
- describe: async (raw) => {
368
- const args = (raw ?? {});
369
- const addresses = discoveryAddresses(args.addresses);
370
- const format = args.format ?? "compact";
371
- const result = {
372
- tools: addresses.map((rawAddress) => {
373
- const address = String(rawAddress);
374
- const resolved = registry.resolveAddress(address);
375
- if (!resolved) {
376
- return { address, error: `Unknown address "${address}"` };
180
+ return await Promise.all(calls.map(async (call) => {
181
+ const item = call;
182
+ try {
183
+ return {
184
+ address: String(item.address),
185
+ ok: true,
186
+ data: await callAddress(item.address, item.args),
187
+ };
377
188
  }
378
- const tool = catalogs
379
- .get(resolved.connector.id)
380
- ?.find((item) => item.name === resolved.toolName);
381
- if (!tool) {
382
- return { address, error: `Unknown tool "${address}"` };
189
+ catch (err) {
190
+ return {
191
+ address: String(item.address),
192
+ ok: false,
193
+ error: msg(err),
194
+ };
383
195
  }
384
- const input = tool.inputSchema ?? { type: "object" };
385
- return {
386
- address,
387
- name: tool.name,
388
- description: summarizeDescription(tool.description, args.fullDescriptions === true),
389
- inputSchema: format === "json" ? input : compactSchema(input),
390
- ...(tool.outputSchema
391
- ? {
392
- outputSchema: format === "json"
393
- ? tool.outputSchema
394
- : compactSchema(tool.outputSchema),
395
- }
396
- : {}),
397
- ...(tool.annotations ? { annotations: tool.annotations } : {}),
398
- };
399
- }),
400
- };
401
- assertDiscoveryResultSize(result, 'Split the address list or use format: "compact".');
402
- return result;
196
+ }));
197
+ },
198
+ search: async (raw) => {
199
+ const args = (raw ?? {});
200
+ const result = flatSearchResult(await catalog.search(args));
201
+ boundedDiscoveryText(result, "Request a smaller limit, omit fullDescriptions, or use compact schemas.");
202
+ return result;
203
+ },
204
+ describe: async (raw) => {
205
+ const args = (raw ?? {});
206
+ const result = { tools: await catalog.describe(args) };
207
+ boundedDiscoveryText(result, 'Split the address list or use format: "compact".');
208
+ return result;
209
+ },
403
210
  },
404
211
  },
405
- });
406
- return providers;
212
+ ];
407
213
  }
408
214
  /** The execute_code handler. Exported for direct testing. */
409
- export function createExecuteTool(registry, baseUrl, executor, logger, activity) {
215
+ export function createExecuteTool(registry, baseUrl, executor, logger, activity, config = {}) {
410
216
  return async ({ code }, options = {}) => {
411
217
  const controller = new AbortController();
412
218
  const forwardAbort = () => controller.abort(options.signal?.reason);
@@ -428,7 +234,12 @@ export function createExecuteTool(registry, baseUrl, executor, logger, activity)
428
234
  });
429
235
  }
430
236
  }
431
- const providers = await buildSandboxProviders(registry, baseUrl, logger, activity, { signal: controller.signal });
237
+ const providers = await buildSandboxProviders(registry, baseUrl, logger, activity, {
238
+ signal: controller.signal,
239
+ ...(config.discoveryConcurrency !== undefined
240
+ ? { discoveryConcurrency: config.discoveryConcurrency }
241
+ : {}),
242
+ });
432
243
  if (controller.signal.aborted) {
433
244
  throw new ExecutorAdmissionError("executor_cancelled", "Execution was cancelled during sandbox setup.");
434
245
  }
@@ -493,7 +304,7 @@ const EXECUTE_DESC = `Use for dependent multi-step calls, loops, joins, branchin
493
304
  Write an async arrow function. It runs with NO network, filesystem, timers, or imports — the only capabilities are:
494
305
  - One global per connector: every address <connectorId>.<toolName> from search_tools is callable as <connectorId>.<toolName>(args) with a single args object matching the schema from describe_tools. Names are sanitized to JS identifiers: characters outside [A-Za-z0-9_$] become "_" (e.g. my-service.get.thing → my_service.get_thing), leading digits get "_" prefixed, reserved words get "_" appended.
495
306
  - connecta.call(address, args) and connecta.batch(calls) — call raw addresses.
496
- - connecta.search(args) and connecta.describe(args) — inspect the loaded catalog inside the same request.
307
+ - connecta.search(args) and connecta.describe(args) — load and inspect request-local catalogs on demand.
497
308
  - console.log(...) — captured and returned alongside the result.
498
309
 
499
310
  Tool calls return plain values (MCP text content is JSON-parsed when possible) and throw on downstream errors — use try/catch to handle them. Return a JSON-serializable value; large results are truncated, so reduce data in code instead of returning raw payloads.
@@ -502,7 +313,9 @@ Workflow: search_tools → describe_tools (schemas) → execute_code. Plain Java
502
313
  Example: async () => { const r = await crm.search({ query: "roadmap" }); return r.results.map((item) => item.title); }`;
503
314
  /** Register the execute_code meta-tool. Only called when an executor is configured. */
504
315
  export function registerExecuteTool(server, registry, ctx) {
505
- const handler = createExecuteTool(registry, ctx.baseUrl, ctx.executor, ctx.logger, ctx.activity);
316
+ const handler = createExecuteTool(registry, ctx.baseUrl, ctx.executor, ctx.logger, ctx.activity, ctx.discoveryConcurrency !== undefined
317
+ ? { discoveryConcurrency: ctx.discoveryConcurrency }
318
+ : {});
506
319
  server.registerTool("execute_code", {
507
320
  description: EXECUTE_DESC,
508
321
  inputSchema: {
@@ -1 +1 @@
1
- {"version":3,"file":"execute.js","sourceRoot":"","sources":["../src/execute.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../src/execute.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAmB,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAQzB,gFAAgF;AAChF,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAC1C,MAAM,4BAA4B,GAAG,MAAM,CAAC;AAE5C,kBAAkB;AAClB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;IACvB,OAAO;IACP,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,UAAU;IACV,UAAU;IACV,SAAS;IACT,QAAQ;IACR,IAAI;IACJ,MAAM;IACN,MAAM;IACN,QAAQ;IACR,SAAS;IACT,OAAO;IACP,SAAS;IACT,KAAK;IACL,UAAU;IACV,IAAI;IACJ,QAAQ;IACR,IAAI;IACJ,YAAY;IACZ,KAAK;IACL,KAAK;IACL,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,MAAM;IACN,KAAK;IACL,QAAQ;IACR,KAAK;IACL,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;CACR,CAAC,CAAC;AAEH,gEAAgE;AAChE,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IAC9C,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC;IACrC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAAE,EAAE,GAAG,GAAG,EAAE,GAAG,CAAC;IACpC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,UAAU;IACV,SAAS;IACT,WAAW;IACX,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,SAAS;IACT,OAAO;IACP,kBAAkB;IAClB,cAAc;IACd,UAAU;IACV,aAAa;IACb,QAAQ;IACR,OAAO;IACP,eAAe;IACf,cAAc;IACd,QAAQ;IACR,uBAAuB;IACvB,iBAAiB;IACjB,iBAAiB;IACjB,uBAAuB;IACvB,uBAAuB;IACvB,wBAAwB;IACxB,oBAAoB;CACrB,CAAC,CAAC;AAEH,SAAS,GAAG,CAAC,GAAY;IACvB,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,oBAAoB,CAC3B,UAAoD;IAEpD,MAAM,YAAY,GAAG,UAAU;SAC5B,GAAG,CACF,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CACpB,cAAc,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,+BAA+B,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAC/F;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO;;;;;;EAMP,YAAY;MACR,CAAC;AACP,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,QAAsB,EACtB,OAAe,EACf,MAAc,EACd,QAAiC,EACjC,SAKI,EAAE;IAEN,wEAAwE;IACxE,uEAAuE;IACvE,MAAM,YAAY,GAAG,EAAE,CAAC;IACxB,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE;QACpD,YAAY;QACZ,GAAG,CAAC,MAAM,CAAC,oBAAoB,KAAK,SAAS;YAC3C,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,oBAAoB,EAAE;YAC9C,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAC3B,CAAC,EACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,IAAI,sBAAsB,CAAC,CAC1D,CAAC;IACF,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAChC,CAAC,EACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,IAAI,4BAA4B,CAAC,CACrE,CAAC;IACF,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;IAC7C,MAAM,UAAU,GAA6C,EAAE,CAAC;IAChE,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC;YACnD,CAAC,CAAC,cAAc,SAAS,CAAC,EAAE,mDAAmD,SAAS,+DAA+D;YACvJ,CAAC,CAAC,KAAK;gBACL,CAAC,CAAC,kBAAkB,KAAK,UAAU,SAAS,CAAC,EAAE,8CAA8C,SAAS,+DAA+D;gBACrK,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAC7C,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,CAAC;QAC/B,MAAM,EAAE,cAAuB;QAC/B,SAAS,EAAE,iBAAiB;QAC5B,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,YAAY,EAAE,IAAI;QAClB,cAAc,EAAE,GAAG,EAAE;YACnB,SAAS,EAAE,CAAC;YACZ,IAAI,SAAS,GAAG,YAAY,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CACb,2CAA2C,YAAY,iBAAiB,CACzE,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,KAAK,EAAE,OAAgB,EAAE,IAAa,EAAE,EAAE;QAC5D,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,CACrC,MAAM,CAAC,OAAO,CAAC,EACf,IAAI,IAAI,EAAE,EACV,iBAAiB,EAAE,CACpB,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,MAAM,IAAI,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5D,OAAO,OAAO,CAAC,KAAK,CAAC;IACvB,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,KAAK,EACzB,WAAoB,EACpB,SAAkB,EAClB,IAAa,EACb,EAAE;QACF,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,eAAe,CAC9C,MAAM,CAAC,WAAW,CAAC,EACnB,MAAM,CAAC,SAAS,CAAC,EACjB,kBAAkB,EAClB,IAAI,IAAI,EAAE,EACV,iBAAiB,EAAE,CACpB,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,MAAM,IAAI,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5D,OAAO,OAAO,CAAC,KAAK,CAAC;IACvB,CAAC,CAAC;IAEF,OAAO;QACL;YACE,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,oBAAoB,CAAC,UAAU,CAAC;YACzC,GAAG,EAAE;gBACH,eAAe,EAAE,aAAa;gBAC9B,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE;oBAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;wBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;oBACrE,IAAI,KAAK,CAAC,MAAM,GAAG,uBAAuB,EAAE,CAAC;wBAC3C,MAAM,IAAI,KAAK,CACb,kCAAkC,uBAAuB,QAAQ,CAClE,CAAC;oBACJ,CAAC;oBACD,OAAO,MAAM,OAAO,CAAC,GAAG,CACtB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;wBACvB,MAAM,IAAI,GAAG,IAA6C,CAAC;wBAC3D,IAAI,CAAC;4BACH,OAAO;gCACL,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;gCAC7B,EAAE,EAAE,IAAI;gCACR,IAAI,EAAE,MAAM,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;6BACjD,CAAC;wBACJ,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,OAAO;gCACL,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;gCAC7B,EAAE,EAAE,KAAK;gCACT,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC;6BAChB,CAAC;wBACJ,CAAC;oBACH,CAAC,CAAC,CACH,CAAC;gBACJ,CAAC;gBACD,MAAM,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;oBAC7B,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAOtB,CAAC;oBACF,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC5D,oBAAoB,CAClB,MAAM,EACN,yEAAyE,CAC1E,CAAC;oBACF,OAAO,MAAM,CAAC;gBAChB,CAAC;gBACD,QAAQ,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;oBAC/B,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAItB,CAAC;oBACF,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvD,oBAAoB,CAClB,MAAM,EACN,kDAAkD,CACnD,CAAC;oBACF,OAAO,MAAM,CAAC;gBAChB,CAAC;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,iBAAiB,CAC/B,QAAsB,EACtB,OAAe,EACf,QAAkB,EAClB,MAAc,EACd,QAAiC,EACjC,SAA4C,EAAE;IAE9C,OAAO,KAAK,EACV,EAAE,IAAI,EAAoB,EAC1B,UAAoC,EAAE,EACjB,EAAE;QACvB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpE,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;YAAE,YAAY,EAAE,CAAC;aACvC,CAAC;YACJ,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,KAAK,CAAC;QACV,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,uEAAuE;YACvE,qEAAqE;YACrE,IAAI,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClC,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC9D,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC5B,MAAM,CAAC,KAAK,CAAC,mDAAmD,EAAE;wBAChE,MAAM,EAAE,KAAK,CAAC,MAAM;qBACrB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAC3C,QAAQ,EACR,OAAO,EACP,MAAM,EACN,QAAQ,EACR;gBACE,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,GAAG,CAAC,MAAM,CAAC,oBAAoB,KAAK,SAAS;oBAC3C,CAAC,CAAC,EAAE,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,EAAE;oBACvD,CAAC,CAAC,EAAE,CAAC;aACR,CACF,CAAC;YACF,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC9B,MAAM,IAAI,sBAAsB,CAC9B,oBAAoB,EACpB,+CAA+C,CAChD,CAAC;YACJ,CAAC;YACD,OAAO,GAAG,KAAK;gBACb,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;gBACtC,CAAC,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,sBAAsB,EAAE,CAAC;gBAC1C,IAAI,GAAG,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;oBACvC,MAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE;wBACxD,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,YAAY,EAAE,GAAG,CAAC,YAAY;qBAC/B,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM,MAAM,GAAG,UAAU,CAAC;oBACxB,KAAK,EAAE;wBACL,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,SAAS,EAAE,GAAG,CAAC,SAAS;wBACxB,GAAG,CAAC,GAAG,CAAC,YAAY,KAAK,SAAS;4BAChC,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE;4BACpC,CAAC,CAAC,EAAE,CAAC;qBACR;iBACF,CAAC,CAAC;gBACH,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;gBACtB,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,OAAO,WAAW,CAAC,oBAAoB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;gBAAS,CAAC;YACT,sEAAsE;YACtE,mEAAmE;YACnE,UAAU,CAAC,KAAK,EAAE,CAAC;YACnB,KAAK,EAAE,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,IAAI,GACR,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YACrC,CAAC,CAAC,mBAAmB,CACjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EACvB,qBAAqB,CACtB;YACH,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,WAAW,CAChB,UAAU,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7D,CAAC;QACJ,CAAC;QACD,uEAAuE;QACvE,sEAAsE;QACtE,gEAAgE;QAChE,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAChB,2CAA2C,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACzF,CAAC;QACJ,CAAC;QACD,OAAO,UAAU,CAAC;YAChB,MAAM;YACN,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1B,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,YAAY,GAAG,wRAAwR,sBAAsB,+CAA+C,uBAAuB,0BAA0B,4BAA4B,GAAG,KAAK;;;;;;;;;;;uHAWhV,CAAC;AAExH,uFAAuF;AACvF,MAAM,UAAU,mBAAmB,CACjC,MAAiB,EACjB,QAAsB,EACtB,GAOC;IAED,MAAM,OAAO,GAAG,iBAAiB,CAC/B,QAAQ,EACR,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,oBAAoB,KAAK,SAAS;QACpC,CAAC,CAAC,EAAE,oBAAoB,EAAE,GAAG,CAAC,oBAAoB,EAAE;QACpD,CAAC,CAAC,EAAE,CACP,CAAC;IACF,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EAAE,YAAY;QACzB,WAAW,EAAE;YACX,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,CAAC,+CAA+C,CAAC;SAC7D;QACD,wEAAwE;QACxE,sEAAsE;QACtE,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACpB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,MAAM,CACtD,CAAC,MAAM,EAAyB,EAAE,CAAC,MAAM,KAAK,SAAS,CACxD,CAAC;QACF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACxC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtD,IAAI,MAAM,CAAC,OAAO;gBAAE,OAAO,EAAE,CAAC;;gBACzB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,IAAwB,EAAE;gBAC7C,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,KAAK,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,UAAU,EAAE,CAAC;gBAC7C,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,8 +1,5 @@
1
1
  import type { ExecuteResult } from "./types.js";
2
- /** ~6k tokens. Sandbox code should filter data down before returning. */
3
- export declare const MAX_EXECUTE_RESULT_CHARS = 24000;
4
2
  export declare const MAX_EXECUTE_LOG_CHARS = 4000;
5
- export declare function serializeExecuteValue(value: unknown): string;
6
3
  export declare function guardExecuteResultValue(value: unknown): unknown;
7
4
  export declare function truncateExecuteText(text: string, max: number): string;
8
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"executor-result.d.ts","sourceRoot":"","sources":["../src/executor-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,yEAAyE;AACzE,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAC/C,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AAM3C,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAG5D;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAS/D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,aAAa,GACrB,aAAa,CAyBf"}
1
+ {"version":3,"file":"executor-result.d.ts","sourceRoot":"","sources":["../src/executor-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AAW3C,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAS/D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,aAAa,GACrB,aAAa,CAyBf"}
@@ -1,11 +1,11 @@
1
1
  /** ~6k tokens. Sandbox code should filter data down before returning. */
2
- export const MAX_EXECUTE_RESULT_CHARS = 24_000;
2
+ const MAX_EXECUTE_RESULT_CHARS = 24_000;
3
3
  export const MAX_EXECUTE_LOG_CHARS = 4_000;
4
4
  function msg(err) {
5
5
  return err instanceof Error ? err.message : String(err);
6
6
  }
7
- export function serializeExecuteValue(value) {
8
- const serialized = JSON.stringify(value, null, 2);
7
+ function serializeExecuteValue(value) {
8
+ const serialized = JSON.stringify(value);
9
9
  return serialized === undefined ? String(value) : serialized;
10
10
  }
11
11
  export function guardExecuteResultValue(value) {