remote-copilot-mcp 2.4.0 → 2.5.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/dist/index.js +194 -3
- package/dist/index.js.map +1 -1
- package/dist/scheduler.d.ts +58 -0
- package/dist/scheduler.d.ts.map +1 -0
- package/dist/scheduler.js +189 -0
- package/dist/scheduler.js.map +1 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -36,6 +36,7 @@ import { peekThreadMessages, readThreadMessages, startDispatcher } from "./dispa
|
|
|
36
36
|
import { analyzeVoiceEmotion, textToSpeech, transcribeAudio, TTS_VOICES } from "./openai.js";
|
|
37
37
|
import { TelegramClient } from "./telegram.js";
|
|
38
38
|
import { describeADV, errorMessage, errorResult, IMAGE_EXTENSIONS, OPENAI_TTS_MAX_CHARS } from "./utils.js";
|
|
39
|
+
import { addSchedule, checkDueTasks, generateTaskId, listSchedules, purgeSchedules, removeSchedule } from "./scheduler.js";
|
|
39
40
|
const esmRequire = createRequire(import.meta.url);
|
|
40
41
|
const { version: PKG_VERSION } = esmRequire("../package.json");
|
|
41
42
|
const telegramifyMarkdown = esmRequire("telegramify-markdown");
|
|
@@ -212,6 +213,9 @@ function resolveThreadId(args) {
|
|
|
212
213
|
// the agent hasn't silently died.
|
|
213
214
|
let lastKeepAliveSentAt = Date.now();
|
|
214
215
|
const KEEP_ALIVE_INTERVAL_MS = 30 * 60 * 1000; // 30 minutes
|
|
216
|
+
// Timestamp of the last message received from the operator.
|
|
217
|
+
// Used by the scheduler to detect idle periods.
|
|
218
|
+
let lastOperatorMessageAt = Date.now();
|
|
215
219
|
// ---------------------------------------------------------------------------
|
|
216
220
|
// MCP Server
|
|
217
221
|
// ---------------------------------------------------------------------------
|
|
@@ -351,6 +355,53 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
351
355
|
required: ["text"],
|
|
352
356
|
},
|
|
353
357
|
},
|
|
358
|
+
{
|
|
359
|
+
name: "schedule_wake_up",
|
|
360
|
+
description: "Schedule a wake-up task that will inject a prompt into your session at a specific time or after operator inactivity. " +
|
|
361
|
+
"Use this to become proactive — run tests, check CI, review code — without waiting for the operator. " +
|
|
362
|
+
"Three modes: (1) 'runAt' for a one-shot at a specific ISO 8601 time, " +
|
|
363
|
+
"(2) 'cron' for recurring tasks (5-field cron: minute hour day month weekday), " +
|
|
364
|
+
"(3) 'afterIdleMinutes' to fire after N minutes of operator silence. " +
|
|
365
|
+
"Use 'action: list' to see all scheduled tasks, or 'action: remove' with a taskId to cancel one.",
|
|
366
|
+
inputSchema: {
|
|
367
|
+
type: "object",
|
|
368
|
+
properties: {
|
|
369
|
+
action: {
|
|
370
|
+
type: "string",
|
|
371
|
+
description: "Action to perform: 'add' (default), 'list', or 'remove'.",
|
|
372
|
+
enum: ["add", "list", "remove"],
|
|
373
|
+
},
|
|
374
|
+
threadId: {
|
|
375
|
+
type: "number",
|
|
376
|
+
description: "Thread ID for the session (optional if already set).",
|
|
377
|
+
},
|
|
378
|
+
label: {
|
|
379
|
+
type: "string",
|
|
380
|
+
description: "Short human-readable label for the task (e.g. 'morning CI check').",
|
|
381
|
+
},
|
|
382
|
+
prompt: {
|
|
383
|
+
type: "string",
|
|
384
|
+
description: "The prompt to inject when the task fires. Be specific about what to do.",
|
|
385
|
+
},
|
|
386
|
+
runAt: {
|
|
387
|
+
type: "string",
|
|
388
|
+
description: "ISO 8601 timestamp for one-shot execution (e.g. '2026-03-15T09:00:00Z').",
|
|
389
|
+
},
|
|
390
|
+
cron: {
|
|
391
|
+
type: "string",
|
|
392
|
+
description: "5-field cron expression for recurring tasks (e.g. '0 9 * * *' = every day at 9am).",
|
|
393
|
+
},
|
|
394
|
+
afterIdleMinutes: {
|
|
395
|
+
type: "number",
|
|
396
|
+
description: "Fire after this many minutes of operator silence (e.g. 60).",
|
|
397
|
+
},
|
|
398
|
+
taskId: {
|
|
399
|
+
type: "string",
|
|
400
|
+
description: "Task ID to remove (for action: 'remove').",
|
|
401
|
+
},
|
|
402
|
+
},
|
|
403
|
+
},
|
|
404
|
+
},
|
|
354
405
|
],
|
|
355
406
|
}));
|
|
356
407
|
// ── Tool implementations ────────────────────────────────────────────────────
|
|
@@ -361,6 +412,13 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
361
412
|
* VS Code restart by passing it to start_session.
|
|
362
413
|
*/
|
|
363
414
|
function getReminders(threadId) {
|
|
415
|
+
const now = new Date();
|
|
416
|
+
const uptimeMin = Math.round((Date.now() - sessionStartedAt) / 60000);
|
|
417
|
+
const timeStr = now.toLocaleString("en-GB", {
|
|
418
|
+
day: "2-digit", month: "short", year: "numeric",
|
|
419
|
+
hour: "2-digit", minute: "2-digit", hour12: false,
|
|
420
|
+
timeZoneName: "short",
|
|
421
|
+
});
|
|
364
422
|
const threadHint = threadId !== undefined
|
|
365
423
|
? `\n- Active Telegram thread ID: **${threadId}** — if this session is restarted, call start_session with threadId=${threadId} to resume this topic.`
|
|
366
424
|
: "";
|
|
@@ -369,7 +427,8 @@ function getReminders(threadId) {
|
|
|
369
427
|
"\n2. **Subagents**: Use subagents to execute each item of your todo list, but YOU own the plan and all decisions. Spin up parallel subagents if the work can be done concurrently." +
|
|
370
428
|
"\n3. **Reporting**: Call `report_progress` after completing EACH todo item. The operator is remote and CANNOT see your work unless you explicitly report it. Silence = failure." +
|
|
371
429
|
"\n4. **Never stop**: When all work is done, call `remote_copilot_wait_for_instructions` immediately. Never summarize or stop." +
|
|
372
|
-
threadHint
|
|
430
|
+
threadHint +
|
|
431
|
+
`\n- Current time: ${timeStr} | Session uptime: ${uptimeMin}m`);
|
|
373
432
|
}
|
|
374
433
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
375
434
|
const { name, arguments: args } = request.params;
|
|
@@ -431,7 +490,9 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
431
490
|
const isThreadGone = /thread not found|topic.*(closed|deleted|not found)/i.test(errMsg);
|
|
432
491
|
if (isThreadGone) {
|
|
433
492
|
process.stderr.write(`[start_session] Cached thread ${currentThreadId} is gone (${errMsg}). Creating new topic.\n`);
|
|
434
|
-
// Drop the stale mapping.
|
|
493
|
+
// Drop the stale mapping and purge any scheduled tasks.
|
|
494
|
+
if (currentThreadId !== undefined)
|
|
495
|
+
purgeSchedules(currentThreadId);
|
|
435
496
|
if (customName)
|
|
436
497
|
removeSession(TELEGRAM_CHAT_ID, customName);
|
|
437
498
|
resolvedPreexisting = false;
|
|
@@ -498,9 +559,12 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
498
559
|
// Poll the dispatcher's per-thread file instead of calling getUpdates
|
|
499
560
|
// directly. This avoids 409 conflicts between concurrent instances.
|
|
500
561
|
const POLL_INTERVAL_MS = 2000;
|
|
562
|
+
let lastScheduleCheck = 0;
|
|
501
563
|
while (Date.now() < deadline) {
|
|
502
564
|
const stored = readThreadMessages(effectiveThreadId);
|
|
503
565
|
if (stored.length > 0) {
|
|
566
|
+
// Update the operator activity timestamp for idle detection.
|
|
567
|
+
lastOperatorMessageAt = Date.now();
|
|
504
568
|
// Clear only the consumed IDs from the previewed set (scoped clear).
|
|
505
569
|
// This is safe because Node.js is single-threaded — no report_progress
|
|
506
570
|
// call can interleave between readThreadMessages and this cleanup.
|
|
@@ -670,11 +734,46 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
670
734
|
],
|
|
671
735
|
};
|
|
672
736
|
}
|
|
737
|
+
// Check scheduled tasks every ~60s during idle polling.
|
|
738
|
+
if (effectiveThreadId !== undefined && Date.now() - lastScheduleCheck >= 60_000) {
|
|
739
|
+
lastScheduleCheck = Date.now();
|
|
740
|
+
const dueTask = checkDueTasks(effectiveThreadId, lastOperatorMessageAt, false);
|
|
741
|
+
if (dueTask) {
|
|
742
|
+
return {
|
|
743
|
+
content: [
|
|
744
|
+
{
|
|
745
|
+
type: "text",
|
|
746
|
+
text: `⏰ **Scheduled task fired: "${dueTask.task.label}"**\n\n` +
|
|
747
|
+
`This task was scheduled by you. Execute it now using subagents, then report progress and continue waiting.\n\n` +
|
|
748
|
+
`Task prompt: ${dueTask.prompt}` +
|
|
749
|
+
getReminders(effectiveThreadId),
|
|
750
|
+
},
|
|
751
|
+
],
|
|
752
|
+
};
|
|
753
|
+
}
|
|
754
|
+
}
|
|
673
755
|
// No messages yet — sleep briefly and check again.
|
|
674
756
|
await new Promise((r) => setTimeout(r, POLL_INTERVAL_MS));
|
|
675
757
|
}
|
|
676
758
|
// Timeout elapsed with no actionable message.
|
|
677
759
|
const now = new Date().toISOString();
|
|
760
|
+
// Check for scheduled wake-up tasks.
|
|
761
|
+
if (effectiveThreadId !== undefined) {
|
|
762
|
+
const dueTask = checkDueTasks(effectiveThreadId, lastOperatorMessageAt, false);
|
|
763
|
+
if (dueTask) {
|
|
764
|
+
return {
|
|
765
|
+
content: [
|
|
766
|
+
{
|
|
767
|
+
type: "text",
|
|
768
|
+
text: `⏰ **Scheduled task fired: "${dueTask.task.label}"**\n\n` +
|
|
769
|
+
`This task was scheduled by you. Execute it now using subagents, then report progress and continue waiting.\n\n` +
|
|
770
|
+
`Task prompt: ${dueTask.prompt}` +
|
|
771
|
+
getReminders(effectiveThreadId),
|
|
772
|
+
},
|
|
773
|
+
],
|
|
774
|
+
};
|
|
775
|
+
}
|
|
776
|
+
}
|
|
678
777
|
// Keep-alive ping: send a periodic heartbeat to Telegram so the operator
|
|
679
778
|
// knows the session is still alive even with no activity.
|
|
680
779
|
let keepAliveSent = false;
|
|
@@ -692,16 +791,20 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
692
791
|
// Non-fatal.
|
|
693
792
|
}
|
|
694
793
|
}
|
|
794
|
+
const idleMinutes = Math.round((Date.now() - lastOperatorMessageAt) / 60000);
|
|
695
795
|
return {
|
|
696
796
|
content: [
|
|
697
797
|
{
|
|
698
798
|
type: "text",
|
|
699
|
-
text: `[Poll #${callNumber} — timeout at ${now} — elapsed ${WAIT_TIMEOUT_MINUTES}m — session uptime ${Math.round((Date.now() - sessionStartedAt) / 60000)}m]` +
|
|
799
|
+
text: `[Poll #${callNumber} — timeout at ${now} — elapsed ${WAIT_TIMEOUT_MINUTES}m — session uptime ${Math.round((Date.now() - sessionStartedAt) / 60000)}m — operator idle ${idleMinutes}m]` +
|
|
700
800
|
(keepAliveSent ? ` Keep-alive ping sent.` : "") +
|
|
701
801
|
` No new instructions received. ` +
|
|
702
802
|
`YOU MUST call remote_copilot_wait_for_instructions again RIGHT NOW to continue listening. ` +
|
|
703
803
|
`Do NOT summarize, stop, or say the session is idle. ` +
|
|
704
804
|
`Just call the tool again immediately.` +
|
|
805
|
+
(idleMinutes >= 60
|
|
806
|
+
? `\nYou have an opportunity to schedule a wake-up time for yourself and do something useful (or do whatever you want). Use schedule_wake_up to set a task.`
|
|
807
|
+
: "") +
|
|
705
808
|
getReminders(effectiveThreadId),
|
|
706
809
|
},
|
|
707
810
|
],
|
|
@@ -897,6 +1000,94 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
897
1000
|
return errorResult(`Error: Failed to send voice message: ${errorMessage(err)}`);
|
|
898
1001
|
}
|
|
899
1002
|
}
|
|
1003
|
+
// ── schedule_wake_up ────────────────────────────────────────────────────
|
|
1004
|
+
if (name === "schedule_wake_up") {
|
|
1005
|
+
const typedArgs = (args ?? {});
|
|
1006
|
+
const effectiveThreadId = resolveThreadId(typedArgs);
|
|
1007
|
+
if (effectiveThreadId === undefined) {
|
|
1008
|
+
return errorResult("Error: No active session. Call start_session first.");
|
|
1009
|
+
}
|
|
1010
|
+
const action = typeof typedArgs.action === "string" ? typedArgs.action : "add";
|
|
1011
|
+
// --- List ---
|
|
1012
|
+
if (action === "list") {
|
|
1013
|
+
const tasks = listSchedules(effectiveThreadId);
|
|
1014
|
+
if (tasks.length === 0) {
|
|
1015
|
+
return {
|
|
1016
|
+
content: [{
|
|
1017
|
+
type: "text",
|
|
1018
|
+
text: "No scheduled tasks for this thread." + getReminders(effectiveThreadId),
|
|
1019
|
+
}],
|
|
1020
|
+
};
|
|
1021
|
+
}
|
|
1022
|
+
const lines = tasks.map(t => {
|
|
1023
|
+
const trigger = t.cron ? `cron: ${t.cron}` : t.runAt ? `at: ${t.runAt}` : `idle: ${t.afterIdleMinutes}min`;
|
|
1024
|
+
const lastFired = t.lastFiredAt ? ` (last: ${t.lastFiredAt})` : "";
|
|
1025
|
+
return `- **${t.label}** [${t.id}] — ${trigger}${lastFired}\n Prompt: ${t.prompt.slice(0, 100)}${t.prompt.length > 100 ? "…" : ""}`;
|
|
1026
|
+
});
|
|
1027
|
+
return {
|
|
1028
|
+
content: [{
|
|
1029
|
+
type: "text",
|
|
1030
|
+
text: `**Scheduled tasks (${tasks.length}):**\n\n${lines.join("\n\n")}` + getReminders(effectiveThreadId),
|
|
1031
|
+
}],
|
|
1032
|
+
};
|
|
1033
|
+
}
|
|
1034
|
+
// --- Remove ---
|
|
1035
|
+
if (action === "remove") {
|
|
1036
|
+
const taskId = typeof typedArgs.taskId === "string" ? typedArgs.taskId : "";
|
|
1037
|
+
if (!taskId) {
|
|
1038
|
+
return errorResult("Error: 'taskId' is required for remove action. Use action: 'list' to see task IDs.");
|
|
1039
|
+
}
|
|
1040
|
+
const removed = removeSchedule(effectiveThreadId, taskId);
|
|
1041
|
+
return {
|
|
1042
|
+
content: [{
|
|
1043
|
+
type: "text",
|
|
1044
|
+
text: removed
|
|
1045
|
+
? `Task ${taskId} removed.` + getReminders(effectiveThreadId)
|
|
1046
|
+
: `Task ${taskId} not found.` + getReminders(effectiveThreadId),
|
|
1047
|
+
}],
|
|
1048
|
+
};
|
|
1049
|
+
}
|
|
1050
|
+
// --- Add ---
|
|
1051
|
+
const label = typeof typedArgs.label === "string" ? typedArgs.label : "unnamed task";
|
|
1052
|
+
const prompt = typeof typedArgs.prompt === "string" ? typedArgs.prompt : "";
|
|
1053
|
+
if (!prompt) {
|
|
1054
|
+
return errorResult("Error: 'prompt' is required — this is the text that will be injected when the task fires.");
|
|
1055
|
+
}
|
|
1056
|
+
const runAt = typeof typedArgs.runAt === "string" ? typedArgs.runAt : undefined;
|
|
1057
|
+
const cron = typeof typedArgs.cron === "string" ? typedArgs.cron : undefined;
|
|
1058
|
+
const afterIdleMinutes = typeof typedArgs.afterIdleMinutes === "number" ? typedArgs.afterIdleMinutes : undefined;
|
|
1059
|
+
if (cron && cron.trim().split(/\s+/).length !== 5) {
|
|
1060
|
+
return errorResult("Error: Invalid cron expression. Must be exactly 5 space-separated fields: minute hour day-of-month month day-of-week. " +
|
|
1061
|
+
"Example: '0 9 * * *' (daily at 9am). Only *, numbers, and comma-separated lists are supported.");
|
|
1062
|
+
}
|
|
1063
|
+
if (!runAt && !cron && afterIdleMinutes == null) {
|
|
1064
|
+
return errorResult("Error: Specify at least one trigger: 'runAt' (ISO timestamp), 'cron' (5-field), or 'afterIdleMinutes' (number).");
|
|
1065
|
+
}
|
|
1066
|
+
const task = {
|
|
1067
|
+
id: generateTaskId(),
|
|
1068
|
+
threadId: effectiveThreadId,
|
|
1069
|
+
prompt,
|
|
1070
|
+
label,
|
|
1071
|
+
runAt,
|
|
1072
|
+
cron,
|
|
1073
|
+
afterIdleMinutes,
|
|
1074
|
+
oneShot: runAt != null && !cron,
|
|
1075
|
+
createdAt: new Date().toISOString(),
|
|
1076
|
+
};
|
|
1077
|
+
addSchedule(task);
|
|
1078
|
+
const triggerDesc = cron
|
|
1079
|
+
? `recurring (cron: ${cron})`
|
|
1080
|
+
: runAt
|
|
1081
|
+
? `one-shot at ${runAt}`
|
|
1082
|
+
: `after ${afterIdleMinutes}min of operator silence`;
|
|
1083
|
+
return {
|
|
1084
|
+
content: [{
|
|
1085
|
+
type: "text",
|
|
1086
|
+
text: `✅ Scheduled: **${label}** [${task.id}]\nTrigger: ${triggerDesc}\nPrompt: ${prompt}` +
|
|
1087
|
+
getReminders(effectiveThreadId),
|
|
1088
|
+
}],
|
|
1089
|
+
};
|
|
1090
|
+
}
|
|
900
1091
|
// Unknown tool
|
|
901
1092
|
return errorResult(`Unknown tool: ${name}`);
|
|
902
1093
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scheduler for wake-up tasks.
|
|
3
|
+
*
|
|
4
|
+
* Supports two types of scheduled tasks:
|
|
5
|
+
* - Cron-based: fires at specific times (e.g. "0 9 * * *" = 9am daily)
|
|
6
|
+
* - Delay-based: fires after N minutes of operator silence
|
|
7
|
+
*
|
|
8
|
+
* Schedule state is persisted to disk per-thread so tasks survive restarts.
|
|
9
|
+
* The wait_for_instructions polling loop checks for due tasks on each timeout.
|
|
10
|
+
*/
|
|
11
|
+
export interface ScheduledTask {
|
|
12
|
+
/** Unique task ID (auto-generated). */
|
|
13
|
+
id: string;
|
|
14
|
+
/** Thread ID this task is scoped to. */
|
|
15
|
+
threadId: number;
|
|
16
|
+
/** The prompt to inject when the task fires. */
|
|
17
|
+
prompt: string;
|
|
18
|
+
/** Human-readable label for the task. */
|
|
19
|
+
label: string;
|
|
20
|
+
/** When set, task fires after this many minutes of operator silence. */
|
|
21
|
+
afterIdleMinutes?: number;
|
|
22
|
+
/** When set, ISO 8601 timestamp for one-shot scheduled execution. */
|
|
23
|
+
runAt?: string;
|
|
24
|
+
/** When set, cron expression for recurring execution (minute hour day month weekday). */
|
|
25
|
+
cron?: string;
|
|
26
|
+
/** Timestamp of last execution (ISO string), for cron dedup. */
|
|
27
|
+
lastFiredAt?: string;
|
|
28
|
+
/** If true, the task is a one-shot and should be removed after firing. */
|
|
29
|
+
oneShot: boolean;
|
|
30
|
+
/** Creation timestamp (ISO string). */
|
|
31
|
+
createdAt: string;
|
|
32
|
+
}
|
|
33
|
+
export declare function loadSchedules(threadId: number): ScheduledTask[];
|
|
34
|
+
export declare function addSchedule(task: ScheduledTask): void;
|
|
35
|
+
export declare function removeSchedule(threadId: number, taskId: string): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Remove all scheduled tasks for a thread.
|
|
38
|
+
* Called when a Telegram topic is deleted.
|
|
39
|
+
*/
|
|
40
|
+
export declare function purgeSchedules(threadId: number): void;
|
|
41
|
+
export declare function listSchedules(threadId: number): ScheduledTask[];
|
|
42
|
+
/**
|
|
43
|
+
* Generate a unique task ID.
|
|
44
|
+
*/
|
|
45
|
+
export declare function generateTaskId(): string;
|
|
46
|
+
/**
|
|
47
|
+
* Check for due tasks and return the first one that should fire.
|
|
48
|
+
*
|
|
49
|
+
* @param threadId - Thread to check schedules for
|
|
50
|
+
* @param lastOperatorMessageAt - Timestamp of last operator message (for idle detection)
|
|
51
|
+
* @param hasNewMessages - Whether operator has sent messages since last check
|
|
52
|
+
* @returns The due task's prompt, or null if nothing is due
|
|
53
|
+
*/
|
|
54
|
+
export declare function checkDueTasks(threadId: number, lastOperatorMessageAt: number, hasNewMessages: boolean): {
|
|
55
|
+
prompt: string;
|
|
56
|
+
task: ScheduledTask;
|
|
57
|
+
} | null;
|
|
58
|
+
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,MAAM,WAAW,aAAa;IAC1B,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yFAAyF;IACzF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;CACrB;AAUD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CAU/D;AAUD,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAIrD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAOxE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQrD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CAE/D;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AA2BD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CACzB,QAAQ,EAAE,MAAM,EAChB,qBAAqB,EAAE,MAAM,EAC7B,cAAc,EAAE,OAAO,GACxB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,aAAa,CAAA;CAAE,GAAG,IAAI,CAqFhD"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scheduler for wake-up tasks.
|
|
3
|
+
*
|
|
4
|
+
* Supports two types of scheduled tasks:
|
|
5
|
+
* - Cron-based: fires at specific times (e.g. "0 9 * * *" = 9am daily)
|
|
6
|
+
* - Delay-based: fires after N minutes of operator silence
|
|
7
|
+
*
|
|
8
|
+
* Schedule state is persisted to disk per-thread so tasks survive restarts.
|
|
9
|
+
* The wait_for_instructions polling loop checks for due tasks on each timeout.
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "fs";
|
|
12
|
+
import { homedir } from "os";
|
|
13
|
+
import { join } from "path";
|
|
14
|
+
const SCHEDULES_DIR = join(homedir(), ".remote-copilot-mcp", "schedules");
|
|
15
|
+
function schedulesFilePath(threadId) {
|
|
16
|
+
return join(SCHEDULES_DIR, `${threadId}.json`);
|
|
17
|
+
}
|
|
18
|
+
function ensureDir() {
|
|
19
|
+
mkdirSync(SCHEDULES_DIR, { recursive: true });
|
|
20
|
+
}
|
|
21
|
+
export function loadSchedules(threadId) {
|
|
22
|
+
ensureDir();
|
|
23
|
+
const file = schedulesFilePath(threadId);
|
|
24
|
+
try {
|
|
25
|
+
if (!existsSync(file))
|
|
26
|
+
return [];
|
|
27
|
+
const raw = readFileSync(file, "utf8");
|
|
28
|
+
return JSON.parse(raw);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function saveSchedules(threadId, tasks) {
|
|
35
|
+
ensureDir();
|
|
36
|
+
const file = schedulesFilePath(threadId);
|
|
37
|
+
const tmp = file + `.tmp.${process.pid}`;
|
|
38
|
+
writeFileSync(tmp, JSON.stringify(tasks, null, 2), "utf8");
|
|
39
|
+
renameSync(tmp, file);
|
|
40
|
+
}
|
|
41
|
+
export function addSchedule(task) {
|
|
42
|
+
const tasks = loadSchedules(task.threadId);
|
|
43
|
+
tasks.push(task);
|
|
44
|
+
saveSchedules(task.threadId, tasks);
|
|
45
|
+
}
|
|
46
|
+
export function removeSchedule(threadId, taskId) {
|
|
47
|
+
const tasks = loadSchedules(threadId);
|
|
48
|
+
const idx = tasks.findIndex(t => t.id === taskId);
|
|
49
|
+
if (idx === -1)
|
|
50
|
+
return false;
|
|
51
|
+
tasks.splice(idx, 1);
|
|
52
|
+
saveSchedules(threadId, tasks);
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Remove all scheduled tasks for a thread.
|
|
57
|
+
* Called when a Telegram topic is deleted.
|
|
58
|
+
*/
|
|
59
|
+
export function purgeSchedules(threadId) {
|
|
60
|
+
ensureDir();
|
|
61
|
+
const file = schedulesFilePath(threadId);
|
|
62
|
+
try {
|
|
63
|
+
unlinkSync(file);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// Already gone or never existed.
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
export function listSchedules(threadId) {
|
|
70
|
+
return loadSchedules(threadId);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Generate a unique task ID.
|
|
74
|
+
*/
|
|
75
|
+
export function generateTaskId() {
|
|
76
|
+
return `task_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Parse a simple cron expression (5 fields: minute hour day-of-month month day-of-week).
|
|
80
|
+
* Returns true if the given date matches the cron expression.
|
|
81
|
+
* Supports: *, specific numbers, and comma-separated lists.
|
|
82
|
+
* Does NOT support ranges (1-5) or steps (star/5) for simplicity.
|
|
83
|
+
*/
|
|
84
|
+
function matchesCronField(field, value) {
|
|
85
|
+
if (field === "*")
|
|
86
|
+
return true;
|
|
87
|
+
const parts = field.split(",").map(s => s.trim());
|
|
88
|
+
return parts.some(p => Number(p) === value);
|
|
89
|
+
}
|
|
90
|
+
function matchesCron(cronExpr, date) {
|
|
91
|
+
const fields = cronExpr.trim().split(/\s+/);
|
|
92
|
+
if (fields.length !== 5)
|
|
93
|
+
return false;
|
|
94
|
+
const [minute, hour, dayOfMonth, month, dayOfWeek] = fields;
|
|
95
|
+
return (matchesCronField(minute, date.getMinutes()) &&
|
|
96
|
+
matchesCronField(hour, date.getHours()) &&
|
|
97
|
+
matchesCronField(dayOfMonth, date.getDate()) &&
|
|
98
|
+
matchesCronField(month, date.getMonth() + 1) &&
|
|
99
|
+
matchesCronField(dayOfWeek, date.getDay()));
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Check for due tasks and return the first one that should fire.
|
|
103
|
+
*
|
|
104
|
+
* @param threadId - Thread to check schedules for
|
|
105
|
+
* @param lastOperatorMessageAt - Timestamp of last operator message (for idle detection)
|
|
106
|
+
* @param hasNewMessages - Whether operator has sent messages since last check
|
|
107
|
+
* @returns The due task's prompt, or null if nothing is due
|
|
108
|
+
*/
|
|
109
|
+
export function checkDueTasks(threadId, lastOperatorMessageAt, hasNewMessages) {
|
|
110
|
+
const tasks = loadSchedules(threadId);
|
|
111
|
+
if (tasks.length === 0)
|
|
112
|
+
return null;
|
|
113
|
+
const now = new Date();
|
|
114
|
+
let modified = false;
|
|
115
|
+
for (const task of tasks) {
|
|
116
|
+
// --- One-shot at specific time ---
|
|
117
|
+
if (task.runAt) {
|
|
118
|
+
const runAtDate = new Date(task.runAt);
|
|
119
|
+
if (now >= runAtDate) {
|
|
120
|
+
// If operator has new messages, reschedule by 5 minutes
|
|
121
|
+
if (hasNewMessages) {
|
|
122
|
+
task.runAt = new Date(now.getTime() + 5 * 60000).toISOString();
|
|
123
|
+
modified = true;
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
task.lastFiredAt = now.toISOString();
|
|
127
|
+
if (task.oneShot) {
|
|
128
|
+
const idx = tasks.indexOf(task);
|
|
129
|
+
tasks.splice(idx, 1);
|
|
130
|
+
}
|
|
131
|
+
modified = true;
|
|
132
|
+
saveSchedules(threadId, tasks);
|
|
133
|
+
return { prompt: task.prompt, task };
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// --- Cron-based recurring ---
|
|
137
|
+
if (task.cron) {
|
|
138
|
+
if (matchesCron(task.cron, now)) {
|
|
139
|
+
// Dedup: don't fire again within the same minute
|
|
140
|
+
if (task.lastFiredAt) {
|
|
141
|
+
const lastFired = new Date(task.lastFiredAt);
|
|
142
|
+
if (lastFired.getMinutes() === now.getMinutes() &&
|
|
143
|
+
lastFired.getHours() === now.getHours() &&
|
|
144
|
+
lastFired.getDate() === now.getDate() &&
|
|
145
|
+
lastFired.getMonth() === now.getMonth() &&
|
|
146
|
+
lastFired.getFullYear() === now.getFullYear()) {
|
|
147
|
+
continue; // Already fired this minute
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
if (hasNewMessages) {
|
|
151
|
+
// Operator is active — skip this fire, it'll try next matching minute
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
task.lastFiredAt = now.toISOString();
|
|
155
|
+
modified = true;
|
|
156
|
+
saveSchedules(threadId, tasks);
|
|
157
|
+
return { prompt: task.prompt, task };
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// --- Idle-based (fire after N minutes of silence) ---
|
|
161
|
+
if (task.afterIdleMinutes != null) {
|
|
162
|
+
const idleMs = now.getTime() - lastOperatorMessageAt;
|
|
163
|
+
const thresholdMs = task.afterIdleMinutes * 60000;
|
|
164
|
+
if (idleMs >= thresholdMs) {
|
|
165
|
+
// Dedup: don't fire again within the idle window
|
|
166
|
+
if (task.lastFiredAt) {
|
|
167
|
+
const lastFired = new Date(task.lastFiredAt);
|
|
168
|
+
const sinceFired = now.getTime() - lastFired.getTime();
|
|
169
|
+
if (sinceFired < thresholdMs) {
|
|
170
|
+
continue; // Already fired within this idle period
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (hasNewMessages) {
|
|
174
|
+
// Reset — operator just spoke, so idle counter restarts
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
task.lastFiredAt = now.toISOString();
|
|
178
|
+
modified = true;
|
|
179
|
+
saveSchedules(threadId, tasks);
|
|
180
|
+
return { prompt: task.prompt, task };
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (modified) {
|
|
185
|
+
saveSchedules(threadId, tasks);
|
|
186
|
+
}
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAChG,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,WAAW,CAAC,CAAC;AAyB1E,SAAS,iBAAiB,CAAC,QAAgB;IACvC,OAAO,IAAI,CAAC,aAAa,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,SAAS;IACd,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC1C,SAAS,EAAE,CAAC;IACZ,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB,EAAE,KAAsB;IAC3D,SAAS,EAAE,CAAC;IACZ,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,GAAG,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3D,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAmB;IAC3C,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAgB,EAAE,MAAc;IAC3D,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IAClD,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7B,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACrB,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC3C,SAAS,EAAE,CAAC;IACZ,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACL,iCAAiC;IACrC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC1C,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC1B,OAAO,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,KAAa,EAAE,KAAa;IAClD,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB,EAAE,IAAU;IAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC;IAC5D,OAAO,CACH,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3C,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5C,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC5C,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAC7C,CAAC;AACN,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CACzB,QAAgB,EAChB,qBAA6B,EAC7B,cAAuB;IAEvB,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,oCAAoC;QACpC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;gBACnB,wDAAwD;gBACxD,IAAI,cAAc,EAAE,CAAC;oBACjB,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC/D,QAAQ,GAAG,IAAI,CAAC;oBAChB,SAAS;gBACb,CAAC;gBACD,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACf,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACzB,CAAC;gBACD,QAAQ,GAAG,IAAI,CAAC;gBAChB,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAC/B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;YACzC,CAAC;QACL,CAAC;QAED,+BAA+B;QAC/B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC9B,iDAAiD;gBACjD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC7C,IACI,SAAS,CAAC,UAAU,EAAE,KAAK,GAAG,CAAC,UAAU,EAAE;wBAC3C,SAAS,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,QAAQ,EAAE;wBACvC,SAAS,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,OAAO,EAAE;wBACrC,SAAS,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,QAAQ,EAAE;wBACvC,SAAS,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE,EAC/C,CAAC;wBACC,SAAS,CAAC,4BAA4B;oBAC1C,CAAC;gBACL,CAAC;gBACD,IAAI,cAAc,EAAE,CAAC;oBACjB,sEAAsE;oBACtE,SAAS;gBACb,CAAC;gBACD,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrC,QAAQ,GAAG,IAAI,CAAC;gBAChB,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAC/B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;YACzC,CAAC;QACL,CAAC;QAED,uDAAuD;QACvD,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,qBAAqB,CAAC;YACrD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAClD,IAAI,MAAM,IAAI,WAAW,EAAE,CAAC;gBACxB,iDAAiD;gBACjD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC7C,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;oBACvD,IAAI,UAAU,GAAG,WAAW,EAAE,CAAC;wBAC3B,SAAS,CAAC,wCAAwC;oBACtD,CAAC;gBACL,CAAC;gBACD,IAAI,cAAc,EAAE,CAAC;oBACjB,wDAAwD;oBACxD,SAAS;gBACb,CAAC;gBACD,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrC,QAAQ,GAAG,IAAI,CAAC;gBAChB,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAC/B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;YACzC,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACX,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC"}
|