@0xmaxma/claude-gateway 2.0.2 → 2.0.4

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 (62) hide show
  1. package/README.md +1 -0
  2. package/dist/agent/runner.d.ts.map +1 -1
  3. package/dist/agent/runner.js +64 -17
  4. package/dist/agent/runner.js.map +1 -1
  5. package/dist/orchestration/bridge.d.ts +3 -1
  6. package/dist/orchestration/bridge.d.ts.map +1 -1
  7. package/dist/orchestration/bridge.js +66 -49
  8. package/dist/orchestration/bridge.js.map +1 -1
  9. package/dist/orchestration/channel-input-media.d.ts +6 -0
  10. package/dist/orchestration/channel-input-media.d.ts.map +1 -1
  11. package/dist/orchestration/channel-input-media.js +35 -11
  12. package/dist/orchestration/channel-input-media.js.map +1 -1
  13. package/dist/orchestration/channel-media-error.d.ts +11 -0
  14. package/dist/orchestration/channel-media-error.d.ts.map +1 -0
  15. package/dist/orchestration/channel-media-error.js +38 -0
  16. package/dist/orchestration/channel-media-error.js.map +1 -0
  17. package/dist/orchestration/channel-media.d.ts +1 -1
  18. package/dist/orchestration/channel-media.d.ts.map +1 -1
  19. package/dist/orchestration/channel-media.js +37 -7
  20. package/dist/orchestration/channel-media.js.map +1 -1
  21. package/dist/orchestration/conversation-intake.d.ts +1 -1
  22. package/dist/orchestration/conversation-intake.d.ts.map +1 -1
  23. package/dist/orchestration/conversation-intake.js +1 -1
  24. package/dist/orchestration/delivery.d.ts +3 -0
  25. package/dist/orchestration/delivery.d.ts.map +1 -1
  26. package/dist/orchestration/delivery.js +14 -5
  27. package/dist/orchestration/delivery.js.map +1 -1
  28. package/dist/orchestration/inference-errors.d.ts.map +1 -1
  29. package/dist/orchestration/inference-errors.js +58 -3
  30. package/dist/orchestration/inference-errors.js.map +1 -1
  31. package/dist/orchestration/process-turn.d.ts.map +1 -1
  32. package/dist/orchestration/process-turn.js +28 -5
  33. package/dist/orchestration/process-turn.js.map +1 -1
  34. package/dist/orchestration/runtime.d.ts +3 -1
  35. package/dist/orchestration/runtime.d.ts.map +1 -1
  36. package/dist/orchestration/runtime.js +136 -61
  37. package/dist/orchestration/runtime.js.map +1 -1
  38. package/dist/orchestration/store.d.ts +17 -0
  39. package/dist/orchestration/store.d.ts.map +1 -1
  40. package/dist/orchestration/store.js +59 -1
  41. package/dist/orchestration/store.js.map +1 -1
  42. package/dist/orchestration/task-questions.d.ts +23 -5
  43. package/dist/orchestration/task-questions.d.ts.map +1 -1
  44. package/dist/orchestration/task-questions.js +126 -54
  45. package/dist/orchestration/task-questions.js.map +1 -1
  46. package/dist/orchestration/tasks/service.d.ts +2 -0
  47. package/dist/orchestration/tasks/service.d.ts.map +1 -1
  48. package/dist/orchestration/tasks/service.js +4 -0
  49. package/dist/orchestration/tasks/service.js.map +1 -1
  50. package/dist/voice/session.d.ts.map +1 -1
  51. package/dist/voice/session.js +7 -1
  52. package/dist/voice/session.js.map +1 -1
  53. package/mcp/tools/discord/inbound.ts +1 -1
  54. package/mcp/tools/discord/receiver-server.ts +1 -1
  55. package/mcp/tools/discord/types.ts +1 -1
  56. package/mcp/tools/receiver-spool.test.ts +8 -2
  57. package/mcp/tools/receiver-spool.ts +198 -25
  58. package/mcp/tools/tasks/module.ts +1 -0
  59. package/mcp/tools/telegram/media-group.ts +3 -3
  60. package/mcp/tools/telegram/receiver-server.ts +1 -1
  61. package/mcp/types.ts +1 -1
  62. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/voice/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/voice/session.ts"],"names":[],"mappings":"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"}
