stitchkit 0.118.1 → 0.120.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 (180) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/README.md +10 -7
  3. package/dist/browser/http.d.ts.map +1 -1
  4. package/dist/contract/client-types.d.ts +6 -3
  5. package/dist/contract/client-types.d.ts.map +1 -1
  6. package/dist/contract/define-validation.d.ts.map +1 -1
  7. package/dist/contract/define.d.ts +18 -12
  8. package/dist/contract/define.d.ts.map +1 -1
  9. package/dist/contract/endpoint-capabilities.d.ts +28 -0
  10. package/dist/contract/endpoint-capabilities.d.ts.map +1 -0
  11. package/dist/contract/factory.d.ts +49 -19
  12. package/dist/contract/factory.d.ts.map +1 -1
  13. package/dist/contract/tool-view.d.ts +1 -1
  14. package/dist/contract/tool-view.d.ts.map +1 -1
  15. package/dist/contract/transports.d.ts +5 -0
  16. package/dist/contract/transports.d.ts.map +1 -0
  17. package/dist/entrypoints/agent-runtime/coding-tools.js +9 -8
  18. package/dist/entrypoints/agent-runtime/harness.js +9 -8
  19. package/dist/entrypoints/agent-runtime/realtime.js +3 -3
  20. package/dist/entrypoints/agent-runtime/sandbox.js +10 -9
  21. package/dist/entrypoints/agent-runtime/sqlite/bun.js +12 -11
  22. package/dist/entrypoints/agent-runtime/sqlite/node.js +12 -11
  23. package/dist/entrypoints/agent-runtime/testing.js +12 -11
  24. package/dist/entrypoints/agent-runtime.js +22 -19
  25. package/dist/entrypoints/application/diagnostic-journal.js +3 -3
  26. package/dist/entrypoints/application/directory-inbox.js +4 -4
  27. package/dist/entrypoints/application/opentelemetry.js +1 -1
  28. package/dist/entrypoints/application.js +10 -10
  29. package/dist/entrypoints/cli/publish.js +4 -4
  30. package/dist/entrypoints/cli.js +13 -12
  31. package/dist/entrypoints/contract.d.ts +1 -1
  32. package/dist/entrypoints/contract.d.ts.map +1 -1
  33. package/dist/entrypoints/contract.js +6 -4
  34. package/dist/entrypoints/files.js +3 -3
  35. package/dist/entrypoints/geo/contract.d.ts +7 -0
  36. package/dist/entrypoints/geo/contract.d.ts.map +1 -0
  37. package/dist/entrypoints/geo/contract.js +6 -0
  38. package/dist/entrypoints/geo.js +60 -23
  39. package/dist/entrypoints/http.js +3 -3
  40. package/dist/entrypoints/index.js +9 -7
  41. package/dist/entrypoints/live.js +1 -1
  42. package/dist/entrypoints/node.js +7 -6
  43. package/dist/entrypoints/primitives.js +1 -1
  44. package/dist/entrypoints/process/owner-loss.js +1 -1
  45. package/dist/entrypoints/process.js +3 -3
  46. package/dist/entrypoints/react.js +1 -1
  47. package/dist/entrypoints/remote.js +4 -3
  48. package/dist/entrypoints/server.js +16 -15
  49. package/dist/entrypoints/telegram/screens.js +5 -5
  50. package/dist/entrypoints/telegram.js +7 -7
  51. package/dist/entrypoints/testing.js +7 -6
  52. package/dist/entrypoints/tools/agent.d.ts +9 -0
  53. package/dist/entrypoints/tools/agent.d.ts.map +1 -0
  54. package/dist/entrypoints/tools/agent.js +16 -0
  55. package/dist/entrypoints/tools/connections.js +7 -6
  56. package/dist/entrypoints/tools/contract.js +1 -1
  57. package/dist/entrypoints/tools/invoker.js +5 -4
  58. package/dist/entrypoints/tools/mcp.js +110 -9
  59. package/dist/entrypoints/tools/toolkit.d.ts +9 -0
  60. package/dist/entrypoints/tools/toolkit.d.ts.map +1 -0
  61. package/dist/entrypoints/tools/toolkit.js +40 -0
  62. package/dist/entrypoints/tools.d.ts +0 -10
  63. package/dist/entrypoints/tools.d.ts.map +1 -1
  64. package/dist/entrypoints/tools.js +38 -80
  65. package/dist/entrypoints/tracking/contract.js +5 -3
  66. package/dist/entrypoints/tracking/performance.js +3 -3
  67. package/dist/entrypoints/tracking.d.ts +1 -1
  68. package/dist/entrypoints/tracking.d.ts.map +1 -1
  69. package/dist/entrypoints/tracking.js +63 -83
  70. package/dist/entrypoints/xlsx.js +1 -1
  71. package/dist/geo/index.d.ts +2 -1
  72. package/dist/geo/index.d.ts.map +1 -1
  73. package/dist/geo/record.d.ts +8 -0
  74. package/dist/geo/record.d.ts.map +1 -0
  75. package/dist/geo/resolver.d.ts +1 -3
  76. package/dist/geo/resolver.d.ts.map +1 -1
  77. package/dist/geo/schema.d.ts +44 -0
  78. package/dist/geo/schema.d.ts.map +1 -0
  79. package/dist/geo/types.d.ts +2 -13
  80. package/dist/geo/types.d.ts.map +1 -1
  81. package/dist/{index-n5sv4z0w.js → index-0qyrcjfs.js} +16 -18
  82. package/dist/index-1psbyyhj.js +21 -0
  83. package/dist/{index-tsngj2b5.js → index-2fc1k9k2.js} +206 -206
  84. package/dist/index-3prvb42w.js +30 -0
  85. package/dist/{index-073nw9qr.js → index-3yb5kft5.js} +524 -522
  86. package/dist/{index-d9hq291n.js → index-4jpykzvw.js} +70 -81
  87. package/dist/index-568w258r.js +76 -0
  88. package/dist/index-69t14s4a.js +39 -0
  89. package/dist/{index-dky0dcmf.js → index-72r9k0av.js} +6 -2
  90. package/dist/{index-6p3frkv5.js → index-7zwtbak8.js} +9 -50
  91. package/dist/{index-90p34rts.js → index-8ryydawp.js} +7 -5
  92. package/dist/{index-vv1sch8a.js → index-8vzh5wpv.js} +13 -8
  93. package/dist/{index-75ns2ybj.js → index-8xyf8h2k.js} +1 -1
  94. package/dist/{index-xx1j310k.js → index-8yxgcyt6.js} +171 -169
  95. package/dist/{index-p6apg0jg.js → index-9frf01t9.js} +16 -9
  96. package/dist/{index-q0th8q0z.js → index-9mjrnqxs.js} +1 -3
  97. package/dist/{index-6f49krb5.js → index-aa50qwv4.js} +1 -1
  98. package/dist/{index-ega3yz4c.js → index-aqwg2dm5.js} +1 -1
  99. package/dist/{index-p0rf7sq9.js → index-bgcwxhxh.js} +225 -223
  100. package/dist/index-bph35vpy.js +77 -0
  101. package/dist/{index-tdpmfks8.js → index-bz479f0x.js} +1 -1
  102. package/dist/index-d3xdyjt6.js +38 -0
  103. package/dist/{index-q968hy6y.js → index-e452syyh.js} +1 -1
  104. package/dist/{index-86nbfysb.js → index-ff39f9dr.js} +3 -3
  105. package/dist/index-h1j71dr1.js +48 -0
  106. package/dist/{index-mgb7r8b8.js → index-jswst0h3.js} +1 -1
  107. package/dist/{index-095ya5hm.js → index-knmnj11j.js} +22 -191
  108. package/dist/{index-vwhrnp67.js → index-kz9734jc.js} +3 -3
  109. package/dist/{index-txg1npmg.js → index-mtwh9hyp.js} +1 -1
  110. package/dist/{index-dr3t5n1v.js → index-nn9qvkww.js} +46 -46
  111. package/dist/{index-ghtpfz4z.js → index-nyyam9ce.js} +2 -2
  112. package/dist/{index-qezhmp51.js → index-nz06qw5a.js} +3 -1
  113. package/dist/{index-1bx1xv1k.js → index-pfvde2fz.js} +5 -2
  114. package/dist/{index-w7jq3fz9.js → index-pq2m7t46.js} +1142 -1212
  115. package/dist/{index-yk4g8805.js → index-pq7rkwkk.js} +1 -30
  116. package/dist/{index-s80awwsw.js → index-qch1vcaa.js} +3 -1
  117. package/dist/{index-hdjmdwsj.js → index-qctbzmg9.js} +521 -511
  118. package/dist/{index-n8z3rvzw.js → index-qevqn3d3.js} +3 -5
  119. package/dist/{index-nqxrm176.js → index-r3db01kh.js} +1 -1
  120. package/dist/{index-v6vb5qx8.js → index-s3yxw6kt.js} +1 -1
  121. package/dist/{index-cqmqyjax.js → index-sa99p98w.js} +1 -1
  122. package/dist/index-sb9dr3tq.js +14 -0
  123. package/dist/{index-0gxvns6s.js → index-sba3e6m4.js} +1 -0
  124. package/dist/{index-f24bdt13.js → index-v1swr26p.js} +3 -1
  125. package/dist/{index-rhzkndr5.js → index-x4p3kw1p.js} +533 -530
  126. package/dist/{index-cycp3r3e.js → index-yb9n4pgj.js} +2 -2
  127. package/dist/{index-htxh46ej.js → index-ycqhyars.js} +2 -2
  128. package/dist/{index-9bwcthxw.js → index-yj6saztf.js} +31 -13
  129. package/dist/{index-f6m4c545.js → index-zrdcmg6j.js} +4 -6
  130. package/dist/{index-tvtacc9a.js → index-zyc64nbh.js} +1 -34
  131. package/dist/process/bun-child.d.ts +3 -2
  132. package/dist/process/bun-child.d.ts.map +1 -1
  133. package/dist/server/contract-method.d.ts.map +1 -1
  134. package/dist/tools/internal/surface-projector.d.ts.map +1 -1
  135. package/dist/tools/operations/async-operation-canonical-types.d.ts +1 -1
  136. package/dist/tracking/attribution.d.ts +21 -25
  137. package/dist/tracking/attribution.d.ts.map +1 -1
  138. package/dist/tracking/client-visit.d.ts +5 -7
  139. package/dist/tracking/client-visit.d.ts.map +1 -1
  140. package/dist/tracking/client.d.ts +2 -2
  141. package/dist/tracking/client.d.ts.map +1 -1
  142. package/dist/tracking/contract.d.ts +1 -1
  143. package/dist/tracking/host.d.ts +0 -1
  144. package/dist/tracking/host.d.ts.map +1 -1
  145. package/dist/tracking/privacy.d.ts +6 -0
  146. package/dist/tracking/privacy.d.ts.map +1 -1
  147. package/dist/tracking/schemas.d.ts +2 -2
  148. package/dist/tracking/schemas.d.ts.map +1 -1
  149. package/llms/agent-runtime-harness.txt +4 -3
  150. package/llms/agent-runtime-sandbox.txt +1 -1
  151. package/llms/agent-runtime.2.txt +3 -2
  152. package/llms/agent-runtime.3.txt +4 -46
  153. package/llms/agent-runtime.4.txt +113 -0
  154. package/llms/agent-runtime.txt +11 -13
  155. package/llms/cli.txt +1 -1
  156. package/llms/contract.txt +46 -24
  157. package/llms/geo-contract.txt +23 -0
  158. package/llms/geo.txt +40 -4
  159. package/llms/stitchkit.txt +16 -9
  160. package/llms/testing.txt +4 -6
  161. package/llms/tools-agent.txt +24 -0
  162. package/llms/tools-mcp.txt +71 -6
  163. package/llms/tools-toolkit.txt +23 -0
  164. package/llms/tools.2.txt +8 -5
  165. package/llms/tools.3.txt +9 -78
  166. package/llms/tools.txt +8 -8
  167. package/llms/tracking-contract.txt +1 -1
  168. package/llms/tracking.txt +27 -5
  169. package/llms/{upgrading-0.105.0-0.118.0.txt → upgrading-0.106.0-0.120.0.txt} +152 -410
  170. package/llms/upgrading-0.37.0-0.53.0.txt +969 -0
  171. package/llms/{upgrading-0.44.0-0.62.0.txt → upgrading-0.55.0-0.68.0.txt} +509 -528
  172. package/llms/{upgrading-0.63.0-0.83.0.txt → upgrading-0.69.0-0.95.0.txt} +506 -509
  173. package/llms/{upgrading-0.84.0-0.104.0.txt → upgrading-0.96.0-0.105.0.txt} +410 -506
  174. package/llms/upgrading.txt +5 -5
  175. package/llms-full.txt +475 -154
  176. package/llms.txt +17 -14
  177. package/package.json +32 -20
  178. package/llms/upgrading-0.37.0-0.44.0.txt +0 -444
  179. package/dist/{index-arjmb6de.js → index-1jwsfkfz.js} +0 -0
  180. package/dist/{index-qndsr7f0.js → index-5efrpfmj.js} +3 -3
