stitchkit 0.113.3 → 0.114.1

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 (102) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +1 -1
  3. package/dist/browser/client-url.d.ts.map +1 -1
  4. package/dist/entrypoints/agent-runtime/coding-tools.js +1 -1
  5. package/dist/entrypoints/agent-runtime/harness.js +4 -4
  6. package/dist/entrypoints/agent-runtime/realtime.js +2 -2
  7. package/dist/entrypoints/agent-runtime/sandbox.js +3 -3
  8. package/dist/entrypoints/agent-runtime/sqlite/bun.js +3 -3
  9. package/dist/entrypoints/agent-runtime/sqlite/node.js +3 -3
  10. package/dist/entrypoints/agent-runtime/testing.js +4 -4
  11. package/dist/entrypoints/agent-runtime.js +12 -12
  12. package/dist/entrypoints/application/directory-inbox.js +3 -3
  13. package/dist/entrypoints/application.js +4 -4
  14. package/dist/entrypoints/cli/publish.js +1 -1
  15. package/dist/entrypoints/cli.js +4 -4
  16. package/dist/entrypoints/contract.js +2 -2
  17. package/dist/entrypoints/http.js +2 -2
  18. package/dist/entrypoints/index.js +5 -5
  19. package/dist/entrypoints/node.js +3 -3
  20. package/dist/entrypoints/observability.js +3 -3
  21. package/dist/entrypoints/react/keyboard/testing.d.ts +2 -0
  22. package/dist/entrypoints/react/keyboard/testing.d.ts.map +1 -0
  23. package/dist/entrypoints/react/keyboard/testing.js +127 -0
  24. package/dist/entrypoints/react/keyboard.d.ts +4 -2
  25. package/dist/entrypoints/react/keyboard.d.ts.map +1 -1
  26. package/dist/entrypoints/react/keyboard.js +83 -319
  27. package/dist/entrypoints/react.js +15 -3
  28. package/dist/entrypoints/realtime.js +1 -1
  29. package/dist/entrypoints/remote.js +1 -1
  30. package/dist/entrypoints/server.js +18 -18
  31. package/dist/entrypoints/telegram/grammy.d.ts +2 -0
  32. package/dist/entrypoints/telegram/grammy.d.ts.map +1 -0
  33. package/dist/entrypoints/telegram/grammy.js +50 -0
  34. package/dist/entrypoints/telegram/screens.js +1 -1
  35. package/dist/entrypoints/telegram.d.ts +1 -0
  36. package/dist/entrypoints/telegram.d.ts.map +1 -1
  37. package/dist/entrypoints/telegram.js +254 -8
  38. package/dist/entrypoints/testing.js +3 -3
  39. package/dist/entrypoints/tools/connections.js +10 -10
  40. package/dist/entrypoints/tools.js +19 -19
  41. package/dist/entrypoints/tracking.js +1 -1
  42. package/dist/{index-xvj9h8yh.js → index-61hve0ez.js} +15 -28
  43. package/dist/index-6j725ez5.js +25 -0
  44. package/dist/{index-1csp1hwm.js → index-6p3frkv5.js} +1 -1
  45. package/dist/{index-fy4av0hq.js → index-9bwcthxw.js} +1 -1
  46. package/dist/{index-523tq7y4.js → index-a3462dqf.js} +1 -1
  47. package/dist/{index-506kd458.js → index-aw6zahv1.js} +1 -1
  48. package/dist/{index-tpwbct8j.js → index-dc9ere5p.js} +1 -1
  49. package/dist/{index-erv5shjq.js → index-kdnfe0sr.js} +1 -1
  50. package/dist/{index-k7z3j3hr.js → index-km2qw407.js} +4 -4
  51. package/dist/{index-7fc0c2np.js → index-n3v695sb.js} +1 -1
  52. package/dist/index-p02zgk8x.js +351 -0
  53. package/dist/{index-vtann8bz.js → index-p0rf7sq9.js} +8 -8
  54. package/dist/{index-aykhzcnf.js → index-qj1sy4ep.js} +1 -1
  55. package/dist/{index-cxpcdswt.js → index-t65erk4z.js} +1 -1
  56. package/dist/{index-c5at3ykd.js → index-tsngj2b5.js} +22 -10
  57. package/dist/react/entity-cache.d.ts +24 -2
  58. package/dist/react/entity-cache.d.ts.map +1 -1
  59. package/dist/react/keyboard/hooks.d.ts +41 -10
  60. package/dist/react/keyboard/hooks.d.ts.map +1 -1
  61. package/dist/react/keyboard/layers.d.ts +27 -8
  62. package/dist/react/keyboard/layers.d.ts.map +1 -1
  63. package/dist/react/keyboard/modality.d.ts +21 -0
  64. package/dist/react/keyboard/modality.d.ts.map +1 -0
  65. package/dist/react/keyboard/refs.d.ts +13 -0
  66. package/dist/react/keyboard/refs.d.ts.map +1 -0
  67. package/dist/react/keyboard/testing.d.ts +80 -0
  68. package/dist/react/keyboard/testing.d.ts.map +1 -0
  69. package/dist/react/keyboard/zone.d.ts +60 -10
  70. package/dist/react/keyboard/zone.d.ts.map +1 -1
  71. package/dist/telegram/budget-transformer.d.ts +35 -0
  72. package/dist/telegram/budget-transformer.d.ts.map +1 -0
  73. package/dist/telegram/outbound-budget.d.ts +101 -0
  74. package/dist/telegram/outbound-budget.d.ts.map +1 -0
  75. package/dist/telegram/send-failure.d.ts +6 -1
  76. package/dist/telegram/send-failure.d.ts.map +1 -1
  77. package/llms/react-keyboard-testing.txt +24 -0
  78. package/llms/react-keyboard.txt +264 -4
  79. package/llms/react.txt +1 -1
  80. package/llms/server.3.txt +31 -0
  81. package/llms/server.4.txt +5 -0
  82. package/llms/stitchkit.2.txt +118 -0
  83. package/llms/stitchkit.txt +8 -122
  84. package/llms/telegram-grammy.txt +22 -0
  85. package/llms/telegram.txt +76 -2
  86. package/llms/{upgrading-0.103.13-0.113.0.txt → upgrading-0.104.0-0.114.0.txt} +45 -84
  87. package/llms/upgrading-0.37.0-0.44.0.txt +444 -0
  88. package/llms/{upgrading-0.44.0-0.60.0.txt → upgrading-0.44.0-0.61.0.txt} +140 -271
  89. package/llms/{upgrading-0.61.0-0.74.0.txt → upgrading-0.62.0-0.78.0.txt} +137 -140
  90. package/llms/{upgrading-0.75.0-0.103.0.txt → upgrading-0.79.0-0.103.13.txt} +84 -137
  91. package/llms/upgrading.txt +5 -5
  92. package/llms-full.txt +453 -11
  93. package/llms.txt +12 -10
  94. package/package.json +9 -1
  95. package/llms/upgrading-0.37.0.txt +0 -176
  96. package/dist/{index-616xh7f2.js → index-4qnzda76.js} +0 -0
  97. package/dist/{index-fsw1ybf3.js → index-d9hq291n.js} +3 -3
  98. package/dist/{index-bjcjqj46.js → index-m8a44e64.js} +3 -3
  99. package/dist/{index-5efrpfmj.js → index-qndsr7f0.js} +3 -3
  100. package/dist/{index-zktz242w.js → index-s47ac8zt.js} +3 -3
  101. package/dist/{index-56yx8dxp.js → index-tvtacc9a.js} +3 -3
  102. /package/dist/{index-v1tswj0z.js → index-txg1npmg.js} +0 -0
