@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 CHANGED
@@ -43,7 +43,7 @@ export function createCli() {
43
43
  const program = new Command();
44
44
  program
45
45
  .name("seawork")
46
- .description("Seawork CLI - control your AI coding agents from the command line")
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>", "Seawork home directory (default: ~/.seawork)")
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>", "Seawork home directory (default: ~/.seawork)")
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 Seawork daemon");
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>", "Seawork home directory (default: ~/.seawork)")
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>", "Seawork home directory (default: ~/.seawork)")
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>", "Seawork home directory (default: ~/.seawork)")
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 Seawork MCP into created agents")
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>", "Seawork home directory (default: ~/.seawork)")
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 Seawork daemon")
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>", "Seawork home directory (default: ~/.seawork)")
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 Seawork MCP into created agents")
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);
@@ -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 Seawork runtime environment (launches seawork-doctor).")
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 Seawork desktop; the installer bundles seawork-doctor.",
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",
@@ -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 Seawork and scan the QR code above, or paste the pairing link."
184
- : "1. Open Seawork and connect to your daemon.",
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>", "Seawork home directory (default: ~/.seawork)")
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 Seawork");
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, "Seawork home");
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("Seawork daemon is running.");
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("Seawork daemon is running.");
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("Seawork is ready!");
371
+ outro("SeaWork is ready!");
372
372
  }
373
373
  }
374
374
  //# sourceMappingURL=onboard.js.map
@@ -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":"AAmEA,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B/E"}
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"}
@@ -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
- function findDesktopApp() {
6
- if (process.platform === "darwin") {
7
- const candidates = [
8
- "/Applications/Seawork.app",
9
- path.join(homedir(), "Applications", "Seawork.app"),
10
- ];
11
- for (const candidate of candidates) {
12
- if (existsSync(candidate)) {
13
- return candidate;
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 null;
35
+ return [...seen];
17
36
  }
18
- if (process.platform === "linux") {
19
- const candidates = [
20
- "/usr/bin/Seawork",
21
- "/opt/Seawork/Seawork",
22
- path.join(homedir(), "Applications", "Seawork.AppImage"),
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 null;
45
+ return [...seen];
30
46
  }
31
- if (process.platform === "win32") {
32
- const localAppData = process.env.LOCALAPPDATA;
33
- if (!localAppData) {
34
- return null;
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("Seawork desktop app not found. Install it from https://github.com/SeaVerseAI/seawork/releases");
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":"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"}
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 Seawork-managed git worktrees");
8
- addJsonAndDaemonHostOptions(worktree.command("ls").description("List Seawork-managed git worktrees")).action(withOutput(runLsCommand));
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)")
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Output abstraction layer for the Seawork CLI.
2
+ * Output abstraction layer for the SeaWork CLI.
3
3
  *
4
4
  * This module provides structured output rendering with support for multiple formats:
5
5
  * - table: Human-readable aligned tables (default)
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Output abstraction layer for the Seawork CLI.
2
+ * Output abstraction layer for the SeaWork CLI.
3
3
  *
4
4
  * This module provides structured output rendering with support for multiple formats:
5
5
  * - table: Human-readable aligned tables (default)
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Output format types for the Seawork CLI.
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Output format types for the Seawork CLI.
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.
@@ -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 Seawork daemon via ${hosts.join(", ")}`);
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.20",
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.20",
28
- "@seawork/server": "1.0.20",
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",