@@ -0,0 +1,48 @@
1
+ import {
2
+ collectToolSurface
3
+ } from "./index-ff39f9dr.js";
4
+
5
+ // src/tools/manifest.ts
6
+ function utf8Length(value) {
7
+ return new TextEncoder().encode(JSON.stringify(value)).byteLength;
8
+ }
9
+ function describeToolCatalog2(config) {
10
+ const deferred = new Set(config.deferredNames ?? []);
11
+ const entries = collectToolSurface({
12
+ surface: config,
13
+ transport: config.transport,
14
+ extend: config.extend,
15
+ flattenUnionInput: config.flattenUnionInput
16
+ }).map(({ kind, service, action, mountable }) => {
17
+ const schemaBytes = utf8Length(mountable.presentationSchema);
18
+ return {
19
+ name: mountable.name,
20
+ description: mountable.method.desc,
21
+ inputSchema: mountable.presentationSchema,
22
+ source: { kind, service, action },
23
+ schemaBytes,
24
+ deferred: deferred.has(mountable.name)
25
+ };
26
+ });
27
+ if (config.maxSchemaBytes !== undefined) {
28
+ const total = entries.reduce((sum, entry) => sum + entry.schemaBytes, 0);
29
+ if (total > config.maxSchemaBytes) {
30
+ throw new TypeError(`Tool catalog schemas use ${total} bytes, exceeding maxSchemaBytes ${config.maxSchemaBytes}`);
31
+ }
32
+ }
33
+ return entries;
34
+ }
35
+ function buildToolManifest2(config) {
36
+ return collectToolSurface({
37
+ surface: config,
38
+ transport: config.transport,
39
+ extend: config.extend,
40
+ flattenUnionInput: config.flattenUnionInput
41
+ }).map(({ mountable }) => ({
42
+ name: mountable.name,
43
+ description: mountable.method.desc,
44
+ inputSchema: mountable.presentationSchema
45
+ }));
46
+ }
47
+
48
+ export { describeToolCatalog2, buildToolManifest2 };
@@ -3,7 +3,7 @@ import {
3
3
  } from "./index-b0kddvzw.js";
