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.
- package/CHANGELOG.md +92 -0
- package/README.md +10 -7
- package/dist/browser/http.d.ts.map +1 -1
- package/dist/contract/client-types.d.ts +6 -3
- package/dist/contract/client-types.d.ts.map +1 -1
- package/dist/contract/define-validation.d.ts.map +1 -1
- package/dist/contract/define.d.ts +18 -12
- package/dist/contract/define.d.ts.map +1 -1
- package/dist/contract/endpoint-capabilities.d.ts +28 -0
- package/dist/contract/endpoint-capabilities.d.ts.map +1 -0
- package/dist/contract/factory.d.ts +49 -19
- package/dist/contract/factory.d.ts.map +1 -1
- package/dist/contract/tool-view.d.ts +1 -1
- package/dist/contract/tool-view.d.ts.map +1 -1
- package/dist/contract/transports.d.ts +5 -0
- package/dist/contract/transports.d.ts.map +1 -0
- package/dist/entrypoints/agent-runtime/coding-tools.js +9 -8
- package/dist/entrypoints/agent-runtime/harness.js +9 -8
- package/dist/entrypoints/agent-runtime/realtime.js +3 -3
- package/dist/entrypoints/agent-runtime/sandbox.js +10 -9
- package/dist/entrypoints/agent-runtime/sqlite/bun.js +12 -11
- package/dist/entrypoints/agent-runtime/sqlite/node.js +12 -11
- package/dist/entrypoints/agent-runtime/testing.js +12 -11
- package/dist/entrypoints/agent-runtime.js +22 -19
- package/dist/entrypoints/application/diagnostic-journal.js +3 -3
- package/dist/entrypoints/application/directory-inbox.js +4 -4
- package/dist/entrypoints/application/opentelemetry.js +1 -1
- package/dist/entrypoints/application.js +10 -10
- package/dist/entrypoints/cli/publish.js +4 -4
- package/dist/entrypoints/cli.js +13 -12
- package/dist/entrypoints/contract.d.ts +1 -1
- package/dist/entrypoints/contract.d.ts.map +1 -1
- package/dist/entrypoints/contract.js +6 -4
- package/dist/entrypoints/files.js +3 -3
- package/dist/entrypoints/geo/contract.d.ts +7 -0
- package/dist/entrypoints/geo/contract.d.ts.map +1 -0
- package/dist/entrypoints/geo/contract.js +6 -0
- package/dist/entrypoints/geo.js +60 -23
- package/dist/entrypoints/http.js +3 -3
- package/dist/entrypoints/index.js +9 -7
- package/dist/entrypoints/live.js +1 -1
- package/dist/entrypoints/node.js +7 -6
- package/dist/entrypoints/primitives.js +1 -1
- package/dist/entrypoints/process/owner-loss.js +1 -1
- package/dist/entrypoints/process.js +3 -3
- package/dist/entrypoints/react.js +1 -1
- package/dist/entrypoints/remote.js +4 -3
- package/dist/entrypoints/server.js +16 -15
- package/dist/entrypoints/telegram/screens.js +5 -5
- package/dist/entrypoints/telegram.js +7 -7
- package/dist/entrypoints/testing.js +7 -6
- package/dist/entrypoints/tools/agent.d.ts +9 -0
- package/dist/entrypoints/tools/agent.d.ts.map +1 -0
- package/dist/entrypoints/tools/agent.js +16 -0
- package/dist/entrypoints/tools/connections.js +7 -6
- package/dist/entrypoints/tools/contract.js +1 -1
- package/dist/entrypoints/tools/invoker.js +5 -4
- package/dist/entrypoints/tools/mcp.js +110 -9
- package/dist/entrypoints/tools/toolkit.d.ts +9 -0
- package/dist/entrypoints/tools/toolkit.d.ts.map +1 -0
- package/dist/entrypoints/tools/toolkit.js +40 -0
- package/dist/entrypoints/tools.d.ts +0 -10
- package/dist/entrypoints/tools.d.ts.map +1 -1
- package/dist/entrypoints/tools.js +38 -80
- package/dist/entrypoints/tracking/contract.js +5 -3
- package/dist/entrypoints/tracking/performance.js +3 -3
- package/dist/entrypoints/tracking.d.ts +1 -1
- package/dist/entrypoints/tracking.d.ts.map +1 -1
- package/dist/entrypoints/tracking.js +63 -83
- package/dist/entrypoints/xlsx.js +1 -1
- package/dist/geo/index.d.ts +2 -1
- package/dist/geo/index.d.ts.map +1 -1
- package/dist/geo/record.d.ts +8 -0
- package/dist/geo/record.d.ts.map +1 -0
- package/dist/geo/resolver.d.ts +1 -3
- package/dist/geo/resolver.d.ts.map +1 -1
- package/dist/geo/schema.d.ts +44 -0
- package/dist/geo/schema.d.ts.map +1 -0
- package/dist/geo/types.d.ts +2 -13
- package/dist/geo/types.d.ts.map +1 -1
- package/dist/{index-n5sv4z0w.js → index-0qyrcjfs.js} +16 -18
- package/dist/index-1psbyyhj.js +21 -0
- package/dist/{index-tsngj2b5.js → index-2fc1k9k2.js} +206 -206
- package/dist/index-3prvb42w.js +30 -0
- package/dist/{index-073nw9qr.js → index-3yb5kft5.js} +524 -522
- package/dist/{index-d9hq291n.js → index-4jpykzvw.js} +70 -81
- package/dist/index-568w258r.js +76 -0
- package/dist/index-69t14s4a.js +39 -0
- package/dist/{index-dky0dcmf.js → index-72r9k0av.js} +6 -2
- package/dist/{index-6p3frkv5.js → index-7zwtbak8.js} +9 -50
- package/dist/{index-90p34rts.js → index-8ryydawp.js} +7 -5
- package/dist/{index-vv1sch8a.js → index-8vzh5wpv.js} +13 -8
- package/dist/{index-75ns2ybj.js → index-8xyf8h2k.js} +1 -1
- package/dist/{index-xx1j310k.js → index-8yxgcyt6.js} +171 -169
- package/dist/{index-p6apg0jg.js → index-9frf01t9.js} +16 -9
- package/dist/{index-q0th8q0z.js → index-9mjrnqxs.js} +1 -3
- package/dist/{index-6f49krb5.js → index-aa50qwv4.js} +1 -1
- package/dist/{index-ega3yz4c.js → index-aqwg2dm5.js} +1 -1
- package/dist/{index-p0rf7sq9.js → index-bgcwxhxh.js} +225 -223
- package/dist/index-bph35vpy.js +77 -0
- package/dist/{index-tdpmfks8.js → index-bz479f0x.js} +1 -1
- package/dist/index-d3xdyjt6.js +38 -0
- package/dist/{index-q968hy6y.js → index-e452syyh.js} +1 -1
- package/dist/{index-86nbfysb.js → index-ff39f9dr.js} +3 -3
- package/dist/index-h1j71dr1.js +48 -0
- package/dist/{index-mgb7r8b8.js → index-jswst0h3.js} +1 -1
- package/dist/{index-095ya5hm.js → index-knmnj11j.js} +22 -191
- package/dist/{index-vwhrnp67.js → index-kz9734jc.js} +3 -3
- package/dist/{index-txg1npmg.js → index-mtwh9hyp.js} +1 -1
- package/dist/{index-dr3t5n1v.js → index-nn9qvkww.js} +46 -46
- package/dist/{index-ghtpfz4z.js → index-nyyam9ce.js} +2 -2
- package/dist/{index-qezhmp51.js → index-nz06qw5a.js} +3 -1
- package/dist/{index-1bx1xv1k.js → index-pfvde2fz.js} +5 -2
- package/dist/{index-w7jq3fz9.js → index-pq2m7t46.js} +1142 -1212
- package/dist/{index-yk4g8805.js → index-pq7rkwkk.js} +1 -30
- package/dist/{index-s80awwsw.js → index-qch1vcaa.js} +3 -1
- package/dist/{index-hdjmdwsj.js → index-qctbzmg9.js} +521 -511
- package/dist/{index-n8z3rvzw.js → index-qevqn3d3.js} +3 -5
- package/dist/{index-nqxrm176.js → index-r3db01kh.js} +1 -1
- package/dist/{index-v6vb5qx8.js → index-s3yxw6kt.js} +1 -1
- package/dist/{index-cqmqyjax.js → index-sa99p98w.js} +1 -1
- package/dist/index-sb9dr3tq.js +14 -0
- package/dist/{index-0gxvns6s.js → index-sba3e6m4.js} +1 -0
- package/dist/{index-f24bdt13.js → index-v1swr26p.js} +3 -1
- package/dist/{index-rhzkndr5.js → index-x4p3kw1p.js} +533 -530
- package/dist/{index-cycp3r3e.js → index-yb9n4pgj.js} +2 -2
- package/dist/{index-htxh46ej.js → index-ycqhyars.js} +2 -2
- package/dist/{index-9bwcthxw.js → index-yj6saztf.js} +31 -13
- package/dist/{index-f6m4c545.js → index-zrdcmg6j.js} +4 -6
- package/dist/{index-tvtacc9a.js → index-zyc64nbh.js} +1 -34
- package/dist/process/bun-child.d.ts +3 -2
- package/dist/process/bun-child.d.ts.map +1 -1
- package/dist/server/contract-method.d.ts.map +1 -1
- package/dist/tools/internal/surface-projector.d.ts.map +1 -1
- package/dist/tools/operations/async-operation-canonical-types.d.ts +1 -1
- package/dist/tracking/attribution.d.ts +21 -25
- package/dist/tracking/attribution.d.ts.map +1 -1
- package/dist/tracking/client-visit.d.ts +5 -7
- package/dist/tracking/client-visit.d.ts.map +1 -1
- package/dist/tracking/client.d.ts +2 -2
- package/dist/tracking/client.d.ts.map +1 -1
- package/dist/tracking/contract.d.ts +1 -1
- package/dist/tracking/host.d.ts +0 -1
- package/dist/tracking/host.d.ts.map +1 -1
- package/dist/tracking/privacy.d.ts +6 -0
- package/dist/tracking/privacy.d.ts.map +1 -1
- package/dist/tracking/schemas.d.ts +2 -2
- package/dist/tracking/schemas.d.ts.map +1 -1
- package/llms/agent-runtime-harness.txt +4 -3
- package/llms/agent-runtime-sandbox.txt +1 -1
- package/llms/agent-runtime.2.txt +3 -2
- package/llms/agent-runtime.3.txt +4 -46
- package/llms/agent-runtime.4.txt +113 -0
- package/llms/agent-runtime.txt +11 -13
- package/llms/cli.txt +1 -1
- package/llms/contract.txt +46 -24
- package/llms/geo-contract.txt +23 -0
- package/llms/geo.txt +40 -4
- package/llms/stitchkit.txt +16 -9
- package/llms/testing.txt +4 -6
- package/llms/tools-agent.txt +24 -0
- package/llms/tools-mcp.txt +71 -6
- package/llms/tools-toolkit.txt +23 -0
- package/llms/tools.2.txt +8 -5
- package/llms/tools.3.txt +9 -78
- package/llms/tools.txt +8 -8
- package/llms/tracking-contract.txt +1 -1
- package/llms/tracking.txt +27 -5
- package/llms/{upgrading-0.105.0-0.118.0.txt → upgrading-0.106.0-0.120.0.txt} +152 -410
- package/llms/upgrading-0.37.0-0.53.0.txt +969 -0
- package/llms/{upgrading-0.44.0-0.62.0.txt → upgrading-0.55.0-0.68.0.txt} +509 -528
- package/llms/{upgrading-0.63.0-0.83.0.txt → upgrading-0.69.0-0.95.0.txt} +506 -509
- package/llms/{upgrading-0.84.0-0.104.0.txt → upgrading-0.96.0-0.105.0.txt} +410 -506
- package/llms/upgrading.txt +5 -5
- package/llms-full.txt +475 -154
- package/llms.txt +17 -14
- package/package.json +32 -20
- package/llms/upgrading-0.37.0-0.44.0.txt +0 -444
- package/dist/{index-arjmb6de.js → index-1jwsfkfz.js} +0 -0
- 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 };
|
|
@@ -8,30 +8,31 @@ import {
|
|
|
8
8
|
validateResolvedInputRounds,
|
|
9
9
|
presentationMetadata,
|
|
10
10
|
prepareProjectedMcpTools
|
|
11
|
-
} from "./index-
|
|
11
|
+
} from "./index-x4p3kw1p.js";
|
|
12
12
|
import {
|
|
13
13
|
parseToolCallArguments,
|
|
14
14
|
toolResultFromError,
|
|
15
15
|
observed
|
|
16
|
-
} from "./index-
|
|
16
|
+
} from "./index-s3yxw6kt.js";
|
|
17
17
|
import {
|
|
18
18
|
collectTools2,
|
|
19
19
|
createToolRunner,
|
|
20
20
|
formatToolError
|
|
21
|
-
} from "./index-
|
|
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-
|
|
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
|
-
|
|
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-
|
|
3
|
+
} from "./index-x4p3kw1p.js";
|
|
4
4
|
import {
|
|
5
5
|
toolErrorFromResult
|
|
6
|
-
} from "./index-
|
|
6
|
+
} from "./index-s3yxw6kt.js";
|
|
7
7
|
import {
|
|
8
8
|
collectTools2,
|
|
9
9
|
createToolRunner
|
|
10
|
-
} from "./index-
|
|
10
|
+
} from "./index-ycqhyars.js";
|
|
11
11
|
import {
|
|
12
12
|
AppError2
|
|
13
13
|
} from "./index-qcn84byh.js";
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
spawnBunChild,
|
|
12
12
|
spawnBunInheritedChild,
|
|
13
13
|
ownerLossGuardEntry
|
|
14
|
-
} from "./index-
|
|
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-
|
|
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-
|
|
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.
|
|
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,
|