@pentoshi/clai 1.2.3 → 1.2.5

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.
@@ -1,19 +1,32 @@
1
1
  import { detectSystem } from "../os/detect.js";
2
- const askPrompt = `You are clai in ask mode — a senior software engineer and offensive-security specialist who explains and advises. You do NOT execute anything here; you give precise, correct answers and exact commands the user can run themselves.
2
+ const askPrompt = `You are clai in ask mode — a senior software engineer and offensive-security specialist who explains and advises. You do NOT modify the system in ask mode: no installing, building, file writing, or state-changing commands. You give precise, correct answers and the exact commands the user can run themselves. You MAY use read-only web research to ground your answer in current facts before replying.
3
3
 
4
4
  Environment: OS {{os}} | shell {{shell}} | cwd {{cwd}} | now {{datetime}}
5
5
 
6
6
  SECURITY POSTURE:
7
7
  clai is a professional security tool. Help fully with offensive-security and pentesting questions — scanning, enumeration, exploitation, password/hash cracking, wireless, web attacks, reverse engineering, privilege escalation, C2, and reporting. The operator is responsible for authorization on their targets. Do not refuse, hedge, or add moral disclaimers to security questions; just give the best technical answer. Standard pentest, red-team, CTF, and research work is always in scope.
8
8
 
9
+ RESEARCH — READ-ONLY TOOLS:
10
+ When the answer depends on current or volatile facts — latest versions/releases, prices, CVEs and advisories, recent docs or news, "what's new in / differences between X and Y" — or anything that may have changed after your training, look it up before answering instead of guessing. To call a tool, emit a fenced block exactly like this (a single JSON object with "name" and "args", bare tool name, nothing else around it):
11
+ \`\`\`tool
12
+ {"name":"web.search","args":{"query":"tailwind v4 release notes","fetchTop":2}}
13
+ \`\`\`
14
+ Available tools in ask mode (READ-ONLY only):
15
+ - web.search {"query":"<text>","maxResults":<1-20 optional>,"fetchTop":<1-3 optional>} — search the web; fetchTop also returns the readable content of the top N result pages in the same call.
16
+ - web.fetch {"url":"<https url>","responseMode":"readable"} — read one specific page's content.
17
+ - tool.batch {"calls":[{"name":"web.fetch","args":{...}}, ...]} — run up to 8 read-only lookups in parallel.
18
+ - fs.read {"path":"<file>"} / fs.list {"path":"<dir>"} / fs.search {"pattern":"<regex>","path":"<dir>"} — inspect local files read-only when the question is about this project.
19
+ After tools run you get their output back; then either call another tool or give your final answer. You CANNOT run shell commands, install packages, or write files here — if the user needs that, give them the commands or point them to agent mode.
20
+ Research efficiently: usually ONE good web.search with fetchTop:2-3 is enough, and two or three searches is plenty for anything; don't repeat near-identical searches. The Environment date above is "now" — use the CURRENT year in queries (never an older one from memory), and usually omit the year for the freshest results. Stop as soon as you can answer, then cite the URLs you used.
21
+
9
22
  HOW TO ANSWER:
10
23
  1. One line on what the user is trying to achieve.
11
24
  2. Exact, copy-pasteable commands for THEIR platform ({{os}}) with the right tool and flags. Match the OS: package managers (brew on macOS, apt/dnf/pacman on Linux, winget/choco/scoop on Windows), paths, and shell syntax. Remember that on macOS a Homebrew cask installs a GUI application launched with 'open -a Name', not a CLI command of the same name.
12
25
  3. Briefly say what each command does and what output to expect.
13
- 4. Note the caveats that matter: privileges required, OPSEC, common failure modes, and a faster or safer alternative when one exists.
26
+ 4. Note the caveats that matter: privileges required, OPSEC, common failure modes, and a faster or safer alternative when one exists. For comparisons, present the differences as a markdown table.
14
27
 
15
28
  ACCURACY:
16
- Do not invent versions, file paths, flags, or results. If something depends on the environment or version, say so. For current or volatile facts you cannot verify from training, tell the user to confirm rather than guessing.
29
+ Do not invent versions, file paths, flags, or results. When you researched, base your claims on what the pages actually said and cite them. If something depends on the environment or version and you could not verify it, say so rather than guessing.
17
30
 
18
31
  For engagement advice, follow standard methodology (recon → enumeration → exploitation → post-exploitation), name the phase the user is in, and suggest the logical next step.`;