4
4
  import {
5
5
  readBoundedChunks
6
- } from "./index-qndsr7f0.js";
6
+ } from "./index-5efrpfmj.js";
7
7
 
8
8
  // src/internal/secure-fetch.ts
9
9
  import { lookup } from "node:dns/promises";
@@ -8,30 +8,31 @@ import {
8
8
  validateResolvedInputRounds,
9
9
  presentationMetadata,
10
10
  prepareProjectedMcpTools
11
- } from "./index-rhzkndr5.js";
11
+ } from "./index-x4p3kw1p.js";
12
12
  import {
13
13
  parseToolCallArguments,
14
14
  toolResultFromError,
15
15
  observed
16
- } from "./index-v6vb5qx8.js";
16
+ } from "./index-s3yxw6kt.js";
17
17
  import {
18
18
  collectTools2,
19
19
  createToolRunner,
20
20
  formatToolError
21
- } from "./index-htxh46ej.js";
22
- import {
23
- DEFAULT_CORS_ALLOW_HEADERS2,
24
- DEFAULT_PROCESS_SIGNALS,
25
- defaultSignalSource,
26
- reportSignalError,
27
- guardSignalCallback
28
- } from "./index-yk4g8805.js";
21
+ } from "./index-ycqhyars.js";
29
22
  import {
30
23
  redact2
31
24
  } from "./index-e6c2spsd.js";
