va-agent-protocol 0.1.0

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 (57) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +558 -0
  3. package/bin/va-orchestrate.mjs +153 -0
  4. package/dist/adapter/agent-adapter.d.ts +79 -0
  5. package/dist/adapter/agent-adapter.d.ts.map +1 -0
  6. package/dist/adapter/agent-adapter.js +36 -0
  7. package/dist/adapter/agent-adapter.js.map +1 -0
  8. package/dist/adapter/codex-adapter.d.ts +54 -0
  9. package/dist/adapter/codex-adapter.d.ts.map +1 -0
  10. package/dist/adapter/codex-adapter.js +409 -0
  11. package/dist/adapter/codex-adapter.js.map +1 -0
  12. package/dist/adapter/va-auto-pilot-adapter.d.ts +51 -0
  13. package/dist/adapter/va-auto-pilot-adapter.d.ts.map +1 -0
  14. package/dist/adapter/va-auto-pilot-adapter.js +275 -0
  15. package/dist/adapter/va-auto-pilot-adapter.js.map +1 -0
  16. package/dist/index.d.ts +17 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +15 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/orchestrator/orchestrator.d.ts +101 -0
  21. package/dist/orchestrator/orchestrator.d.ts.map +1 -0
  22. package/dist/orchestrator/orchestrator.js +452 -0
  23. package/dist/orchestrator/orchestrator.js.map +1 -0
  24. package/dist/orchestrator/registry.d.ts +39 -0
  25. package/dist/orchestrator/registry.d.ts.map +1 -0
  26. package/dist/orchestrator/registry.js +62 -0
  27. package/dist/orchestrator/registry.js.map +1 -0
  28. package/dist/orchestrator/scheduler.d.ts +66 -0
  29. package/dist/orchestrator/scheduler.d.ts.map +1 -0
  30. package/dist/orchestrator/scheduler.js +155 -0
  31. package/dist/orchestrator/scheduler.js.map +1 -0
  32. package/dist/test/orchestrator-enqueue.test.d.ts +2 -0
  33. package/dist/test/orchestrator-enqueue.test.d.ts.map +1 -0
  34. package/dist/test/orchestrator-enqueue.test.js +64 -0
  35. package/dist/test/orchestrator-enqueue.test.js.map +1 -0
  36. package/dist/test/orchestrator-lifecycle.test.d.ts +2 -0
  37. package/dist/test/orchestrator-lifecycle.test.d.ts.map +1 -0
  38. package/dist/test/orchestrator-lifecycle.test.js +227 -0
  39. package/dist/test/orchestrator-lifecycle.test.js.map +1 -0
  40. package/dist/test/scheduler.test.d.ts +2 -0
  41. package/dist/test/scheduler.test.d.ts.map +1 -0
  42. package/dist/test/scheduler.test.js +140 -0
  43. package/dist/test/scheduler.test.js.map +1 -0
  44. package/dist/types/index.d.ts +209 -0
  45. package/dist/types/index.d.ts.map +1 -0
  46. package/dist/types/index.js +45 -0
  47. package/dist/types/index.js.map +1 -0
  48. package/dist/utils/logger.d.ts +17 -0
  49. package/dist/utils/logger.d.ts.map +1 -0
  50. package/dist/utils/logger.js +21 -0
  51. package/dist/utils/logger.js.map +1 -0
  52. package/package.json +61 -0
  53. package/schemas/agent-capability.schema.json +99 -0
  54. package/schemas/evidence.schema.json +201 -0
  55. package/schemas/lifecycle.schema.json +80 -0
  56. package/schemas/message.schema.json +181 -0
  57. package/schemas/task-unit.schema.json +137 -0
