@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.
Files changed (96) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +61 -0
  3. package/README.zh-CN.md +61 -0
  4. package/dist/app.d.ts +14 -0
  5. package/dist/app.d.ts.map +1 -0
  6. package/dist/app.js +172 -0
  7. package/dist/app.js.map +1 -0
  8. package/dist/atoms/atom-development-service.d.ts +43 -0
  9. package/dist/atoms/atom-development-service.d.ts.map +1 -0
  10. package/dist/atoms/atom-development-service.js +308 -0
  11. package/dist/atoms/atom-development-service.js.map +1 -0
  12. package/dist/atoms/atom-development-store.d.ts +70 -0
  13. package/dist/atoms/atom-development-store.d.ts.map +1 -0
  14. package/dist/atoms/atom-development-store.js +271 -0
  15. package/dist/atoms/atom-development-store.js.map +1 -0
  16. package/dist/commands/doctor.d.ts +38 -0
  17. package/dist/commands/doctor.d.ts.map +1 -0
  18. package/dist/commands/doctor.js +163 -0
  19. package/dist/commands/doctor.js.map +1 -0
  20. package/dist/commands/models.d.ts +16 -0
  21. package/dist/commands/models.d.ts.map +1 -0
  22. package/dist/commands/models.js +20 -0
  23. package/dist/commands/models.js.map +1 -0
  24. package/dist/index.d.ts +3 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +19 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/local/local-project-service.d.ts +63 -0
  29. package/dist/local/local-project-service.d.ts.map +1 -0
  30. package/dist/local/local-project-service.js +327 -0
  31. package/dist/local/local-project-service.js.map +1 -0
  32. package/dist/logging/create-cli-logger.d.ts +8 -0
  33. package/dist/logging/create-cli-logger.d.ts.map +1 -0
  34. package/dist/logging/create-cli-logger.js +11 -0
  35. package/dist/logging/create-cli-logger.js.map +1 -0
  36. package/dist/logging/json-logger.d.ts +24 -0
  37. package/dist/logging/json-logger.d.ts.map +1 -0
  38. package/dist/logging/json-logger.js +29 -0
  39. package/dist/logging/json-logger.js.map +1 -0
  40. package/dist/providers/acp-planning-model-adapter.d.ts +9 -0
  41. package/dist/providers/acp-planning-model-adapter.d.ts.map +1 -0
  42. package/dist/providers/acp-planning-model-adapter.js +54 -0
  43. package/dist/providers/acp-planning-model-adapter.js.map +1 -0
  44. package/dist/providers/provider-name.d.ts +5 -0
  45. package/dist/providers/provider-name.d.ts.map +1 -0
  46. package/dist/providers/provider-name.js +4 -0
  47. package/dist/providers/provider-name.js.map +1 -0
  48. package/dist/providers/resolve-provider-config.d.ts +10 -0
  49. package/dist/providers/resolve-provider-config.d.ts.map +1 -0
  50. package/dist/providers/resolve-provider-config.js +14 -0
  51. package/dist/providers/resolve-provider-config.js.map +1 -0
  52. package/dist/providers/resolve-trae-executable.d.ts +20 -0
  53. package/dist/providers/resolve-trae-executable.d.ts.map +1 -0
  54. package/dist/providers/resolve-trae-executable.js +46 -0
  55. package/dist/providers/resolve-trae-executable.js.map +1 -0
  56. package/dist/workflow/builtin-atom-packages.d.ts +4 -0
  57. package/dist/workflow/builtin-atom-packages.d.ts.map +1 -0
  58. package/dist/workflow/builtin-atom-packages.js +39 -0
  59. package/dist/workflow/builtin-atom-packages.js.map +1 -0
  60. package/dist/workflow/planning-cli-service.d.ts +35 -0
  61. package/dist/workflow/planning-cli-service.d.ts.map +1 -0
  62. package/dist/workflow/planning-cli-service.js +97 -0
  63. package/dist/workflow/planning-cli-service.js.map +1 -0
  64. package/dist/workflow/workflow-command-input.d.ts +25 -0
  65. package/dist/workflow/workflow-command-input.d.ts.map +1 -0
  66. package/dist/workflow/workflow-command-input.js +117 -0
  67. package/dist/workflow/workflow-command-input.js.map +1 -0
  68. package/dist/workflow/workflow-command-progress.d.ts +6 -0
  69. package/dist/workflow/workflow-command-progress.d.ts.map +1 -0
  70. package/dist/workflow/workflow-command-progress.js +81 -0
  71. package/dist/workflow/workflow-command-progress.js.map +1 -0
  72. package/dist/workflow/workflow-command-service.d.ts +85 -0
  73. package/dist/workflow/workflow-command-service.d.ts.map +1 -0
  74. package/dist/workflow/workflow-command-service.js +2 -0
  75. package/dist/workflow/workflow-command-service.js.map +1 -0
  76. package/dist/workflow/workflow-command.d.ts +5 -0
  77. package/dist/workflow/workflow-command.d.ts.map +1 -0
  78. package/dist/workflow/workflow-command.js +425 -0
  79. package/dist/workflow/workflow-command.js.map +1 -0
  80. package/dist/workflow/workflow-coordinator.d.ts +25 -0
  81. package/dist/workflow/workflow-coordinator.d.ts.map +1 -0
  82. package/dist/workflow/workflow-coordinator.js +112 -0
  83. package/dist/workflow/workflow-coordinator.js.map +1 -0
  84. package/dist/workflow/workflow-output.d.ts +9 -0
  85. package/dist/workflow/workflow-output.d.ts.map +1 -0
  86. package/dist/workflow/workflow-output.js +109 -0
  87. package/dist/workflow/workflow-output.js.map +1 -0
  88. package/dist/workflow/workflow-project-config.d.ts +14 -0
  89. package/dist/workflow/workflow-project-config.d.ts.map +1 -0
  90. package/dist/workflow/workflow-project-config.js +55 -0
  91. package/dist/workflow/workflow-project-config.js.map +1 -0
  92. package/dist/workflow/workflow-service.d.ts +1237 -0
  93. package/dist/workflow/workflow-service.d.ts.map +1 -0
  94. package/dist/workflow/workflow-service.js +475 -0
  95. package/dist/workflow/workflow-service.js.map +1 -0
  96. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=workflow-command-service.js.map
@@ -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"}