@@ -7,15 +7,20 @@ import {
7
7
  attemptExclusiveLock
8
8
  } from "../index-5v5a9k2n.js";
9
9
  import {
10
- TelegramNotDispatchedError2,
11
- isTelegramNotDispatchedError,
12
10
  TELEGRAM_SEND_FAILURE_REASONS2,
13
11
  classifyTelegramSendFailure2
14
- } from "../index-xvj9h8yh.js";
12
+ } from "../index-61hve0ez.js";
13
+ import {
14
+ TelegramNotDispatchedError2,
15
+ isTelegramNotDispatchedError
16
+ } from "../index-6j725ez5.js";
15
17
  import {
16
18
  TELEGRAM_TEXT_LIMIT2,
17
19
  truncateTelegramHtml2
18
20
  } from "../index-nmaqxdx7.js";
21
+ import {
22
+ BOT_TOKEN_SECRET
23
+ } from "../index-sznqf8fx.js";
19
24
  import {
20
25
  writeFileAtomic2
21
26
  } from "../index-07dcf2yn.js";
@@ -26,15 +31,15 @@ import {
26
31
  MAX_TIMER_MS,
27
32
  sleep
28
33
  } from "../index-eemvahkc.js";
34
+ import {
35
+ untilAborted
36
+ } from "../index-a5qr2rj6.js";
29
37
  import {
30
38
  assertPositiveSafeInteger
31
39
  } from "../index-0s4xebbg.js";
