stitchkit 0.68.1 → 0.68.3
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/dist/agent-runtime/run-execution.d.ts.map +1 -1
- package/dist/agent-runtime/store-driver.d.ts.map +1 -1
- package/dist/agent-runtime.js +46 -7
- package/dist/{index-nck3yx3y.js → index-3vq6we8m.js} +14 -9
- package/dist/node.d.ts +1 -1
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/unix-client-body.d.ts +1 -1
- package/dist/server/unix-client-body.d.ts.map +1 -1
- package/dist/server/unix-client-bun.d.ts +1 -1
- package/dist/server/unix-client-bun.d.ts.map +1 -1
- package/dist/server/unix-client.d.ts +14 -3
- package/dist/server/unix-client.d.ts.map +1 -1
- package/dist/testing.js +60 -4
- package/llms-full.txt +40 -3
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-execution.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/run-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,OAAO,EACb,MAAM,IAAI,CAAC;AAEZ,OAAO,EAAE,KAAK,iBAAiB,EAAuB,MAAM,UAAU,CAAC;AAEvE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAG1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAapD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAKL,KAAK,QAAQ,
|
|
1
|
+
{"version":3,"file":"run-execution.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/run-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,OAAO,EACb,MAAM,IAAI,CAAC;AAEZ,OAAO,EAAE,KAAK,iBAAiB,EAAuB,MAAM,UAAU,CAAC;AAEvE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAG1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAapD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAKL,KAAK,QAAQ,EAMd,MAAM,WAAW,CAAC;AAuCnB,8DAA8D;AAC9D,MAAM,WAAW,uBAAuB,CAAC,OAAO,EAAE,KAAK,SAAS,OAAO;IACrE,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,IAAI,MAAM,CAAC;IACrB,GAAG,IAAI,IAAI,CAAC;IACZ,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,sBAAsB,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,KAAK,SAAS,OAAO,EAC9D,YAAY,EAAE,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,WAcb;IACtC,WAAW,EAAE,QAAQ,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,gFAAgF;IAChF,GAAG,EAAE,MAAM,CAAC;CACb,KAAG,OAAO,CAAC,kBAAkB,CAAC,CAm3BhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-driver.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/store-driver.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"store-driver.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/store-driver.ts"],"names":[],"mappings":"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"}
|
package/dist/agent-runtime.js
CHANGED
|
@@ -1444,6 +1444,20 @@ function createIdleDeadline(parent, timeoutMs) {
|
|
|
1444
1444
|
}
|
|
1445
1445
|
|
|
1446
1446
|
// src/agent-runtime/run-execution.ts
|
|
1447
|
+
function snapshotForRunPrompt(snapshot, runId) {
|
|
1448
|
+
const runIndex = snapshot.runs.findIndex((candidate) => candidate.id === runId);
|
|
1449
|
+
if (runIndex < 0)
|
|
1450
|
+
throw new AgentRuntimeConflictError("prompt run lookup");
|
|
1451
|
+
const ownedIds = new Set(snapshot.runs.flatMap((candidate) => [
|
|
1452
|
+
...candidate.inputMessageIds,
|
|
1453
|
+
candidate.assistantMessageId
|
|
1454
|
+
]));
|
|
1455
|
+
const eligibleIds = new Set(snapshot.runs.slice(0, runIndex + 1).flatMap((candidate) => [...candidate.inputMessageIds, candidate.assistantMessageId]));
|
|
1456
|
+
return AgentSnapshotSchema.parse({
|
|
1457
|
+
...snapshot,
|
|
1458
|
+
messages: snapshot.messages.filter((message) => !ownedIds.has(message.id) || eligibleIds.has(message.id))
|
|
1459
|
+
});
|
|
1460
|
+
}
|
|
1447
1461
|
function createRunExecutor(dependencies) {
|
|
1448
1462
|
const {
|
|
1449
1463
|
config,
|
|
@@ -1654,12 +1668,13 @@ function createRunExecutor(dependencies) {
|
|
|
1654
1668
|
context: input.context,
|
|
1655
1669
|
conversationId: run.conversationId
|
|
1656
1670
|
});
|
|
1671
|
+
const promptSnapshot = snapshotForRunPrompt(snapshot, run.id);
|
|
1657
1672
|
const [prompt, tools] = await Promise.all([
|
|
1658
1673
|
config.prompt({
|
|
1659
1674
|
context: input.context,
|
|
1660
1675
|
signal: executionSignal,
|
|
1661
1676
|
model: selectedModel,
|
|
1662
|
-
snapshot
|
|
1677
|
+
snapshot: promptSnapshot
|
|
1663
1678
|
}),
|
|
1664
1679
|
config.tools(runtimeContext)
|
|
1665
1680
|
]);
|
|
@@ -1701,7 +1716,7 @@ function createRunExecutor(dependencies) {
|
|
|
1701
1716
|
});
|
|
1702
1717
|
return [...detailed.messages];
|
|
1703
1718
|
};
|
|
1704
|
-
const history = await projectHistory(
|
|
1719
|
+
const history = await projectHistory(promptSnapshot);
|
|
1705
1720
|
const withCarriedSystem = (instructions) => {
|
|
1706
1721
|
if (carriedSystem.length === 0)
|
|
1707
1722
|
return instructions;
|
|
@@ -2853,15 +2868,37 @@ function historyPositions(messages) {
|
|
|
2853
2868
|
return earliest;
|
|
2854
2869
|
};
|
|
2855
2870
|
}
|
|
2871
|
+
function orderRuns(messages, runs) {
|
|
2872
|
+
const positionOf = historyPositions(messages);
|
|
2873
|
+
return [...runs].sort((left, right) => left.createdAt.localeCompare(right.createdAt) || positionOf(left) - positionOf(right) || left.id.localeCompare(right.id));
|
|
2874
|
+
}
|
|
2875
|
+
function orderRunMessages(messages, runs) {
|
|
2876
|
+
const byId = new Map(messages.map((message) => [message.id, message]));
|
|
2877
|
+
const ownedIds = new Set(runs.flatMap((run) => [...run.inputMessageIds, run.assistantMessageId]));
|
|
2878
|
+
const orderedOwned = runs.flatMap((run) => [...run.inputMessageIds, run.assistantMessageId].flatMap((id) => {
|
|
2879
|
+
const message = byId.get(id);
|
|
2880
|
+
return message ? [message] : [];
|
|
2881
|
+
}));
|
|
2882
|
+
let ownedIndex = 0;
|
|
2883
|
+
return messages.map((message) => {
|
|
2884
|
+
if (!ownedIds.has(message.id))
|
|
2885
|
+
return message;
|
|
2886
|
+
const ordered = orderedOwned[ownedIndex];
|
|
2887
|
+
if (!ordered)
|
|
2888
|
+
throw new TypeError("Stored agent history lost a run-owned message");
|
|
2889
|
+
ownedIndex += 1;
|
|
2890
|
+
return ordered;
|
|
2891
|
+
});
|
|
2892
|
+
}
|
|
2856
2893
|
function snapshotOf(head, messages, records) {
|
|
2857
2894
|
validateSnapshot(head, messages, records);
|
|
2858
|
-
const
|
|
2895
|
+
const runs = orderRuns(messages, records.map((record) => record.run));
|
|
2859
2896
|
return AgentSnapshotSchema.parse({
|
|
2860
2897
|
schemaVersion: 1,
|
|
2861
2898
|
conversationId: head.conversationId,
|
|
2862
2899
|
version: head.version,
|
|
2863
|
-
messages,
|
|
2864
|
-
runs
|
|
2900
|
+
messages: orderRunMessages(messages, runs),
|
|
2901
|
+
runs
|
|
2865
2902
|
});
|
|
2866
2903
|
}
|
|
2867
2904
|
function validateSnapshot(head, messages, records) {
|
|
@@ -2920,13 +2957,15 @@ function conflict(actualVersion) {
|
|
|
2920
2957
|
return { outcome: "conflict", actualVersion };
|
|
2921
2958
|
}
|
|
2922
2959
|
function applied(current, input, effects) {
|
|
2960
|
+
const runs = input.runs ?? current.runs;
|
|
2961
|
+
const messages = input.messages ?? current.messages;
|
|
2923
2962
|
return {
|
|
2924
2963
|
outcome: "applied",
|
|
2925
2964
|
snapshot: AgentSnapshotSchema.parse({
|
|
2926
2965
|
...current,
|
|
2927
2966
|
version: current.version + 1,
|
|
2928
|
-
runs
|
|
2929
|
-
messages:
|
|
2967
|
+
runs,
|
|
2968
|
+
messages: orderRunMessages(messages, runs)
|
|
2930
2969
|
}),
|
|
2931
2970
|
...effects?.runRecords?.length && { runRecords: effects.runRecords },
|
|
2932
2971
|
...effects?.admissionReceipt && { admissionReceipt: effects.admissionReceipt },
|
|
@@ -2466,7 +2466,7 @@ async function readBoundedRequestBody(request, maxBytes) {
|
|
|
2466
2466
|
}
|
|
2467
2467
|
return result;
|
|
2468
2468
|
}
|
|
2469
|
-
function
|
|
2469
|
+
function incomingResponseBody(response, maxBytes, onDone) {
|
|
2470
2470
|
let finished = false;
|
|
2471
2471
|
let received = 0;
|
|
2472
2472
|
const finish = () => {
|
|
@@ -2481,8 +2481,9 @@ function boundedIncomingBody(response, maxBytes, onDone) {
|
|
|
2481
2481
|
response.on("data", (chunk) => {
|
|
2482
2482
|
if (finished)
|
|
2483
2483
|
return;
|
|
2484
|
-
|
|
2485
|
-
|
|
2484
|
+
if (maxBytes !== undefined)
|
|
2485
|
+
received += chunk.byteLength;
|
|
2486
|
+
if (maxBytes !== undefined && received > maxBytes) {
|
|
2486
2487
|
controller.error(new UnixClientTransportError("UNIX_RESPONSE_TOO_LARGE", `Unix response body exceeds the ${maxBytes} byte limit`, "response-received"));
|
|
2487
2488
|
response.destroy();
|
|
2488
2489
|
finish();
|
|
@@ -2661,8 +2662,9 @@ function bunUnixRequest(options) {
|
|
|
2661
2662
|
return value;
|
|
2662
2663
|
};
|
|
2663
2664
|
const enqueue = (value) => {
|
|
2664
|
-
|
|
2665
|
-
|
|
2665
|
+
if (options.maxResponseBytes !== undefined)
|
|
2666
|
+
received += value.byteLength;
|
|
2667
|
+
if (options.maxResponseBytes !== undefined && received > options.maxResponseBytes) {
|
|
2666
2668
|
fail(new UnixClientTransportError("UNIX_RESPONSE_TOO_LARGE", `Unix response body exceeds the ${options.maxResponseBytes} byte limit`, "response-received"));
|
|
2667
2669
|
return;
|
|
2668
2670
|
}
|
|
@@ -2851,7 +2853,7 @@ function bunUnixRequest(options) {
|
|
|
2851
2853
|
fail(transportFailure(error));
|
|
2852
2854
|
return;
|
|
2853
2855
|
}
|
|
2854
|
-
if (remainingLength !== undefined && remainingLength > options.maxResponseBytes) {
|
|
2856
|
+
if (options.maxResponseBytes !== undefined && remainingLength !== undefined && remainingLength > options.maxResponseBytes) {
|
|
2855
2857
|
fail(new UnixClientTransportError("UNIX_RESPONSE_TOO_LARGE", `Unix response body exceeds the ${options.maxResponseBytes} byte limit`, "response-received"));
|
|
2856
2858
|
return;
|
|
2857
2859
|
}
|
|
@@ -3011,7 +3013,10 @@ function createUnixClientTransport(config) {
|
|
|
3011
3013
|
throw new TypeError("socketPath must be an absolute Unix socket path");
|
|
3012
3014
|
}
|
|
3013
3015
|
const maxRequestBytes = positiveInteger(config.maxRequestBytes, DEFAULT_MAX_BODY_BYTES, "maxRequestBytes");
|
|
3014
|
-
|
|
3016
|
+
if (config.responseBodyMode === "streaming" && config.maxResponseBytes !== undefined) {
|
|
3017
|
+
throw new TypeError("maxResponseBytes cannot be combined with responseBodyMode streaming");
|
|
3018
|
+
}
|
|
3019
|
+
const maxResponseBytes = config.responseBodyMode === "streaming" ? undefined : positiveInteger(config.maxResponseBytes, DEFAULT_MAX_BODY_BYTES, "maxResponseBytes");
|
|
3015
3020
|
const headersTimeoutMs = positiveInteger(config.headersTimeoutMs, DEFAULT_HEADERS_TIMEOUT_MS, "headersTimeoutMs");
|
|
3016
3021
|
const maxConnections = positiveInteger(config.maxConnections, DEFAULT_MAX_CONNECTIONS, "maxConnections");
|
|
3017
3022
|
const maxHeaderBytes = positiveInteger(config.maxHeaderBytes, DEFAULT_MAX_HEADER_BYTES2, "maxHeaderBytes");
|
|
@@ -3127,7 +3132,7 @@ function createUnixClientTransport(config) {
|
|
|
3127
3132
|
const status = incoming.statusCode ?? 0;
|
|
3128
3133
|
const responseHeadersValue = responseHeaders2(incoming);
|
|
3129
3134
|
const declaredResponseBytes = responseHeadersValue.get("content-length");
|
|
3130
|
-
if (declaredResponseBytes !== null && /^\d+$/.test(declaredResponseBytes) && Number(declaredResponseBytes) > maxResponseBytes) {
|
|
3135
|
+
if (declaredResponseBytes !== null && /^\d+$/.test(declaredResponseBytes) && maxResponseBytes !== undefined && Number(declaredResponseBytes) > maxResponseBytes) {
|
|
3131
3136
|
incoming.destroy();
|
|
3132
3137
|
releaseResponse();
|
|
3133
3138
|
throw new UnixClientTransportError("UNIX_RESPONSE_TOO_LARGE", `Unix response body exceeds the ${maxResponseBytes} byte limit`, "response-received");
|
|
@@ -3155,7 +3160,7 @@ function createUnixClientTransport(config) {
|
|
|
3155
3160
|
headers: responseHeadersValue
|
|
3156
3161
|
});
|
|
3157
3162
|
}
|
|
3158
|
-
return new Response(
|
|
3163
|
+
return new Response(incomingResponseBody(incoming, maxResponseBytes, releaseResponse), {
|
|
3159
3164
|
status,
|
|
3160
3165
|
statusText: incoming.statusMessage,
|
|
3161
3166
|
headers: responseHeadersValue
|
package/dist/node.d.ts
CHANGED
|
@@ -14,5 +14,5 @@ export { bindRealtimeServer, type RealtimeServer, type RealtimeServerConnection,
|
|
|
14
14
|
export { type ManagedServerHandle, type ShutdownOptions, ShutdownOptionsSchema, type ShutdownResult, ShutdownResultSchema, type ShutdownState, ShutdownStateSchema, type ShutdownStatus, ShutdownStatusSchema, } from './server/shutdown.js';
|
|
15
15
|
export { createNodeSocketIOServer as createSocketIOServer, type NodeSocketIOServerHandle as SocketIOServerHandle, type SocketIOHandshakeConfig, type SocketIOPeerLoaders, type SocketIORequestPolicy, type SocketIOServerConfig, } from './server/socket-io-node.js';
|
|
16
16
|
export type { EffectiveScope, FetchComposition, FetchHandler, HandlerConfig, LoggingConfig, LogOutcome, RawRoute, RawRouteContext, ScopeContexts, ScopedHandlers, ServiceDef, } from './server/types.js';
|
|
17
|
-
export { createUnixClientTransport, type UnixClientDeliveryState, type UnixClientTransport, type UnixClientTransportConfig, UnixClientTransportError, type UnixClientTransportErrorCode, } from './server/unix-client.js';
|
|
17
|
+
export { createUnixClientTransport, type UnixClientDeliveryState, type UnixClientTransport, type UnixClientTransportConfig, UnixClientTransportError, type UnixClientTransportErrorCode, type UnixResponseBodyMode, } from './server/unix-client.js';
|
|
18
18
|
//# sourceMappingURL=node.d.ts.map
|
package/dist/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,6BAA6B,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,SAAS,EACT,iBAAiB,EACjB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,4BAA4B,EACjC,KAAK,sBAAsB,EAC3B,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,qBAAqB,EACrB,KAAK,cAAc,EACnB,oBAAoB,EACpB,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,cAAc,EACnB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,wBAAwB,IAAI,oBAAoB,EAChD,KAAK,wBAAwB,IAAI,oBAAoB,EACrD,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,UAAU,EACV,QAAQ,EACR,eAAe,EACf,aAAa,EACb,cAAc,EACd,UAAU,GACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,yBAAyB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,wBAAwB,EACxB,KAAK,4BAA4B,
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,WAAW,EACX,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,6BAA6B,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,SAAS,EACT,iBAAiB,EACjB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,4BAA4B,EACjC,KAAK,sBAAsB,EAC3B,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,qBAAqB,EACrB,KAAK,cAAc,EACnB,oBAAoB,EACpB,KAAK,aAAa,EAClB,mBAAmB,EACnB,KAAK,cAAc,EACnB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,wBAAwB,IAAI,oBAAoB,EAChD,KAAK,wBAAwB,IAAI,oBAAoB,EACrD,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,UAAU,EACV,QAAQ,EACR,eAAe,EACf,aAAa,EACb,cAAc,EACd,UAAU,GACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,yBAAyB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,wBAAwB,EACxB,KAAK,4BAA4B,EACjC,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC"}
|
package/dist/node.js
CHANGED
package/dist/server/index.d.ts
CHANGED
|
@@ -27,6 +27,6 @@ export { createSocketIOServer, socketIoLane } from './socket-io.js';
|
|
|
27
27
|
export { type ParseSSEOptions, parseSSE, streamSSE } from './stream.js';
|
|
28
28
|
export { DEFAULT_STREAM_HEARTBEAT_MS, ndjsonRoute, type StreamingFormat, type StreamingRouteOptions, type StreamingSourceContext, sseRoute, streamingRoute, } from './streaming-route.js';
|
|
29
29
|
export type { AuthorizationContext, EffectiveScope, EndpointHandlerContext, Handlers, LifecycleHooks, LoggingConfig, LogOutcome, MethodDef, MultipartFileMetadata, MultipartReceiver, MultipartReceiverResult, OperationIdentity, RouteGroup, ScopeContexts, ScopedHandlers, ServiceDef, StitchLogger, StreamingMultipartImplementation, } from './types.js';
|
|
30
|
-
export { createUnixClientTransport, type UnixClientDeliveryState, type UnixClientTransport, type UnixClientTransportConfig, UnixClientTransportError, type UnixClientTransportErrorCode, } from './unix-client.js';
|
|
30
|
+
export { createUnixClientTransport, type UnixClientDeliveryState, type UnixClientTransport, type UnixClientTransportConfig, UnixClientTransportError, type UnixClientTransportErrorCode, type UnixResponseBodyMode, } from './unix-client.js';
|
|
31
31
|
export { type ComposedLane, composeWebSocketHandlers, type WebSocketComposeConfig, type WebSocketLane, webSocketLane, } from './websocket.js';
|
|
32
32
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { IncomingMessage } from 'node:http';
|
|
2
2
|
export declare function readBoundedRequestBody(request: Request, maxBytes: number): Promise<Uint8Array | undefined>;
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function incomingResponseBody(response: IncomingMessage, maxBytes: number | undefined, onDone: () => void): ReadableStream<Uint8Array>;
|
|
4
4
|
//# sourceMappingURL=unix-client-body.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unix-client-body.d.ts","sourceRoot":"","sources":["../../src/server/unix-client-body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGjD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CA0CjC;AAED,wBAAgB,
|
|
1
|
+
{"version":3,"file":"unix-client-body.d.ts","sourceRoot":"","sources":["../../src/server/unix-client-body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGjD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CA0CjC;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,MAAM,EAAE,MAAM,IAAI,GACjB,cAAc,CAAC,UAAU,CAAC,CAsE5B"}
|
|
@@ -3,7 +3,7 @@ export interface BunUnixRequestOptions {
|
|
|
3
3
|
readonly socketPath: string;
|
|
4
4
|
readonly request: Request;
|
|
5
5
|
readonly body?: Uint8Array;
|
|
6
|
-
readonly maxResponseBytes: number;
|
|
6
|
+
readonly maxResponseBytes: number | undefined;
|
|
7
7
|
readonly maxHeaderBytes: number;
|
|
8
8
|
readonly headersTimeoutMs: number;
|
|
9
9
|
registerAbort(abort: () => void): () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unix-client-bun.d.ts","sourceRoot":"","sources":["../../src/server/unix-client-bun.ts"],"names":[],"mappings":"AAqCA,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"unix-client-bun.d.ts","sourceRoot":"","sources":["../../src/server/unix-client-bun.ts"],"names":[],"mappings":"AAqCA,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,aAAa,CAAC,KAAK,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC9C;AA8CD,6FAA6F;AAC7F,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC,CA6ahF"}
|
|
@@ -1,15 +1,26 @@
|
|
|
1
1
|
import type { ClientFetch } from '../browser/transport.js';
|
|
2
|
-
|
|
2
|
+
/** Whether response bytes have a finite lifetime total or only bounded buffering. */
|
|
3
|
+
export type UnixResponseBodyMode = 'bounded' | 'streaming';
|
|
4
|
+
/**
|
|
5
|
+
* Unix transport configuration. Unary responses are cumulatively bounded by
|
|
6
|
+
* default; a long-lived stream must opt into pull-driven streaming explicitly.
|
|
7
|
+
*/
|
|
8
|
+
export type UnixClientTransportConfig = {
|
|
3
9
|
/** Absolute local socket path selected by deployment configuration. */
|
|
4
10
|
socketPath: string;
|
|
5
11
|
maxRequestBytes?: number;
|
|
6
|
-
maxResponseBytes?: number;
|
|
7
12
|
headersTimeoutMs?: number;
|
|
8
13
|
maxHeaderBytes?: number;
|
|
9
14
|
maxConnections?: number;
|
|
10
15
|
/** Redirects stay on this Unix transport. Default 5. */
|
|
11
16
|
maxRedirects?: number;
|
|
12
|
-
}
|
|
17
|
+
} & ({
|
|
18
|
+
responseBodyMode?: 'bounded';
|
|
19
|
+
maxResponseBytes?: number;
|
|
20
|
+
} | {
|
|
21
|
+
responseBodyMode: 'streaming';
|
|
22
|
+
maxResponseBytes?: never;
|
|
23
|
+
});
|
|
13
24
|
export interface UnixClientTransport {
|
|
14
25
|
readonly fetch: ClientFetch;
|
|
15
26
|
readonly closed: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unix-client.d.ts","sourceRoot":"","sources":["../../src/server/unix-client.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAWxD,MAAM,WAAW,yBAAyB;
|
|
1
|
+
{"version":3,"file":"unix-client.d.ts","sourceRoot":"","sources":["../../src/server/unix-client.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAWxD,qFAAqF;AACrF,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,WAAW,CAAC;AAE3D;;;GAGG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,CACA;IACE,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GACD;IACE,gBAAgB,EAAE,WAAW,CAAC;IAC9B,gBAAgB,CAAC,EAAE,KAAK,CAAC;CAC1B,CACJ,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AA4ED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,yBAAyB,GAChC,mBAAmB,CAuQrB;AAED,OAAO,EACL,KAAK,uBAAuB,EAC5B,wBAAwB,EACxB,KAAK,4BAA4B,GAClC,MAAM,qBAAqB,CAAC"}
|
package/dist/testing.js
CHANGED
|
@@ -145,7 +145,7 @@ function requireOutcome(actual, expected) {
|
|
|
145
145
|
async function runAgentStoreConformance(config) {
|
|
146
146
|
const run = `conformance-${crypto.randomUUID()}`;
|
|
147
147
|
const context = {
|
|
148
|
-
conversationIds: [run, `${run}-recovery`, `${run}-absorb`]
|
|
148
|
+
conversationIds: [run, `${run}-recovery`, `${run}-absorb`, `${run}-causal-history`]
|
|
149
149
|
};
|
|
150
150
|
const store = await config.createStore(context);
|
|
151
151
|
let failure;
|
|
@@ -165,9 +165,14 @@ async function runAgentStoreConformance(config) {
|
|
|
165
165
|
throw failure;
|
|
166
166
|
}
|
|
167
167
|
async function conformanceScenario(store, conversationIds) {
|
|
168
|
-
const [
|
|
169
|
-
|
|
170
|
-
|
|
168
|
+
const [
|
|
169
|
+
conversationId,
|
|
170
|
+
recoveryConversationId,
|
|
171
|
+
absorbConversationId,
|
|
172
|
+
causalHistoryConversationId
|
|
173
|
+
] = conversationIds;
|
|
174
|
+
if (!conversationId || !recoveryConversationId || !absorbConversationId || !causalHistoryConversationId) {
|
|
175
|
+
throw new Error("Agent store conformance requires four conversation identities");
|
|
171
176
|
}
|
|
172
177
|
const absentConversationId = `${conversationId}-absent`;
|
|
173
178
|
const firstInput = userMessage(conversationId, "input-1");
|
|
@@ -548,8 +553,59 @@ async function conformanceScenario(store, conversationIds) {
|
|
|
548
553
|
if (terminalRun?.state !== "abandoned" || terminalMessage?.status !== "failed") {
|
|
549
554
|
throw new Error("Abandon recovery did not atomically terminalize its assistant record");
|
|
550
555
|
}
|
|
556
|
+
await assertCausalHistoryOrder(store, causalHistoryConversationId);
|
|
551
557
|
await assertAbsorptionIsAtomic(store, absorbConversationId);
|
|
552
558
|
}
|
|
559
|
+
async function assertCausalHistoryOrder(store, conversationId) {
|
|
560
|
+
const leadInput = userMessage(conversationId, "causal-input-1");
|
|
561
|
+
const leadRun = queuedRun(conversationId, leadInput.id, "causal-run-1");
|
|
562
|
+
requireOutcome(await store.acceptInputAndAssignRun({
|
|
563
|
+
idempotencyKey: "causal-request-1",
|
|
564
|
+
input: leadInput,
|
|
565
|
+
run: leadRun
|
|
566
|
+
}), "applied");
|
|
567
|
+
const acquired = await store.acquireRun({
|
|
568
|
+
conversationId,
|
|
569
|
+
runId: leadRun.id,
|
|
570
|
+
expectedRevision: leadRun.revision,
|
|
571
|
+
ownerId: "causal-owner"
|
|
572
|
+
});
|
|
573
|
+
requireOutcome(acquired, "applied");
|
|
574
|
+
const running = acquired.snapshot.runs.find((run) => run.id === leadRun.id);
|
|
575
|
+
if (!running)
|
|
576
|
+
throw new Error("Causal-order run disappeared after acquisition");
|
|
577
|
+
const successorInput = userMessage(conversationId, "causal-input-2");
|
|
578
|
+
const successorRun = queuedRun(conversationId, successorInput.id, "causal-run-2");
|
|
579
|
+
requireOutcome(await store.acceptInputAndAssignRun({
|
|
580
|
+
idempotencyKey: "causal-request-2",
|
|
581
|
+
input: successorInput,
|
|
582
|
+
run: successorRun
|
|
583
|
+
}), "applied");
|
|
584
|
+
const assistant = AgentMessageSchema.parse({
|
|
585
|
+
schemaVersion: 1,
|
|
586
|
+
id: running.assistantMessageId,
|
|
587
|
+
conversationId,
|
|
588
|
+
runId: running.id,
|
|
589
|
+
role: "assistant",
|
|
590
|
+
status: "streaming",
|
|
591
|
+
parts: [{ type: "text", text: "causal answer" }],
|
|
592
|
+
createdAt: "2026-08-28T00:00:00.000Z",
|
|
593
|
+
updatedAt: "2026-08-28T00:00:01.000Z"
|
|
594
|
+
});
|
|
595
|
+
const checkpoint = await store.checkpointRunAssistant({
|
|
596
|
+
conversationId,
|
|
597
|
+
runId: running.id,
|
|
598
|
+
expectedRevision: running.revision,
|
|
599
|
+
ownerId: "causal-owner",
|
|
600
|
+
...running.fencingToken !== undefined && { fencingToken: running.fencingToken },
|
|
601
|
+
assistant
|
|
602
|
+
});
|
|
603
|
+
requireOutcome(checkpoint, "applied");
|
|
604
|
+
const order = checkpoint.snapshot.messages.map((message) => message.id).join(",");
|
|
605
|
+
if (order !== `${leadInput.id},${assistant.id},${successorInput.id}`) {
|
|
606
|
+
throw new Error(`Agent history is not in causal run order: ${order}`);
|
|
607
|
+
}
|
|
608
|
+
}
|
|
553
609
|
async function assertAbsorptionIsAtomic(store, conversationId) {
|
|
554
610
|
const leadInput = userMessage(conversationId, "absorb-input-1");
|
|
555
611
|
const leadRun = queuedRun(conversationId, leadInput.id, "absorb-run-1");
|
package/llms-full.txt
CHANGED
|
@@ -1930,6 +1930,29 @@ proves that the remote operation did not begin; Stitchkit never silently retries
|
|
|
1930
1930
|
an ambiguous write. Response consumption/cancellation belongs to the operation,
|
|
1931
1931
|
and `close()` interrupts active work and destroys owned connections.
|
|
1932
1932
|
|
|
1933
|
+
The response total is a unary-body policy, not a stream-buffer measurement. A
|
|
1934
|
+
long-lived NDJSON/SSE client opts into streaming explicitly instead of choosing
|
|
1935
|
+
an arbitrarily large integer:
|
|
1936
|
+
|
|
1937
|
+
```ts
|
|
1938
|
+
const streamTransport = createUnixClientTransport({
|
|
1939
|
+
socketPath: '/run/my-daemon.sock',
|
|
1940
|
+
responseBodyMode: 'streaming',
|
|
1941
|
+
})
|
|
1942
|
+
const streamClient = createClient(streamContract, {
|
|
1943
|
+
baseUrl: 'http://my-daemon',
|
|
1944
|
+
fetch: streamTransport.fetch,
|
|
1945
|
+
})
|
|
1946
|
+
```
|
|
1947
|
+
|
|
1948
|
+
`streaming` removes only the cumulative lifetime response limit. It cannot be
|
|
1949
|
+
combined with `maxResponseBytes`; request/header/connection bounds, socket
|
|
1950
|
+
pause/resume, cancellation and strict HTTP framing remain active. The stream
|
|
1951
|
+
descriptor's `maxFrameBytes` bounds each protocol frame, and the application
|
|
1952
|
+
still owns any queue it builds after consuming those frames. Use a separate
|
|
1953
|
+
default transport for finite calls that must retain the 16 MiB unary ceiling.
|
|
1954
|
+
The adapter never infers this policy from `Content-Type`. → ADR 0125.
|
|
1955
|
+
|
|
1933
1956
|
The legacy `createHttpClient({ unix: '/absolute/path' })` spelling remains a
|
|
1934
1957
|
Bun-only convenience. On a non-Bun runtime it now refuses before dispatch
|
|
1935
1958
|
instead of ignoring the selection and dialing TCP. `unix` and an injected
|
|
@@ -3859,6 +3882,13 @@ assistant, so physical product-history compaction cannot break idempotent retrie
|
|
|
3859
3882
|
acquisition, revision-checked assistant checkpoints and one terminal CAS. The
|
|
3860
3883
|
process-local coordinator releases its lane only after terminal commit.
|
|
3861
3884
|
|
|
3885
|
+
A queued admission is durable immediately, even if its predecessor is still awaiting ownership
|
|
3886
|
+
or its first checkpoint. Snapshots expose causal turn order rather than physical append order:
|
|
3887
|
+
the predecessor's assigned input(s) and assistant come before the successor input(s). Execution
|
|
3888
|
+
uses the same run boundary, so neither `prompt({ snapshot })` nor default/custom history
|
|
3889
|
+
projection can see inputs assigned to a later run. `inject` remains the explicit path that moves
|
|
3890
|
+
a successor input into the run already in flight.
|
|
3891
|
+
|
|
3862
3892
|
```text
|
|
3863
3893
|
input + queued run → running → execution settled → terminal CAS → successor
|
|
3864
3894
|
```
|
|
@@ -4375,7 +4405,7 @@ outbox.
|
|
|
4375
4405
|
`createAgentRaceTrace`. Barriers have bounded teardown, traces assert exact partial order, and the
|
|
4376
4406
|
helpers are exercised from packed Bun and Node consumers. `runAgentStoreConformance` runs duplicate,
|
|
4377
4407
|
coalescing, collision, stale checkpoint, replay safety, terminal race, absorption, bounded reads,
|
|
4378
|
-
compaction and recovery invariants against any fresh durable adapter.
|
|
4408
|
+
causal queued-history order, compaction and recovery invariants against any fresh durable adapter.
|
|
4379
4409
|
|
|
4380
4410
|
It picks its conversation identities itself and passes them to `createStore(context)` **before the
|
|
4381
4411
|
first mutation**, so an adapter whose runtime rows reference an application-owned conversation row
|
|
@@ -11217,8 +11247,9 @@ Also re-exports the error helpers from `stitchkit/contract`.
|
|
|
11217
11247
|
| `StreamingSourceContext` | _type_ | what a streaming source is given, including the cancellation `signal` |
|
|
11218
11248
|
| `StreamingFormat` | _type_ | `'ndjson' \| 'sse'` |
|
|
11219
11249
|
| `createUnixClientTransport` | function | owned Fetch-compatible Unix-socket transport on Bun and Node; every redirect stays on the socket — [guide](../guide/client.md#unix-domain-sockets) |
|
|
11220
|
-
| `UnixClientTransportConfig` | _type_ | absolute socket path plus request/
|
|
11250
|
+
| `UnixClientTransportConfig` | _type_ | absolute socket path plus request/header/connection/redirect bounds and an explicit bounded-or-streaming response policy |
|
|
11221
11251
|
| `UnixClientTransport` | _type_ | `{ fetch, closed, close() }`; `close()` settles owned active work |
|
|
11252
|
+
| `UnixResponseBodyMode` | _type_ | `bounded \| streaming`; bounded is the 16 MiB cumulative default, streaming keeps pull-driven buffering without a lifetime total |
|
|
11222
11253
|
| `UnixClientTransportError` | class | stable transport failure with `code` and dispatch certainty in `delivery` |
|
|
11223
11254
|
| `UnixClientTransportErrorCode` | _type_ | finite Unix transport failure-code union |
|
|
11224
11255
|
| `UnixClientDeliveryState` | _type_ | `not-dispatched \| possibly-dispatched \| response-received`; input to application retry policy, never an implicit retry |
|
|
@@ -11470,6 +11501,11 @@ ordinary queued successor. The absorbed run ends with `terminalReason: 'absorbed
|
|
|
11470
11501
|
its own**; a submission on its idempotency key resolves through that pointer to the answer
|
|
11471
11502
|
(→ ADR 0113).
|
|
11472
11503
|
|
|
11504
|
+
With `queue`, a durable successor admission is not prompt eligibility: the current executor sees
|
|
11505
|
+
only records through its own run boundary. Snapshot history is normalized to causal turn order
|
|
11506
|
+
(assigned input(s), assistant, then successor input(s)) even when the storage codec physically
|
|
11507
|
+
appended the successor before the predecessor checkpoint.
|
|
11508
|
+
|
|
11473
11509
|
`AgentRuntimeStore` has two **bounded** reads beside `loadSnapshot`:
|
|
11474
11510
|
`loadRun({ conversationId, runId })` returns an `AgentRunView` — the run, the conversation version it
|
|
11475
11511
|
was read at, and the retained answer once the run is terminal — or `undefined`; `listActiveRuns(conversationId)`
|
|
@@ -12030,7 +12066,8 @@ runtime-agnostic pieces of `stitchkit/server` and the error helpers.
|
|
|
12030
12066
|
| `NodeSocketLifecycle` | _type_ | Bun-free Socket.IO lifecycle accepted by `serveNode` |
|
|
12031
12067
|
| `HandlerConfig` / `ServiceDef` / `RawRoute` / `RawRouteContext` | _type_ | runtime-neutral handler types; raw routes default their host server to `unknown` |
|
|
12032
12068
|
| `SocketIORequestPolicy` / `SocketIOServerConfig` / `SocketIOPeerLoaders` / `SocketIOServerHandle` | _type_ | runtime-neutral handshake policy, config, optional-peer loaders and the Bun-free Node handle with `io`, `attach` and lifecycle |
|
|
12033
|
-
| `UnixClientTransportConfig` / `UnixClientTransport` | _type_ | Unix socket bounds and owned Fetch-compatible handle |
|
|
12069
|
+
| `UnixClientTransportConfig` / `UnixClientTransport` | _type_ | Unix socket bounds, explicit response-body mode and owned Fetch-compatible handle |
|
|
12070
|
+
| `UnixResponseBodyMode` | _type_ | finite cumulative `bounded` mode or explicit pull-driven `streaming` mode |
|
|
12034
12071
|
| `UnixClientTransportError` / `UnixClientTransportErrorCode` / `UnixClientDeliveryState` | class / _type_ | stable failure plus dispatch certainty; no cross-transport fallback |
|
|
12035
12072
|
| `AppError` + `appError` / `badRequest` / `unauthorized` / `forbidden` / `notFound` / `conflict` / `rateLimited` | — | error helpers (same as `/contract`) |
|
|
12036
12073
|
|
package/package.json
CHANGED