25
+ import {
26
+ argumentsDigest
27
+ } from "./index-r7a7r7ha.js";
28
+ import {
29
+ wwwAuthenticateHeader2,
30
+ mcpProgressToken,
31
+ createMcpProgressReporter
32
+ } from "./index-568w258r.js";
32
33
  import {
33
34
  collectToolSurface
34
- } from "./index-86nbfysb.js";
35
+ } from "./index-ff39f9dr.js";
35
36
  import {
36
37
  runWithRequestContext2,
37
38
  getRequestContext2
@@ -42,9 +43,6 @@ import {
42
43
  import {
43
44
  AppError2
44
45
  } from "./index-qcn84byh.js";
45
- import {
46
- argumentsDigest
47
- } from "./index-r7a7r7ha.js";
48
46
  import {
49
47
  compareCodeUnits,
50
48
  serializeCanonicalJson
@@ -56,46 +54,6 @@ import {
56
54
  isRecord
57
55
  } from "./index-9jfdm5tg.js";
58
56
 
59
- // src/server/oauth/metadata.ts
60
- var PROTECTED_RESOURCE_PATH2 = "/.well-known/oauth-protected-resource";
61
- function metadataPath(resource) {
62
- const { pathname } = new URL(resource);
63
- return pathname === "/" ? PROTECTED_RESOURCE_PATH2 : `${PROTECTED_RESOURCE_PATH2}${pathname}`;
64
- }
65
- function protectedResourceMetadataUrl2(resource) {
66
- return `${new URL(resource).origin}${metadataPath(resource)}`;
67
- }
68
- function wwwAuthenticateHeader2(resource) {
69
- return `Bearer resource_metadata="${protectedResourceMetadataUrl2(resource)}"`;
70
- }
71
- var PUBLIC_CORS = {
72
- "Access-Control-Allow-Origin": "*",
73
- "Access-Control-Allow-Methods": "GET, OPTIONS",
74
- "Access-Control-Allow-Headers": DEFAULT_CORS_ALLOW_HEADERS2
75
- };
76
- function oauthProtectedResourceRoute2(config) {
77
- const body = JSON.stringify({
78
- resource: config.resource,
79
- authorization_servers: config.authorizationServers,
80
- ...config.scopesSupported && { scopes_supported: config.scopesSupported },
81
- bearer_methods_supported: ["header"]
82
- });
83
- return {
84
- method: "ALL",
85
- path: metadataPath(config.resource),
86
- handler: (req) => {
87
- if (req.method === "OPTIONS")
88
- return new Response(null, { status: 204, headers: PUBLIC_CORS });
89
- if (req.method !== "GET")
90
- return new Response("Method Not Allowed", { status: 405 });
91
- return new Response(body, {
92
- status: 200,
93
- headers: { "Content-Type": "application/json", ...PUBLIC_CORS }
94
- });
95
- }
96
- };
97
- }
98
-
99
57
  // src/tools/mcp/app.ts
100
58
  import { readFileSync } from "node:fs";
101
59
  import { fileURLToPath } from "node:url";
@@ -174,6 +132,15 @@ function stampToolResult(result, stamp) {
174
132
  return { ...result, _meta: { ...result._meta, ...mcpCatalogMeta2(stamp) } };
175
133
  }
176
134
 
135
+ // src/tools/mcp/handler.ts
136
+ import {
137
+ createMcpHandler as createSdkMcpHandler,
138
+ hostHeaderValidationResponse,
139
+ localhostAllowedHostnames,
140
+ localhostAllowedOrigins,
141
+ originValidationResponse
142
+ } from "@modelcontextprotocol/server";
143
+
177
144
  // src/tools/mcp/mount.ts
178
145
  import {
179
146
  createRequestStateCodec,
@@ -292,39 +259,6 @@ import {
292
259
  CLIENT_INFO_META_KEY,
293
260
  PROTOCOL_VERSION_META_KEY
294
261
  } from "@modelcontextprotocol/server";
295
-
296
- // src/tools/mcp/progress.ts
297
- function mcpProgressToken(context) {
298
- const token = context.mcpReq._meta?.progressToken;
299
- return typeof token === "string" || typeof token === "number" ? token : undefined;
300
- }
301
- function createMcpProgressReporter(context) {
302
- const token = mcpProgressToken(context);
303
- if (token === undefined)
304
- return async () => {
305
- return;
306
- };
307
- let sent = 0;
308
- let highWater = 0;
309
- return async (update) => {
310
- sent += 1;
311
- const value = update.progress ?? Math.max(sent, highWater + 1);
312
- highWater = Math.max(highWater, value);
313
- try {
314
- await context.mcpReq.notify({
315
- method: "notifications/progress",
316
- params: {
317
- progressToken: token,
318
- progress: value,
319
- ...update.total !== undefined && { total: update.total },
320
- ...update.message !== undefined && { message: update.message }
321
- }
322
- });
323
- } catch {}
324
- };
325
- }
326
-
327
- // src/tools/mcp/round-context.ts
328
262
  function transportContext(context, toolName, outcome, round) {
329
263
  const protocolVersionValue = isRecord(context.mcpReq.envelope) ? Reflect.get(context.mcpReq.envelope, PROTOCOL_VERSION_META_KEY) : undefined;
330
264
  const protocolVersion = typeof protocolVersionValue === "string" ? protocolVersionValue : undefined;
@@ -911,13 +845,6 @@ function mountMcpResource2(server, resource) {
911
845
  }
912
846
 
913
847
  // src/tools/mcp/handler.ts
914
- import {
915
- createMcpHandler as createSdkMcpHandler,
916
- hostHeaderValidationResponse,
917
- localhostAllowedHostnames,
918
- localhostAllowedOrigins,
919
- originValidationResponse
920
- } from "@modelcontextprotocol/server";
921
848
  function jsonRpcError(code, message, status, headers) {
922
849
  return Response.json({ jsonrpc: "2.0", error: { code, message }, id: null }, { status, headers });
923
850
  }
@@ -1060,100 +987,4 @@ async function createStdioMcpServer2(config) {
1060
987
  });
1061
988
  }
1062
989
 
1063
- // src/tools/mcp/stdio-signals.ts
1064
- var bound = new WeakSet;
1065
- function bindStdioProcessSignals2(handle, options = {}) {
1066
- if (bound.has(handle)) {
1067
- throw new Error("[stitchkit] bindStdioProcessSignals: this stdio handle is already bound; close the first binding before creating another");
1068
- }
1069
- bound.add(handle);
1070
- const signals = [...new Set(options.signals ?? DEFAULT_PROCESS_SIGNALS)];
1071
- const source = options.signalSource ?? defaultSignalSource;
1072
- const handlers = [];
1073
- let started = false;
1074
- let sameTurnAsStart = false;
1075
- let closed = false;
1076
- let resolveChain = () => {
1077
- return;
1078
- };
1079
- let rejectChain = () => {
1080
- return;
1081
- };
1082
- const promise = new Promise((resolve, reject) => {
1083
- resolveChain = resolve;
1084
- rejectChain = reject;
1085
- });
1086
- promise.catch(() => {
1087
- return;
1088
- });
1089
- const removeListeners = () => {
1090
- if (closed)
1091
- return;
1092
- closed = true;
1093
- for (const [signal, handler] of handlers)
1094
- source.off(signal, handler);
1095
- if (!started)
1096
- bound.delete(handle);
1097
- };
1098
- const close = () => {
1099
- const hadStarted = started;
1100
- removeListeners();
1101
- if (!hadStarted)
1102
- resolveChain();
1103
- };
1104
- const run = async (signal) => {
1105
- try {
1106
- await options.onClose?.(signal);
1107
- } catch (error) {
1108
- reportSignalError("prepare", error, options.onError);
1109
- }
1110
- try {
1111
- await handle.close();
1112
- } catch (error) {
1113
- rejectChain(error);
1114
- reportSignalError("close", error, options.onError);
1115
- removeListeners();
1116
- return;
1117
- }
1118
- resolveChain();
1119
- try {
1120
- await options.onComplete?.();
1121
- } catch (error) {
1122
- reportSignalError("complete", error, options.onError);
1123
- } finally {
1124
- removeListeners();
1125
- }
1126
- };
1127
- const onSignal = (signal) => {
1128
- if (!started) {
1129
- started = true;
1130
- sameTurnAsStart = true;
1131
- queueMicrotask(() => {
1132
- sameTurnAsStart = false;
1133
- });
1134
- run(signal).catch((error) => reportSignalError("close", error, options.onError));
1135
- return;
1136
- }
1137
- if (sameTurnAsStart)
1138
- return;
1139
- removeListeners();
1140
- guardSignalCallback(() => options.onRepeatedSignal?.(signal), "close", options.onError);
1141
- let restored = false;
1142
- try {
1143
- restored = source.raiseDefault(signal);
1144
- } catch (error) {
1145
- reportSignalError("close", error, options.onError);
1146
- }
1147
- if (!restored) {
1148
- guardSignalCallback(() => options.onEscalationBlocked?.(signal), "close", options.onError);
1149
- }
1150
- };
1151
- for (const signal of signals) {
1152
- const handler = () => onSignal(signal);
1153
- handlers.push([signal, handler]);
1154
- source.on(signal, handler);
1155
- }
1156
- return { promise, close };
1157
- }
1158
-
1159
- export { PROTECTED_RESOURCE_PATH2, protectedResourceMetadataUrl2, wwwAuthenticateHeader2, oauthProtectedResourceRoute2, RESOURCE_MIME_TYPE2, EXT_APPS_BUNDLE_PLACEHOLDER2, inlineMcpAppBundle2, MCP_CATALOG_META_KEY2, mcpCatalogMeta2, readMcpCatalogStamp2, createMcpProgressReporter, validateMcpSchemas2, mountMcp2, buildMcpServer2, mountMcpResource2, createMcpHandler2, createMcpHttpRoute2, createStdioMcpServer2, bindStdioProcessSignals2 };
990
+ export { RESOURCE_MIME_TYPE2, EXT_APPS_BUNDLE_PLACEHOLDER2, inlineMcpAppBundle2, MCP_CATALOG_META_KEY2, mcpCatalogMeta2, readMcpCatalogStamp2, validateMcpSchemas2, mountMcp2, buildMcpServer2, mountMcpResource2, createMcpHandler2, createMcpHttpRoute2, createStdioMcpServer2 };
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  assertUniqueToolName
3
- } from "./index-rhzkndr5.js";
3
+ } from "./index-x4p3kw1p.js";
4
4
  import {
5
5
  toolErrorFromResult
6
- } from "./index-v6vb5qx8.js";
6
+ } from "./index-s3yxw6kt.js";
7
7
  import {
8
8
  collectTools2,
9
9
  createToolRunner
10
- } from "./index-htxh46ej.js";
10
+ } from "./index-ycqhyars.js";
11
11
  import {
12
12
  AppError2
13
13
  } from "./index-qcn84byh.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ShutdownOptionsSchema2
