@markusylisiurunen/tau 0.3.29 → 0.3.30

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 (53) hide show
  1. package/README.md +11 -11
  2. package/dist/core/config/content_loader.js +3 -1
  3. package/dist/core/config/content_loader.js.map +1 -1
  4. package/dist/core/config/index.js +1 -1
  5. package/dist/core/config/index.js.map +1 -1
  6. package/dist/core/config/schema.js +3 -3
  7. package/dist/core/config/schema.js.map +1 -1
  8. package/dist/core/personas.js +2 -1
  9. package/dist/core/personas.js.map +1 -1
  10. package/dist/core/session/runner.js +1 -0
  11. package/dist/core/session/runner.js.map +1 -1
  12. package/dist/core/static/code_mode/web/documentation.md +236 -0
  13. package/dist/core/static/code_mode/web/sandbox_runner.mjs +112 -0
  14. package/dist/core/subagents/registry.js +2 -3
  15. package/dist/core/subagents/registry.js.map +1 -1
  16. package/dist/core/subagents/subagent_engine.js +1 -11
  17. package/dist/core/subagents/subagent_engine.js.map +1 -1
  18. package/dist/core/subagents/types.js +2 -3
  19. package/dist/core/subagents/types.js.map +1 -1
  20. package/dist/core/telegram/adapter.js +58 -17
  21. package/dist/core/telegram/adapter.js.map +1 -1
  22. package/dist/core/telegram/runtime.js +20 -2
  23. package/dist/core/telegram/runtime.js.map +1 -1
  24. package/dist/core/tools/catalog.js +6 -9
  25. package/dist/core/tools/catalog.js.map +1 -1
  26. package/dist/core/tools/code_mode.js +105 -0
  27. package/dist/core/tools/code_mode.js.map +1 -0
  28. package/dist/core/tools/registry.js.map +1 -1
  29. package/dist/core/tools/tool_names.js +2 -4
  30. package/dist/core/tools/tool_names.js.map +1 -1
  31. package/dist/core/tools/web.js +537 -0
  32. package/dist/core/tools/web.js.map +1 -0
  33. package/dist/core/tools/web_discovery.js +201 -0
  34. package/dist/core/tools/web_discovery.js.map +1 -0
  35. package/dist/core/utils/subagent_utils.js +8 -8
  36. package/dist/core/utils/subagent_utils.js.map +1 -1
  37. package/dist/core/version.js +1 -1
  38. package/dist/host/hosted_ephemeral_agent_session.js +1 -1
  39. package/dist/host/hosted_ephemeral_agent_session.js.map +1 -1
  40. package/dist/protocol/session_protocol.d.ts +1 -1
  41. package/dist/protocol/session_protocol.js +1 -2
  42. package/dist/protocol/session_protocol.js.map +1 -1
  43. package/dist/tui/ui/agent_activity_format.js +6 -15
  44. package/dist/tui/ui/agent_activity_format.js.map +1 -1
  45. package/dist/tui/ui/tool_ui_registry.js +83 -19
  46. package/dist/tui/ui/tool_ui_registry.js.map +1 -1
  47. package/package.json +3 -2
  48. package/dist/core/tools/web_fetch.js +0 -259
  49. package/dist/core/tools/web_fetch.js.map +0 -1
  50. package/dist/core/tools/web_search.js +0 -242
  51. package/dist/core/tools/web_search.js.map +0 -1
  52. package/dist/core/utils/parallel_api.js +0 -26
  53. package/dist/core/utils/parallel_api.js.map +0 -1