@@ -0,0 +1,409 @@
1
+ /**
2
+ * CodexAdapter — wraps OpenAI Codex CLI as a protocol-compliant agent.
3
+ *
4
+ * This is a REAL adapter (not simulated). It spawns actual `codex` processes
5
+ * and collects real evidence from their execution.
6
+ *
7
+ * Key design:
8
+ * - `dispatch()` → spawns `codex exec --full-auto` as a child process
9
+ * - `poll()` → checks process exit status, reads stdout/stderr as progress
10
+ * - `cancel()` → sends SIGTERM to the process
11
+ * - Quality gates run after codex completes (typecheck, codex review)
12
+ */
13
+ import { spawn } from "node:child_process";
14
+ import { execFile } from "node:child_process";
15
+ import { promisify } from "node:util";
16
+ import path from "node:path";
17
+ import { generateCorrelationId } from "../types/index.js";
18
+ import { consoleLogger } from "../utils/logger.js";
19
+ import { BaseAdapter } from "./agent-adapter.js";
20
+ const execFileAsync = promisify(execFile);
21
+ export class CodexAdapter extends BaseAdapter {
22
+ id;
23
+ workingDirectory;
24
+ codexPath;
25
+ model;
26
+ taskTimeoutMs;
27
+ qualityGates;
28
+ enableCodexReview;
29
+ log;
30
+ codexExecutions = new Map();
31
+ constructor(options) {
32
+ super();
33
+ this.workingDirectory = options.workingDirectory;
34
+ this.id = `codex:${path.basename(options.workingDirectory)}`;
35
+ this.codexPath = options.codexPath ?? "codex";
36
+ this.model = options.model;
37
+ this.taskTimeoutMs = options.taskTimeoutMs ?? 120_000;
38
+ this.qualityGates = options.qualityGates ?? ["npx tsc --noEmit"];
39
+ this.enableCodexReview = options.enableCodexReview ?? true;
40
+ this.log = options.logger ?? consoleLogger;
41
+ }
42
+ capabilities() {
43
+ return {
44
+ agentId: this.id,
45
+ name: "Codex CLI",
46
+ version: "0.1.0",
47
+ capabilities: [
48
+ "code-generation",
49
+ "code-review",
50
+ "testing",
51
+ "refactoring",
52
+ ],
53
+ modelRequirement: "frontier",
54
+ interface: {
55
+ type: "cli",
56
+ command: this.codexPath,
57
+ workingDirectory: this.workingDirectory,
58
+ },
59
+ constraints: {
60
+ maxConcurrent: 1, // Codex works best sequentially
61
+ requiresNetwork: true,
62
+ maxRetries: 2,
63
+ },
64
+ };
65
+ }
66
+ async dispatch(task) {
67
+ const correlationId = generateCorrelationId();
68
+ try {
69
+ // Build the prompt from task objective + constraints + pitfalls
70
+ const prompt = this.buildPrompt(task);
71
+ // Build codex args
72
+ const args = ["exec"];
73
+ if (this.model) {
74
+ args.push("--model", this.model);
75
+ }
76
+ args.push("--full-auto");
77
+ args.push("--cd", this.workingDirectory);
78
+ args.push(prompt);
79
+ this.log.info(`[codex-adapter] Spawning: ${this.codexPath} ${args.slice(0, 3).join(" ")} ...`);
80
+ const proc = spawn(this.codexPath, args, {
81
+ cwd: this.workingDirectory,
82
+ stdio: ["ignore", "pipe", "pipe"],
83
+ env: { ...process.env },
84
+ });
85
+ const execution = {
86
+ taskId: task.id,
87
+ process: proc,
88
+ stdout: "",
89
+ stderr: "",
90
+ exitCode: null,
91
+ exited: false,
92
+ startedAt: Date.now(),
93
+ gatesRun: false,
94
+ };
95
+ proc.stdout?.on("data", (data) => {
96
+ execution.stdout += data.toString();
97
+ });
98
+ proc.stderr?.on("data", (data) => {
99
+ execution.stderr += data.toString();
100
+ });
101
+ proc.on("close", (code) => {
102
+ execution.exitCode = code;
103
+ execution.exited = true;
104
+ });
105
+ proc.on("error", (err) => {
106
+ execution.error = err.message;
107
+ execution.exited = true;
108
+ execution.exitCode = 1;
109
+ });
110
+ this.codexExecutions.set(correlationId, execution);
111
+ this.setExecution(correlationId, task.id, "running");
112
+ return { correlationId, accepted: true };
113
+ }
114
+ catch (err) {
115
+ return {
116
+ correlationId,
117
+ accepted: false,
118
+ reason: err instanceof Error ? err.message : String(err),
119
+ };
120
+ }
121
+ }
122
+ async poll(correlationId) {
123
+ const execution = this.codexExecutions.get(correlationId);
124
+ if (!execution) {
125
+ return {
126
+ correlationId,
127
+ state: "failed",
128
+ evidence: {
129
+ taskId: "unknown",
130
+ status: "failed",
131
+ failureDetail: {
132
+ failureType: "unknown",
133
+ attempted: "poll",
134
+ hypothesis: `No execution found for correlation ${correlationId}`,
135
+ },
136
+ },
137
+ };
138
+ }
139
+ // Check timeout
140
+ const elapsed = Date.now() - execution.startedAt;
141
+ if (!execution.exited && elapsed > this.taskTimeoutMs) {
142
+ execution.process.kill("SIGTERM");
143
+ this.codexExecutions.delete(correlationId);
144
+ return {
145
+ correlationId,
146
+ state: "failed",
147
+ evidence: {
148
+ taskId: execution.taskId,
149
+ status: "failed",
150
+ failureDetail: {
151
+ failureType: "timeout",
152
+ attempted: `Codex execution exceeded ${this.taskTimeoutMs}ms`,
153
+ hypothesis: "Task too complex or codex hung.",
154
+ },
155
+ },
156
+ };
157
+ }
158
+ // Still running
159
+ if (!execution.exited) {
160
+ // Extract last meaningful line from stdout as summary
161
+ const lines = execution.stdout.trim().split("\n").filter(Boolean);
162
+ const lastLine = lines[lines.length - 1] ?? "Working...";
163
+ return {
164
+ correlationId,
165
+ state: "running",
166
+ progress: {
167
+ taskId: execution.taskId,
168
+ phase: "codex-exec",
169
+ summary: lastLine.slice(0, 200),
170
+ completionEstimate: Math.min(0.9, elapsed / this.taskTimeoutMs),
171
+ logs: [
172
+ {
173
+ timestamp: new Date().toISOString(),
174
+ level: "info",
175
+ message: `Codex running (${Math.round(elapsed / 1000)}s elapsed, ${execution.stdout.length} bytes output)`,
176
+ },
177
+ ],
178
+ data: {
179
+ stdoutLength: execution.stdout.length,
180
+ stderrLength: execution.stderr.length,
181
+ elapsedMs: elapsed,
182
+ },
183
+ },
184
+ };
185
+ }
186
+ // Process exited — run quality gates if not already done
187
+ if (!execution.gatesRun) {
188
+ execution.gatesRun = true;
189
+ if (execution.exitCode !== 0) {
190
+ // Codex itself failed
191
+ this.codexExecutions.delete(correlationId);
192
+ return {
193
+ correlationId,
194
+ state: "failed",
195
+ progress: {
196
+ taskId: execution.taskId,
197
+ phase: "codex-failed",
198
+ summary: `Codex exited with code ${execution.exitCode}`,
199
+ completionEstimate: 1.0,
200
+ },
201
+ evidence: {
202
+ taskId: execution.taskId,
203
+ status: "failed",
204
+ failureDetail: {
205
+ failureType: "crash",
206
+ attempted: "codex exec",
207
+ hypothesis: this.extractFailureHypothesis(execution),
208
+ },
209
+ },
210
+ };
211
+ }
212
+ // Codex succeeded — run quality gates
213
+ const gateResults = await this.runQualityGates();
214
+ execution.gateResults = gateResults;
215
+ }
216
+ // Return final result based on gate results
217
+ const allPassed = execution.gateResults?.every((g) => g.passed) ?? false;
218
+ this.codexExecutions.delete(correlationId);
219
+ if (allPassed) {
220
+ return {
221
+ correlationId,
222
+ state: "completed",
223
+ progress: {
224
+ taskId: execution.taskId,
225
+ phase: "completed",
226
+ summary: "All quality gates passed.",
227
+ completionEstimate: 1.0,
228
+ },
229
+ evidence: {
230
+ taskId: execution.taskId,
231
+ status: "completed",
232
+ gateResults: execution.gateResults,
233
+ artifacts: [
234
+ {
235
+ type: "log",
236
+ description: `Codex output (${execution.stdout.length} bytes)`,
237
+ },
238
+ ],
239
+ verification: `Codex exec completed successfully. ${execution.gateResults?.length ?? 0} quality gates passed.`,
240
+ },
241
+ };
242
+ }
243
+ else {
244
+ const failedGate = execution.gateResults?.find((g) => !g.passed);
245
+ return {
246
+ correlationId,
247
+ state: "failed",
248
+ progress: {
249
+ taskId: execution.taskId,
250
+ phase: "gate-failed",
251
+ summary: `Quality gate failed: ${failedGate?.gate}`,
252
+ completionEstimate: 1.0,
253
+ },
254
+ evidence: {
255
+ taskId: execution.taskId,
256
+ status: "failed",
257
+ gateResults: execution.gateResults,
258
+ failureDetail: {
259
+ failureType: "gate",
260
+ attempted: `Codex completed but gate "${failedGate?.gate}" failed`,
261
+ hypothesis: failedGate?.output?.slice(0, 500) ?? "Gate check failed",
262
+ },
263
+ },
264
+ };
265
+ }
266
+ }
267
+ async cancel(correlationId) {
268
+ const execution = this.codexExecutions.get(correlationId);
269
+ if (execution && !execution.exited) {
270
+ execution.process.kill("SIGTERM");
271
+ }
272
+ this.codexExecutions.delete(correlationId);
273
+ this.setExecution(correlationId, execution?.taskId ?? "unknown", "cancelled");
274
+ }
275
+ async dispose() {
276
+ // Kill all running processes
277
+ for (const [, execution] of this.codexExecutions) {
278
+ if (!execution.exited) {
279
+ execution.process.kill("SIGTERM");
280
+ }
281
+ }
282
+ this.codexExecutions.clear();
283
+ await super.dispose();
284
+ }
285
+ // ─── Private helpers ─────────────────────────────────────────────────────
286
+ buildPrompt(task) {
287
+ const parts = [];
288
+ parts.push(`Objective: ${task.objective}`);
289
+ if (task.constraints?.length) {
290
+ parts.push(`\nConstraints:\n${task.constraints.map((c) => `- ${c}`).join("\n")}`);
291
+ }
292
+ if (task.acceptanceCriteria?.length) {
293
+ parts.push(`\nAcceptance Criteria:\n${task.acceptanceCriteria.map((c) => `- ${c}`).join("\n")}`);
294
+ }
295
+ // Inject pitfall context from previous failures
296
+ if (task.context?.pitfalls?.length) {
297
+ parts.push("\nPrevious Failures (avoid these mistakes):");
298
+ for (const pitfall of task.context.pitfalls) {
299
+ parts.push(`- [${pitfall.failureType}] ${pitfall.hypothesis}`);
300
+ if (pitfall.missingContext) {
301
+ parts.push(` Missing context: ${pitfall.missingContext}`);
302
+ }
303
+ }
304
+ }
305
+ // Inject resolved inputs
306
+ if (task.inputs) {
307
+ const inputEntries = Object.entries(task.inputs).filter(([, v]) => typeof v !== "object" || !("fromTask" in v));
308
+ if (inputEntries.length > 0) {
309
+ parts.push("\nInputs:");
310
+ for (const [key, value] of inputEntries) {
311
+ parts.push(`- ${key}: ${JSON.stringify(value)}`);
312
+ }
313
+ }
314
+ }
315
+ return parts.join("\n");
316
+ }
317
+ async runQualityGates() {
318
+ const results = [];
319
+ // Run configured quality gates
320
+ for (const gate of this.qualityGates) {
321
+ const startTime = Date.now();
322
+ try {
323
+ const { stdout, stderr } = await execFileAsync("sh", ["-c", gate], {
324
+ cwd: this.workingDirectory,
325
+ timeout: 60_000,
326
+ });
327
+ results.push({
328
+ gate: this.gateNameFromCommand(gate),
329
+ type: "command",
330
+ command: gate,
331
+ exitCode: 0,
332
+ passed: true,
333
+ output: (stdout + stderr).slice(0, 2000),
334
+ durationMs: Date.now() - startTime,
335
+ });
336
+ }
337
+ catch (err) {
338
+ const execErr = err;
339
+ results.push({
340
+ gate: this.gateNameFromCommand(gate),
341
+ type: "command",
342
+ command: gate,
343
+ exitCode: execErr.code ?? 1,
344
+ passed: false,
345
+ output: ((execErr.stdout ?? "") + (execErr.stderr ?? "")).slice(0, 2000),
346
+ durationMs: Date.now() - startTime,
347
+ });
348
+ break; // Stop on first failure
349
+ }
350
+ }
351
+ // Run codex review if enabled and no gates failed yet
352
+ if (this.enableCodexReview && results.every((r) => r.passed)) {
353
+ const startTime = Date.now();
354
+ try {
355
+ const { stdout, stderr } = await execFileAsync(this.codexPath, ["review", "--uncommitted"], {
356
+ cwd: this.workingDirectory,
357
+ timeout: 120_000,
358
+ });
359
+ const output = (stdout + stderr).slice(0, 2000);
360
+ const hasCritical = /CRITICAL/i.test(output);
361
+ results.push({
362
+ gate: "codex-review",
363
+ type: "command",
364
+ command: `${this.codexPath} review --uncommitted`,
365
+ exitCode: 0,
366
+ passed: !hasCritical,
367
+ output,
368
+ durationMs: Date.now() - startTime,
369
+ });
370
+ }
371
+ catch (err) {
372
+ const execErr = err;
373
+ results.push({
374
+ gate: "codex-review",
375
+ type: "command",
376
+ command: `${this.codexPath} review --uncommitted`,
377
+ exitCode: execErr.code ?? 1,
378
+ passed: false,
379
+ output: ((execErr.stdout ?? "") + (execErr.stderr ?? "")).slice(0, 2000),
380
+ durationMs: Date.now() - startTime,
381
+ });
382
+ }
383
+ }
384
+ return results;
385
+ }
386
+ gateNameFromCommand(command) {
387
+ // Extract a readable name from the command
388
+ if (command.includes("tsc"))
389
+ return "typecheck";
390
+ if (command.includes("test"))
391
+ return "unit-tests";
392
+ if (command.includes("lint"))
393
+ return "lint";
394
+ return command.split(" ").pop() ?? command;
395
+ }
396
+ extractFailureHypothesis(execution) {
397
+ // Try to extract useful error info from stderr/stdout
398
+ const combined = (execution.stderr + "\n" + execution.stdout).trim();
399
+ const lines = combined.split("\n").filter(Boolean);
400
+ // Look for error-like lines
401
+ const errorLines = lines.filter((l) => /error|fail|exception|fatal/i.test(l));
402
+ if (errorLines.length > 0) {
403
+ return errorLines.slice(0, 3).join("; ");
404
+ }
405
+ // Fallback: last few lines
406
+ return lines.slice(-3).join("; ") || "Codex process exited with non-zero code";
407
+ }
408
+ }
409
+ //# sourceMappingURL=codex-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-adapter.js","sourceRoot":"","sources":["../../src/adapter/codex-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * VaAutoPilotAdapter — wraps va-auto-pilot's sprint-board.mjs CLI
3
+ * as a protocol-compliant agent.
4
+ *
5
+ * Key design: we call va-auto-pilot via child_process, NOT via library import.
6
+ * This preserves the "convention-based" contract. Any tool that exposes the
7
+ * same CLI interface can be adapted with the same pattern.
8
+ */
9
+ import type { AgentCapability, TaskUnit, GateResult } from "../types/index.js";
10
+ import type { Logger } from "../utils/logger.js";
11
+ import type { DispatchResult, PollResult } from "./agent-adapter.js";
12
+ import { BaseAdapter } from "./agent-adapter.js";
13
+ export interface VaAutoPilotAdapterOptions {
14
+ /** Absolute path to the project using va-auto-pilot. */
15
+ projectRoot: string;
16
+ /** Path to sprint-board.mjs. Defaults to <projectRoot>/scripts/sprint-board.mjs */
17
+ sprintBoardPath?: string;
18
+ /** Quality gate command. Defaults to 'npm run check:all' */
19
+ qualityGateCommand?: string;
20
+ /** Logger instance. Defaults to console-based logger. */
21
+ logger?: Logger;
22
+ }
23
+ /**
24
+ * Maps between va-auto-pilot's sprint-board CLI and the universal protocol.
25
+ *
26
+ * Execution flow:
27
+ * 1. dispatch() → sprint-board add + update "In Progress" → spawns worker
28
+ * 2. poll() → reads sprint-state.json via sprint-board next --json
29
+ * 3. cancel() → sprint-board update "Failed"
30
+ */
31
+ export declare class VaAutoPilotAdapter extends BaseAdapter {
32
+ readonly id: string;
33
+ private readonly projectRoot;
34
+ private readonly sprintBoardPath;
35
+ private readonly qualityGateCommand;
36
+ private readonly log;
37
+ private runningProcesses;
38
+ constructor(options: VaAutoPilotAdapterOptions);
39
+ capabilities(): AgentCapability;
40
+ dispatch(task: TaskUnit): Promise<DispatchResult>;
41
+ poll(correlationId: string): Promise<PollResult>;
42
+ cancel(correlationId: string): Promise<void>;
43
+ /**
44
+ * Run quality gates and return structured results.
45
+ */
46
+ runQualityGates(): Promise<GateResult[]>;
47
+ private runSprintBoard;
48
+ private buildEvidence;
49
+ dispose(): Promise<void>;
50
+ }
51
+ //# sourceMappingURL=va-auto-pilot-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"va-auto-pilot-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/va-auto-pilot-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,EAER,UAAU,EACX,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIjD,MAAM,WAAW,yBAAyB;IACxC,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAuBD;;;;;;;GAOG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAuC;gBAEnD,OAAO,EAAE,yBAAyB;IAY9C,YAAY,IAAI,eAAe;IA2BzB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;IAkDjD,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAuFhD,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBlD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YA6ChC,cAAc;IAS5B,OAAO,CAAC,aAAa;IAuBN,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAIxC"}