bernard-agent 0.3.1 → 0.5.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 (138) hide show
  1. package/README.md +109 -38
  2. package/THIRD-PARTY-NOTICES +212 -0
  3. package/dist/agent.d.ts +32 -3
  4. package/dist/agent.js +63 -12
  5. package/dist/agent.js.map +1 -1
  6. package/dist/config.d.ts +67 -0
  7. package/dist/config.js +99 -31
  8. package/dist/config.js.map +1 -1
  9. package/dist/context.d.ts +7 -0
  10. package/dist/context.js +32 -20
  11. package/dist/context.js.map +1 -1
  12. package/dist/cron/cli.d.ts +7 -0
  13. package/dist/cron/cli.js +61 -5
  14. package/dist/cron/cli.js.map +1 -1
  15. package/dist/cron/client.d.ts +9 -0
  16. package/dist/cron/client.js +9 -0
  17. package/dist/cron/client.js.map +1 -1
  18. package/dist/cron/daemon.js +12 -1
  19. package/dist/cron/daemon.js.map +1 -1
  20. package/dist/cron/log-store.d.ts +18 -0
  21. package/dist/cron/log-store.js +41 -18
  22. package/dist/cron/log-store.js.map +1 -1
  23. package/dist/cron/notify.d.ts +7 -0
  24. package/dist/cron/notify.js +16 -0
  25. package/dist/cron/notify.js.map +1 -1
  26. package/dist/cron/runner.d.ts +11 -0
  27. package/dist/cron/runner.js +77 -20
  28. package/dist/cron/runner.js.map +1 -1
  29. package/dist/cron/scheduler.d.ts +16 -0
  30. package/dist/cron/scheduler.js +24 -7
  31. package/dist/cron/scheduler.js.map +1 -1
  32. package/dist/cron/store.d.ts +32 -0
  33. package/dist/cron/store.js +64 -27
  34. package/dist/cron/store.js.map +1 -1
  35. package/dist/cron/types.d.ts +19 -0
  36. package/dist/domains.d.ts +15 -0
  37. package/dist/domains.js +20 -1
  38. package/dist/domains.js.map +1 -1
  39. package/dist/embeddings.d.ts +7 -1
  40. package/dist/embeddings.js +43 -1
  41. package/dist/embeddings.js.map +1 -1
  42. package/dist/facts-cli.d.ts +14 -0
  43. package/dist/facts-cli.js +55 -1
  44. package/dist/facts-cli.js.map +1 -1
  45. package/dist/history.d.ts +8 -0
  46. package/dist/history.js +14 -9
  47. package/dist/history.js.map +1 -1
  48. package/dist/index.d.ts +5 -0
  49. package/dist/index.js +36 -2
  50. package/dist/index.js.map +1 -1
  51. package/dist/logger.d.ts +6 -0
  52. package/dist/logger.js +6 -0
  53. package/dist/logger.js.map +1 -1
  54. package/dist/mcp.d.ts +87 -0
  55. package/dist/mcp.js +116 -39
  56. package/dist/mcp.js.map +1 -1
  57. package/dist/memory-context.d.ts +4 -0
  58. package/dist/memory-context.js +4 -1
  59. package/dist/memory-context.js.map +1 -1
  60. package/dist/memory.d.ts +17 -0
  61. package/dist/memory.js +24 -10
  62. package/dist/memory.js.map +1 -1
  63. package/dist/migrate.d.ts +13 -0
  64. package/dist/migrate.js +209 -0
  65. package/dist/migrate.js.map +1 -0
  66. package/dist/output.d.ts +46 -1
  67. package/dist/output.js +72 -11
  68. package/dist/output.js.map +1 -1
  69. package/dist/paths.d.ts +23 -0
  70. package/dist/paths.js +82 -0
  71. package/dist/paths.js.map +1 -0
  72. package/dist/providers/index.d.ts +7 -0
  73. package/dist/providers/index.js +7 -0
  74. package/dist/providers/index.js.map +1 -1
  75. package/dist/providers/types.d.ts +4 -0
  76. package/dist/rag-query.d.ts +20 -0
  77. package/dist/rag-query.js +70 -6
  78. package/dist/rag-query.js.map +1 -1
  79. package/dist/rag-worker.js.map +1 -1
  80. package/dist/rag.d.ts +41 -1
  81. package/dist/rag.js +125 -21
  82. package/dist/rag.js.map +1 -1
  83. package/dist/repl.d.ts +6 -0
  84. package/dist/repl.js +211 -44
  85. package/dist/repl.js.map +1 -1
  86. package/dist/routines.d.ts +49 -0
  87. package/dist/routines.js +172 -0
  88. package/dist/routines.js.map +1 -0
  89. package/dist/setup.d.ts +5 -0
  90. package/dist/setup.js +8 -2
  91. package/dist/setup.js.map +1 -1
  92. package/dist/theme.d.ts +41 -0
  93. package/dist/theme.js +55 -5
  94. package/dist/theme.js.map +1 -1
  95. package/dist/tools/cron-logs.d.ts +6 -0
  96. package/dist/tools/cron-logs.js +17 -4
  97. package/dist/tools/cron-logs.js.map +1 -1
  98. package/dist/tools/cron.d.ts +18 -0
  99. package/dist/tools/cron.js +67 -11
  100. package/dist/tools/cron.js.map +1 -1
  101. package/dist/tools/datetime.d.ts +1 -0
  102. package/dist/tools/datetime.js +1 -0
  103. package/dist/tools/datetime.js.map +1 -1
  104. package/dist/tools/index.d.ts +10 -325
  105. package/dist/tools/index.js +11 -1
  106. package/dist/tools/index.js.map +1 -1
  107. package/dist/tools/mcp-url.d.ts +6 -0
  108. package/dist/tools/mcp-url.js +6 -0
  109. package/dist/tools/mcp-url.js.map +1 -1
  110. package/dist/tools/mcp.d.ts +6 -0
  111. package/dist/tools/mcp.js +25 -12
  112. package/dist/tools/mcp.js.map +1 -1
  113. package/dist/tools/memory.d.ts +14 -0
  114. package/dist/tools/memory.js +18 -3
  115. package/dist/tools/memory.js.map +1 -1
  116. package/dist/tools/routine.d.ts +35 -0
  117. package/dist/tools/routine.js +93 -0
  118. package/dist/tools/routine.js.map +1 -0
  119. package/dist/tools/shell.d.ts +15 -1
  120. package/dist/tools/shell.js +16 -2
  121. package/dist/tools/shell.js.map +1 -1
  122. package/dist/tools/subagent.d.ts +18 -1
  123. package/dist/tools/subagent.js +27 -7
  124. package/dist/tools/subagent.js.map +1 -1
  125. package/dist/tools/time.d.ts +19 -0
  126. package/dist/tools/time.js +27 -4
  127. package/dist/tools/time.js.map +1 -1
  128. package/dist/tools/types.d.ts +6 -0
  129. package/dist/tools/wait.d.ts +3 -0
  130. package/dist/tools/wait.js +3 -0
  131. package/dist/tools/wait.js.map +1 -1
  132. package/dist/tools/web.d.ts +6 -0
  133. package/dist/tools/web.js +29 -6
  134. package/dist/tools/web.js.map +1 -1
  135. package/dist/update.d.ts +5 -0
  136. package/dist/update.js +8 -7
  137. package/dist/update.js.map +1 -1
  138. package/package.json +11 -2
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.migrateFromLegacy = migrateFromLegacy;
37
+ const fs = __importStar(require("node:fs"));
38
+ const path = __importStar(require("node:path"));
39
+ const paths_js_1 = require("./paths.js");
40
+ const MIGRATED_MARKER = path.join(paths_js_1.LEGACY_DIR, 'MIGRATED');
41
+ /** File-to-XDG-category mapping for migration. */
42
+ const MIGRATION_MAP = [
43
+ // Config files
44
+ { src: 'preferences.json', destDir: paths_js_1.CONFIG_DIR },
45
+ { src: 'keys.json', destDir: paths_js_1.CONFIG_DIR, mode: 0o600 },
46
+ { src: '.env', destDir: paths_js_1.CONFIG_DIR },
47
+ { src: 'mcp.json', destDir: paths_js_1.CONFIG_DIR },
48
+ // Cache files
49
+ { src: 'update-check.json', destDir: paths_js_1.CACHE_DIR },
50
+ // State files
51
+ { src: 'conversation-history.json', destDir: paths_js_1.STATE_DIR },
52
+ ];
53
+ /** Directory-to-XDG-category mapping for migration. */
54
+ const DIR_MIGRATION_MAP = [
55
+ // Data directories
56
+ { src: 'memory', destDir: path.join(paths_js_1.DATA_DIR, 'memory') },
57
+ { src: 'rag', destDir: path.join(paths_js_1.DATA_DIR, 'rag') },
58
+ { src: 'cron', destDir: path.join(paths_js_1.DATA_DIR, 'cron') },
59
+ // Cache directories
60
+ { src: 'models', destDir: path.join(paths_js_1.CACHE_DIR, 'models') },
61
+ // State directories
62
+ { src: 'logs', destDir: path.join(paths_js_1.STATE_DIR, 'logs') },
63
+ ];
64
+ /**
65
+ * Move a single file, falling back to copy+delete on cross-filesystem (EXDEV) errors.
66
+ * Creates destination directory if needed.
67
+ */
68
+ function moveFile(src, dest, mode) {
69
+ const destDir = path.dirname(dest);
70
+ fs.mkdirSync(destDir, { recursive: true, mode: 0o700 });
71
+ try {
72
+ fs.renameSync(src, dest);
73
+ }
74
+ catch (err) {
75
+ if (err.code === 'EXDEV') {
76
+ fs.copyFileSync(src, dest);
77
+ fs.unlinkSync(src);
78
+ }
79
+ else {
80
+ throw err;
81
+ }
82
+ }
83
+ if (mode !== undefined) {
84
+ fs.chmodSync(dest, mode);
85
+ }
86
+ }
87
+ /**
88
+ * Recursively move a directory's contents to a new location.
89
+ * Creates the destination directory structure as needed.
90
+ */
91
+ function moveDir(srcDir, destDir) {
92
+ if (!fs.existsSync(srcDir))
93
+ return;
94
+ fs.mkdirSync(destDir, { recursive: true, mode: 0o700 });
95
+ const entries = fs.readdirSync(srcDir, { withFileTypes: true });
96
+ for (const entry of entries) {
97
+ const srcPath = path.join(srcDir, entry.name);
98
+ const destPath = path.join(destDir, entry.name);
99
+ if (entry.isDirectory()) {
100
+ moveDir(srcPath, destPath);
101
+ }
102
+ else {
103
+ moveFile(srcPath, destPath);
104
+ }
105
+ }
106
+ // Remove the now-empty source directory
107
+ try {
108
+ fs.rmdirSync(srcDir);
109
+ }
110
+ catch {
111
+ // May not be empty if some files failed; ignore
112
+ }
113
+ }
114
+ /**
115
+ * Migrate files from the legacy `~/.bernard/` layout to XDG directories.
116
+ *
117
+ * - No-op if `BERNARD_HOME` is set (user explicitly controls layout)
118
+ * - No-op if `~/.bernard/` does not exist (fresh install)
119
+ * - No-op if already migrated (MIGRATED marker exists or prefs in XDG location)
120
+ *
121
+ * @returns Object with `migrated` flag and any non-fatal `errors` encountered.
122
+ */
123
+ function migrateFromLegacy() {
124
+ const errors = [];
125
+ // Skip if user explicitly controls layout
126
+ if (process.env.BERNARD_HOME) {
127
+ return { migrated: false, errors };
128
+ }
129
+ // Skip if legacy dir doesn't exist (fresh install)
130
+ if (!fs.existsSync(paths_js_1.LEGACY_DIR)) {
131
+ return { migrated: false, errors };
132
+ }
133
+ // Skip if already migrated
134
+ if (fs.existsSync(MIGRATED_MARKER)) {
135
+ return { migrated: false, errors };
136
+ }
137
+ if (fs.existsSync(paths_js_1.CONFIG_DIR)) {
138
+ try {
139
+ const entries = fs.readdirSync(paths_js_1.CONFIG_DIR);
140
+ if (entries.length > 0) {
141
+ return { migrated: false, errors };
142
+ }
143
+ }
144
+ catch {
145
+ /* proceed with migration */
146
+ }
147
+ }
148
+ // Ensure XDG base directories exist with 0700
149
+ for (const dir of [paths_js_1.CONFIG_DIR, paths_js_1.DATA_DIR, paths_js_1.CACHE_DIR, paths_js_1.STATE_DIR]) {
150
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
151
+ }
152
+ // Migrate individual files
153
+ for (const entry of MIGRATION_MAP) {
154
+ const srcPath = path.join(paths_js_1.LEGACY_DIR, entry.src);
155
+ if (!fs.existsSync(srcPath))
156
+ continue;
157
+ try {
158
+ const destPath = path.join(entry.destDir, entry.src);
159
+ moveFile(srcPath, destPath, entry.mode);
160
+ }
161
+ catch (err) {
162
+ const msg = `Failed to migrate ${entry.src}: ${err instanceof Error ? err.message : String(err)}`;
163
+ errors.push(msg);
164
+ }
165
+ }
166
+ // Migrate directories
167
+ for (const entry of DIR_MIGRATION_MAP) {
168
+ const srcPath = path.join(paths_js_1.LEGACY_DIR, entry.src);
169
+ if (!fs.existsSync(srcPath))
170
+ continue;
171
+ try {
172
+ moveDir(srcPath, entry.destDir);
173
+ }
174
+ catch (err) {
175
+ const msg = `Failed to migrate ${entry.src}/: ${err instanceof Error ? err.message : String(err)}`;
176
+ errors.push(msg);
177
+ }
178
+ }
179
+ // Also move the daemon PID and log from cron/ to state (they lived under cron/ in legacy)
180
+ for (const file of ['daemon.pid', 'daemon.log']) {
181
+ const srcPath = path.join(paths_js_1.DATA_DIR, 'cron', file);
182
+ if (!fs.existsSync(srcPath))
183
+ continue;
184
+ try {
185
+ const destName = file === 'daemon.pid' ? 'cron-daemon.pid' : 'cron-daemon.log';
186
+ moveFile(srcPath, path.join(paths_js_1.STATE_DIR, destName));
187
+ }
188
+ catch (err) {
189
+ const msg = `Failed to relocate cron/${file}: ${err instanceof Error ? err.message : String(err)}`;
190
+ errors.push(msg);
191
+ }
192
+ }
193
+ // Leave marker explaining the migration
194
+ try {
195
+ fs.writeFileSync(MIGRATED_MARKER, 'Bernard files have been migrated to XDG Base Directory locations.\n' +
196
+ 'See: https://specifications.freedesktop.org/basedir/latest/\n' +
197
+ `Config: ${paths_js_1.CONFIG_DIR}\n` +
198
+ `Data: ${paths_js_1.DATA_DIR}\n` +
199
+ `Cache: ${paths_js_1.CACHE_DIR}\n` +
200
+ `State: ${paths_js_1.STATE_DIR}\n`);
201
+ }
202
+ catch {
203
+ // Non-critical
204
+ }
205
+ // Print one-line notice to stderr
206
+ process.stderr.write(`bernard: migrated data from ~/.bernard/ to XDG directories (see ~/.bernard/MIGRATED)\n`);
207
+ return { migrated: true, errors };
208
+ }
209
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"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"}
package/dist/output.d.ts CHANGED
@@ -1,21 +1,66 @@
1
1
  import type { CoreMessage } from 'ai';