3
- } from "./index-q0th8q0z.js";
3
+ } from "./index-9mjrnqxs.js";
4
4
  import {
5
5
  ApplicationIdSchema2,
6
6
  ApplicationSnapshotSchema2,
@@ -11,7 +11,7 @@ import {
11
11
  spawnBunChild,
12
12
  spawnBunInheritedChild,
13
13
  ownerLossGuardEntry
14
- } from "./index-f6m4c545.js";
14
+ } from "./index-zrdcmg6j.js";
15
15
  import {
16
16
  errnoOf
17
17
  } from "./index-jj9228tt.js";
@@ -325,51 +325,6 @@ function waitForCommandClose(closed, timeoutMs) {
325
325
  return raceAbort(closed, deadline.signal).finally(() => deadline.cancel());
326
326
  }
327
327
 
328
- // src/process/cleanup.ts
329
- async function cleanupNativeCommand(input) {
330
- const signalled = Promise.resolve().then(input.signal);
331
- const teardown = () => input.transport?.destroy();
332
- const destroyed = signalled.then(teardown, teardown);
333
- const awaitRelease = async () => {
334
- if (!input.transport)
335
- return;
336
- try {
337
- await waitForCommandClose(input.transport.released, input.timeoutMs);
338
- } catch (cause) {
339
- throw new Error(`Command handles remained open: ${[...input.transport.pendingHandles].join(", ")}`, { cause });
340
- }
341
- };
342
- const released = signalled.then(awaitRelease, () => {
343
- return;
344
- });
345
- const stopped = async () => {
346
- const failed = { kind: "error", cause: input.error };
347
- if (!input.transport)
348
- return failed;
349
- await signalled.catch(() => {
350
- return;
351
- });
352
- const leader = await waitForCommandClose(input.transport.leader, input.timeoutMs).catch(() => {
353
- return;
354
- });
355
- return leader?.kind === "exit" ? {
356
- kind: "stopped",
357
- cause: input.error,
358
- exitCode: leader.exitCode,
359
- signal: leader.signal
360
- } : failed;
361
- };
362
- const cleanup = await Promise.allSettled([
363
- input.event ? input.settle(input.event) : stopped().then(input.settle),
364
- destroyed,
365
- signalled,
366
- released
367
- ]);
368
- const failures = cleanup.flatMap((item) => item.status === "rejected" && item.reason !== input.error ? [item.reason] : []);
369
- if (failures.length)
370
- throw commandCleanupError(new AggregateError([input.error, ...failures], "Command failed and cleanup failed"));
371
- }
372
-
373
328
  // src/process/command-lifetime.ts
