cmdr-agent 2.1.1 → 2.2.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 (105) hide show
  1. package/dist/bin/cmdr.js +4 -0
  2. package/dist/bin/cmdr.js.map +1 -1
  3. package/dist/package.json +69 -0
  4. package/dist/src/cli/args.d.ts +4 -0
  5. package/dist/src/cli/args.d.ts.map +1 -1
  6. package/dist/src/cli/args.js +15 -0
  7. package/dist/src/cli/args.js.map +1 -1
  8. package/dist/src/cli/commands.js +20 -0
  9. package/dist/src/cli/commands.js.map +1 -1
  10. package/dist/src/cli/ink/App.d.ts.map +1 -1
  11. package/dist/src/cli/ink/App.js +15 -0
  12. package/dist/src/cli/ink/App.js.map +1 -1
  13. package/dist/src/cli/repl.d.ts +4 -0
  14. package/dist/src/cli/repl.d.ts.map +1 -1
  15. package/dist/src/cli/repl.js +48 -19
  16. package/dist/src/cli/repl.js.map +1 -1
  17. package/dist/src/core/agent-runner.d.ts +5 -0
  18. package/dist/src/core/agent-runner.d.ts.map +1 -1
  19. package/dist/src/core/agent-runner.js +12 -2
  20. package/dist/src/core/agent-runner.js.map +1 -1
  21. package/dist/src/core/agent.d.ts +2 -1
  22. package/dist/src/core/agent.d.ts.map +1 -1
  23. package/dist/src/core/agent.js +5 -1
  24. package/dist/src/core/agent.js.map +1 -1
  25. package/dist/src/core/content-replacement.d.ts +44 -0
  26. package/dist/src/core/content-replacement.d.ts.map +1 -0
  27. package/dist/src/core/content-replacement.js +67 -0
  28. package/dist/src/core/content-replacement.js.map +1 -0
  29. package/dist/src/core/event-bus.d.ts +129 -0
  30. package/dist/src/core/event-bus.d.ts.map +1 -0
  31. package/dist/src/core/event-bus.js +103 -0
  32. package/dist/src/core/event-bus.js.map +1 -0
  33. package/dist/src/core/orchestrator.d.ts +17 -1
  34. package/dist/src/core/orchestrator.d.ts.map +1 -1
  35. package/dist/src/core/orchestrator.js +95 -1
  36. package/dist/src/core/orchestrator.js.map +1 -1
  37. package/dist/src/core/permissions.d.ts +31 -3
  38. package/dist/src/core/permissions.d.ts.map +1 -1
  39. package/dist/src/core/permissions.js +122 -11
  40. package/dist/src/core/permissions.js.map +1 -1
  41. package/dist/src/core/presets.d.ts.map +1 -1
  42. package/dist/src/core/presets.js +1 -0
  43. package/dist/src/core/presets.js.map +1 -1
  44. package/dist/src/core/types.d.ts +17 -1
  45. package/dist/src/core/types.d.ts.map +1 -1
  46. package/dist/src/llm/anthropic.d.ts +27 -0
  47. package/dist/src/llm/anthropic.d.ts.map +1 -0
  48. package/dist/src/llm/anthropic.js +269 -0
  49. package/dist/src/llm/anthropic.js.map +1 -0
  50. package/dist/src/llm/ollama.d.ts.map +1 -1
  51. package/dist/src/llm/ollama.js +16 -4
  52. package/dist/src/llm/ollama.js.map +1 -1
  53. package/dist/src/llm/openai.d.ts +25 -0
  54. package/dist/src/llm/openai.d.ts.map +1 -0
  55. package/dist/src/llm/openai.js +299 -0
  56. package/dist/src/llm/openai.js.map +1 -0
  57. package/dist/src/llm/provider-factory.d.ts +35 -0
  58. package/dist/src/llm/provider-factory.d.ts.map +1 -0
  59. package/dist/src/llm/provider-factory.js +73 -0
  60. package/dist/src/llm/provider-factory.js.map +1 -0
  61. package/dist/src/memory/consolidation.d.ts +37 -0
  62. package/dist/src/memory/consolidation.d.ts.map +1 -0
  63. package/dist/src/memory/consolidation.js +148 -0
  64. package/dist/src/memory/consolidation.js.map +1 -0
  65. package/dist/src/memory/memory-manager.d.ts +39 -0
  66. package/dist/src/memory/memory-manager.d.ts.map +1 -0
  67. package/dist/src/memory/memory-manager.js +96 -0
  68. package/dist/src/memory/memory-manager.js.map +1 -0
  69. package/dist/src/plugins/mcp-client.d.ts +14 -5
  70. package/dist/src/plugins/mcp-client.d.ts.map +1 -1
  71. package/dist/src/plugins/mcp-client.js +197 -43
  72. package/dist/src/plugins/mcp-client.js.map +1 -1
  73. package/dist/src/scheduling/task-scheduler.d.ts +51 -0
  74. package/dist/src/scheduling/task-scheduler.d.ts.map +1 -0
  75. package/dist/src/scheduling/task-scheduler.js +127 -0
  76. package/dist/src/scheduling/task-scheduler.js.map +1 -0
  77. package/dist/src/session/prompt-builder.d.ts +6 -0
  78. package/dist/src/session/prompt-builder.d.ts.map +1 -1
  79. package/dist/src/session/prompt-builder.js +21 -2
  80. package/dist/src/session/prompt-builder.js.map +1 -1
  81. package/dist/src/session/prompt-cache.d.ts +33 -0
  82. package/dist/src/session/prompt-cache.d.ts.map +1 -0
  83. package/dist/src/session/prompt-cache.js +54 -0
  84. package/dist/src/session/prompt-cache.js.map +1 -0
  85. package/dist/src/tools/built-in/diagnostics.d.ts +12 -0
  86. package/dist/src/tools/built-in/diagnostics.d.ts.map +1 -0
  87. package/dist/src/tools/built-in/diagnostics.js +119 -0
  88. package/dist/src/tools/built-in/diagnostics.js.map +1 -0
  89. package/dist/src/tools/built-in/git-worktree.d.ts +13 -0
  90. package/dist/src/tools/built-in/git-worktree.d.ts.map +1 -0
  91. package/dist/src/tools/built-in/git-worktree.js +75 -0
  92. package/dist/src/tools/built-in/git-worktree.js.map +1 -0
  93. package/dist/src/tools/built-in/index.d.ts +5 -1
  94. package/dist/src/tools/built-in/index.d.ts.map +1 -1
  95. package/dist/src/tools/built-in/index.js +8 -2
  96. package/dist/src/tools/built-in/index.js.map +1 -1
  97. package/dist/src/tools/built-in/memory.d.ts +15 -0
  98. package/dist/src/tools/built-in/memory.d.ts.map +1 -0
  99. package/dist/src/tools/built-in/memory.js +58 -0
  100. package/dist/src/tools/built-in/memory.js.map +1 -0
  101. package/dist/src/tools/built-in/notebook.d.ts +22 -0
  102. package/dist/src/tools/built-in/notebook.d.ts.map +1 -0
  103. package/dist/src/tools/built-in/notebook.js +207 -0
  104. package/dist/src/tools/built-in/notebook.js.map +1 -0
  105. package/package.json +2 -2
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Built-in notebook tool — read, write, and execute Jupyter notebook cells.
3
+ *
4
+ * Works with .ipynb files directly, parsing the notebook JSON format.
5
+ * Execution uses `jupyter nbconvert --execute` or `jupyter run` when available.
6
+ */
7
+ import { readFile, writeFile } from 'node:fs/promises';
8
+ import { spawn } from 'node:child_process';
9
+ import { z } from 'zod';
10
+ import { defineTool } from '../registry.js';
11
+ function formatCell(cell, index) {
12
+ const type = cell.cell_type.toUpperCase();
13
+ const source = cell.source.join('');
14
+ const exec = cell.execution_count != null ? ` [${cell.execution_count}]` : '';
15
+ let output = `--- Cell ${index + 1} (${type})${exec} ---\n${source}`;
16
+ if (cell.outputs && cell.outputs.length > 0) {
17
+ const outputTexts = cell.outputs.map((o) => {
18
+ if (o.text)
19
+ return (Array.isArray(o.text) ? o.text.join('') : o.text);
20
+ if (o.data?.['text/plain'])
21
+ return Array.isArray(o.data['text/plain']) ? o.data['text/plain'].join('') : o.data['text/plain'];
22
+ if (o.ename)
23
+ return `${o.ename}: ${o.evalue}`;
24
+ return '';
25
+ }).filter(Boolean);
26
+ if (outputTexts.length > 0) {
27
+ output += `\n\n>> Output:\n${outputTexts.join('\n')}`;
28
+ }
29
+ }
30
+ return output;
31
+ }
32
+ export const notebookReadTool = defineTool({
33
+ name: 'notebook_read',
34
+ description: 'Read a Jupyter notebook (.ipynb) file. Returns cell contents with their types and outputs. ' +
35
+ 'Can read specific cells by index or the entire notebook.',
36
+ inputSchema: z.object({
37
+ path: z.string().describe('Path to the .ipynb file.'),
38
+ cell: z.number().optional().describe('0-based cell index to read. Omit to read all cells.'),
39
+ }),
40
+ execute: async (input, context) => {
41
+ const cwd = context.cwd ?? process.cwd();
42
+ const fullPath = input.path.startsWith('/') ? input.path : `${cwd}/${input.path}`;
43
+ try {
44
+ const raw = await readFile(fullPath, 'utf-8');
45
+ const nb = JSON.parse(raw);
46
+ if (input.cell != null) {
47
+ if (input.cell < 0 || input.cell >= nb.cells.length) {
48
+ return { data: `Cell index ${input.cell} out of range (0-${nb.cells.length - 1})`, isError: true };
49
+ }
50
+ return { data: formatCell(nb.cells[input.cell], input.cell) };
51
+ }
52
+ const kernelMeta = nb.metadata?.kernelspec;
53
+ const summary = `Notebook: ${nb.cells.length} cells (${kernelMeta?.display_name ?? 'unknown kernel'})\n\n`;
54
+ const cells = nb.cells.map((c, i) => formatCell(c, i)).join('\n\n');
55
+ return { data: summary + cells };
56
+ }
57
+ catch (err) {
58
+ return { data: `Failed to read notebook: ${err instanceof Error ? err.message : String(err)}`, isError: true };
59
+ }
60
+ },
61
+ });
62
+ export const notebookEditTool = defineTool({
63
+ name: 'notebook_edit',
64
+ description: 'Edit a Jupyter notebook cell. Can replace cell content, insert new cells, or delete cells.',
65
+ inputSchema: z.object({
66
+ path: z.string().describe('Path to the .ipynb file.'),
67
+ action: z.enum(['replace', 'insert', 'delete']).describe('Edit action.'),
68
+ cell: z.number().describe('0-based cell index (for replace/delete) or insertion position (for insert).'),
69
+ content: z.string().optional().describe('New cell content (for replace/insert).'),
70
+ cell_type: z.enum(['code', 'markdown', 'raw']).optional().describe('Cell type for insert (default: code).'),
71
+ }),
72
+ execute: async (input, context) => {
73
+ const cwd = context.cwd ?? process.cwd();
74
+ const fullPath = input.path.startsWith('/') ? input.path : `${cwd}/${input.path}`;
75
+ try {
76
+ const raw = await readFile(fullPath, 'utf-8');
77
+ const nb = JSON.parse(raw);
78
+ switch (input.action) {
79
+ case 'replace': {
80
+ if (input.cell < 0 || input.cell >= nb.cells.length) {
81
+ return { data: `Cell index ${input.cell} out of range`, isError: true };
82
+ }
83
+ if (!input.content)
84
+ return { data: 'content is required for replace', isError: true };
85
+ nb.cells[input.cell].source = input.content.split('\n').map((l, i, arr) => i < arr.length - 1 ? l + '\n' : l);
86
+ nb.cells[input.cell].outputs = [];
87
+ nb.cells[input.cell].execution_count = null;
88
+ break;
89
+ }
90
+ case 'insert': {
91
+ if (input.cell < 0 || input.cell > nb.cells.length) {
92
+ return { data: `Insertion position ${input.cell} out of range`, isError: true };
93
+ }
94
+ const newCell = {
95
+ cell_type: input.cell_type ?? 'code',
96
+ source: (input.content ?? '').split('\n').map((l, i, arr) => i < arr.length - 1 ? l + '\n' : l),
97
+ metadata: {},
98
+ outputs: input.cell_type === 'code' || !input.cell_type ? [] : undefined,
99
+ execution_count: input.cell_type === 'code' || !input.cell_type ? null : undefined,
100
+ };
101
+ nb.cells.splice(input.cell, 0, newCell);
102
+ break;
103
+ }
104
+ case 'delete': {
105
+ if (input.cell < 0 || input.cell >= nb.cells.length) {
106
+ return { data: `Cell index ${input.cell} out of range`, isError: true };
107
+ }
108
+ nb.cells.splice(input.cell, 1);
109
+ break;
110
+ }
111
+ }
112
+ await writeFile(fullPath, JSON.stringify(nb, null, 1) + '\n', 'utf-8');
113
+ return { data: `Notebook updated: ${input.action} cell ${input.cell} (${nb.cells.length} cells total)` };
114
+ }
115
+ catch (err) {
116
+ return { data: `Failed to edit notebook: ${err instanceof Error ? err.message : String(err)}`, isError: true };
117
+ }
118
+ },
119
+ });
120
+ export const notebookRunTool = defineTool({
121
+ name: 'notebook_run',
122
+ description: 'Execute a Jupyter notebook cell or the entire notebook. Requires jupyter to be installed.',
123
+ inputSchema: z.object({
124
+ path: z.string().describe('Path to the .ipynb file.'),
125
+ cell: z.number().optional().describe('0-based cell index to execute. Omit to run entire notebook.'),
126
+ }),
127
+ execute: async (input, context) => {
128
+ const cwd = context.cwd ?? process.cwd();
129
+ const fullPath = input.path.startsWith('/') ? input.path : `${cwd}/${input.path}`;
130
+ if (input.cell != null) {
131
+ // Execute single cell by using jupyter's execute API
132
+ // Read notebook, extract cell, run with python -c, put output back
133
+ try {
134
+ const raw = await readFile(fullPath, 'utf-8');
135
+ const nb = JSON.parse(raw);
136
+ const cell = nb.cells[input.cell];
137
+ if (!cell)
138
+ return { data: `Cell ${input.cell} not found`, isError: true };
139
+ if (cell.cell_type !== 'code')
140
+ return { data: `Cell ${input.cell} is not a code cell`, isError: true };
141
+ const code = cell.source.join('');
142
+ return new Promise((resolve) => {
143
+ const child = spawn('python3', ['-c', code], {
144
+ cwd,
145
+ stdio: ['ignore', 'pipe', 'pipe'],
146
+ });
147
+ const out = [];
148
+ const err = [];
149
+ const timeout = setTimeout(() => {
150
+ child.kill();
151
+ resolve({ data: 'Cell execution timed out after 30s', isError: true });
152
+ }, 30_000);
153
+ child.stdout.on('data', (c) => out.push(c));
154
+ child.stderr.on('data', (c) => err.push(c));
155
+ child.on('close', (exitCode) => {
156
+ clearTimeout(timeout);
157
+ const stdout = Buffer.concat(out).toString('utf-8').trim();
158
+ const stderr = Buffer.concat(err).toString('utf-8').trim();
159
+ if (exitCode === 0) {
160
+ resolve({ data: stdout || '(no output)' });
161
+ }
162
+ else {
163
+ resolve({ data: stderr || stdout || 'Cell execution failed', isError: true });
164
+ }
165
+ });
166
+ child.on('error', (e) => {
167
+ clearTimeout(timeout);
168
+ resolve({ data: `Failed to run cell: ${e.message}`, isError: true });
169
+ });
170
+ });
171
+ }
172
+ catch (err) {
173
+ return { data: `Failed: ${err instanceof Error ? err.message : String(err)}`, isError: true };
174
+ }
175
+ }
176
+ // Execute entire notebook
177
+ return new Promise((resolve) => {
178
+ const child = spawn('jupyter', [
179
+ 'nbconvert', '--to', 'notebook', '--execute',
180
+ '--output', fullPath, fullPath,
181
+ ], { cwd, stdio: ['ignore', 'pipe', 'pipe'] });
182
+ const out = [];
183
+ const err = [];
184
+ const timeout = setTimeout(() => {
185
+ child.kill();
186
+ resolve({ data: 'Notebook execution timed out after 120s', isError: true });
187
+ }, 120_000);
188
+ child.stdout.on('data', (c) => out.push(c));
189
+ child.stderr.on('data', (c) => err.push(c));
190
+ child.on('close', (code) => {
191
+ clearTimeout(timeout);
192
+ if (code === 0) {
193
+ resolve({ data: `Notebook executed successfully.` });
194
+ }
195
+ else {
196
+ const stderr = Buffer.concat(err).toString('utf-8').trim();
197
+ resolve({ data: stderr || 'Notebook execution failed', isError: true });
198
+ }
199
+ });
200
+ child.on('error', (e) => {
201
+ clearTimeout(timeout);
202
+ resolve({ data: `jupyter not found: ${e.message}. Install with: pip install jupyter`, isError: true });
203
+ });
204
+ });
205
+ },
206
+ });
207
+ //# sourceMappingURL=notebook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook.js","sourceRoot":"","sources":["../../../../src/tools/built-in/notebook.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cmdr-agent",
3
- "version": "2.1.1",
3
+ "version": "2.2.0",
4
4
  "description": "Open-source multi-agent coding tool for your terminal. Powered by Ollama.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -10,7 +10,7 @@
10
10
  "types": "dist/index.d.ts",
11
11
  "scripts": {
12
12
  "build": "tsc",
13
- "postbuild": "chmod +x dist/bin/cmdr.js",
13
+ "postbuild": "cp package.json dist/package.json && chmod +x dist/bin/cmdr.js",
14
14
  "dev": "tsc --watch",
15
15
  "test": "vitest run",
16
16
  "test:watch": "vitest",