32
40
  import {
33
- BOT_TOKEN_SECRET
34
- } from "../index-sznqf8fx.js";
35
- import {
36
- untilAborted
37
- } from "../index-a5qr2rj6.js";
41
+ argumentsDigest
42
+ } from "../index-r7a7r7ha.js";
38
43
  import {
39
44
  isRecord,
40
45
  transportResult
@@ -898,6 +903,246 @@ function telegramOperatorSender(config) {
898
903
  ...config.fetch && { fetch: config.fetch }
899
904
  });
900
905
  }
906
+ // src/telegram/outbound-budget.ts
907
+ import { z as z5 } from "zod";
908
+ var DEFAULT_MESSAGES_PER_SECOND = 24;
909
+ var DEFAULT_RETRY_AFTER_FALLBACK_MS = 1000;
910
+ var TOKEN = z5.string().min(1, "token must not be empty");
911
+ var MESSAGES_PER_SECOND = z5.number().positive().max(1000);
912
+ var RETRY_AFTER_FALLBACK_MS = z5.number().int().nonnegative().max(MAX_TIMER_MS);
913
+ var SEND_METHODS = new Set([
914
+ "sendMessage",
915
+ "sendPhoto",
916
+ "sendAudio",
917
+ "sendDocument",
918
+ "sendVideo",
919
+ "sendAnimation",
920
+ "sendVoice",
921
+ "sendVideoNote",
922
+ "sendPaidMedia",
923
+ "sendMediaGroup",
924
+ "sendLocation",
925
+ "sendVenue",
926
+ "sendContact",
927
+ "sendPoll",
928
+ "sendChecklist",
929
+ "sendDice",
930
+ "sendMessageDraft",
931
+ "sendSticker",
932
+ "sendInvoice",
933
+ "sendGame",
934
+ "sendGift",
935
+ "sendGiveaway",
936
+ "sendLivePhoto",
937
+ "sendRichMessage",
938
+ "copyMessage",
939
+ "copyMessages",
940
+ "forwardMessage",
941
+ "forwardMessages",
942
+ "answerWebAppQuery"
943
+ ]);
944
+ var WEIGHTED_METHODS = new Map([
945
+ ["sendMediaGroup", "media"],
946
+ ["sendPaidMedia", "media"],
947
+ ["copyMessages", "message_ids"],
948
+ ["forwardMessages", "message_ids"]
949
+ ]);
950
+ function sendCost(method, payload) {
951
+ if (!SEND_METHODS.has(method))
952
+ return 0;
953
+ const field = WEIGHTED_METHODS.get(method);
954
+ if (field === undefined || !isRecord(payload))
955
+ return 1;
956
+ const value = payload[field];
957
+ return Array.isArray(value) ? Math.max(1, value.length) : 1;
958
+ }
959
+ function createBudget(rate, fallback, now, sleepFor) {
960
+ const interval = 1000 / rate;
961
+ const queue = [];
962
+ let nextGrantAt = now();
963
+ let pausedUntil = Number.NEGATIVE_INFINITY;
964
+ let granted = 0;
965
+ let messages = 0;
966
+ let draining = false;
967
+ let wake;
968
+ const wait = async (milliseconds, signal) => {
969
+ const delay = Math.min(MAX_TIMER_MS, Math.max(0, milliseconds));
970
+ if (delay <= 0)
971
+ return;
972
+ const pending = sleepFor(delay, signal);
973
+ if (signal)
974
+ await raceAbort(pending, signal);
975
+ else
976
+ await pending;
977
+ };
978
+ const wakeWaiting = () => {
979
+ const current = wake;
980
+ wake = undefined;
981
+ current?.abort();
982
+ };
983
+ const remove = (waiter) => {
984
+ const index = queue.indexOf(waiter);
985
+ if (index === -1)
986
+ return;
987
+ queue.splice(index, 1);
988
+ if (index === 0)
989
+ wakeWaiting();
990
+ };
991
+ const drain = async () => {
992
+ if (draining)
993
+ return;
994
+ draining = true;
995
+ try {
996
+ while (queue.length > 0) {
997
+ const head = queue[0];
998
+ if (head === undefined)
999
+ break;
1000
+ if (head.signal?.aborted) {
1001
+ remove(head);
1002
+ continue;
1003
+ }
1004
+ const current = now();
1005
+ const at = Math.max(current, nextGrantAt, pausedUntil);
1006
+ if (at > current) {
1007
+ const controller = new AbortController;
1008
+ wake = controller;
1009
+ try {
1010
+ await wait(at - current, controller.signal);
1011
+ } catch (error) {
1012
+ if (!controller.signal.aborted) {
1013
+ for (const waiter of queue.splice(0)) {
1014
+ if (waiter.onAbort)
1015
+ waiter.signal?.removeEventListener("abort", waiter.onAbort);
1016
+ waiter.reject(error);
1017
+ }
1018
+ return;
1019
+ }
1020
+ } finally {
1021
+ if (wake === controller)
1022
+ wake = undefined;
1023
+ }
1024
+ continue;
1025
+ }
1026
+ queue.shift();
1027
+ if (head.onAbort)
1028
+ head.signal?.removeEventListener("abort", head.onAbort);
1029
+ nextGrantAt = at + head.cost * interval;
1030
+ granted += 1;
1031
+ messages += head.cost;
1032
+ head.resolve();
1033
+ }
1034
+ } finally {
1035
+ draining = false;
1036
+ if (queue.length > 0)
1037
+ drain();
1038
+ }
1039
+ };
1040
+ const acquire = (cost, signal) => {
1041
+ if (!Number.isSafeInteger(cost) || cost < 1) {
1042
+ return Promise.reject(new RangeError("cost must be an integer of at least one message"));
1043
+ }
1044
+ if (signal?.aborted)
1045
+ return Promise.reject(signal.reason);
1046
+ return new Promise((resolve, reject) => {
1047
+ const waiter = { cost, resolve, reject, ...signal && { signal } };
1048
+ if (signal) {
1049
+ const onAbort = () => {
1050
+ remove(waiter);
1051
+ reject(signal.reason);
1052
+ };
1053
+ waiter.onAbort = onAbort;
1054
+ signal.addEventListener("abort", onAbort, { once: true });
1055
+ }
1056
+ queue.push(waiter);
1057
+ drain();
1058
+ });
1059
+ };
1060
+ const pauseFor = (milliseconds) => {
1061
+ if (Number.isNaN(milliseconds) || milliseconds < 0) {
1062
+ throw new RangeError("pause must be a non-negative number of milliseconds");
1063
+ }
1064
+ const duration = Number.isFinite(milliseconds) ? milliseconds : Number.MAX_SAFE_INTEGER;
1065
+ pausedUntil = Math.max(pausedUntil, now() + duration);
1066
+ wakeWaiting();
1067
+ };
1068
+ const pauseAfter = (error) => {
1069
+ const failure = classifyTelegramSendFailure2(error);
1070
+ if (failure.reason !== "rate-limited")
1071
+ return;
1072
+ pauseFor(failure.retryAfterSeconds === undefined ? fallback : failure.retryAfterSeconds * 1000);
1073
+ };
1074
+ const waitUntilResumed = async (signal) => {
1075
+ while (true) {
1076
+ if (signal?.aborted)
1077
+ throw signal.reason;
1078
+ const remaining = pausedUntil - now();
1079
+ if (remaining <= 0)
1080
+ return;
1081
+ await wait(Math.min(remaining, MAX_TIMER_MS), signal);
1082
+ }
1083
+ };
1084
+ const run = async (method, payload, signal, send) => {
1085
+ if (signal?.aborted)
1086
+ throw signal.reason;
1087
+ const cost = sendCost(method, payload);
1088
+ if (cost > 0)
1089
+ await acquire(cost, signal);
1090
+ if (signal?.aborted)
1091
+ throw signal.reason;
1092
+ let result;
1093
+ try {
1094
+ result = await send();
1095
+ } catch (error) {
1096
+ pauseAfter(error);
1097
+ throw error;
1098
+ }
1099
+ if (isRecord(result) && result.ok === false)
1100
+ pauseAfter(result);
1101
+ return result;
1102
+ };
1103
+ const budget = {
1104
+ run,
1105
+ acquire,
1106
+ pause: pauseFor,
1107
+ pauseAfter,
1108
+ waitUntilResumed,
1109
+ stats: () => ({
1110
+ granted,
1111
+ messages,
1112
+ queued: queue.length,
1113
+ messagesPerSecond: rate,
1114
+ pausedForMs: Math.max(0, pausedUntil - now())
1115
+ })
1116
+ };
1117
+ return budget;
1118
+ }
1119
+ var budgets = new Map;
1120
+ function keyOf(token) {
1121
+ return `telegram-outbound:${argumentsDigest({ token })}`;
1122
+ }
1123
+ function telegramOutboundBudget(config) {
1124
+ const token = TOKEN.parse(config.token);
1125
+ const rate = MESSAGES_PER_SECOND.parse(config.messagesPerSecond ?? DEFAULT_MESSAGES_PER_SECOND);
1126
+ const fallback = RETRY_AFTER_FALLBACK_MS.parse(config.retryAfterFallbackMs ?? DEFAULT_RETRY_AFTER_FALLBACK_MS);
1127
+ const key = keyOf(token);
1128
+ const existing = budgets.get(key);
1129
+ if (existing) {
1130
+ const same = existing.rate === rate && existing.fallback === fallback && existing.nowOption === config.now && existing.sleepOption === config.sleep;
1131
+ if (!same) {
1132
+ throw new Error("a Telegram outbound budget already exists for this token with different options");
1133
+ }
1134
+ return existing.budget;
1135
+ }
1136
+ const budget = createBudget(rate, fallback, config.now ?? (() => performance.now()), config.sleep ?? sleep);
1137
+ budgets.set(key, {
1138
+ budget,
1139
+ rate,
1140
+ fallback,
1141
+ nowOption: config.now,
1142
+ sleepOption: config.sleep
1143
+ });
1144
+ return budget;
1145
+ }
901
1146
  // src/telegram/transport-connect.ts
