@popoverinstall/cli 0.4.1 → 0.6.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 (44) hide show
  1. package/CHANGELOG.md +158 -0
  2. package/dist/aardvark.d.ts +30 -0
  3. package/dist/aardvark.d.ts.map +1 -0
  4. package/dist/aardvark.js +97 -0
  5. package/dist/aardvark.js.map +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +140 -52
  8. package/dist/index.js.map +1 -1
  9. package/dist/login.d.ts +8 -1
  10. package/dist/login.d.ts.map +1 -1
  11. package/dist/login.js +51 -23
  12. package/dist/login.js.map +1 -1
  13. package/dist/next-steps.d.ts +18 -0
  14. package/dist/next-steps.d.ts.map +1 -0
  15. package/dist/next-steps.js +73 -0
  16. package/dist/next-steps.js.map +1 -0
  17. package/dist/scene.d.ts +43 -0
  18. package/dist/scene.d.ts.map +1 -0
  19. package/dist/scene.js +276 -0
  20. package/dist/scene.js.map +1 -0
  21. package/dist/snapshot.d.ts +2 -0
  22. package/dist/snapshot.d.ts.map +1 -0
  23. package/dist/snapshot.js +828 -0
  24. package/dist/snapshot.js.map +1 -0
  25. package/dist/terminal.d.ts +58 -0
  26. package/dist/terminal.d.ts.map +1 -0
  27. package/dist/terminal.js +139 -0
  28. package/dist/terminal.js.map +1 -0
  29. package/dist/theme.d.ts +123 -0
  30. package/dist/theme.d.ts.map +1 -0
  31. package/dist/theme.js +257 -0
  32. package/dist/theme.js.map +1 -0
  33. package/dist/welcome.d.ts +23 -0
  34. package/dist/welcome.d.ts.map +1 -0
  35. package/dist/welcome.js +128 -0
  36. package/dist/welcome.js.map +1 -0
  37. package/package.json +5 -4
  38. package/plugin/.claude-plugin/plugin.json +1 -1
  39. package/plugin/README.md +11 -1
  40. package/plugin/commands/fork.md +118 -0
  41. package/plugin/commands/team.md +44 -20
  42. package/plugin/hooks/hooks.json +6 -0
  43. package/plugin/mcp/index.mjs +69 -0
  44. package/plugin/scripts/deliver-messages.mjs +76 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Opening a fork means starting a second `claude` process in a window of its own, because a
