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.
- package/CHANGELOG.md +42 -0
- package/README.md +1 -1
- package/dist/browser/client-url.d.ts.map +1 -1
- package/dist/entrypoints/agent-runtime/coding-tools.js +1 -1
- package/dist/entrypoints/agent-runtime/harness.js +4 -4
- package/dist/entrypoints/agent-runtime/realtime.js +2 -2
- package/dist/entrypoints/agent-runtime/sandbox.js +3 -3
- package/dist/entrypoints/agent-runtime/sqlite/bun.js +3 -3
- package/dist/entrypoints/agent-runtime/sqlite/node.js +3 -3
- package/dist/entrypoints/agent-runtime/testing.js +4 -4
- package/dist/entrypoints/agent-runtime.js +12 -12
- package/dist/entrypoints/application/directory-inbox.js +3 -3
- package/dist/entrypoints/application.js +4 -4
- package/dist/entrypoints/cli/publish.js +1 -1
- package/dist/entrypoints/cli.js +4 -4
- package/dist/entrypoints/contract.js +2 -2
- package/dist/entrypoints/http.js +2 -2
- package/dist/entrypoints/index.js +5 -5
- package/dist/entrypoints/node.js +3 -3
- package/dist/entrypoints/observability.js +3 -3
- package/dist/entrypoints/react/keyboard/testing.d.ts +2 -0
- package/dist/entrypoints/react/keyboard/testing.d.ts.map +1 -0
- package/dist/entrypoints/react/keyboard/testing.js +127 -0
- package/dist/entrypoints/react/keyboard.d.ts +4 -2
- package/dist/entrypoints/react/keyboard.d.ts.map +1 -1
- package/dist/entrypoints/react/keyboard.js +83 -319
- package/dist/entrypoints/react.js +15 -3
- package/dist/entrypoints/realtime.js +1 -1
- package/dist/entrypoints/remote.js +1 -1
- package/dist/entrypoints/server.js +18 -18
- package/dist/entrypoints/telegram/grammy.d.ts +2 -0
- package/dist/entrypoints/telegram/grammy.d.ts.map +1 -0
- package/dist/entrypoints/telegram/grammy.js +50 -0
- package/dist/entrypoints/telegram/screens.js +1 -1
- package/dist/entrypoints/telegram.d.ts +1 -0
- package/dist/entrypoints/telegram.d.ts.map +1 -1
- package/dist/entrypoints/telegram.js +254 -8
- package/dist/entrypoints/testing.js +3 -3
- package/dist/entrypoints/tools/connections.js +10 -10
- package/dist/entrypoints/tools.js +19 -19
- package/dist/entrypoints/tracking.js +1 -1
- package/dist/{index-xvj9h8yh.js → index-61hve0ez.js} +15 -28
- package/dist/index-6j725ez5.js +25 -0
- package/dist/{index-1csp1hwm.js → index-6p3frkv5.js} +1 -1
- package/dist/{index-fy4av0hq.js → index-9bwcthxw.js} +1 -1
- package/dist/{index-523tq7y4.js → index-a3462dqf.js} +1 -1
- package/dist/{index-506kd458.js → index-aw6zahv1.js} +1 -1
- package/dist/{index-tpwbct8j.js → index-dc9ere5p.js} +1 -1
- package/dist/{index-erv5shjq.js → index-kdnfe0sr.js} +1 -1
- package/dist/{index-k7z3j3hr.js → index-km2qw407.js} +4 -4
- package/dist/{index-7fc0c2np.js → index-n3v695sb.js} +1 -1
- package/dist/index-p02zgk8x.js +351 -0
- package/dist/{index-vtann8bz.js → index-p0rf7sq9.js} +8 -8
- package/dist/{index-aykhzcnf.js → index-qj1sy4ep.js} +1 -1
- package/dist/{index-cxpcdswt.js → index-t65erk4z.js} +1 -1
- package/dist/{index-c5at3ykd.js → index-tsngj2b5.js} +22 -10
- package/dist/react/entity-cache.d.ts +24 -2
- package/dist/react/entity-cache.d.ts.map +1 -1
- package/dist/react/keyboard/hooks.d.ts +41 -10
- package/dist/react/keyboard/hooks.d.ts.map +1 -1
- package/dist/react/keyboard/layers.d.ts +27 -8
- package/dist/react/keyboard/layers.d.ts.map +1 -1
- package/dist/react/keyboard/modality.d.ts +21 -0
- package/dist/react/keyboard/modality.d.ts.map +1 -0
- package/dist/react/keyboard/refs.d.ts +13 -0
- package/dist/react/keyboard/refs.d.ts.map +1 -0
- package/dist/react/keyboard/testing.d.ts +80 -0
- package/dist/react/keyboard/testing.d.ts.map +1 -0
- package/dist/react/keyboard/zone.d.ts +60 -10
- package/dist/react/keyboard/zone.d.ts.map +1 -1
- package/dist/telegram/budget-transformer.d.ts +35 -0
- package/dist/telegram/budget-transformer.d.ts.map +1 -0
- package/dist/telegram/outbound-budget.d.ts +101 -0
- package/dist/telegram/outbound-budget.d.ts.map +1 -0
- package/dist/telegram/send-failure.d.ts +6 -1
- package/dist/telegram/send-failure.d.ts.map +1 -1
- package/llms/react-keyboard-testing.txt +24 -0
- package/llms/react-keyboard.txt +264 -4
- package/llms/react.txt +1 -1
- package/llms/server.3.txt +31 -0
- package/llms/server.4.txt +5 -0
- package/llms/stitchkit.2.txt +118 -0
- package/llms/stitchkit.txt +8 -122
- package/llms/telegram-grammy.txt +22 -0
- package/llms/telegram.txt +76 -2
- package/llms/{upgrading-0.103.13-0.113.0.txt → upgrading-0.104.0-0.114.0.txt} +45 -84
- package/llms/upgrading-0.37.0-0.44.0.txt +444 -0
- package/llms/{upgrading-0.44.0-0.60.0.txt → upgrading-0.44.0-0.61.0.txt} +140 -271
- package/llms/{upgrading-0.61.0-0.74.0.txt → upgrading-0.62.0-0.78.0.txt} +137 -140
- package/llms/{upgrading-0.75.0-0.103.0.txt → upgrading-0.79.0-0.103.13.txt} +84 -137
- package/llms/upgrading.txt +5 -5
- package/llms-full.txt +453 -11
- package/llms.txt +12 -10
- package/package.json +9 -1
- package/llms/upgrading-0.37.0.txt +0 -176
- package/dist/{index-616xh7f2.js → index-4qnzda76.js} +0 -0
- package/dist/{index-fsw1ybf3.js → index-d9hq291n.js} +3 -3
- package/dist/{index-bjcjqj46.js → index-m8a44e64.js} +3 -3
- package/dist/{index-5efrpfmj.js → index-qndsr7f0.js} +3 -3
- package/dist/{index-zktz242w.js → index-s47ac8zt.js} +3 -3
- package/dist/{index-56yx8dxp.js → index-tvtacc9a.js} +3 -3
- /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-
|
|
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
|
-
|
|
34
|
-
} from "../index-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
113
|
+
} from "../index-t65erk4z.js";
|
|
101
114
|
import"../index-1bx1xv1k.js";
|
|
102
115
|
import {
|
|
103
116
|
readBoundedChunks,
|
|
104
117
|
concatChunks
|
|
105
|
-
} from "../index-
|
|
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,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
|
|
89
|
-
|
|
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)
|
|
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 {
|
|
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 };
|
|
@@ -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-
|
|
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
|