@@ -49,7 +49,7 @@ export function createMessageHandler(
49
49
  ts: message.createdTimestamp,
50
50
  };
51
51
 
52
- const attachments = (msg: DiscordMessage, quoted=false) => (msg.attachments.values ? [...msg.attachments.values()] : [msg.attachments.first()].filter(Boolean)).slice(0,10).map(a=>({url:a!.url,name:a!.name,kind:a!.contentType?.startsWith('image/')?'image':a!.contentType?.startsWith('audio/')?'audio':'file',quoted}));
52
+ const attachments = (msg: DiscordMessage, quoted=false) => (msg.attachments.values ? [...msg.attachments.values()] : [msg.attachments.first()].filter(Boolean)).slice(0,10).map(a=>({url:a!.url,name:a!.name,size:a!.size,kind:a!.contentType?.startsWith('image/')?'image':a!.contentType?.startsWith('audio/')?'audio':'file',quoted}));
53
53
  inbound.attachments = attachments(message);
54
54
  if (message.reference?.messageId && (!message.reference.channelId || message.reference.channelId === message.channelId)) {
55
55
  inbound.replyToMessageId = message.reference.messageId;
@@ -32,7 +32,7 @@ async function postCallback(inbound: InboundMessage): Promise<void> {
32
32
  if (inbound.attachmentFileId) {
33
33
  meta['attachment_file_id'] = inbound.attachmentFileId;
34
34
  }
35
- if(inbound.attachments?.length)meta.attachments_json=JSON.stringify(inbound.attachments.map(a=>({ref:a.url,name:a.name,kind:a.kind,quoted:a.quoted})));
35
+ if(inbound.attachments?.length)meta.attachments_json=JSON.stringify(inbound.attachments.map(a=>({ref:a.url,name:a.name,kind:a.kind,quoted:a.quoted,size:a.size})));
36
36
  if(inbound.replyToMessageId)meta.replied_message_id=inbound.replyToMessageId;
37
37
  if(inbound.repliedText)meta.replied_text=inbound.repliedText;
38
38
  if(inbound.repliedSender)meta.replied_user=inbound.repliedSender;
@@ -111,7 +111,7 @@ export interface DiscordMessage {
111
111
  reference?: {messageId?:string;channelId?:string};
112
112
  fetchReference?(): Promise<DiscordMessage>;
113
113
  flags?: number | {has(bit:number):boolean};
114
- attachments: { first(): { url: string; contentType?: string | null; name?: string } | undefined; values?(): IterableIterator<{url:string;contentType?:string|null;name?:string}> };
114
+ attachments: { first(): { url: string; contentType?: string | null; name?: string; size?: number } | undefined; values?(): IterableIterator<{url:string;contentType?:string|null;name?:string;size?:number}> };
115
115
  client: { user: { id: string } | null };
116
116
  startThread(options: { name: string; autoArchiveDuration: number }): Promise<{ id: string }>;
117
117
  }
@@ -1,4 +1,4 @@
1
- import { test, expect } from 'bun:test';
1
+ import { test, expect, spyOn } from 'bun:test';
2
2
  import { mkdtempSync, readdirSync, rmSync, readFileSync } from 'node:fs';
3
3
  import { tmpdir } from 'node:os';
4
4
  import { join } from 'node:path';
@@ -6,6 +6,8 @@ import { ReceiverSpool } from './receiver-spool';
6
6
 
7
7
  test('receiver restart retains unacknowledged input and removes it only after gateway acceptance', async () => {
8
8
  const root = mkdtempSync(join(tmpdir(), 'receiver-spool-'));
9
+ let now = Date.now();
10
+ const clock = spyOn(Date, 'now').mockImplementation(() => now);
9
11
  let fail = true;
10
12
  const delivered: unknown[] = [];
11
13
  const request = (async (_url: string | URL | Request, options?: RequestInit) => {
@@ -22,7 +24,11 @@ test('receiver restart retains unacknowledged input and removes it only after ga
22
24
  spool.close(); fail = false;
23
25
  spool = new ReceiverSpool(root, 'http://fixture.invalid/channel', request);
24
26
  await new Promise(resolve => setTimeout(resolve, 10));
27
+ expect(delivered).toHaveLength(1);
28
+ expect(readdirSync(root).filter(file => file.endsWith('.json'))).toHaveLength(1);
29
+ now += 1000;
30
+ await spool.flush();
25
31
  expect(readdirSync(root)).toEqual([]);
26
32
  expect(delivered.at(-1)).toEqual(input);
27
- } finally { spool.close(); rmSync(root, { recursive: true, force: true }); }
33
+ } finally { clock.mockRestore(); spool.close(); rmSync(root, { recursive: true, force: true }); }
28
34
  });
@@ -1,55 +1,228 @@
1
1
  import { mediaGroupKey, mergeMediaGroup, type ChannelInput } from './telegram/media-group';
2
2
  import { createHash, randomUUID } from 'node:crypto';
3
- import { mkdirSync, readdirSync, openSync, closeSync, writeFileSync, fsyncSync, renameSync, readFileSync, unlinkSync, statSync } from 'node:fs';
3
+ import { mkdirSync, readdirSync, openSync, closeSync, writeFileSync, fsyncSync, renameSync, readFileSync, unlinkSync, statSync, existsSync } from 'node:fs';
4
4
  import { join } from 'node:path';
5
5
 
6
- /** Receiver-local handoff journal. Persist before returning to the platform
7
- * client; only remove after the gateway confirms its SQLite admission. */
6
+ type RetryState = { queuedAt: number; attempts: number; nextAttemptAt: number; recoveryBatch?: string; sealedMessageIds?: string[] };
7
+ type Entry = { file: string; payload: string; input: ChannelInput; modified: number; state: RetryState; albumMessageIds?: string[] };
8
+ const MAX_BACKOFF_MS = 5 * 60_000;
9
+ const STALE_STARTUP_AGE_MS = 5 * 60_000;
10
+
11
+ /** Persist raw provider payloads until SQLite admission. Retry state is separate
12
+ * so old journals remain readable and provider deduplication identities stay intact. */
8
13
  export class ReceiverSpool {
9
14
  private active = false;
15
+ private cursor = 0;
16
+ private lastQueuedAt = 0;
17
+ private reportedInvalidEntry = false;
10
18
  private readonly timer: ReturnType<typeof setInterval>;
11
19
  constructor(private readonly directory: string, private readonly callback: string, private readonly request: typeof fetch = fetch, private readonly mediaGroupWaitMs = 2000) {
12
20
  mkdirSync(directory, { recursive: true, mode: 0o700 });
21
+ this.pruneAlbumReceipts();
22
+ const snapshot = this.entries();
23
+ this.lastQueuedAt = Math.max(0, ...snapshot.map(entry => entry.state.queuedAt));
24
+ const batches = new Map<string, string>();
25
+ for (const entry of snapshot) {
26
+ if (entry.state.recoveryBatch) batches.set(this.conversation(entry.input), entry.state.recoveryBatch);
27
+ }
28
+ for (const entry of snapshot) {
29
+ const conversation = this.conversation(entry.input);
30
+ if (Date.now() - entry.state.queuedAt > STALE_STARTUP_AGE_MS && !batches.has(conversation)) batches.set(conversation, randomUUID());
31
+ }
32
+ // Quarantine the entire startup conversation, including its newer tail.
33
+ // Persist the batch before sending anything so retries/restarts share one notice.
34
+ for (const entry of snapshot) {
35
+ const batch = batches.get(this.conversation(entry.input));
36
+ if (batch) this.saveState(entry.file, { ...entry.state, recoveryBatch: batch });
37
+ }
13
38
  this.timer = setInterval(() => { void this.flush(); }, 1000); this.timer.unref();
14
39
  void this.flush();
15
40
  }
41
+ private conversation(input: ChannelInput): string {
42
+ const m = input?.meta ?? {};
43
+ return JSON.stringify([m.source ?? m.channel ?? '', m.account_id ?? '', m.chat_id ?? '', m.message_thread_id ?? m.thread_id ?? m.thread_ts ?? '']);
44
+ }
45
+ private atomicWrite(file: string, payload: string): void {
46
+ const temporary = join(this.directory, `${randomUUID()}.tmp`);
47
+ const descriptor = openSync(temporary, 'wx', 0o600);
48
+ try { writeFileSync(descriptor, payload); fsyncSync(descriptor); } finally { closeSync(descriptor); }
49
+ renameSync(temporary, join(this.directory, file));
50
+ this.syncDirectory();
51
+ }
52
+ private state(file: string, queuedAt: number): RetryState {
53
+ try {
54
+ const state = JSON.parse(readFileSync(join(this.directory, `${file}.retry`), 'utf8')) as RetryState;
55
+ const timestamp = (value: number) => Number.isFinite(value) && value >= 0 && value <= Number.MAX_SAFE_INTEGER;
56
+ if (!state || !timestamp(state.queuedAt) || !timestamp(state.nextAttemptAt)
57
+ || !Number.isSafeInteger(state.attempts) || state.attempts < 0
58
+ || (state.sealedMessageIds !== undefined && (!Array.isArray(state.sealedMessageIds) || state.sealedMessageIds.length > 10 || state.sealedMessageIds.some(id => typeof id !== 'string' || !id)))
59
+ || (state.recoveryBatch !== undefined && (typeof state.recoveryBatch !== 'string' || !/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/.test(state.recoveryBatch)))) {
60
+ throw new Error('Invalid ingress retry state');
61
+ }
62
+ return state;
63
+ }
64
+ catch (error) {
65
+ if ((error as NodeJS.ErrnoException).code !== 'ENOENT') throw error;
66
+ return { queuedAt, attempts: 0, nextAttemptAt: 0 };
67
+ }
68
+ }
69
+ private saveState(file: string, state: RetryState): void { this.atomicWrite(`${file}.retry`, JSON.stringify(state)); }
70
+ private entries(): Entry[] {
71
+ const entries: Entry[] = [];
72
+ const blocked = new Set<string>();
73
+ for (const file of readdirSync(this.directory).filter(file => /^[a-f0-9]{64}\.json$/.test(file))) {
74
+ let input: ChannelInput | undefined;
75
+ try {
76
+ const location = join(this.directory, file);
77
+ const modified = statSync(location).mtimeMs;
78
+ const payload = readFileSync(location, 'utf8');
79
+ input = JSON.parse(payload) as ChannelInput;
80
+ if (!input || typeof input !== 'object' || typeof input.content !== 'string'
81
+ || !input.meta || typeof input.meta !== 'object' || Array.isArray(input.meta)
82
+ || Object.values(input.meta).some(value => typeof value !== 'string')) {
83
+ input = undefined;
84
+ throw new Error('Invalid ingress payload');
85
+ }
86
+ // Validate nested album metadata inside the per-record boundary, so a
87
+ // damaged album cannot abort delivery for unrelated conversations.
88
+ let albumMessageIds: string[] | undefined;
89
+ if (mediaGroupKey(input)) {
90
+ const ids: unknown = JSON.parse(input.meta.message_ids_json);
91
+ if (!Array.isArray(ids) || !ids.length || ids.length > 10 || ids.some(id=>typeof id !== 'string' || !id)) {
92
+ throw new Error('Invalid ingress album members');
93
+ }
94
+ albumMessageIds = ids;
95
+ }
96
+ entries.push({ file, modified, payload, input, state: this.state(file, modified), albumMessageIds });
97
+ } catch {
98
+ // An identifiable conversation must not skip its damaged head. Other
99
+ // conversations remain usable; preserve all bytes for operator recovery.
100
+ if (input) blocked.add(this.conversation(input));
101
+ if (!this.reportedInvalidEntry) {
102
+ this.reportedInvalidEntry = true;
103
+ process.stderr.write('Receiver spool retained an unreadable or invalid entry; inspect the local journal.\n');
104
+ }
105
+ }
106
+ }
107
+ return entries.filter(entry => !blocked.has(this.conversation(entry.input)))
108
+ .sort((a, b) => a.state.queuedAt - b.state.queuedAt || a.file.localeCompare(b.file));
109
+ }
110
+
16
111
  enqueue(input: unknown): void {
17
- const group=mediaGroupKey(input as ChannelInput);
18
- if(group){
19
- let prior:ChannelInput|undefined;
20
- try{prior=JSON.parse(readFileSync(join(this.directory,`${group}.json`),'utf8'));}catch{}
21
- input=mergeMediaGroup(prior,input as ChannelInput);
112
+ const group = mediaGroupKey(input as ChannelInput);
113
+ let albumKey = group;
114
+ if (group) {
115
+ const messageId = (input as ChannelInput).meta.message_id;
116
+ const initial = this.state(`${group}.json`, Date.now());
117
+ if (initial.sealedMessageIds) {
118
+ if (initial.sealedMessageIds.includes(messageId)) return;
119
+ // An attempted body is immutable: late members use their own stable
120
+ // first-message identity, never an expanded body under an existing ID.
121
+ albumKey = createHash('sha256').update(JSON.stringify([group, messageId])).digest('hex');
122
+ }
123
+ const target = `${albumKey}.json`;
124
+ const state = this.state(target, Date.now());
125
+ if (state.sealedMessageIds?.includes(messageId)) return;
126
+ let prior: ChannelInput | undefined;
127
+ try { prior = JSON.parse(readFileSync(join(this.directory, target), 'utf8')); }
128
+ catch (error) { if ((error as NodeJS.ErrnoException).code !== 'ENOENT') throw error; }
129
+ input = mergeMediaGroup(prior, input as ChannelInput);
22
130
  }
23
131
  const payload = JSON.stringify(input);
24
132
  if (Buffer.byteLength(payload) > 131072) throw new Error('Ingress payload too large');
25
- if (readdirSync(this.directory).filter(file => file.endsWith('.json')).length >= 1000) throw new Error('Ingress spool full');
26
- const key = group ?? createHash('sha256').update(payload).digest('hex');
27
- const temporary = join(this.directory, `${key}.${randomUUID()}.tmp`);
28
- const descriptor = openSync(temporary, 'wx', 0o600);
29
- try { writeFileSync(descriptor, payload); fsyncSync(descriptor); } finally { closeSync(descriptor); }
30
- renameSync(temporary, join(this.directory, `${key}.json`));
31
- this.syncDirectory();
133
+ const key = albumKey ?? createHash('sha256').update(payload).digest('hex');
134
+ const file = `${key}.json`;
135
+ const location = join(this.directory, file);
136
+ const present = existsSync(location);
137
+ if (!present && readdirSync(this.directory).filter(file => file.endsWith('.json')).length >= 1000) throw new Error('Ingress spool full');
138
+ // Preserve admission order even when an album's quiet window is reset.
139
+ const queuedAt = present ? statSync(location).mtimeMs : Math.max(Date.now(), this.lastQueuedAt + 0.01);
140
+ const state = this.state(file, queuedAt);
141
+ this.lastQueuedAt = Math.max(this.lastQueuedAt, state.queuedAt);
142
+ this.saveState(file, state);
143
+ this.atomicWrite(file, payload);
32
144
  void this.flush();
33
145
  }
146
+ private pruneAlbumReceipts(): void {
147
+ const receipts = readdirSync(this.directory).filter(file => /^[a-f0-9]{64}\.json\.retry$/.test(file)
148
+ && !existsSync(join(this.directory, file.slice(0, -6))))
149
+ .map(file => ({ file, modified: statSync(join(this.directory, file)).mtimeMs }))
150
+ .sort((a, b) => b.modified - a.modified);
151
+ let changed = false;
152
+ for (const [index, receipt] of receipts.entries()) {
153
+ if (index < 1000 && Date.now() - receipt.modified < 24 * 60 * 60_000) continue;
154
+ // Do not remove an unknown/corrupt sidecar as part of receipt cleanup.
155
+ try {
156
+ if (!this.state(receipt.file.slice(0, -6), receipt.modified).sealedMessageIds) continue;
157
+ unlinkSync(join(this.directory, receipt.file)); changed = true;
158
+ } catch { /* Preserve unrecognized bytes for operator recovery. */ }
159
+ }
160
+ if (changed) this.syncDirectory();
161
+ }
34
162
  private syncDirectory(): void {
35
163
  const descriptor = openSync(this.directory, 'r');
36
164
  try { fsyncSync(descriptor); } finally { closeSync(descriptor); }
37
165
  }
166
+ private defer(entry: Entry, response?: Response): void {
167
+ const attempts = Math.min(Number.MAX_SAFE_INTEGER, entry.state.attempts + 1);
168
+ const exponential = Math.min(MAX_BACKOFF_MS, 1000 * 2 ** Math.min(attempts - 1, 9));
169
+ const header = response?.headers.get('retry-after');
170
+ const retryAfter = header ? (/^\d+(\.\d+)?$/.test(header) ? Number(header) * 1000 : Date.parse(header) - Date.now()) : 0;
171
+ // Bound our exponential policy; honor a longer server-requested pause.
172
+ const delay = Math.max(exponential, Number.isFinite(retryAfter) ? Math.min(24 * 60 * 60_000, retryAfter) : 0);
173
+ this.saveState(entry.file, { ...entry.state, attempts, nextAttemptAt: Date.now() + delay });
174
+ }
38
175
  async flush(): Promise<void> {
39
176
  if (this.active) return;
40
177
  this.active = true;
41
178
  try {
42
- const files = readdirSync(this.directory).filter(file => /^[a-f0-9]{64}\.json$/.test(file)).map(file => ({ file, created: statSync(join(this.directory, file)).mtimeMs })).sort((a, b) => a.created - b.created);
43
- for (const { file } of files.slice(0, 100)) {
44
- const location = join(this.directory, file);
45
- const payload=readFileSync(location,'utf8');
46
- const input=JSON.parse(payload) as ChannelInput;
47
- if(mediaGroupKey(input)&&Date.now()-statSync(location).mtimeMs<this.mediaGroupWaitMs)continue;
48
- const response = await this.request(this.callback, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: payload, signal: AbortSignal.timeout(10000) });
49
- if (!response.ok) break;
50
- if(readFileSync(location,'utf8')===payload){unlinkSync(location); this.syncDirectory();}
179
+ const conversations = new Map<string, Entry[]>();
180
+ for (const entry of this.entries()) {
181
+ const conversation = this.conversation(entry.input);
182
+ const entries = conversations.get(conversation) ?? [];
183
+ entries.push(entry);
184
+ conversations.set(conversation, entries);
185
+ }
186
+ const groups = [...conversations.values()];
187
+ // Rotate conversation heads, then drain successful conversations round-robin.
188
+ // Failed/waiting heads block only their own ordered tail.
189
+ const start = this.cursor % Math.max(groups.length, 1);
190
+ this.cursor = start + Math.min(100, groups.length);
191
+ const pending = [...groups.slice(start), ...groups.slice(0, start)];
192
+ let attempts = 0;
193
+ while (pending.length && attempts < 100) {
194
+ const group = pending.shift()!;
195
+ const entry = group.shift()!;
196
+ if (entry.state.nextAttemptAt > Date.now()) continue;
197
+ // Another callback may have yielded while this unsealed album grew.
198
+ // Refresh its full body and quiet window next pass before sealing it.
199
+ if (readFileSync(join(this.directory, entry.file), 'utf8') !== entry.payload) continue;
200
+ if (mediaGroupKey(entry.input) && Date.now() - entry.modified < this.mediaGroupWaitMs) continue;
201
+ const body = entry.state.recoveryBatch ? JSON.stringify({ ...entry.input, meta: { ...entry.input.meta, ingress_recovery_batch: entry.state.recoveryBatch } }) : entry.payload;
202
+ if (entry.albumMessageIds && !entry.state.sealedMessageIds) {
203
+ entry.state = { ...entry.state, sealedMessageIds: entry.albumMessageIds };
204
+ this.saveState(entry.file, entry.state);
205
+ }
206
+ attempts++;
207
+ let response: Response;
208
+ try {
209
+ response = await this.request(this.callback, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body, signal: AbortSignal.timeout(10000) });
210
+ } catch { this.defer(entry); continue; }
211
+ if (!response.ok) { this.defer(entry, response); continue; }
212
+ const location = join(this.directory, entry.file);
213
+ if (readFileSync(location, 'utf8') === entry.payload) {
214
+ unlinkSync(location);
215
+ const retry = join(this.directory, `${entry.file}.retry`);
216
+ // Pending retries never expire. Acknowledged album receipts retain
217
+ // member IDs for bounded platform-redelivery deduplication.
218
+ if (entry.state.sealedMessageIds) this.saveState(entry.file, { ...entry.state, attempts: 0, nextAttemptAt: 0 });
219
+ else if (existsSync(retry)) unlinkSync(retry);
220
+ this.syncDirectory();
221
+ if (entry.state.sealedMessageIds) this.pruneAlbumReceipts();
222
+ if (group.length) pending.push(group);
223
+ }
51
224
  }
52
- } catch { /* persisted message is retried on next tick or process restart */ }
225
+ } catch { /* Keep persisted input on filesystem failure. */ }
53
226
  finally { this.active = false; }
54
227
  }
55
228
  close(): void { clearInterval(this.timer); }
@@ -14,6 +14,7 @@ export const AGENT_TASK_TOOLS: McpToolDefinition[] = [
14
14
  { name: 'task_status', description: 'Read the task index in this conversation without waiting. Pass task_id to retrieve the complete stored result and evidence before discussing an earlier task. An index entry is not a partial worker report.', inputSchema: schema({ task_id: text }, []) },
15
15
  { name: 'task_cancel', description: 'Request cancellation, including needs_reconciliation cleanup. cancel_requested is not proof of termination. Existing files are retained. Set replaced_by_task_id only for a known replacement task, never infer from similar titles.', inputSchema: schema({ task_id: text, replaced_by_task_id: text }, ['task_id']) },
16
16
  { name: 'task_update', description: 'Accept a revised task instruction. applied_revision changes only when the worker accepts it.', inputSchema: schema({ task_id: text, expected_revision: { type: 'integer', minimum: 1 }, instruction: text, mode: { type: 'string', enum: ['when_ready', 'interrupt_and_resume'] } }, ['task_id', 'expected_revision', 'instruction', 'mode']) },
17
+ { name: 'task_question', description: 'Manage pending questions without answering or resuming work. Ask stages one natural separate message after your reply; discuss marks ongoing consultation; defer/mute/resume persist the user reminder preference.', inputSchema: schema({ action: { type: 'string', enum: ['ask','discuss','defer','mute','resume'] }, question_ids: { type: 'array', items: text, minItems: 1, maxItems: 20 }, text, delay_ms: { type: 'integer', minimum: 60000, maximum: 2592000000 } }, ['action', 'question_ids']) },
17
18
  { name: 'task_answer', description: 'Answer the matching pending question on a task.', inputSchema: schema({ task_id: text, question_id: text, answer: text }, ['task_id', 'question_id', 'answer']) },
18
19
  ];
19
20
  export const WORKER_REPORT_TOOLS: McpToolDefinition[] = [
@@ -9,12 +9,12 @@ export function mergeMediaGroup(prior:ChannelInput|undefined,input:ChannelInput)
9
9
  const ids:string[]=prior?JSON.parse(prior.meta.message_ids_json):[];
10
10
  if(ids.includes(input.meta.message_id))return prior!;
11
11
  if(ids.length>=10)throw Error('Telegram media group exceeds 10 items');
12
- const parts:Array<{id:string;caption:string;ref?:string;path?:string;name?:string}> = prior?JSON.parse(prior.meta.media_group_parts_json):[];
13
- parts.push({id:input.meta.message_id,caption:input.meta.media_caption??'',ref:input.meta.attachment_file_id,path:input.meta.image_path,name:input.meta.attachment_name});
12
+ const parts:Array<{id:string;caption:string;ref?:string;path?:string;name?:string;size?:number}> = prior?JSON.parse(prior.meta.media_group_parts_json):[];
13
+ parts.push({id:input.meta.message_id,caption:input.meta.media_caption??'',ref:input.meta.attachment_file_id,path:input.meta.image_path,name:input.meta.attachment_name,size:input.meta.attachment_size===undefined?undefined:Number(input.meta.attachment_size)});
14
14
  parts.sort((a,b)=>Number(a.id)-Number(b.id));
15
15
  const meta:Record<string,string>={...(prior?.meta??input.meta),media_group_id:input.meta.media_group_id,message_id:parts[0]!.id,
16
16
  message_ids_json:JSON.stringify(parts.map(p=>p.id)),media_group_parts_json:JSON.stringify(parts),
17
- attachments_json:JSON.stringify(parts.map(({ref,path,name})=>({ref,path,name})))};
17
+ attachments_json:JSON.stringify(parts.map(({ref,path,name,size})=>({ref,path,name,size})))};
18
18
  // Album files must not turn a mixed album into a single-file voice-note turn.
19
19
  delete meta.attachment_file_id;delete meta.image_path;delete meta.attachment_kind;
20
20
  return {content:parts.map(p=>p.caption).filter(Boolean).join('\n\n')||'[Media album attached]',meta};
@@ -1086,7 +1086,7 @@ async function handleInbound(
1086
1086
  replied_user: replyMsg.from?.username ?? String(replyMsg.from?.id ?? ''),
1087
1087
  ...((replyMsg.text || replyMsg.caption) ? { replied_text: replyMsg.text || replyMsg.caption } : {}),
1088
1088
  ...(repliedImagePath ? { replied_image_path: repliedImagePath } : {}),
1089
- ...(orchestrationSpool && replyMsg.photo ? {replied_attachment_file_id:replyMsg.photo[replyMsg.photo.length-1]!.file_id} : {}),
1089
+ ...(orchestrationSpool && replyMsg.photo ? {replied_attachment_file_id:replyMsg.photo[replyMsg.photo.length-1]!.file_id,...(replyMsg.photo[replyMsg.photo.length-1]!.file_size!==undefined?{replied_attachment_size:String(replyMsg.photo[replyMsg.photo.length-1]!.file_size)}:{})} : {}),
1090
1090
  ...(repliedAttachment ? {
1091
1091
  replied_attachment_kind: repliedAttachment.kind,
1092
1092
  replied_attachment_file_id: repliedAttachment.file_id,
package/mcp/types.ts CHANGED
@@ -16,7 +16,7 @@ export type InboundMessage = {
16
16
  replyToMessageId?: string;
17
17
  repliedText?: string;
18
18
  repliedSender?: string;
19
- attachments?: Array<{url:string;name?:string;kind?:string;quoted?:boolean}>;
19
+ attachments?: Array<{url:string;name?:string;kind?:string;quoted?:boolean;size?:number}>;
20
20
  threadId?: string;
21
21
  attachmentFileId?: string;
22
22
  attachmentKind?: 'voice' | 'file';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0xmaxma/claude-gateway",
3
- "version": "2.0.2",
3
+ "version": "2.0.4",
4
4
  "description": "Multi-agent gateway for Claude",
5
5
  "repository": {
6
6
  "type": "git",