2
+ /** Cumulative token-usage statistics displayed alongside the thinking spinner. */
2
3
  export interface SpinnerStats {
4
+ /** Epoch timestamp (ms) when the current agent step began. */
3
5
  startTime: number;
6
+ /** Running total of prompt tokens consumed across all steps. */
4
7
  totalPromptTokens: number;
8
+ /** Running total of completion tokens generated across all steps. */
5
9
  totalCompletionTokens: number;
10
+ /** Prompt tokens for the most recent LLM call (used for compression headroom). */
6
11
  latestPromptTokens: number;
12
+ /** Model identifier, used to look up the context-window size. */
7
13
  model: string;
8
14
  }
15
+ /**
16
+ * Builds the dynamic status text shown next to the spinner animation.
17
+ *
18
+ * Displays elapsed time, cumulative token counts (up/down arrows),
19
+ * and percentage of context window remaining before compression triggers.
20
+ */
9
21
  export declare function buildSpinnerMessage(stats: SpinnerStats): string;
22
+ /**
23
+ * Starts a braille-dot spinner animation on stdout.
24
+ *
25
+ * Hides the cursor and redraws at 80 ms intervals. If a spinner is already
26
+ * running the call is a no-op. Call {@link stopSpinner} to clear it.
27
+ *
28
+ * @param message - Static string or callback returning a dynamic status line.
29
+ */
10
30
  export declare function startSpinner(message?: string | (() => string)): void;
