openclaw-swarm-layer 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 (120) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +169 -0
  3. package/dist/src/cli/context.d.ts +18 -0
  4. package/dist/src/cli/context.js +60 -0
  5. package/dist/src/cli/output.d.ts +1 -0
  6. package/dist/src/cli/output.js +9 -0
  7. package/dist/src/cli/register-swarm-cli.d.ts +6 -0
  8. package/dist/src/cli/register-swarm-cli.js +130 -0
  9. package/dist/src/cli/swarm-doctor.d.ts +40 -0
  10. package/dist/src/cli/swarm-doctor.js +69 -0
  11. package/dist/src/cli/swarm-init.d.ts +9 -0
  12. package/dist/src/cli/swarm-init.js +10 -0
  13. package/dist/src/cli/swarm-plan.d.ts +13 -0
  14. package/dist/src/cli/swarm-plan.js +39 -0
  15. package/dist/src/cli/swarm-report.d.ts +9 -0
  16. package/dist/src/cli/swarm-report.js +14 -0
  17. package/dist/src/cli/swarm-review.d.ts +8 -0
  18. package/dist/src/cli/swarm-review.js +34 -0
  19. package/dist/src/cli/swarm-run.d.ts +7 -0
  20. package/dist/src/cli/swarm-run.js +39 -0
  21. package/dist/src/cli/swarm-session-cancel.d.ts +6 -0
  22. package/dist/src/cli/swarm-session-cancel.js +64 -0
  23. package/dist/src/cli/swarm-session-cleanup.d.ts +16 -0
  24. package/dist/src/cli/swarm-session-cleanup.js +34 -0
  25. package/dist/src/cli/swarm-session-close.d.ts +6 -0
  26. package/dist/src/cli/swarm-session-close.js +53 -0
  27. package/dist/src/cli/swarm-session-followup.d.ts +7 -0
  28. package/dist/src/cli/swarm-session-followup.js +63 -0
  29. package/dist/src/cli/swarm-session-inspect.d.ts +5 -0
  30. package/dist/src/cli/swarm-session-inspect.js +12 -0
  31. package/dist/src/cli/swarm-session-list.d.ts +4 -0
  32. package/dist/src/cli/swarm-session-list.js +19 -0
  33. package/dist/src/cli/swarm-session-status.d.ts +5 -0
  34. package/dist/src/cli/swarm-session-status.js +85 -0
  35. package/dist/src/cli/swarm-session-steer.d.ts +6 -0
  36. package/dist/src/cli/swarm-session-steer.js +40 -0
  37. package/dist/src/cli/swarm-status.d.ts +81 -0
  38. package/dist/src/cli/swarm-status.js +56 -0
  39. package/dist/src/config.d.ts +159 -0
  40. package/dist/src/config.js +292 -0
  41. package/dist/src/index.d.ts +10 -0
  42. package/dist/src/index.js +24 -0
  43. package/dist/src/lib/json-file.d.ts +5 -0
  44. package/dist/src/lib/json-file.js +42 -0
  45. package/dist/src/lib/paths.d.ts +25 -0
  46. package/dist/src/lib/paths.js +41 -0
  47. package/dist/src/planning/planner.d.ts +3 -0
  48. package/dist/src/planning/planner.js +39 -0
  49. package/dist/src/planning/task-graph.d.ts +8 -0
  50. package/dist/src/planning/task-graph.js +59 -0
  51. package/dist/src/reporting/obsidian-journal.d.ts +7 -0
  52. package/dist/src/reporting/obsidian-journal.js +126 -0
  53. package/dist/src/reporting/operator-summary.d.ts +32 -0
  54. package/dist/src/reporting/operator-summary.js +124 -0
  55. package/dist/src/reporting/reporter.d.ts +10 -0
  56. package/dist/src/reporting/reporter.js +128 -0
  57. package/dist/src/review/review-gate.d.ts +15 -0
  58. package/dist/src/review/review-gate.js +116 -0
  59. package/dist/src/runtime/acp-mapping.d.ts +23 -0
  60. package/dist/src/runtime/acp-mapping.js +50 -0
  61. package/dist/src/runtime/acp-runner.d.ts +11 -0
  62. package/dist/src/runtime/acp-runner.js +83 -0
  63. package/dist/src/runtime/bridge-errors.d.ts +8 -0
  64. package/dist/src/runtime/bridge-errors.js +59 -0
  65. package/dist/src/runtime/bridge-manifest.d.ts +30 -0
  66. package/dist/src/runtime/bridge-manifest.js +87 -0
  67. package/dist/src/runtime/bridge-openclaw-session-adapter.d.ts +48 -0
  68. package/dist/src/runtime/bridge-openclaw-session-adapter.js +142 -0
  69. package/dist/src/runtime/bridge-openclaw-subagent-adapter.d.ts +33 -0
  70. package/dist/src/runtime/bridge-openclaw-subagent-adapter.js +149 -0
  71. package/dist/src/runtime/manual-runner.d.ts +9 -0
  72. package/dist/src/runtime/manual-runner.js +53 -0
  73. package/dist/src/runtime/openclaw-exec-bridge.d.ts +211 -0
  74. package/dist/src/runtime/openclaw-exec-bridge.js +498 -0
  75. package/dist/src/runtime/openclaw-session-adapter.d.ts +48 -0
  76. package/dist/src/runtime/openclaw-session-adapter.js +14 -0
  77. package/dist/src/runtime/openclaw-subagent-adapter.d.ts +42 -0
  78. package/dist/src/runtime/openclaw-subagent-adapter.js +11 -0
  79. package/dist/src/runtime/public-api-seams.d.ts +23 -0
  80. package/dist/src/runtime/public-api-seams.js +79 -0
  81. package/dist/src/runtime/real-openclaw-session-adapter.d.ts +83 -0
  82. package/dist/src/runtime/real-openclaw-session-adapter.js +91 -0
  83. package/dist/src/runtime/retry-engine.d.ts +7 -0
  84. package/dist/src/runtime/retry-engine.js +29 -0
  85. package/dist/src/runtime/runner-registry.d.ts +6 -0
  86. package/dist/src/runtime/runner-registry.js +25 -0
  87. package/dist/src/runtime/session-sync.d.ts +9 -0
  88. package/dist/src/runtime/session-sync.js +165 -0
  89. package/dist/src/runtime/subagent-mapping.d.ts +9 -0
  90. package/dist/src/runtime/subagent-mapping.js +31 -0
  91. package/dist/src/runtime/subagent-runner.d.ts +9 -0
  92. package/dist/src/runtime/subagent-runner.js +63 -0
  93. package/dist/src/runtime/task-runner.d.ts +38 -0
  94. package/dist/src/runtime/task-runner.js +1 -0
  95. package/dist/src/schemas/run.schema.json +51 -0
  96. package/dist/src/schemas/spec.schema.json +30 -0
  97. package/dist/src/schemas/task.schema.json +48 -0
  98. package/dist/src/schemas/workflow-state.schema.json +46 -0
  99. package/dist/src/services/orchestrator.d.ts +47 -0
  100. package/dist/src/services/orchestrator.js +224 -0
  101. package/dist/src/session/session-lifecycle.d.ts +6 -0
  102. package/dist/src/session/session-lifecycle.js +84 -0
  103. package/dist/src/session/session-selector.d.ts +12 -0
  104. package/dist/src/session/session-selector.js +72 -0
  105. package/dist/src/session/session-store.d.ts +14 -0
  106. package/dist/src/session/session-store.js +84 -0
  107. package/dist/src/spec/spec-importer.d.ts +4 -0
  108. package/dist/src/spec/spec-importer.js +80 -0
  109. package/dist/src/state/state-store.d.ts +22 -0
  110. package/dist/src/state/state-store.js +187 -0
  111. package/dist/src/tools/index.d.ts +2 -0
  112. package/dist/src/tools/index.js +116 -0
  113. package/dist/src/types.d.ts +151 -0
  114. package/dist/src/types.js +1 -0
  115. package/dist/src/workspace/workspace-manager.d.ts +8 -0
  116. package/dist/src/workspace/workspace-manager.js +18 -0
  117. package/openclaw.plugin.json +121 -0
  118. package/package.json +62 -0
  119. package/scripts/openclaw-exec-bridge.mjs +4 -0
  120. package/skills/swarm-layer/SKILL.md +358 -0
