@seawork/cli 1.0.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.
- package/bin/seawork +3 -0
- package/dist/classify.d.ts +19 -0
- package/dist/classify.d.ts.map +1 -0
- package/dist/classify.js +49 -0
- package/dist/classify.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +103 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/agent/archive.d.ts +18 -0
- package/dist/commands/agent/archive.d.ts.map +1 -0
- package/dist/commands/agent/archive.js +102 -0
- package/dist/commands/agent/archive.js.map +1 -0
- package/dist/commands/agent/attach.d.ts +11 -0
- package/dist/commands/agent/attach.d.ts.map +1 -0
- package/dist/commands/agent/attach.js +158 -0
- package/dist/commands/agent/attach.js.map +1 -0
- package/dist/commands/agent/delete.d.ts +15 -0
- package/dist/commands/agent/delete.d.ts.map +1 -0
- package/dist/commands/agent/delete.js +99 -0
- package/dist/commands/agent/delete.js.map +1 -0
- package/dist/commands/agent/index.d.ts +3 -0
- package/dist/commands/agent/index.d.ts.map +1 -0
- package/dist/commands/agent/index.js +46 -0
- package/dist/commands/agent/index.js.map +1 -0
- package/dist/commands/agent/inspect.d.ts +15 -0
- package/dist/commands/agent/inspect.d.ts.map +1 -0
- package/dist/commands/agent/inspect.js +207 -0
- package/dist/commands/agent/inspect.js.map +1 -0
- package/dist/commands/agent/logs.d.ts +16 -0
- package/dist/commands/agent/logs.d.ts.map +1 -0
- package/dist/commands/agent/logs.js +172 -0
- package/dist/commands/agent/logs.js.map +1 -0
- package/dist/commands/agent/ls.d.ts +38 -0
- package/dist/commands/agent/ls.d.ts.map +1 -0
- package/dist/commands/agent/ls.js +191 -0
- package/dist/commands/agent/ls.js.map +1 -0
- package/dist/commands/agent/mode.d.ts +18 -0
- package/dist/commands/agent/mode.d.ts.map +1 -0
- package/dist/commands/agent/mode.js +100 -0
- package/dist/commands/agent/mode.js.map +1 -0
- package/dist/commands/agent/reload.d.ts +15 -0
- package/dist/commands/agent/reload.d.ts.map +1 -0
- package/dist/commands/agent/reload.js +75 -0
- package/dist/commands/agent/reload.js.map +1 -0
- package/dist/commands/agent/run.d.ts +47 -0
- package/dist/commands/agent/run.d.ts.map +1 -0
- package/dist/commands/agent/run.js +431 -0
- package/dist/commands/agent/run.js.map +1 -0
- package/dist/commands/agent/send.d.ts +19 -0
- package/dist/commands/agent/send.d.ts.map +1 -0
- package/dist/commands/agent/send.js +217 -0
- package/dist/commands/agent/send.js.map +1 -0
- package/dist/commands/agent/stop.d.ts +17 -0
- package/dist/commands/agent/stop.d.ts.map +1 -0
- package/dist/commands/agent/stop.js +107 -0
- package/dist/commands/agent/stop.js.map +1 -0
- package/dist/commands/agent/update.d.ts +18 -0
- package/dist/commands/agent/update.d.ts.map +1 -0
- package/dist/commands/agent/update.js +139 -0
- package/dist/commands/agent/update.js.map +1 -0
- package/dist/commands/agent/wait.d.ts +17 -0
- package/dist/commands/agent/wait.d.ts.map +1 -0
- package/dist/commands/agent/wait.js +164 -0
- package/dist/commands/agent/wait.js.map +1 -0
- package/dist/commands/chat/create.d.ts +9 -0
- package/dist/commands/chat/create.d.ts.map +1 -0
- package/dist/commands/chat/create.js +23 -0
- package/dist/commands/chat/create.js.map +1 -0
- package/dist/commands/chat/delete.d.ts +6 -0
- package/dist/commands/chat/delete.d.ts.map +1 -0
- package/dist/commands/chat/delete.js +20 -0
- package/dist/commands/chat/delete.js.map +1 -0
- package/dist/commands/chat/index.d.ts +3 -0
- package/dist/commands/chat/index.d.ts.map +1 -0
- package/dist/commands/chat/index.js +47 -0
- package/dist/commands/chat/index.js.map +1 -0
- package/dist/commands/chat/inspect.d.ts +6 -0
- package/dist/commands/chat/inspect.d.ts.map +1 -0
- package/dist/commands/chat/inspect.js +20 -0
- package/dist/commands/chat/inspect.js.map +1 -0
- package/dist/commands/chat/ls.d.ts +6 -0
- package/dist/commands/chat/ls.d.ts.map +1 -0
- package/dist/commands/chat/ls.js +20 -0
- package/dist/commands/chat/ls.js.map +1 -0
- package/dist/commands/chat/post.d.ts +9 -0
- package/dist/commands/chat/post.d.ts.map +1 -0
- package/dist/commands/chat/post.js +28 -0
- package/dist/commands/chat/post.js.map +1 -0
- package/dist/commands/chat/read.d.ts +11 -0
- package/dist/commands/chat/read.d.ts.map +1 -0
- package/dist/commands/chat/read.js +40 -0
- package/dist/commands/chat/read.js.map +1 -0
- package/dist/commands/chat/schema.d.ts +36 -0
- package/dist/commands/chat/schema.d.ts.map +1 -0
- package/dist/commands/chat/schema.js +81 -0
- package/dist/commands/chat/schema.js.map +1 -0
- package/dist/commands/chat/shared.d.ts +16 -0
- package/dist/commands/chat/shared.d.ts.map +1 -0
- package/dist/commands/chat/shared.js +108 -0
- package/dist/commands/chat/shared.js.map +1 -0
- package/dist/commands/chat/wait.d.ts +9 -0
- package/dist/commands/chat/wait.d.ts.map +1 -0
- package/dist/commands/chat/wait.js +30 -0
- package/dist/commands/chat/wait.js.map +1 -0
- package/dist/commands/daemon/index.d.ts +3 -0
- package/dist/commands/daemon/index.d.ts.map +1 -0
- package/dist/commands/daemon/index.js +34 -0
- package/dist/commands/daemon/index.js.map +1 -0
- package/dist/commands/daemon/local-daemon.d.ts +54 -0
- package/dist/commands/daemon/local-daemon.d.ts.map +1 -0
- package/dist/commands/daemon/local-daemon.js +400 -0
- package/dist/commands/daemon/local-daemon.js.map +1 -0
- package/dist/commands/daemon/pair.d.ts +9 -0
- package/dist/commands/daemon/pair.d.ts.map +1 -0
- package/dist/commands/daemon/pair.js +42 -0
- package/dist/commands/daemon/pair.js.map +1 -0
- package/dist/commands/daemon/restart.d.ts +12 -0
- package/dist/commands/daemon/restart.d.ts.map +1 -0
- package/dist/commands/daemon/restart.js +98 -0
- package/dist/commands/daemon/restart.js.map +1 -0
- package/dist/commands/daemon/runtime-toolchain.d.ts +6 -0
- package/dist/commands/daemon/runtime-toolchain.d.ts.map +1 -0
- package/dist/commands/daemon/runtime-toolchain.js +102 -0
- package/dist/commands/daemon/runtime-toolchain.js.map +1 -0
- package/dist/commands/daemon/start.d.ts +6 -0
- package/dist/commands/daemon/start.d.ts.map +1 -0
- package/dist/commands/daemon/start.js +49 -0
- package/dist/commands/daemon/start.js.map +1 -0
- package/dist/commands/daemon/status.d.ts +10 -0
- package/dist/commands/daemon/status.d.ts.map +1 -0
- package/dist/commands/daemon/status.js +269 -0
- package/dist/commands/daemon/status.js.map +1 -0
- package/dist/commands/daemon/stop.d.ts +12 -0
- package/dist/commands/daemon/stop.d.ts.map +1 -0
- package/dist/commands/daemon/stop.js +56 -0
- package/dist/commands/daemon/stop.js.map +1 -0
- package/dist/commands/loop/index.d.ts +3 -0
- package/dist/commands/loop/index.d.ts.map +1 -0
- package/dist/commands/loop/index.js +18 -0
- package/dist/commands/loop/index.js.map +1 -0
- package/dist/commands/loop/inspect.d.ts +13 -0
- package/dist/commands/loop/inspect.d.ts.map +1 -0
- package/dist/commands/loop/inspect.js +100 -0
- package/dist/commands/loop/inspect.js.map +1 -0
- package/dist/commands/loop/logs.d.ts +8 -0
- package/dist/commands/loop/logs.d.ts.map +1 -0
- package/dist/commands/loop/logs.js +69 -0
- package/dist/commands/loop/logs.js.map +1 -0
- package/dist/commands/loop/ls.d.ts +18 -0
- package/dist/commands/loop/ls.d.ts.map +1 -0
- package/dist/commands/loop/ls.js +62 -0
- package/dist/commands/loop/ls.js.map +1 -0
- package/dist/commands/loop/run.d.ts +26 -0
- package/dist/commands/loop/run.d.ts.map +1 -0
- package/dist/commands/loop/run.js +116 -0
- package/dist/commands/loop/run.js.map +1 -0
- package/dist/commands/loop/stop.d.ts +15 -0
- package/dist/commands/loop/stop.d.ts.map +1 -0
- package/dist/commands/loop/stop.js +56 -0
- package/dist/commands/loop/stop.js.map +1 -0
- package/dist/commands/loop/types.d.ts +134 -0
- package/dist/commands/loop/types.d.ts.map +1 -0
- package/dist/commands/loop/types.js +2 -0
- package/dist/commands/loop/types.js.map +1 -0
- package/dist/commands/onboard.d.ts +10 -0
- package/dist/commands/onboard.d.ts.map +1 -0
- package/dist/commands/onboard.js +374 -0
- package/dist/commands/onboard.js.map +1 -0
- package/dist/commands/open.d.ts +2 -0
- package/dist/commands/open.d.ts.map +1 -0
- package/dist/commands/open.js +82 -0
- package/dist/commands/open.js.map +1 -0
- package/dist/commands/permit/allow.d.ts +20 -0
- package/dist/commands/permit/allow.d.ts.map +1 -0
- package/dist/commands/permit/allow.js +134 -0
- package/dist/commands/permit/allow.js.map +1 -0
- package/dist/commands/permit/deny.d.ts +12 -0
- package/dist/commands/permit/deny.d.ts.map +1 -0
- package/dist/commands/permit/deny.js +106 -0
- package/dist/commands/permit/deny.js.map +1 -0
- package/dist/commands/permit/index.d.ts +3 -0
- package/dist/commands/permit/index.d.ts.map +1 -0
- package/dist/commands/permit/index.js +27 -0
- package/dist/commands/permit/index.js.map +1 -0
- package/dist/commands/permit/ls.d.ts +18 -0
- package/dist/commands/permit/ls.d.ts.map +1 -0
- package/dist/commands/permit/ls.js +66 -0
- package/dist/commands/permit/ls.js.map +1 -0
- package/dist/commands/provider/index.d.ts +3 -0
- package/dist/commands/provider/index.d.ts.map +1 -0
- package/dist/commands/provider/index.js +16 -0
- package/dist/commands/provider/index.js.map +1 -0
- package/dist/commands/provider/ls.d.ts +17 -0
- package/dist/commands/provider/ls.d.ts.map +1 -0
- package/dist/commands/provider/ls.js +38 -0
- package/dist/commands/provider/ls.js.map +1 -0
- package/dist/commands/provider/models.d.ts +20 -0
- package/dist/commands/provider/models.d.ts.map +1 -0
- package/dist/commands/provider/models.js +53 -0
- package/dist/commands/provider/models.js.map +1 -0
- package/dist/commands/schedule/create.d.ts +13 -0
- package/dist/commands/schedule/create.d.ts.map +1 -0
- package/dist/commands/schedule/create.js +32 -0
- package/dist/commands/schedule/create.js.map +1 -0
- package/dist/commands/schedule/delete.d.ts +10 -0
- package/dist/commands/schedule/delete.d.ts.map +1 -0
- package/dist/commands/schedule/delete.js +32 -0
- package/dist/commands/schedule/delete.js.map +1 -0
- package/dist/commands/schedule/index.d.ts +3 -0
- package/dist/commands/schedule/index.d.ts.map +1 -0
- package/dist/commands/schedule/index.js +37 -0
- package/dist/commands/schedule/index.js.map +1 -0
- package/dist/commands/schedule/inspect.d.ts +6 -0
- package/dist/commands/schedule/inspect.d.ts.map +1 -0
- package/dist/commands/schedule/inspect.js +24 -0
- package/dist/commands/schedule/inspect.js.map +1 -0
- package/dist/commands/schedule/logs.d.ts +6 -0
- package/dist/commands/schedule/logs.d.ts.map +1 -0
- package/dist/commands/schedule/logs.js +23 -0
- package/dist/commands/schedule/logs.js.map +1 -0
- package/dist/commands/schedule/ls.d.ts +5 -0
- package/dist/commands/schedule/ls.d.ts.map +1 -0
- package/dist/commands/schedule/ls.js +23 -0
- package/dist/commands/schedule/ls.js.map +1 -0
- package/dist/commands/schedule/pause.d.ts +5 -0
- package/dist/commands/schedule/pause.d.ts.map +1 -0
- package/dist/commands/schedule/pause.js +23 -0
- package/dist/commands/schedule/pause.js.map +1 -0
- package/dist/commands/schedule/resume.d.ts +5 -0
- package/dist/commands/schedule/resume.d.ts.map +1 -0
- package/dist/commands/schedule/resume.js +23 -0
- package/dist/commands/schedule/resume.js.map +1 -0
- package/dist/commands/schedule/schema.d.ts +21 -0
- package/dist/commands/schedule/schema.d.ts.map +1 -0
- package/dist/commands/schedule/schema.js +67 -0
- package/dist/commands/schedule/schema.js.map +1 -0
- package/dist/commands/schedule/shared.d.ts +33 -0
- package/dist/commands/schedule/shared.d.ts.map +1 -0
- package/dist/commands/schedule/shared.js +148 -0
- package/dist/commands/schedule/shared.js.map +1 -0
- package/dist/commands/schedule/types.d.ts +137 -0
- package/dist/commands/schedule/types.d.ts.map +1 -0
- package/dist/commands/schedule/types.js +2 -0
- package/dist/commands/schedule/types.js.map +1 -0
- package/dist/commands/speech/index.d.ts +3 -0
- package/dist/commands/speech/index.d.ts.map +1 -0
- package/dist/commands/speech/index.js +5 -0
- package/dist/commands/speech/index.js.map +1 -0
- package/dist/commands/terminal/capture.d.ts +10 -0
- package/dist/commands/terminal/capture.d.ts.map +1 -0
- package/dist/commands/terminal/capture.js +68 -0
- package/dist/commands/terminal/capture.js.map +1 -0
- package/dist/commands/terminal/create.d.ts +10 -0
- package/dist/commands/terminal/create.d.ts.map +1 -0
- package/dist/commands/terminal/create.js +28 -0
- package/dist/commands/terminal/create.js.map +1 -0
- package/dist/commands/terminal/index.d.ts +3 -0
- package/dist/commands/terminal/index.d.ts.map +1 -0
- package/dist/commands/terminal/index.js +43 -0
- package/dist/commands/terminal/index.js.map +1 -0
- package/dist/commands/terminal/kill.d.ts +6 -0
- package/dist/commands/terminal/kill.d.ts.map +1 -0
- package/dist/commands/terminal/kill.js +36 -0
- package/dist/commands/terminal/kill.js.map +1 -0
- package/dist/commands/terminal/ls.d.ts +10 -0
- package/dist/commands/terminal/ls.d.ts.map +1 -0
- package/dist/commands/terminal/ls.js +21 -0
- package/dist/commands/terminal/ls.js.map +1 -0
- package/dist/commands/terminal/schema.d.ts +18 -0
- package/dist/commands/terminal/schema.d.ts.map +1 -0
- package/dist/commands/terminal/schema.js +23 -0
- package/dist/commands/terminal/schema.js.map +1 -0
- package/dist/commands/terminal/send-keys.d.ts +7 -0
- package/dist/commands/terminal/send-keys.d.ts.map +1 -0
- package/dist/commands/terminal/send-keys.js +76 -0
- package/dist/commands/terminal/send-keys.js.map +1 -0
- package/dist/commands/terminal/shared.d.ts +12 -0
- package/dist/commands/terminal/shared.d.ts.map +1 -0
- package/dist/commands/terminal/shared.js +61 -0
- package/dist/commands/terminal/shared.js.map +1 -0
- package/dist/commands/worktree/archive.d.ts +16 -0
- package/dist/commands/worktree/archive.d.ts.map +1 -0
- package/dist/commands/worktree/archive.js +99 -0
- package/dist/commands/worktree/archive.js.map +1 -0
- package/dist/commands/worktree/index.d.ts +3 -0
- package/dist/commands/worktree/index.d.ts.map +1 -0
- package/dist/commands/worktree/index.js +15 -0
- package/dist/commands/worktree/index.js.map +1 -0
- package/dist/commands/worktree/ls.d.ts +19 -0
- package/dist/commands/worktree/ls.d.ts.map +1 -0
- package/dist/commands/worktree/ls.js +97 -0
- package/dist/commands/worktree/ls.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/output/index.d.ts +45 -0
- package/dist/output/index.d.ts.map +1 -0
- package/dist/output/index.js +47 -0
- package/dist/output/index.js.map +1 -0
- package/dist/output/json.d.ts +11 -0
- package/dist/output/json.d.ts.map +1 -0
- package/dist/output/json.js +37 -0
- package/dist/output/json.js.map +1 -0
- package/dist/output/quiet.d.ts +9 -0
- package/dist/output/quiet.d.ts.map +1 -0
- package/dist/output/quiet.js +22 -0
- package/dist/output/quiet.js.map +1 -0
- package/dist/output/render.d.ts +15 -0
- package/dist/output/render.d.ts.map +1 -0
- package/dist/output/render.js +83 -0
- package/dist/output/render.js.map +1 -0
- package/dist/output/table.d.ts +13 -0
- package/dist/output/table.d.ts.map +1 -0
- package/dist/output/table.js +135 -0
- package/dist/output/table.js.map +1 -0
- package/dist/output/types.d.ts +73 -0
- package/dist/output/types.d.ts.map +1 -0
- package/dist/output/types.js +8 -0
- package/dist/output/types.js.map +1 -0
- package/dist/output/with-output.d.ts +37 -0
- package/dist/output/with-output.d.ts.map +1 -0
- package/dist/output/with-output.js +87 -0
- package/dist/output/with-output.js.map +1 -0
- package/dist/output/yaml.d.ts +11 -0
- package/dist/output/yaml.d.ts.map +1 -0
- package/dist/output/yaml.js +38 -0
- package/dist/output/yaml.js.map +1 -0
- package/dist/utils/client-id.d.ts +2 -0
- package/dist/utils/client-id.d.ts.map +1 -0
- package/dist/utils/client-id.js +37 -0
- package/dist/utils/client-id.js.map +1 -0
- package/dist/utils/client.d.ts +47 -0
- package/dist/utils/client.d.ts.map +1 -0
- package/dist/utils/client.js +230 -0
- package/dist/utils/client.js.map +1 -0
- package/dist/utils/command-options.d.ts +6 -0
- package/dist/utils/command-options.d.ts.map +1 -0
- package/dist/utils/command-options.js +17 -0
- package/dist/utils/command-options.js.map +1 -0
- package/dist/utils/duration.d.ts +7 -0
- package/dist/utils/duration.d.ts.map +1 -0
- package/dist/utils/duration.js +38 -0
- package/dist/utils/duration.js.map +1 -0
- package/dist/utils/errors.d.ts +5 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +10 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/paths.d.ts +12 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +22 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/timeline.d.ts +8 -0
- package/dist/utils/timeline.d.ts.map +1 -0
- package/dist/utils/timeline.js +9 -0
- package/dist/utils/timeline.js.map +1 -0
- package/package.json +42 -0
package/bin/seawork
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type CliInvocation = {
|
|
2
|
+
kind: "cli";
|
|
3
|
+
argv: string[];
|
|
4
|
+
} | {
|
|
5
|
+
kind: "open-project";
|
|
6
|
+
resolvedPath: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function isPathLikeArg(arg: string): boolean;
|
|
9
|
+
export declare function expandUserPath(inputPath: string): string;
|
|
10
|
+
export declare function isExistingDirectory(input: {
|
|
11
|
+
pathArg: string;
|
|
12
|
+
cwd: string;
|
|
13
|
+
}): boolean;
|
|
14
|
+
export declare function classifyInvocation(input: {
|
|
15
|
+
argv: string[];
|
|
16
|
+
knownCommands: ReadonlySet<string>;
|
|
17
|
+
cwd: string;
|
|
18
|
+
}): CliInvocation;
|
|
19
|
+
//# sourceMappingURL=classify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../src/classify.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAWlD;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAUxD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAQpF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,GAAG,EAAE,MAAM,CAAC;CACb,GAAG,aAAa,CAsBhB"}
|
package/dist/classify.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { existsSync, statSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
export function isPathLikeArg(arg) {
|
|
5
|
+
return (arg === "." ||
|
|
6
|
+
arg === ".." ||
|
|
7
|
+
arg.startsWith("./") ||
|
|
8
|
+
arg.startsWith("../") ||
|
|
9
|
+
arg.startsWith("/") ||
|
|
10
|
+
arg === "~" ||
|
|
11
|
+
arg.startsWith("~/") ||
|
|
12
|
+
/^[A-Za-z]:[\\/]/.test(arg));
|
|
13
|
+
}
|
|
14
|
+
export function expandUserPath(inputPath) {
|
|
15
|
+
if (inputPath === "~") {
|
|
16
|
+
return homedir();
|
|
17
|
+
}
|
|
18
|
+
if (inputPath.startsWith("~/")) {
|
|
19
|
+
return path.join(homedir(), inputPath.slice(2));
|
|
20
|
+
}
|
|
21
|
+
return inputPath;
|
|
22
|
+
}
|
|
23
|
+
export function isExistingDirectory(input) {
|
|
24
|
+
const resolvedPath = path.resolve(input.cwd, expandUserPath(input.pathArg));
|
|
25
|
+
if (!existsSync(resolvedPath)) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
return statSync(resolvedPath).isDirectory();
|
|
29
|
+
}
|
|
30
|
+
export function classifyInvocation(input) {
|
|
31
|
+
const [firstArg] = input.argv;
|
|
32
|
+
if (!firstArg) {
|
|
33
|
+
return { kind: "cli", argv: input.argv };
|
|
34
|
+
}
|
|
35
|
+
if (firstArg.startsWith("-")) {
|
|
36
|
+
return { kind: "cli", argv: input.argv };
|
|
37
|
+
}
|
|
38
|
+
if (input.knownCommands.has(firstArg)) {
|
|
39
|
+
return { kind: "cli", argv: input.argv };
|
|
40
|
+
}
|
|
41
|
+
if (isExistingDirectory({ pathArg: firstArg, cwd: input.cwd })) {
|
|
42
|
+
return {
|
|
43
|
+
kind: "open-project",
|
|
44
|
+
resolvedPath: path.resolve(input.cwd, expandUserPath(firstArg)),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
return { kind: "cli", argv: input.argv };
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=classify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../src/classify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAM7B,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,CACL,GAAG,KAAK,GAAG;QACX,GAAG,KAAK,IAAI;QACZ,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;QACpB,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;QACrB,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;QACnB,GAAG,KAAK,GAAG;QACX,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;QACpB,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;QACtB,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAuC;IACzE,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAE5E,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAIlC;IACC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;IAC9B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,IAAI,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,IAAI,mBAAmB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QAC/D,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;SAChE,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiDpC,wBAAgB,SAAS,IAAI,OAAO,CAiHnC"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import { createAgentCommand } from "./commands/agent/index.js";
|
|
4
|
+
import { createDaemonCommand } from "./commands/daemon/index.js";
|
|
5
|
+
import { createChatCommand } from "./commands/chat/index.js";
|
|
6
|
+
import { createLoopCommand } from "./commands/loop/index.js";
|
|
7
|
+
import { createPermitCommand } from "./commands/permit/index.js";
|
|
8
|
+
import { createProviderCommand } from "./commands/provider/index.js";
|
|
9
|
+
import { createScheduleCommand } from "./commands/schedule/index.js";
|
|
10
|
+
import { createSpeechCommand } from "./commands/speech/index.js";
|
|
11
|
+
import { createTerminalCommand } from "./commands/terminal/index.js";
|
|
12
|
+
import { createWorktreeCommand } from "./commands/worktree/index.js";
|
|
13
|
+
import { startCommand as daemonStartCommand } from "./commands/daemon/start.js";
|
|
14
|
+
import { runStatusCommand as runDaemonStatusCommand } from "./commands/daemon/status.js";
|
|
15
|
+
import { runRestartCommand as runDaemonRestartCommand } from "./commands/daemon/restart.js";
|
|
16
|
+
import { addLsOptions, runLsCommand } from "./commands/agent/ls.js";
|
|
17
|
+
import { addRunOptions, runRunCommand } from "./commands/agent/run.js";
|
|
18
|
+
import { addLogsOptions, runLogsCommand } from "./commands/agent/logs.js";
|
|
19
|
+
import { addDeleteOptions, runDeleteCommand } from "./commands/agent/delete.js";
|
|
20
|
+
import { addStopOptions, runStopCommand } from "./commands/agent/stop.js";
|
|
21
|
+
import { addSendOptions, runSendCommand } from "./commands/agent/send.js";
|
|
22
|
+
import { addInspectOptions, runInspectCommand } from "./commands/agent/inspect.js";
|
|
23
|
+
import { addWaitOptions, runWaitCommand } from "./commands/agent/wait.js";
|
|
24
|
+
import { addArchiveOptions, runArchiveCommand } from "./commands/agent/archive.js";
|
|
25
|
+
import { addAttachOptions, runAttachCommand } from "./commands/agent/attach.js";
|
|
26
|
+
import { withOutput } from "./output/index.js";
|
|
27
|
+
import { onboardCommand } from "./commands/onboard.js";
|
|
28
|
+
import { addDaemonHostOption, addJsonAndDaemonHostOptions, addJsonOption, } from "./utils/command-options.js";
|
|
29
|
+
const require = createRequire(import.meta.url);
|
|
30
|
+
function resolveCliVersion() {
|
|
31
|
+
const packageJson = require("../package.json");
|
|
32
|
+
if (typeof packageJson.version === "string" && packageJson.version.trim().length > 0) {
|
|
33
|
+
return packageJson.version.trim();
|
|
34
|
+
}
|
|
35
|
+
throw new Error("Unable to resolve @seawork/cli version from package.json.");
|
|
36
|
+
}
|
|
37
|
+
const VERSION = resolveCliVersion();
|
|
38
|
+
export function createCli() {
|
|
39
|
+
const program = new Command();
|
|
40
|
+
program
|
|
41
|
+
.name("seawork")
|
|
42
|
+
.description("Seawork CLI - control your AI coding agents from the command line")
|
|
43
|
+
.version(VERSION, "-v, --version", "output the version number")
|
|
44
|
+
// Global output options
|
|
45
|
+
.option("-o, --format <format>", "output format: table, json, yaml", "table")
|
|
46
|
+
.option("--json", "output in JSON format (alias for --format json)")
|
|
47
|
+
.option("-q, --quiet", "minimal output (IDs only)")
|
|
48
|
+
.option("--no-headers", "omit table headers")
|
|
49
|
+
.option("--no-color", "disable colored output");
|
|
50
|
+
// Primary agent commands (top-level)
|
|
51
|
+
addJsonAndDaemonHostOptions(addLsOptions(program.command("ls"))).action(withOutput(runLsCommand));
|
|
52
|
+
addJsonAndDaemonHostOptions(addRunOptions(program.command("run"))).action(withOutput(runRunCommand));
|
|
53
|
+
addDaemonHostOption(addAttachOptions(program.command("attach"))).action(runAttachCommand);
|
|
54
|
+
addDaemonHostOption(addLogsOptions(program.command("logs"))).action(runLogsCommand);
|
|
55
|
+
addJsonAndDaemonHostOptions(addStopOptions(program.command("stop"))).action(withOutput(runStopCommand));
|
|
56
|
+
addJsonAndDaemonHostOptions(addDeleteOptions(program.command("delete"))).action(withOutput(runDeleteCommand));
|
|
57
|
+
addJsonAndDaemonHostOptions(addSendOptions(program.command("send"))).action(withOutput(runSendCommand));
|
|
58
|
+
addJsonAndDaemonHostOptions(addInspectOptions(program.command("inspect"))).action(withOutput(runInspectCommand));
|
|
59
|
+
addJsonAndDaemonHostOptions(addWaitOptions(program.command("wait"))).action(withOutput(runWaitCommand));
|
|
60
|
+
addJsonAndDaemonHostOptions(addArchiveOptions(program.command("archive"))).action(withOutput(runArchiveCommand));
|
|
61
|
+
// Top-level local daemon shortcuts
|
|
62
|
+
program.addCommand(onboardCommand());
|
|
63
|
+
program.addCommand(daemonStartCommand());
|
|
64
|
+
addJsonOption(program
|
|
65
|
+
.command("status")
|
|
66
|
+
.description('Show local daemon status (alias for "seawork daemon status")'))
|
|
67
|
+
.option("--home <path>", "Seawork home directory (default: ~/.seawork)")
|
|
68
|
+
.action(withOutput(runDaemonStatusCommand));
|
|
69
|
+
addJsonOption(program
|
|
70
|
+
.command("restart")
|
|
71
|
+
.description('Restart local daemon (alias for "seawork daemon restart")'))
|
|
72
|
+
.option("--home <path>", "Seawork home directory (default: ~/.seawork)")
|
|
73
|
+
.option("--timeout <seconds>", "Wait timeout before force step (default: 15)")
|
|
74
|
+
.option("--force", "Send SIGKILL if graceful stop times out")
|
|
75
|
+
.option("--listen <listen>", "Listen target for restarted daemon (host:port, port, or unix socket)")
|
|
76
|
+
.option("--port <port>", "Port for restarted daemon listen target")
|
|
77
|
+
.option("--no-relay", "Disable relay on restarted daemon")
|
|
78
|
+
.option("--no-mcp", "Disable Agent MCP on restarted daemon")
|
|
79
|
+
.option("--allowed-hosts <hosts>", 'Comma-separated Host allowlist values (example: "localhost,.example.com" or "true")')
|
|
80
|
+
.action(withOutput(runDaemonRestartCommand));
|
|
81
|
+
// Advanced agent commands (less common operations)
|
|
82
|
+
program.addCommand(createAgentCommand());
|
|
83
|
+
// Daemon commands
|
|
84
|
+
program.addCommand(createDaemonCommand());
|
|
85
|
+
// Chat commands
|
|
86
|
+
program.addCommand(createChatCommand());
|
|
87
|
+
// Terminal commands
|
|
88
|
+
program.addCommand(createTerminalCommand());
|
|
89
|
+
// Loop commands
|
|
90
|
+
program.addCommand(createLoopCommand());
|
|
91
|
+
// Schedule commands
|
|
92
|
+
program.addCommand(createScheduleCommand());
|
|
93
|
+
// Permission commands
|
|
94
|
+
program.addCommand(createPermitCommand());
|
|
95
|
+
// Provider commands
|
|
96
|
+
program.addCommand(createProviderCommand());
|
|
97
|
+
// Speech model commands
|
|
98
|
+
program.addCommand(createSpeechCommand());
|
|
99
|
+
// Worktree commands
|
|
100
|
+
program.addCommand(createWorktreeCommand());
|
|
101
|
+
return program;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import type { CommandOptions, SingleResult, OutputSchema } from "../../output/index.js";
|
|
3
|
+
/** Result type for agent archive command */
|
|
4
|
+
export interface AgentArchiveResult {
|
|
5
|
+
agentId: string;
|
|
6
|
+
status: "archived";
|
|
7
|
+
archivedAt: string;
|
|
8
|
+
}
|
|
9
|
+
/** Schema for archive command output */
|
|
10
|
+
export declare const archiveSchema: OutputSchema<AgentArchiveResult>;
|
|
11
|
+
export declare function addArchiveOptions(cmd: Command): Command;
|
|
12
|
+
export interface AgentArchiveOptions extends CommandOptions {
|
|
13
|
+
force?: boolean;
|
|
14
|
+
host?: string;
|
|
15
|
+
}
|
|
16
|
+
export type AgentArchiveCommandResult = SingleResult<AgentArchiveResult>;
|
|
17
|
+
export declare function runArchiveCommand(agentIdArg: string, options: AgentArchiveOptions, _command: Command): Promise<AgentArchiveCommandResult>;
|
|
18
|
+
//# sourceMappingURL=archive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/archive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EAEb,MAAM,uBAAuB,CAAC;AAE/B,4CAA4C;AAC5C,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wCAAwC;AACxC,eAAO,MAAM,aAAa,EAAE,YAAY,CAAC,kBAAkB,CAO1D,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAKvD;AAED,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,yBAAyB,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;AAEzE,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,yBAAyB,CAAC,CA6FpC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { connectToDaemon, getDaemonHost, resolveAgentId } from "../../utils/client.js";
|
|
2
|
+
/** Schema for archive command output */
|
|
3
|
+
export const archiveSchema = {
|
|
4
|
+
idField: "agentId",
|
|
5
|
+
columns: [
|
|
6
|
+
{ header: "AGENT ID", field: "agentId" },
|
|
7
|
+
{ header: "STATUS", field: "status" },
|
|
8
|
+
{ header: "ARCHIVED AT", field: "archivedAt" },
|
|
9
|
+
],
|
|
10
|
+
};
|
|
11
|
+
export function addArchiveOptions(cmd) {
|
|
12
|
+
return cmd
|
|
13
|
+
.description("Archive an agent (soft-delete)")
|
|
14
|
+
.argument("<id>", "Agent ID, prefix, or name")
|
|
15
|
+
.option("--force", "Force archive running agent (interrupts active run first)");
|
|
16
|
+
}
|
|
17
|
+
export async function runArchiveCommand(agentIdArg, options, _command) {
|
|
18
|
+
const host = getDaemonHost({ host: options.host });
|
|
19
|
+
// Validate arguments
|
|
20
|
+
if (!agentIdArg || agentIdArg.trim().length === 0) {
|
|
21
|
+
const error = {
|
|
22
|
+
code: "MISSING_AGENT_ID",
|
|
23
|
+
message: "Agent ID is required",
|
|
24
|
+
details: "Usage: seawork agent archive <id-or-name>",
|
|
25
|
+
};
|
|
26
|
+
throw error;
|
|
27
|
+
}
|
|
28
|
+
let client;
|
|
29
|
+
try {
|
|
30
|
+
client = await connectToDaemon({ host: options.host });
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
34
|
+
const error = {
|
|
35
|
+
code: "DAEMON_NOT_RUNNING",
|
|
36
|
+
message: `Cannot connect to daemon at ${host}: ${message}`,
|
|
37
|
+
details: "Start the daemon with: seawork daemon start",
|
|
38
|
+
};
|
|
39
|
+
throw error;
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const agentsPayload = await client.fetchAgents({ filter: { includeArchived: true } });
|
|
43
|
+
const agents = agentsPayload.entries.map((entry) => entry.agent);
|
|
44
|
+
const agentId = resolveAgentId(agentIdArg, agents);
|
|
45
|
+
if (!agentId) {
|
|
46
|
+
const error = {
|
|
47
|
+
code: "AGENT_NOT_FOUND",
|
|
48
|
+
message: `Agent not found: ${agentIdArg}`,
|
|
49
|
+
details: 'Use "seawork ls" to list available agents',
|
|
50
|
+
};
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
const agent = agents.find((entry) => entry.id === agentId);
|
|
54
|
+
if (!agent) {
|
|
55
|
+
throw new Error(`Resolved agent missing from fetched agents: ${agentId}`);
|
|
56
|
+
}
|
|
57
|
+
// Check if agent is already archived
|
|
58
|
+
if (agent.archivedAt) {
|
|
59
|
+
const error = {
|
|
60
|
+
code: "AGENT_ALREADY_ARCHIVED",
|
|
61
|
+
message: `Agent ${agentId.slice(0, 7)} is already archived`,
|
|
62
|
+
details: `Archived at: ${agent.archivedAt}`,
|
|
63
|
+
};
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
// Check if agent is running and reject unless --force is set
|
|
67
|
+
if (agent.status === "running" && !options.force) {
|
|
68
|
+
const error = {
|
|
69
|
+
code: "AGENT_RUNNING",
|
|
70
|
+
message: `Agent ${agentId.slice(0, 7)} is currently running`,
|
|
71
|
+
details: "Use --force to archive a running agent (it will interrupt the active run), or stop it first with: seawork agent stop. Use seawork agent delete to hard-delete it.",
|
|
72
|
+
};
|
|
73
|
+
throw error;
|
|
74
|
+
}
|
|
75
|
+
// Archive the agent
|
|
76
|
+
const result = await client.archiveAgent(agentId);
|
|
77
|
+
await client.close();
|
|
78
|
+
return {
|
|
79
|
+
type: "single",
|
|
80
|
+
data: {
|
|
81
|
+
agentId,
|
|
82
|
+
status: "archived",
|
|
83
|
+
archivedAt: result.archivedAt,
|
|
84
|
+
},
|
|
85
|
+
schema: archiveSchema,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
await client.close().catch(() => { });
|
|
90
|
+
// Re-throw CommandError as-is
|
|
91
|
+
if (err && typeof err === "object" && "code" in err) {
|
|
92
|
+
throw err;
|
|
93
|
+
}
|
|
94
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
95
|
+
const error = {
|
|
96
|
+
code: "ARCHIVE_FAILED",
|
|
97
|
+
message: `Failed to archive agent: ${message}`,
|
|
98
|
+
};
|
|
99
|
+
throw error;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=archive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../../src/commands/agent/archive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
export declare function addAttachOptions(cmd: Command): Command;
|
|
3
|
+
export interface AgentAttachOptions {
|
|
4
|
+
host?: string;
|
|
5
|
+
[key: string]: unknown;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Attach to a running agent's output stream
|
|
9
|
+
*/
|
|
10
|
+
export declare function runAttachCommand(id: string, options: AgentAttachOptions, _command: Command): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=attach.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attach.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/attach.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAItD;AAUD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAgFD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,IAAI,CAAC,CAsFf"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
export function addAttachOptions(cmd) {
|
|
2
|
+
return cmd
|
|
3
|
+
.description("Attach to a running agent's output stream")
|
|
4
|
+
.argument("<id>", "Agent ID (or prefix)");
|
|
5
|
+
}
|
|
6
|
+
import { connectToDaemon, getDaemonHost } from "../../utils/client.js";
|
|
7
|
+
import { fetchProjectedTimelineItems } from "../../utils/timeline.js";
|
|
8
|
+
/**
|
|
9
|
+
* Format and print a timeline item to the terminal
|
|
10
|
+
*/
|
|
11
|
+
function printTimelineItem(item) {
|
|
12
|
+
switch (item.type) {
|
|
13
|
+
case "assistant_message":
|
|
14
|
+
// Print assistant text directly
|
|
15
|
+
process.stdout.write(item.text);
|
|
16
|
+
break;
|
|
17
|
+
case "reasoning":
|
|
18
|
+
// Print reasoning in a muted color if available
|
|
19
|
+
console.log(`\n[Reasoning] ${item.text}`);
|
|
20
|
+
break;
|
|
21
|
+
case "tool_call": {
|
|
22
|
+
const toolName = item.name;
|
|
23
|
+
const status = item.status ?? "started";
|
|
24
|
+
console.log(`\n[Tool: ${toolName}] ${status}`);
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
case "todo": {
|
|
28
|
+
const completed = item.items.filter((i) => i.completed).length;
|
|
29
|
+
const total = item.items.length;
|
|
30
|
+
console.log(`\n[Todo] ${completed}/${total} completed`);
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
case "error":
|
|
34
|
+
console.error(`\n[Error] ${item.message}`);
|
|
35
|
+
break;
|
|
36
|
+
case "user_message":
|
|
37
|
+
console.log(`\n[User] ${item.text}`);
|
|
38
|
+
break;
|
|
39
|
+
default:
|
|
40
|
+
// Unknown item type, skip
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Format and print a stream event to the terminal
|
|
46
|
+
*/
|
|
47
|
+
function printStreamEvent(event) {
|
|
48
|
+
switch (event.type) {
|
|
49
|
+
case "timeline":
|
|
50
|
+
// Print the timeline item
|
|
51
|
+
printTimelineItem(event.item);
|
|
52
|
+
break;
|
|
53
|
+
case "permission_requested":
|
|
54
|
+
console.log(`\n[Permission Required] ${event.request.name}`);
|
|
55
|
+
if (event.request.description) {
|
|
56
|
+
console.log(` ${event.request.description}`);
|
|
57
|
+
}
|
|
58
|
+
break;
|
|
59
|
+
case "permission_resolved":
|
|
60
|
+
console.log(`\n[Permission ${event.resolution.behavior}]`);
|
|
61
|
+
break;
|
|
62
|
+
case "turn_failed":
|
|
63
|
+
console.error(`\n[Turn Failed] ${event.error}`);
|
|
64
|
+
break;
|
|
65
|
+
case "attention_required":
|
|
66
|
+
console.log(`\n[Attention Required: ${event.reason}]`);
|
|
67
|
+
break;
|
|
68
|
+
default:
|
|
69
|
+
// Other event types are internal
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Attach to a running agent's output stream
|
|
75
|
+
*/
|
|
76
|
+
export async function runAttachCommand(id, options, _command) {
|
|
77
|
+
const host = getDaemonHost({ host: options.host });
|
|
78
|
+
if (!id) {
|
|
79
|
+
console.error("Error: Agent ID required");
|
|
80
|
+
console.error("Usage: seawork attach <id>");
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
let client;
|
|
84
|
+
try {
|
|
85
|
+
client = await connectToDaemon({ host: options.host });
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
89
|
+
console.error(`Error: Cannot connect to daemon at ${host}: ${message}`);
|
|
90
|
+
console.error("Start the daemon with: seawork daemon start");
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
const fetchResult = await client.fetchAgent(id);
|
|
95
|
+
if (!fetchResult) {
|
|
96
|
+
console.error(`Error: No agent found matching: ${id}`);
|
|
97
|
+
console.error("Use `seawork ls` to list available agents");
|
|
98
|
+
await client.close();
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
const resolvedId = fetchResult.agent.id;
|
|
102
|
+
// Print header
|
|
103
|
+
console.log(`Attaching to agent ${resolvedId.substring(0, 7)}...`);
|
|
104
|
+
console.log(`(Press Ctrl+C to detach)\n`);
|
|
105
|
+
// Print existing output from timeline fetch.
|
|
106
|
+
try {
|
|
107
|
+
const timelineItems = await fetchProjectedTimelineItems({
|
|
108
|
+
client,
|
|
109
|
+
agentId: resolvedId,
|
|
110
|
+
});
|
|
111
|
+
for (const item of timelineItems) {
|
|
112
|
+
printTimelineItem(item);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
console.warn("Warning: failed to fetch existing timeline", error);
|
|
117
|
+
}
|
|
118
|
+
// Subscribe to new events
|
|
119
|
+
const unsubscribe = client.on("agent_stream", (msg) => {
|
|
120
|
+
const message = msg;
|
|
121
|
+
if (message.type !== "agent_stream")
|
|
122
|
+
return;
|
|
123
|
+
if (message.payload.agentId !== resolvedId)
|
|
124
|
+
return;
|
|
125
|
+
printStreamEvent(message.payload.event);
|
|
126
|
+
});
|
|
127
|
+
// Handle Ctrl+C to detach gracefully
|
|
128
|
+
let detached = false;
|
|
129
|
+
const detach = () => {
|
|
130
|
+
if (detached)
|
|
131
|
+
return;
|
|
132
|
+
detached = true;
|
|
133
|
+
console.log("\n\nDetaching from agent...");
|
|
134
|
+
unsubscribe();
|
|
135
|
+
client
|
|
136
|
+
.close()
|
|
137
|
+
.then(() => {
|
|
138
|
+
process.exit(0);
|
|
139
|
+
})
|
|
140
|
+
.catch(() => {
|
|
141
|
+
process.exit(1);
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
process.on("SIGINT", detach);
|
|
145
|
+
process.on("SIGTERM", detach);
|
|
146
|
+
// Keep the process alive
|
|
147
|
+
await new Promise(() => {
|
|
148
|
+
// Wait indefinitely until interrupted
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
catch (err) {
|
|
152
|
+
await client.close().catch(() => { });
|
|
153
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
154
|
+
console.error(`Error: Failed to attach to agent: ${message}`);
|
|
155
|
+
process.exit(1);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=attach.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attach.js","sourceRoot":"","sources":["../../../src/commands/agent/attach.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,OAAO,GAAG;SACP,WAAW,CAAC,2CAA2C,CAAC;SACxD,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;AAC9C,CAAC;AACD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAatE;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAuB;IAChD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,mBAAmB;YACtB,gCAAgC;YAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM;QAER,KAAK,WAAW;YACd,gDAAgD;YAChD,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1C,MAAM;QAER,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,KAAK,MAAM,EAAE,CAAC,CAAC;YAC/C,MAAM;QACR,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;YAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,IAAI,KAAK,YAAY,CAAC,CAAC;YACxD,MAAM;QACR,CAAC;QAED,KAAK,OAAO;YACV,OAAO,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3C,MAAM;QAER,KAAK,cAAc;YACjB,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACrC,MAAM;QAER;YACE,0BAA0B;YAC1B,MAAM;IACV,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,KAA8B;IACtD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,UAAU;YACb,0BAA0B;YAC1B,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM;QAER,KAAK,sBAAsB;YACzB,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YAChD,CAAC;YACD,MAAM;QAER,KAAK,qBAAqB;YACxB,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC3D,MAAM;QAER,KAAK,aAAa;YAChB,OAAO,CAAC,KAAK,CAAC,mBAAmB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAChD,MAAM;QAER,KAAK,oBAAoB;YACvB,OAAO,CAAC,GAAG,CAAC,0BAA0B,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YACvD,MAAM;QAER;YACE,iCAAiC;YACjC,MAAM;IACV,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAU,EACV,OAA2B,EAC3B,QAAiB;IAEjB,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAA0B,EAAE,CAAC,CAAC;IAEzE,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAAoB,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAA0B,EAAE,CAAC,CAAC;IAC/E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,sCAAsC,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC3D,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QAExC,eAAe;QACf,OAAO,CAAC,GAAG,CAAC,sBAAsB,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAE1C,6CAA6C;QAC7C,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,2BAA2B,CAAC;gBACtD,MAAM;gBACN,OAAO,EAAE,UAAU;aACpB,CAAC,CAAC;YACH,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBACjC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;QAED,0BAA0B;QAC1B,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,GAAY,EAAE,EAAE;YAC7D,MAAM,OAAO,GAAG,GAAyB,CAAC;YAC1C,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc;gBAAE,OAAO;YAC5C,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,KAAK,UAAU;gBAAE,OAAO;YAEnD,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,qCAAqC;QACrC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAEhB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC3C,WAAW,EAAE,CAAC;YACd,MAAM;iBACH,KAAK,EAAE;iBACP,IAAI,CAAC,GAAG,EAAE;gBACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE;gBACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAE9B,yBAAyB;QACzB,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE;YACrB,sCAAsC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,qCAAqC,OAAO,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
export declare function addDeleteOptions(cmd: Command): Command;
|
|
3
|
+
import type { CommandOptions, SingleResult, OutputSchema } from "../../output/index.js";
|
|
4
|
+
export interface DeleteResult {
|
|
5
|
+
deletedCount: number;
|
|
6
|
+
agentIds: string[];
|
|
7
|
+
}
|
|
8
|
+
export declare const deleteSchema: OutputSchema<DeleteResult>;
|
|
9
|
+
export interface AgentDeleteOptions extends CommandOptions {
|
|
10
|
+
all?: boolean;
|
|
11
|
+
cwd?: string;
|
|
12
|
+
}
|
|
13
|
+
export type AgentDeleteResult = SingleResult<DeleteResult>;
|
|
14
|
+
export declare function runDeleteCommand(id: string | undefined, options: AgentDeleteOptions, _command: Command): Promise<AgentDeleteResult>;
|
|
15
|
+
//# sourceMappingURL=delete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/delete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAMtD;AACD,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EAEb,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,YAAY,CAGnD,CAAC;AAEF,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;AAE3D,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,iBAAiB,CAAC,CAqF5B"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { connectToDaemon, getDaemonHost } from "../../utils/client.js";
|
|
2
|
+
import { isSameOrDescendantPath } from "../../utils/paths.js";
|
|
3
|
+
export function addDeleteOptions(cmd) {
|
|
4
|
+
return cmd
|
|
5
|
+
.description("Delete an agent (interrupt if running, then hard-delete)")
|
|
6
|
+
.argument("[id]", "Agent ID (or prefix) - optional if --all or --cwd specified")
|
|
7
|
+
.option("--all", "Delete all agents")
|
|
8
|
+
.option("--cwd <path>", "Delete all agents in directory");
|
|
9
|
+
}
|
|
10
|
+
export const deleteSchema = {
|
|
11
|
+
idField: (item) => item.agentIds.join("\n"),
|
|
12
|
+
columns: [{ header: "DELETED", field: "deletedCount" }],
|
|
13
|
+
};
|
|
14
|
+
export async function runDeleteCommand(id, options, _command) {
|
|
15
|
+
const host = getDaemonHost({ host: options.host });
|
|
16
|
+
if (!id && !options.all && !options.cwd) {
|
|
17
|
+
const error = {
|
|
18
|
+
code: "MISSING_ARGUMENT",
|
|
19
|
+
message: "Agent ID required unless --all or --cwd is specified",
|
|
20
|
+
details: "Usage: seawork agent delete <id> | --all | --cwd <path>",
|
|
21
|
+
};
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
let client;
|
|
25
|
+
try {
|
|
26
|
+
client = await connectToDaemon({ host: options.host });
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
30
|
+
const error = {
|
|
31
|
+
code: "DAEMON_NOT_RUNNING",
|
|
32
|
+
message: `Cannot connect to daemon at ${host}: ${message}`,
|
|
33
|
+
details: "Start the daemon with: seawork daemon start",
|
|
34
|
+
};
|
|
35
|
+
throw error;
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
const fetchPayload = await client.fetchAgents({ filter: { includeArchived: true } });
|
|
39
|
+
let agents = fetchPayload.entries.map((entry) => entry.agent);
|
|
40
|
+
const deletedIds = [];
|
|
41
|
+
if (options.all) {
|
|
42
|
+
agents = agents.filter((a) => !a.archivedAt);
|
|
43
|
+
}
|
|
44
|
+
else if (options.cwd) {
|
|
45
|
+
agents = agents.filter((a) => {
|
|
46
|
+
if (a.archivedAt)
|
|
47
|
+
return false;
|
|
48
|
+
return isSameOrDescendantPath(options.cwd, a.cwd);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
else if (id) {
|
|
52
|
+
const fetchResult = await client.fetchAgent(id);
|
|
53
|
+
if (!fetchResult) {
|
|
54
|
+
const error = {
|
|
55
|
+
code: "AGENT_NOT_FOUND",
|
|
56
|
+
message: `No agent found matching: ${id}`,
|
|
57
|
+
details: "Use `seawork ls` to list available agents",
|
|
58
|
+
};
|
|
59
|
+
throw error;
|
|
60
|
+
}
|
|
61
|
+
agents = [fetchResult.agent];
|
|
62
|
+
}
|
|
63
|
+
for (const agent of agents) {
|
|
64
|
+
try {
|
|
65
|
+
if (agent.status === "running") {
|
|
66
|
+
await client.cancelAgent(agent.id);
|
|
67
|
+
}
|
|
68
|
+
await client.deleteAgent(agent.id);
|
|
69
|
+
deletedIds.push(agent.id);
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
73
|
+
console.error(`Warning: Failed to delete agent ${agent.id.slice(0, 7)}: ${message}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
await client.close();
|
|
77
|
+
return {
|
|
78
|
+
type: "single",
|
|
79
|
+
data: {
|
|
80
|
+
deletedCount: deletedIds.length,
|
|
81
|
+
agentIds: deletedIds,
|
|
82
|
+
},
|
|
83
|
+
schema: deleteSchema,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
await client.close().catch(() => { });
|
|
88
|
+
if (err && typeof err === "object" && "code" in err) {
|
|
89
|
+
throw err;
|
|
90
|
+
}
|
|
91
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
92
|
+
const error = {
|
|
93
|
+
code: "DELETE_AGENT_FAILED",
|
|
94
|
+
message: `Failed to delete agent(s): ${message}`,
|
|
95
|
+
};
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=delete.js.map
|