31
+ /** Stops the spinner, clears its line, and restores the cursor. */
11
32
  export declare function stopSpinner(): void;
12
- export declare function printWelcome(provider: string, model: string): void;
33
+ /** Prints the branded welcome banner with provider, model, and optional version info. */
34
+ export declare function printWelcome(provider: string, model: string, version?: string): void;
35
+ /** Prints an assistant response, stopping any active spinner first. */
13
36
  export declare function printAssistantText(text: string, prefix?: string): void;
37
+ /**
38
+ * Prints a one-line summary of a tool invocation.
39
+ *
40
+ * For the `shell` tool the raw command string is shown; for all others
41
+ * the args object is JSON-serialized.
42
+ */
14
43
  export declare function printToolCall(toolName: string, args: Record<string, unknown>, prefix?: string): void;
44
+ /**
45
+ * Prints a tool's return value, truncated to {@link MAX_TOOL_OUTPUT_LENGTH} characters.
46
+ *
47
+ * Handles string results, `{ output: string }` shapes, and arbitrary objects.
48
+ */
15
49
  export declare function printToolResult(toolName: string, result: unknown, prefix?: string): void;
50
+ /** Prints an error message to stderr in the theme's error color. */
16
51
  export declare function printError(message: string): void;
52
+ /** Prints an informational message in the theme's muted color. */
17
53
  export declare function printInfo(message: string): void;