3
+ * running session can never become a different session — not even an empty one.
4
+ *
5
+ * Every platform gets the same shape: write a launcher script, then ask the platform to
6
+ * open it in a new window. Handing a shell a script path rather than a command line is what
7
+ * keeps this out of the quoting minefield — a repo path with a space, an ampersand, or a
8
+ * quote in it is a filename to `open` and to `start`, not something to re-parse.
9
+ */
10
+ export interface TerminalSpawn {
11
+ file: string;
12
+ args: string[];
13
+ /** What we are using, for the message shown when it works and when it does not. */
14
+ via: string;
15
+ }
16
+ /** Does this command exist on PATH? Injected so the planner stays pure and testable. */
17
+ export type HasCommand = (command: string) => boolean;
18
+ /**
19
+ * Decide how to open `scriptPath` in a new window. Returns null when there is nothing to
20
+ * try, which is a normal outcome over SSH or in a container — the caller prints the command
21
+ * instead, and the user is never left at a dead end.
22
+ */
23
+ export declare function buildTerminalSpawn(platform: NodeJS.Platform, env: NodeJS.ProcessEnv, scriptPath: string, has?: HasCommand): TerminalSpawn | null;
24
+ export interface LauncherOptions {
25
+ /** Directory the new session should start in. */
26
+ cwd: string;
27
+ /** Session id to resume. */
28
+ sessionId: string;
29
+ /** Display name for the session, so it is identifiable in `/resume`. */
30
+ name?: string;
31
+ /** Lines shown above the prompt, explaining what this window is. */
32
+ banner: string[];
33
+ }
34
+ /** The command a person can run themselves, and what the launcher script executes. */
35
+ export declare function claudeResumeCommand(opts: LauncherOptions, env: NodeJS.ProcessEnv): string[];
36
+ /**
37
+ * Write the launcher script and return its path.
38
+ *
39
+ * The banner matters more than it looks. The window that appears is someone else's
40
+ * conversation, opened from a code, and nothing inside Claude Code will say so — the
41
+ * transcript reads as though this session had done the work itself.
42
+ */
43
+ export declare function writeLauncherScript(dir: string, opts: LauncherOptions, platform: NodeJS.Platform, env: NodeJS.ProcessEnv): string;
44
+ export interface LaunchOutcome {
45
+ ok: boolean;
46
+ via?: string;
47
+ /** Present when we could not open a window. Never a reason to fail the command. */
48
+ reason?: string;
49
+ }
50
+ /**
51
+ * Open the launcher in a new window.
52
+ *
53
+ * Detached and unref'd: the new window must outlive this process, which exits as soon as it
54
+ * has printed. `POPOVER_FORK_LAUNCH_DRYRUN` reports the plan instead of spawning, which is
55
+ * how the Windows argv is asserted in CI without a machine that can open a window.
56
+ */
57
+ export declare function openInNewTerminal(scriptPath: string, platform?: NodeJS.Platform, env?: NodeJS.ProcessEnv, has?: HasCommand): LaunchOutcome;
58
+ //# sourceMappingURL=terminal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,mFAAmF;IACnF,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wFAAwF;AACxF,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,UAAwB,GAC5B,aAAa,GAAG,IAAI,CAkCtB;AAED,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE,CAK3F;AAOD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,MAAM,CAiCR;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,GAAG,GAAE,UAA0B,GAC9B,aAAa,CAuBf"}
@@ -0,0 +1,139 @@
1
+ import { spawn } from "node:child_process";
2
+ import { chmodSync, existsSync, mkdirSync, writeFileSync } from "node:fs";
3
+ import path from "node:path";
4
+ /**
5
+ * Decide how to open `scriptPath` in a new window. Returns null when there is nothing to
6
+ * try, which is a normal outcome over SSH or in a container — the caller prints the command
7
+ * instead, and the user is never left at a dead end.
8
+ */
9
+ export function buildTerminalSpawn(platform, env, scriptPath, has = () => false) {
10
+ // A remote shell has no window server to open anything on. Checked before the
11
+ // platform, because an SSH session into a Mac still reports darwin and `open` there
12
+ // would put a window on someone else's screen, or fail obscurely.
13
+ if (env["SSH_TTY"] || env["SSH_CONNECTION"])
14
+ return null;
15
+ if (platform === "darwin") {
16
+ // `open -a <App> <file>` asks the app to open the file, and both Terminal and iTerm
17
+ // execute a shell script when asked. Other terminals may open it in an editor instead,
18
+ // so anything unrecognized falls back to Terminal, which is always present on macOS.
19
+ const app = env["TERM_PROGRAM"] === "iTerm.app" ? "iTerm" : "Terminal";
20
+ return { file: "open", args: ["-a", app, scriptPath], via: app };
21
+ }
22
+ if (platform === "win32") {
23
+ // The empty string is the window title. `start` treats a lone quoted argument as the
24
+ // title, so omitting it makes `start` swallow the script path as one.
25
+ return { file: "cmd.exe", args: ["/c", "start", "", scriptPath], via: "a new console" };
26
+ }
27
+ // Linux and the BSDs. No window manager means no window: WSL and headless boxes fall
28
+ // through to null and get the command printed.
29
+ if (!env["DISPLAY"] && !env["WAYLAND_DISPLAY"])
30
+ return null;
31
+ const candidates = [
32
+ ["x-terminal-emulator", ["-e", scriptPath]],
33
+ ["gnome-terminal", ["--", scriptPath]],
34
+ ["konsole", ["-e", scriptPath]],
35
+ ["xfce4-terminal", ["-e", scriptPath]],
36
+ ["xterm", ["-e", scriptPath]],
37
+ ];
38
+ for (const [file, args] of candidates) {
39
+ if (has(file))
40
+ return { file, args, via: file };
41
+ }
42
+ return null;
43
+ }
44
+ /** The command a person can run themselves, and what the launcher script executes. */
45
+ export function claudeResumeCommand(opts, env) {
46
+ const bin = env["POPOVER_CLAUDE_BIN"] ?? "claude";
47
+ const args = [bin, "--resume", opts.sessionId];
48
+ if (opts.name)
49
+ args.push("--name", opts.name);
50
+ return args;
51
+ }
52
+ /** POSIX single-quoting: everything is literal inside, and `'` is closed, escaped, reopened. */
53
+ function shellQuote(value) {
54
+ return `'${value.replace(/'/g, `'\\''`)}'`;
55
+ }
56
+ /**
57
+ * Write the launcher script and return its path.
58
+ *
59
+ * The banner matters more than it looks. The window that appears is someone else's
60
+ * conversation, opened from a code, and nothing inside Claude Code will say so — the
61
+ * transcript reads as though this session had done the work itself.
62
+ */
63
+ export function writeLauncherScript(dir, opts, platform, env) {
64
+ mkdirSync(dir, { recursive: true });
65
+ const command = claudeResumeCommand(opts, env);
66
+ if (platform === "win32") {
67
+ const file = path.join(dir, `open-fork-${opts.sessionId}.cmd`);
68
+ const quoted = command.map((a) => (/[\s&|<>^"]/.test(a) ? `"${a}"` : a)).join(" ");
69
+ const body = [
70
+ "@echo off",
71
+ // Nothing below may contain a bare % or it would be read as a variable.
72
+ ...opts.banner.map((line) => `echo ${line.replace(/[%^&<>|]/g, "")}`),
73
+ "echo.",
74
+ `cd /d ${JSON.stringify(opts.cwd)}`,
75
+ quoted,
76
+ "",
77
+ ].join("\r\n");
78
+ writeFileSync(file, body, "utf8");
79
+ return file;
80
+ }
81
+ // `.command` rather than `.sh`: macOS Terminal opens that extension by running it.
82
+ const file = path.join(dir, `open-fork-${opts.sessionId}.command`);
83
+ const body = [
84
+ "#!/bin/sh",
85
+ ...opts.banner.map((line) => `printf '%s\\n' ${shellQuote(line)}`),
86
+ "printf '\\n'",
87
+ `cd ${shellQuote(opts.cwd)} || exit 1`,
88
+ `exec ${command.map(shellQuote).join(" ")}`,
89
+ "",
90
+ ].join("\n");
91
+ writeFileSync(file, body, "utf8");
92
+ chmodSync(file, 0o700);
93
+ return file;
94
+ }
95
+ /**
96
+ * Open the launcher in a new window.
97
+ *
98
+ * Detached and unref'd: the new window must outlive this process, which exits as soon as it
99
+ * has printed. `POPOVER_FORK_LAUNCH_DRYRUN` reports the plan instead of spawning, which is
100
+ * how the Windows argv is asserted in CI without a machine that can open a window.
101
+ */
102
+ export function openInNewTerminal(scriptPath, platform = process.platform, env = process.env, has = commandExists) {
103
+ const plan = buildTerminalSpawn(platform, env, scriptPath, has);
104
+ if (!plan) {
105
+ return { ok: false, reason: "no terminal to open a window in" };
106
+ }
107
+ if (env["POPOVER_FORK_LAUNCH_DRYRUN"]) {
108
+ console.log(`[dry-run] ${plan.file} ${plan.args.join(" ")}`);
109
+ return { ok: true, via: plan.via };
110
+ }
111
+ try {
112
+ const child = spawn(plan.file, plan.args, {
113
+ detached: true,
114
+ stdio: "ignore",
115
+ shell: false,
116
+ windowsHide: false,
117
+ });
118
+ child.unref();
119
+ return { ok: true, via: plan.via };
120
+ }
121
+ catch (err) {
122
+ return { ok: false, reason: err instanceof Error ? err.message : String(err) };
123
+ }
124
+ }
125
+ /** PATH lookup without a shell, so probing for a terminal costs nothing on platforms that need none. */
126
+ function commandExists(command) {
127
+ const dirs = (process.env["PATH"] ?? "").split(path.delimiter).filter(Boolean);
128
+ for (const dir of dirs) {
129
+ try {
130
+ if (existsSync(path.join(dir, command)))
131
+ return true;
132
+ }
133
+ catch {
134
+ /* an unreadable PATH entry is not an error */
135
+ }
136
+ }
137
+ return false;
138
+ }
139
+ //# sourceMappingURL=terminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * The visual language for the onboarding flow — a dim vertical trunk with markers hanging
3
+ * off it, amber for anything in progress, and titled boxes for the moments that matter.
4
+ *
5
+ * Everything here degrades in two independent directions, because the CLI is run by the
6
+ * installer on a fresh machine and gets whatever terminal that machine happens to have:
7
+ *
8
+ * 1. **Colour.** Truecolor gets the exact amber; a 256-colour terminal gets the nearest
9
+ * xterm index; anything else falls back to its own yellow. `NO_COLOR` and a redirected
10
+ * stdout drop escapes entirely.
11
+ * 2. **Glyphs.** The trunk, box corners and braille spinner are all outside ASCII. A
12
+ * terminal that has not told us it speaks UTF-8 gets an ASCII skeleton instead of
13
+ * mojibake.
14
+ */
15
+ export declare const colorEnabled: boolean;
16
+ /**
17
+ * Whether box-drawing and braille characters are safe to emit.
18
+ *
19
+ * On Windows the modern hosts (Windows Terminal, VS Code, ConEmu) all announce themselves
20
+ * and render UTF-8 correctly; legacy conhost with a non-UTF-8 code page does not, and there
21
+ * is no reliable probe for it, so the absence of any signal is treated as "plain ASCII".
22
+ * On POSIX the locale is the signal.
23
+ */
24
+ export declare const unicodeEnabled: boolean;
25
+ /**
26
+ * The raw accent codes, for callers that compose their own escape sequences rather than wrapping
27
+ * a string — scene.ts paints half-block pixels, where the foreground and background of a single
28
+ * cell come from two different palette entries.
29
+ */
30
+ export declare const AMBER_INK: string;
31
+ export declare const AMBER_WASH: string;
32
+ export declare const style: {
33
+ amber: (s: string) => string;
34
+ dim: (s: string) => string;
35
+ bold: (s: string) => string;
36
+ green: (s: string) => string;
37
+ red: (s: string) => string;
38
+ cyan: (s: string) => string;
39
+ /** Bright white, for the one thing on screen the reader has to act on. */
40
+ white: (s: string) => string;
41
+ /** Bold and dim together read as "quiet heading" rather than either alone. */
42
+ heading: (s: string) => string;
43
+ };
44
+ /**
45
+ * The product name with the amber carried behind it rather than in front.
46
+ *
47
+ * Dark text on the accent colour, padded by a space either side so the highlight reads as a
48
+ * label rather than as coloured-in text. With colour unavailable the highlight cannot be
49
+ * seen at all, so brackets stand in for it — the name still has to look deliberate in a
50
+ * plain log.
51
+ */
52
+ export declare function badge(text: string): string;
53
+ /**
54
+ * Break text onto lines no wider than `max`, on word boundaries.
55
+ *
56
+ * Plain text only — it counts characters directly, so wrap before styling, not after.
57
+ * Words longer than the limit are left over-long rather than cut, on the grounds that a
58
+ * broken URL is worse than a ragged edge.
59
+ */
60
+ export declare function wrap(text: string, max: number): string[];
61
+ export declare const glyph: {
62
+ trunk: string;
63
+ step: string;
64
+ pending: string;
65
+ done: string;
66
+ fail: string;
67
+ boxTopRight: string;
68
+ boxBottomRight: string;
69
+ boxBottomLeft: string;
70
+ dash: string;
71
+ dot: string;
72
+ arrow: string;
73
+ };
74
+ /** A bare trunk segment — the breathing room between steps. */
75
+ export declare function trunk(): void;
76
+ /** A line hanging off the trunk. */
77
+ export declare function line(text?: string): void;
78
+ /** A marker line: the trunk position is replaced by a coloured glyph. */
79
+ export declare function step(text: string, mark?: string): void;
80
+ export declare function stepDone(text: string): void;
81
+ export declare function stepFail(text: string): void;
82
+ /**
83
+ * Printable width, ignoring escape sequences.
84
+ *
85
+ * Everything measured here is ASCII text plus the box glyphs above, all of which are single
86
+ * cell — so a naive length is correct once the escapes are stripped. Nothing in the
87
+ * onboarding copy is CJK or emoji, which would need real width tables.
88
+ */
89
+ export declare function width(text: string): number;
90
+ export interface BoxOptions {
91
+ title: string;
92
+ /** Content lines, already styled. Empty strings render as padding rows. */
93
+ lines: string[];
94
+ /** Minimum inner width, used to keep the box wider than the art above it. */
95
+ minWidth?: number;
96
+ }
97
+ /**
98
+ * A titled box hanging off the trunk, in the shape the trunk already implies: the title
99
+ * sits inline on the top border, the left edge *is* the trunk, and the bottom border
100
+ * reconnects to it so the line continues below.
101
+ *
102
+ * ◆ Welcome to Popover ──────────────╮
103
+ * │ │
104
+ * │ The first multiplayer … │
105
+ * ├───────────────────────────────────╯
106
+ */
107
+ export declare function box({ title, lines, minWidth }: BoxOptions): void;
108
+ export interface Spinner {
109
+ /** Change the label without breaking the animation. */
110
+ update(label: string): void;
111
+ /** Stop and leave a resolved marker line in its place. */
112
+ stop(text?: string, mark?: string): void;
113
+ /** Stop and erase, leaving nothing behind. */
114
+ clear(): void;
115
+ }
116
+ /**
117
+ * An amber spinner on the trunk.
118
+ *
119
+ * Off a TTY this prints the label once and animates nothing — the alternative is thousands
120
+ * of carriage returns in a captured log, which is what `popover update` reads.
121
+ */
122
+ export declare function spinner(label: string): Spinner;
123
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,eAAO,MAAM,YAAY,SAAyD,CAAC;AAEnF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,SAWvB,CAAC;AA8BL;;;;GAIG;AACH,eAAO,MAAM,SAAS,QAAQ,CAAC;AAC/B,eAAO,MAAM,UAAU,QAAW,CAAC;AAInC,eAAO,MAAM,KAAK;eACL,MAAM;aACR,MAAM;cACL,MAAM;eACL,MAAM;aACR,MAAM;cACL,MAAM;IAChB,0EAA0E;eAC/D,MAAM;IACjB,8EAA8E;iBACjE,MAAM;CACpB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG1C;AAED;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAcxD;AAED,eAAO,MAAM,KAAK;;;;;;;;;;;;CA0Bb,CAAC;AAQN,+DAA+D;AAC/D,wBAAgB,KAAK,IAAI,IAAI,CAE5B;AAED,oCAAoC;AACpC,wBAAgB,IAAI,CAAC,IAAI,SAAK,GAAG,IAAI,CAEpC;AAED,yEAAyE;AACzE,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAA0B,GAAG,IAAI,CAEvE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG1C;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAY,EAAE,EAAE,UAAU,GAAG,IAAI,CAuBpE;AAED,MAAM,WAAW,OAAO;IACtB,uDAAuD;IACvD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,0DAA0D;IAC1D,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,8CAA8C;IAC9C,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CA8C9C"}
package/dist/theme.js ADDED
@@ -0,0 +1,257 @@
1
+ /**
2
+ * The visual language for the onboarding flow — a dim vertical trunk with markers hanging
3
+ * off it, amber for anything in progress, and titled boxes for the moments that matter.
4
+ *
5
+ * Everything here degrades in two independent directions, because the CLI is run by the
6
+ * installer on a fresh machine and gets whatever terminal that machine happens to have:
7
+ *
8
+ * 1. **Colour.** Truecolor gets the exact amber; a 256-colour terminal gets the nearest
9
+ * xterm index; anything else falls back to its own yellow. `NO_COLOR` and a redirected
10
+ * stdout drop escapes entirely.
11
+ * 2. **Glyphs.** The trunk, box corners and braille spinner are all outside ASCII. A
12
+ * terminal that has not told us it speaks UTF-8 gets an ASCII skeleton instead of
13
+ * mojibake.
14
+ */
15
+ const isWindows = process.platform === "win32";
16
+ export const colorEnabled = Boolean(process.stdout.isTTY) && !process.env.NO_COLOR;
17
+ /**
18
+ * Whether box-drawing and braille characters are safe to emit.
19
+ *
20
+ * On Windows the modern hosts (Windows Terminal, VS Code, ConEmu) all announce themselves
21
+ * and render UTF-8 correctly; legacy conhost with a non-UTF-8 code page does not, and there
22
+ * is no reliable probe for it, so the absence of any signal is treated as "plain ASCII".
23
+ * On POSIX the locale is the signal.
24
+ */
25
+ export const unicodeEnabled = (() => {
26
+ if (isWindows) {
27
+ return Boolean(process.env.WT_SESSION ||
28
+ process.env.TERM_PROGRAM ||
29
+ process.env.ConEmuANSI ||
30
+ process.env.WSLENV);
31
+ }
32
+ const locale = process.env.LC_ALL || process.env.LC_CTYPE || process.env.LANG || "";
33
+ return /UTF-?8/i.test(locale);
34
+ })();
35
+ const esc = (code) => (colorEnabled ? `\x1b[${code}m` : "");
36
+ /**
37
+ * Amber — the colour of anything still happening.
38
+ *
39
+ * `38;5;179` is the nearest xterm index to the truecolor value, which matters: on a
40
+ * 256-colour terminal the truecolor sequence is either ignored or approximated badly,
41
+ * and plain `33` is whatever yellow the user's theme picked.
42
+ */
43
+ const AMBER = (() => {
44
+ if (!colorEnabled)
45
+ return "";
46
+ const colorterm = process.env.COLORTERM ?? "";
47
+ if (/truecolor|24bit/i.test(colorterm))
48
+ return "\x1b[38;2;224;175;104m";
49
+ const term = process.env.TERM ?? "";
50
+ if (/256color|-direct/.test(term) || isWindows)
51
+ return "\x1b[38;5;179m";
52
+ return "\x1b[33m";
53
+ })();
54
+ /** The same amber as a background, for the brand badge. */
55
+ const AMBER_BG = (() => {
56
+ if (!colorEnabled)
57
+ return "";
58
+ const colorterm = process.env.COLORTERM ?? "";
59
+ if (/truecolor|24bit/i.test(colorterm))
60
+ return "\x1b[48;2;224;175;104m";
61
+ const term = process.env.TERM ?? "";
62
+ if (/256color|-direct/.test(term) || isWindows)
63
+ return "\x1b[48;5;179m";
64
+ return "\x1b[43m";
65
+ })();
66
+ /**
67
+ * The raw accent codes, for callers that compose their own escape sequences rather than wrapping
68
+ * a string — scene.ts paints half-block pixels, where the foreground and background of a single
69
+ * cell come from two different palette entries.
70
+ */
71
+ export const AMBER_INK = AMBER;
72
+ export const AMBER_WASH = AMBER_BG;
73
+ const RESET = esc("0");
74
+ export const style = {
75
+ amber: (s) => (colorEnabled ? `${AMBER}${s}${RESET}` : s),
76
+ dim: (s) => `${esc("2")}${s}${RESET}`,
77
+ bold: (s) => `${esc("1")}${s}${RESET}`,
78
+ green: (s) => `${esc("32")}${s}${RESET}`,
79
+ red: (s) => `${esc("31")}${s}${RESET}`,
80
+ cyan: (s) => `${esc("36")}${s}${RESET}`,
81
+ /** Bright white, for the one thing on screen the reader has to act on. */
82
+ white: (s) => `${esc("1")}${esc("97")}${s}${RESET}`,
83
+ /** Bold and dim together read as "quiet heading" rather than either alone. */
84
+ heading: (s) => `${esc("1")}${s}${RESET}`,
85
+ };
86
+ /**
87
+ * The product name with the amber carried behind it rather than in front.
88
+ *
89
+ * Dark text on the accent colour, padded by a space either side so the highlight reads as a
90
+ * label rather than as coloured-in text. With colour unavailable the highlight cannot be
91
+ * seen at all, so brackets stand in for it — the name still has to look deliberate in a
92
+ * plain log.
93
+ */
94
+ export function badge(text) {
95
+ if (!colorEnabled)
96
+ return `[${text}]`;
97
+ return `${esc("1")}${esc("30")}${AMBER_BG} ${text} ${RESET}`;
98
+ }
99
+ /**
100
+ * Break text onto lines no wider than `max`, on word boundaries.
101
+ *
102
+ * Plain text only — it counts characters directly, so wrap before styling, not after.
103
+ * Words longer than the limit are left over-long rather than cut, on the grounds that a
104
+ * broken URL is worse than a ragged edge.
105
+ */
106
+ export function wrap(text, max) {
107
+ const lines = [];
108
+ let current = "";
109
+ for (const word of text.split(/\s+/).filter(Boolean)) {
110
+ if (!current)
111
+ current = word;
112
+ else if (current.length + 1 + word.length <= max)
113
+ current += ` ${word}`;
114
+ else {
115
+ lines.push(current);
116
+ current = word;
117
+ }
118
+ }
119
+ if (current)
120
+ lines.push(current);
121
+ return lines.length ? lines : [""];
122
+ }
123
+ export const glyph = unicodeEnabled
124
+ ? {
125
+ trunk: "│",
126
+ step: "◆",
127
+ pending: "◇",
128
+ done: "✔",
129
+ fail: "✘",
130
+ boxTopRight: "╮",
131
+ boxBottomRight: "╯",
132
+ boxBottomLeft: "├",
133
+ dash: "─",
134
+ dot: "·",
135
+ arrow: "›",
136
+ }
137
+ : {
138
+ trunk: "|",
139
+ step: "*",
140
+ pending: "-",
141
+ done: "+",
142
+ fail: "x",
143
+ boxTopRight: "+",
144
+ boxBottomRight: "+",
145
+ boxBottomLeft: "+",
146
+ dash: "-",
147
+ dot: "-",
148
+ arrow: ">",
149
+ };
150
+ const SPINNER_FRAMES = unicodeEnabled
151
+ ? ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]
152
+ : ["-", "\\", "|", "/"];
153
+ const write = (s) => process.stdout.write(s);
154
+ /** A bare trunk segment — the breathing room between steps. */
155
+ export function trunk() {
156
+ console.log(style.dim(glyph.trunk));
157
+ }
158
+ /** A line hanging off the trunk. */
159
+ export function line(text = "") {
160
+ console.log(`${style.dim(glyph.trunk)} ${text}`);
161
+ }
162
+ /** A marker line: the trunk position is replaced by a coloured glyph. */
163
+ export function step(text, mark = style.green(glyph.step)) {
164
+ console.log(`${mark} ${text}`);
165
+ }
166
+ export function stepDone(text) {
167
+ step(text, style.green(glyph.done));
168
+ }
169
+ export function stepFail(text) {
170
+ step(text, style.red(glyph.fail));
171
+ }
172
+ /**
173
+ * Printable width, ignoring escape sequences.
174
+ *
175
+ * Everything measured here is ASCII text plus the box glyphs above, all of which are single
176
+ * cell — so a naive length is correct once the escapes are stripped. Nothing in the
177
+ * onboarding copy is CJK or emoji, which would need real width tables.
178
+ */
179
+ export function width(text) {
180
+ // eslint-disable-next-line no-control-regex
181
+ return text.replace(/\x1b\[[0-9;]*m/g, "").length;
182
+ }
183
+ /**
184
+ * A titled box hanging off the trunk, in the shape the trunk already implies: the title
185
+ * sits inline on the top border, the left edge *is* the trunk, and the bottom border
186
+ * reconnects to it so the line continues below.
187
+ *
188
+ * ◆ Welcome to Popover ──────────────╮
189
+ * │ │
190
+ * │ The first multiplayer … │
191
+ * ├───────────────────────────────────╯
192
+ */
193
+ export function box({ title, lines, minWidth = 0 }) {
194
+ const pad = 2;
195
+ const content = Math.max(minWidth, width(title) + 1, ...lines.map((l) => width(l)));
196
+ const inner = content + pad * 2;
197
+ const dashes = inner - width(title) - pad - 1;
198
+ console.log(`${style.green(glyph.step)}${" ".repeat(pad)}${style.bold(title)} ` +
199
+ style.dim(glyph.dash.repeat(Math.max(1, dashes)) + glyph.boxTopRight));
200
+ for (const l of lines) {
201
+ const gap = " ".repeat(Math.max(0, inner - pad - width(l)));
202
+ console.log(`${style.dim(glyph.trunk)}${" ".repeat(pad)}${l}${gap}${style.dim(glyph.trunk)}`);
203
+ }
204
+ console.log(style.dim(glyph.boxBottomLeft + glyph.dash.repeat(inner) + glyph.boxBottomRight));
205
+ }
206
+ /**
207
+ * An amber spinner on the trunk.
208
+ *
209
+ * Off a TTY this prints the label once and animates nothing — the alternative is thousands
210
+ * of carriage returns in a captured log, which is what `popover update` reads.
211
+ */
212
+ export function spinner(label) {
213
+ let current = label;
214
+ if (!process.stdout.isTTY) {
215
+ line(current);
216
+ return {
217
+ update: (next) => {
218
+ current = next;
219
+ },
220
+ stop: (text) => {
221
+ if (text)
222
+ line(text);
223
+ },
224
+ clear: () => { },
225
+ };
226
+ }
227
+ let frame = 0;
228
+ let live = true;
229
+ const render = () => {
230
+ const mark = style.amber(SPINNER_FRAMES[frame % SPINNER_FRAMES.length]);
231
+ write(`\r\x1b[K${mark} ${current}`);
232
+ frame += 1;
233
+ };
234
+ write("\x1b[?25l"); // hide the cursor so it does not strobe on the spinner
235
+ render();
236
+ const timer = setInterval(render, 80);
237
+ timer.unref?.();
238
+ const end = () => {
239
+ if (!live)
240
+ return;
241
+ live = false;
242
+ clearInterval(timer);
243
+ write("\r\x1b[K\x1b[?25h");
244
+ };
245
+ return {
246
+ update: (next) => {
247
+ current = next;
248
+ },
249
+ stop: (text, mark = style.green(glyph.done)) => {
250
+ end();
251
+ if (text)
252
+ step(text, mark);
253
+ },
254
+ clear: end,
255
+ };
256
+ }
257
+ //# sourceMappingURL=theme.js.map