@@ -0,0 +1,236 @@
1
+ The one-shot JavaScript runtime provides these globals:
2
+
3
+ - `web.discover(url)`: discover metadata for direct Markdown representations and `llms.txt` files for a direct URL.
4
+ - `web.search(query, options?)`: search the web and return relevant page highlights.
5
+ - `web.fetch(urls, options?)`: retrieve highlights or bounded text from known URLs through the web extraction service.
6
+ - `docs`: this document.
7
+ - `console`: program output. Only text written through console methods is returned; return values are ignored.
8
+
9
+ Top-level `await` is supported. Calls may run concurrently with `Promise.all`.
10
+
11
+ ## Defaults
12
+
13
+ The API is designed for agent workflows and defaults to token-efficient retrieval:
14
+
15
+ - Search uses automatic search with 10 results unless `numResults` is set.
16
+ - Search always requests highlights rather than full page text.
17
+ - Fetch defaults to highlights. Use `mode: "text"` only when fuller page content is needed.
18
+ - Cached content is accepted with live retrieval as fallback. Set `maxAgeHours` only when the task has a specific freshness requirement.
19
+
20
+ ## `web.discover(url)`
21
+
22
+ Use discovery as a separate first step when the user provides a specific URL and a direct agent-friendly representation may exist. Print a concise discovery report, then decide in the next turn whether to use `curl`, `web.fetch`, or another approach.
23
+
24
+ ```js
25
+ const discovery = await web.discover("https://example.com/docs/getting-started");
26
+
27
+ console.log(`Requested: ${discovery.requestedUrl}`);
28
+ for (const representation of discovery.markdown) {
29
+ console.log(
30
+ `Markdown: ${representation.url} (${representation.via}, ${representation.contentType})`,
31
+ );
32
+ }
33
+ for (const file of discovery.llmsTxt) {
34
+ console.log(`llms.txt: ${file.url} (${file.contentType})`);
35
+ }
36
+ ```
37
+
38
+ Discovery accepts HTTP(S) URLs up to 2,048 characters and 20 path segments.
39
+
40
+ Discovery checks:
41
+
42
+ 1. The original URL with Markdown content negotiation.
43
+ 2. Deterministic same-origin `.md` and `/index.md` paths.
44
+ 3. `/llms.txt` and `llms.txt` at every path prefix.
45
+
46
+ Discovery returns metadata only. It does not return page or `llms.txt` bodies, parse Markdown links, match entries to the requested page, or automatically follow anything listed there. Missing discovery files are omitted.
47
+
48
+ ### Response
49
+
50
+ ```js
51
+ {
52
+ requestedUrl: string,
53
+ markdown: [
54
+ {
55
+ url: string,
56
+ via: "content-negotiation" | "markdown-path",
57
+ contentType: "text/markdown" | "text/x-markdown" | "text/plain",
58
+ varyAccept?: boolean,
59
+ },
60
+ ],
61
+ llmsTxt: [
62
+ {
63
+ url: string,
64
+ contentType: "text/markdown" | "text/x-markdown" | "text/plain",
65
+ },
66
+ ],
67
+ }
68
+ ```
69
+
70
+ Retrieve an explicit Markdown or `llms.txt` URL with `curl` in a later Bash call:
71
+
72
+ ```bash
73
+ curl -fsSL -H 'Accept: text/markdown' \
74
+ 'https://example.com/docs/getting-started/index.md'
75
+ ```
76
+
77
+ For content negotiation, request the original URL with the same header. Use `web.fetch` instead when extraction through the web search infrastructure is preferable.
78
+
79
+ ## `web.search(query, options?)`
80
+
81
+ Search the web and retrieve highlights in one request.
82
+
83
+ ```js
84
+ const response = await web.search("latest Tau releases", {
85
+ numResults: 5,
86
+ includeDomains: ["github.com"],
87
+ });
88
+ ```
89
+
90
+ ### Options
91
+
92
+ | Option | Type | Behavior |
93
+ | --- | --- | --- |
94
+ | `numResults` | integer, 1-100 | Number of results. Defaults to 10. |
95
+ | `includeDomains` | string array, 1-1,200 items | Return only matching domains or path prefixes. |
96
+ | `excludeDomains` | string array, 1-1,200 items | Exclude matching domains or path prefixes. |
97
+ | `startPublishedDate` | string | Return pages published after this ISO 8601 date. |
98
+ | `endPublishedDate` | string | Return pages published before this ISO 8601 date. |
99
+ | `category` | string | One of `company`, `people`, `publication`, `news`, `personal site`, or `financial report`. |
100
+ | `userLocation` | two-letter country code | Bias results toward a country. |
101
+ | `maxAgeHours` | integer, -1 to 720 | Maximum cached-content age. `0` always retrieves live; `-1` uses cache only. Omit for the recommended default. |
102
+
103
+ Do not combine `excludeDomains` or publication-date filters with the `company` or `people` categories; those combinations are unsupported.
104
+
105
+ ### Response
106
+
107
+ ```js
108
+ {
109
+ results: [
110
+ {
111
+ title: string,
112
+ url: string,
113
+ publishedDate?: string,
114
+ author?: string,
115
+ highlights?: string[],
116
+ },
117
+ ],
118
+ statuses: [
119
+ {
120
+ id: string,
121
+ status: "success" | "error",
122
+ error?: { tag?: string, httpStatusCode?: number },
123
+ },
124
+ ],
125
+ }
126
+ ```
127
+
128
+ Results are relevance ordered. Check `statuses` when inline content is important because an individual page may fail retrieval while the overall search succeeds.
129
+
130
+ ## `web.fetch(urls, options?)`
131
+
132
+ Retrieve content from one URL or an array of up to 100 URLs. Each URL may contain up to 2,048 characters.
133
+
134
+ ```js
135
+ const response = await web.fetch("https://example.com/article", {
136
+ query: "release date and breaking changes",
137
+ });
138
+ ```
139
+
140
+ ### Options
141
+
142
+ | Option | Type | Behavior |
143
+ | --- | --- | --- |
144
+ | `mode` | `"highlights"` or `"text"` | Content mode. Defaults to `"highlights"`. |
145
+ | `query` | string | Guides highlight selection. Available only in highlights mode. |
146
+ | `maxCharacters` | integer, 1-10,000 | Caps highlight or text characters per URL. Omit for the service default. |
147
+ | `maxAgeHours` | integer, -1 to 720 | Maximum cached-content age. `0` always retrieves live; `-1` uses cache only. |
148
+ | `subpages` | integer, 0-100 | Number of linked subpages to retrieve per URL. |
149
+ | `subpageTarget` | string or string array | Guides linked-subpage selection. Strings may contain up to 100 characters; arrays may contain 1-100 items. |
150
+ | `links` | integer, 0-1,000 | Number of links to return from each page. |
151
+
152
+ Use highlights for focused questions and multi-step research. Use bounded text when exact context or comprehensive reading is necessary:
153
+
154
+ ```js
155
+ const response = await web.fetch(urls, {
156
+ mode: "text",
157
+ maxCharacters: 12_000,
158
+ });
159
+ ```
160
+
161
+ ### Response
162
+
163
+ Fetch returns the same top-level `{ results, statuses }` shape as search. Result objects may contain:
164
+
165
+ ```js
166
+ {
167
+ title: string,
168
+ url: string,
169
+ publishedDate?: string,
170
+ author?: string,
171
+ highlights?: string[],
172
+ text?: string,
173
+ subpages?: Array<{ /* same result fields */ }>,
174
+ links?: string[],
175
+ }
176
+ ```
177
+
178
+ Always inspect `statuses` for fetch calls. A fetch request can succeed overall while individual URLs report errors such as not found, forbidden, or live-retrieval timeout.
179
+
180
+ ## Common patterns
181
+
182
+ ### Format evidence compactly
183
+
184
+ ```js
185
+ const { results } = await web.search("current browser compatibility for CSS nesting", {
186
+ numResults: 5,
187
+ });
188
+
189
+ for (const result of results) {
190
+ console.log(`${result.title}\n${result.url}`);
191
+ for (const highlight of result.highlights ?? []) console.log(`- ${highlight}`);
192
+ }
193
+ ```
194
+
195
+ ### Search several query variants concurrently
196
+
197
+ ```js
198
+ const queries = [
199
+ "Tau latest release notes",
200
+ "Tau recent breaking changes",
201
+ "Tau GitHub releases",
202
+ ];
203
+ const responses = await Promise.all(
204
+ queries.map((query) => web.search(query, { numResults: 5 })),
205
+ );
206
+
207
+ const unique = new Map();
208
+ for (const response of responses) {
209
+ for (const result of response.results) unique.set(result.url, result);
210
+ }
211
+ for (const result of unique.values()) {
212
+ console.log(`${result.title}\n${result.url}`);
213
+ }
214
+ ```
215
+
216
+ ### Search first, then fetch selected pages
217
+
218
+ ```js
219
+ const { results } = await web.search("official Tau documentation", {
220
+ numResults: 8,
221
+ includeDomains: ["github.com"],
222
+ });
223
+ const urls = results.slice(0, 3).map((result) => result.url);
224
+ const pages = await web.fetch(urls, {
225
+ query: "installation and configuration instructions",
226
+ });
227
+
228
+ for (const page of pages.results) {
229
+ console.log(`${page.title}\n${page.url}`);
230
+ for (const highlight of page.highlights ?? []) console.log(`- ${highlight}`);
231
+ }
232
+ ```
233
+
234
+ ## Output guidance
235
+
236
+ Print only information needed for the task. Prefer concise labeled text over serialized response objects. Select relevant fields when possible; when all fields matter, flatten and label them compactly. Emit JSON only when the user explicitly requests JSON or another machine-readable result.
@@ -0,0 +1,112 @@
1
+ import { parentPort, workerData } from "node:worker_threads";
2
+ import "ses";
3
+
4
+ if (!parentPort) {
5
+ throw new Error("web sandbox requires a parent port");
6
+ }
7
+ if (
8
+ typeof workerData !== "object" ||
9
+ workerData === null ||
10
+ typeof workerData.code !== "string" ||
11
+ typeof workerData.docs !== "string"
12
+ ) {
13
+ throw new Error("web sandbox received invalid worker data");
14
+ }
15
+
16
+ lockdown();
17
+
18
+ const pending = new Map();
19
+ let nextRequestId = 1;
20
+
21
+ parentPort.on("message", (message) => {
22
+ if (message?.type !== "response" || typeof message.id !== "number") return;
23
+ const request = pending.get(message.id);
24
+ if (!request) return;
25
+ pending.delete(message.id);
26
+ if (message.ok) {
27
+ request.resolve(message.value);
28
+ return;
29
+ }
30
+
31
+ const error = new Error(message.error?.message || "Web request failed");
32
+ if (message.error?.name) error.name = message.error.name;
33
+ request.reject(error);
34
+ });
35
+
36
+ function requestWeb(method, argsJson) {
37
+ if (typeof method !== "string" || typeof argsJson !== "string") {
38
+ return Promise.reject(new Error("invalid web bridge request"));
39
+ }
40
+ const id = nextRequestId++;
41
+ return new Promise((resolve, reject) => {
42
+ pending.set(id, { resolve, reject });
43
+ parentPort.postMessage({ type: "request", id, method, argsJson });
44
+ });
45
+ }
46
+
47
+ function writeOutput(stream, text) {
48
+ if ((stream !== "stdout" && stream !== "stderr") || typeof text !== "string") {
49
+ throw new Error("invalid console bridge output");
50
+ }
51
+ const output = stream === "stderr" ? process.stderr : process.stdout;
52
+ output.write(text + "\n");
53
+ }
54
+
55
+ const compartment = new Compartment({
56
+ globals: {
57
+ _requestWeb: harden(requestWeb),
58
+ _writeOutput: harden(writeOutput),
59
+ docs: workerData.docs,
60
+ },
61
+ __options__: true,
62
+ });
63
+
64
+ compartment.evaluate(String.raw`
65
+ (() => {
66
+ const requestWebBridge = _requestWeb;
67
+ const writeOutputBridge = _writeOutput;
68
+ delete globalThis._requestWeb;
69
+ delete globalThis._writeOutput;
70
+
71
+ function formatOutputValue(value) {
72
+ if (typeof value === "string") return value;
73
+ if (value instanceof Error) return value.stack || value.message;
74
+ try {
75
+ const serialized = JSON.stringify(value);
76
+ if (serialized !== undefined) return serialized;
77
+ } catch {}
78
+ return String(value);
79
+ }
80
+ function writeConsole(stream, values) {
81
+ writeOutputBridge(stream, values.map(formatOutputValue).join(" "));
82
+ }
83
+ Object.defineProperty(globalThis, "console", {
84
+ value: Object.freeze({
85
+ debug: (...values) => writeConsole("stdout", values),
86
+ error: (...values) => writeConsole("stderr", values),
87
+ info: (...values) => writeConsole("stdout", values),
88
+ log: (...values) => writeConsole("stdout", values),
89
+ warn: (...values) => writeConsole("stderr", values),
90
+ }),
91
+ });
92
+ function callWeb(method, args) {
93
+ return requestWebBridge(method, JSON.stringify(args));
94
+ }
95
+ Object.defineProperty(globalThis, "web", {
96
+ value: Object.freeze({
97
+ discover: (...args) => callWeb("discover", args),
98
+ search: (...args) => callWeb("search", args),
99
+ fetch: (...args) => callWeb("fetch", args),
100
+ }),
101
+ });
102
+ })();
103
+ `);
104
+
105
+ try {
106
+ await compartment.evaluate("(async () => {\n" + workerData.code + "\n})()");
107
+ } catch (error) {
108
+ writeOutput("stderr", error instanceof Error ? error.stack || error.message : String(error));
109
+ process.exitCode = 1;
110
+ } finally {
111
+ parentPort.close();
112
+ }
@@ -1,4 +1,4 @@
1
- import { TOOL_NAME_BASH, TOOL_NAME_EDIT, TOOL_NAME_VIEW_IMAGE, TOOL_NAME_WEB_FETCH, TOOL_NAME_WEB_SEARCH, TOOL_NAME_WRITE, } from "../tools/tool_names.js";
1
+ import { TOOL_NAME_BASH, TOOL_NAME_EDIT, TOOL_NAME_VIEW_IMAGE, TOOL_NAME_WEB, TOOL_NAME_WRITE, } from "../tools/tool_names.js";
2
2
  import { buildDefaultSubagentSystemPrompt, DEFAULT_SUBAGENT_DESCRIPTION } from "./default.js";
