@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.
- package/README.md +1 -0
- package/dist/agent/runner.d.ts.map +1 -1
- package/dist/agent/runner.js +64 -17
- package/dist/agent/runner.js.map +1 -1
- package/dist/orchestration/bridge.d.ts +3 -1
- package/dist/orchestration/bridge.d.ts.map +1 -1
- package/dist/orchestration/bridge.js +66 -49
- package/dist/orchestration/bridge.js.map +1 -1
- package/dist/orchestration/channel-input-media.d.ts +6 -0
- package/dist/orchestration/channel-input-media.d.ts.map +1 -1
- package/dist/orchestration/channel-input-media.js +35 -11
- package/dist/orchestration/channel-input-media.js.map +1 -1
- package/dist/orchestration/channel-media-error.d.ts +11 -0
- package/dist/orchestration/channel-media-error.d.ts.map +1 -0
- package/dist/orchestration/channel-media-error.js +38 -0
- package/dist/orchestration/channel-media-error.js.map +1 -0
- package/dist/orchestration/channel-media.d.ts +1 -1
- package/dist/orchestration/channel-media.d.ts.map +1 -1
- package/dist/orchestration/channel-media.js +37 -7
- package/dist/orchestration/channel-media.js.map +1 -1
- package/dist/orchestration/conversation-intake.d.ts +1 -1
- package/dist/orchestration/conversation-intake.d.ts.map +1 -1
- package/dist/orchestration/conversation-intake.js +1 -1
- package/dist/orchestration/delivery.d.ts +3 -0
- package/dist/orchestration/delivery.d.ts.map +1 -1
- package/dist/orchestration/delivery.js +14 -5
- package/dist/orchestration/delivery.js.map +1 -1
- package/dist/orchestration/inference-errors.d.ts.map +1 -1
- package/dist/orchestration/inference-errors.js +58 -3
- package/dist/orchestration/inference-errors.js.map +1 -1
- package/dist/orchestration/process-turn.d.ts.map +1 -1
- package/dist/orchestration/process-turn.js +28 -5
- package/dist/orchestration/process-turn.js.map +1 -1
- package/dist/orchestration/runtime.d.ts +3 -1
- package/dist/orchestration/runtime.d.ts.map +1 -1
- package/dist/orchestration/runtime.js +136 -61
- package/dist/orchestration/runtime.js.map +1 -1
- package/dist/orchestration/store.d.ts +17 -0
- package/dist/orchestration/store.d.ts.map +1 -1
- package/dist/orchestration/store.js +59 -1
- package/dist/orchestration/store.js.map +1 -1
- package/dist/orchestration/task-questions.d.ts +23 -5
- package/dist/orchestration/task-questions.d.ts.map +1 -1
- package/dist/orchestration/task-questions.js +126 -54
- package/dist/orchestration/task-questions.js.map +1 -1
- package/dist/orchestration/tasks/service.d.ts +2 -0
- package/dist/orchestration/tasks/service.d.ts.map +1 -1
- package/dist/orchestration/tasks/service.js +4 -0
- package/dist/orchestration/tasks/service.js.map +1 -1
- package/dist/voice/session.d.ts.map +1 -1
- package/dist/voice/session.js +7 -1
- package/dist/voice/session.js.map +1 -1
- package/mcp/tools/discord/inbound.ts +1 -1
- package/mcp/tools/discord/receiver-server.ts +1 -1
- package/mcp/tools/discord/types.ts +1 -1
- package/mcp/tools/receiver-spool.test.ts +8 -2
- package/mcp/tools/receiver-spool.ts +198 -25
- package/mcp/tools/tasks/module.ts +1 -0
- package/mcp/tools/telegram/media-group.ts +3 -3
- package/mcp/tools/telegram/receiver-server.ts +1 -1
- package/mcp/types.ts +1 -1
- 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
|
-
|
|
7
|
-
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
|
43
|
-
for (const
|
|
44
|
-
const
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
|
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';
|