@atom-workflow-agent/cli 0.1.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/LICENSE +201 -0
- package/README.md +61 -0
- package/README.zh-CN.md +61 -0
- package/dist/app.d.ts +14 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +172 -0
- package/dist/app.js.map +1 -0
- package/dist/atoms/atom-development-service.d.ts +43 -0
- package/dist/atoms/atom-development-service.d.ts.map +1 -0
- package/dist/atoms/atom-development-service.js +308 -0
- package/dist/atoms/atom-development-service.js.map +1 -0
- package/dist/atoms/atom-development-store.d.ts +70 -0
- package/dist/atoms/atom-development-store.d.ts.map +1 -0
- package/dist/atoms/atom-development-store.js +271 -0
- package/dist/atoms/atom-development-store.js.map +1 -0
- package/dist/commands/doctor.d.ts +38 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +163 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/models.d.ts +16 -0
- package/dist/commands/models.d.ts.map +1 -0
- package/dist/commands/models.js +20 -0
- package/dist/commands/models.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/local/local-project-service.d.ts +63 -0
- package/dist/local/local-project-service.d.ts.map +1 -0
- package/dist/local/local-project-service.js +327 -0
- package/dist/local/local-project-service.js.map +1 -0
- package/dist/logging/create-cli-logger.d.ts +8 -0
- package/dist/logging/create-cli-logger.d.ts.map +1 -0
- package/dist/logging/create-cli-logger.js +11 -0
- package/dist/logging/create-cli-logger.js.map +1 -0
- package/dist/logging/json-logger.d.ts +24 -0
- package/dist/logging/json-logger.d.ts.map +1 -0
- package/dist/logging/json-logger.js +29 -0
- package/dist/logging/json-logger.js.map +1 -0
- package/dist/providers/acp-planning-model-adapter.d.ts +9 -0
- package/dist/providers/acp-planning-model-adapter.d.ts.map +1 -0
- package/dist/providers/acp-planning-model-adapter.js +54 -0
- package/dist/providers/acp-planning-model-adapter.js.map +1 -0
- package/dist/providers/provider-name.d.ts +5 -0
- package/dist/providers/provider-name.d.ts.map +1 -0
- package/dist/providers/provider-name.js +4 -0
- package/dist/providers/provider-name.js.map +1 -0
- package/dist/providers/resolve-provider-config.d.ts +10 -0
- package/dist/providers/resolve-provider-config.d.ts.map +1 -0
- package/dist/providers/resolve-provider-config.js +14 -0
- package/dist/providers/resolve-provider-config.js.map +1 -0
- package/dist/providers/resolve-trae-executable.d.ts +20 -0
- package/dist/providers/resolve-trae-executable.d.ts.map +1 -0
- package/dist/providers/resolve-trae-executable.js +46 -0
- package/dist/providers/resolve-trae-executable.js.map +1 -0
- package/dist/workflow/builtin-atom-packages.d.ts +4 -0
- package/dist/workflow/builtin-atom-packages.d.ts.map +1 -0
- package/dist/workflow/builtin-atom-packages.js +39 -0
- package/dist/workflow/builtin-atom-packages.js.map +1 -0
- package/dist/workflow/planning-cli-service.d.ts +35 -0
- package/dist/workflow/planning-cli-service.d.ts.map +1 -0
- package/dist/workflow/planning-cli-service.js +97 -0
- package/dist/workflow/planning-cli-service.js.map +1 -0
- package/dist/workflow/workflow-command-input.d.ts +25 -0
- package/dist/workflow/workflow-command-input.d.ts.map +1 -0
- package/dist/workflow/workflow-command-input.js +117 -0
- package/dist/workflow/workflow-command-input.js.map +1 -0
- package/dist/workflow/workflow-command-progress.d.ts +6 -0
- package/dist/workflow/workflow-command-progress.d.ts.map +1 -0
- package/dist/workflow/workflow-command-progress.js +81 -0
- package/dist/workflow/workflow-command-progress.js.map +1 -0
- package/dist/workflow/workflow-command-service.d.ts +85 -0
- package/dist/workflow/workflow-command-service.d.ts.map +1 -0
- package/dist/workflow/workflow-command-service.js +2 -0
- package/dist/workflow/workflow-command-service.js.map +1 -0
- package/dist/workflow/workflow-command.d.ts +5 -0
- package/dist/workflow/workflow-command.d.ts.map +1 -0
- package/dist/workflow/workflow-command.js +425 -0
- package/dist/workflow/workflow-command.js.map +1 -0
- package/dist/workflow/workflow-coordinator.d.ts +25 -0
- package/dist/workflow/workflow-coordinator.d.ts.map +1 -0
- package/dist/workflow/workflow-coordinator.js +112 -0
- package/dist/workflow/workflow-coordinator.js.map +1 -0
- package/dist/workflow/workflow-output.d.ts +9 -0
- package/dist/workflow/workflow-output.d.ts.map +1 -0
- package/dist/workflow/workflow-output.js +109 -0
- package/dist/workflow/workflow-output.js.map +1 -0
- package/dist/workflow/workflow-project-config.d.ts +14 -0
- package/dist/workflow/workflow-project-config.d.ts.map +1 -0
- package/dist/workflow/workflow-project-config.js +55 -0
- package/dist/workflow/workflow-project-config.js.map +1 -0
- package/dist/workflow/workflow-service.d.ts +1237 -0
- package/dist/workflow/workflow-service.d.ts.map +1 -0
- package/dist/workflow/workflow-service.js +475 -0
- package/dist/workflow/workflow-service.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { HostTaskResumeRequest, JsonValue, PlanningDraftTransaction, PlanningGapReport } from "@atom-workflow-agent/contracts";
|
|
2
|
+
import type { RuntimeMachineCommand } from "@atom-workflow-agent/workflow-engine";
|
|
3
|
+
import type { AtomDevelopmentExecutionOptions } from "../atoms/atom-development-service.js";
|
|
4
|
+
import type { WorkflowServiceExecutionOptions } from "./workflow-service.js";
|
|
5
|
+
export interface WorkflowPlanningCommands {
|
|
6
|
+
start(raw: unknown, execution?: WorkflowServiceExecutionOptions): Promise<unknown>;
|
|
7
|
+
plan(raw: unknown, execution?: WorkflowServiceExecutionOptions): Promise<unknown>;
|
|
8
|
+
listPlans(): Promise<unknown> | unknown;
|
|
9
|
+
inspectPlan(planId: string, view?: "summary" | "workspace" | "capabilities" | "gaps" | "bindings" | "workflow" | "validation"): Promise<unknown>;
|
|
10
|
+
cancelPlan(planId: string): Promise<unknown>;
|
|
11
|
+
resumePlan(planId: string, patch: Readonly<Record<string, JsonValue>>, execution?: WorkflowServiceExecutionOptions): Promise<unknown>;
|
|
12
|
+
}
|
|
13
|
+
export interface WorkflowDefinitionCommands {
|
|
14
|
+
validateWorkflow(raw: unknown, completionMode?: "outputs" | "side-effect-only"): Promise<unknown>;
|
|
15
|
+
saveWorkflow(raw: unknown, options?: {
|
|
16
|
+
workflowId?: string;
|
|
17
|
+
completionMode?: "outputs" | "side-effect-only";
|
|
18
|
+
sourceKind?: "file" | "host";
|
|
19
|
+
}): Promise<unknown>;
|
|
20
|
+
listWorkflows(): Promise<unknown> | unknown;
|
|
21
|
+
inspectWorkflow(reference: string): Promise<unknown> | unknown;
|
|
22
|
+
exportWorkflow(reference: string): Promise<unknown>;
|
|
23
|
+
diffWorkflows(from: string, to: string): Promise<unknown>;
|
|
24
|
+
topology(workflowRevisionId: string, format?: "json" | "terminal"): Promise<unknown>;
|
|
25
|
+
verifyWorkflowRevision(workflowRevisionId: string): Promise<unknown>;
|
|
26
|
+
runWorkflowRevision(workflowRevisionId: string, input?: {
|
|
27
|
+
runId?: string;
|
|
28
|
+
goal?: string;
|
|
29
|
+
cwd?: string;
|
|
30
|
+
projectScope?: string;
|
|
31
|
+
hostScope?: string;
|
|
32
|
+
inputs?: Readonly<Record<string, JsonValue>>;
|
|
33
|
+
}): Promise<unknown>;
|
|
34
|
+
}
|
|
35
|
+
export interface WorkflowRuntimeCommands {
|
|
36
|
+
execute(command: RuntimeMachineCommand, execution?: WorkflowServiceExecutionOptions): Promise<unknown>;
|
|
37
|
+
graph(resourceId: string): Promise<unknown>;
|
|
38
|
+
startInspector(resourceId: string, options?: {
|
|
39
|
+
readonly host?: string;
|
|
40
|
+
readonly port?: number;
|
|
41
|
+
readonly pollIntervalMs?: number;
|
|
42
|
+
readonly signal?: AbortSignal;
|
|
43
|
+
}): Promise<{
|
|
44
|
+
readonly host: string;
|
|
45
|
+
readonly port: number;
|
|
46
|
+
readonly url: string;
|
|
47
|
+
readonly closed: Promise<void>;
|
|
48
|
+
close(): Promise<void>;
|
|
49
|
+
}>;
|
|
50
|
+
}
|
|
51
|
+
export interface AtomCatalogCommands {
|
|
52
|
+
listAtoms(): JsonValue;
|
|
53
|
+
listAtomSources(): JsonValue;
|
|
54
|
+
describeAtom(key: string): JsonValue;
|
|
55
|
+
}
|
|
56
|
+
export interface AtomDevelopmentCommands {
|
|
57
|
+
runAtom(key: string, input: JsonValue, execution?: AtomDevelopmentExecutionOptions): Promise<unknown>;
|
|
58
|
+
resumeAtom(attemptId: string, value: JsonValue, execution?: AtomDevelopmentExecutionOptions): Promise<unknown>;
|
|
59
|
+
inspectAtomAttempt(attemptId: string): Promise<unknown>;
|
|
60
|
+
listAtomAttemptEvents(attemptId: string, after?: number, limit?: number): Promise<unknown>;
|
|
61
|
+
}
|
|
62
|
+
export interface PlanningWorkspaceCommands {
|
|
63
|
+
inspectWorkspace(planId: string): Promise<JsonValue>;
|
|
64
|
+
workspaceFrontier(planId: string): Promise<JsonValue>;
|
|
65
|
+
searchWorkspaceCatalog(planId: string, query: string): Promise<JsonValue>;
|
|
66
|
+
describeWorkspaceAtom(planId: string, key: string): Promise<JsonValue>;
|
|
67
|
+
applyWorkspaceTransaction(planId: string, transaction: PlanningDraftTransaction): Promise<JsonValue>;
|
|
68
|
+
validateWorkspace(planId: string): Promise<JsonValue>;
|
|
69
|
+
finalizeWorkspace(planId: string, expected: {
|
|
70
|
+
readonly revision: number;
|
|
71
|
+
readonly draftHash: string;
|
|
72
|
+
}): Promise<JsonValue>;
|
|
73
|
+
reportWorkspaceGap(planId: string, report: PlanningGapReport): Promise<JsonValue>;
|
|
74
|
+
}
|
|
75
|
+
/** Command-facing capabilities. Concrete services implement only their command domain. */
|
|
76
|
+
export type WorkflowCommandService = Partial<WorkflowPlanningCommands & WorkflowDefinitionCommands & WorkflowRuntimeCommands & AtomCatalogCommands & AtomDevelopmentCommands & PlanningWorkspaceCommands> & {
|
|
77
|
+
start: WorkflowPlanningCommands["start"];
|
|
78
|
+
execute: WorkflowRuntimeCommands["execute"];
|
|
79
|
+
listAtoms: AtomCatalogCommands["listAtoms"];
|
|
80
|
+
listAtomSources: AtomCatalogCommands["listAtomSources"];
|
|
81
|
+
describeAtom: AtomCatalogCommands["describeAtom"];
|
|
82
|
+
dispose?(): Promise<void>;
|
|
83
|
+
};
|
|
84
|
+
export type { HostTaskResumeRequest };
|
|
85
|
+
//# sourceMappingURL=workflow-command-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-command-service.d.ts","sourceRoot":"","sources":["../../src/workflow/workflow-command-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-command-service.js","sourceRoot":"","sources":["../../src/workflow/workflow-command-service.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type WorkflowCommandDependencies, type WorkflowCommandIo } from "./workflow-command-input.js";
|
|
2
|
+
export type { WorkflowCommandService } from "./workflow-command-service.js";
|
|
3
|
+
export type { WorkflowCommandDependencies, WorkflowCommandIo } from "./workflow-command-input.js";
|
|
4
|
+
export declare function runWorkflowCommand(group: "workflow" | "plan" | "run" | "atom" | "atoms" | "planning" | "inspector", argv: readonly string[], io: WorkflowCommandIo, dependencies: WorkflowCommandDependencies): Promise<number>;
|
|
5
|
+
//# sourceMappingURL=workflow-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-command.d.ts","sourceRoot":"","sources":["../../src/workflow/workflow-command.ts"],"names":[],"mappings":"AAaA,OAAO,EAUL,KAAK,2BAA2B,EAChC,KAAK,iBAAiB,EACvB,MAAM,6BAA6B,CAAC;AAGrC,YAAY,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,YAAY,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AA0LlG,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,EAChF,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,EAAE,iBAAiB,EACrB,YAAY,EAAE,2BAA2B,GACxC,OAAO,CAAC,MAAM,CAAC,CA4JjB"}
|
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
import { PlanningDraftTransactionSchema, PlanningGapReportSchema, toAtomWorkflowError } from "@atom-workflow-agent/contracts";
|
|
2
|
+
import { WorkflowCliService, } from "./workflow-service.js";
|
|
3
|
+
import { formatWorkflowDefinitionOutput, formatWorkflowOutput } from "./workflow-output.js";
|
|
4
|
+
import { PlanningCliService } from "./planning-cli-service.js";
|
|
5
|
+
import { inlineJson, integerOption, jsonSource, option, optionalJson, positiveIntegerOption, required, startRequest, writeTextOutput, } from "./workflow-command-input.js";
|
|
6
|
+
import { atomExecutionOptions, executionOptions } from "./workflow-command-progress.js";
|
|
7
|
+
function success(command, data) {
|
|
8
|
+
return { schemaVersion: "1.0", ok: true, command, data: JSON.parse(JSON.stringify(data)) };
|
|
9
|
+
}
|
|
10
|
+
function errorDetails(error) {
|
|
11
|
+
if (error === undefined)
|
|
12
|
+
return undefined;
|
|
13
|
+
if (error instanceof Error) {
|
|
14
|
+
const details = {};
|
|
15
|
+
for (const key of Object.getOwnPropertyNames(error)) {
|
|
16
|
+
if (key === "stack" || key === "message" || key === "name")
|
|
17
|
+
continue;
|
|
18
|
+
const value = error[key];
|
|
19
|
+
try {
|
|
20
|
+
details[key] = JSON.parse(JSON.stringify(value));
|
|
21
|
+
}
|
|
22
|
+
catch { /* omit non-JSON details */ }
|
|
23
|
+
}
|
|
24
|
+
return Object.keys(details).length > 0 ? details : undefined;
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
const serialized = JSON.stringify(error);
|
|
28
|
+
return serialized === undefined ? undefined : JSON.parse(serialized);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function failure(command, error) {
|
|
35
|
+
const normalized = toAtomWorkflowError(error, "CLI_COMMAND_FAILED");
|
|
36
|
+
const details = errorDetails(normalized.cause ?? error);
|
|
37
|
+
return {
|
|
38
|
+
schemaVersion: "1.0",
|
|
39
|
+
ok: false,
|
|
40
|
+
command,
|
|
41
|
+
error: {
|
|
42
|
+
code: normalized.code,
|
|
43
|
+
message: normalized.message,
|
|
44
|
+
retryable: normalized.retryable,
|
|
45
|
+
...(details !== undefined ? { details } : {}),
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function workflowReference(args) {
|
|
50
|
+
const references = ["--workflow-revision", "--workflow", "--workflow-id"]
|
|
51
|
+
.map((name) => option(args, name))
|
|
52
|
+
.filter((value) => value !== undefined);
|
|
53
|
+
if (references.length !== 1)
|
|
54
|
+
throw Object.assign(new Error("Use exactly one of --workflow, --workflow-id, or --workflow-revision"), { code: "CLI_INPUT_INVALID" });
|
|
55
|
+
return references[0];
|
|
56
|
+
}
|
|
57
|
+
async function machineCommand(group, action, args, service, dependencies, execution) {
|
|
58
|
+
if (group === "planning") {
|
|
59
|
+
const runId = required(args, "--plan-id");
|
|
60
|
+
const call = (name) => {
|
|
61
|
+
const value = service[name];
|
|
62
|
+
if (typeof value !== "function")
|
|
63
|
+
throw Object.assign(new Error(`Planning command is unavailable: ${action}`), { code: "CLI_COMMAND_UNAVAILABLE" });
|
|
64
|
+
return value;
|
|
65
|
+
};
|
|
66
|
+
if (action === "workspace-inspect")
|
|
67
|
+
return call("inspectWorkspace").call(service, runId);
|
|
68
|
+
if (action === "workspace-frontier")
|
|
69
|
+
return call("workspaceFrontier").call(service, runId);
|
|
70
|
+
if (action === "catalog-search")
|
|
71
|
+
return call("searchWorkspaceCatalog").call(service, runId, option(args, "--query") ?? "");
|
|
72
|
+
if (action === "catalog-describe")
|
|
73
|
+
return call("describeWorkspaceAtom").call(service, runId, required(args, "--atom"));
|
|
74
|
+
if (action === "workspace-validate")
|
|
75
|
+
return call("validateWorkspace").call(service, runId);
|
|
76
|
+
if (action === "workspace-finalize")
|
|
77
|
+
return call("finalizeWorkspace").call(service, runId, {
|
|
78
|
+
revision: positiveIntegerOption(args, "--revision") ?? (() => { throw Object.assign(new Error("Missing required option: --revision"), { code: "CLI_INPUT_INVALID" }); })(),
|
|
79
|
+
draftHash: required(args, "--draft-hash"),
|
|
80
|
+
});
|
|
81
|
+
if (action === "workspace-apply") {
|
|
82
|
+
const file = option(args, "--transaction-file");
|
|
83
|
+
const inline = option(args, "--transaction");
|
|
84
|
+
if (!file && !inline)
|
|
85
|
+
throw Object.assign(new Error("Missing required option: --transaction-file or --transaction"), { code: "CLI_INPUT_INVALID" });
|
|
86
|
+
if (file && inline)
|
|
87
|
+
throw Object.assign(new Error("Use either --transaction-file or --transaction, not both"), { code: "CLI_INPUT_INVALID" });
|
|
88
|
+
const transaction = PlanningDraftTransactionSchema.parse(file ? await jsonSource(file, dependencies) : inlineJson(inline, "--transaction"));
|
|
89
|
+
return call("applyWorkspaceTransaction").call(service, runId, transaction);
|
|
90
|
+
}
|
|
91
|
+
if (action === "workspace-report-gap") {
|
|
92
|
+
const file = option(args, "--report-file");
|
|
93
|
+
const inline = option(args, "--report");
|
|
94
|
+
if (!file && !inline)
|
|
95
|
+
throw Object.assign(new Error("Missing required option: --report-file or --report"), { code: "CLI_INPUT_INVALID" });
|
|
96
|
+
if (file && inline)
|
|
97
|
+
throw Object.assign(new Error("Use either --report-file or --report, not both"), { code: "CLI_INPUT_INVALID" });
|
|
98
|
+
const report = PlanningGapReportSchema.parse(file ? await jsonSource(file, dependencies) : inlineJson(inline, "--report"));
|
|
99
|
+
return call("reportWorkspaceGap").call(service, runId, report);
|
|
100
|
+
}
|
|
101
|
+
throw Object.assign(new Error(`Unknown planning command: ${action}`), { code: "CLI_INPUT_INVALID" });
|
|
102
|
+
}
|
|
103
|
+
if (group === "atoms") {
|
|
104
|
+
if (action === "list")
|
|
105
|
+
return service.listAtoms();
|
|
106
|
+
if (action === "sources")
|
|
107
|
+
return service.listAtomSources();
|
|
108
|
+
if (action === "describe")
|
|
109
|
+
return service.describeAtom(required(args, "--atom"));
|
|
110
|
+
throw Object.assign(new Error(`Unknown atoms command: ${action}`), { code: "CLI_INPUT_INVALID" });
|
|
111
|
+
}
|
|
112
|
+
if (action === "graph") {
|
|
113
|
+
if (!service.graph)
|
|
114
|
+
throw Object.assign(new Error("Run graph command is unavailable"), { code: "CLI_COMMAND_UNAVAILABLE" });
|
|
115
|
+
return service.graph(required(args, "--run-id"));
|
|
116
|
+
}
|
|
117
|
+
const runId = action === "list" || action === "list-resumable" ? undefined : required(args, "--run-id");
|
|
118
|
+
let command;
|
|
119
|
+
switch (action) {
|
|
120
|
+
case "list":
|
|
121
|
+
command = { command: "list" };
|
|
122
|
+
break;
|
|
123
|
+
case "diagnose":
|
|
124
|
+
command = { command: "diagnose", runId: runId };
|
|
125
|
+
break;
|
|
126
|
+
case "artifacts":
|
|
127
|
+
command = { command: "artifacts", runId: runId };
|
|
128
|
+
break;
|
|
129
|
+
case "logs":
|
|
130
|
+
command = {
|
|
131
|
+
command: "inspect",
|
|
132
|
+
runId: runId,
|
|
133
|
+
level: "timeline",
|
|
134
|
+
...(positiveIntegerOption(args, "--limit") ? { limit: positiveIntegerOption(args, "--limit") } : {}),
|
|
135
|
+
...(option(args, "--node-id") ? { nodeId: option(args, "--node-id") } : {}),
|
|
136
|
+
...(option(args, "--activation-id") ? { activationId: option(args, "--activation-id") } : {}),
|
|
137
|
+
};
|
|
138
|
+
break;
|
|
139
|
+
case "inspect": {
|
|
140
|
+
const level = option(args, "--level");
|
|
141
|
+
if (level !== undefined && !["summary", "timeline", "evidence"].includes(level)) {
|
|
142
|
+
throw Object.assign(new Error("--level must be summary, timeline, or evidence"), { code: "CLI_INPUT_INVALID" });
|
|
143
|
+
}
|
|
144
|
+
command = {
|
|
145
|
+
command: "inspect",
|
|
146
|
+
runId: runId,
|
|
147
|
+
...(level ? { level: level } : {}),
|
|
148
|
+
...(option(args, "--cursor") ? { cursor: option(args, "--cursor") } : {}),
|
|
149
|
+
...(positiveIntegerOption(args, "--limit") ? { limit: positiveIntegerOption(args, "--limit") } : {}),
|
|
150
|
+
...(option(args, "--node-id") ? { nodeId: option(args, "--node-id") } : {}),
|
|
151
|
+
...(option(args, "--activation-id") ? { activationId: option(args, "--activation-id") } : {}),
|
|
152
|
+
...(option(args, "--attempt-id") ? { attemptId: option(args, "--attempt-id") } : {}),
|
|
153
|
+
};
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
case "follow":
|
|
157
|
+
command = { command: "follow", runId: runId, ...(integerOption(args, "--after") !== undefined ? { after: integerOption(args, "--after") } : {}) };
|
|
158
|
+
break;
|
|
159
|
+
case "signal":
|
|
160
|
+
command = {
|
|
161
|
+
command: "signal",
|
|
162
|
+
runId: runId,
|
|
163
|
+
signalId: required(args, "--signal-id"),
|
|
164
|
+
response: await (() => {
|
|
165
|
+
if (!option(args, "--response-file") && !option(args, "--response")) {
|
|
166
|
+
throw Object.assign(new Error("Missing required option: --response-file or --response"), { code: "CLI_INPUT_INVALID" });
|
|
167
|
+
}
|
|
168
|
+
return optionalJson(args, "--response-file", "--response", dependencies, null);
|
|
169
|
+
})(),
|
|
170
|
+
};
|
|
171
|
+
break;
|
|
172
|
+
case "list-resumable":
|
|
173
|
+
command = {
|
|
174
|
+
command: "list-resumable",
|
|
175
|
+
...(option(args, "--project-scope") ? { projectScope: option(args, "--project-scope") } : {}),
|
|
176
|
+
...(option(args, "--host-scope") ? { hostScope: option(args, "--host-scope") } : {}),
|
|
177
|
+
};
|
|
178
|
+
break;
|
|
179
|
+
case "inspect-handoff":
|
|
180
|
+
command = { command: "inspect-handoff", runId: runId, hostTaskId: required(args, "--host-task-id") };
|
|
181
|
+
break;
|
|
182
|
+
case "resume-host": {
|
|
183
|
+
const resultFile = option(args, "--result-file");
|
|
184
|
+
const resultInline = option(args, "--result");
|
|
185
|
+
if (!resultFile && !resultInline) {
|
|
186
|
+
throw Object.assign(new Error("Missing required option: --result or --result-file"), { code: "CLI_INPUT_INVALID" });
|
|
187
|
+
}
|
|
188
|
+
if (resultFile && resultInline) {
|
|
189
|
+
throw Object.assign(new Error("Use either --result or --result-file, not both"), { code: "CLI_INPUT_INVALID" });
|
|
190
|
+
}
|
|
191
|
+
command = {
|
|
192
|
+
command: "resume-host",
|
|
193
|
+
runId: runId,
|
|
194
|
+
result: (resultFile
|
|
195
|
+
? await jsonSource(resultFile, dependencies)
|
|
196
|
+
: inlineJson(resultInline, "--result")),
|
|
197
|
+
};
|
|
198
|
+
break;
|
|
199
|
+
}
|
|
200
|
+
case "retry":
|
|
201
|
+
command = { command: "retry", runId: runId, activationId: required(args, "--activation-id") };
|
|
202
|
+
break;
|
|
203
|
+
case "resume":
|
|
204
|
+
command = { command: "resume", runId: runId };
|
|
205
|
+
break;
|
|
206
|
+
case "cancel":
|
|
207
|
+
command = { command: "cancel", runId: runId };
|
|
208
|
+
break;
|
|
209
|
+
default: throw Object.assign(new Error(`Unknown run command: ${action}`), { code: "CLI_INPUT_INVALID" });
|
|
210
|
+
}
|
|
211
|
+
let data = await service.execute(command, execution);
|
|
212
|
+
if (action === "follow") {
|
|
213
|
+
const waitMs = integerOption(args, "--wait-ms", 0);
|
|
214
|
+
if (waitMs < 0 || waitMs > 60_000)
|
|
215
|
+
throw Object.assign(new Error("--wait-ms must be between 0 and 60000"), { code: "CLI_INPUT_INVALID" });
|
|
216
|
+
const started = Date.now();
|
|
217
|
+
while (Array.isArray(data) && data.length === 0 && Date.now() - started < waitMs) {
|
|
218
|
+
await (dependencies.wait ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms))))(Math.min(250, waitMs));
|
|
219
|
+
data = await service.execute(command, execution);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
return data;
|
|
223
|
+
}
|
|
224
|
+
export async function runWorkflowCommand(group, argv, io, dependencies) {
|
|
225
|
+
const action = argv[0] ?? "";
|
|
226
|
+
const commandName = `${group}.${action || "unknown"}`;
|
|
227
|
+
const reportsProgress = (group === "workflow" && action === "start") || (group === "plan" && ["start", "resume"].includes(action))
|
|
228
|
+
|| (group === "run" && ["signal", "resume-host", "retry", "resume", "cancel"].includes(action));
|
|
229
|
+
const progress = reportsProgress ? executionOptions(argv, io) : {};
|
|
230
|
+
let service;
|
|
231
|
+
try {
|
|
232
|
+
const parsedStartRequest = (group === "workflow" || group === "plan") && action === "start"
|
|
233
|
+
? await startRequest(argv.slice(1), dependencies)
|
|
234
|
+
: undefined;
|
|
235
|
+
if (group === "workflow" && action === "start" && !argv.includes("--quiet")) {
|
|
236
|
+
io.stderr("[Workflow] 正在加载 Runtime、配置与 Atom");
|
|
237
|
+
}
|
|
238
|
+
else if (group === "atom" && ["run", "dev", "resume"].includes(action) && !argv.includes("--quiet")) {
|
|
239
|
+
io.stderr("[Atom] 正在加载目录、契约与隔离执行器");
|
|
240
|
+
}
|
|
241
|
+
const commandArgs = argv.slice(1);
|
|
242
|
+
const serviceCwd = group === "planning" ? option(commandArgs, "--project-directory") ?? dependencies.cwd : dependencies.cwd;
|
|
243
|
+
const dataDirectory = group === "planning" ? option(commandArgs, "--data-directory") : undefined;
|
|
244
|
+
service = dependencies.createService
|
|
245
|
+
? await dependencies.createService(serviceCwd, dependencies.signal, dataDirectory)
|
|
246
|
+
: group === "planning"
|
|
247
|
+
? await PlanningCliService.create({ cwd: serviceCwd, ...(dataDirectory ? { dataDirectory } : {}) })
|
|
248
|
+
: await WorkflowCliService.create({ cwd: serviceCwd, ...(dependencies.signal ? { signal: dependencies.signal } : {}), ...(dataDirectory ? { dataDirectory } : {}) });
|
|
249
|
+
const call = (name) => {
|
|
250
|
+
const value = service[name];
|
|
251
|
+
if (typeof value !== "function")
|
|
252
|
+
throw Object.assign(new Error(`Command is unavailable: ${commandName}`), { code: "CLI_COMMAND_UNAVAILABLE" });
|
|
253
|
+
return value;
|
|
254
|
+
};
|
|
255
|
+
if (group === "inspector") {
|
|
256
|
+
if (action !== "start")
|
|
257
|
+
throw Object.assign(new Error(`Unknown inspector command: ${action}`), { code: "CLI_INPUT_INVALID" });
|
|
258
|
+
const resourceOptions = ["--resource-id", "--run-id", "--workflow", "--workflow-revision"]
|
|
259
|
+
.map((name) => [name, option(commandArgs, name)])
|
|
260
|
+
.filter((entry) => entry[1] !== undefined);
|
|
261
|
+
if (resourceOptions.length !== 1) {
|
|
262
|
+
throw Object.assign(new Error("Use exactly one of --run-id, --workflow, --workflow-revision, or --resource-id"), { code: "CLI_INPUT_INVALID" });
|
|
263
|
+
}
|
|
264
|
+
const [resourceOption, resourceId] = resourceOptions[0];
|
|
265
|
+
const port = integerOption(commandArgs, "--port", 4317);
|
|
266
|
+
const pollIntervalMs = integerOption(commandArgs, "--poll-interval-ms", 500);
|
|
267
|
+
const handle = await call("startInspector").call(service, resourceId, {
|
|
268
|
+
host: option(commandArgs, "--host") ?? "127.0.0.1",
|
|
269
|
+
port,
|
|
270
|
+
pollIntervalMs,
|
|
271
|
+
...(dependencies.signal ? { signal: dependencies.signal } : {}),
|
|
272
|
+
});
|
|
273
|
+
io.stdout(JSON.stringify(success(commandName, {
|
|
274
|
+
resourceId,
|
|
275
|
+
resourceKind: resourceOption === "--run-id" ? "run" : resourceOption === "--workflow" ? "workflow" : resourceOption === "--workflow-revision" ? "workflow-revision" : "unknown",
|
|
276
|
+
url: handle.url,
|
|
277
|
+
host: handle.host,
|
|
278
|
+
port: handle.port,
|
|
279
|
+
})));
|
|
280
|
+
await handle.closed;
|
|
281
|
+
await service.dispose?.();
|
|
282
|
+
service = undefined;
|
|
283
|
+
return 0;
|
|
284
|
+
}
|
|
285
|
+
let data;
|
|
286
|
+
if (group === "atom" && action === "check") {
|
|
287
|
+
data = call("describeAtom").call(service, required(commandArgs, "--atom"));
|
|
288
|
+
}
|
|
289
|
+
else if (group === "atom" && ["run", "dev"].includes(action)) {
|
|
290
|
+
const fixture = option(commandArgs, "--fixture");
|
|
291
|
+
if (action === "dev" && !fixture && !option(commandArgs, "--input-file") && !option(commandArgs, "--input")) {
|
|
292
|
+
throw Object.assign(new Error("Missing required option: --fixture, --input-file, or --input"), { code: "CLI_INPUT_INVALID" });
|
|
293
|
+
}
|
|
294
|
+
if (fixture && (option(commandArgs, "--input-file") || option(commandArgs, "--input"))) {
|
|
295
|
+
throw Object.assign(new Error("Use --fixture, --input-file, or --input, not multiple input sources"), { code: "CLI_INPUT_INVALID" });
|
|
296
|
+
}
|
|
297
|
+
const input = fixture
|
|
298
|
+
? await jsonSource(fixture, dependencies)
|
|
299
|
+
: await optionalJson(commandArgs, "--input-file", "--input", dependencies, {});
|
|
300
|
+
data = await call("runAtom").call(service, required(commandArgs, "--atom"), input, atomExecutionOptions(commandArgs, io));
|
|
301
|
+
}
|
|
302
|
+
else if (group === "atom" && action === "resume") {
|
|
303
|
+
const sources = [];
|
|
304
|
+
for (const name of ["--response-file", "--response", "--result-file", "--result"]) {
|
|
305
|
+
const source = option(commandArgs, name);
|
|
306
|
+
if (source)
|
|
307
|
+
sources.push([name, source]);
|
|
308
|
+
}
|
|
309
|
+
if (sources.length !== 1)
|
|
310
|
+
throw Object.assign(new Error("Use exactly one of --response, --response-file, --result, or --result-file"), { code: "CLI_INPUT_INVALID" });
|
|
311
|
+
const [name, source] = sources[0];
|
|
312
|
+
const value = name.endsWith("-file") ? await jsonSource(source, dependencies) : inlineJson(source, name);
|
|
313
|
+
data = await call("resumeAtom").call(service, required(commandArgs, "--attempt-id"), value, atomExecutionOptions(commandArgs, io));
|
|
314
|
+
}
|
|
315
|
+
else if (group === "atom" && action === "inspect") {
|
|
316
|
+
data = await call("inspectAtomAttempt").call(service, required(commandArgs, "--attempt-id"));
|
|
317
|
+
}
|
|
318
|
+
else if (group === "atom" && action === "events") {
|
|
319
|
+
data = await call("listAtomAttemptEvents").call(service, required(commandArgs, "--attempt-id"), integerOption(commandArgs, "--after", -1), positiveIntegerOption(commandArgs, "--limit") ?? 200);
|
|
320
|
+
}
|
|
321
|
+
else if (group === "atom") {
|
|
322
|
+
throw Object.assign(new Error(`Unknown atom command: ${action}`), { code: "CLI_INPUT_INVALID" });
|
|
323
|
+
}
|
|
324
|
+
else if (group === "workflow" && action === "start")
|
|
325
|
+
data = await service.start(parsedStartRequest, progress);
|
|
326
|
+
else if (group === "plan" && action === "start")
|
|
327
|
+
data = await call("plan").call(service, parsedStartRequest, progress);
|
|
328
|
+
else if (group === "plan" && action === "list")
|
|
329
|
+
data = await call("listPlans").call(service);
|
|
330
|
+
else if (group === "plan" && action === "inspect") {
|
|
331
|
+
const view = option(commandArgs, "--view") ?? "summary";
|
|
332
|
+
if (!["summary", "workspace", "capabilities", "gaps", "bindings", "workflow", "validation"].includes(view))
|
|
333
|
+
throw Object.assign(new Error("Invalid Plan view"), { code: "CLI_INPUT_INVALID" });
|
|
334
|
+
data = await call("inspectPlan").call(service, required(commandArgs, "--plan-id"), view);
|
|
335
|
+
}
|
|
336
|
+
else if (group === "plan" && action === "cancel")
|
|
337
|
+
data = await call("cancelPlan").call(service, required(commandArgs, "--plan-id"));
|
|
338
|
+
else if (group === "plan" && action === "resume") {
|
|
339
|
+
const patch = await optionalJson(commandArgs, "--input-file", "--input", dependencies, {});
|
|
340
|
+
if (patch === null || typeof patch !== "object" || Array.isArray(patch))
|
|
341
|
+
throw Object.assign(new Error("Plan resume input must be an object"), { code: "CLI_INPUT_INVALID" });
|
|
342
|
+
data = await call("resumePlan").call(service, required(commandArgs, "--plan-id"), patch, progress);
|
|
343
|
+
}
|
|
344
|
+
else if (group === "workflow" && ["validate", "save"].includes(action)) {
|
|
345
|
+
const file = option(commandArgs, "--file");
|
|
346
|
+
const revisionId = option(commandArgs, "--workflow-revision");
|
|
347
|
+
if (action === "save" && !file)
|
|
348
|
+
throw Object.assign(new Error("Missing required option: --file"), { code: "CLI_INPUT_INVALID" });
|
|
349
|
+
if (action === "validate" && Boolean(file) === Boolean(revisionId))
|
|
350
|
+
throw Object.assign(new Error("Use exactly one of --file or --workflow-revision"), { code: "CLI_INPUT_INVALID" });
|
|
351
|
+
const raw = file ? await jsonSource(file, dependencies) : undefined;
|
|
352
|
+
const mode = option(commandArgs, "--completion-mode");
|
|
353
|
+
if (mode && mode !== "outputs" && mode !== "side-effect-only")
|
|
354
|
+
throw Object.assign(new Error("Invalid completion mode"), { code: "CLI_INPUT_INVALID" });
|
|
355
|
+
const sourceKind = option(commandArgs, "--source");
|
|
356
|
+
if (sourceKind && sourceKind !== "file" && sourceKind !== "host")
|
|
357
|
+
throw Object.assign(new Error("--source must be file or host"), { code: "CLI_INPUT_INVALID" });
|
|
358
|
+
data = action === "validate" ? revisionId ? await call("verifyWorkflowRevision").call(service, revisionId) : await call("validateWorkflow").call(service, raw, mode) : await call("saveWorkflow").call(service, raw, { ...(option(commandArgs, "--workflow-id") ? { workflowId: option(commandArgs, "--workflow-id") } : {}), ...(mode ? { completionMode: mode } : {}), ...(sourceKind ? { sourceKind: sourceKind } : {}) });
|
|
359
|
+
}
|
|
360
|
+
else if (group === "workflow" && action === "list")
|
|
361
|
+
data = await call("listWorkflows").call(service);
|
|
362
|
+
else if (group === "workflow" && action === "inspect")
|
|
363
|
+
data = await call("inspectWorkflow").call(service, workflowReference(commandArgs));
|
|
364
|
+
else if (group === "workflow" && action === "verify")
|
|
365
|
+
data = await call("verifyWorkflowRevision").call(service, workflowReference(commandArgs));
|
|
366
|
+
else if (group === "workflow" && action === "topology")
|
|
367
|
+
data = await call("topology").call(service, workflowReference(commandArgs), option(commandArgs, "--format") === "terminal" ? "terminal" : "json");
|
|
368
|
+
else if (group === "workflow" && action === "graph")
|
|
369
|
+
data = await call("graph").call(service, workflowReference(commandArgs));
|
|
370
|
+
else if (group === "workflow" && action === "export") {
|
|
371
|
+
const exported = await call("exportWorkflow").call(service, workflowReference(commandArgs));
|
|
372
|
+
const output = option(commandArgs, "--output");
|
|
373
|
+
if (output) {
|
|
374
|
+
const value = exported;
|
|
375
|
+
const path = await writeTextOutput(output, `${JSON.stringify(value.workflowSpec, null, 2)}\n`, dependencies);
|
|
376
|
+
data = { workflowRevisionId: value.workflowRevisionId, output: path };
|
|
377
|
+
}
|
|
378
|
+
else
|
|
379
|
+
data = exported;
|
|
380
|
+
}
|
|
381
|
+
else if (group === "workflow" && action === "diff")
|
|
382
|
+
data = await call("diffWorkflows").call(service, required(commandArgs, "--from"), required(commandArgs, "--to"));
|
|
383
|
+
else if (group === "workflow" && action === "run") {
|
|
384
|
+
const inputs = await optionalJson(commandArgs, "--input-file", "--input", dependencies, {});
|
|
385
|
+
if (inputs === null || typeof inputs !== "object" || Array.isArray(inputs))
|
|
386
|
+
throw Object.assign(new Error("Workflow input must be an object"), { code: "CLI_INPUT_INVALID" });
|
|
387
|
+
data = await call("runWorkflowRevision").call(service, workflowReference(commandArgs), { inputs: inputs, ...(option(commandArgs, "--run-id") ? { runId: option(commandArgs, "--run-id") } : {}), ...(option(commandArgs, "--goal") ? { goal: option(commandArgs, "--goal") } : {}) });
|
|
388
|
+
}
|
|
389
|
+
else if (group === "workflow" || group === "plan")
|
|
390
|
+
throw Object.assign(new Error(`Unknown ${group} command: ${action}`), { code: "CLI_INPUT_INVALID" });
|
|
391
|
+
else
|
|
392
|
+
data = await machineCommand(group, action, commandArgs, service, dependencies, progress);
|
|
393
|
+
await service.dispose?.();
|
|
394
|
+
service = undefined;
|
|
395
|
+
if (group === "run" && action === "follow" && argv.includes("--jsonl")) {
|
|
396
|
+
for (const event of data)
|
|
397
|
+
io.stdout(JSON.stringify(event));
|
|
398
|
+
}
|
|
399
|
+
else {
|
|
400
|
+
const output = group === "workflow" && ["save", "inspect", "verify"].includes(action)
|
|
401
|
+
? formatWorkflowDefinitionOutput(data, argv.includes("--full"))
|
|
402
|
+
: group === "atom"
|
|
403
|
+
|| ((group === "run" || group === "workflow") && action === "graph")
|
|
404
|
+
|| (group === "run" && ["inspect", "diagnose", "logs", "artifacts"].includes(action))
|
|
405
|
+
? data
|
|
406
|
+
: formatWorkflowOutput(data, {
|
|
407
|
+
full: argv.includes("--full"),
|
|
408
|
+
includeEvents: argv.includes("--include-events"),
|
|
409
|
+
});
|
|
410
|
+
io.stdout(JSON.stringify(success(commandName, output)));
|
|
411
|
+
}
|
|
412
|
+
return 0;
|
|
413
|
+
}
|
|
414
|
+
catch (error) {
|
|
415
|
+
try {
|
|
416
|
+
await service?.dispose?.();
|
|
417
|
+
}
|
|
418
|
+
catch { /* Preserve the command failure as primary. */ }
|
|
419
|
+
const envelope = failure(commandName, error);
|
|
420
|
+
io.stderr(JSON.stringify(envelope));
|
|
421
|
+
return envelope.ok ? 0 : envelope.error.code === "CANCELLED" || envelope.error.code === "ACP_CANCELLED" ? 130
|
|
422
|
+
: envelope.error.code.startsWith("CLI_") || envelope.error.code === "PROJECT_CONFIG_INVALID" ? 2 : 1;
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
//# sourceMappingURL=workflow-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-command.js","sourceRoot":"","sources":["../../src/workflow/workflow-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { PlannerInput } from "@atom-workflow-agent/contracts";
|
|
2
|
+
import { LocalPlanStore, PlanningController, type DurablePlanRecord, type PlanningControllerOptions, type PlanningModelTarget } from "@atom-workflow-agent/workflow-planner";
|
|
3
|
+
import { LocalWorkflowStore } from "@atom-workflow-agent/workflow-engine";
|
|
4
|
+
export interface PlanWorkflowInput {
|
|
5
|
+
readonly planId: string;
|
|
6
|
+
readonly workflowId: string;
|
|
7
|
+
readonly goal: string;
|
|
8
|
+
readonly cwd: string;
|
|
9
|
+
readonly projectScope?: string;
|
|
10
|
+
readonly hostScope?: string;
|
|
11
|
+
readonly plannerInput: PlannerInput;
|
|
12
|
+
readonly target: PlanningModelTarget;
|
|
13
|
+
readonly planning?: PlanningControllerOptions;
|
|
14
|
+
}
|
|
15
|
+
/** Planning boundary: publishes an immutable Workflow Revision, but never creates or executes a Run. */
|
|
16
|
+
export declare class WorkflowCoordinator {
|
|
17
|
+
private readonly planning;
|
|
18
|
+
private readonly plans;
|
|
19
|
+
private readonly workflows;
|
|
20
|
+
private readonly now;
|
|
21
|
+
constructor(planning: PlanningController, plans: LocalPlanStore, workflows: LocalWorkflowStore, now?: () => Date);
|
|
22
|
+
plan(input: PlanWorkflowInput, resumeRecord?: DurablePlanRecord): Promise<DurablePlanRecord>;
|
|
23
|
+
resume(input: PlanWorkflowInput): Promise<DurablePlanRecord>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=workflow-coordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-coordinator.d.ts","sourceRoot":"","sources":["../../src/workflow/workflow-coordinator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE1F,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAiD,KAAK,iBAAiB,EAAiD,KAAK,yBAAyB,EAA2B,KAAK,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACpS,OAAO,EAAE,kBAAkB,EAAuC,MAAM,sCAAsC,CAAC;AAE/G,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAClG,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACjG,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC;CACrF;AAuBD,wGAAwG;AACxG,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAAsB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAkB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAAsB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAA1I,QAAQ,EAAE,kBAAkB,EAAmB,KAAK,EAAE,cAAc,EAAmB,SAAS,EAAE,kBAAkB,EAAmB,GAAG,GAAE,MAAM,IAAuB;IAEhM,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,YAAY,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAoD5F,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAMnE"}
|