902
1147
  import { lookup } from "node:dns/promises";
903
1148
  import { connect as connectTcp, isIP } from "node:net";
@@ -2609,6 +2854,7 @@ export {
2609
2854
  sqliteTelegramUpdateStore,
2610
2855
  telegramBroadcastSender,
2611
2856
  telegramOperatorSender,
2857
+ telegramOutboundBudget,
2612
2858
  telegramWebhookUrl,
2613
2859
  verifyTelegramInitData
2614
2860
  };
@@ -6,7 +6,7 @@ import"../index-p6apg0jg.js";
6
6
  import"../index-q0th8q0z.js";
7
7
  import {
8
8
  createApplication2
9
- } from "../index-v1tswj0z.js";
9
+ } from "../index-txg1npmg.js";
10
10
  import"../index-w5s3xftz.js";
11
11
  import {
12
12
  RealtimeRequestTimeoutError2,
@@ -15,7 +15,7 @@ import {
15
15
  } from "../index-4s0fep5q.js";
16
16
  import {
17
17
  TOOL_TRANSPORTS2
18
- } from "../index-fsw1ybf3.js";
18
+ } from "../index-d9hq291n.js";
19
19
  import {
20
20
  RealtimeRejectDirectionSchema,
21
21
  RealtimeRejectPhaseSchema,
@@ -35,7 +35,7 @@ import"../index-k42ckyzx.js";
35
35
  import {
36
36
  createClient2,
37
37
  createClients2
38
- } from "../index-c5at3ykd.js";
38
+ } from "../index-tsngj2b5.js";
39
39
  import {
40
40
  assertPositiveSafeInteger
41
41
  } from "../index-0s4xebbg.js";