54
+ /**
55
+ * Prints a dimmed summary of a prior conversation for session-resume context.
56
+ *
57
+ * Each message is truncated to {@link MAX_REPLAY_LENGTH} characters.
58
+ * Tool-role messages are skipped.
59
+ */
18
60
  export declare function printConversationReplay(messages: CoreMessage[]): void;
61
+ /** Prints a colored top-border line when a sub-agent begins executing a task. */
19
62
  export declare function printSubAgentStart(id: number, task: string): void;
63
+ /** Prints a colored bottom-border line when a sub-agent finishes. */
20
64
  export declare function printSubAgentEnd(id: number): void;
65
+ /** Prints the REPL help menu listing all available slash commands. */
21
66
  export declare function printHelp(): void;
package/dist/output.js CHANGED
@@ -17,12 +17,20 @@ const context_js_1 = require("./context.js");
17
17
  const theme_js_1 = require("./theme.js");
18
18
  const MAX_TOOL_OUTPUT_LENGTH = 2000;
19
19
  const MAX_REPLAY_LENGTH = 200;
20
+ /**
21
+ * Formats a token count into a compact human-readable string (e.g. `"3.2k"`).
22
+ * @internal
23
+ */
20
24
  function formatTokenCount(n) {
21
25
  if (n < 1000)
22
26
  return String(n);
23
27
  const k = n / 1000;
24
28
  return k >= 10 ? `${Math.round(k)}k` : `${k.toFixed(1)}k`;
25
29
  }
