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,49 @@
1
+ export interface Routine {
2
+ id: string;
3
+ name: string;
4
+ description: string;
5
+ content: string;
6
+ createdAt: string;
7
+ updatedAt: string;
8
+ }
9
+ export interface RoutineSummary {
10
+ id: string;
11
+ name: string;
12
+ description: string;
13
+ }
14
+ /**
15
+ * Disk-backed store for named routines (reusable multi-step workflows).
16
+ *
17
+ * Each routine is stored as a separate JSON file under `ROUTINES_DIR`.
18
+ * All writes use atomic rename to prevent partial-read corruption.
19
+ */
20
+ export declare class RoutineStore {
21
+ constructor();
22
+ /**
23
+ * Validates a routine ID.
24
+ * @returns An error message if invalid, or `null` if valid.
25
+ */
26
+ validateId(id: string): string | null;
27
+ /** Returns all routines sorted alphabetically by ID, skipping corrupt files. */
28
+ list(): Routine[];
29
+ /** Returns a single routine by ID, or `undefined` if not found. */
30
+ get(id: string): Routine | undefined;
31
+ /** Returns true if a routine with the given ID exists on disk. */
32
+ exists(id: string): boolean;
33
+ /**
34
+ * Creates a new routine and persists it.
35
+ * @throws {Error} If the ID is invalid, reserved, already taken, or the max limit is reached.
36
+ */
37
+ create(id: string, name: string, description: string, content: string): Routine;
38
+ /**
39
+ * Updates an existing routine with partial fields.
40
+ * @returns The updated routine, or `undefined` if not found.
41
+ */
42
+ update(id: string, updates: Partial<Pick<Routine, 'name' | 'description' | 'content'>>): Routine | undefined;
43
+ /** Removes a routine by ID. Returns `true` if it existed and was deleted. */
44
+ delete(id: string): boolean;
45
+ /** Returns id + name + description for all routines, for system prompt injection. */
46
+ getSummaries(): RoutineSummary[];
47
+ /** Writes data to a `.tmp` file then renames it into place for crash-safe persistence. */
48
+ private atomicWrite;
49
+ }
@@ -0,0 +1,172 @@
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.RoutineStore = void 0;
37
+ const fs = __importStar(require("node:fs"));
38
+ const path = __importStar(require("node:path"));
39
+ const paths_js_1 = require("./paths.js");
40
+ const MAX_ROUTINES = 100;
41
+ const ID_PATTERN = /^[a-z0-9](?:[a-z0-9-]{0,58}[a-z0-9])?$/;
42
+ const RESERVED_NAMES = new Set([
43
+ 'help',
44
+ 'clear',
45
+ 'memory',
46
+ 'scratch',
47
+ 'mcp',
48
+ 'cron',
49
+ 'rag',
50
+ 'facts',
51
+ 'provider',
52
+ 'model',
53
+ 'theme',
54
+ 'options',
55
+ 'update',
56
+ 'exit',
57
+ 'routines',
58
+ 'create-routine',
59
+ ]);
60
+ /**
61
+ * Disk-backed store for named routines (reusable multi-step workflows).
62
+ *
63
+ * Each routine is stored as a separate JSON file under `ROUTINES_DIR`.
64
+ * All writes use atomic rename to prevent partial-read corruption.
65
+ */
66
+ class RoutineStore {
67
+ constructor() {
68
+ fs.mkdirSync(paths_js_1.ROUTINES_DIR, { recursive: true });
69
+ }
70
+ /**
71
+ * Validates a routine ID.
72
+ * @returns An error message if invalid, or `null` if valid.
73
+ */
74
+ validateId(id) {
75
+ if (!id)
76
+ return 'Routine ID cannot be empty.';
77
+ if (!ID_PATTERN.test(id))
78
+ return 'Routine ID must be 1–60 characters, lowercase alphanumeric and hyphens, cannot start or end with a hyphen.';
79
+ if (RESERVED_NAMES.has(id))
80
+ return `"${id}" is a reserved command name.`;
81
+ return null;
82
+ }
83
+ /** Returns all routines sorted alphabetically by ID, skipping corrupt files. */
84
+ list() {
85
+ if (!fs.existsSync(paths_js_1.ROUTINES_DIR))
86
+ return [];
87
+ const files = fs.readdirSync(paths_js_1.ROUTINES_DIR).filter((f) => f.endsWith('.json'));
88
+ const routines = [];
89
+ for (const file of files) {
90
+ try {
91
+ const raw = fs.readFileSync(path.join(paths_js_1.ROUTINES_DIR, file), 'utf-8');
92
+ routines.push(JSON.parse(raw));
93
+ }
94
+ catch {
95
+ // skip corrupt files
96
+ }
97
+ }
98
+ return routines.sort((a, b) => a.id.localeCompare(b.id));
99
+ }
100
+ /** Returns a single routine by ID, or `undefined` if not found. */
101
+ get(id) {
102
+ const filePath = path.join(paths_js_1.ROUTINES_DIR, `${id}.json`);
103
+ if (!fs.existsSync(filePath))
104
+ return undefined;
105
+ try {
106
+ return JSON.parse(fs.readFileSync(filePath, 'utf-8'));
107
+ }
108
+ catch {
109
+ return undefined;
110
+ }
111
+ }
112
+ /** Returns true if a routine with the given ID exists on disk. */
113
+ exists(id) {
114
+ return fs.existsSync(path.join(paths_js_1.ROUTINES_DIR, `${id}.json`));
115
+ }
116
+ /**
117
+ * Creates a new routine and persists it.
118
+ * @throws {Error} If the ID is invalid, reserved, already taken, or the max limit is reached.
119
+ */
120
+ create(id, name, description, content) {
121
+ const idError = this.validateId(id);
122
+ if (idError)
123
+ throw new Error(idError);
124
+ if (this.exists(id))
125
+ throw new Error(`Routine "${id}" already exists.`);
126
+ const count = this.list().length;
127
+ if (count >= MAX_ROUTINES)
128
+ throw new Error(`Maximum of ${MAX_ROUTINES} routines reached.`);
129
+ const now = new Date().toISOString();
130
+ const routine = { id, name, description, content, createdAt: now, updatedAt: now };
131
+ this.atomicWrite(path.join(paths_js_1.ROUTINES_DIR, `${id}.json`), JSON.stringify(routine, null, 2));
132
+ return routine;
133
+ }
134
+ /**
135
+ * Updates an existing routine with partial fields.
136
+ * @returns The updated routine, or `undefined` if not found.
137
+ */
138
+ update(id, updates) {
139
+ const routine = this.get(id);
140
+ if (!routine)
141
+ return undefined;
142
+ if (updates.name !== undefined)
143
+ routine.name = updates.name;
144
+ if (updates.description !== undefined)
145
+ routine.description = updates.description;
146
+ if (updates.content !== undefined)
147
+ routine.content = updates.content;
148
+ routine.updatedAt = new Date().toISOString();
149
+ this.atomicWrite(path.join(paths_js_1.ROUTINES_DIR, `${id}.json`), JSON.stringify(routine, null, 2));
150
+ return routine;
151
+ }
152
+ /** Removes a routine by ID. Returns `true` if it existed and was deleted. */
153
+ delete(id) {
154
+ const filePath = path.join(paths_js_1.ROUTINES_DIR, `${id}.json`);
155
+ if (!fs.existsSync(filePath))
156
+ return false;
157
+ fs.unlinkSync(filePath);
158
+ return true;
159
+ }
160
+ /** Returns id + name + description for all routines, for system prompt injection. */
161
+ getSummaries() {
162
+ return this.list().map(({ id, name, description }) => ({ id, name, description }));
163
+ }
164
+ /** Writes data to a `.tmp` file then renames it into place for crash-safe persistence. */
165
+ atomicWrite(filePath, data) {
166
+ const tmp = filePath + '.tmp';
167
+ fs.writeFileSync(tmp, data, 'utf-8');
168
+ fs.renameSync(tmp, filePath);
169
+ }
170
+ }
171
+ exports.RoutineStore = RoutineStore;
172
+ //# sourceMappingURL=routines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routines.js","sourceRoot":"","sources":["../src/routines.ts"],"names":[],"mappings":"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"}
package/dist/setup.d.ts CHANGED
@@ -1 +1,6 @@
1
+ /**
2
+ * Run the interactive first-time setup wizard if no API keys are configured.
3
+ * Prompts the user to select a provider and enter an API key, then persists both.
4
+ * @returns `true` if setup ran (keys were missing), `false` if skipped (keys already present).
5
+ */
1
6
  export declare function runFirstTimeSetup(): Promise<boolean>;
