@seawork/cli 1.0.20 → 1.0.21-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +3 -3
- package/dist/commands/daemon/index.js +5 -5
- package/dist/commands/daemon/pair.js +1 -1
- package/dist/commands/daemon/start.js +3 -3
- package/dist/commands/doctor.js +2 -2
- package/dist/commands/onboard.js +8 -8
- package/dist/commands/open.d.ts +6 -0
- package/dist/commands/open.d.ts.map +1 -1
- package/dist/commands/open.js +47 -27
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/worktree/index.js +2 -2
- package/dist/output/index.d.ts +1 -1
- package/dist/output/index.js +1 -1
- package/dist/output/types.d.ts +1 -1
- package/dist/output/types.js +1 -1
- package/dist/utils/client.js +1 -1
- package/package.json +3 -3
package/dist/cli.js
CHANGED
|
@@ -43,7 +43,7 @@ export function createCli() {
|
|
|
43
43
|
const program = new Command();
|
|
44
44
|
program
|
|
45
45
|
.name("seawork")
|
|
46
|
-
.description("
|
|
46
|
+
.description("SeaWork CLI - control your AI coding agents from the command line")
|
|
47
47
|
.version(VERSION, "-v, --version", "output the version number")
|
|
48
48
|
// Global output options
|
|
49
49
|
.option("-o, --format <format>", "output format: table, json, yaml", "table")
|
|
@@ -68,12 +68,12 @@ export function createCli() {
|
|
|
68
68
|
addJsonOption(program
|
|
69
69
|
.command("status")
|
|
70
70
|
.description('Show local daemon status (alias for "seawork daemon status")'))
|
|
71
|
-
.option("--home <path>", "
|
|
71
|
+
.option("--home <path>", "SeaWork home directory (default: ~/.seawork)")
|
|
72
72
|
.action(withOutput(runDaemonStatusCommand));
|
|
73
73
|
addJsonOption(program
|
|
74
74
|
.command("restart")
|
|
75
75
|
.description('Restart local daemon (alias for "seawork daemon restart")'))
|
|
76
|
-
.option("--home <path>", "
|
|
76
|
+
.option("--home <path>", "SeaWork home directory (default: ~/.seawork)")
|
|
77
77
|
.option("--timeout <seconds>", "Wait timeout before force step (default: 15)")
|
|
78
78
|
.option("--force", "Send SIGKILL if graceful stop times out")
|
|
79
79
|
.option("--listen <listen>", "Listen target for restarted daemon (host:port, port, or unix socket)")
|
|
@@ -7,26 +7,26 @@ import { pairCommand } from "./pair.js";
|
|
|
7
7
|
import { withOutput } from "../../output/index.js";
|
|
8
8
|
import { addJsonOption } from "../../utils/command-options.js";
|
|
9
9
|
export function createDaemonCommand() {
|
|
10
|
-
const daemon = new Command("daemon").description("Manage the
|
|
10
|
+
const daemon = new Command("daemon").description("Manage the SeaWork daemon");
|
|
11
11
|
daemon.addCommand(startCommand());
|
|
12
12
|
daemon.addCommand(pairCommand());
|
|
13
13
|
addJsonOption(daemon.command("status").description("Show local daemon status"))
|
|
14
|
-
.option("--home <path>", "
|
|
14
|
+
.option("--home <path>", "SeaWork home directory (default: ~/.seawork)")
|
|
15
15
|
.action(withOutput(runStatusCommand));
|
|
16
16
|
addJsonOption(daemon.command("stop").description("Stop the local daemon"))
|
|
17
|
-
.option("--home <path>", "
|
|
17
|
+
.option("--home <path>", "SeaWork home directory (default: ~/.seawork)")
|
|
18
18
|
.option("--timeout <seconds>", "Wait timeout before failing (default: 15)")
|
|
19
19
|
.option("--force", "Send SIGKILL if graceful stop times out")
|
|
20
20
|
.action(withOutput(runStopCommand));
|
|
21
21
|
addJsonOption(daemon.command("restart").description("Restart the local daemon"))
|
|
22
|
-
.option("--home <path>", "
|
|
22
|
+
.option("--home <path>", "SeaWork home directory (default: ~/.seawork)")
|
|
23
23
|
.option("--timeout <seconds>", "Wait timeout before force step (default: 15)")
|
|
24
24
|
.option("--force", "Send SIGKILL if graceful stop times out")
|
|
25
25
|
.option("--listen <listen>", "Listen target for restarted daemon (host:port, port, or unix socket)")
|
|
26
26
|
.option("--port <port>", "Port for restarted daemon listen target")
|
|
27
27
|
.option("--no-relay", "Disable relay on restarted daemon")
|
|
28
28
|
.option("--no-mcp", "Disable Agent MCP on restarted daemon")
|
|
29
|
-
.option("--no-inject-mcp", "Disable auto-injecting the
|
|
29
|
+
.option("--no-inject-mcp", "Disable auto-injecting the SeaWork MCP into created agents")
|
|
30
30
|
.option("--allowed-hosts <hosts>", 'Comma-separated Host allowlist values (example: "localhost,.example.com" or "true")')
|
|
31
31
|
.action(withOutput(runRestartCommand));
|
|
32
32
|
return daemon;
|
|
@@ -4,7 +4,7 @@ import { generateLocalPairingOffer, loadConfig, resolveSeaworkHome } from "@seaw
|
|
|
4
4
|
import { addJsonOption } from "../../utils/command-options.js";
|
|
5
5
|
export function pairCommand() {
|
|
6
6
|
return addJsonOption(new Command("pair").description("Print the daemon pairing QR code and link"))
|
|
7
|
-
.option("--home <path>", "
|
|
7
|
+
.option("--home <path>", "SeaWork home directory (default: ~/.seawork)")
|
|
8
8
|
.action(async (_options, command) => {
|
|
9
9
|
await runPairCommand(command.optsWithGlobals());
|
|
10
10
|
});
|
|
@@ -4,14 +4,14 @@ import { startLocalDaemonForeground, startLocalDaemonDetached, } from "./local-d
|
|
|
4
4
|
import { getErrorMessage } from "../../utils/errors.js";
|
|
5
5
|
export function startCommand() {
|
|
6
6
|
return new Command("start")
|
|
7
|
-
.description("Start the local
|
|
7
|
+
.description("Start the local SeaWork daemon")
|
|
8
8
|
.option("--listen <listen>", "Listen target (host:port, port, or unix socket path)")
|
|
9
9
|
.option("--port <port>", "Port to listen on (default: 6767)")
|
|
10
|
-
.option("--home <path>", "
|
|
10
|
+
.option("--home <path>", "SeaWork home directory (default: ~/.seawork)")
|
|
11
11
|
.option("--foreground", "Run in foreground (don't daemonize)")
|
|
12
12
|
.option("--no-relay", "Disable relay connection")
|
|
13
13
|
.option("--no-mcp", "Disable the Agent MCP HTTP endpoint")
|
|
14
|
-
.option("--no-inject-mcp", "Disable auto-injecting the
|
|
14
|
+
.option("--no-inject-mcp", "Disable auto-injecting the SeaWork MCP into created agents")
|
|
15
15
|
.option("--allowed-hosts <hosts>", 'Comma-separated Host allowlist values (example: "localhost,.example.com" or "true")')
|
|
16
16
|
.action(async (options) => {
|
|
17
17
|
await runStart(options);
|
package/dist/commands/doctor.js
CHANGED
|
@@ -73,7 +73,7 @@ export function resolveBinary() {
|
|
|
73
73
|
}
|
|
74
74
|
export function createDoctorCommand() {
|
|
75
75
|
return new Command("doctor")
|
|
76
|
-
.description("Diagnose and repair the
|
|
76
|
+
.description("Diagnose and repair the SeaWork runtime environment (launches seawork-doctor).")
|
|
77
77
|
.allowUnknownOption(true)
|
|
78
78
|
.arguments("[args...]")
|
|
79
79
|
.action(async (args) => {
|
|
@@ -83,7 +83,7 @@ export function createDoctorCommand() {
|
|
|
83
83
|
"seawork-doctor binary not found.",
|
|
84
84
|
"",
|
|
85
85
|
"Install options:",
|
|
86
|
-
" • Reinstall
|
|
86
|
+
" • Reinstall SeaWork desktop; the installer bundles seawork-doctor.",
|
|
87
87
|
" • Download the standalone binary from",
|
|
88
88
|
" https://downloads.seawork.ai/doctor/latest/",
|
|
89
89
|
" • Or set SEAWORK_DOCTOR_BIN=/absolute/path/to/seawork-doctor",
|
package/dist/commands/onboard.js
CHANGED
|
@@ -180,8 +180,8 @@ function printNextSteps(pairingUrl, seaworkHome, richUi) {
|
|
|
180
180
|
const daemonLogPath = path.join(seaworkHome, "daemon.log");
|
|
181
181
|
const nextStepsLines = [
|
|
182
182
|
pairingUrl
|
|
183
|
-
? "1. Open
|
|
184
|
-
: "1. Open
|
|
183
|
+
? "1. Open SeaWork and scan the QR code above, or paste the pairing link."
|
|
184
|
+
: "1. Open SeaWork and connect to your daemon.",
|
|
185
185
|
"2. Web app: https://app.seawork.ai",
|
|
186
186
|
"3. Desktop app: https://github.com/SeaVerseAI/seawork/releases/latest",
|
|
187
187
|
"4. Docs: https://seawork.ai/docs",
|
|
@@ -215,7 +215,7 @@ export function onboardCommand() {
|
|
|
215
215
|
.description("Run first-time setup, start daemon, and print pairing instructions")
|
|
216
216
|
.option("--listen <listen>", "Listen target (host:port, port, or unix socket path)")
|
|
217
217
|
.option("--port <port>", "Port to listen on (default: 6767)")
|
|
218
|
-
.option("--home <path>", "
|
|
218
|
+
.option("--home <path>", "SeaWork home directory (default: ~/.seawork)")
|
|
219
219
|
.option("--no-relay", "Disable relay connection")
|
|
220
220
|
.option("--no-mcp", "Disable the Agent MCP HTTP endpoint")
|
|
221
221
|
.option("--allowed-hosts <hosts>", 'Comma-separated Host allowlist values (example: "localhost,.example.com" or "true")')
|
|
@@ -228,7 +228,7 @@ export function onboardCommand() {
|
|
|
228
228
|
export async function runOnboard(options) {
|
|
229
229
|
const richUi = process.stdin.isTTY && process.stdout.isTTY;
|
|
230
230
|
if (richUi) {
|
|
231
|
-
intro("Welcome to
|
|
231
|
+
intro("Welcome to SeaWork");
|
|
232
232
|
}
|
|
233
233
|
if (options.listen && options.port) {
|
|
234
234
|
cancel("Cannot use --listen and --port together");
|
|
@@ -245,7 +245,7 @@ export async function runOnboard(options) {
|
|
|
245
245
|
}
|
|
246
246
|
const seaworkHome = resolveLocalSeaworkHome(options.home);
|
|
247
247
|
if (richUi) {
|
|
248
|
-
renderNote(seaworkHome, "
|
|
248
|
+
renderNote(seaworkHome, "SeaWork home");
|
|
249
249
|
}
|
|
250
250
|
let persisted = loadPersistedConfig(seaworkHome);
|
|
251
251
|
const persistedVoiceSelection = resolvePersistedVoiceSelection(persisted);
|
|
@@ -344,7 +344,7 @@ export async function runOnboard(options) {
|
|
|
344
344
|
log.warn("Relay is disabled; pairing offer is unavailable for this daemon.");
|
|
345
345
|
printNextSteps(null, seaworkHome, richUi);
|
|
346
346
|
if (richUi) {
|
|
347
|
-
outro("
|
|
347
|
+
outro("SeaWork daemon is running.");
|
|
348
348
|
}
|
|
349
349
|
return;
|
|
350
350
|
}
|
|
@@ -360,7 +360,7 @@ export async function runOnboard(options) {
|
|
|
360
360
|
log.warn("Relay pairing URL is unavailable for this daemon configuration.");
|
|
361
361
|
printNextSteps(null, seaworkHome, richUi);
|
|
362
362
|
if (richUi) {
|
|
363
|
-
outro("
|
|
363
|
+
outro("SeaWork daemon is running.");
|
|
364
364
|
}
|
|
365
365
|
return;
|
|
366
366
|
}
|
|
@@ -368,7 +368,7 @@ export async function runOnboard(options) {
|
|
|
368
368
|
renderNote(pairing.url, "Pairing link");
|
|
369
369
|
printNextSteps(pairing.url, seaworkHome, richUi);
|
|
370
370
|
if (richUi) {
|
|
371
|
-
outro("
|
|
371
|
+
outro("SeaWork is ready!");
|
|
372
372
|
}
|
|
373
373
|
}
|
|
374
374
|
//# sourceMappingURL=onboard.js.map
|
package/dist/commands/open.d.ts
CHANGED
|
@@ -1,2 +1,8 @@
|
|
|
1
|
+
interface CandidateEnv {
|
|
2
|
+
home: string;
|
|
3
|
+
localAppData?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function desktopAppCandidates(platform: NodeJS.Platform, env: CandidateEnv): string[];
|
|
1
6
|
export declare function openDesktopWithProject(projectPath: string): Promise<void>;
|
|
7
|
+
export {};
|
|
2
8
|
//# sourceMappingURL=open.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAYA,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,EAAE,CAuC3F;AAgCD,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B/E"}
|
package/dist/commands/open.js
CHANGED
|
@@ -2,39 +2,59 @@ import { existsSync } from "node:fs";
|
|
|
2
2
|
import { spawn } from "node:child_process";
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
4
|
import path from "node:path";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
5
|
+
// The desktop app bundle name is `productName` from electron-builder. We renamed
|
|
6
|
+
// productName from "Seawork" to "SeaWork", but legacy installs still have the
|
|
7
|
+
// old name, and upgrades can leave hybrid paths (old install dir + new exe, or
|
|
8
|
+
// vice versa) when a user reinstalls without clean-uninstall.
|
|
9
|
+
// Probe all four combinations of {dir, basename} × {Seawork, SeaWork}.
|
|
10
|
+
const APP_NAMES = ["SeaWork", "Seawork"];
|
|
11
|
+
export function desktopAppCandidates(platform, env) {
|
|
12
|
+
const seen = new Set();
|
|
13
|
+
const add = (p) => {
|
|
14
|
+
if (!seen.has(p))
|
|
15
|
+
seen.add(p);
|
|
16
|
+
};
|
|
17
|
+
if (platform === "darwin") {
|
|
18
|
+
for (const name of APP_NAMES) {
|
|
19
|
+
add(`/Applications/${name}.app`);
|
|
20
|
+
add(path.join(env.home, "Applications", `${name}.app`));
|
|
21
|
+
}
|
|
22
|
+
return [...seen];
|
|
23
|
+
}
|
|
24
|
+
if (platform === "linux") {
|
|
25
|
+
// Outer loop is exe (binary the user actually launches), so new-name exes
|
|
26
|
+
// are probed before old-name exes regardless of which dir hosts them.
|
|
27
|
+
// Within an exe, prefer new-name dir, then old-name dir.
|
|
28
|
+
for (const exe of APP_NAMES) {
|
|
29
|
+
for (const dir of APP_NAMES) {
|
|
30
|
+
add(`/opt/${dir}/${exe}`);
|
|
14
31
|
}
|
|
32
|
+
add(`/usr/bin/${exe}`);
|
|
33
|
+
add(path.join(env.home, "Applications", `${exe}.AppImage`));
|
|
15
34
|
}
|
|
16
|
-
return
|
|
35
|
+
return [...seen];
|
|
17
36
|
}
|
|
18
|
-
if (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
for (const candidate of candidates) {
|
|
25
|
-
if (existsSync(candidate)) {
|
|
26
|
-
return candidate;
|
|
37
|
+
if (platform === "win32") {
|
|
38
|
+
if (!env.localAppData)
|
|
39
|
+
return [];
|
|
40
|
+
for (const exe of APP_NAMES) {
|
|
41
|
+
for (const dir of APP_NAMES) {
|
|
42
|
+
add(path.join(env.localAppData, "Programs", dir, `${exe}.exe`));
|
|
27
43
|
}
|
|
28
44
|
}
|
|
29
|
-
return
|
|
45
|
+
return [...seen];
|
|
30
46
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
49
|
+
function findDesktopApp() {
|
|
50
|
+
const candidates = desktopAppCandidates(process.platform, {
|
|
51
|
+
home: homedir(),
|
|
52
|
+
localAppData: process.env.LOCALAPPDATA,
|
|
53
|
+
});
|
|
54
|
+
for (const candidate of candidates) {
|
|
55
|
+
if (existsSync(candidate)) {
|
|
56
|
+
return candidate;
|
|
35
57
|
}
|
|
36
|
-
const candidate = path.join(localAppData, "Programs", "Seawork", "Seawork.exe");
|
|
37
|
-
return existsSync(candidate) ? candidate : null;
|
|
38
58
|
}
|
|
39
59
|
return null;
|
|
40
60
|
}
|
|
@@ -60,7 +80,7 @@ export async function openDesktopWithProject(projectPath) {
|
|
|
60
80
|
}
|
|
61
81
|
const desktopApp = findDesktopApp();
|
|
62
82
|
if (!desktopApp) {
|
|
63
|
-
throw new Error("
|
|
83
|
+
throw new Error("SeaWork desktop app not found. Install it from https://github.com/SeaVerseAI/seawork/releases");
|
|
64
84
|
}
|
|
65
85
|
if (process.platform === "darwin") {
|
|
66
86
|
// -n forces a new instance even if the app is already running.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,
|
|
1
|
+
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,8 @@ import { runArchiveCommand } from "./archive.js";
|
|
|
4
4
|
import { withOutput } from "../../output/index.js";
|
|
5
5
|
import { addJsonAndDaemonHostOptions } from "../../utils/command-options.js";
|
|
6
6
|
export function createWorktreeCommand() {
|
|
7
|
-
const worktree = new Command("worktree").description("Manage
|
|
8
|
-
addJsonAndDaemonHostOptions(worktree.command("ls").description("List
|
|
7
|
+
const worktree = new Command("worktree").description("Manage SeaWork-managed git worktrees");
|
|
8
|
+
addJsonAndDaemonHostOptions(worktree.command("ls").description("List SeaWork-managed git worktrees")).action(withOutput(runLsCommand));
|
|
9
9
|
addJsonAndDaemonHostOptions(worktree
|
|
10
10
|
.command("archive")
|
|
11
11
|
.description("Archive a worktree (removes worktree and associated branch)")
|
package/dist/output/index.d.ts
CHANGED
package/dist/output/index.js
CHANGED
package/dist/output/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Output format types for the
|
|
2
|
+
* Output format types for the SeaWork CLI.
|
|
3
3
|
*
|
|
4
4
|
* This module defines the structured data types used by the output abstraction layer.
|
|
5
5
|
* Commands return CommandResult<T> which contains both data and rendering metadata.
|
package/dist/output/types.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Output format types for the
|
|
2
|
+
* Output format types for the SeaWork CLI.
|
|
3
3
|
*
|
|
4
4
|
* This module defines the structured data types used by the output abstraction layer.
|
|
5
5
|
* Commands return CommandResult<T> which contains both data and rendering metadata.
|
package/dist/utils/client.js
CHANGED
|
@@ -173,7 +173,7 @@ export async function connectToDaemon(options) {
|
|
|
173
173
|
if (lastError instanceof Error) {
|
|
174
174
|
throw lastError;
|
|
175
175
|
}
|
|
176
|
-
throw new Error(`Unable to connect to
|
|
176
|
+
throw new Error(`Unable to connect to SeaWork daemon via ${hosts.join(", ")}`);
|
|
177
177
|
}
|
|
178
178
|
/**
|
|
179
179
|
* Try to connect to the daemon, returns null if connection fails
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seawork/cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.21-rc.1",
|
|
4
4
|
"description": "Seawork CLI - control your AI coding agents from the command line",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@clack/prompts": "^1.0.0",
|
|
27
|
-
"@seawork/relay": "1.0.
|
|
28
|
-
"@seawork/server": "1.0.
|
|
27
|
+
"@seawork/relay": "1.0.21-rc.1",
|
|
28
|
+
"@seawork/server": "1.0.21-rc.1",
|
|
29
29
|
"chalk": "^5.3.0",
|
|
30
30
|
"commander": "^12.0.0",
|
|
31
31
|
"mime-types": "^2.1.35",
|