@pentoshi/clai 3.7.9 → 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.
Files changed (90) hide show
  1. package/README.md +7 -4
  2. package/dist/commands/update.js +11 -3
  3. package/dist/commands/update.js.map +1 -1
  4. package/dist/prompts/embedded.js +2 -2
  5. package/dist/prompts/embedded.js.map +1 -1
  6. package/dist/prompts/index.js +3 -2
  7. package/dist/prompts/index.js.map +1 -1
  8. package/dist/prompts/system.agent.md +3 -3
  9. package/dist/prompts/system.ask.md +1 -1
  10. package/dist/repl/slash-commands.js +4 -0
  11. package/dist/repl/slash-commands.js.map +1 -1
  12. package/dist/tools/definitions.js +48 -5
  13. package/dist/tools/definitions.js.map +1 -1
  14. package/dist/tools/fs.d.ts +18 -3
  15. package/dist/tools/fs.js +471 -40
  16. package/dist/tools/fs.js.map +1 -1
  17. package/dist/tools/registry.js +10 -1
  18. package/dist/tools/registry.js.map +1 -1
  19. package/dist/tui-v2/actions/format-shortcuts.d.ts +12 -0
  20. package/dist/tui-v2/actions/format-shortcuts.js +257 -0
  21. package/dist/tui-v2/actions/format-shortcuts.js.map +1 -0
  22. package/dist/tui-v2/actions/keymap.js +7 -4
  23. package/dist/tui-v2/actions/keymap.js.map +1 -1
  24. package/dist/tui-v2/app/App.js +77 -21
  25. package/dist/tui-v2/app/App.js.map +1 -1
  26. package/dist/tui-v2/app/command-handlers.js +2 -1
  27. package/dist/tui-v2/app/command-handlers.js.map +1 -1
  28. package/dist/tui-v2/app/commands/config-commands.d.ts +1 -0
  29. package/dist/tui-v2/app/commands/config-commands.js +6 -5
  30. package/dist/tui-v2/app/commands/config-commands.js.map +1 -1
  31. package/dist/tui-v2/app/commands/picker-commands.js +3 -1
  32. package/dist/tui-v2/app/commands/picker-commands.js.map +1 -1
  33. package/dist/tui-v2/app/commands/session-commands.js +19 -2
  34. package/dist/tui-v2/app/commands/session-commands.js.map +1 -1
  35. package/dist/tui-v2/app/plan-lifecycle.js +1 -1
  36. package/dist/tui-v2/app/plan-lifecycle.js.map +1 -1
  37. package/dist/tui-v2/components/overlay/overlay-host.js +1 -1
  38. package/dist/tui-v2/components/overlay/overlay-host.js.map +1 -1
  39. package/dist/tui-v2/components/pager/pager-line.d.ts +31 -0
  40. package/dist/tui-v2/components/pager/pager-line.js +184 -0
  41. package/dist/tui-v2/components/pager/pager-line.js.map +1 -0
  42. package/dist/tui-v2/components/pager/pager.d.ts +7 -2
  43. package/dist/tui-v2/components/pager/pager.js +66 -187
  44. package/dist/tui-v2/components/pager/pager.js.map +1 -1
  45. package/dist/tui-v2/components/status/status-line.d.ts +9 -1
  46. package/dist/tui-v2/components/status/status-line.js +3 -3
  47. package/dist/tui-v2/components/status/status-line.js.map +1 -1
  48. package/dist/tui-v2/components/toast/toast-host.d.ts +5 -2
  49. package/dist/tui-v2/components/toast/toast-host.js +63 -28
  50. package/dist/tui-v2/components/toast/toast-host.js.map +1 -1
  51. package/dist/tui-v2/components/transcript/search-bar.d.ts +9 -5
  52. package/dist/tui-v2/components/transcript/search-bar.js +49 -3
  53. package/dist/tui-v2/components/transcript/search-bar.js.map +1 -1
  54. package/dist/tui-v2/components/transcript/transcript-row.d.ts +9 -0
  55. package/dist/tui-v2/components/transcript/transcript-row.js +24 -7
  56. package/dist/tui-v2/components/transcript/transcript-row.js.map +1 -1
  57. package/dist/tui-v2/components/transcript/transcript-view.js +121 -13
  58. package/dist/tui-v2/components/transcript/transcript-view.js.map +1 -1
  59. package/dist/tui-v2/components/transcript/use-native-selection-copy.js +7 -4
  60. package/dist/tui-v2/components/transcript/use-native-selection-copy.js.map +1 -1
  61. package/dist/tui-v2/composer/composer-action-port.d.ts +12 -0
  62. package/dist/tui-v2/composer/composer-action-port.js +20 -0
  63. package/dist/tui-v2/composer/composer-action-port.js.map +1 -0
  64. package/dist/tui-v2/composer/composer-editor.js +34 -2
  65. package/dist/tui-v2/composer/composer-editor.js.map +1 -1
  66. package/dist/tui-v2/composer/textarea-keybindings.d.ts +5 -3
  67. package/dist/tui-v2/composer/textarea-keybindings.js +29 -2
  68. package/dist/tui-v2/composer/textarea-keybindings.js.map +1 -1
  69. package/dist/tui-v2/controllers/overlay-controller.d.ts +6 -1
  70. package/dist/tui-v2/controllers/overlay-controller.js +2 -1
  71. package/dist/tui-v2/controllers/overlay-controller.js.map +1 -1
  72. package/dist/tui-v2/controllers/toast-controller.d.ts +17 -5
  73. package/dist/tui-v2/controllers/toast-controller.js +33 -7
  74. package/dist/tui-v2/controllers/toast-controller.js.map +1 -1
  75. package/dist/tui-v2/notify.d.ts +21 -0
  76. package/dist/tui-v2/notify.js +27 -0
  77. package/dist/tui-v2/notify.js.map +1 -0
  78. package/dist/tui-v2/rendering/format-help.d.ts +16 -0
  79. package/dist/tui-v2/rendering/format-help.js +95 -0
  80. package/dist/tui-v2/rendering/format-help.js.map +1 -0
  81. package/dist/tui-v2/rendering/pager-markdown.d.ts +40 -0
  82. package/dist/tui-v2/rendering/pager-markdown.js +82 -0
  83. package/dist/tui-v2/rendering/pager-markdown.js.map +1 -0
  84. package/dist/tui-v2/rendering/plan-view.d.ts +1 -2
  85. package/dist/tui-v2/rendering/plan-view.js +39 -55
  86. package/dist/tui-v2/rendering/plan-view.js.map +1 -1
  87. package/dist/version.generated.d.ts +6 -0
  88. package/dist/version.generated.js +7 -0
  89. package/dist/version.generated.js.map +1 -0
  90. 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":"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"}