package/dist/setup.js CHANGED
@@ -37,12 +37,18 @@ exports.runFirstTimeSetup = runFirstTimeSetup;
37
37
  const readline = __importStar(require("node:readline"));
38
38
  const config_js_1 = require("./config.js");
39
39
  const theme_js_1 = require("./theme.js");
40
+ const paths_js_1 = require("./paths.js");
40
41
  const PROVIDERS = Object.keys(config_js_1.PROVIDER_ENV_VARS);
41
42
  function ask(rl, prompt) {
42
43
  return new Promise((resolve) => {
43
44
  rl.question(prompt, (answer) => resolve(answer.trim()));
44
45
  });
45
46
  }
47
+ /**
48
+ * Run the interactive first-time setup wizard if no API keys are configured.
49
+ * Prompts the user to select a provider and enter an API key, then persists both.
50
+ * @returns `true` if setup ran (keys were missing), `false` if skipped (keys already present).
51
+ */
46
52
  async function runFirstTimeSetup() {
47
53
  const statuses = (0, config_js_1.getProviderKeyStatus)();
48
54
  if (statuses.some((s) => s.hasKey)) {
@@ -57,7 +63,7 @@ async function runFirstTimeSetup() {
57
63
  console.log(t.accentBold('\n Welcome to Bernard'));
58
64
  console.log(t.muted(' Local CLI AI Agent with multi-provider support\n'));
59
65
  console.log(t.text(' It looks like this is your first time running Bernard.'));
60
- console.log(t.text(' Let\'s get you set up with an AI provider.\n'));
66
+ console.log(t.text(" Let's get you set up with an AI provider.\n"));
61
67
  console.log(t.text(' Available providers:'));
62
68
  for (let i = 0; i < PROVIDERS.length; i++) {
63
69
  console.log(t.text(` ${i + 1}. ${PROVIDERS[i]}`));
@@ -76,7 +82,7 @@ async function runFirstTimeSetup() {
76
82
  }
77
83
  const envVar = config_js_1.PROVIDER_ENV_VARS[provider];
78
84
  console.log(t.muted(`\n You'll need an API key for ${provider}.`));
79
- console.log(t.muted(' (This will be saved securely to ~/.bernard/keys.json)\n'));
85
+ console.log(t.muted(` (This will be saved securely to ${paths_js_1.KEYS_PATH})\n`));
80
86
  let key;
81
87
  while (!key) {
82
88
  const answer = await ask(rl, ` ${envVar}: `);
package/dist/setup.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
package/dist/theme.d.ts CHANGED
@@ -1,16 +1,38 @@
1
+ /** A function that applies a chalk color/style to a string and returns the styled result. */
1
2
  type ColorFn = (text: string) => string;
3
+ /**
4
+ * Defines the color palette and styling functions for a terminal theme.
5
+ *
6
+ * Each theme provides semantic color functions for different UI elements
7
+ * and raw ANSI escape codes for use in readline prompts where chalk cannot be used.
8
+ */
2
9
  export interface Theme {
10
+ /** Human-readable display name for the theme. */
3
11
  name: string;
12
+ /** Primary accent color for branding and highlights. */
4
13
  accent: ColorFn;
14
+ /** Bold variant of the primary accent color. */
5
15
  accentBold: ColorFn;
16
+ /** Subdued color for secondary or less important text. */
6
17
  muted: ColorFn;
18
+ /** Default color for regular body text. */
7
19
  text: ColorFn;
20
+ /** Color for tool invocation labels. */
8
21
  toolCall: ColorFn;
22
+ /** Color for error messages. */
9
23
  error: ColorFn;
24
+ /** Color for success indicators. */
10
25
  success: ColorFn;
26
+ /** Dimmed color for de-emphasized content like conversation replays. */
11
27
  dim: ColorFn;
28
+ /** Color for warning messages. */
12
29
  warning: ColorFn;
30
+ /** Rotating palette of colors assigned to sub-agent prefixes. */
13
31
  prefixColors: readonly ColorFn[];
32
+ /**
33
+ * Raw ANSI escape sequences for contexts where chalk is unavailable
34
+ * (e.g. readline prompt strings).
35
+ */
14
36
  ansi: {
15
37
  prompt: string;
16
38
  hintCmd: string;
@@ -19,10 +41,29 @@ export interface Theme {
19
41
  reset: string;
20
42
  };
21
43
  }
44
+ /**
45
+ * Registry of all available color themes, keyed by slug.
46
+ *
47
+ * Includes: `bernard` (default orange), `ocean`, `forest`, `synthwave`,
48
+ * `high-contrast`, and `colorblind` (IBM-safe palette).
49
+ */
22
50
  export declare const THEMES: Record<string, Theme>;
51
+ /** Key of the theme used when no user preference is set. */
23
52
  export declare const DEFAULT_THEME = "bernard";
53
+ /**
54
+ * Returns the currently active {@link Theme} object.
55
+ * @returns The active theme, defaulting to the `bernard` theme at startup.
56
+ */
24
57
  export declare function getTheme(): Theme;
58
+ /**
59
+ * Switches the active theme by its slug key.
60
+ *
61
+ * @param key - Theme slug (e.g. `"ocean"`, `"forest"`).
62
+ * @returns `true` if the theme was found and activated, `false` if the key is unknown.
63
+ */
25
64
  export declare function setTheme(key: string): boolean;
65
+ /** Returns an array of all registered theme slug keys. */
26
66
  export declare function getThemeKeys(): string[];
67
+ /** Returns the slug key of the currently active theme (e.g. `"bernard"`). */
27
68
  export declare function getActiveThemeKey(): string;
28
69
  export {};
package/dist/theme.js CHANGED
@@ -9,7 +9,14 @@ exports.setTheme = setTheme;
9
9
  exports.getThemeKeys = getThemeKeys;
10
10
  exports.getActiveThemeKey = getActiveThemeKey;
11
11
  const chalk_1 = __importDefault(require("chalk"));
12
+ /**
13
+ * Registry of all available color themes, keyed by slug.
14
+ *
15
+ * Includes: `bernard` (default orange), `ocean`, `forest`, `synthwave`,
16
+ * `high-contrast`, and `colorblind` (IBM-safe palette).
17
+ */
12
18
  exports.THEMES = {
19
+ /** Default theme with warm orange accents. */
13
20
  bernard: {
14
21
  name: 'Bernard',
15
22
  accent: chalk_1.default.hex('#f97316'),
@@ -30,6 +37,7 @@ exports.THEMES = {
30
37
  reset: '\x1b[0m',
31
38
  },
32
39
  },
40
+ /** Cool blue-cyan palette inspired by the sea. */
33
41
  ocean: {
34
42
  name: 'Ocean',
35
43
  accent: chalk_1.default.hex('#06b6d4'),
@@ -41,7 +49,12 @@ exports.THEMES = {
41
49
  success: chalk_1.default.hex('#34d399'),
42
50
  dim: chalk_1.default.dim,
43
51
  warning: chalk_1.default.hex('#fbbf24'),
44
- prefixColors: [chalk_1.default.hex('#38bdf8'), chalk_1.default.hex('#818cf8'), chalk_1.default.hex('#34d399'), chalk_1.default.hex('#06b6d4')],
52
+ prefixColors: [
53
+ chalk_1.default.hex('#38bdf8'),
54
+ chalk_1.default.hex('#818cf8'),
55
+ chalk_1.default.hex('#34d399'),
56
+ chalk_1.default.hex('#06b6d4'),
57
+ ],
45
58
  ansi: {
46
59
  prompt: '\x1b[38;2;6;182;212m',
47
60
  hintCmd: '\x1b[38;2;226;232;240m',
@@ -50,6 +63,7 @@ exports.THEMES = {
50
63
  reset: '\x1b[0m',
51
64
  },
52
65
  },
66
+ /** Earthy green palette for a natural look. */
53
67
  forest: {
54
68
  name: 'Forest',
55
69
  accent: chalk_1.default.hex('#22c55e'),
@@ -61,7 +75,12 @@ exports.THEMES = {
61
75
  success: chalk_1.default.hex('#4ade80'),
62
76
  dim: chalk_1.default.dim,
63
77
  warning: chalk_1.default.hex('#facc15'),
64
- prefixColors: [chalk_1.default.hex('#4ade80'), chalk_1.default.hex('#a78bfa'), chalk_1.default.hex('#fbbf24'), chalk_1.default.hex('#22d3ee')],
78
+ prefixColors: [
79
+ chalk_1.default.hex('#4ade80'),
80
+ chalk_1.default.hex('#a78bfa'),
81
+ chalk_1.default.hex('#fbbf24'),
82
+ chalk_1.default.hex('#22d3ee'),
83
+ ],
65
84
  ansi: {
66
85
  prompt: '\x1b[38;2;34;197;94m',
67
86
  hintCmd: '\x1b[38;2;229;229;229m',
@@ -70,6 +89,7 @@ exports.THEMES = {
70
89
  reset: '\x1b[0m',
71
90
  },
72
91
  },
92
+ /** Retro neon purple and pink palette. */
73
93
  synthwave: {
74
94
  name: 'Synthwave',
75
95
  accent: chalk_1.default.hex('#c084fc'),
@@ -81,7 +101,12 @@ exports.THEMES = {
81
101
  success: chalk_1.default.hex('#34d399'),
82
102
  dim: chalk_1.default.dim,
83
103
  warning: chalk_1.default.hex('#fde68a'),
84
- prefixColors: [chalk_1.default.hex('#f472b6'), chalk_1.default.hex('#818cf8'), chalk_1.default.hex('#22d3ee'), chalk_1.default.hex('#c084fc')],
104
+ prefixColors: [
105
+ chalk_1.default.hex('#f472b6'),
106
+ chalk_1.default.hex('#818cf8'),
107
+ chalk_1.default.hex('#22d3ee'),
108
+ chalk_1.default.hex('#c084fc'),
109
+ ],
85
110
  ansi: {
86
111
  prompt: '\x1b[38;2;192;132;252m',
87
112
  hintCmd: '\x1b[38;2;240;171;252m',
@@ -90,6 +115,7 @@ exports.THEMES = {
90
115
  reset: '\x1b[0m',
91
116
  },
92
117
  },
118
+ /** Maximum contrast using bold bright whites and system colors. */
93
119
  'high-contrast': {
94
120
  name: 'High Contrast',
95
121
  accent: chalk_1.default.bold.white,
@@ -101,7 +127,12 @@ exports.THEMES = {
101
127
  success: chalk_1.default.bold.greenBright,
102
128
  dim: chalk_1.default.white,
103
129
  warning: chalk_1.default.bold.yellowBright,
104
- prefixColors: [chalk_1.default.bold.magentaBright, chalk_1.default.bold.cyanBright, chalk_1.default.bold.greenBright, chalk_1.default.bold.yellowBright],
130
+ prefixColors: [
131
+ chalk_1.default.bold.magentaBright,
132
+ chalk_1.default.bold.cyanBright,
133
+ chalk_1.default.bold.greenBright,
134
+ chalk_1.default.bold.yellowBright,
135
+ ],
105
136
  ansi: {
106
137
  prompt: '\x1b[1;97m',
107
138
  hintCmd: '\x1b[97m',
@@ -110,6 +141,7 @@ exports.THEMES = {
110
141
  reset: '\x1b[0m',
111
142
  },
112
143
  },
144
+ /** Palette using IBM's colorblind-safe color scheme for accessibility. */
113
145
  colorblind: {
114
146
  name: 'Colorblind',
115
147
  accent: chalk_1.default.hex('#648FFF'),
@@ -121,7 +153,12 @@ exports.THEMES = {
121
153
  success: chalk_1.default.hex('#648FFF'),
122
154
  dim: chalk_1.default.dim,
123
155
  warning: chalk_1.default.hex('#FFB000'),
124
- prefixColors: [chalk_1.default.hex('#785EF0'), chalk_1.default.hex('#DC267F'), chalk_1.default.hex('#FFB000'), chalk_1.default.hex('#648FFF')],
156
+ prefixColors: [
157
+ chalk_1.default.hex('#785EF0'),
158
+ chalk_1.default.hex('#DC267F'),
159
+ chalk_1.default.hex('#FFB000'),
160
+ chalk_1.default.hex('#648FFF'),
161
+ ],
125
162
  ansi: {
126
163
  prompt: '\x1b[38;2;100;143;255m',
127
164
  hintCmd: '\x1b[38;2;224;224;224m',
@@ -131,12 +168,23 @@ exports.THEMES = {
131
168
  },
132
169
  },
133
170
  };
171
+ /** Key of the theme used when no user preference is set. */
134
172
  exports.DEFAULT_THEME = 'bernard';
135
173
  let activeThemeKey = exports.DEFAULT_THEME;
136
174
  let activeTheme = exports.THEMES[exports.DEFAULT_THEME];
175
+ /**
176
+ * Returns the currently active {@link Theme} object.
177
+ * @returns The active theme, defaulting to the `bernard` theme at startup.
178
+ */
137
179
  function getTheme() {
138
180
  return activeTheme;
139
181
  }
182
+ /**
183
+ * Switches the active theme by its slug key.
184
+ *
185
+ * @param key - Theme slug (e.g. `"ocean"`, `"forest"`).
186
+ * @returns `true` if the theme was found and activated, `false` if the key is unknown.
187
+ */
140
188
  function setTheme(key) {
141
189
  const theme = exports.THEMES[key];
142
190
  if (!theme)
@@ -145,9 +193,11 @@ function setTheme(key) {
145
193
  activeTheme = theme;
146
194
  return true;
147
195
  }
196
+ /** Returns an array of all registered theme slug keys. */
148
197
  function getThemeKeys() {
149
198
  return Object.keys(exports.THEMES);
150
199
  }
200
+ /** Returns the slug key of the currently active theme (e.g. `"bernard"`). */
151
201
  function getActiveThemeKey() {
152
202
  return activeThemeKey;
153
203
  }
package/dist/theme.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,10 @@
1
1
  import { z } from 'zod';
2
+ /**
3
+ * Creates tools for inspecting and managing cron job execution logs.
4
+ *
5
+ * Includes listing recent runs, viewing full execution traces, aggregate
6
+ * statistics, and log rotation/cleanup.
7
+ */
2
8
  export declare function createCronLogTools(): {
3
9
  cron_logs_list: import("ai").Tool<z.ZodObject<{
4
10
  job_id: z.ZodString;
@@ -5,6 +5,12 @@ const ai_1 = require("ai");
5
5
  const zod_1 = require("zod");
6
6
  const log_store_js_1 = require("../cron/log-store.js");
7
7
  const logger_js_1 = require("../logger.js");
8
+ /**
9
+ * Creates tools for inspecting and managing cron job execution logs.
10
+ *
11
+ * Includes listing recent runs, viewing full execution traces, aggregate
12
+ * statistics, and log rotation/cleanup.
13
+ */
8
14
  function createCronLogTools() {
9
15
  const logStore = new log_store_js_1.CronLogStore();
10
16
  return {
@@ -25,7 +31,7 @@ function createCronLogTools() {
25
31
  return `No more entries (total: ${total}, offset: ${offset}).`;
26
32
  }
27
33
  const total = logStore.getEntryCount(job_id);
28
- const lines = entries.map(e => {
34
+ const lines = entries.map((e) => {
29
35
  const status = e.success ? 'OK' : 'ERR';
30
36
  const dur = `${e.durationMs}ms`;
31
37
  const stepCount = e.steps.length;
@@ -87,7 +93,7 @@ function createCronLogTools() {
87
93
  return `No execution logs found for job "${job_id}".`;
88
94
  // Read all entries for summary (capped at most recent 500)
89
95
  const entries = logStore.getEntries(job_id, 500, 0);
90
- const successes = entries.filter(e => e.success).length;
96
+ const successes = entries.filter((e) => e.success).length;
91
97
  const failures = entries.length - successes;
92
98
  const successRate = ((successes / entries.length) * 100).toFixed(1);
93
99
  const avgDuration = Math.round(entries.reduce((s, e) => s + e.durationMs, 0) / entries.length);
@@ -107,8 +113,15 @@ function createCronLogTools() {
107
113
  description: 'Rotate or delete cron job execution logs. Use "rotate" to keep only the most recent entries, or "delete" to remove all logs for a job.',
108
114
  parameters: zod_1.z.object({
109
115
  job_id: zod_1.z.string().describe('Job ID'),
110
- action: zod_1.z.enum(['rotate', 'delete']).describe('Action: "rotate" keeps recent entries, "delete" removes all'),
111
- keep: zod_1.z.number().min(1).max(10000).default(500).describe('Number of recent entries to keep (only for rotate)'),
116
+ action: zod_1.z
117
+ .enum(['rotate', 'delete'])
118
+ .describe('Action: "rotate" keeps recent entries, "delete" removes all'),
119
+ keep: zod_1.z
120
+ .number()
121
+ .min(1)
122
+ .max(10000)
123
+ .default(500)
124
+ .describe('Number of recent entries to keep (only for rotate)'),
112
125
  }),
113
126
  execute: async ({ job_id, action, keep }) => {
114
127
  (0, logger_js_1.debugLog)('cron_logs_cleanup:execute', { job_id, action, keep });
@@ -1 +1 @@
1
- {"version":3,"file":"cron-logs.js","sourceRoot":"","sources":["../../src/tools/cron-logs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cron-logs.js","sourceRoot":"","sources":["../../src/tools/cron-logs.ts"],"names":[],"mappings":"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"}