374
329
  class CommandStopped extends DOMException {
375
330
  constructor() {
@@ -417,6 +372,51 @@ function createCommandLifetime(input) {
417
372
  };
418
373
  }
419
374
 
375
+ // src/process/cleanup.ts
376
+ async function cleanupNativeCommand(input) {
377
+ const signalled = Promise.resolve().then(input.signal);
378
+ const teardown = () => input.transport?.destroy();
379
+ const destroyed = signalled.then(teardown, teardown);
380
+ const awaitRelease = async () => {
381
+ if (!input.transport)
382
+ return;
383
+ try {
384
+ await waitForCommandClose(input.transport.released, input.timeoutMs);
385
+ } catch (cause) {
386
+ throw new Error(`Command handles remained open: ${[...input.transport.pendingHandles].join(", ")}`, { cause });
387
+ }
388
+ };
389
+ const released = signalled.then(awaitRelease, () => {
390
+ return;
391
+ });
392
+ const stopped = async () => {
393
+ const failed = { kind: "error", cause: input.error };
394
+ if (!input.transport)
395
+ return failed;
396
+ await signalled.catch(() => {
397
+ return;
398
+ });
399
+ const leader = await waitForCommandClose(input.transport.leader, input.timeoutMs).catch(() => {
400
+ return;
401
+ });
402
+ return leader?.kind === "exit" ? {
403
+ kind: "stopped",
404
+ cause: input.error,
405
+ exitCode: leader.exitCode,
406
+ signal: leader.signal
407
+ } : failed;
408
+ };
409
+ const cleanup = await Promise.allSettled([
410
+ input.event ? input.settle(input.event) : stopped().then(input.settle),
411
+ destroyed,
412
+ signalled,
413
+ released
414
+ ]);
415
+ const failures = cleanup.flatMap((item) => item.status === "rejected" && item.reason !== input.error ? [item.reason] : []);
416
+ if (failures.length)
417
+ throw commandCleanupError(new AggregateError([input.error, ...failures], "Command failed and cleanup failed"));
418
+ }
419
+
420
420
  // src/process/launch.ts
421
421
  import { Readable as Readable2 } from "node:stream";
422
422
 
@@ -8,7 +8,7 @@ import {
8
8
  AgentSeedReceiptSchema2,
9
9
  AgentHistoryMutationSchema2,
10
10
  isActiveRunState
11
- } from "./index-xx1j310k.js";
11
+ } from "./index-8yxgcyt6.js";
12
12
  import {
13
13
  AgentRecordIdSchema2,
14
14
  AgentMessageSchema2
@@ -17,7 +17,7 @@ import {
17
17
  replaceMessage,
18
18
  ArchiveSpillSchema,
19
19
  createAgentRuntimeStore2
20
- } from "./index-cycp3r3e.js";
20
+ } from "./index-yb9n4pgj.js";
21
21
 
