mcp-codex-subagent 1.0.0 → 2.0.5
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 +13 -0
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +366 -4
- package/dist/server.js.map +1 -1
- package/dist/services/output-file.d.ts +38 -0
- package/dist/services/output-file.d.ts.map +1 -0
- package/dist/services/output-file.js +136 -0
- package/dist/services/output-file.js.map +1 -0
- package/dist/services/task-manager.d.ts +69 -0
- package/dist/services/task-manager.d.ts.map +1 -0
- package/dist/services/task-manager.js +171 -0
- package/dist/services/task-manager.js.map +1 -0
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +11 -2
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/handlers.d.ts +2 -1
- package/dist/tools/handlers.d.ts.map +1 -1
- package/dist/tools/handlers.js +287 -116
- package/dist/tools/handlers.js.map +1 -1
- package/dist/types.d.ts +23 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/brief-validator.d.ts +34 -0
- package/dist/utils/brief-validator.d.ts.map +1 -0
- package/dist/utils/brief-validator.js +251 -0
- package/dist/utils/brief-validator.js.map +1 -0
- package/dist/utils/format.d.ts +34 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +40 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/task-id-generator.d.ts +15 -0
- package/dist/utils/task-id-generator.d.ts.map +1 -0
- package/dist/utils/task-id-generator.js +45 -0
- package/dist/utils/task-id-generator.js.map +1 -0
- package/package.json +15 -15
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory task state manager for async codex execution.
|
|
3
|
+
* Tracks background codex processes and their output.
|
|
4
|
+
*/
|
|
5
|
+
import type { ChildProcess } from 'child_process';
|
|
6
|
+
export type TaskStatus = 'pending' | 'running' | 'completed' | 'failed';
|
|
7
|
+
export interface CodexTask {
|
|
8
|
+
id: string;
|
|
9
|
+
status: TaskStatus;
|
|
10
|
+
prompt: string;
|
|
11
|
+
role?: string;
|
|
12
|
+
specialization?: string;
|
|
13
|
+
model: string;
|
|
14
|
+
cwd: string;
|
|
15
|
+
startTime: string;
|
|
16
|
+
endTime?: string;
|
|
17
|
+
outputFilePath?: string;
|
|
18
|
+
outputLines: number;
|
|
19
|
+
output: string[];
|
|
20
|
+
error?: string;
|
|
21
|
+
metadata?: Record<string, unknown>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Create a new task and return it.
|
|
25
|
+
*/
|
|
26
|
+
export declare function createTask(opts: {
|
|
27
|
+
prompt: string;
|
|
28
|
+
role?: string;
|
|
29
|
+
specialization?: string;
|
|
30
|
+
model: string;
|
|
31
|
+
cwd: string;
|
|
32
|
+
}): Promise<CodexTask>;
|
|
33
|
+
/**
|
|
34
|
+
* Get a task by ID.
|
|
35
|
+
*/
|
|
36
|
+
export declare function getTask(id: string): CodexTask | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Get all tasks.
|
|
39
|
+
*/
|
|
40
|
+
export declare function getAllTasks(): CodexTask[];
|
|
41
|
+
/**
|
|
42
|
+
* Update a task with partial data.
|
|
43
|
+
*/
|
|
44
|
+
export declare function updateTask(id: string, partial: Partial<CodexTask>): CodexTask | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Append an output line to a task and stream to output file.
|
|
47
|
+
*/
|
|
48
|
+
export declare function appendOutput(id: string, line: string): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Mark task as completed with optional metadata.
|
|
51
|
+
*/
|
|
52
|
+
export declare function completeTask(id: string, metadata?: Record<string, unknown>): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Mark task as failed with error.
|
|
55
|
+
*/
|
|
56
|
+
export declare function failTask(id: string, error: string): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Store a background process reference for a task.
|
|
59
|
+
*/
|
|
60
|
+
export declare function setProcess(id: string, proc: ChildProcess): void;
|
|
61
|
+
/**
|
|
62
|
+
* Get the background process for a task.
|
|
63
|
+
*/
|
|
64
|
+
export declare function getProcess(id: string): ChildProcess | undefined;
|
|
65
|
+
/**
|
|
66
|
+
* Get task counts by status.
|
|
67
|
+
*/
|
|
68
|
+
export declare function getTaskCounts(): Record<TaskStatus | 'total', number>;
|
|
69
|
+
//# sourceMappingURL=task-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-manager.d.ts","sourceRoot":"","sources":["../../src/services/task-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAUlD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAkDD;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,OAAO,CAAC,SAAS,CAAC,CAsBrB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAEzD;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,SAAS,EAAE,CAEzC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,SAAS,CAMzF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB1E;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAWhG;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWvE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAE/D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAE/D;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAAC,UAAU,GAAG,OAAO,EAAE,MAAM,CAAC,CAepE"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory task state manager for async codex execution.
|
|
3
|
+
* Tracks background codex processes and their output.
|
|
4
|
+
*/
|
|
5
|
+
import { generateTaskId, normalizeTaskId } from '../utils/task-id-generator.js';
|
|
6
|
+
import { createOutputFile, appendToOutputFile, finalizeOutputFile, } from './output-file.js';
|
|
7
|
+
// --- Constants ---
|
|
8
|
+
const MAX_TASKS = 100;
|
|
9
|
+
const MAX_OUTPUT_LINES = 2000;
|
|
10
|
+
// --- Task Manager ---
|
|
11
|
+
// In-memory task store
|
|
12
|
+
const tasks = new Map();
|
|
13
|
+
// Background process references (not serialized)
|
|
14
|
+
const processes = new Map();
|
|
15
|
+
/**
|
|
16
|
+
* Generate a collision-free task ID.
|
|
17
|
+
*/
|
|
18
|
+
function generateUniqueTaskId() {
|
|
19
|
+
let id = generateTaskId();
|
|
20
|
+
let attempts = 0;
|
|
21
|
+
while (tasks.has(normalizeTaskId(id)) && attempts < 20) {
|
|
22
|
+
id = generateTaskId();
|
|
23
|
+
attempts++;
|
|
24
|
+
}
|
|
25
|
+
// Fallback to timestamp-based ID if collisions persist
|
|
26
|
+
if (tasks.has(normalizeTaskId(id))) {
|
|
27
|
+
id = `task-${Date.now()}-${Math.floor(Math.random() * 1000)}`;
|
|
28
|
+
}
|
|
29
|
+
return id;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Evict oldest completed/failed tasks if at capacity.
|
|
33
|
+
*/
|
|
34
|
+
function evictIfNeeded() {
|
|
35
|
+
if (tasks.size < MAX_TASKS)
|
|
36
|
+
return;
|
|
37
|
+
// Find terminal tasks sorted by startTime (oldest first)
|
|
38
|
+
const terminal = [...tasks.values()]
|
|
39
|
+
.filter(t => t.status === 'completed' || t.status === 'failed')
|
|
40
|
+
.sort((a, b) => a.startTime.localeCompare(b.startTime));
|
|
41
|
+
for (const task of terminal) {
|
|
42
|
+
if (tasks.size < MAX_TASKS)
|
|
43
|
+
break;
|
|
44
|
+
tasks.delete(normalizeTaskId(task.id));
|
|
45
|
+
processes.delete(normalizeTaskId(task.id));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Create a new task and return it.
|
|
50
|
+
*/
|
|
51
|
+
export async function createTask(opts) {
|
|
52
|
+
evictIfNeeded();
|
|
53
|
+
const id = generateUniqueTaskId();
|
|
54
|
+
const outputFilePath = await createOutputFile(opts.cwd, id);
|
|
55
|
+
const task = {
|
|
56
|
+
id,
|
|
57
|
+
status: 'running',
|
|
58
|
+
prompt: opts.prompt.length > 200 ? opts.prompt.slice(0, 200) + '...' : opts.prompt,
|
|
59
|
+
role: opts.role,
|
|
60
|
+
specialization: opts.specialization,
|
|
61
|
+
model: opts.model,
|
|
62
|
+
cwd: opts.cwd,
|
|
63
|
+
startTime: new Date().toISOString(),
|
|
64
|
+
outputFilePath: outputFilePath ?? undefined,
|
|
65
|
+
outputLines: 0,
|
|
66
|
+
output: [],
|
|
67
|
+
};
|
|
68
|
+
tasks.set(normalizeTaskId(id), task);
|
|
69
|
+
return task;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get a task by ID.
|
|
73
|
+
*/
|
|
74
|
+
export function getTask(id) {
|
|
75
|
+
return tasks.get(normalizeTaskId(id));
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get all tasks.
|
|
79
|
+
*/
|
|
80
|
+
export function getAllTasks() {
|
|
81
|
+
return [...tasks.values()];
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Update a task with partial data.
|
|
85
|
+
*/
|
|
86
|
+
export function updateTask(id, partial) {
|
|
87
|
+
const key = normalizeTaskId(id);
|
|
88
|
+
const task = tasks.get(key);
|
|
89
|
+
if (!task)
|
|
90
|
+
return undefined;
|
|
91
|
+
Object.assign(task, partial);
|
|
92
|
+
return task;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Append an output line to a task and stream to output file.
|
|
96
|
+
*/
|
|
97
|
+
export async function appendOutput(id, line) {
|
|
98
|
+
const key = normalizeTaskId(id);
|
|
99
|
+
const task = tasks.get(key);
|
|
100
|
+
if (!task)
|
|
101
|
+
return;
|
|
102
|
+
task.output.push(line);
|
|
103
|
+
task.outputLines++;
|
|
104
|
+
// Trim oldest lines if over limit
|
|
105
|
+
if (task.output.length > MAX_OUTPUT_LINES) {
|
|
106
|
+
task.output = task.output.slice(task.output.length - MAX_OUTPUT_LINES);
|
|
107
|
+
}
|
|
108
|
+
// Stream to output file
|
|
109
|
+
if (task.outputFilePath) {
|
|
110
|
+
await appendToOutputFile(task.cwd, task.id, line);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Mark task as completed with optional metadata.
|
|
115
|
+
*/
|
|
116
|
+
export async function completeTask(id, metadata) {
|
|
117
|
+
const key = normalizeTaskId(id);
|
|
118
|
+
const task = tasks.get(key);
|
|
119
|
+
if (!task)
|
|
120
|
+
return;
|
|
121
|
+
task.status = 'completed';
|
|
122
|
+
task.endTime = new Date().toISOString();
|
|
123
|
+
if (metadata)
|
|
124
|
+
task.metadata = { ...task.metadata, ...metadata };
|
|
125
|
+
await finalizeOutputFile(task.cwd, task.id, 'completed');
|
|
126
|
+
processes.delete(key);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Mark task as failed with error.
|
|
130
|
+
*/
|
|
131
|
+
export async function failTask(id, error) {
|
|
132
|
+
const key = normalizeTaskId(id);
|
|
133
|
+
const task = tasks.get(key);
|
|
134
|
+
if (!task)
|
|
135
|
+
return;
|
|
136
|
+
task.status = 'failed';
|
|
137
|
+
task.endTime = new Date().toISOString();
|
|
138
|
+
task.error = error;
|
|
139
|
+
await finalizeOutputFile(task.cwd, task.id, 'failed', error);
|
|
140
|
+
processes.delete(key);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Store a background process reference for a task.
|
|
144
|
+
*/
|
|
145
|
+
export function setProcess(id, proc) {
|
|
146
|
+
processes.set(normalizeTaskId(id), proc);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get the background process for a task.
|
|
150
|
+
*/
|
|
151
|
+
export function getProcess(id) {
|
|
152
|
+
return processes.get(normalizeTaskId(id));
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Get task counts by status.
|
|
156
|
+
*/
|
|
157
|
+
export function getTaskCounts() {
|
|
158
|
+
const counts = {
|
|
159
|
+
pending: 0,
|
|
160
|
+
running: 0,
|
|
161
|
+
completed: 0,
|
|
162
|
+
failed: 0,
|
|
163
|
+
total: 0,
|
|
164
|
+
};
|
|
165
|
+
for (const task of tasks.values()) {
|
|
166
|
+
counts[task.status]++;
|
|
167
|
+
counts.total++;
|
|
168
|
+
}
|
|
169
|
+
return counts;
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=task-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-manager.js","sourceRoot":"","sources":["../../src/services/task-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAEzD,eAAO,MAAM,eAAe,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAEzD,eAAO,MAAM,eAAe,EAAE,cAAc,EA6M3C,CAAC"}
|
|
@@ -2,7 +2,16 @@ import { TOOLS } from '../types.js';
|
|
|
2
2
|
export const toolDefinitions = [
|
|
3
3
|
{
|
|
4
4
|
name: TOOLS.CODEX,
|
|
5
|
-
description:
|
|
5
|
+
description: `Execute Codex CLI agent. Model pinned to gpt-5.3-codex. Returns immediately with task_id — agent runs in background. Use reasoningEffort as the primary tuning knob.
|
|
6
|
+
|
|
7
|
+
**Roles:**
|
|
8
|
+
- coder: Implementation. Min 1000-char prompt + min 1 .md context file. Include: OBJECTIVE, FILES, CRITERIA, CONSTRAINTS, PATTERNS.
|
|
9
|
+
- planner: Architecture/planning. Min 300-char prompt. Include: PROBLEM, CONSTRAINTS, SCOPE, OUTPUT.
|
|
10
|
+
- tester: QA/testing. Min 300-char prompt + min 1 context file. Include: WHAT BUILT, FILES, CRITERIA, TESTS, EDGE CASES.
|
|
11
|
+
- researcher: Investigation. Min 200-char prompt. Include: TOPIC, QUESTIONS, HANDOFF TARGET.
|
|
12
|
+
|
|
13
|
+
**Workflow:** researcher -> planner -> coder -> tester.
|
|
14
|
+
**Status:** Read resource \`task:///all\` or \`task:///{id}\`.`,
|
|
6
15
|
inputSchema: {
|
|
7
16
|
type: 'object',
|
|
8
17
|
properties: {
|
|
@@ -21,7 +30,7 @@ export const toolDefinitions = [
|
|
|
21
30
|
},
|
|
22
31
|
context_files: {
|
|
23
32
|
type: 'array',
|
|
24
|
-
description: '
|
|
33
|
+
description: 'Context files. Required for coder (min 1 .md) and tester (min 1). Max 20 files, 200KB each, 500KB total.',
|
|
25
34
|
items: {
|
|
26
35
|
type: 'object',
|
|
27
36
|
properties: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAuB,MAAM,aAAa,CAAC;AAEzD,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C;QACE,IAAI,EAAE,KAAK,CAAC,KAAK;QACjB,WAAW,EAAE
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/handlers.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { type ToolResult, type ToolHandlerContext } from '../types.js';
|
|
1
|
+
import { type ToolResult, type ToolHandlerContext, type NotificationSender } from '../types.js';
|
|
2
2
|
import { type SessionStorage } from '../session/storage.js';
|
|
3
|
+
export declare function setNotificationSender(sender: NotificationSender): void;
|
|
3
4
|
export declare class CodexToolHandler {
|
|
4
5
|
private sessionStorage;
|
|
5
6
|
constructor(sessionStorage: SessionStorage);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/tools/handlers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/tools/handlers.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,kBAAkB,EAIvB,KAAK,kBAAkB,EAMxB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,uBAAuB,CAAC;AAmC/B,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAEtE;AA+JD,qBAAa,gBAAgB;IACf,OAAO,CAAC,cAAc;gBAAd,cAAc,EAAE,cAAc;IAE5C,OAAO,CACX,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,kBAAmC,GAC3C,OAAO,CAAC,UAAU,CAAC;IA8OtB,OAAO,CAAC,mBAAmB;CAqB5B;AAED,qBAAa,eAAe;IACpB,OAAO,CACX,IAAI,EAAE,OAAO,EACb,QAAQ,GAAE,kBAAmC,GAC5C,OAAO,CAAC,UAAU,CAAC;CAuBvB;AAED,qBAAa,eAAe;IACpB,OAAO,CACX,IAAI,EAAE,OAAO,EACb,QAAQ,GAAE,kBAAmC,GAC5C,OAAO,CAAC,UAAU,CAAC;CAyBvB;AAED,qBAAa,uBAAuB;IACtB,OAAO,CAAC,cAAc;gBAAd,cAAc,EAAE,cAAc;IAE5C,OAAO,CACX,IAAI,EAAE,OAAO,EACb,QAAQ,GAAE,kBAAmC,GAC5C,OAAO,CAAC,UAAU,CAAC;CAkCvB;AAED,qBAAa,iBAAiB;IACtB,OAAO,CACX,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,kBAAmC,GAC3C,OAAO,CAAC,UAAU,CAAC;CA6FvB;AAKD,eAAO,MAAM,YAAY;;;;;;CAMf,CAAC"}
|