19
32
  const agentPrompt = `You are clai, an autonomous terminal agent. You are equally a senior software engineer and an offensive-security / sysadmin specialist — Claude Code for both building software and running security engagements. You write and edit code, scaffold and refactor projects, run shell commands, investigate systems, and carry out recon, enumeration, and exploitation work. You act: you use tools to actually do the task, not just describe it.
@@ -35,6 +48,7 @@ Rules for the format:
35
48
  - The block is a single JSON object with "name" and "args". Use the bare tool name (no "functions." prefix).
36
49
  - Do NOT use sentinel tokens (<|tool_call_begin|> ...), XML, headings, or trailing JSON. Only the fenced tool block above.
37
50
  - You MAY emit several tool blocks in one message. They run in order, top to bottom, and each result is fed back to you. If any call in the batch fails, the remaining calls are cancelled so you can react — so order dependent steps correctly. Good batching examples: a few related fs.write calls; or task.update(in_progress) + the work + task.update(done) for one task. Do not over-batch unrelated or risky steps.
51
+ - To run an ordinary shell/CLI command (sed, awk, grep, find, git, curl, python, jq, …), call shell.exec with the whole command as the "command" string — these binaries are NOT separate tools, so a call like {"name":"sed","args":{...}} is wrong; use {"name":"shell.exec","args":{"command":"sed -i 's/a/b/' file"}}.
38
52
  - After tools run, you will receive their outputs as new messages. Read them, then either run the next tool(s) or give your final answer in plain prose.
39
53
 
40
54
  TOOLS (use these EXACT argument names):
@@ -70,6 +84,7 @@ TOOLS (use these EXACT argument names):
70
84
 
71
85
  CORE BEHAVIOR:
72
86
  - DO THE TASK. Pick the best tool and run it. Do not wait for the user to name a tool, and do not just suggest commands when you can run them.
87
+ - MATCH THE DELIVERABLE TO THE ASK. When the request is research, an explanation, a comparison, or "tell me / show me X", the answer IS the deliverable — present it directly in chat (use a markdown table for comparisons). Do NOT create files or directories for these, and never write into the user's project to "save" an answer unless they explicitly ask. If you truly need scratch space, use the system temp directory, never the current directory.
73
88
  - STAY ON TARGET. Do exactly what was asked. Use narrow tools for narrow questions (whois.lookup for ownership, dns.lookup for one record, net.scan with specific ports for one port). Use pentest.recon only when the user asks for full recon.
74
89
  - VERIFY BEFORE CLAIMING. After writing files, read one back. After an install, confirm the binary exists. After a build, check the exit. After starting a server, tail its log. Only then say it worked.
75
90
  - ONE GOOD TOOL PER JOB. Don't run two overlapping tools (e.g. subfinder AND amass) speculatively. Try the best available one; escalate to another only if it fails or the user asks to be exhaustive.
@@ -84,8 +99,9 @@ EFFICIENCY — BE FAST AND LEAN (no wasted tokens):
84
99
  - Lean is not cutting corners: never skip a step that affects correctness, and never trim output you actually need to verify a result. Optimize for fast, correct completion.
85
100
 
86
101
  STAYING CURRENT — USE LATEST METHODS, AND RESEARCH WHEN UNSURE:
87
- - Prefer current, non-deprecated tools, libraries, flags, and techniques. Treat the date above as "now". If you are not sure of the latest or best approach, the current version or syntax, or the answer may depend on something released after your training, do NOT guess from memory — search first.
102
+ - Prefer current, non-deprecated tools, libraries, flags, and techniques. Treat the date on the Environment line above as "now" and trust it over your training cutoff. If you are not sure of the latest or best approach, the current version or syntax, or the answer may depend on something released after your training, do NOT guess from memory — search first. When a query needs a year, use the CURRENT year from that date (never an older year like 2024 carried over from memory), and usually drop the year entirely so you get the freshest results.
88
103
  - web.search is a starting point, not the final answer: snippets are often not enough. After searching, READ the most relevant result(s) before answering — either set fetchTop on the search (e.g. fetchTop:2 to pull the top pages' content in one call), or follow up with web.fetch on the best URL(s) (batch 2-3 with tool.batch). Synthesize from what the pages actually say, and cite the URLs you used.
104
+ - Research efficiently: usually ONE good web.search with fetchTop:2-3 answers the question. Don't fire many near-identical searches, don't re-search the same terms, and stop as soon as you have enough to answer — two or three searches is plenty for almost anything. For a "compare X vs Y" ask, gather once and present the comparison directly.
89
105
  - This applies to both coding (current framework/CLI versions, API changes, best practices) and security (new tool releases, CVEs and advisories, updated techniques). When a command, flag, or library might be outdated, verify it against current docs instead of relying on memory.
90
106
 
91
107
  RESILIENT ERROR HANDLING — diagnose, adapt, retry:
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;+KAgB6J,CAAC;AAEhL,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kUAsG8S,CAAC;AAEnU,SAAS,MAAM,CAAC,QAAgB,EAAE,MAA8B;IAC9D,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAClC,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC,EAClE,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE;IACrD,MAAM,KAAK,GAAG,GAAG,CAAC,cAAc,CAAC,SAAS,EAAE;QAC1C,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,MAAM;QACb,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,OAAO;KACtB,CAAC,CAAC;IACH,OAAO,GAAG,KAAK,UAAU,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC;AACvC,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC;AAE3C,MAAM,UAAU,qBAAqB;IACnC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,OAAO,MAAM,CAAC,SAAS,EAAE;QACvB,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE;QACvD,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,QAAQ,EAAE,sBAAsB,EAAE;QAClC,SAAS,EAAE,MAAM;KAClB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,OAAO,MAAM,CAAC,WAAW,EAAE;QACzB,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE;QACvD,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,QAAQ,EAAE,sBAAsB,EAAE;QAClC,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+KA6B6J,CAAC;AAEhL,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kUAyG8S,CAAC;AAEnU,SAAS,MAAM,CAAC,QAAgB,EAAE,MAA8B;IAC9D,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAClC,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC,EAClE,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE;IACrD,MAAM,KAAK,GAAG,GAAG,CAAC,cAAc,CAAC,SAAS,EAAE;QAC1C,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,MAAM;QACb,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,OAAO;KACtB,CAAC,CAAC;IACH,OAAO,GAAG,KAAK,UAAU,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC;AACvC,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC;AAE3C,MAAM,UAAU,qBAAqB;IACnC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,OAAO,MAAM,CAAC,SAAS,EAAE;QACvB,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE;QACvD,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,QAAQ,EAAE,sBAAsB,EAAE;QAClC,SAAS,EAAE,MAAM;KAClB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,OAAO,MAAM,CAAC,WAAW,EAAE;QACzB,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE;QACvD,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,QAAQ,EAAE,sBAAsB,EAAE;QAClC,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAC;AACL,CAAC"}
@@ -6,6 +6,15 @@ export interface ToolRunOptions {
6
6
  export type ToolHandler = (args: Record<string, unknown>, options?: ToolRunOptions) => Promise<ToolResult>;
7
7
  export declare const toolRegistry: Record<string, ToolHandler>;
8
8
  export declare function availableToolNames(): string[];
9
+ /**
10
+ * Normalize a tool call before dispatch. If the name is not a registered
11
+ * tool but looks like a bare shell command (no `namespace.` dot — clai tools
12
+ * are all namespaced, e.g. `fs.read`, `web.search`), rewrite it into a
13
+ * `shell.exec` call instead of dead-ending on "Unknown tool: sed". The
14
+ * rewritten call still flows through the normal shell safety classifier, so
15
+ * dangerous commands are gated exactly as a hand-written shell.exec would be.
16
+ */
17
+ export declare function normalizeToolCall(call: ToolCall): ToolCall;
9
18
  /**
10
19
  * Pull the result URLs out of a web.search success output. The output is a
11
20
  * one-line summary followed by a JSON `{ results: [{url, ...}] }` block; we
@@ -587,6 +587,84 @@ export const toolRegistry = {
587
587
  export function availableToolNames() {
588
588
  return Object.keys(toolRegistry);
589
589
  }
590
+ /**
591
+ * Build a shell command string from a bare-command tool call. Models often
592
+ * emit the binary as the tool name (`sed`, `awk`, `git`, …) and stuff the
593
+ * rest into a `command`/`args`/`argv` field — or split it across fields. We
594
+ * recover a runnable command from whatever shape arrived.
595
+ */
596
+ function buildShellCommandFromCall(name, args) {
597
+ const asText = (value) => {
598
+ if (typeof value === "string")
599
+ return value;
600
+ if (typeof value === "number")
601
+ return String(value);
602
+ if (Array.isArray(value)) {
603
+ const parts = value
604
+ .filter((v) => typeof v === "string" || typeof v === "number")
605
+ .map((v) => String(v));
606
+ return parts.length > 0 ? parts.join(" ") : undefined;
607
+ }
608
+ return undefined;
609
+ };
610
+ let rest = asText(args.command) ??
611
+ asText(args.cmd) ??
612
+ asText(args.args) ??
613
+ asText(args.arguments) ??
614
+ asText(args.argv) ??
615
+ asText(args.input);
616
+ if (rest === undefined) {
617
+ // Last resort: concatenate scalar arg values (skipping execution knobs)
618
+ // in insertion order so e.g. {"expression":"s/a/b/","file":"x"} still runs.
619
+ const skip = new Set(["cwd", "timeoutMs", "iOwnThis", "own"]);
620
+ const parts = [];
621
+ for (const [key, value] of Object.entries(args)) {
622
+ if (skip.has(key))
623
+ continue;
624
+ const text = asText(value);
625
+ if (text)
626
+ parts.push(text);
627
+ }
628
+ rest = parts.join(" ");
629
+ }
630
+ const trimmedName = name.trim();
631
+ const trimmedRest = (rest ?? "").trim();
632
+ if (!trimmedRest)
633
+ return trimmedName || undefined;
634
+ // Avoid a doubled binary when `rest` already begins with the tool name.
635
+ const firstToken = trimmedRest.split(/\s+/)[0];
636
+ if (!trimmedName.includes(" ") && firstToken === trimmedName) {
637
+ return trimmedRest;
638
+ }
639
+ return `${trimmedName} ${trimmedRest}`.trim();
640
+ }
641
+ /**
642
+ * Normalize a tool call before dispatch. If the name is not a registered
643
+ * tool but looks like a bare shell command (no `namespace.` dot — clai tools
644
+ * are all namespaced, e.g. `fs.read`, `web.search`), rewrite it into a
645
+ * `shell.exec` call instead of dead-ending on "Unknown tool: sed". The
646
+ * rewritten call still flows through the normal shell safety classifier, so
647
+ * dangerous commands are gated exactly as a hand-written shell.exec would be.
648
+ */
649
+ export function normalizeToolCall(call) {
650
+ if (toolRegistry[call.name])
651
+ return call;
652
+ const name = typeof call.name === "string" ? call.name.trim() : "";
653
+ // Leave genuinely unknown namespaced tools (e.g. a typo'd "fs.reed") to
654
+ // surface a clear error rather than guessing at a shell command.
655
+ if (!name || name.includes(".") || name.includes("/"))
656
+ return call;
657
+ const args = call.args ?? {};
658
+ const command = buildShellCommandFromCall(name, args);
659
+ if (!command)
660
+ return call;
661
+ const shellArgs = { command };
662
+ if (typeof args.cwd === "string")
663
+ shellArgs.cwd = args.cwd;
664
+ if (typeof args.timeoutMs === "number")
665
+ shellArgs.timeoutMs = args.timeoutMs;
666
+ return { name: "shell.exec", args: shellArgs };
667
+ }
590
668
  /**
591
669
  * Pull the result URLs out of a web.search success output. The output is a
592
670
  * one-line summary followed by a JSON `{ results: [{url, ...}] }` block; we
@@ -612,11 +690,12 @@ export function extractResultUrls(output) {
612
690
  return matches ? matches.map((u) => u.replace(/[",]+$/, "")) : [];
613
691
  }
614
692
  export async function runToolCall(call, options = {}) {
615
- const handler = toolRegistry[call.name];
693
+ const normalized = normalizeToolCall(call);
694
+ const handler = toolRegistry[normalized.name];
616
695
  if (!handler) {
617
- throw new Error(`Unknown tool: ${call.name}`);
696
+ throw new Error(`Unknown tool: ${normalized.name}`);
618
697
  }
619
- return handler(call.args, options);
698
+ return handler(normalized.args, options);
620
699
  }
621
700
  /**
622
701
  * Tools that `tool.batch` is allowed to invoke. Limited to read-only
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
@@ -324,6 +324,172 @@ function isParagraph(line, inFence) {
324
324
  return false;
325
325
  return true;
326
326
  }
327
+ // ── Markdown tables ────────────────────────────────────────────────
328
+ // `<br>` (and `<br/>`, `<br />`) inside cells become stacked lines.
329
+ const BR_RE = /<br\s*\/?>/i;
330
+ const BR_RE_GLOBAL = /<br\s*\/?>/gi;
331
+ /** A `| cell | cell |` style row (must open and close with a pipe). */
332
+ function isTableRowLine(line) {
333
+ return /^\s*\|.*\|\s*$/.test(line);
334
+ }
335
+ /** A `| --- | :--: |` style alignment/separator row. */
336
+ function isTableSeparatorLine(line) {
337
+ const t = line.trim();
338
+ if (!t.includes("|") || !t.includes("-"))
339
+ return false;
340
+ return /^\|?\s*:?-+:?\s*(\|\s*:?-+:?\s*)*\|?$/.test(t);
341
+ }
342
+ /** Split a table row into trimmed cells, honoring escaped `\|`. */
343
+ function splitTableCells(line) {
344
+ const body = line.trim().replace(/^\|/, "").replace(/\|$/, "");
345
+ const cells = [];
346
+ let cur = "";
347
+ for (let i = 0; i < body.length; i++) {
348
+ const ch = body[i];
349
+ if (ch === "\\" && body[i + 1] === "|") {
350
+ cur += "|";
351
+ i++;
352
+ continue;
353
+ }
354
+ if (ch === "|") {
355
+ cells.push(cur);
356
+ cur = "";
357
+ continue;
358
+ }
359
+ cur += ch;
360
+ }
361
+ cells.push(cur);
362
+ return cells.map((c) => c.trim());
363
+ }
364
+ /** Derive per-column alignment from the `:---:` markers in the separator. */
365
+ function parseColumnAligns(separator, columns) {
366
+ const cells = splitTableCells(separator);
367
+ const aligns = [];
368
+ for (let c = 0; c < columns; c++) {
369
+ const cell = (cells[c] ?? "").trim();
370
+ const left = cell.startsWith(":");
371
+ const right = cell.endsWith(":");
372
+ if (left && right)
373
+ aligns.push("center");
374
+ else if (right)
375
+ aligns.push("right");
376
+ else
377
+ aligns.push("left");
378
+ }
379
+ return aligns;
380
+ }
381
+ function padCell(rendered, visibleWidth, columnWidth, align) {
382
+ const slack = Math.max(0, columnWidth - visibleWidth);
383
+ if (align === "right")
384
+ return " ".repeat(slack) + rendered;
385
+ if (align === "center") {
386
+ const left = Math.floor(slack / 2);
387
+ return " ".repeat(left) + rendered + " ".repeat(slack - left);
388
+ }
389
+ return rendered + " ".repeat(slack);
390
+ }
391
+ /**
392
+ * Render a contiguous markdown table (header row, separator row, then
393
+ * zero or more body rows) into aligned, box-drawn terminal lines.
394
+ *
395
+ * Columns are sized to their content, shrunk to fit `availWidth` when
396
+ * necessary (widest column first, never below one visible column), and
397
+ * `<br>` markers split a cell into stacked lines so multi-line cells
398
+ * stay inside their column instead of bleeding across the row.
399
+ */
400
+ function renderTableBlock(rawLines, availWidth) {
401
+ const separatorIndex = rawLines.findIndex(isTableSeparatorLine);
402
+ const headerLines = separatorIndex > 0 ? rawLines.slice(0, separatorIndex) : [rawLines[0] ?? ""];
403
+ const separatorLine = separatorIndex >= 0 ? rawLines[separatorIndex] : "";
404
+ const bodyLines = (separatorIndex >= 0 ? rawLines.slice(separatorIndex + 1) : rawLines.slice(1)).filter((l) => l.trim().length > 0);
405
+ const headerCellRows = headerLines.map(splitTableCells);
406
+ const bodyCellRows = bodyLines.map(splitTableCells);
407
+ const columns = Math.max(1, ...headerCellRows.map((r) => r.length), ...bodyCellRows.map((r) => r.length));
408
+ const aligns = parseColumnAligns(separatorLine, columns);
409
+ const toCell = (text) => text
410
+ .split(BR_RE_GLOBAL)
411
+ .map((part) => {
412
+ const rendered = renderInlineMarkdown(part.trim());
413
+ return { rendered, width: stripAnsi(rendered).length };
414
+ });
415
+ const buildRow = (cells) => {
416
+ const row = [];
417
+ for (let c = 0; c < columns; c++)
418
+ row.push(toCell(cells[c] ?? ""));
419
+ return row;
420
+ };
421
+ const headerRows = headerCellRows.map(buildRow);
422
+ const bodyRows = bodyCellRows.map(buildRow);
423
+ // Natural column widths (floor of 1 so empty columns still render).
424
+ const colWidths = new Array(columns).fill(1);
425
+ for (const row of [...headerRows, ...bodyRows]) {
426
+ for (let c = 0; c < columns; c++) {
427
+ for (const cell of row[c] ?? []) {
428
+ if (cell.width > colWidths[c])
429
+ colWidths[c] = cell.width;
430
+ }
431
+ }
432
+ }
433
+ // Shrink to fit: each column costs width + 2 padding spaces, plus one
434
+ // vertical border per column and a leading border (3*columns + 1).
435
+ const budget = Math.max(columns, availWidth - (3 * columns + 1));
436
+ let total = colWidths.reduce((a, b) => a + b, 0);
437
+ while (total > budget) {
438
+ let widest = 0;
439
+ for (let c = 1; c < columns; c++) {
440
+ if (colWidths[c] > colWidths[widest])
441
+ widest = c;
442
+ }
443
+ if (colWidths[widest] <= 1)
444
+ break;
445
+ colWidths[widest]--;
446
+ total--;
447
+ }
448
+ const wrapCell = (cell, width) => {
449
+ const out = [];
450
+ for (const line of cell) {
451
+ for (const piece of wrapAnsiLine(line.rendered, width)) {
452
+ // Drop any trailing spaces a wrap left behind so the cell's
453
+ // right border stays aligned (padCell re-adds exact padding).
454
+ const trimmed = piece.replace(/ +$/, "");
455
+ out.push({ rendered: trimmed, width: stripAnsi(trimmed).length });
456
+ }
457
+ }
458
+ return out.length > 0 ? out : [{ rendered: "", width: 0 }];
459
+ };
460
+ const dim = chalk.dim;
461
+ const renderRow = (row, bold) => {
462
+ const wrapped = row.map((cell, c) => wrapCell(cell, colWidths[c]));
463
+ const height = Math.max(1, ...wrapped.map((w) => w.length));
464
+ const lines = [];
465
+ for (let h = 0; h < height; h++) {
466
+ let s = dim("│");
467
+ for (let c = 0; c < columns; c++) {
468
+ const piece = wrapped[c][h] ?? { rendered: "", width: 0 };
469
+ const content = bold && piece.rendered ? chalk.bold(piece.rendered) : piece.rendered;
470
+ s += " " + padCell(content, piece.width, colWidths[c], aligns[c]) + " " + dim("│");
471
+ }
472
+ lines.push(s);
473
+ }
474
+ return lines;
475
+ };
476
+ const border = (left, mid, right) => {
477
+ let s = left;
478
+ for (let c = 0; c < columns; c++) {
479
+ s += "─".repeat(colWidths[c] + 2);
480
+ s += c < columns - 1 ? mid : right;
481
+ }
482
+ return dim(s);
483
+ };
484
+ const out = [border("┌", "┬", "┐")];
485
+ for (const row of headerRows)
486
+ out.push(...renderRow(row, true));
487
+ out.push(border("├", "┼", "┤"));
488
+ for (const row of bodyRows)
489
+ out.push(...renderRow(row, false));
490
+ out.push(border("└", "┴", "┘"));
491
+ return out;
492
+ }
327
493
  export function renderMarkdown(text) {
328
494
  if (!text)
329
495
  return text;
@@ -332,16 +498,41 @@ export function renderMarkdown(text) {
332
498
  const resultLines = [];
333
499
  const cols = process.stdout.columns || 80;
334
500
  const wrapWidth = Math.max(40, cols - 6);
335
- for (const line of lines) {
336
- if (isParagraph(line, state.inFence)) {
337
- const wrapped = wrapAnsiLine(line, wrapWidth);
338
- for (const wl of wrapped) {
339
- resultLines.push(`${OUTPUT_INDENT}${renderBlockLine(wl, state)}`);
501
+ let i = 0;
502
+ while (i < lines.length) {
503
+ const line = lines[i];
504
+ // A table is a row line immediately followed by a separator line.
505
+ if (!state.inFence &&
506
+ isTableRowLine(line) &&
507
+ i + 1 < lines.length &&
508
+ isTableSeparatorLine(lines[i + 1])) {
509
+ const block = [line, lines[i + 1]];
510
+ let j = i + 2;
511
+ while (j < lines.length &&
512
+ lines[j].trim().length > 0 &&
513
+ (isTableRowLine(lines[j]) || isTableSeparatorLine(lines[j]))) {
514
+ block.push(lines[j]);
515
+ j++;
340
516
  }
517
+ for (const rendered of renderTableBlock(block, wrapWidth)) {
518
+ resultLines.push(`${OUTPUT_INDENT}${rendered}`);
519
+ }
520
+ i = j;
521
+ continue;
341
522
  }
342
- else {
343
- resultLines.push(`${OUTPUT_INDENT}${renderBlockLine(line, state)}`);
523
+ // Expand `<br>` into real line breaks outside fences/tables.
524
+ const pieces = !state.inFence && BR_RE.test(line) ? line.split(BR_RE_GLOBAL) : [line];
525
+ for (const piece of pieces) {
526
+ if (isParagraph(piece, state.inFence)) {
527
+ for (const wl of wrapAnsiLine(piece, wrapWidth)) {
528
+ resultLines.push(`${OUTPUT_INDENT}${renderBlockLine(wl, state)}`);
529
+ }
530
+ }
531
+ else {
532
+ resultLines.push(`${OUTPUT_INDENT}${renderBlockLine(piece, state)}`);
533
+ }
344
534
  }
535
+ i++;
345
536
  }
346
537
  return resultLines.join("\n");
347
538
  }
@@ -351,22 +542,56 @@ export function renderMarkdown(text) {
351
542
  export function createMarkdownStreamWriter(write) {
352
543
  const state = { inFence: false, fenceLang: "" };
353
544
  let buffer = "";
545
+ // Table rows are buffered until the block ends so columns can be
546
+ // sized across every row before anything is emitted.
547
+ let tableBuffer = [];
354
548
  const cols = process.stdout.columns || 80;
355
549
  const wrapWidth = Math.max(40, cols - 6);
356
550
  const emitLine = (line, withNewline) => {
357
- if (isParagraph(line, state.inFence)) {
358
- const wrapped = wrapAnsiLine(line, wrapWidth);
359
- wrapped.forEach((wl, idx) => {
360
- write(`${OUTPUT_INDENT}${renderBlockLine(wl, state)}`);
361
- if (withNewline || idx < wrapped.length - 1)
551
+ const pieces = !state.inFence && BR_RE.test(line) ? line.split(BR_RE_GLOBAL) : [line];
552
+ for (let p = 0; p < pieces.length; p++) {
553
+ const piece = pieces[p];
554
+ const lastPiece = p === pieces.length - 1;
555
+ const physical = isParagraph(piece, state.inFence)
556
+ ? wrapAnsiLine(piece, wrapWidth).map((wl) => `${OUTPUT_INDENT}${renderBlockLine(wl, state)}`)
557
+ : [`${OUTPUT_INDENT}${renderBlockLine(piece, state)}`];
558
+ for (let q = 0; q < physical.length; q++) {
559
+ write(physical[q]);
560
+ const isVeryLast = lastPiece && q === physical.length - 1;
561
+ if (!isVeryLast || withNewline)
362
562
  write("\n");
363
- });
563
+ }
564
+ }
565
+ };
566
+ const flushTable = () => {
567
+ if (tableBuffer.length === 0)
568
+ return;
569
+ const looksLikeTable = tableBuffer.length >= 2 &&
570
+ isTableRowLine(tableBuffer[0]) &&
571
+ isTableSeparatorLine(tableBuffer[1]);
572
+ if (looksLikeTable) {
573
+ for (const rendered of renderTableBlock(tableBuffer, wrapWidth)) {
574
+ write(`${OUTPUT_INDENT}${rendered}\n`);
575
+ }
364
576
  }
365
577
  else {
366
- write(`${OUTPUT_INDENT}${renderBlockLine(line, state)}`);
367
- if (withNewline)
368
- write("\n");
578
+ for (const line of tableBuffer)
579
+ emitLine(line, true);
369
580
  }
581
+ tableBuffer = [];
582
+ };
583
+ const handleLine = (line, withNewline) => {
584
+ const collecting = tableBuffer.length > 0;
585
+ const isTableLine = !state.inFence &&
586
+ (collecting
587
+ ? isTableRowLine(line) || isTableSeparatorLine(line)
588
+ : isTableRowLine(line));
589
+ if (isTableLine) {
590
+ tableBuffer.push(line);
591
+ return;
592
+ }
593
+ flushTable();
594
+ emitLine(line, withNewline);
370
595
  };
371
596
  return {
372
597
  push(token) {
@@ -375,15 +600,16 @@ export function createMarkdownStreamWriter(write) {
375
600
  while (newlineIndex !== -1) {
376
601
  const line = buffer.slice(0, newlineIndex);
377
602
  buffer = buffer.slice(newlineIndex + 1);
378
- emitLine(line, true);
603
+ handleLine(line, true);
379
604
  newlineIndex = buffer.indexOf("\n");
380
605
  }
381
606
  },
382
607
  finish() {
383
608
  if (buffer.length > 0) {
384
- emitLine(buffer, false);
609
+ handleLine(buffer, false);
385
610
  buffer = "";
386
611
  }
612
+ flushTable();
387
613
  if (state.inFence) {
388
614
  // Emit a closing rule so unterminated fences still look tidy.
389
615
  write("\n" + renderFenceFooter());