22
22
  // src/agent-runtime/store-memory.ts
23
23
  import { z as z2 } from "zod";
@@ -62,6 +62,9 @@ var DecimalStringSchema2 = z.string().refine((value) => {
62
62
  }, "expected a canonical decimal string");
63
63
  var DecimalInputSchema2 = z.string().regex(DECIMAL_PATTERN, "expected a decimal string").transform((value) => formatDecimal(parseDecimal(value)));
64
64
 
65
+ // src/primitives/money.ts
66
+ import { z as z3 } from "zod";
67
+
65
68
  // src/primitives/rounding.ts
66
69
  import { z as z2 } from "zod";
67
70
  var RoundingModeSchema2 = z2.enum(["half-up", "half-even", "up", "down"]);
@@ -130,7 +133,6 @@ function roundDecimal2(value, policy) {
130
133
  }
131
134
 
132
135
  // src/primitives/money.ts
133
- import { z as z3 } from "zod";
134
136
  var IntegerStringSchema = z3.string().regex(/^-?(?:0|[1-9]\d*)$/);
135
137
  function createMoneySchema2(currency) {
136
138
  return z3.object({
@@ -1,3 +1,7 @@
1
+ import {
2
+ HTTP_ONLY_EXPOSURE,
3
+ isHttpOnlyEndpoint
4
+ } from "./index-69t14s4a.js";
1
5
  import {
2
6
  resolveRouteParamsSchema
3
7
  } from "./index-m38ej7e5.js";
@@ -12,7 +16,6 @@ function mergeMeta(contractMeta, endpointMeta) {
12
16
  }
13
17
 
14
18
  // src/server/contract-method.ts
15
- var HTTP_ONLY = Object.freeze(["HTTP"]);
16
19
  function contractMethodFields(contract, key, endpoint) {
17
20
  const groupScope = contract.meta.scope ?? "public";
18
21
  return {
@@ -22,7 +25,7 @@ function contractMethodFields(contract, key, endpoint) {
22
25
  serviceName: contract.meta.prefix,
23
26
  key,
24
27
  toolName: endpoint.tool?.name,
25
- expose: endpoint.rawResponse || endpoint.rawBody || endpoint.responseMeta || "stream" in endpoint && endpoint.stream ? HTTP_ONLY : endpoint.expose,
28
+ expose: endpoint.expose ?? (isHttpOnlyEndpoint(endpoint) ? HTTP_ONLY_EXPOSURE : undefined),
26
29
  scope: endpoint.scope ?? groupScope,
27
30
  paramsSchema: resolveRouteParamsSchema(endpoint.path, endpoint.params),
28
31
  inputSchema: endpoint.input,