@@ -11,28 +11,28 @@ import {
11
11
  import {
12
12
  withSignalDeadline
13
13
  } from "../../index-9tqbxv5p.js";
14
+ import {
15
+ defineRuntimeTool2
16
+ } from "../../index-ega3yz4c.js";
17
+ import {
18
+ TOOL_ERROR_PROJECTION
19
+ } from "../../index-98hv3sba.js";
14
20
  import {
15
21
  raceAbort
16
22
  } from "../../index-b0kddvzw.js";
17
23
  import {
18
24
  readBoundedChunks,
19
25
  concatChunks
20
- } from "../../index-5efrpfmj.js";
26
+ } from "../../index-qndsr7f0.js";
21
27
  import {
22
28
  MAX_TIMER_MS
23
29
  } from "../../index-eemvahkc.js";
24
- import {
25
- assertPositiveSafeInteger
26
- } from "../../index-0s4xebbg.js";
27
- import {
28
- defineRuntimeTool2
29
- } from "../../index-ega3yz4c.js";
30
- import {
31
- TOOL_ERROR_PROJECTION
32
- } from "../../index-98hv3sba.js";
33
30
  import {
34
31
  safeJsonParse
35
32
  } from "../../index-zsarb5xp.js";
33
+ import {
34
+ assertPositiveSafeInteger
35
+ } from "../../index-0s4xebbg.js";
36
36
  import {
37
37
  AppError2,
38
38
  STITCH_ERROR_STATUS2,
@@ -5,7 +5,7 @@ import {
5
5
  createLocalStepDurability2,
6
6
  AgentToolError2,
7
7
  isAgentToolError2
8
- } from "../index-56yx8dxp.js";
8
+ } from "../index-tvtacc9a.js";
9
9
  import {
10
10
  normalizeError2
11
11
  } from "../index-k42ckyzx.js";
