@pentoshi/clai 3.7.8 → 3.8.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.
- package/README.md +7 -4
- package/dist/commands/update.js +11 -3
- package/dist/commands/update.js.map +1 -1
- package/dist/prompts/embedded.js +2 -2
- package/dist/prompts/embedded.js.map +1 -1
- package/dist/prompts/index.js +3 -2
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/system.agent.md +3 -3
- package/dist/prompts/system.ask.md +1 -1
- package/dist/repl/slash-commands.js +4 -0
- package/dist/repl/slash-commands.js.map +1 -1
- package/dist/tools/definitions.js +48 -5
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/fs.d.ts +18 -3
- package/dist/tools/fs.js +471 -40
- package/dist/tools/fs.js.map +1 -1
- package/dist/tools/registry.js +10 -1
- package/dist/tools/registry.js.map +1 -1
- package/dist/tui-v2/actions/format-shortcuts.d.ts +12 -0
- package/dist/tui-v2/actions/format-shortcuts.js +257 -0
- package/dist/tui-v2/actions/format-shortcuts.js.map +1 -0
- package/dist/tui-v2/actions/keymap.js +7 -4
- package/dist/tui-v2/actions/keymap.js.map +1 -1
- package/dist/tui-v2/app/App.js +77 -21
- package/dist/tui-v2/app/App.js.map +1 -1
- package/dist/tui-v2/app/command-handlers.js +2 -1
- package/dist/tui-v2/app/command-handlers.js.map +1 -1
- package/dist/tui-v2/app/commands/config-commands.d.ts +1 -0
- package/dist/tui-v2/app/commands/config-commands.js +6 -5
- package/dist/tui-v2/app/commands/config-commands.js.map +1 -1
- package/dist/tui-v2/app/commands/picker-commands.js +3 -1
- package/dist/tui-v2/app/commands/picker-commands.js.map +1 -1
- package/dist/tui-v2/app/commands/session-commands.js +19 -2
- package/dist/tui-v2/app/commands/session-commands.js.map +1 -1
- package/dist/tui-v2/app/plan-lifecycle.js +1 -1
- package/dist/tui-v2/app/plan-lifecycle.js.map +1 -1
- package/dist/tui-v2/components/overlay/overlay-host.js +1 -1
- package/dist/tui-v2/components/overlay/overlay-host.js.map +1 -1
- package/dist/tui-v2/components/pager/pager-line.d.ts +31 -0
- package/dist/tui-v2/components/pager/pager-line.js +184 -0
- package/dist/tui-v2/components/pager/pager-line.js.map +1 -0
- package/dist/tui-v2/components/pager/pager.d.ts +7 -2
- package/dist/tui-v2/components/pager/pager.js +66 -187
- package/dist/tui-v2/components/pager/pager.js.map +1 -1
- package/dist/tui-v2/components/status/status-line.d.ts +9 -1
- package/dist/tui-v2/components/status/status-line.js +3 -3
- package/dist/tui-v2/components/status/status-line.js.map +1 -1
- package/dist/tui-v2/components/toast/toast-host.d.ts +5 -2
- package/dist/tui-v2/components/toast/toast-host.js +63 -28
- package/dist/tui-v2/components/toast/toast-host.js.map +1 -1
- package/dist/tui-v2/components/transcript/search-bar.d.ts +9 -5
- package/dist/tui-v2/components/transcript/search-bar.js +49 -3
- package/dist/tui-v2/components/transcript/search-bar.js.map +1 -1
- package/dist/tui-v2/components/transcript/transcript-row.d.ts +9 -0
- package/dist/tui-v2/components/transcript/transcript-row.js +24 -7
- package/dist/tui-v2/components/transcript/transcript-row.js.map +1 -1
- package/dist/tui-v2/components/transcript/transcript-view.js +121 -13
- package/dist/tui-v2/components/transcript/transcript-view.js.map +1 -1
- package/dist/tui-v2/components/transcript/use-native-selection-copy.js +7 -4
- package/dist/tui-v2/components/transcript/use-native-selection-copy.js.map +1 -1
- package/dist/tui-v2/composer/composer-action-port.d.ts +12 -0
- package/dist/tui-v2/composer/composer-action-port.js +20 -0
- package/dist/tui-v2/composer/composer-action-port.js.map +1 -0
- package/dist/tui-v2/composer/composer-editor.js +34 -2
- package/dist/tui-v2/composer/composer-editor.js.map +1 -1
- package/dist/tui-v2/composer/textarea-keybindings.d.ts +5 -3
- package/dist/tui-v2/composer/textarea-keybindings.js +29 -2
- package/dist/tui-v2/composer/textarea-keybindings.js.map +1 -1
- package/dist/tui-v2/controllers/overlay-controller.d.ts +6 -1
- package/dist/tui-v2/controllers/overlay-controller.js +2 -1
- package/dist/tui-v2/controllers/overlay-controller.js.map +1 -1
- package/dist/tui-v2/controllers/toast-controller.d.ts +17 -5
- package/dist/tui-v2/controllers/toast-controller.js +33 -7
- package/dist/tui-v2/controllers/toast-controller.js.map +1 -1
- package/dist/tui-v2/notify.d.ts +21 -0
- package/dist/tui-v2/notify.js +27 -0
- package/dist/tui-v2/notify.js.map +1 -0
- package/dist/tui-v2/rendering/format-help.d.ts +16 -0
- package/dist/tui-v2/rendering/format-help.js +95 -0
- package/dist/tui-v2/rendering/format-help.js.map +1 -0
- package/dist/tui-v2/rendering/pager-markdown.d.ts +40 -0
- package/dist/tui-v2/rendering/pager-markdown.js +82 -0
- package/dist/tui-v2/rendering/pager-markdown.js.map +1 -0
- package/dist/tui-v2/rendering/plan-view.d.ts +1 -2
- package/dist/tui-v2/rendering/plan-view.js +39 -55
- package/dist/tui-v2/rendering/plan-view.js.map +1 -1
- package/dist/version.generated.d.ts +6 -0
- package/dist/version.generated.js +7 -0
- package/dist/version.generated.js.map +1 -0
- package/package.json +5 -1
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown body for `/help` and Ctrl+G command reference.
|
|
3
|
+
*
|
|
4
|
+
* Uses bullet lists (not tables): usage strings often contain `|` and `<>`
|
|
5
|
+
* which break markdown table cell parsing in our renderer (even when escaped).
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Group slash commands into readable sections by prefix / role.
|
|
9
|
+
*/
|
|
10
|
+
function sectionFor(command) {
|
|
11
|
+
const name = command.replace(/^\//, "").toLowerCase();
|
|
12
|
+
if (["ask", "agent", "plan", "implement", "discard"].includes(name)) {
|
|
13
|
+
return "Mode & plan";
|
|
14
|
+
}
|
|
15
|
+
if (["model", "provider", "use", "search", "search-provider", "variants", "reasoning"].includes(name)) {
|
|
16
|
+
return "Model & providers";
|
|
17
|
+
}
|
|
18
|
+
if (["set", "unset", "keys", "info"].includes(name)) {
|
|
19
|
+
return "Credentials";
|
|
20
|
+
}
|
|
21
|
+
if (["permissions", "allow", "disallow", "freeonly", "fallback", "mouse", "scope", "privacy"].includes(name)) {
|
|
22
|
+
return "Permissions & safety";
|
|
23
|
+
}
|
|
24
|
+
if (["history", "clear", "new", "clean", "save", "reset", "compact", "context", "think", "thinking", "output", "cwd"].includes(name)) {
|
|
25
|
+
return "Session";
|
|
26
|
+
}
|
|
27
|
+
if (["jobs", "update", "help", "shortcuts", "exit", "quit"].includes(name)) {
|
|
28
|
+
return "App";
|
|
29
|
+
}
|
|
30
|
+
return "Other";
|
|
31
|
+
}
|
|
32
|
+
const SECTION_ORDER = [
|
|
33
|
+
"Mode & plan",
|
|
34
|
+
"Model & providers",
|
|
35
|
+
"Credentials",
|
|
36
|
+
"Permissions & safety",
|
|
37
|
+
"Session",
|
|
38
|
+
"App",
|
|
39
|
+
"Other",
|
|
40
|
+
];
|
|
41
|
+
/** Collapse whitespace so a command never splits mid-token in the pager. */
|
|
42
|
+
function oneLine(text) {
|
|
43
|
+
return text.replace(/\s+/g, " ").trim();
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Format one command as a markdown list item.
|
|
47
|
+
* Command + usage stay in a single backtick span so `|` / `<>` are literal.
|
|
48
|
+
*/
|
|
49
|
+
export function formatHelpEntry(entry) {
|
|
50
|
+
const usage = entry.usage ? ` ${oneLine(entry.usage)}` : "";
|
|
51
|
+
const cmd = oneLine(`${entry.command}${usage}`);
|
|
52
|
+
let desc = oneLine(entry.description);
|
|
53
|
+
if (entry.aliases.length > 0) {
|
|
54
|
+
const aliasList = entry.aliases.map((a) => `\`${oneLine(a)}\``).join(", ");
|
|
55
|
+
desc += ` · aliases: ${aliasList}`;
|
|
56
|
+
}
|
|
57
|
+
// Em dash between command and description — no table pipes.
|
|
58
|
+
return `- \`${cmd}\` — ${desc}`;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Format the slash-command catalog as a clean markdown reference.
|
|
62
|
+
*/
|
|
63
|
+
export function formatCommandHelpMarkdown(entries) {
|
|
64
|
+
const bySection = new Map();
|
|
65
|
+
for (const e of entries) {
|
|
66
|
+
const sec = sectionFor(e.command);
|
|
67
|
+
const list = bySection.get(sec) ?? [];
|
|
68
|
+
list.push(e);
|
|
69
|
+
bySection.set(sec, list);
|
|
70
|
+
}
|
|
71
|
+
const out = [
|
|
72
|
+
"# Commands",
|
|
73
|
+
"",
|
|
74
|
+
"Type a command in the composer, or open the completion menu with `/`.",
|
|
75
|
+
"Also: **Ctrl+G** opens this help · **`/shortcuts`** lists keyboard chords.",
|
|
76
|
+
"",
|
|
77
|
+
];
|
|
78
|
+
for (const sec of SECTION_ORDER) {
|
|
79
|
+
const list = bySection.get(sec);
|
|
80
|
+
if (!list || list.length === 0)
|
|
81
|
+
continue;
|
|
82
|
+
out.push(`## ${sec}`);
|
|
83
|
+
out.push("");
|
|
84
|
+
const sorted = [...list].sort((a, b) => a.command.localeCompare(b.command));
|
|
85
|
+
for (const e of sorted) {
|
|
86
|
+
out.push(formatHelpEntry(e));
|
|
87
|
+
}
|
|
88
|
+
out.push("");
|
|
89
|
+
}
|
|
90
|
+
out.push("---");
|
|
91
|
+
out.push("");
|
|
92
|
+
out.push("Tip: `q` / `Esc` closes · `↑↓` scroll · `^r` search this page.");
|
|
93
|
+
return out.join("\n");
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=format-help.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-help.js","sourceRoot":"","sources":["../../../src/tui-v2/rendering/format-help.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safe markdown preparation for the full-screen pager.
|
|
3
|
+
*
|
|
4
|
+
* - Markdown docs (help, shortcuts, plan) force-render with classic parity.
|
|
5
|
+
* - Tool / log / plain bodies use a conservative heuristic so normal output
|
|
6
|
+
* is not mangled by italic underscores or stray asterisks.
|
|
7
|
+
* - Any render failure falls back to plain lines (never throws into the UI).
|
|
8
|
+
*/
|
|
9
|
+
import { renderMarkdownLines } from "./render-markdown-lines.js";
|
|
10
|
+
export type PagerMarkdownMode = "auto" | "force" | "plain";
|
|
11
|
+
/** Opaque styled line from renderMarkdownLines (avoids @opentui import here). */
|
|
12
|
+
export type PagerStyledLine = ReturnType<typeof renderMarkdownLines>[number];
|
|
13
|
+
export interface PagerDisplayLine {
|
|
14
|
+
/** Plain text used for search, line counts, and export fallbacks. */
|
|
15
|
+
readonly plain: string;
|
|
16
|
+
/**
|
|
17
|
+
* Pre-styled line when markdown rendered successfully.
|
|
18
|
+
* Undefined → paint as plain `plain` with baseLineFg heuristics.
|
|
19
|
+
*/
|
|
20
|
+
readonly styled?: PagerStyledLine | undefined;
|
|
21
|
+
}
|
|
22
|
+
export interface PreparePagerDisplayOptions {
|
|
23
|
+
readonly body: string;
|
|
24
|
+
readonly width: number;
|
|
25
|
+
readonly mode?: PagerMarkdownMode | undefined;
|
|
26
|
+
/** Default body foreground when markdown renders (theme.foreground). */
|
|
27
|
+
readonly defaultFg?: string | undefined;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Conservative detector: only claim "markdown" when structure is clear.
|
|
31
|
+
* Avoids mangling paths_with_underscores and shell output with * globs.
|
|
32
|
+
*/
|
|
33
|
+
export declare function looksLikeMarkdown(text: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Prepare body lines for the pager. Never throws.
|
|
36
|
+
*/
|
|
37
|
+
export declare function preparePagerDisplay(options: PreparePagerDisplayOptions): {
|
|
38
|
+
readonly mode: "markdown" | "plain";
|
|
39
|
+
readonly lines: readonly PagerDisplayLine[];
|
|
40
|
+
};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safe markdown preparation for the full-screen pager.
|
|
3
|
+
*
|
|
4
|
+
* - Markdown docs (help, shortcuts, plan) force-render with classic parity.
|
|
5
|
+
* - Tool / log / plain bodies use a conservative heuristic so normal output
|
|
6
|
+
* is not mangled by italic underscores or stray asterisks.
|
|
7
|
+
* - Any render failure falls back to plain lines (never throws into the UI).
|
|
8
|
+
*/
|
|
9
|
+
import { renderMarkdownLines } from "./render-markdown-lines.js";
|
|
10
|
+
import { sanitizeDisplayText } from "./sanitize-display.js";
|
|
11
|
+
/**
|
|
12
|
+
* Conservative detector: only claim "markdown" when structure is clear.
|
|
13
|
+
* Avoids mangling paths_with_underscores and shell output with * globs.
|
|
14
|
+
*/
|
|
15
|
+
export function looksLikeMarkdown(text) {
|
|
16
|
+
if (!text || text.length < 8)
|
|
17
|
+
return false;
|
|
18
|
+
let score = 0;
|
|
19
|
+
if (/^#{1,6}\s+\S/m.test(text))
|
|
20
|
+
score += 2;
|
|
21
|
+
if (/^```[\w-]*\s*$/m.test(text))
|
|
22
|
+
score += 2;
|
|
23
|
+
if (/^\|.+\|/m.test(text) && /^\|?[\s:|-]{3,}/m.test(text))
|
|
24
|
+
score += 2;
|
|
25
|
+
if (/^>\s+\S/m.test(text))
|
|
26
|
+
score += 1;
|
|
27
|
+
// Multiple bold spans or list items separated by blank lines
|
|
28
|
+
const bold = text.match(/\*\*[^*\n]{1,80}\*\*/g);
|
|
29
|
+
if (bold && bold.length >= 2)
|
|
30
|
+
score += 1;
|
|
31
|
+
if (/^[-*]\s+\S.+\n\n/m.test(text) || /^\d+\.\s+\S.+\n\n/m.test(text)) {
|
|
32
|
+
score += 1;
|
|
33
|
+
}
|
|
34
|
+
// Explicit horizontal rules common in our docs
|
|
35
|
+
if (/^---+\s*$/m.test(text) || /^\*\*\*+\s*$/m.test(text))
|
|
36
|
+
score += 1;
|
|
37
|
+
return score >= 2;
|
|
38
|
+
}
|
|
39
|
+
function plainLines(body) {
|
|
40
|
+
const raw = body.replace(/\n+$/, "");
|
|
41
|
+
if (!raw)
|
|
42
|
+
return [{ plain: " " }];
|
|
43
|
+
return raw.split("\n").map((line) => ({ plain: line.length === 0 ? " " : line }));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Prepare body lines for the pager. Never throws.
|
|
47
|
+
*/
|
|
48
|
+
export function preparePagerDisplay(options) {
|
|
49
|
+
const mode = options.mode ?? "auto";
|
|
50
|
+
const body = options.body ?? "";
|
|
51
|
+
const width = Math.max(24, options.width);
|
|
52
|
+
if (mode === "plain") {
|
|
53
|
+
return { mode: "plain", lines: plainLines(body) };
|
|
54
|
+
}
|
|
55
|
+
const wantMarkdown = mode === "force" || (mode === "auto" && looksLikeMarkdown(body));
|
|
56
|
+
if (!wantMarkdown) {
|
|
57
|
+
return { mode: "plain", lines: plainLines(body) };
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
const styled = renderMarkdownLines(body, {
|
|
61
|
+
width,
|
|
62
|
+
defaultFg: options.defaultFg,
|
|
63
|
+
stripOuterIndent: true,
|
|
64
|
+
});
|
|
65
|
+
if (styled.length === 0) {
|
|
66
|
+
return { mode: "plain", lines: plainLines(body) };
|
|
67
|
+
}
|
|
68
|
+
const lines = styled.map((st) => {
|
|
69
|
+
// Join styled chunks for search/highlight. Sanitize so no CSI leaks into
|
|
70
|
+
// the plain path (would blank the terminal when painting as raw text).
|
|
71
|
+
const joined = st.chunks.map((c) => c.text).join("");
|
|
72
|
+
const plain = sanitizeDisplayText(joined) || " ";
|
|
73
|
+
return { plain, styled: st };
|
|
74
|
+
});
|
|
75
|
+
return { mode: "markdown", lines };
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// Never let a markdown bug blank the pager.
|
|
79
|
+
return { mode: "plain", lines: plainLines(body) };
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=pager-markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pager-markdown.js","sourceRoot":"","sources":["../../../src/tui-v2/rendering/pager-markdown.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAyB5D;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,KAAK,IAAI,CAAC,CAAC;IAC3C,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,KAAK,IAAI,CAAC,CAAC;IAC7C,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,KAAK,IAAI,CAAC,CAAC;IACvE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,KAAK,IAAI,CAAC,CAAC;IACtC,6DAA6D;IAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACjD,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;QAAE,KAAK,IAAI,CAAC,CAAC;IACzC,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtE,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,+CAA+C;IAC/C,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,KAAK,IAAI,CAAC,CAAC;IACtE,OAAO,KAAK,IAAI,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG;QAAE,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACpF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAmC;IAEnC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC;IACpC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAE1C,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACpD,CAAC;IAED,MAAM,YAAY,GAChB,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnE,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE;YACvC,KAAK;YACL,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,gBAAgB,EAAE,IAAI;SACvB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,CAAC;QACD,MAAM,KAAK,GAAuB,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YAClD,yEAAyE;YACzE,uEAAuE;YACvE,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;YACjD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,4CAA4C;QAC5C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACpD,CAAC;AACH,CAAC"}
|
|
@@ -47,7 +47,6 @@ export declare function wrapPlanText(text: string, width: number): string[];
|
|
|
47
47
|
export declare function cleanTaskTitle(task: PlanTask): string;
|
|
48
48
|
/**
|
|
49
49
|
* Full plan body for the OpenTUI pager (Ctrl+P / /plan).
|
|
50
|
-
*
|
|
51
|
-
* Tasks are card-like blocks with clear rules between them.
|
|
50
|
+
* Markdown so the pager renders headings, tables, and lists cleanly.
|
|
52
51
|
*/
|
|
53
52
|
export declare function formatPlanPagerDocument(plan: SessionPlan): string;
|
|
@@ -156,95 +156,79 @@ export function cleanTaskTitle(task) {
|
|
|
156
156
|
title = title.replace(re, "");
|
|
157
157
|
return title || task.title.trim();
|
|
158
158
|
}
|
|
159
|
-
const PAGER_WIDTH = 76;
|
|
160
|
-
const RULE = "─".repeat(PAGER_WIDTH);
|
|
161
|
-
function pushWrapped(lines, text, prefix, width) {
|
|
162
|
-
const bodyWidth = Math.max(12, width - prefix.length);
|
|
163
|
-
const wrapped = wrapPlanText(text, bodyWidth);
|
|
164
|
-
for (let i = 0; i < wrapped.length; i++) {
|
|
165
|
-
lines.push(i === 0 ? `${prefix}${wrapped[i]}` : `${" ".repeat(prefix.length)}${wrapped[i]}`);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
159
|
/**
|
|
169
160
|
* Full plan body for the OpenTUI pager (Ctrl+P / /plan).
|
|
170
|
-
*
|
|
171
|
-
* Tasks are card-like blocks with clear rules between them.
|
|
161
|
+
* Markdown so the pager renders headings, tables, and lists cleanly.
|
|
172
162
|
*/
|
|
173
163
|
export function formatPlanPagerDocument(plan) {
|
|
174
164
|
const { done, total } = planProgress(plan);
|
|
165
|
+
const goal = plan.goal.trim() || "Untitled plan";
|
|
166
|
+
const updated = plan.updatedAt.replace("T", " ").slice(0, 19);
|
|
175
167
|
const lines = [];
|
|
176
|
-
lines.push(
|
|
177
|
-
lines.push("");
|
|
178
|
-
lines.push(`Status ${STATUS_LABEL[plan.status]} Progress ${done}/${total} Kind ${plan.kind || "general"}`);
|
|
179
|
-
lines.push(`Updated ${plan.updatedAt.replace("T", " ").slice(0, 19)}`);
|
|
168
|
+
lines.push(`# ${goal}`);
|
|
180
169
|
lines.push("");
|
|
181
|
-
lines.push(
|
|
170
|
+
lines.push("| | |");
|
|
171
|
+
lines.push("| --- | --- |");
|
|
172
|
+
lines.push(`| **Status** | ${STATUS_LABEL[plan.status]} |`);
|
|
173
|
+
lines.push(`| **Progress** | ${done}/${total} tasks |`);
|
|
174
|
+
lines.push(`| **Kind** | ${plan.kind || "general"} |`);
|
|
175
|
+
lines.push(`| **Updated** | ${updated} |`);
|
|
182
176
|
lines.push("");
|
|
183
177
|
const detail = plan.detail.trim();
|
|
184
178
|
if (detail) {
|
|
185
|
-
lines.push("Approach");
|
|
179
|
+
lines.push("## Approach");
|
|
186
180
|
lines.push("");
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
pushWrapped(lines, line.trim(), " ", PAGER_WIDTH);
|
|
181
|
+
// Preserve author markdown when present; otherwise indent as body.
|
|
182
|
+
const looksMd = /^#{1,6}\s/m.test(detail) ||
|
|
183
|
+
/^[-*]\s/m.test(detail) ||
|
|
184
|
+
/```/.test(detail) ||
|
|
185
|
+
/\*\*/.test(detail);
|
|
186
|
+
if (looksMd) {
|
|
187
|
+
lines.push(detail);
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
for (const raw of detail.split(/\r?\n/)) {
|
|
191
|
+
const line = raw.replace(/\t/g, " ").trimEnd();
|
|
192
|
+
lines.push(line.length === 0 ? "" : line);
|
|
200
193
|
}
|
|
201
194
|
}
|
|
202
195
|
lines.push("");
|
|
203
|
-
lines.push(RULE);
|
|
204
|
-
lines.push("");
|
|
205
196
|
}
|
|
206
|
-
lines.push(
|
|
197
|
+
lines.push(`## Tasks (${total})`);
|
|
207
198
|
lines.push("");
|
|
208
199
|
if (plan.tasks.length === 0) {
|
|
209
|
-
lines.push("
|
|
200
|
+
lines.push("*No tasks yet.*");
|
|
210
201
|
}
|
|
211
202
|
else {
|
|
203
|
+
lines.push("| # | State | Task | Id |");
|
|
204
|
+
lines.push("| ---: | --- | --- | --- |");
|
|
212
205
|
plan.tasks.forEach((task, i) => {
|
|
213
206
|
const glyph = TASK_GLYPH[task.state] ?? "○";
|
|
214
207
|
const state = TASK_STATE_LABEL[task.state] ?? task.state;
|
|
215
|
-
const
|
|
216
|
-
const
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
lines.push(` [${state}] ${task.id}`);
|
|
221
|
-
if (task.note?.trim()) {
|
|
222
|
-
pushWrapped(lines, task.note.trim(), " note ", PAGER_WIDTH);
|
|
223
|
-
}
|
|
224
|
-
// Boundary between tasks
|
|
225
|
-
if (i < plan.tasks.length - 1) {
|
|
226
|
-
lines.push("");
|
|
227
|
-
lines.push(RULE);
|
|
228
|
-
lines.push("");
|
|
229
|
-
}
|
|
208
|
+
const title = cleanTaskTitle(task).replace(/\|/g, "\\|");
|
|
209
|
+
const note = task.note?.trim()
|
|
210
|
+
? `<br>*${task.note.trim().replace(/\|/g, "\\|")}*`
|
|
211
|
+
: "";
|
|
212
|
+
lines.push(`| ${i + 1} | ${glyph} ${state} | ${title}${note} | \`${task.id}\` |`);
|
|
230
213
|
});
|
|
231
214
|
}
|
|
232
215
|
lines.push("");
|
|
233
|
-
lines.push(
|
|
216
|
+
lines.push("---");
|
|
234
217
|
lines.push("");
|
|
235
218
|
if (plan.status === "draft") {
|
|
236
|
-
lines.push("Next
|
|
219
|
+
lines.push("**Next:** `y` / `i` or `/implement` to run · `s` + feedback to revise · `n` discard · or refine in chat.");
|
|
237
220
|
}
|
|
238
221
|
else if (plan.status === "approved" || plan.status === "in_progress") {
|
|
239
|
-
lines.push("Plan is approved — the agent marks tasks as they complete.");
|
|
222
|
+
lines.push("Plan is **approved** — the agent marks tasks as they complete.");
|
|
240
223
|
}
|
|
241
224
|
else if (plan.status === "completed") {
|
|
242
|
-
lines.push("All tasks completed
|
|
225
|
+
lines.push("All tasks **completed**.");
|
|
243
226
|
}
|
|
244
227
|
else {
|
|
245
|
-
lines.push(`Plan status:
|
|
228
|
+
lines.push(`Plan status: **${STATUS_LABEL[plan.status]}**.`);
|
|
246
229
|
}
|
|
247
|
-
lines.push("
|
|
230
|
+
lines.push("");
|
|
231
|
+
lines.push("`q`/`Esc` close · `↑↓` scroll · `^r` search");
|
|
248
232
|
return lines.join("\n");
|
|
249
233
|
}
|
|
250
234
|
//# sourceMappingURL=plan-view.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-view.js","sourceRoot":"","sources":["../../../src/tui-v2/rendering/plan-view.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"plan-view.js","sourceRoot":"","sources":["../../../src/tui-v2/rendering/plan-view.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.generated.js","sourceRoot":"","sources":["../src/version.generated.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAgB,CAAC;AACxC,MAAM,CAAC,MAAM,WAAW,GAAG,QAAiB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pentoshi/clai",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.8.0",
|
|
4
4
|
"description": "A fast, cross-platform AI CLI assistant with ask and agent modes for shell tasks, file operations, and cybersecurity workflows.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -38,12 +38,16 @@
|
|
|
38
38
|
"dev:bun": "bun run src/index.ts",
|
|
39
39
|
"dev:node": "tsx src/index.ts",
|
|
40
40
|
"start": "node dist/index.js",
|
|
41
|
+
"sync-version": "node scripts/sync-version.mjs",
|
|
41
42
|
"embed-prompts": "node scripts/embed-prompts.mjs",
|
|
43
|
+
"prebuild": "node scripts/sync-version.mjs",
|
|
42
44
|
"build": "node scripts/embed-prompts.mjs && tsc -p tsconfig.json && node -e \"const{cpSync,mkdirSync}=require('fs');mkdirSync('dist/prompts',{recursive:true});for(const f of['system.agent.md','system.ask.md'])cpSync('src/prompts/'+f,'dist/prompts/'+f);\"",
|
|
43
45
|
"prepublishOnly": "npm run build",
|
|
46
|
+
"precompile": "node scripts/sync-version.mjs",
|
|
44
47
|
"compile": "node scripts/embed-prompts.mjs && bun run scripts/build.ts",
|
|
45
48
|
"install:opentui-platforms": "node scripts/install-opentui-platforms.mjs",
|
|
46
49
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
50
|
+
"pretest": "node scripts/sync-version.mjs",
|
|
47
51
|
"test": "vitest run",
|
|
48
52
|
"test:bun:v2": "bun run scripts/v2-spikes/ci-smoke.ts",
|
|
49
53
|
"test:bun:parity": "bun x vitest run test/tui-v2 test/god-mode-phase1.test.ts test/mentions.test.ts",
|