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.
@@ -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,EAKd,MAAM,WAAW,CAAC;AAQnB,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,CAk3BhC"}
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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"}
@@ -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(snapshot);
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 positionOf = historyPositions(messages);
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: records.map((record) => record.run).sort((left, right) => left.createdAt.localeCompare(right.createdAt) || positionOf(left) - positionOf(right) || left.id.localeCompare(right.id))
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: input.runs ?? current.runs,
2929
- messages: input.messages ?? current.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 boundedIncomingBody(response, maxBytes, onDone) {
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
- received += chunk.byteLength;
2485
- if (received > maxBytes) {
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
- received += value.byteLength;
2665
- if (received > options.maxResponseBytes) {
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
- const maxResponseBytes = positiveInteger(config.maxResponseBytes, DEFAULT_MAX_BODY_BYTES, "maxResponseBytes");
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(boundedIncomingBody(incoming, maxResponseBytes, releaseResponse), {
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
@@ -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,GAClC,MAAM,sBAAsB,CAAC"}
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
@@ -5,7 +5,7 @@ import {
5
5
  createHandler,
6
6
  createSocketIOServer,
7
7
  createUnixClientTransport
8
- } from "./index-nck3yx3y.js";
8
+ } from "./index-3vq6we8m.js";
9
9
  import {
10
10
  createImplement,
11
11
  createImplementRegistry,
@@ -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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"}
@@ -13,7 +13,7 @@ import {
13
13
  sseRoute,
14
14
  streamingRoute,
15
15
  webSocketLane
16
- } from "../index-nck3yx3y.js";
16
+ } from "../index-3vq6we8m.js";
17
17
  import {
18
18
  composeAuthHooks,
19
19
  createAuthHook,
@@ -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 boundedIncomingBody(response: IncomingMessage, maxBytes: number, onDone: () => void): ReadableStream<Uint8Array>;
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,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,IAAI,GACjB,cAAc,CAAC,UAAU,CAAC,CAsE5B"}
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;IAClC,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,CAyahF"}
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
- export interface UnixClientTransportConfig {
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;IACxC,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,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;AAED,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,CAoQrB;AAED,OAAO,EACL,KAAK,uBAAuB,EAC5B,wBAAwB,EACxB,KAAK,4BAA4B,GAClC,MAAM,qBAAqB,CAAC"}
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 [conversationId, recoveryConversationId, absorbConversationId] = conversationIds;
169
- if (!conversationId || !recoveryConversationId || !absorbConversationId) {
170
- throw new Error("Agent store conformance requires three conversation identities");
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/response/header/connection/redirect bounds |
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stitchkit",
3
- "version": "0.68.1",
3
+ "version": "0.68.3",
4
4
  "description": "Contract-first backend framework — one defineContract() into an HTTP API, MCP tools, AI-agent tools and a typed client. Bun and Node.",
5
5
  "keywords": [
6
6
  "bun",