@@ -0,0 +1,149 @@
1
+ import { fileURLToPath } from "node:url";
2
+ import path from "node:path";
3
+ import { formatBridgeFailure } from "./bridge-errors.js";
4
+ export const SUBAGENT_BRIDGE_REPLACEMENT_BOUNDARY = {
5
+ currentImplementation: "bridge-openclaw-subagent-adapter -> openclaw-exec-bridge patched helpers",
6
+ targetImplementation: "public subagent spawn helper from top-level plugin-sdk export",
7
+ publicExport: "spawnSubagentDirect",
8
+ };
9
+ function resolveBridgeScriptPath() {
10
+ const currentFile = fileURLToPath(import.meta.url);
11
+ let cursor = path.dirname(currentFile);
12
+ while (true) {
13
+ const packageJson = path.join(cursor, "package.json");
14
+ if (path.basename(cursor) === "openclaw-swarm-layer") {
15
+ break;
16
+ }
17
+ const parent = path.dirname(cursor);
18
+ if (parent === cursor) {
19
+ throw new Error("Unable to resolve swarm-layer project root for subagent bridge script");
20
+ }
21
+ cursor = parent;
22
+ }
23
+ return path.join(cursor, "scripts", "openclaw-exec-bridge.mjs");
24
+ }
25
+ function resolveTsxLoaderPath() {
26
+ const currentFile = fileURLToPath(import.meta.url);
27
+ let cursor = path.dirname(currentFile);
28
+ while (true) {
29
+ const candidate = path.join(cursor, "node_modules", "tsx", "dist", "loader.mjs");
30
+ if (path.basename(cursor) === "openclaw-swarm-layer") {
31
+ return candidate;
32
+ }
33
+ const parent = path.dirname(cursor);
34
+ if (parent === cursor) {
35
+ throw new Error("Unable to resolve tsx loader for subagent bridge");
36
+ }
37
+ cursor = parent;
38
+ }
39
+ }
40
+ async function runBridgeCommandDirect(argv, options) {
41
+ const { spawn } = await import("node:child_process");
42
+ return await new Promise((resolve, reject) => {
43
+ const child = spawn(argv[0], argv.slice(1), {
44
+ cwd: options.cwd,
45
+ stdio: ["pipe", "pipe", "pipe"],
46
+ env: process.env,
47
+ });
48
+ let stdout = "";
49
+ let stderr = "";
50
+ let settled = false;
51
+ const timer = setTimeout(() => child.kill("SIGTERM"), options.timeoutMs);
52
+ child.stdout.on("data", (chunk) => {
53
+ stdout += chunk.toString();
54
+ });
55
+ child.stderr.on("data", (chunk) => {
56
+ stderr += chunk.toString();
57
+ });
58
+ child.on("error", (error) => {
59
+ if (settled)
60
+ return;
61
+ settled = true;
62
+ clearTimeout(timer);
63
+ reject(error);
64
+ });
65
+ child.on("close", (code) => {
66
+ if (settled)
67
+ return;
68
+ settled = true;
69
+ clearTimeout(timer);
70
+ resolve({ code: code ?? 1, stdout, stderr });
71
+ });
72
+ child.stdin.write(options.input);
73
+ child.stdin.end();
74
+ });
75
+ }
76
+ export class BridgeOpenClawSubagentAdapter {
77
+ config;
78
+ nodePath;
79
+ bridgeScriptPath;
80
+ tsxLoaderPath;
81
+ commandRunner;
82
+ constructor(config, nodePath = config.bridge.nodePath ?? process.execPath, bridgeScriptPath = resolveBridgeScriptPath(), tsxLoaderPath = resolveTsxLoaderPath(), commandRunner = runBridgeCommandDirect) {
83
+ this.config = config;
84
+ this.nodePath = nodePath;
85
+ this.bridgeScriptPath = bridgeScriptPath;
86
+ this.tsxLoaderPath = tsxLoaderPath;
87
+ this.commandRunner = commandRunner;
88
+ }
89
+ async spawnSubagent(params) {
90
+ const result = await this.commandRunner([this.nodePath, "--import", this.tsxLoaderPath, this.bridgeScriptPath, "subagent-spawn"], {
91
+ timeoutMs: 120_000,
92
+ cwd: path.dirname(this.bridgeScriptPath),
93
+ input: JSON.stringify({
94
+ bridge: {
95
+ openclawRoot: this.config.bridge.openclawRoot,
96
+ versionAllow: this.config.bridge.versionAllow,
97
+ },
98
+ params,
99
+ }),
100
+ });
101
+ if (result.code !== 0) {
102
+ throw new Error(formatBridgeFailure("subagent-spawn", result.stderr.trim() || result.stdout.trim() || "unknown error"));
103
+ }
104
+ const parsed = JSON.parse(result.stdout);
105
+ return parsed.result;
106
+ }
107
+ async getSubagentRunStatus(childSessionKey) {
108
+ const result = await this.commandRunner([this.nodePath, "--import", this.tsxLoaderPath, this.bridgeScriptPath, "subagent-status"], {
109
+ timeoutMs: 120_000,
110
+ cwd: path.dirname(this.bridgeScriptPath),
111
+ input: JSON.stringify({
112
+ bridge: {
113
+ openclawRoot: this.config.bridge.openclawRoot,
114
+ versionAllow: this.config.bridge.versionAllow,
115
+ },
116
+ params: { childSessionKey },
117
+ }),
118
+ });
119
+ if (result.code !== 0) {
120
+ throw new Error(formatBridgeFailure("subagent-status", result.stderr.trim() || result.stdout.trim() || "unknown error"));
121
+ }
122
+ const parsed = JSON.parse(result.stdout);
123
+ return parsed.result;
124
+ }
125
+ async killSubagentRun(childSessionKey, reason) {
126
+ const result = await this.commandRunner([this.nodePath, "--import", this.tsxLoaderPath, this.bridgeScriptPath, "subagent-kill"], {
127
+ timeoutMs: 120_000,
128
+ cwd: path.dirname(this.bridgeScriptPath),
129
+ input: JSON.stringify({
130
+ bridge: {
131
+ openclawRoot: this.config.bridge.openclawRoot,
132
+ versionAllow: this.config.bridge.versionAllow,
133
+ },
134
+ params: { childSessionKey, reason },
135
+ }),
136
+ });
137
+ if (result.code !== 0) {
138
+ throw new Error(formatBridgeFailure("subagent-kill", result.stderr.trim() || result.stdout.trim() || "unknown error"));
139
+ }
140
+ const parsed = JSON.parse(result.stdout);
141
+ return parsed.result;
142
+ }
143
+ }
144
+ export function createBridgeSubagentAdapter(config) {
145
+ if (!config.bridge.enabled) {
146
+ return null;
147
+ }
148
+ return new BridgeOpenClawSubagentAdapter(config);
149
+ }
@@ -0,0 +1,9 @@
1
+ import { WorkspaceManager } from "../workspace/workspace-manager.js";
2
+ import type { TaskRunner, RunnerPlanInput, RunnerPlan, RunnerRunInput, RunnerRunResult } from "./task-runner.js";
3
+ export declare class ManualRunner implements TaskRunner {
4
+ private readonly workspaceManager;
5
+ readonly kind: "manual";
6
+ constructor(workspaceManager?: WorkspaceManager);
7
+ plan(input: RunnerPlanInput): Promise<RunnerPlan>;
8
+ run(input: RunnerRunInput): Promise<RunnerRunResult>;
9
+ }
@@ -0,0 +1,53 @@
1
+ import { WorkspaceManager } from "../workspace/workspace-manager.js";
2
+ function timestamp() {
3
+ return new Date().toISOString();
4
+ }
5
+ function nextAttempt(taskId, runIds) {
6
+ return runIds.filter((runId) => runId.startsWith(`${taskId}-run-`)).length + 1;
7
+ }
8
+ export class ManualRunner {
9
+ workspaceManager;
10
+ kind = "manual";
11
+ constructor(workspaceManager = new WorkspaceManager()) {
12
+ this.workspaceManager = workspaceManager;
13
+ }
14
+ async plan(input) {
15
+ const workspace = await this.workspaceManager.resolveWorkspace(input.projectRoot, input.task);
16
+ return {
17
+ runnable: true,
18
+ summary: `manual runner would use ${workspace.mode} workspace at ${workspace.workspacePath}`,
19
+ workspacePath: workspace.workspacePath,
20
+ nextStatus: input.task.review.required ? "review_required" : "done",
21
+ };
22
+ }
23
+ async run(input) {
24
+ const plan = await this.plan({ ...input, dryRun: false });
25
+ const runId = `${input.task.taskId}-run-${nextAttempt(input.task.taskId, input.workflow.tasks.flatMap((task) => (task.taskId === input.task.taskId ? [task.taskId] : [])))}`;
26
+ return {
27
+ accepted: true,
28
+ nextTaskStatus: plan.nextStatus,
29
+ runRecord: {
30
+ runId,
31
+ taskId: input.task.taskId,
32
+ attempt: 1,
33
+ status: "completed",
34
+ runner: { type: "manual" },
35
+ workspacePath: plan.workspacePath,
36
+ startedAt: timestamp(),
37
+ endedAt: timestamp(),
38
+ promptSummary: input.task.description,
39
+ resultSummary: input.task.review.required
40
+ ? "manual runner recorded task for review"
41
+ : "manual runner recorded task as complete",
42
+ artifacts: [],
43
+ sessionRef: {
44
+ runtime: "manual",
45
+ },
46
+ events: [
47
+ { at: timestamp(), type: "planned" },
48
+ { at: timestamp(), type: "completed" },
49
+ ],
50
+ },
51
+ };
52
+ }
53
+ }
@@ -0,0 +1,211 @@
1
+ type BridgeCommand = "doctor" | "acp-spawn" | "acp-status" | "acp-cancel" | "acp-close" | "subagent-spawn" | "subagent-status" | "subagent-kill";
2
+ type BridgeInput = {
3
+ bridge?: {
4
+ nodePath?: string;
5
+ openclawRoot?: string;
6
+ versionAllow?: string[];
7
+ };
8
+ params?: Record<string, unknown>;
9
+ };
10
+ export type BridgeDoctorResult = {
11
+ ok: boolean;
12
+ severity: "healthy" | "warning" | "blocked";
13
+ openclawRoot: string;
14
+ version?: string;
15
+ compatibility: {
16
+ strategy?: "internal-bundle";
17
+ testedAt?: string;
18
+ supportedRunners: string[];
19
+ replacementCandidates: string[];
20
+ notes: string[];
21
+ };
22
+ publicApi: {
23
+ acpControlPlaneExport: boolean;
24
+ subagentSpawnExport: boolean;
25
+ readyReplacementPoints: string[];
26
+ };
27
+ replacementPlan: Array<{
28
+ runner: "acp" | "subagent";
29
+ publicExport: string;
30
+ available: boolean;
31
+ status: "ready" | "blocked";
32
+ currentImplementation: string;
33
+ targetImplementation: string;
34
+ affectedModules: string[];
35
+ nextStep: string;
36
+ }>;
37
+ migrationChecklist: string[];
38
+ checks: {
39
+ versionMapped: boolean;
40
+ versionAllowed: boolean;
41
+ internalModuleResolved: boolean;
42
+ acpBackendHealthy: boolean;
43
+ subagentPatchable: boolean;
44
+ };
45
+ blockers: string[];
46
+ warnings: string[];
47
+ risks: string[];
48
+ remediation: string[];
49
+ nextAction: string;
50
+ };
51
+ export declare function deriveDoctorRemediation(report: Omit<BridgeDoctorResult, "remediation" | "nextAction" | "severity">): string[];
52
+ export declare function deriveDoctorSeverity(report: Omit<BridgeDoctorResult, "severity" | "nextAction">): BridgeDoctorResult["severity"];
53
+ export declare function deriveDoctorNextAction(report: Omit<BridgeDoctorResult, "nextAction">): string;
54
+ export declare function dedupeStrings(values: string[]): string[];
55
+ export declare function waitForAcpBackendHealthy(getBackend: () => {
56
+ healthy?: () => boolean;
57
+ } | null, backendId: string, timeoutMs?: number, intervalMs?: number): Promise<void>;
58
+ export declare function runBridgeCommand(command: BridgeCommand, input: BridgeInput): Promise<{
59
+ ok: boolean;
60
+ version: string;
61
+ result: BridgeDoctorResult;
62
+ } | {
63
+ ok: boolean;
64
+ version: string;
65
+ result: {
66
+ childSessionKey: unknown;
67
+ runId: unknown;
68
+ mode: {};
69
+ acceptedAt: string;
70
+ note: unknown;
71
+ state?: undefined;
72
+ checkedAt?: undefined;
73
+ message?: undefined;
74
+ outputText?: undefined;
75
+ killedAt?: undefined;
76
+ sessionKey?: undefined;
77
+ backend?: undefined;
78
+ backendSessionId?: undefined;
79
+ agentSessionId?: undefined;
80
+ cancelledAt?: undefined;
81
+ closedAt?: undefined;
82
+ };
83
+ } | {
84
+ ok: boolean;
85
+ version: string;
86
+ result: {
87
+ childSessionKey: string;
88
+ runId: string | undefined;
89
+ state: "failed" | "running" | "completed" | "cancelled";
90
+ checkedAt: string;
91
+ message: string | undefined;
92
+ outputText: string | undefined;
93
+ mode?: undefined;
94
+ acceptedAt?: undefined;
95
+ note?: undefined;
96
+ killedAt?: undefined;
97
+ sessionKey?: undefined;
98
+ backend?: undefined;
99
+ backendSessionId?: undefined;
100
+ agentSessionId?: undefined;
101
+ cancelledAt?: undefined;
102
+ closedAt?: undefined;
103
+ };
104
+ } | {
105
+ ok: boolean;
106
+ version: string;
107
+ result: {
108
+ childSessionKey: string;
109
+ killedAt: string;
110
+ message: string;
111
+ runId?: undefined;
112
+ mode?: undefined;
113
+ acceptedAt?: undefined;
114
+ note?: undefined;
115
+ state?: undefined;
116
+ checkedAt?: undefined;
117
+ outputText?: undefined;
118
+ sessionKey?: undefined;
119
+ backend?: undefined;
120
+ backendSessionId?: undefined;
121
+ agentSessionId?: undefined;
122
+ cancelledAt?: undefined;
123
+ closedAt?: undefined;
124
+ };
125
+ } | {
126
+ ok: boolean;
127
+ version: string;
128
+ result: {
129
+ sessionKey: string;
130
+ backend: any;
131
+ backendSessionId: any;
132
+ agentSessionId: any;
133
+ acceptedAt: string;
134
+ childSessionKey?: undefined;
135
+ runId?: undefined;
136
+ mode?: undefined;
137
+ note?: undefined;
138
+ state?: undefined;
139
+ checkedAt?: undefined;
140
+ message?: undefined;
141
+ outputText?: undefined;
142
+ killedAt?: undefined;
143
+ cancelledAt?: undefined;
144
+ closedAt?: undefined;
145
+ };
146
+ } | {
147
+ ok: boolean;
148
+ version: string;
149
+ result: {
150
+ sessionKey: string;
151
+ state: "failed" | "running" | "completed";
152
+ backend: any;
153
+ backendSessionId: any;
154
+ agentSessionId: any;
155
+ checkedAt: string;
156
+ message: any;
157
+ childSessionKey?: undefined;
158
+ runId?: undefined;
159
+ mode?: undefined;
160
+ acceptedAt?: undefined;
161
+ note?: undefined;
162
+ outputText?: undefined;
163
+ killedAt?: undefined;
164
+ cancelledAt?: undefined;
165
+ closedAt?: undefined;
166
+ };
167
+ } | {
168
+ ok: boolean;
169
+ version: string;
170
+ result: {
171
+ sessionKey: string;
172
+ cancelledAt: string;
173
+ message: string | undefined;
174
+ childSessionKey?: undefined;
175
+ runId?: undefined;
176
+ mode?: undefined;
177
+ acceptedAt?: undefined;
178
+ note?: undefined;
179
+ state?: undefined;
180
+ checkedAt?: undefined;
181
+ outputText?: undefined;
182
+ killedAt?: undefined;
183
+ backend?: undefined;
184
+ backendSessionId?: undefined;
185
+ agentSessionId?: undefined;
186
+ closedAt?: undefined;
187
+ };
188
+ } | {
189
+ ok: boolean;
190
+ version: string;
191
+ result: {
192
+ sessionKey: string;
193
+ closedAt: string;
194
+ message: any;
195
+ childSessionKey?: undefined;
196
+ runId?: undefined;
197
+ mode?: undefined;
198
+ acceptedAt?: undefined;
199
+ note?: undefined;
200
+ state?: undefined;
201
+ checkedAt?: undefined;
202
+ outputText?: undefined;
203
+ killedAt?: undefined;
204
+ backend?: undefined;
205
+ backendSessionId?: undefined;
206
+ agentSessionId?: undefined;
207
+ cancelledAt?: undefined;
208
+ };
209
+ }>;
210
+ export declare function main(argv: string[]): Promise<number>;
211
+ export {};