@@ -33,13 +33,13 @@ import {
33
33
  mountAgent2,
34
34
  describeToolCatalog2,
35
35
  buildToolManifest2
36
- } from "../index-1csp1hwm.js";
36
+ } from "../index-6p3frkv5.js";
37
37
  import"../index-m38ej7e5.js";
38
38
  import {
39
39
  ALL_TRANSPORTS2,
40
40
  TOOL_TRANSPORTS2,
41
41
  defineContract2
42
- } from "../index-fsw1ybf3.js";
42
+ } from "../index-d9hq291n.js";
43
43
  import {
44
44
  PROTECTED_RESOURCE_PATH2,
45
45
  protectedResourceMetadataUrl2,
@@ -74,7 +74,7 @@ import {
74
74
  WaitTimeoutError,
75
75
  runWaitOperation,
76
76
  createCli2
77
- } from "../index-k7z3j3hr.js";
77
+ } from "../index-km2qw407.js";
78
78
  import {
79
79
  ManagedFilePathSchema2,
80
80
  ManagedFileRefSchema2
@@ -87,9 +87,22 @@ import {
87
87
  contractOnlyService,
88
88
  mediaTypeEssence
89
89
  } from "../index-cqmqyjax.js";
90
+ import {
91
+ DEFAULT_CORS_ALLOW_HEADERS2
92
+ } from "../index-yk4g8805.js";
90
93
  import {
91
94
  createToolInvoker2
92
95
  } from "../index-vwhrnp67.js";
96
+ import {
97
+ collectToolSurface
98
+ } from "../index-86nbfysb.js";
99
+ import {
100
+ getTraceId2
101
+ } from "../index-r6v4mc67.js";
102
+ import {
103
+ defineRuntimeTool2,
104
+ createRuntimeToolFactory2
105
+ } from "../index-ega3yz4c.js";
93
106
  import {
94
107
  ManagedFileError2
95
108
  } from "../index-2f9r0jgr.js";
@@ -97,28 +110,15 @@ import {
97
110
  fetchGuarded,
98
111
  fetchPinnedDocument,
99
112
  readCapped
100
- } from "../index-cxpcdswt.js";
113
+ } from "../index-t65erk4z.js";
101
114
  import"../index-1bx1xv1k.js";
102
115
  import {
103
116
  readBoundedChunks,
104
117
  concatChunks
105
- } from "../index-5efrpfmj.js";
118
+ } from "../index-qndsr7f0.js";
106
119
  import {
107
120
  assertPositiveSafeInteger
108
121
  } from "../index-0s4xebbg.js";
109
- import {
110
- DEFAULT_CORS_ALLOW_HEADERS2
111
- } from "../index-yk4g8805.js";
112
- import {
113
- collectToolSurface
114
- } from "../index-86nbfysb.js";
115
- import {
116
- getTraceId2
117
- } from "../index-r6v4mc67.js";
118
- import {
119
- defineRuntimeTool2,
120
- createRuntimeToolFactory2
121
- } from "../index-ega3yz4c.js";
122
122
  import {
123
123
  formatZodError2
124
124
  } from "../index-1eeqpadm.js";
@@ -1,7 +1,7 @@
1
1
  import"../index-m38ej7e5.js";
2
2
  import {
3
3
  defineContract2
4
- } from "../index-fsw1ybf3.js";
4
+ } from "../index-d9hq291n.js";
5
5
  import {
6
6
  ApiError2
7
7
  } from "../index-kfjkb396.js";
@@ -1,37 +1,20 @@
1
+ import {
2
+ isTelegramNotDispatched
3
+ } from "./index-6j725ez5.js";
1
4
  import {
2
5
  isRecord
3
6
  } from "./index-9jfdm5tg.js";
4
7
 