@@ -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
- * Plain text only no chalk/ANSI (those look messy in the pager).
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
- * Plain text only no chalk/ANSI (those look messy in the pager).
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(plan.goal.trim() || "Untitled plan");
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(RULE);
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
- for (const raw of detail.split(/\r?\n/)) {
188
- const line = raw.replace(/\t/g, " ");
189
- if (line.trim() === "") {
190
- lines.push("");
191
- }
192
- else if (/^#{1,6}\s/.test(line.trim())) {
193
- lines.push(line.trim().replace(/^#+\s*/, ""));
194
- }
195
- else if (/^[-*•]\s/.test(line.trim()) || /^\d+[.)]\s/.test(line.trim())) {
196
- pushWrapped(lines, line.trim(), " ", PAGER_WIDTH);
197
- }
198
- else {
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(`Tasks (${total})`);
197
+ lines.push(`## Tasks (${total})`);
207
198
  lines.push("");
208
199
  if (plan.tasks.length === 0) {
209
- lines.push(" (no tasks)");
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 num = String(i + 1).padStart(2, " ");
216
- const title = cleanTaskTitle(task);
217
- // Card header: glyph + index + title (wrapped)
218
- pushWrapped(lines, title, `${glyph} ${num}. `, PAGER_WIDTH);
219
- // State as a clean tag line (not free-floating "done")
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(RULE);
216
+ lines.push("---");
234
217
  lines.push("");
235
218
  if (plan.status === "draft") {
236
- lines.push("Next: y/i or /implement to run · s then type feedback to revise · n discard · or refine in chat.");
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: ${STATUS_LABEL[plan.status]}.`);
228
+ lines.push(`Plan status: **${STATUS_LABEL[plan.status]}**.`);
246
229
  }
247
- lines.push("q/esc:close · ↑↓:scroll · ^r:search");
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,6 @@
1
+ /**
2
+ * AUTO-GENERATED by scripts/sync-version.mjs — do not edit by hand.
3
+ * Source of truth: package.json "version".
4
+ */
5
+ export declare const VERSION: "3.8.0";
6
+ export declare const VERSION_TAG: "v3.8.0";
@@ -0,0 +1,7 @@
1
+ /**
2
+ * AUTO-GENERATED by scripts/sync-version.mjs — do not edit by hand.
3
+ * Source of truth: package.json "version".
4
+ */
5
+ export const VERSION = "3.8.0";
6
+ export const VERSION_TAG = "v3.8.0";
7
+ //# sourceMappingURL=version.generated.js.map
@@ -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.7.9",
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",