30
+ /**
31
+ * Formats a millisecond duration as `"Xs"` or `"XmYs"`.
32
+ * @internal
33
+ */
26
34
  function formatElapsed(ms) {
27
35
  const totalSeconds = Math.floor(ms / 1000);
28
36
  if (totalSeconds < 60)
@@ -31,6 +39,12 @@ function formatElapsed(ms) {
31
39
  const seconds = totalSeconds % 60;
32
40
  return `${minutes}m${seconds}s`;
33
41
  }
42
+ /**
43
+ * Builds the dynamic status text shown next to the spinner animation.
44
+ *
45
+ * Displays elapsed time, cumulative token counts (up/down arrows),
46
+ * and percentage of context window remaining before compression triggers.
47
+ */
34
48
  function buildSpinnerMessage(stats) {
35
49
  const elapsed = formatElapsed(Date.now() - stats.startTime);
36
50
  if (stats.totalPromptTokens === 0 && stats.totalCompletionTokens === 0) {
@@ -40,9 +54,14 @@ function buildSpinnerMessage(stats) {
40
54
  const down = formatTokenCount(stats.totalCompletionTokens);
41
55
  const contextWindow = (0, context_js_1.getContextWindow)(stats.model);
42
56
  const thresholdTokens = contextWindow * context_js_1.COMPRESSION_THRESHOLD;
43
- const remainingPct = Math.max(0, Math.round((thresholdTokens - stats.latestPromptTokens) / thresholdTokens * 100));
57
+ const remainingPct = Math.max(0, Math.round(((thresholdTokens - stats.latestPromptTokens) / thresholdTokens) * 100));
44
58
  return `Thinking (${elapsed} | ${up}\u2191 ${down}\u2193 | ${remainingPct}% until compression)`;
45
59
  }
60
+ /**
61
+ * Wraps an optional sub-agent prefix (e.g. `"sub:2"`) in a colored bracket label.
62
+ * Returns an empty string when no prefix is provided.
63
+ * @internal
64
+ */
46
65
  function formatPrefix(prefix) {
47
66
  if (!prefix)
48
67
  return '';
@@ -56,6 +75,14 @@ function formatPrefix(prefix) {
56
75
  const SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
57
76
  let spinnerTimer = null;
58
77
  let spinnerFrameIndex = 0;
78
+ /**
79
+ * Starts a braille-dot spinner animation on stdout.
80
+ *
81
+ * Hides the cursor and redraws at 80 ms intervals. If a spinner is already
82
+ * running the call is a no-op. Call {@link stopSpinner} to clear it.
83
+ *
84
+ * @param message - Static string or callback returning a dynamic status line.
85
+ */
59
86
  function startSpinner(message = 'Thinking') {
60
87
  if (spinnerTimer)
61
88
  return; // already running
@@ -68,6 +95,7 @@ function startSpinner(message = 'Thinking') {
68
95
  spinnerFrameIndex++;
69
96
  }, 80);
70
97
  }
98
+ /** Stops the spinner, clears its line, and restores the cursor. */
71
99
  function stopSpinner() {
72
100
  if (!spinnerTimer)
73
101
  return;
@@ -76,14 +104,17 @@ function stopSpinner() {
76
104
  process.stdout.write('\r\x1B[2K'); // clear line
77
105
  process.stdout.write('\x1B[?25h'); // show cursor
78
106
  }
79
- function printWelcome(provider, model) {
80
- console.log((0, theme_js_1.getTheme)().accentBold('\n Bernard') + (0, theme_js_1.getTheme)().muted(' — AI CLI Assistant'));
107
+ /** Prints the branded welcome banner with provider, model, and optional version info. */
108
+ function printWelcome(provider, model, version) {
109
+ const ver = version ? (0, theme_js_1.getTheme)().muted(` v${version}`) : '';
110
+ console.log((0, theme_js_1.getTheme)().accentBold('\n Bernard') + ver + (0, theme_js_1.getTheme)().muted(' — AI CLI Assistant'));
81
111
  console.log((0, theme_js_1.getTheme)().muted(` Provider: ${provider} | Model: ${model}`));
82
112
  if (process.env.BERNARD_DEBUG === 'true' || process.env.BERNARD_DEBUG === '1') {
83
113
  console.log((0, theme_js_1.getTheme)().warning(' DEBUG mode enabled — logging to .logs/'));
84
114
  }
85
115
  console.log((0, theme_js_1.getTheme)().muted(' Type /help for commands, exit to quit\n'));
86
116
  }
117
+ /** Prints an assistant response, stopping any active spinner first. */
87
118
  function printAssistantText(text, prefix) {
88
119
  stopSpinner();
89
120
  if (text.trim()) {
@@ -91,14 +122,23 @@ function printAssistantText(text, prefix) {
91
122
  console.log(label + (0, theme_js_1.getTheme)().text(text));
92
123
  }
93
124
  }
125
+ /**
126
+ * Prints a one-line summary of a tool invocation.
127
+ *
128
+ * For the `shell` tool the raw command string is shown; for all others
129
+ * the args object is JSON-serialized.
130
+ */
94
131
  function printToolCall(toolName, args, prefix) {
95
132
  stopSpinner();
96
133
  const label = formatPrefix(prefix);
97
- const argsStr = toolName === 'shell'
98
- ? String(args.command || '')
99
- : JSON.stringify(args);
134
+ const argsStr = toolName === 'shell' ? String(args.command || '') : JSON.stringify(args);
100
135
  console.log(label + (0, theme_js_1.getTheme)().toolCall(` ▶ ${toolName}`) + (0, theme_js_1.getTheme)().muted(`: ${argsStr}`));
101
136
  }
137
+ /**
138
+ * Prints a tool's return value, truncated to {@link MAX_TOOL_OUTPUT_LENGTH} characters.
139
+ *
140
+ * Handles string results, `{ output: string }` shapes, and arbitrary objects.
141
+ */
102
142
  function printToolResult(toolName, result, prefix) {
103
143
  stopSpinner();
104
144
  const label = formatPrefix(prefix);
@@ -115,16 +155,27 @@ function printToolResult(toolName, result, prefix) {
115
155
  if (output.length > MAX_TOOL_OUTPUT_LENGTH) {
116
156
  output = output.slice(0, MAX_TOOL_OUTPUT_LENGTH) + (0, theme_js_1.getTheme)().muted('\n ... (truncated)');
117
157
  }
118
- const lines = output.split('\n').map(line => label + (0, theme_js_1.getTheme)().muted(` ${line}`)).join('\n');
158
+ const lines = output
159
+ .split('\n')
160
+ .map((line) => label + (0, theme_js_1.getTheme)().muted(` ${line}`))
161
+ .join('\n');
119
162
  console.log(lines);
120
163
  }
164
+ /** Prints an error message to stderr in the theme's error color. */
121
165
  function printError(message) {
122
166
  stopSpinner();
123
167
  console.error((0, theme_js_1.getTheme)().error(`Error: ${message}`));
124
168
  }
169
+ /** Prints an informational message in the theme's muted color. */
125
170
  function printInfo(message) {
126
171
  console.log((0, theme_js_1.getTheme)().muted(message));
127
172
  }
173
+ /**
174
+ * Prints a dimmed summary of a prior conversation for session-resume context.
175
+ *
176
+ * Each message is truncated to {@link MAX_REPLAY_LENGTH} characters.
177
+ * Tool-role messages are skipped.
178
+ */
128
179
  function printConversationReplay(messages) {
129
180
  console.log((0, theme_js_1.getTheme)().dim(' Previous conversation:'));
130
181
  for (const msg of messages) {
@@ -133,15 +184,22 @@ function printConversationReplay(messages) {
133
184
  const text = extractText(msg);
134
185
  if (!text)
135
186
  continue;
136
- const truncated = text.length > MAX_REPLAY_LENGTH
137
- ? text.slice(0, MAX_REPLAY_LENGTH) + '…'
138
- : text;
187
+ const truncated = text.length > MAX_REPLAY_LENGTH ? text.slice(0, MAX_REPLAY_LENGTH) + '…' : text;
139
188
  const prefix = msg.role === 'user' ? ' you> ' : ' assistant> ';
140
189
  console.log((0, theme_js_1.getTheme)().dim(prefix + truncated));
141
190
  }
142
191
  console.log((0, theme_js_1.getTheme)().dim(' ———'));
143
192
  console.log();
144
193
  }
194
+ /**
195
+ * Extracts the plain-text content from a {@link CoreMessage} for display formatting.
196
+ *
197
+ * Unlike {@link extractText} in `context.ts` (which is used for serialization and compression),
198
+ * this variant is scoped to output rendering only.
199
+ *
200
+ * @returns The joined text content, or `null` if the message has no text parts.
201
+ * @internal
202
+ */
145
203
  function extractText(msg) {
146
204
  if (typeof msg.content === 'string')
147
205
  return msg.content;
@@ -149,20 +207,23 @@ function extractText(msg) {
149
207
  return null;
150
208
  const textParts = msg.content
151
209
  .filter((p) => typeof p === 'object' && p !== null && 'type' in p && p.type === 'text')
152
- .map(p => p.text);
210
+ .map((p) => p.text);
153
211
  return textParts.length > 0 ? textParts.join(' ') : null;
154
212
  }
213
+ /** Prints a colored top-border line when a sub-agent begins executing a task. */
155
214
  function printSubAgentStart(id, task) {
156
215
  const prefixColors = (0, theme_js_1.getTheme)().prefixColors;
157
216
  const colorFn = prefixColors[(id - 1) % prefixColors.length];
158
217
  const displayTask = task.length > 80 ? task.slice(0, 80) + '…' : task;
159
218
  console.log(colorFn(`┌─ sub:${id} — ${displayTask}`));
160
219
  }
220
+ /** Prints a colored bottom-border line when a sub-agent finishes. */
161
221
  function printSubAgentEnd(id) {
162
222
  const prefixColors = (0, theme_js_1.getTheme)().prefixColors;
163
223
  const colorFn = prefixColors[(id - 1) % prefixColors.length];
164
224
  console.log(colorFn(`└─ sub:${id} done`));
165
225
  }
226
+ /** Prints the REPL help menu listing all available slash commands. */
166
227
  function printHelp() {
167
228
  const t = (0, theme_js_1.getTheme)();
168
229
  console.log(t.accent('\nCommands:'));
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export declare const CONFIG_DIR: string;
2
+ export declare const DATA_DIR: string;
3
+ export declare const CACHE_DIR: string;
4
+ export declare const STATE_DIR: string;
5
+ export declare const LEGACY_DIR: string;
6
+ export declare const PREFS_PATH: string;
7
+ export declare const KEYS_PATH: string;
8
+ export declare const ENV_PATH: string;
9
+ export declare const MCP_CONFIG_PATH: string;
10
+ export declare const MEMORY_DIR: string;
11
+ export declare const RAG_DIR: string;
12
+ export declare const MEMORIES_FILE: string;
13
+ export declare const LAST_SESSION_FILE: string;
14
+ export declare const CRON_DIR: string;
15
+ export declare const CRON_JOBS_FILE: string;
16
+ export declare const CRON_ALERTS_DIR: string;
17
+ export declare const ROUTINES_DIR: string;
18
+ export declare const MODELS_DIR: string;
19
+ export declare const UPDATE_CACHE_PATH: string;
20
+ export declare const HISTORY_FILE: string;
21
+ export declare const LOGS_DIR: string;
22
+ export declare const CRON_PID_FILE: string;
23
+ export declare const CRON_LOG_FILE: string;
package/dist/paths.js ADDED
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.CRON_LOG_FILE = exports.CRON_PID_FILE = exports.LOGS_DIR = exports.HISTORY_FILE = exports.UPDATE_CACHE_PATH = exports.MODELS_DIR = exports.ROUTINES_DIR = exports.CRON_ALERTS_DIR = exports.CRON_JOBS_FILE = exports.CRON_DIR = exports.LAST_SESSION_FILE = exports.MEMORIES_FILE = exports.RAG_DIR = exports.MEMORY_DIR = exports.MCP_CONFIG_PATH = exports.ENV_PATH = exports.KEYS_PATH = exports.PREFS_PATH = exports.LEGACY_DIR = exports.STATE_DIR = exports.CACHE_DIR = exports.DATA_DIR = exports.CONFIG_DIR = void 0;
37
+ const path = __importStar(require("node:path"));
38
+ const os = __importStar(require("node:os"));
39
+ const home = os.homedir();
40
+ const bernardHome = process.env.BERNARD_HOME;
41
+ function xdgBase(envVar, fallbackSuffix) {
42
+ if (bernardHome && path.isAbsolute(bernardHome))
43
+ return bernardHome;
44
+ const envVal = process.env[envVar];
45
+ // XDG spec: ignore relative paths
46
+ if (envVal && path.isAbsolute(envVal))
47
+ return envVal;
48
+ return path.join(home, fallbackSuffix);
49
+ }
50
+ const configBase = xdgBase('XDG_CONFIG_HOME', '.config');
51
+ const dataBase = xdgBase('XDG_DATA_HOME', path.join('.local', 'share'));
52
+ const cacheBase = xdgBase('XDG_CACHE_HOME', '.cache');
53
+ const stateBase = xdgBase('XDG_STATE_HOME', path.join('.local', 'state'));
54
+ // App-scoped roots
55
+ exports.CONFIG_DIR = path.join(configBase, 'bernard');
56
+ exports.DATA_DIR = path.join(dataBase, 'bernard');
57
+ exports.CACHE_DIR = path.join(cacheBase, 'bernard');
58
+ exports.STATE_DIR = path.join(stateBase, 'bernard');
59
+ exports.LEGACY_DIR = path.join(home, '.bernard');
60
+ // Config
61
+ exports.PREFS_PATH = path.join(exports.CONFIG_DIR, 'preferences.json');
62
+ exports.KEYS_PATH = path.join(exports.CONFIG_DIR, 'keys.json');
63
+ exports.ENV_PATH = path.join(exports.CONFIG_DIR, '.env');
64
+ exports.MCP_CONFIG_PATH = path.join(exports.CONFIG_DIR, 'mcp.json');
65
+ // Data
66
+ exports.MEMORY_DIR = path.join(exports.DATA_DIR, 'memory');
67
+ exports.RAG_DIR = path.join(exports.DATA_DIR, 'rag');
68
+ exports.MEMORIES_FILE = path.join(exports.RAG_DIR, 'memories.json');
69
+ exports.LAST_SESSION_FILE = path.join(exports.RAG_DIR, 'last-session.txt');
70
+ exports.CRON_DIR = path.join(exports.DATA_DIR, 'cron');
71
+ exports.CRON_JOBS_FILE = path.join(exports.CRON_DIR, 'jobs.json');
72
+ exports.CRON_ALERTS_DIR = path.join(exports.CRON_DIR, 'alerts');
73
+ exports.ROUTINES_DIR = path.join(exports.DATA_DIR, 'routines');
74
+ // Cache
75
+ exports.MODELS_DIR = path.join(exports.CACHE_DIR, 'models');
76
+ exports.UPDATE_CACHE_PATH = path.join(exports.CACHE_DIR, 'update-check.json');
77
+ // State
78
+ exports.HISTORY_FILE = path.join(exports.STATE_DIR, 'conversation-history.json');
79
+ exports.LOGS_DIR = path.join(exports.STATE_DIR, 'logs');
80
+ exports.CRON_PID_FILE = path.join(exports.STATE_DIR, 'cron-daemon.pid');
81
+ exports.CRON_LOG_FILE = path.join(exports.STATE_DIR, 'cron-daemon.log');
82
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,9 @@
1
1
  import type { LanguageModel } from 'ai';
2
+ /**
3
+ * Return an AI SDK `LanguageModel` instance for the given provider and model name.
4
+ * @param provider - One of `"anthropic"`, `"openai"`, or `"xai"`.
5
+ * @param model - Provider-specific model identifier (e.g. `"claude-sonnet-4-20250514"`).
6
+ * @returns A ready-to-use `LanguageModel` backed by the requested provider.
7
+ * @throws {Error} If the provider string is not recognized.
8
+ */
2
9
  export declare function getModel(provider: string, model: string): LanguageModel;