seatmesh 0.1.8 → 0.1.10

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.
@@ -0,0 +1,9 @@
1
+ export declare const SEATMESH_TAGLINE = "tmux multi-agent workbench";
2
+ export type BannerOpts = {
3
+ subtitle?: string;
4
+ /** Shown centered under the title block (default text: SEATMESH_TAGLINE). */
5
+ tagline?: boolean | string;
6
+ };
7
+ /** Brand header: logo + title + optional centered tagline. */
8
+ export declare function printSeatmeshBanner(opts?: string | BannerOpts): void;
9
+ //# sourceMappingURL=banner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gBAAgB,+BAA+B,CAAC;AAgB7D,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC5B,CAAC;AA0EF,8DAA8D;AAC9D,wBAAgB,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAyCpE"}
package/dist/banner.js ADDED
@@ -0,0 +1,113 @@
1
+ import boxen from "boxen";
2
+ import cfonts from "cfonts";
3
+ import { renderLogoMark } from "./logo-art.js";
4
+ import { terminalStyleEnabled, tintBrandBlueGradient } from "./logo-color.js";
5
+ export const SEATMESH_TAGLINE = "tmux multi-agent workbench";
6
+ const TITLE_FONT = "block";
7
+ function stripAnsi(text) {
8
+ return text.replace(/\x1b\[[0-9;]*m/g, "");
9
+ }
10
+ function renderCfonts(text, opts) {
11
+ const out = cfonts.render(text, {
12
+ align: "left",
13
+ letterSpacing: 1,
14
+ lineHeight: 1,
15
+ maxLength: "0",
16
+ env: "node",
17
+ background: "transparent",
18
+ spaceless: true,
19
+ ...opts,
20
+ });
21
+ if (!out)
22
+ return text;
23
+ return out.string.trimEnd();
24
+ }
25
+ function visibleWidth(line) {
26
+ return stripAnsi(line).length;
27
+ }
28
+ function blockWidth(block) {
29
+ if (!block)
30
+ return 0;
31
+ return Math.max(0, ...block.split("\n").map(visibleWidth));
32
+ }
33
+ function centerBlock(block, width) {
34
+ if (!block)
35
+ return "";
36
+ const lines = block.split("\n");
37
+ const blockW = blockWidth(block);
38
+ const left = Math.max(0, Math.floor((width - blockW) / 2));
39
+ const prefix = " ".repeat(left);
40
+ return lines.map((line) => prefix + line).join("\n");
41
+ }
42
+ function centerPlain(text, width) {
43
+ const left = Math.max(0, Math.floor((width - text.length) / 2));
44
+ return `${" ".repeat(left)}${text}`;
45
+ }
46
+ function dim(text) {
47
+ if (!terminalStyleEnabled())
48
+ return text;
49
+ return `\x1b[2m${text}\x1b[0m`;
50
+ }
51
+ function frameSubtitle(subtitle) {
52
+ return boxen(subtitle, {
53
+ padding: { top: 0, bottom: 0, left: 1, right: 1 },
54
+ margin: { top: 1, bottom: 0, left: 0, right: 0 },
55
+ borderStyle: "round",
56
+ dimBorder: true,
57
+ });
58
+ }
59
+ function renderTitleRaw() {
60
+ return renderCfonts("seatmesh", {
61
+ font: TITLE_FONT,
62
+ lineHeight: 0,
63
+ gradient: false,
64
+ colors: terminalStyleEnabled() ? ["white"] : [],
65
+ });
66
+ }
67
+ function resolveBannerOpts(opts) {
68
+ if (typeof opts === "string")
69
+ return { subtitle: opts };
70
+ return opts ?? {};
71
+ }
72
+ /** Brand header: logo + title + optional centered tagline. */
73
+ export function printSeatmeshBanner(opts) {
74
+ const { subtitle, tagline: taglineOpt } = resolveBannerOpts(opts);
75
+ const tagline = taglineOpt === true
76
+ ? SEATMESH_TAGLINE
77
+ : typeof taglineOpt === "string"
78
+ ? taglineOpt
79
+ : undefined;
80
+ const logoRaw = renderLogoMark();
81
+ const titleRaw = stripAnsi(renderTitleRaw());
82
+ const titleWidth = blockWidth(titleRaw);
83
+ let logoOut = "";
84
+ let titleOut = titleRaw;
85
+ if (terminalStyleEnabled()) {
86
+ const stack = logoRaw ? `${logoRaw}\n\n${titleRaw}` : titleRaw;
87
+ const colored = tintBrandBlueGradient(stack);
88
+ const lines = colored.split("\n");
89
+ if (logoRaw) {
90
+ const logoLines = logoRaw.split("\n").length;
91
+ logoOut = centerBlock(lines.slice(0, logoLines).join("\n"), titleWidth);
92
+ titleOut = lines.slice(logoLines + 1).join("\n");
93
+ }
94
+ else {
95
+ titleOut = colored;
96
+ }
97
+ }
98
+ else if (logoRaw) {
99
+ logoOut = centerBlock(logoRaw, titleWidth);
100
+ }
101
+ if (logoOut) {
102
+ console.log(logoOut);
103
+ console.log("");
104
+ }
105
+ console.log(titleOut);
106
+ if (tagline) {
107
+ console.log(dim(centerPlain(tagline, titleWidth)));
108
+ }
109
+ if (subtitle)
110
+ console.log(frameSubtitle(subtitle));
111
+ console.log("");
112
+ }
113
+ //# sourceMappingURL=banner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.js","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkback-cli.d.ts","sourceRoot":"","sources":["../src/checkback-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,KAAK,aAAa,EAOnB,MAAM,iBAAiB,CAAC;AAiBzB,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,aAAa,GAAG,OAAO,CAmG9E"}
1
+ {"version":3,"file":"checkback-cli.d.ts","sourceRoot":"","sources":["../src/checkback-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,KAAK,aAAa,EAQnB,MAAM,iBAAiB,CAAC;AAkDzB,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,aAAa,GAAG,OAAO,CAwH9E"}
@@ -1,12 +1,39 @@
1
1
  import { Command } from "commander";
2
- import { armCheckback, cancelAllCheckbacks, cancelCheckback, chatRoomConfigForLoaded, listCheckbacks, } from "@seat-mesh/core";
3
- import { ensureMeshInbox, runWhoami } from "@seat-mesh/tmux";
4
- function resolvePane(loaded, explicit) {
5
- if (explicit)
6
- return explicit;
7
- if (process.env.TMUX_PANE)
8
- return process.env.TMUX_PANE;
9
- return runWhoami(loaded).paneId ?? undefined;
2
+ import { armCheckback, cancelAllCheckbacks, cancelCheckback, chatRoomConfigForLoaded, listCheckbacks, parseDurationToSeconds, } from "@seat-mesh/core";
3
+ import { ensureMeshInbox, meshInboxPort, resolvePaneTarget, runWhoami, } from "@seat-mesh/tmux";
4
+ function requireMeshInbox(loaded) {
5
+ if (ensureMeshInbox(loaded, { quiet: true }))
6
+ return;
7
+ const port = meshInboxPort(loaded);
8
+ console.error(`FAIL: mesh inbox down on :${port} — run: ./sm.sh inbox restart`);
9
+ process.exit(1);
10
+ }
11
+ function resolveTargetPane(loaded, opts) {
12
+ if (opts.pane) {
13
+ const hit = resolvePaneTarget(opts.pane, loaded);
14
+ if ("error" in hit)
15
+ throw new Error(hit.error);
16
+ return hit.paneId;
17
+ }
18
+ if (opts.mini) {
19
+ const hit = resolvePaneTarget(`mini-${opts.mini}`, loaded);
20
+ if ("error" in hit)
21
+ throw new Error(hit.error);
22
+ return hit.paneId;
23
+ }
24
+ if (opts.slot) {
25
+ const hit = resolvePaneTarget(opts.slot, loaded);
26
+ if ("error" in hit)
27
+ throw new Error(hit.error);
28
+ return hit.paneId;
29
+ }
30
+ if (opts.here || !opts.pane) {
31
+ const hit = resolvePaneTarget("here", loaded);
32
+ if ("error" in hit)
33
+ throw new Error(hit.error);
34
+ return hit.paneId;
35
+ }
36
+ throw new Error("checkback start: no target pane (--here|--slot N|--mini N|--pane %id)");
10
37
  }
11
38
  function printEntry(e) {
12
39
  const left = e.expiresAt ? `exp=${e.expiresAt}` : "exp=n/a";
@@ -16,33 +43,56 @@ function printEntry(e) {
16
43
  export function buildCheckbackCommands(getLoaded) {
17
44
  const checkback = new Command("checkback")
18
45
  .alias("patience")
19
- .description("Mesh inbox :3100 /patience poll-later entries (daemon injects on expiry)");
46
+ .description("Mesh inbox poll-later (daemon injects Check: on expiry)");
20
47
  checkback
21
- .command("start")
22
- .description("Arm a checkback — daemon writes 'Check: <expect>' into a tmux pane on expiry")
23
- .requiredOption("--expect <text>", "what to be checked back on")
24
- .option("--duration <dur>", "how long until fire (default: profile 5m)", "5m")
25
- .option("--renew <dur>", "re-arm with this interval after firing (default: 3m)", "3m")
26
- .option("--pane <id>", "target tmux pane id (default: current pane)")
27
- .option("--kind <kind>", "entry kind (default: checkback)", "checkback")
28
- .option("--from <id>", "sender agent id")
29
- .action(async (opts) => {
48
+ .command("start <duration>")
49
+ .description('Arm checkback — harness shape: start 5m --expect "topic" [--renew 3m] [--here|--slot N|--mini N]')
50
+ .option("--expect <text>", "what to verify when timer fires")
51
+ .option("--renew <dur>", "re-arm interval after fire", "3m")
52
+ .option("--here", "target current tmux pane")
53
+ .option("--slot <n>", "target worker slot pane")
54
+ .option("--mini <n>", "target mini pane")
55
+ .option("--pane <id>", "target tmux pane id")
56
+ .option("--kind <kind>", "entry kind", "checkback")
57
+ .allowExcessArguments(true)
58
+ .action(async (duration, opts, cmd) => {
30
59
  const loaded = getLoaded();
60
+ requireMeshInbox(loaded);
31
61
  const cfg = chatRoomConfigForLoaded(loaded);
32
- ensureMeshInbox(loaded, { quiet: true });
33
- const ownerPane = resolvePane(loaded, opts.pane);
34
- if (!ownerPane) {
35
- console.error("checkback start: no target pane");
62
+ if (parseDurationToSeconds(duration) == null) {
63
+ console.error(`checkback start: bad duration '${duration}' (use 30s, 5m, 1h)`);
64
+ process.exit(2);
65
+ }
66
+ const trailing = cmd.args.slice(1).filter(Boolean);
67
+ let expect = opts.expect?.trim() ?? "";
68
+ if (!expect && trailing.length) {
69
+ expect = trailing.join(" ").trim();
70
+ }
71
+ if (!expect) {
72
+ console.error('usage: checkback start <duration> --expect "topic" [--renew 3m] [--here|--slot N|--mini N]');
36
73
  process.exit(2);
37
74
  }
75
+ let ownerPane;
76
+ try {
77
+ ownerPane = resolveTargetPane(loaded, {
78
+ here: opts.here,
79
+ slot: opts.slot,
80
+ mini: opts.mini,
81
+ pane: opts.pane,
82
+ });
83
+ }
84
+ catch (e) {
85
+ console.error(e.message);
86
+ process.exit(1);
87
+ }
38
88
  const res = await armCheckback({
39
89
  inboxBase: cfg.inboxBase,
40
90
  ownerPane,
41
- expect: opts.expect,
42
- duration: opts.duration,
91
+ expect,
92
+ duration,
43
93
  renew: opts.renew,
44
94
  kind: opts.kind,
45
- senderPane: ownerPane,
95
+ senderPane: runWhoami(loaded).paneId ?? ownerPane,
46
96
  });
47
97
  if (!res.ok) {
48
98
  console.error(`checkback start: FAIL ${res.reason ?? "?"}`);
@@ -53,7 +103,7 @@ export function buildCheckbackCommands(getLoaded) {
53
103
  console.error("checkback start: FAIL no entry returned");
54
104
  process.exit(1);
55
105
  }
56
- console.log(`ok id=${entry.id} expiresAt=${entry.expiresAt ?? "-"} expect=${opts.expect}`);
106
+ console.log(`ok id=${entry.id} expiresAt=${entry.expiresAt ?? "-"} expect=${expect}`);
57
107
  });
58
108
  checkback
59
109
  .command("list")
@@ -63,8 +113,8 @@ export function buildCheckbackCommands(getLoaded) {
63
113
  .option("--json", "raw JSON")
64
114
  .action(async (opts) => {
65
115
  const loaded = getLoaded();
116
+ requireMeshInbox(loaded);
66
117
  const cfg = chatRoomConfigForLoaded(loaded);
67
- ensureMeshInbox(loaded, { quiet: true });
68
118
  const out = await listCheckbacks(cfg.inboxBase, { all: opts.all });
69
119
  if (opts.json) {
70
120
  console.log(JSON.stringify(out, null, 2));
@@ -83,8 +133,8 @@ export function buildCheckbackCommands(getLoaded) {
83
133
  .argument("<id>", "checkback id or prefix")
84
134
  .action(async (id) => {
85
135
  const loaded = getLoaded();
136
+ requireMeshInbox(loaded);
86
137
  const cfg = chatRoomConfigForLoaded(loaded);
87
- ensureMeshInbox(loaded, { quiet: true });
88
138
  const res = await cancelCheckback(cfg.inboxBase, id);
89
139
  console.log(`ok cancelled=${res.cancelled}`);
90
140
  });
@@ -93,8 +143,8 @@ export function buildCheckbackCommands(getLoaded) {
93
143
  .description("Cancel every active checkback (mesh inbox poll-later)")
94
144
  .action(async () => {
95
145
  const loaded = getLoaded();
146
+ requireMeshInbox(loaded);
96
147
  const cfg = chatRoomConfigForLoaded(loaded);
97
- ensureMeshInbox(loaded, { quiet: true });
98
148
  const res = await cancelAllCheckbacks(cfg.inboxBase);
99
149
  console.log(`ok cancelled=${res.cancelled}`);
100
150
  });
@@ -1 +1 @@
1
- {"version":3,"file":"checkback-cli.js","sourceRoot":"","sources":["../src/checkback-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checkback-cli.js","sourceRoot":"","sources":["../src/checkback-cli.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import { SEATMESH_TAGLINE } from "./banner.js";
2
+ export { SEATMESH_TAGLINE };
1
3
  export interface DiscoveryReportOptions {
2
4
  cwd?: string;
3
5
  json?: boolean;
@@ -8,6 +10,6 @@ export interface DiscoveryReport {
8
10
  hasProject: boolean;
9
11
  projectConfig: string | null;
10
12
  }
11
- /** Greenfield / no `.sm/` — no profile load, no bundled minimal fallback. */
13
+ /** Greenfield / no `.sm/` — no profile load. */
12
14
  export declare function printDiscoveryReport(opts?: DiscoveryReportOptions): Promise<DiscoveryReport>;
13
15
  //# sourceMappingURL=discovery-report.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"discovery-report.d.ts","sourceRoot":"","sources":["../src/discovery-report.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,sBAAsB;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAaD,6EAA6E;AAC7E,wBAAsB,oBAAoB,CACxC,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC,eAAe,CAAC,CA+E1B"}
1
+ {"version":3,"file":"discovery-report.d.ts","sourceRoot":"","sources":["../src/discovery-report.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpE,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAO5B,MAAM,WAAW,sBAAsB;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAID,gDAAgD;AAChD,wBAAsB,oBAAoB,CACxC,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC,eAAe,CAAC,CAoC1B"}
@@ -1,34 +1,21 @@
1
1
  import { spawnSync } from "node:child_process";
2
2
  import path from "node:path";
3
- import { findDotSmConfig, SM_DIR } from "@seat-mesh/core";
3
+ import { findDotSmConfig } from "@seat-mesh/core";
4
+ import { printSeatmeshBanner, SEATMESH_TAGLINE } from "./banner.js";
5
+ import { terminalBold } from "./logo-color.js";
6
+ export { SEATMESH_TAGLINE };
4
7
  function which(bin) {
5
8
  const r = spawnSync("sh", ["-c", `command -v ${bin}`], { encoding: "utf8" });
6
9
  return r.status === 0;
7
10
  }
8
- function tmuxVersion() {
9
- const r = spawnSync("tmux", ["-V"], { encoding: "utf8" });
10
- if (r.status !== 0)
11
- return null;
12
- return (r.stdout ?? "").trim() || null;
13
- }
14
- const COMMANDS = [
15
- { cmd: "init", note: "create .sm/ project config in this folder" },
16
- { cmd: "session up", note: "start tmux workbench (after init)" },
17
- { cmd: "session attach", note: "attach to running session" },
18
- { cmd: "whoami", note: "pane identity (inside tmux)" },
19
- { cmd: "verify", note: "layout + labels health" },
20
- { cmd: "inbox", note: "inbox daemon status" },
21
- { cmd: "contexts", note: "seat FOCUS summary" },
22
- { cmd: "help", note: "full command list" },
23
- ];
24
- /** Greenfield / no `.sm/` — no profile load, no bundled minimal fallback. */
11
+ const COMMANDS = ["init", "sessions", "session up", "session attach", "help"];
12
+ /** Greenfield / no `.sm/` no profile load. */
25
13
  export async function printDiscoveryReport(opts = {}) {
26
14
  const cwd = path.resolve(opts.cwd ?? process.cwd());
27
15
  const projectConfig = findDotSmConfig(cwd);
28
16
  const hasProject = projectConfig != null;
29
17
  const tmuxOk = which("tmux");
30
18
  const curlOk = which("curl");
31
- const npmOk = which("npm");
32
19
  const report = {
33
20
  ok: hasProject || (tmuxOk && curlOk),
34
21
  cwd,
@@ -36,50 +23,20 @@ export async function printDiscoveryReport(opts = {}) {
36
23
  projectConfig,
37
24
  };
38
25
  if (opts.json) {
39
- console.log(JSON.stringify({
40
- ...report,
41
- prereqs: { node: process.version, tmux: tmuxOk, curl: curlOk, npm: npmOk },
42
- commands: COMMANDS,
43
- }, null, 2));
26
+ console.log(JSON.stringify({ ...report, tagline: SEATMESH_TAGLINE, commands: COMMANDS }, null, 2));
44
27
  return report;
45
28
  }
46
- console.log("seatmesh workspace check\n");
47
- console.log("## This folder");
48
- console.log(`cwd=${cwd}`);
29
+ printSeatmeshBanner({ tagline: true });
49
30
  if (hasProject) {
50
- console.log(`project=FOUND ${projectConfig}`);
51
- console.log("next: npx seatmesh (full stack status)");
52
- console.log(" npx seatmesh session attach");
31
+ console.log(terminalBold("npx seatmesh"));
53
32
  }
54
33
  else {
55
- console.log(`project=MISSING (no ${SM_DIR}/mesh.config.yaml here or above)`);
56
- console.log("next: npx seatmesh init (create a project in this folder)");
57
- }
58
- console.log("\n## Prerequisites");
59
- console.log(`PASS node: ${process.version}`);
60
- console.log(`${npmOk ? "PASS" : "WARN"} npm: ${npmOk ? "ok" : "missing (needed for init cold-start)"}`);
61
- console.log(`${tmuxOk ? "PASS" : "FAIL"} tmux: ${tmuxOk ? (tmuxVersion() ?? "ok") : "not in PATH (required for sessions)"}`);
62
- console.log(`${curlOk ? "PASS" : "FAIL"} curl: ${curlOk ? "ok" : "missing (inbox health checks)"}`);
63
- console.log(`${which("git") ? "PASS" : "WARN"} git: ${which("git") ? "ok" : "optional"}`);
64
- for (const [label, bin] of [
65
- ["cursor-agent", "agent"],
66
- ["claude", "claude"],
67
- ["kiro", "kiro"],
68
- ["opencode", "opencode"],
69
- ]) {
70
- const ok = which(bin);
71
- console.log(`${ok ? "PASS" : "WARN"} cli:${label}: ${ok ? "in PATH" : "not found"}`);
72
- }
73
- console.log("\n## Commands (after init)");
74
- for (const { cmd, note } of COMMANDS) {
75
- console.log(` ${cmd.padEnd(16)} ${note}`);
76
- }
77
- console.log("\n## Note");
78
- console.log("seatmesh is a tmux multi-agent workbench (terminal UI), not a fullscreen TUI.");
79
- console.log("Bare `npx seatmesh` = this checklist; `npx seatmesh init` starts a project.");
80
- if (!hasProject) {
81
- console.log("\nHint: run npx seatmesh init in this folder, then npx seatmesh session up");
34
+ console.log("seatmesh is not initialized on this project");
35
+ console.log(terminalBold("npx seatmesh init"));
82
36
  }
37
+ console.log("");
38
+ for (const cmd of COMMANDS)
39
+ console.log(` ${cmd}`);
83
40
  return report;
84
41
  }
85
42
  //# sourceMappingURL=discovery-report.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"discovery-report.js","sourceRoot":"","sources":["../src/discovery-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE1D,SAAS,KAAK,CAAC,GAAW;IACxB,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7E,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,WAAW;IAClB,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;AACzC,CAAC;AAcD,MAAM,QAAQ,GAAyC;IACrD,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,2CAA2C,EAAE;IAClE,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,mCAAmC,EAAE;IAChE,EAAE,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,2BAA2B,EAAE;IAC5D,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,6BAA6B,EAAE;IACtD,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,wBAAwB,EAAE;IACjD,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE;IAC7C,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,oBAAoB,EAAE;IAC/C,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE;CAC3C,CAAC;AAEF,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAA+B,EAAE;IAEjC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,aAAa,IAAI,IAAI,CAAC;IAEzC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAE3B,MAAM,MAAM,GAAoB;QAC9B,EAAE,EAAE,UAAU,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;QACpC,GAAG;QACH,UAAU;QACV,aAAa;KACd,CAAC;IAEF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;YACE,GAAG,MAAM;YACT,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;YAC1E,QAAQ,EAAE,QAAQ;SACnB,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAE5C,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IAC1B,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,kBAAkB,aAAa,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,wBAAwB,MAAM,kCAAkC,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,UAAU,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAsC,EAAE,CAAC,CAAC;IACzG,OAAO,CAAC,GAAG,CACT,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,WAAW,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,qCAAqC,EAAE,CACjH,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,WAAW,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,+BAA+B,EAAE,CAAC,CAAC;IACrG,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,UAAU,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;IAE3F,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI;QACzB,CAAC,cAAc,EAAE,OAAO,CAAC;QACzB,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACpB,CAAC,MAAM,EAAE,MAAM,CAAC;QAChB,CAAC,UAAU,EAAE,UAAU,CAAC;KAChB,EAAE,CAAC;QACX,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,SAAS,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC1C,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,QAAQ,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CACT,+EAA+E,CAChF,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC;IAE3F,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC;IAC/F,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"discovery-report.js","sourceRoot":"","sources":["../src/discovery-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,SAAS,KAAK,CAAC,GAAW;IACxB,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7E,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACxB,CAAC;AAcD,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAE9E,gDAAgD;AAChD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAA+B,EAAE;IAEjC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,aAAa,IAAI,IAAI,CAAC;IACzC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAE7B,MAAM,MAAM,GAAoB;QAC9B,EAAE,EAAE,UAAU,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;QACpC,GAAG;QACH,UAAU;QACV,aAAa;KACd,CAAC;IAEF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAC5D,IAAI,EACJ,CAAC,CACF,CACF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,KAAK,MAAM,GAAG,IAAI,QAAQ;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IAEpD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** Shipped seatmesh banner mark (3-4: subtle round, 41×17, 4-layer ░▒▓█). */
2
+ /** Banner triangle; hidden when SEATMESH_LOGO=none|off. */
3
+ export declare function renderLogoMark(): string;
4
+ //# sourceMappingURL=logo-art.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logo-art.d.ts","sourceRoot":"","sources":["../src/logo-art.ts"],"names":[],"mappings":"AAAA,6EAA6E;AA2I7E,2DAA2D;AAC3D,wBAAgB,cAAc,IAAI,MAAM,CAIvC"}
@@ -0,0 +1,134 @@
1
+ /** Shipped seatmesh banner mark (3-4: subtle round, 41×17, 4-layer ░▒▓█). */
2
+ const SHADES = [" ", "░", "▒", "▓", "█"];
3
+ const W = 41;
4
+ const H = 17;
5
+ const THICKNESS = 4;
6
+ const R_APEX = 2.5;
7
+ const R_BASE = 0.25;
8
+ const BASE_BAND_ROWS = 3;
9
+ function useUnicodeBlocks() {
10
+ return process.env.SEATMESH_ASCII_LOGO !== "1";
11
+ }
12
+ function emptyGrid(w, h) {
13
+ return Array.from({ length: h }, () => Array.from({ length: w }, () => " "));
14
+ }
15
+ function insideTriangle(x, y, w, h) {
16
+ const cx = (w - 1) / 2;
17
+ const hw = h <= 1 ? 0 : ((w - 1) / 2) * (y / (h - 1));
18
+ return y >= 0 && y < h && x >= cx - hw - 0.001 && x <= cx + hw + 0.001;
19
+ }
20
+ function edgeDistance(x, y, w, h) {
21
+ const cx = (w - 1) / 2;
22
+ const hw = h <= 1 ? 0 : ((w - 1) / 2) * (y / (h - 1));
23
+ const left = cx - hw;
24
+ const right = cx + hw;
25
+ return Math.min(x - left, right - x, h - 1 - y);
26
+ }
27
+ function clamp01(t) {
28
+ return Math.max(0, Math.min(1, t));
29
+ }
30
+ function sharpTriangleSdf(x, y, w, h) {
31
+ const p0x = (w - 1) / 2;
32
+ const p0y = 0;
33
+ const p1x = 0;
34
+ const p1y = h - 1;
35
+ const p2x = w - 1;
36
+ const p2y = h - 1;
37
+ const e0x = p2x - p1x;
38
+ const e0y = p2y - p1y;
39
+ const e1x = p0x - p2x;
40
+ const e1y = p0y - p2y;
41
+ const e2x = p1x - p0x;
42
+ const e2y = p1y - p0y;
43
+ const v0x = x - p0x;
44
+ const v0y = y - p0y;
45
+ const v1x = x - p1x;
46
+ const v1y = y - p1y;
47
+ const v2x = x - p2x;
48
+ const v2y = y - p2y;
49
+ const dot = (ax, ay, bx, by) => ax * bx + ay * by;
50
+ const dot00 = dot(e0x, e0y, e0x, e0y);
51
+ const dot11 = dot(e1x, e1y, e1x, e1y);
52
+ const dot22 = dot(e2x, e2y, e2x, e2y);
53
+ const pq0x = v1x - e0x * clamp01(dot(v1x, v1y, e0x, e0y) / (dot00 || 1));
54
+ const pq0y = v1y - e0y * clamp01(dot(v1x, v1y, e0x, e0y) / (dot00 || 1));
55
+ const pq1x = v2x - e1x * clamp01(dot(v2x, v2y, e1x, e1y) / (dot11 || 1));
56
+ const pq1y = v2y - e1y * clamp01(dot(v2x, v2y, e1x, e1y) / (dot11 || 1));
57
+ const pq2x = v0x - e2x * clamp01(dot(v0x, v0y, e2x, e2y) / (dot22 || 1));
58
+ const pq2y = v0y - e2y * clamp01(dot(v0x, v0y, e2x, e2y) / (dot22 || 1));
59
+ const s = Math.sign(e0x * e2y - e0y * e2x) || 1;
60
+ const d0 = dot(pq0x, pq0y, pq0x, pq0y);
61
+ const d1 = dot(pq1x, pq1y, pq1x, pq1y);
62
+ const d2 = dot(pq2x, pq2y, pq2x, pq2y);
63
+ const c0 = s * (v1x * e0y - v1y * e0x);
64
+ const c1 = s * (v2x * e1y - v2y * e1x);
65
+ const c2 = s * (v0x * e2y - v0y * e2x);
66
+ let distSq = d0;
67
+ let side = c0;
68
+ if (d1 < distSq) {
69
+ distSq = d1;
70
+ side = c1;
71
+ }
72
+ if (d2 < distSq) {
73
+ distSq = d2;
74
+ side = c2;
75
+ }
76
+ return Math.sqrt(distSq) * (side < 0 ? -1 : 1);
77
+ }
78
+ function filletRadiusAt(y, h, rApex, rBase) {
79
+ const t = h <= 1 ? 0 : y / (h - 1);
80
+ if (t >= 0.88)
81
+ return rBase;
82
+ const fade = Math.pow(1 - t / 0.88, 1.2);
83
+ return rBase + (rApex - rBase) * fade;
84
+ }
85
+ function renderAsciiFallback() {
86
+ const grid = emptyGrid(W, H);
87
+ for (let y = 0; y < H; y++) {
88
+ for (let x = 0; x < W; x++) {
89
+ if (!insideTriangle(x, y, W, H))
90
+ continue;
91
+ if (edgeDistance(x, y, W, H) < THICKNESS)
92
+ grid[y][x] = "#";
93
+ }
94
+ }
95
+ return grid.map((row) => row.join("")).join("\n");
96
+ }
97
+ function renderShippedMark() {
98
+ if (!useUnicodeBlocks())
99
+ return renderAsciiFallback();
100
+ const grid = emptyGrid(W, H);
101
+ for (let y = 0; y < H; y++) {
102
+ for (let x = 0; x < W; x++) {
103
+ const px = x + 0.5;
104
+ const py = y + 0.5;
105
+ let depth;
106
+ if (y >= H - BASE_BAND_ROWS) {
107
+ if (!insideTriangle(x, y, W, H))
108
+ continue;
109
+ depth = edgeDistance(x, y, W, H);
110
+ }
111
+ else {
112
+ const sdf = sharpTriangleSdf(px, py, W, H);
113
+ const r = filletRadiusAt(py, H, R_APEX, R_BASE);
114
+ if (sdf > -r)
115
+ continue;
116
+ depth = -r - sdf;
117
+ }
118
+ if (depth >= THICKNESS)
119
+ continue;
120
+ const layer = THICKNESS - 1 - Math.floor(depth);
121
+ const idx = Math.min(SHADES.length - 1, 1 + layer);
122
+ grid[y][x] = SHADES[idx];
123
+ }
124
+ }
125
+ return grid.map((row) => row.join("")).join("\n");
126
+ }
127
+ /** Banner triangle; hidden when SEATMESH_LOGO=none|off. */
128
+ export function renderLogoMark() {
129
+ const key = process.env.SEATMESH_LOGO?.trim().toLowerCase();
130
+ if (key === "none" || key === "off")
131
+ return "";
132
+ return renderShippedMark();
133
+ }
134
+ //# sourceMappingURL=logo-art.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logo-art.js","sourceRoot":"","sources":["../src/logo-art.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function runLogoPreview(): void;
2
+ export declare function runLogoTry(id: string | undefined): void;
3
+ //# sourceMappingURL=logo-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logo-cli.d.ts","sourceRoot":"","sources":["../src/logo-cli.ts"],"names":[],"mappings":"AAIA,wBAAgB,cAAc,IAAI,IAAI,CAiBrC;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAOvD"}