stitchkit 0.68.10 → 0.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/README.md +30 -1
  2. package/dist/agent-runtime/coding-tool-contract.d.ts +155 -0
  3. package/dist/agent-runtime/coding-tool-contract.d.ts.map +1 -0
  4. package/dist/agent-runtime/coding-tool-files.d.ts +3 -0
  5. package/dist/agent-runtime/coding-tool-files.d.ts.map +1 -0
  6. package/dist/agent-runtime/coding-tool-paths.d.ts +19 -0
  7. package/dist/agent-runtime/coding-tool-paths.d.ts.map +1 -0
  8. package/dist/agent-runtime/coding-tool-search-patch.d.ts +3 -0
  9. package/dist/agent-runtime/coding-tool-search-patch.d.ts.map +1 -0
  10. package/dist/agent-runtime/coding-tool-shell.d.ts +3 -0
  11. package/dist/agent-runtime/coding-tool-shell.d.ts.map +1 -0
  12. package/dist/agent-runtime/coding-tools.d.ts +17 -0
  13. package/dist/agent-runtime/coding-tools.d.ts.map +1 -0
  14. package/dist/agent-runtime/compaction.d.ts +2 -0
  15. package/dist/agent-runtime/compaction.d.ts.map +1 -1
  16. package/dist/agent-runtime/contained-files.d.ts +31 -0
  17. package/dist/agent-runtime/contained-files.d.ts.map +1 -0
  18. package/dist/agent-runtime/control-schema.d.ts +1074 -0
  19. package/dist/agent-runtime/control-schema.d.ts.map +1 -0
  20. package/dist/agent-runtime/conversations.d.ts +128 -0
  21. package/dist/agent-runtime/conversations.d.ts.map +1 -0
  22. package/dist/agent-runtime/event-schema.d.ts +96 -0
  23. package/dist/agent-runtime/event-schema.d.ts.map +1 -1
  24. package/dist/agent-runtime/harness-contract.d.ts +169 -0
  25. package/dist/agent-runtime/harness-contract.d.ts.map +1 -0
  26. package/dist/agent-runtime/harness-control.d.ts +25 -0
  27. package/dist/agent-runtime/harness-control.d.ts.map +1 -0
  28. package/dist/agent-runtime/harness-file-resources.d.ts +33 -0
  29. package/dist/agent-runtime/harness-file-resources.d.ts.map +1 -0
  30. package/dist/agent-runtime/harness-resources.d.ts +5 -0
  31. package/dist/agent-runtime/harness-resources.d.ts.map +1 -0
  32. package/dist/agent-runtime/harness.d.ts +12 -0
  33. package/dist/agent-runtime/harness.d.ts.map +1 -0
  34. package/dist/agent-runtime/history.d.ts +2 -0
  35. package/dist/agent-runtime/history.d.ts.map +1 -1
  36. package/dist/agent-runtime/models.d.ts +199 -0
  37. package/dist/agent-runtime/models.d.ts.map +1 -1
  38. package/dist/agent-runtime/prompt.d.ts +2 -0
  39. package/dist/agent-runtime/prompt.d.ts.map +1 -1
  40. package/dist/agent-runtime/run-execution.d.ts.map +1 -1
  41. package/dist/agent-runtime/runtime.d.ts +11 -3
  42. package/dist/agent-runtime/runtime.d.ts.map +1 -1
  43. package/dist/agent-runtime/schemas.d.ts +49 -0
  44. package/dist/agent-runtime/schemas.d.ts.map +1 -1
  45. package/dist/agent-runtime/sqlite.d.ts +2 -0
  46. package/dist/agent-runtime/sqlite.d.ts.map +1 -1
  47. package/dist/agent-runtime/store-driver.d.ts +61 -212
  48. package/dist/agent-runtime/store-driver.d.ts.map +1 -1
  49. package/dist/agent-runtime/store.d.ts +368 -1
  50. package/dist/agent-runtime/store.d.ts.map +1 -1
  51. package/dist/agent-runtime/terminal-commit.d.ts +12 -1
  52. package/dist/agent-runtime/terminal-commit.d.ts.map +1 -1
  53. package/dist/agent-runtime/terminal-status.d.ts +8 -0
  54. package/dist/agent-runtime/terminal-status.d.ts.map +1 -1
  55. package/dist/agent-runtime-browser.d.ts +1 -0
  56. package/dist/agent-runtime-browser.d.ts.map +1 -1
  57. package/dist/agent-runtime-browser.js +217 -1
  58. package/dist/agent-runtime-coding-tools.d.ts +2 -0
  59. package/dist/agent-runtime-coding-tools.d.ts.map +1 -0
  60. package/dist/agent-runtime-coding-tools.js +706 -0
  61. package/dist/agent-runtime-harness.d.ts +2 -0
  62. package/dist/agent-runtime-harness.d.ts.map +1 -0
  63. package/dist/agent-runtime-harness.js +700 -0
  64. package/dist/agent-runtime-openrouter.d.ts +14 -1
  65. package/dist/agent-runtime-openrouter.d.ts.map +1 -1
  66. package/dist/agent-runtime-openrouter.js +211 -0
  67. package/dist/agent-runtime-sqlite-bun.js +4 -3
  68. package/dist/agent-runtime-sqlite-node.js +4 -3
  69. package/dist/agent-runtime.d.ts +5 -3
  70. package/dist/agent-runtime.d.ts.map +1 -1
  71. package/dist/agent-runtime.js +106 -2580
  72. package/dist/application/diagnostic-journal-contract.d.ts +164 -0
  73. package/dist/application/diagnostic-journal-contract.d.ts.map +1 -0
  74. package/dist/application/diagnostic-journal-manager.d.ts +12 -0
  75. package/dist/application/diagnostic-journal-manager.d.ts.map +1 -0
  76. package/dist/application/diagnostic-journal-storage.d.ts +29 -0
  77. package/dist/application/diagnostic-journal-storage.d.ts.map +1 -0
  78. package/dist/application/diagnostic-journal.d.ts +11 -0
  79. package/dist/application/diagnostic-journal.d.ts.map +1 -0
  80. package/dist/application.d.ts +2 -0
  81. package/dist/application.d.ts.map +1 -1
  82. package/dist/application.js +561 -17
  83. package/dist/browser/socket-io.d.ts +8 -2
  84. package/dist/browser/socket-io.d.ts.map +1 -1
  85. package/dist/cli.js +8 -6
  86. package/dist/{index-8vpzxg55.js → index-10gbbbaa.js} +103 -2
  87. package/dist/index-3eqrkqhg.js +2565 -0
  88. package/dist/{index-hcx9yypn.js → index-444747ww.js} +7 -7
  89. package/dist/{index-557by2db.js → index-7b188kmz.js} +15 -0
  90. package/dist/{index-hxh98zbm.js → index-d1jsvkyk.js} +1 -1
  91. package/dist/index-es0h4w26.js +63 -0
  92. package/dist/{index-grgvpbch.js → index-gqdfpv4n.js} +4 -2
  93. package/dist/{index-bt5179zb.js → index-h7ctj1kp.js} +5 -3
  94. package/dist/{index-y2ctppmg.js → index-h8vn1jcr.js} +7 -73
  95. package/dist/{index-hqza5nde.js → index-hsabxjz0.js} +78 -77
  96. package/dist/index-kg9xx84n.js +73 -0
  97. package/dist/{index-hb0mncmj.js → index-kxxyvkka.js} +2 -2
  98. package/dist/{index-2t6zt5cg.js → index-mbxds404.js} +7 -5
  99. package/dist/{index-f24xg2cw.js → index-p1be103g.js} +1 -1
  100. package/dist/{index-xyvxez9r.js → index-q7gdep2c.js} +5 -5
  101. package/dist/{index-t23p2b68.js → index-t4dpby6e.js} +1 -1
  102. package/dist/index-tg3m2ec5.js +157 -0
  103. package/dist/index-v3dpzpjw.js +92 -0
  104. package/dist/{index-eqqyd9v8.js → index-wwst0td5.js} +2 -46
  105. package/dist/{index-ysphyxax.js → index-x1th9s8c.js} +23 -2
  106. package/dist/index-xxsq3ca1.js +51 -0
  107. package/dist/{index-22tjt2rk.js → index-zh459sfj.js} +1 -1
  108. package/dist/index.js +183 -11
  109. package/dist/internal/ai-sdk-typed.d.ts +14 -0
  110. package/dist/internal/ai-sdk-typed.d.ts.map +1 -0
  111. package/dist/node.js +6 -6
  112. package/dist/observability/index.js +4 -4
  113. package/dist/realtime/index.d.ts +1 -1
  114. package/dist/realtime/index.d.ts.map +1 -1
  115. package/dist/realtime/request.d.ts +30 -0
  116. package/dist/realtime/request.d.ts.map +1 -1
  117. package/dist/remote.js +6 -6
  118. package/dist/server/index.js +10 -10
  119. package/dist/testing.js +6 -6
  120. package/dist/tool-invoker.js +6 -5
  121. package/dist/tools.js +21 -17
  122. package/llms-full.txt +385 -24
  123. package/package.json +10 -2
  124. package/dist/{index-pgsyp3xh.js → index-x18ndp4p.js} +3 -3