5
- // src/telegram/not-dispatched.ts
6
- class TelegramNotDispatchedError2 extends Error {
7
- stage;
8
- name = "TelegramNotDispatchedError";
9
- code = "TELEGRAM_NOT_DISPATCHED";
10
- constructor(stage, message, options) {
11
- super(message, options);
12
- this.stage = stage;
13
- }
14
- }
15
- function isTelegramNotDispatchedError(error) {
16
- return error instanceof TelegramNotDispatchedError2 || error instanceof Error && error.name === "TelegramNotDispatchedError" && Reflect.get(error, "code") === "TELEGRAM_NOT_DISPATCHED";
17
- }
18
- function isTelegramNotDispatched(error, depth = 0) {
19
- if (error instanceof TelegramNotDispatchedError2)
20
- return true;
21
- if (typeof error !== "object" || error === null || depth > 4)
22
- return false;
23
- if (Reflect.get(error, "code") === "TELEGRAM_NOT_DISPATCHED")
24
- return true;
25
- const nested = Reflect.get(error, "cause") ?? Reflect.get(error, "error");
26
- return nested !== error && isTelegramNotDispatched(nested, depth + 1);
27
- }
28
-
29
8
  // src/telegram/send-failure.ts
30
9
  var BY_DESCRIPTION = [
31
10
  [/bot was blocked by the user|bot was kicked/i, "blocked-by-user"],
32
11
  [/user is deactivated|account is deactivated/i, "user-deactivated"],
33
12
  [/can'?t initiate conversation|need to start a conversation/i, "not-started"],
34
13
  [/chat not found|peer_id_invalid|user not found/i, "chat-not-found"],
14
+ [
15
+ /bot_to_bot_disabled|bot-to-bot messaging is disabled|bot to bot.*disabled/i,
16
+ "bot-to-bot-disabled"
17
+ ],
35
18
  [/too many requests|retry later|flood/i, "rate-limited"],
36
19
  [
37
20
  /message is too long|can'?t parse entities|message text is empty|wrong file identifier|button_url_invalid/i,
@@ -43,6 +26,7 @@ var TRAITS = {
43
26
  "user-deactivated": { retryable: false, recipientUnreachable: true },
44
27
  "chat-not-found": { retryable: false, recipientUnreachable: true },
45
28
  "not-started": { retryable: false, recipientUnreachable: true },
29
+ "bot-to-bot-disabled": { retryable: false, recipientUnreachable: false },
46
30
  "rate-limited": { retryable: true, recipientUnreachable: false },
47
31
  "message-invalid": { retryable: false, recipientUnreachable: false },
48
32
  "server-error": { retryable: true, recipientUnreachable: false },
@@ -82,13 +66,16 @@ function retryAfterOf(value, depth = 0) {
82
66
  return nested === value ? undefined : retryAfterOf(nested, depth + 1);
83
67
  }
84
68
  function descriptionOf(value, depth = 0) {
69
+ if (depth > 4)
70
+ return "";
85
71
  if (typeof value === "string")
86
72
  return value;
87
73
  if (value instanceof Error) {
88
- const nested = isRecord(value) ? descriptionOf(value.cause, depth + 1) : "";
89
- return `${value.message} ${nested}`.trim();
74
+ const own = isRecord(value) && typeof value.description === "string" ? value.description : "";
75
+ const nested = descriptionOf(value.cause, depth + 1);
76
+ return [own, value.message, nested].filter(Boolean).join(" ");
90
77
  }
91
- if (!isRecord(value) || depth > 4)
78
+ if (!isRecord(value))
92
79
  return "";
93
80
  const own = typeof value.description === "string" ? value.description : "";
94
81
  const message = typeof value.message === "string" ? value.message : "";
@@ -168,4 +155,4 @@ function classifyTelegramEditRefusal(error) {
168
155
  return "other";
169
156
  }
170
157
 
171
- export { TelegramNotDispatchedError2, isTelegramNotDispatchedError, TELEGRAM_SEND_FAILURE_REASONS2, classifyTelegramSendFailure2, classifyTelegramEditRefusal };
158
+ export { TELEGRAM_SEND_FAILURE_REASONS2, classifyTelegramSendFailure2, classifyTelegramEditRefusal };
@@ -0,0 +1,25 @@
1
+ // src/telegram/not-dispatched.ts
2
+ class TelegramNotDispatchedError2 extends Error {
3
+ stage;
4
+ name = "TelegramNotDispatchedError";
5
+ code = "TELEGRAM_NOT_DISPATCHED";
6
+ constructor(stage, message, options) {
7
+ super(message, options);
8
+ this.stage = stage;
9
+ }
10
+ }
11
+ function isTelegramNotDispatchedError(error) {
12
+ return error instanceof TelegramNotDispatchedError2 || error instanceof Error && error.name === "TelegramNotDispatchedError" && Reflect.get(error, "code") === "TELEGRAM_NOT_DISPATCHED";
13
+ }
14
+ function isTelegramNotDispatched(error, depth = 0) {
15
+ if (error instanceof TelegramNotDispatchedError2)
16
+ return true;
17
+ if (typeof error !== "object" || error === null || depth > 4)
18
+ return false;
19
+ if (Reflect.get(error, "code") === "TELEGRAM_NOT_DISPATCHED")
20
+ return true;
21
+ const nested = Reflect.get(error, "cause") ?? Reflect.get(error, "error");
22
+ return nested !== error && isTelegramNotDispatched(nested, depth + 1);
23
+ }
24
+
25
+ export { TelegramNotDispatchedError2, isTelegramNotDispatchedError, isTelegramNotDispatched };
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  AgentToolError2,
12
12
  resolveToolDurability
13
- } from "./index-56yx8dxp.js";
13
+ } from "./index-tvtacc9a.js";
14
14
  import {
15
15
  collectToolSurface
16
16
  } from "./index-86nbfysb.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  defineContract2
3
- } from "./index-fsw1ybf3.js";
3
+ } from "./index-d9hq291n.js";
4
4
  import {
5
5
  bytesToBase64Url,
6
6
  base64UrlToBytes
@@ -4,7 +4,7 @@ import {
4
4
  AgentSandboxRestrictionSchema2,
5
5
  AgentSandboxGradeSchema2,
6
6
  AGENT_CODING_TOOL_NAMES
7
- } from "./index-zktz242w.js";
7
+ } from "./index-s47ac8zt.js";
8
8
  import {
9
9
  AgentRecordIdSchema2,
10
10
  AgentRecordVersionSchema2,
@@ -4,7 +4,7 @@ import {
4
4
  } from "./index-b0w7rbpt.js";
5
5
  import {
6
6
  createAgentRuntimeEventSink2
7
- } from "./index-616xh7f2.js";
7
+ } from "./index-4qnzda76.js";
8
8
  import {
9
9
  assertPositiveSafeInteger
10
10
  } from "./index-0s4xebbg.js";
@@ -17,7 +17,7 @@ import {
17
17
  replaceMessage,
18
18
  ArchiveSpillSchema,
19
19
  createAgentRuntimeStore2
20
- } from "./index-523tq7y4.js";
20
+ } from "./index-a3462dqf.js";
21
21
 