3
3
  import { DEFAULT_SUBAGENT_NAME, } from "./types.js";
4
4
  const INHERITABLE_TOOL_NAMES = new Set([
@@ -6,8 +6,7 @@ const INHERITABLE_TOOL_NAMES = new Set([
6
6
  TOOL_NAME_WRITE,
7
7
  TOOL_NAME_EDIT,
8
8
  TOOL_NAME_VIEW_IMAGE,
9
- TOOL_NAME_WEB_SEARCH,
10
- TOOL_NAME_WEB_FETCH,
9
+ TOOL_NAME_WEB,
11
10
  ]);
12
11
  function normalizeTools(tools) {
13
12
  const seen = new Set();
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/subagents/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/subagents/registry.ts"],"names":[],"mappings":"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"}
@@ -16,9 +16,6 @@ function getStreamingSettings(settings) {
16
16
  const merged = { ...(settings ?? {}) };
17
17
  return parseStreamingSettings(merged);
18
18
  }
19
- function buildToolRegistryForAllowedTools(allowedTools, config, backend) {
20
- return ToolCatalog.createSubagentRegistry(allowedTools, config, backend);
21
- }
22
19
  function isToolCall(block) {
23
20
  return block.type === "toolCall";
24
21
  }
@@ -35,8 +32,7 @@ export async function runSubagent(options) {
35
32
  }
36
33
  const baseBackend = options.backend ?? createLocalToolExecutionBackend();
37
34
  const backend = scopeToolExecutionBackend(baseBackend, runtimeConfig.workingDirectory);
38
- const allowedTools = runtimeConfig.tools;
39
- const toolRegistry = buildToolRegistryForAllowedTools(allowedTools, config, backend);
35
+ const toolRegistry = ToolCatalog.createSubagentRegistry(runtimeConfig.tools, backend);
40
36
  const messages = options.messages ?? [];
41
37
  const promptWithModelNotice = prependModelNotice(prompt, resolveModelNotice(config, runtimeConfig.model));
42
38
  messages.push({
@@ -183,12 +179,6 @@ export async function runSubagent(options) {
183
179
  const handleUi = (uiEvent) => {
184
180
  if (!uiEvent)
185
181
  return;
186
- if ((uiEvent.type === "web_search_finished" || uiEvent.type === "web_fetch_finished") &&
187
- typeof uiEvent.costUsd === "number" &&
188
- Number.isFinite(uiEvent.costUsd) &&
189
- uiEvent.costUsd > 0) {
190
- costTotal += uiEvent.costUsd;
191
- }
192
182
  const text = formatToolUiEventForProgress(uiEvent);
193
183
  if (text && /\b(blocked|failed):/.test(text)) {
194
184
  recordIssue(text);
@@ -1 +1 @@
1
- {"version":3,"file":"subagent_engine.js","sourceRoot":"","sources":["../../../src/core/subagents/subagent_engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subagent_engine.js","sourceRoot":"","sources":["../../../src/core/subagents/subagent_engine.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,10 @@
1
- import { TOOL_NAME_BASH, TOOL_NAME_EDIT, TOOL_NAME_VIEW_IMAGE, TOOL_NAME_WEB_FETCH, TOOL_NAME_WEB_SEARCH, TOOL_NAME_WRITE, } from "../tools/tool_names.js";
1
+ import { TOOL_NAME_BASH, TOOL_NAME_EDIT, TOOL_NAME_VIEW_IMAGE, TOOL_NAME_WEB, TOOL_NAME_WRITE, } from "../tools/tool_names.js";
2
2
  export const DEFAULT_SUBAGENT_NAME = "default";
3
3
  export const SUBAGENT_TOOL_NAMES = [
4
4
  TOOL_NAME_BASH,
5
5
  TOOL_NAME_WRITE,
6
6
  TOOL_NAME_EDIT,
7
7
  TOOL_NAME_VIEW_IMAGE,
8
- TOOL_NAME_WEB_SEARCH,
9
- TOOL_NAME_WEB_FETCH,
8
+ TOOL_NAME_WEB,
10
9
  ];
11
10
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/subagents/types.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAGhC,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAI/C,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,cAAc;IACd,eAAe;IACf,cAAc;IACd,oBAAoB;IACpB,oBAAoB;IACpB,mBAAmB;CACX,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/subagents/types.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAGhC,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAI/C,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,cAAc;IACd,eAAe;IACf,cAAc;IACd,oBAAoB;IACpB,aAAa;CACL,CAAC"}
@@ -19,8 +19,8 @@ const DEFAULT_TELEGRAM_AUDIO_MIME_TYPE = "audio/mpeg";
19
19
  const DEFAULT_TELEGRAM_AUDIO_FILE_NAME = "audio.mp3";
20
20
  const DEFAULT_TELEGRAM_PHOTO_MIME_TYPE = "image/jpeg";
21
21
  const DEFAULT_TELEGRAM_DOCUMENT_MIME_TYPE = "application/octet-stream";
22
- const MESSAGE_QUEUED_REACTION_EMOJI = "👀";
23
- const MESSAGE_QUEUED_REACTION_DELAY_MS = 1000;
22
+ const MESSAGE_ACKNOWLEDGMENT_REACTION_EMOJI = "👀";
23
+ const MESSAGE_ACKNOWLEDGMENT_DELAY_MS = 1000;
24
24
  const TELEGRAM_MAX_MESSAGE_BYTES = 4096;
25
25
  const TELEGRAM_MAX_RICH_MESSAGE_BYTES = 32 * 1024;
26
26
  const TELEGRAM_MESSAGE_BYTE_BUFFER_RATIO = 0.95;
@@ -510,19 +510,60 @@ const TelegramGetUpdatesResultSchema = z.array(TelegramUpdateSchema);
510
510
  const TelegramGetFileResultSchema = z.object({ file_path: z.string() });
511
511
  const TelegramGetMeResultSchema = telegramObject({ username: z.string() });
512
512
  const TelegramAckResultSchema = z.literal(true);
513
+ const MAX_TELEGRAM_ERROR_DETAIL_LENGTH = 500;
514
+ function getErrorCode(error) {
515
+ if (typeof error !== "object" || error === null || !("code" in error)) {
516
+ return undefined;
517
+ }
518
+ return typeof error.code === "string" ? error.code : undefined;
519
+ }
520
+ function formatTelegramNetworkError(error) {
521
+ const message = error instanceof Error ? error.message : String(error);
522
+ const cause = error instanceof Error ? error.cause : undefined;
523
+ const causeMessage = cause instanceof Error ? cause.message : undefined;
524
+ const codes = Array.from(new Set([getErrorCode(error), getErrorCode(cause)].filter((code) => code !== undefined)));
525
+ const detail = causeMessage && causeMessage !== message ? `${message}: ${causeMessage}` : message;
526
+ return `${detail}${codes.length > 0 ? ` (${codes.join(", ")})` : ""}`;
527
+ }
528
+ function truncateTelegramErrorDetail(detail) {
529
+ if (detail.length <= MAX_TELEGRAM_ERROR_DETAIL_LENGTH) {
530
+ return detail;
531
+ }
532
+ return `${detail.slice(0, MAX_TELEGRAM_ERROR_DETAIL_LENGTH)}…`;
533
+ }
534
+ async function readTelegramHttpErrorDetail(response) {
535
+ const responseText = (await response.text()).trim();
536
+ if (!responseText) {
537
+ return "";
538
+ }
539
+ try {
540
+ const parsed = TelegramEnvelopeSchema.safeParse(JSON.parse(responseText));
541
+ if (parsed.success && parsed.data.description?.trim()) {
542
+ return truncateTelegramErrorDetail(parsed.data.description.trim());
543
+ }
544
+ }
545
+ catch { }
546
+ return truncateTelegramErrorDetail(responseText);
547
+ }
513
548
  function createTelegramApi(botToken) {
514
549
  const apiUrl = `https://api.telegram.org/bot${botToken}`;
515
550
  async function callTelegramMethod(method, payload, resultSchema) {
516
- const response = await fetch(`${apiUrl}/${method}`, {
517
- method: "POST",
518
- headers: {
519
- "content-type": "application/json",
520
- },
521
- body: JSON.stringify(payload),
522
- });
551
+ let response;
552
+ try {
553
+ response = await fetch(`${apiUrl}/${method}`, {
554
+ method: "POST",
555
+ headers: {
556
+ "content-type": "application/json",
557
+ },
558
+ body: JSON.stringify(payload),
559
+ });
560
+ }
561
+ catch (error) {
562
+ throw new Error(`telegram ${method} network request failed: ${formatTelegramNetworkError(error)}`);
563
+ }
523
564
  if (!response.ok) {
524
- const detail = (await response.text()).trim();
525
- throw new Error(detail || `telegram ${method} failed: HTTP ${response.status}`);
565
+ const detail = await readTelegramHttpErrorDetail(response);
566
+ throw new Error(`telegram ${method} failed: HTTP ${response.status}${detail ? `: ${detail}` : ""}`);
526
567
  }
527
568
  let raw;
528
569
  try {
@@ -534,7 +575,7 @@ function createTelegramApi(botToken) {
534
575
  const envelope = parseOrThrow(TelegramEnvelopeSchema, raw, `telegram ${method} returned an invalid response payload`);
535
576
  if (!envelope.ok) {
536
577
  const detail = envelope.description?.trim() ?? "";
537
- throw new Error(detail || `telegram ${method} request failed`);
578
+ throw new Error(`telegram ${method} request failed${detail ? `: ${detail}` : ""}`);
538
579
  }
539
580
  return parseOrThrow(resultSchema, envelope.result, `telegram ${method} returned an invalid result`);
540
581
  }
@@ -596,7 +637,7 @@ function createTelegramApi(botToken) {
596
637
  await callTelegramMethod("setMessageReaction", {
597
638
  chat_id: chatId,
598
639
  message_id: messageId,
599
- reaction: [{ type: "emoji", emoji: MESSAGE_QUEUED_REACTION_EMOJI }],
640
+ reaction: [{ type: "emoji", emoji: MESSAGE_ACKNOWLEDGMENT_REACTION_EMOJI }],
600
641
  }, TelegramAckResultSchema);
601
642
  },
602
643
  async answerCallbackQuery(callbackQueryId, text) {
@@ -1435,6 +1476,7 @@ class TelegramAdapterImpl {
1435
1476
  await this.reply(chatId, parsed.error);
1436
1477
  return;
1437
1478
  }
1479
+ void this.acknowledgeMessageAfterDelay(chatId, sourceMessageId);
1438
1480
  try {
1439
1481
  const sessionManager = this.getSessionManagerForChat(chatId);
1440
1482
  const previousSession = this.getActiveSession(chatId);
@@ -1446,7 +1488,6 @@ class TelegramAdapterImpl {
1446
1488
  projectId: parsed.projectId,
1447
1489
  });
1448
1490
  this.setActiveSession(chatId, session.id);
1449
- void this.reactToQueuedMessage(chatId, sourceMessageId);
1450
1491
  }
1451
1492
  catch (error) {
1452
1493
  await this.reply(chatId, this.formatManagerError(error));
@@ -1742,7 +1783,7 @@ class TelegramAdapterImpl {
1742
1783
  ...(this.systemMessage ? { additionalSystemMessage: this.systemMessage } : {}),
1743
1784
  });
1744
1785
  this.resetPendingAttachmentQueue(sessionId);
1745
- await this.reactToQueuedMessage(chatId, sourceMessageId);
1786
+ await this.acknowledgeMessageAfterDelay(chatId, sourceMessageId);
1746
1787
  if (this.isVerboseSession(sessionId)) {
1747
1788
  await this.reply(chatId, this.formatMessageQueued(sessionId));
1748
1789
  }
@@ -2006,11 +2047,11 @@ class TelegramAdapterImpl {
2006
2047
  getSessionChatKey(sessionId, chatId) {
2007
2048
  return `${sessionId}:${chatId}`;
2008
2049
  }
2009
- async reactToQueuedMessage(chatId, messageId) {
2050
+ async acknowledgeMessageAfterDelay(chatId, messageId) {
2010
2051
  if (typeof messageId !== "number" || !Number.isInteger(messageId) || messageId <= 0) {
2011
2052
  return;
2012
2053
  }
2013
- await this.wait(MESSAGE_QUEUED_REACTION_DELAY_MS);
2054
+ await this.wait(MESSAGE_ACKNOWLEDGMENT_DELAY_MS);
2014
2055
  if (this.abortController.signal.aborted) {
2015
2056
  return;
2016
2057
  }