package/dist/index.js CHANGED
@@ -1099,6 +1099,21 @@ function isModuleNotFound(error) {
1099
1099
  }
1100
1100
 
1101
1101
  // src/realtime/request.ts
1102
+ import { z as z2 } from "zod";
1103
+ var RealtimeRequestPhaseSchema = z2.enum([
1104
+ "engine-handoff",
1105
+ "engine-ack-received",
1106
+ "settled",
1107
+ "timeout",
1108
+ "disconnected"
1109
+ ]);
1110
+ var RealtimeRequestPhaseEventSchema = z2.object({
1111
+ requestId: z2.string().min(1),
1112
+ event: z2.string().min(1),
1113
+ phase: RealtimeRequestPhaseSchema,
1114
+ elapsedMs: z2.number().finite().nonnegative()
1115
+ }).strict();
1116
+
1102
1117
  class RealtimeRequestTimeoutError extends Error {
1103
1118
  code = "REALTIME_REQUEST_TIMEOUT";
1104
1119
  event;
@@ -1186,9 +1201,9 @@ function parseIssues(value) {
1186
1201
  }
1187
1202
 
1188
1203
  // src/realtime/rejection.ts
1189
- import { z as z2 } from "zod";
1204
+ import { z as z3 } from "zod";
1190
1205
  function realtimeContractViolation(options) {
1191
- const issues = options.cause instanceof z2.ZodError ? zodIssues(options.cause) : undefined;
1206
+ const issues = options.cause instanceof z3.ZodError ? zodIssues(options.cause) : undefined;
1192
1207
  const reason = options.reason.replaceAll("-", " ");
1193
1208
  const error = new AppError("REALTIME_CONTRACT_VIOLATION", `Realtime event "${options.event}" (${options.direction}, ${options.phase}): ${reason}`, 500, {
1194
1209
  event: options.event,
@@ -1469,6 +1484,68 @@ function createRetainedTopics() {
1469
1484
  }
1470
1485
 
1471
1486
  // src/browser/socket-io.ts
1487
+ var realtimeRequestTraces = new WeakMap;
1488
+ function observeRealtimeRequestPhase(trace, phase) {
1489
+ const observation = {
1490
+ requestId: trace.requestId,
1491
+ event: trace.event,
1492
+ phase,
1493
+ elapsedMs: performance.now() - trace.startedAt
1494
+ };
1495
+ const observers = trace.observeRequest && trace.observeRequest !== trace.observeClient ? [trace.observeClient, trace.observeRequest] : [trace.observeClient ?? trace.observeRequest];
1496
+ for (const observer of observers) {
1497
+ if (!observer)
1498
+ continue;
1499
+ try {
1500
+ const result = observer(observation);
1501
+ if (result)
1502
+ Promise.resolve(result).catch(() => {
1503
+ return;
1504
+ });
1505
+ } catch {}
1506
+ }
1507
+ }
1508
+ function socketIoPacketIdentity(data, expected) {
1509
+ if (typeof data !== "string")
1510
+ return null;
1511
+ const type = data.charAt(0);
1512
+ const binary = type === (expected === "event" ? "5" : "6");
1513
+ if (type !== (expected === "event" ? "2" : "3") && !binary)
1514
+ return null;
1515
+ let offset = 1;
1516
+ if (binary) {
1517
+ const separator = data.indexOf("-", offset);
1518
+ if (separator < 0)
1519
+ return null;
1520
+ for (let index = offset;index < separator; index += 1) {
1521
+ const code = data.charCodeAt(index);
1522
+ if (code < 48 || code > 57)
1523
+ return null;
1524
+ }
1525
+ offset = separator + 1;
1526
+ }
1527
+ let namespace = "/";
1528
+ if (data.charAt(offset) === "/") {
1529
+ const separator = data.indexOf(",", offset);
1530
+ if (separator < 0)
1531
+ return null;
1532
+ namespace = data.slice(offset, separator);
1533
+ offset = separator + 1;
1534
+ }
1535
+ const start = offset;
1536
+ while (offset < data.length) {
1537
+ const code = data.charCodeAt(offset);
1538
+ if (code < 48 || code > 57)
1539
+ break;
1540
+ offset += 1;
1541
+ }
1542
+ if (offset === start)
1543
+ return null;
1544
+ return { namespace, id: data.slice(start, offset) };
1545
+ }
1546
+ function packetIdentityKey(identity) {
1547
+ return `${identity.namespace}:${identity.id}`;
1548
+ }
1472
1549
  var SOCKET_IO_CLIENT = "socket.io-client";
1473
1550
  var ioLoader = null;
1474
1551
  function loadIo() {
@@ -1564,8 +1641,20 @@ function bindRealtimeClient(contract, transport, { onRejected, logger } = {}) {
1564
1641
  if (!definition?.ack) {
1565
1642
  throw new Error(`Realtime request "${event}" has no acknowledgement schema`);
1566
1643
  }
1567
- const value = await transport.emitWithAck(event, parsedArgs, { timeoutMs });
1568
- const acknowledgement = parseRealtimeRequestAcknowledgement(definition.ack, event, "client-inbound", value, onRejected, logger);
1644
+ const pending = transport.emitWithAck(event, parsedArgs, options);
1645
+ const trace = realtimeRequestTraces.get(pending);
1646
+ if (trace)
1647
+ realtimeRequestTraces.delete(pending);
1648
+ const value = await pending;
1649
+ let acknowledgement;
1650
+ try {
1651
+ acknowledgement = parseRealtimeRequestAcknowledgement(definition.ack, event, "client-inbound", value, onRejected, logger);
1652
+ } finally {
1653
+ if (trace && !trace.closed) {
1654
+ trace.closed = true;
1655
+ observeRealtimeRequestPhase(trace, "settled");
1656
+ }
1657
+ }
1569
1658
  return acknowledgement;
1570
1659
  }
1571
1660
  return {
@@ -1577,8 +1666,8 @@ function bindRealtimeClient(contract, transport, { onRejected, logger } = {}) {
1577
1666
  onConnectionChange: (listener) => transport.onConnectionChange(listener)
1578
1667
  };
1579
1668
  }
1580
- function createRealtimeClient(contract, { onRejected, logger, ...config }) {
1581
- const transport = createSocketIOClient(config);
1669
+ function createRealtimeClient(contract, { onRejected, logger, onRequestPhase, ...config }) {
1670
+ const transport = createSocketIOClientInternal(config, onRequestPhase);
1582
1671
  const bound = bindRealtimeClient(contract, transport, { onRejected, logger });
1583
1672
  return {
1584
1673
  ...bound,
@@ -1590,12 +1679,18 @@ function createRealtimeClient(contract, { onRejected, logger, ...config }) {
1590
1679
  };
1591
1680
  }
1592
1681
  function createSocketIOClient(config) {
1682
+ return createSocketIOClientInternal(config);
1683
+ }
1684
+ function createSocketIOClientInternal(config, onRequestPhase) {
1593
1685
  let socket = null;
1594
1686
  const resolveIo = createIoResolver(config.peers?.client);
1595
1687
  let desiredConnected = false;
1596
1688
  let loadingPeer = false;
1597
1689
  let reconnectTimer = null;
1598
1690
  const pendingRequestDisconnects = new Set;
1691
+ const requestTracesByNativeKey = new Map;
1692
+ const observedRequestEngines = new WeakSet;
1693
+ let startingRequestTrace = null;
1599
1694
  const serverDisconnectDelay = config.reconnectOnServerDisconnect ?? 1000;
1600
1695
  const connectionListeners = new Set;
1601
1696
  const subscriptions = new Set;
@@ -1612,6 +1707,36 @@ function createSocketIOClient(config) {
1612
1707
  reconnectTimer = null;
1613
1708
  }
1614
1709
  }
1710
+ function attachRequestPhaseEngineListeners(target) {
1711
+ const engine = target.io.engine;
1712
+ if (!engine || observedRequestEngines.has(engine))
1713
+ return;
1714
+ observedRequestEngines.add(engine);
1715
+ engine.on("packetCreate", (packet) => {
1716
+ if (!startingRequestTrace || packet.type !== "message")
1717
+ return;
1718
+ const identity = socketIoPacketIdentity(packet.data, "event");
1719
+ if (!identity)
1720
+ return;
1721
+ const key = packetIdentityKey(identity);
1722
+ startingRequestTrace.nativeKey = key;
1723
+ requestTracesByNativeKey.set(key, startingRequestTrace);
1724
+ observeRealtimeRequestPhase(startingRequestTrace, "engine-handoff");
1725
+ });
1726
+ engine.on("packet", (packet) => {
1727
+ if (packet.type !== "message")
1728
+ return;
1729
+ const identity = socketIoPacketIdentity(packet.data, "ack");
1730
+ if (!identity)
1731
+ return;
1732
+ const key = packetIdentityKey(identity);
1733
+ const trace = requestTracesByNativeKey.get(key);
1734
+ if (!trace || trace.closed)
1735
+ return;
1736
+ observeRealtimeRequestPhase(trace, "engine-ack-received");
1737
+ requestTracesByNativeKey.delete(key);
1738
+ });
1739
+ }
1615
1740
  function openSocket(io) {
1616
1741
  if (!desiredConnected || socket)
1617
1742
  return;
@@ -1629,6 +1754,12 @@ function createSocketIOClient(config) {
1629
1754
  reconnectionDelayMax: config.reconnectionDelayMax ?? 5000,
1630
1755
  timeout: config.timeout ?? 20000
1631
1756
  });
1757
+ if (onRequestPhase) {
1758
+ socket.io.on("open", () => {
1759
+ if (socket)
1760
+ attachRequestPhaseEngineListeners(socket);
1761
+ });
1762
+ }
1632
1763
  socket.on("connect", () => notifyConnection(true));
1633
1764
  socket.on("disconnect", (reason) => {
1634
1765
  notifyConnection(false, reason);
@@ -1738,11 +1869,33 @@ function createSocketIOClient(config) {
1738
1869
  return true;
1739
1870
  },
1740
1871
  emitWithAck(event, args, options) {
1872
+ const trace = onRequestPhase || options.onPhase ? {
1873
+ requestId: crypto.randomUUID(),
1874
+ event,
1875
+ startedAt: performance.now(),
1876
+ observeClient: onRequestPhase,
1877
+ observeRequest: options.onPhase,
1878
+ closed: false
1879
+ } : undefined;
1880
+ const closeTrace = (phase) => {
1881
+ if (!trace || trace.closed)
1882
+ return;
1883
+ trace.closed = true;
1884
+ if (trace.nativeKey)
1885
+ requestTracesByNativeKey.delete(trace.nativeKey);
1886
+ observeRealtimeRequestPhase(trace, phase);
1887
+ };
1741
1888
  const active = socket;
1742
1889
  if (!active?.connected) {
1743
- return Promise.reject(new RealtimeRequestDisconnectedError(event));
1890
+ const pending2 = Promise.reject(new RealtimeRequestDisconnectedError(event));
1891
+ closeTrace("disconnected");
1892
+ if (trace)
1893
+ realtimeRequestTraces.set(pending2, trace);
1894
+ return pending2;
1744
1895
  }
1745
- return new Promise((resolve, reject) => {
1896
+ if (trace)
1897
+ attachRequestPhaseEngineListeners(active);
1898
+ const pending = new Promise((resolve, reject) => {
1746
1899
  let settled = false;
1747
1900
  const finish = (result) => {
1748
1901
  if (settled)
@@ -1753,14 +1906,31 @@ function createSocketIOClient(config) {
1753
1906
  result();
1754
1907
  };
1755
1908
  const onDisconnect = () => {
1756
- finish(() => reject(new RealtimeRequestDisconnectedError(event)));
1909
+ finish(() => {
1910
+ closeTrace("disconnected");
1911
+ reject(new RealtimeRequestDisconnectedError(event));
1912
+ });
1757
1913
  };
1758
1914
  pendingRequestDisconnects.add(onDisconnect);
1759
1915
  active.on("disconnect", onDisconnect);
1760
- active.timeout(options.timeoutMs).emitWithAck(event, ...args).then((value) => finish(() => resolve(value)), () => {
1761
- finish(() => reject(active.connected ? new RealtimeRequestTimeoutError(event, options.timeoutMs) : new RealtimeRequestDisconnectedError(event)));
1916
+ let acknowledgement;
1917
+ startingRequestTrace = trace ?? null;
1918
+ try {
1919
+ acknowledgement = active.timeout(options.timeoutMs).emitWithAck(event, ...args);
1920
+ } finally {
1921
+ startingRequestTrace = null;
1922
+ }
1923
+ acknowledgement.then((value) => finish(() => resolve(value)), () => {
1924
+ finish(() => {
1925
+ const connected = active.connected;
1926
+ closeTrace(connected ? "timeout" : "disconnected");
1927
+ reject(connected ? new RealtimeRequestTimeoutError(event, options.timeoutMs) : new RealtimeRequestDisconnectedError(event));
1928
+ });
1762
1929
  });
1763
1930
  });
1931
+ if (trace)
1932
+ realtimeRequestTraces.set(pending, trace);
1933
+ return pending;
1764
1934
  },
1765
1935
  onConnectionChange(listener) {
1766
1936
  connectionListeners.add(listener);
@@ -1783,6 +1953,8 @@ export {
1783
1953
  REALTIME_REJECTION_KEY,
1784
1954
  RealtimeRequestDisconnectedError,
1785
1955
  RealtimeRequestInvalidAcknowledgementError,
1956
+ RealtimeRequestPhaseEventSchema,
1957
+ RealtimeRequestPhaseSchema,
1786
1958
  RealtimeRequestRejectedError,
1787
1959
  RealtimeRequestTimeoutError,
1788
1960
  STITCH_ERROR_STATUS,
@@ -0,0 +1,14 @@
1
+ import { type ModelMessage, streamText, type ToolSet } from 'ai';
2
+ /**
3
+ * AI SDK derives conditional `toolsContext` requirements from each structural tool in a generic
4
+ * set. AgentRuntime receives that set after canonical mounting, so TypeScript cannot prove the
5
+ * conditional options object even though the SDK validates it at this adapter boundary.
6
+ */
7
+ export declare function streamAgentTextBoundary<TOOLS extends ToolSet>(options: unknown): ReturnType<typeof streamText<TOOLS, never>>;
8
+ /**
9
+ * `modelMessageSchema` in the current AI SDK runtime validates approval requests but strips their
10
+ * optional signature even though the public type and approval verifier require it. Validate the
11
+ * full message first, then restore only the already-validated string at this SDK adapter boundary.
12
+ */
13
+ export declare function modelMessageWithApprovalSignature(input: unknown): ModelMessage;
14
+ //# sourceMappingURL=ai-sdk-typed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-sdk-typed.d.ts","sourceRoot":"","sources":["../../src/internal/ai-sdk-typed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAsB,UAAU,EAAE,KAAK,OAAO,EAAE,MAAM,IAAI,CAAC;AAGrF;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,SAAS,OAAO,EAC3D,OAAO,EAAE,OAAO,GACf,UAAU,CAAC,OAAO,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAI7C;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAsB9E"}
package/dist/node.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  createHandler,
6
6
  createSocketIOServer,
7
7
  createUnixClientTransport
8
- } from "./index-hcx9yypn.js";
8
+ } from "./index-444747ww.js";
9
9
  import {
10
10
  createImplement,
11
11
  createImplementRegistry,
@@ -14,9 +14,9 @@ import {
14
14
  createScopedImplementRegistry,
15
15
  implement,
16
16
  implementRegistry
17
- } from "./index-hxh98zbm.js";
18
- import"./index-f24xg2cw.js";
19
- import"./index-557by2db.js";
17
+ } from "./index-d1jsvkyk.js";
18
+ import"./index-p1be103g.js";
19
+ import"./index-7b188kmz.js";
20
20
  import {
21
21
  ShutdownOptionsSchema,
22
22
  ShutdownResultSchema,
@@ -24,8 +24,7 @@ import {
24
24
  ShutdownStatusSchema,
25
25
  createServerLifecycle
26
26
  } from "./index-dk6e56g0.js";
27
- import"./index-pgsyp3xh.js";
28
- import"./index-qyrqwr4c.js";
27
+ import"./index-x18ndp4p.js";
29
28
  import {
30
29
  AppError,
31
30
  appError,
@@ -36,6 +35,7 @@ import {
36
35
  rateLimited,
37
36
  unauthorized
38
37
  } from "./index-0w9abg87.js";
38
+ import"./index-qyrqwr4c.js";
39
39
  import"./index-6k1937bx.js";
40
40
  // src/server/node.ts
41
41
  import { serve } from "srvx/node";
@@ -10,7 +10,7 @@ import {
10
10
  redact,
11
11
  sanitizePayload,
12
12
  truncatePreview
13
- } from "../index-22tjt2rk.js";
13
+ } from "../index-zh459sfj.js";
14
14
  import {
15
15
  getRequestContext,
16
16
  getTraceId,
@@ -21,7 +21,7 @@ import {
21
21
  setRequestError,
22
22
  setRequestUser,
23
23
  wrapInRequestContext
24
- } from "../index-f24xg2cw.js";
24
+ } from "../index-p1be103g.js";
25
25
  import {
26
26
  childSpan,
27
27
  createTraceContext,
@@ -30,11 +30,11 @@ import {
30
30
  recordedErrorMessage,
31
31
  resolvePropagationContext,
32
32
  resolveTraceContext
33
- } from "../index-pgsyp3xh.js";
33
+ } from "../index-x18ndp4p.js";
34
+ import"../index-0w9abg87.js";
34
35
  import {
35
36
  isRecord
36
37
  } from "../index-qyrqwr4c.js";
37
- import"../index-0w9abg87.js";
38
38
  import"../index-6k1937bx.js";
39
39
 
40
40
  // src/observability/audit.ts
@@ -1,5 +1,5 @@
1
1
  export { defineRealtimeContract, type InferRealtimeEventMap, type RealtimeAcknowledgedEvent, type RealtimeAcknowledgement, type RealtimeContract, type RealtimeEmitArguments, type RealtimeEventArguments, type RealtimeEventDefinition, type RealtimeEventHandler, type RealtimeEventRegistry, type RealtimeRejectDirection, type RealtimeRejectedEvent, type RealtimeRejectedEventHook, type RealtimeRequestArguments, } from './contract.js';
2
2
  export { asRealtimeRejection, REALTIME_REJECTION_KEY, type RealtimeRejectionEnvelope, type RealtimeRejectionIssue, type RealtimeRejectionReport, } from './rejected-frame.js';
3
- export { RealtimeRequestDisconnectedError, RealtimeRequestInvalidAcknowledgementError, type RealtimeRequestOptions, RealtimeRequestRejectedError, RealtimeRequestTimeoutError, } from './request.js';
3
+ export { RealtimeRequestDisconnectedError, RealtimeRequestInvalidAcknowledgementError, type RealtimeRequestOptions, type RealtimeRequestPhase, type RealtimeRequestPhaseEvent, RealtimeRequestPhaseEventSchema, type RealtimeRequestPhaseHook, RealtimeRequestPhaseSchema, RealtimeRequestRejectedError, RealtimeRequestTimeoutError, } from './request.js';
4
4
  export type { ValidatedRealtimeSocket } from './socket.js';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/realtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,GAC9B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,gCAAgC,EAChC,0CAA0C,EAC1C,KAAK,sBAAsB,EAC3B,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/realtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,GAC9B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,gCAAgC,EAChC,0CAA0C,EAC1C,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,+BAA+B,EAC/B,KAAK,wBAAwB,EAC7B,0BAA0B,EAC1B,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC"}
@@ -1,7 +1,37 @@
1
+ import { z } from 'zod';
1
2
  import type { RealtimeRejectionIssue } from './rejected-frame.js';
3
+ /** Closed lifecycle reported by an opt-in acknowledged-request observer. */
4
+ export declare const RealtimeRequestPhaseSchema: z.ZodEnum<{
5
+ disconnected: "disconnected";
6
+ "engine-ack-received": "engine-ack-received";
7
+ "engine-handoff": "engine-handoff";
8
+ settled: "settled";
9
+ timeout: "timeout";
10
+ }>;
11
+ /** Metadata-only observation: no arguments, acknowledgement or packet bytes. */
12
+ export declare const RealtimeRequestPhaseEventSchema: z.ZodObject<{
13
+ requestId: z.ZodString;
14
+ event: z.ZodString;
15
+ phase: z.ZodEnum<{
16
+ disconnected: "disconnected";
17
+ "engine-ack-received": "engine-ack-received";
18
+ "engine-handoff": "engine-handoff";
19
+ settled: "settled";
20
+ timeout: "timeout";
21
+ }>;
22
+ elapsedMs: z.ZodNumber;
23
+ }, z.core.$strict>;
24
+ export type RealtimeRequestPhase = z.infer<typeof RealtimeRequestPhaseSchema>;
25
+ export type RealtimeRequestPhaseEvent = z.infer<typeof RealtimeRequestPhaseEventSchema>;
26
+ export type RealtimeRequestPhaseHook = (event: RealtimeRequestPhaseEvent) => void | Promise<void>;
2
27
  export interface RealtimeRequestOptions {
3
28
  /** Maximum acknowledgement wait in milliseconds. Must be finite and > 0. */
4
29
  timeoutMs: number;
30
+ /**
31
+ * Observe phases for this invocation only. Correlate through the hook's local
32
+ * closure; no caller metadata is retained or transmitted with the request.
33
+ */
34
+ onPhase?: RealtimeRequestPhaseHook;
5
35
  }
6
36
  export declare class RealtimeRequestTimeoutError extends Error {
7
37
  readonly code = "REALTIME_REQUEST_TIMEOUT";
@@ -1 +1 @@
1
- {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/realtime/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,WAAW,sBAAsB;IACrC,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,IAAI,8BAA8B;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,YAAY,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAK3C;CACF;AAED,qBAAa,gCAAiC,SAAQ,KAAK;IACzD,QAAQ,CAAC,IAAI,mCAAmC;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,YAAY,KAAK,EAAE,MAAM,EAIxB;CACF;AAED,qBAAa,0CAA2C,SAAQ,KAAK;IACnE,QAAQ,CAAC,IAAI,8CAA8C;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,YAAY,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAIxC;CACF;AAED;;;;;;;;;GASG;AACH,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,IAAI,+BAA+B;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,EAAE,sBAAsB,EAAE,GAAG,SAAS,CAAC;IAEtD,YACE,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,sBAAsB,EAAE,EAOlC;CACF"}
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/realtime/request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE/D,4EAA4E;AAC5E,eAAO,MAAM,0BAA0B;;;;;;EAMrC,CAAC;AAEH,gFAAgF;AAChF,eAAO,MAAM,+BAA+B;;;;;;;;;;;kBAOjC,CAAC;AAEZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AACxF,MAAM,MAAM,wBAAwB,GAAG,CACrC,KAAK,EAAE,yBAAyB,KAC7B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,WAAW,sBAAsB;IACrC,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,wBAAwB,CAAC;CACpC;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,IAAI,8BAA8B;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,YAAY,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAK3C;CACF;AAED,qBAAa,gCAAiC,SAAQ,KAAK;IACzD,QAAQ,CAAC,IAAI,mCAAmC;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,YAAY,KAAK,EAAE,MAAM,EAIxB;CACF;AAED,qBAAa,0CAA2C,SAAQ,KAAK;IACnE,QAAQ,CAAC,IAAI,8CAA8C;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,YAAY,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAIxC;CACF;AAED;;;;;;;;;GASG;AACH,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,IAAI,+BAA+B;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,EAAE,sBAAsB,EAAE,GAAG,SAAS,CAAC;IAEtD,YACE,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,sBAAsB,EAAE,EAOlC;CACF"}
package/dist/remote.js CHANGED
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  ApiError,
3
3
  createClient
4
- } from "./index-hb0mncmj.js";
5
- import"./index-t23p2b68.js";
4
+ } from "./index-kxxyvkka.js";
5
+ import"./index-t4dpby6e.js";
6
6
  import {
7
7
  mergeMeta
8
- } from "./index-pgsyp3xh.js";
9
- import {
10
- isRecord
11
- } from "./index-qyrqwr4c.js";
8
+ } from "./index-x18ndp4p.js";
12
9
  import {
13
10
  AppError
14
11
  } from "./index-0w9abg87.js";
12
+ import {
13
+ isRecord
14
+ } from "./index-qyrqwr4c.js";
15
15
  import"./index-6k1937bx.js";
16
16
 
17
17
  // src/tools/remote.ts
@@ -13,7 +13,7 @@ import {
13
13
  sseRoute,
14
14
  streamingRoute,
15
15
  webSocketLane
16
- } from "../index-hcx9yypn.js";
16
+ } from "../index-444747ww.js";
17
17
  import {
18
18
  composeAuthHooks,
19
19
  createAuthHook,
@@ -26,7 +26,7 @@ import {
26
26
  signJwt,
27
27
  verifyJwt,
28
28
  verifyPkce
29
- } from "../index-xyvxez9r.js";
29
+ } from "../index-q7gdep2c.js";
30
30
  import {
31
31
  DEFAULT_CORS_ALLOW_HEADERS,
32
32
  DEFAULT_CORS_EXPOSE_HEADERS,
@@ -40,7 +40,7 @@ import {
40
40
  defineMultipartStream,
41
41
  implement,
42
42
  implementRegistry
43
- } from "../index-hxh98zbm.js";
43
+ } from "../index-d1jsvkyk.js";
44
44
  import {
45
45
  extractIp,
46
46
  generateTraceId,
@@ -48,12 +48,12 @@ import {
48
48
  getTraceId,
49
49
  resolveSocketIp,
50
50
  resolveTraceId
51
- } from "../index-f24xg2cw.js";
51
+ } from "../index-p1be103g.js";
52
52
  import {
53
53
  isWithinDir,
54
54
  realPathWithinDir
55
55
  } from "../index-sbdmyz75.js";
56
- import"../index-557by2db.js";
56
+ import"../index-7b188kmz.js";
57
57
  import {
58
58
  ShutdownOptionsSchema,
59
59
  ShutdownResultSchema,
@@ -69,7 +69,7 @@ import {
69
69
  inputIsQuery,
70
70
  parseSSE,
71
71
  streamSSE
72
- } from "../index-t23p2b68.js";
72
+ } from "../index-t4dpby6e.js";
73
73
  import {
74
74
  DEFAULT_CONTRACT_STREAM_FRAME_BYTES,
75
75
  errorCode,
@@ -78,10 +78,7 @@ import {
78
78
  normalizeError,
79
79
  parseTrailingWildcard,
80
80
  zodIssues
81
- } from "../index-pgsyp3xh.js";
82
- import {
83
- isRecord
84
- } from "../index-qyrqwr4c.js";
81
+ } from "../index-x18ndp4p.js";
85
82
  import {
86
83
  AppError,
87
84
  STITCH_ERROR_STATUS,
@@ -94,6 +91,9 @@ import {
94
91
  rateLimited,
95
92
  unauthorized
96
93
  } from "../index-0w9abg87.js";
94
+ import {
95
+ isRecord
96
+ } from "../index-qyrqwr4c.js";
97
97
  import"../index-6k1937bx.js";
98
98
  // src/server/bun.ts
99
99
  import { chmodSync, statSync, unlinkSync } from "node:fs";
package/dist/testing.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  AgentMessageSchema,
3
3
  AgentRunSchema
4
- } from "./index-ysphyxax.js";
4
+ } from "./index-x1th9s8c.js";
5
5
  import {
6
6
  createApplication
7
7
  } from "./index-6wzr93cg.js";
@@ -11,7 +11,7 @@ import {
11
11
  RealtimeRequestDisconnectedError,
12
12
  RealtimeRequestInvalidAcknowledgementError,
13
13
  RealtimeRequestTimeoutError
14
- } from "./index-557by2db.js";
14
+ } from "./index-7b188kmz.js";
15
15
  import"./index-dk6e56g0.js";
16
16
  import {
17
17
  mcpProjectionCandidate,
@@ -24,15 +24,15 @@ import {
24
24
  import {
25
25
  createClient,
26
26
  createClients
27
- } from "./index-hb0mncmj.js";
28
- import"./index-t23p2b68.js";
27
+ } from "./index-kxxyvkka.js";
28
+ import"./index-t4dpby6e.js";
29
29
  import {
30
30
  joinRoutePath
31
- } from "./index-pgsyp3xh.js";
31
+ } from "./index-x18ndp4p.js";
32
+ import"./index-0w9abg87.js";
32
33
  import {
33
34
  isRecord
34
35
  } from "./index-qyrqwr4c.js";
35
- import"./index-0w9abg87.js";
36
36
  import"./index-6k1937bx.js";
37
37
 
38
38
  // src/agent-runtime/testing.ts
@@ -1,13 +1,14 @@
1
1
  import {
2
2
  createToolInvoker
3
- } from "./index-grgvpbch.js";
4
- import"./index-y2ctppmg.js";
5
- import"./index-f24xg2cw.js";
3
+ } from "./index-gqdfpv4n.js";
4
+ import"./index-kg9xx84n.js";
5
+ import"./index-h8vn1jcr.js";
6
+ import"./index-p1be103g.js";
6
7
  import"./index-22by16v6.js";
7
8
  import"./index-cby4ar3v.js";
8
- import"./index-pgsyp3xh.js";
9
- import"./index-qyrqwr4c.js";
9
+ import"./index-x18ndp4p.js";
10
10
  import"./index-0w9abg87.js";
11
+ import"./index-qyrqwr4c.js";
11
12
  import"./index-6k1937bx.js";
12
13
  export {
13
14
  createToolInvoker
package/dist/tools.js CHANGED
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  redact
3
- } from "./index-22tjt2rk.js";
3
+ } from "./index-zh459sfj.js";
4
4
  import {
5
5
  buildToolManifest,
6
6
  mountAgent
7
- } from "./index-bt5179zb.js";
7
+ } from "./index-h7ctj1kp.js";
8
8
  import {
9
9
  signJwt,
10
10
  verifyPkce
11
- } from "./index-xyvxez9r.js";
11
+ } from "./index-q7gdep2c.js";
12
12
  import {
13
13
  DEFAULT_CORS_ALLOW_HEADERS,
14
14
  DEFAULT_PROCESS_SIGNALS,
@@ -16,10 +16,10 @@ import {
16
16
  defaultSignalSource,
17
17
  guardSignalCallback,
18
18
  reportSignalError
19
- } from "./index-hxh98zbm.js";
19
+ } from "./index-d1jsvkyk.js";
20
20
  import {
21
21
  createToolInvoker
22
- } from "./index-grgvpbch.js";
22
+ } from "./index-gqdfpv4n.js";
23
23
  import {
24
24
  WaitTimeoutError,
25
25
  createCli,
@@ -28,27 +28,31 @@ import {
28
28
  fetchPinnedDocument,
29
29
  readCapped,
30
30
  runWaitOperation
31
- } from "./index-2t6zt5cg.js";
31
+ } from "./index-mbxds404.js";
32
+ import {
33
+ collectToolSurface
34
+ } from "./index-xxsq3ca1.js";
32
35
  import {
33
- collectToolSurface,
34
36
  createRuntimeToolFactory,
35
37
  defineRuntimeTool
36
- } from "./index-eqqyd9v8.js";
38
+ } from "./index-wwst0td5.js";
37
39
  import {
38
- ToolExecutionControlError,
39
- coerceJsonArgs,
40
40
  collectTools,
41
41
  createToolRunner,
42
+ formatToolError
43
+ } from "./index-kg9xx84n.js";
44
+ import {
45
+ ToolExecutionControlError,
46
+ coerceJsonArgs,
42
47
  executeToolMethod,
43
- formatToolError,
44
48
  isToolExecutionControlError,
45
49
  toolResultFromError
46
- } from "./index-y2ctppmg.js";
50
+ } from "./index-h8vn1jcr.js";
47
51
  import {
48
52
  getRequestContext,
49
53
  getTraceId,
50
54
  runWithRequestContext
51
- } from "./index-f24xg2cw.js";
55
+ } from "./index-p1be103g.js";
52
56
  import {
53
57
  ManagedFileError
54
58
  } from "./index-bfcpjw20.js";
@@ -69,14 +73,14 @@ import {
69
73
  defineContract,
70
74
  normalizeError,
71
75
  resolvePropagationContext
72
- } from "./index-pgsyp3xh.js";
73
- import {
74
- isRecord
75
- } from "./index-qyrqwr4c.js";
76
+ } from "./index-x18ndp4p.js";
76
77
  import {
77
78
  AppError,
78
79
  STITCH_ERROR_STATUS
79
80
  } from "./index-0w9abg87.js";
81
+ import {
82
+ isRecord
83
+ } from "./index-qyrqwr4c.js";
80
84
  import {
81
85
  ManagedFilePathSchema,
82
86
  ManagedFileRefSchema