22
22
  // src/agent-runtime/store-memory.ts
23
23
  import { z as z2 } from "zod";
@@ -5,7 +5,7 @@ import {
5
5
  fetchGuarded,
6
6
  PrivateAddressRefusal,
7
7
  readCapped
8
- } from "./index-cxpcdswt.js";
8
+ } from "./index-t65erk4z.js";
9
9
  import {
10
10
  writeFileAtomicSync2
11
11
  } from "./index-07dcf2yn.js";
@@ -23,19 +23,19 @@ import {
23
23
  createToolRunner,
24
24
  formatToolError
25
25
  } from "./index-htxh46ej.js";
26
+ import {
27
+ collectToolSurface
28
+ } from "./index-86nbfysb.js";
26
29
  import {
27
30
  fetchGuarded,
28
31
  readCapped
29
- } from "./index-cxpcdswt.js";
32
+ } from "./index-t65erk4z.js";
30
33
  import {
31
34
  isWithinDir2
32
35
  } from "./index-5cc6r990.js";
33
36
  import {
34
37
  sleep
35
38
  } from "./index-eemvahkc.js";
36
- import {
37
- collectToolSurface
38
- } from "./index-86nbfysb.js";
39
39
  import {
40
40
  isUnsafeKey,
41
41
  safeJsonParse
@@ -22,7 +22,7 @@ import {
22
22
  createLocalStepDurability2,
23
23
  isAgentToolError2,
24
24
  createToolDurabilityContext
25
- } from "./index-56yx8dxp.js";
25
+ } from "./index-tvtacc9a.js";
26
26
  import {
27
27
  canonicalAgentJson2,
28
28
  createToolChronology,