cmdr-agent 2.5.5 → 3.0.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 (79) hide show
  1. package/README.md +42 -2
  2. package/dist/bin/cmdr.js +64 -3
  3. package/dist/bin/cmdr.js.map +1 -1
  4. package/dist/package.json +1 -1
  5. package/dist/src/cli/args.d.ts +11 -2
  6. package/dist/src/cli/args.d.ts.map +1 -1
  7. package/dist/src/cli/args.js +49 -8
  8. package/dist/src/cli/args.js.map +1 -1
  9. package/dist/src/cli/buddy.d.ts +49 -0
  10. package/dist/src/cli/buddy.d.ts.map +1 -0
  11. package/dist/src/cli/buddy.js +187 -0
  12. package/dist/src/cli/buddy.js.map +1 -0
  13. package/dist/src/cli/commands.js +105 -11
  14. package/dist/src/cli/commands.js.map +1 -1
  15. package/dist/src/cli/daemon.d.ts +45 -0
  16. package/dist/src/cli/daemon.d.ts.map +1 -0
  17. package/dist/src/cli/daemon.js +157 -0
  18. package/dist/src/cli/daemon.js.map +1 -0
  19. package/dist/src/cli/ink/App.d.ts.map +1 -1
  20. package/dist/src/cli/ink/App.js +257 -1
  21. package/dist/src/cli/ink/App.js.map +1 -1
  22. package/dist/src/cli/repl.d.ts +5 -3
  23. package/dist/src/cli/repl.d.ts.map +1 -1
  24. package/dist/src/cli/repl.js +72 -20
  25. package/dist/src/cli/repl.js.map +1 -1
  26. package/dist/src/core/agent.d.ts +2 -0
  27. package/dist/src/core/agent.d.ts.map +1 -1
  28. package/dist/src/core/agent.js +13 -0
  29. package/dist/src/core/agent.js.map +1 -1
  30. package/dist/src/core/types.d.ts +16 -1
  31. package/dist/src/core/types.d.ts.map +1 -1
  32. package/dist/src/core/types.js +6 -0
  33. package/dist/src/core/types.js.map +1 -1
  34. package/dist/src/index.d.ts +13 -1
  35. package/dist/src/index.d.ts.map +1 -1
  36. package/dist/src/index.js +12 -0
  37. package/dist/src/index.js.map +1 -1
  38. package/dist/src/llm/anthropic.d.ts.map +1 -1
  39. package/dist/src/llm/anthropic.js +11 -0
  40. package/dist/src/llm/anthropic.js.map +1 -1
  41. package/dist/src/llm/ollama.d.ts.map +1 -1
  42. package/dist/src/llm/ollama.js +8 -1
  43. package/dist/src/llm/ollama.js.map +1 -1
  44. package/dist/src/llm/openai.d.ts.map +1 -1
  45. package/dist/src/llm/openai.js +21 -6
  46. package/dist/src/llm/openai.js.map +1 -1
  47. package/dist/src/memory/index-manager.d.ts +65 -0
  48. package/dist/src/memory/index-manager.d.ts.map +1 -0
  49. package/dist/src/memory/index-manager.js +241 -0
  50. package/dist/src/memory/index-manager.js.map +1 -0
  51. package/dist/src/server/index.d.ts +20 -0
  52. package/dist/src/server/index.d.ts.map +1 -0
  53. package/dist/src/server/index.js +281 -0
  54. package/dist/src/server/index.js.map +1 -0
  55. package/dist/src/session/branch-manager.d.ts +39 -0
  56. package/dist/src/session/branch-manager.d.ts.map +1 -0
  57. package/dist/src/session/branch-manager.js +142 -0
  58. package/dist/src/session/branch-manager.js.map +1 -0
  59. package/dist/src/session/checkpoint-manager.d.ts +28 -0
  60. package/dist/src/session/checkpoint-manager.d.ts.map +1 -0
  61. package/dist/src/session/checkpoint-manager.js +96 -0
  62. package/dist/src/session/checkpoint-manager.js.map +1 -0
  63. package/dist/src/tools/built-in/browser.d.ts +32 -0
  64. package/dist/src/tools/built-in/browser.d.ts.map +1 -0
  65. package/dist/src/tools/built-in/browser.js +168 -0
  66. package/dist/src/tools/built-in/browser.js.map +1 -0
  67. package/dist/src/tools/built-in/git-diff.d.ts +1 -0
  68. package/dist/src/tools/built-in/git-diff.d.ts.map +1 -1
  69. package/dist/src/tools/built-in/git-diff.js +7 -2
  70. package/dist/src/tools/built-in/git-diff.js.map +1 -1
  71. package/dist/src/tools/built-in/index.d.ts +7 -1
  72. package/dist/src/tools/built-in/index.d.ts.map +1 -1
  73. package/dist/src/tools/built-in/index.js +19 -1
  74. package/dist/src/tools/built-in/index.js.map +1 -1
  75. package/dist/src/tools/built-in/rag-search.d.ts +12 -0
  76. package/dist/src/tools/built-in/rag-search.d.ts.map +1 -0
  77. package/dist/src/tools/built-in/rag-search.js +37 -0
  78. package/dist/src/tools/built-in/rag-search.js.map +1 -0
  79. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../../src/tools/built-in/browser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AA6CzD,eAAO,MAAM,eAAe;;;EAoB1B,CAAA;AAEF,eAAO,MAAM,qBAAqB;;;EAgBhC,CAAA;AAEF,eAAO,MAAM,gBAAgB;;EAe3B,CAAA;AAEF,eAAO,MAAM,eAAe;;;EAgB1B,CAAA;AAEF,eAAO,MAAM,eAAe;;EAgB1B,CAAA;AAKF,eAAO,MAAM,aAAa,EAAE,cAAc,CAAC,GAAG,CAAC,EAM9C,CAAA;AAED,6CAA6C;AAC7C,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG9D;AAED,+CAA+C;AAC/C,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAUlD"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Browser tools — optional Playwright-based browser automation.
3
+ *
4
+ * These tools are only registered when `--browser` is passed and
5
+ * playwright-core is available. Each tool dynamically imports
6
+ * playwright-core to avoid hard dependency.
7
+ */
8
+ import { z } from 'zod';
9
+ import { defineTool } from '../registry.js';
10
+ /** Dynamically load playwright-core. Returns null if not installed. */
11
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
+ async function loadPlaywright() {
13
+ try {
14
+ // Dynamic import with variable to prevent TS from resolving the module at compile time
15
+ const moduleName = 'playwright-core';
16
+ return await import(/* @vite-ignore */ moduleName);
17
+ }
18
+ catch {
19
+ return null;
20
+ }
21
+ }
22
+ /** Shared browser instance (lazy, singleton per process). */
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+ let browserPromise = null;
25
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
+ async function getBrowser() {
27
+ if (!browserPromise) {
28
+ browserPromise = (async () => {
29
+ const pw = await loadPlaywright();
30
+ if (!pw)
31
+ throw new Error('playwright-core is not installed. Run: npm install -D playwright-core');
32
+ return pw.chromium.launch({ headless: true });
33
+ })();
34
+ }
35
+ return browserPromise;
36
+ }
37
+ /** Shared page (reuses single tab). */
38
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
39
+ let activePage = null;
40
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
+ async function getPage() {
42
+ if (!activePage || activePage.isClosed()) {
43
+ const browser = await getBrowser();
44
+ activePage = await browser.newPage();
45
+ }
46
+ return activePage;
47
+ }
48
+ // ── Tools ───────────────────────────────────────────────────────────
49
+ export const browserOpenTool = defineTool({
50
+ name: 'browser_open',
51
+ description: 'Open a URL in the headless browser. Returns the page title and a text snapshot.',
52
+ inputSchema: z.object({
53
+ url: z.string().describe('The URL to navigate to'),
54
+ waitUntil: z.enum(['load', 'domcontentloaded', 'networkidle']).default('domcontentloaded')
55
+ .describe('When to consider navigation complete'),
56
+ }),
57
+ execute: async (input) => {
58
+ try {
59
+ const page = await getPage();
60
+ await page.goto(input.url, { waitUntil: input.waitUntil, timeout: 30_000 });
61
+ const title = await page.title();
62
+ const text = await page.innerText('body').catch(() => '');
63
+ const truncated = text.slice(0, 8000);
64
+ return { data: `Title: ${title}\n\n${truncated}` };
65
+ }
66
+ catch (err) {
67
+ return { data: `Failed to open ${input.url}: ${err instanceof Error ? err.message : String(err)}`, isError: true };
68
+ }
69
+ },
70
+ });
71
+ export const browserScreenshotTool = defineTool({
72
+ name: 'browser_screenshot',
73
+ description: 'Take a screenshot of the current browser page. Returns the file path of the saved screenshot.',
74
+ inputSchema: z.object({
75
+ path: z.string().default('screenshot.png').describe('File path to save the screenshot'),
76
+ fullPage: z.boolean().default(false).describe('Capture the full scrollable page'),
77
+ }),
78
+ execute: async (input) => {
79
+ try {
80
+ const page = await getPage();
81
+ await page.screenshot({ path: input.path, fullPage: input.fullPage });
82
+ return { data: `Screenshot saved to ${input.path}` };
83
+ }
84
+ catch (err) {
85
+ return { data: `Screenshot failed: ${err instanceof Error ? err.message : String(err)}`, isError: true };
86
+ }
87
+ },
88
+ });
89
+ export const browserClickTool = defineTool({
90
+ name: 'browser_click',
91
+ description: 'Click an element on the current page by CSS selector.',
92
+ inputSchema: z.object({
93
+ selector: z.string().describe('CSS selector of the element to click'),
94
+ }),
95
+ execute: async (input) => {
96
+ try {
97
+ const page = await getPage();
98
+ await page.click(input.selector, { timeout: 10_000 });
99
+ return { data: `Clicked: ${input.selector}` };
100
+ }
101
+ catch (err) {
102
+ return { data: `Click failed on "${input.selector}": ${err instanceof Error ? err.message : String(err)}`, isError: true };
103
+ }
104
+ },
105
+ });
106
+ export const browserFillTool = defineTool({
107
+ name: 'browser_fill',
108
+ description: 'Fill a text input field on the current page.',
109
+ inputSchema: z.object({
110
+ selector: z.string().describe('CSS selector of the input element'),
111
+ value: z.string().describe('Text value to fill'),
112
+ }),
113
+ execute: async (input) => {
114
+ try {
115
+ const page = await getPage();
116
+ await page.fill(input.selector, input.value, { timeout: 10_000 });
117
+ return { data: `Filled "${input.selector}" with value` };
118
+ }
119
+ catch (err) {
120
+ return { data: `Fill failed on "${input.selector}": ${err instanceof Error ? err.message : String(err)}`, isError: true };
121
+ }
122
+ },
123
+ });
124
+ export const browserTextTool = defineTool({
125
+ name: 'browser_text',
126
+ description: 'Extract text content from an element on the current page.',
127
+ inputSchema: z.object({
128
+ selector: z.string().default('body').describe('CSS selector to extract text from'),
129
+ }),
130
+ execute: async (input) => {
131
+ try {
132
+ const page = await getPage();
133
+ const text = await page.innerText(input.selector, { timeout: 10_000 });
134
+ const truncated = text.slice(0, 8000);
135
+ return { data: truncated };
136
+ }
137
+ catch (err) {
138
+ return { data: `Text extraction failed on "${input.selector}": ${err instanceof Error ? err.message : String(err)}`, isError: true };
139
+ }
140
+ },
141
+ });
142
+ // ── Conditional registration ────────────────────────────────────────
143
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
144
+ export const BROWSER_TOOLS = [
145
+ browserOpenTool,
146
+ browserScreenshotTool,
147
+ browserClickTool,
148
+ browserFillTool,
149
+ browserTextTool,
150
+ ];
151
+ /** Check if playwright-core is available. */
152
+ export async function isPlaywrightAvailable() {
153
+ const pw = await loadPlaywright();
154
+ return pw !== null;
155
+ }
156
+ /** Close the browser if open (for cleanup). */
157
+ export async function closeBrowser() {
158
+ if (activePage && !activePage.isClosed()) {
159
+ await activePage.close().catch(() => { });
160
+ activePage = null;
161
+ }
162
+ if (browserPromise) {
163
+ const browser = await browserPromise.catch(() => null);
164
+ await browser?.close().catch(() => { });
165
+ browserPromise = null;
166
+ }
167
+ }
168
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../../src/tools/built-in/browser.ts"],"names":[],"mappings":"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"}
@@ -4,5 +4,6 @@
4
4
  export declare const gitDiffTool: import("../registry.js").ToolDefinition<{
5
5
  path?: string | undefined;
6
6
  staged?: boolean | undefined;
7
+ range?: string | undefined;
7
8
  }>;
8
9
  //# sourceMappingURL=git-diff.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-diff.d.ts","sourceRoot":"","sources":["../../../../src/tools/built-in/git-diff.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,eAAO,MAAM,WAAW;;;EAwCtB,CAAA"}
1
+ {"version":3,"file":"git-diff.d.ts","sourceRoot":"","sources":["../../../../src/tools/built-in/git-diff.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,eAAO,MAAM,WAAW;;;;EA6CtB,CAAA"}
@@ -6,16 +6,21 @@ import { z } from 'zod';
6
6
  import { defineTool } from '../registry.js';
7
7
  export const gitDiffTool = defineTool({
8
8
  name: 'git_diff',
9
- description: 'Show the git diff of the working tree or staged changes. ' +
9
+ description: 'Show the git diff of the working tree, staged changes, or a commit range. ' +
10
10
  'Useful for reviewing changes before committing.',
11
11
  inputSchema: z.object({
12
12
  staged: z.boolean().optional().describe('If true, show staged changes (--cached).'),
13
13
  path: z.string().optional().describe('Limit diff to a specific file or directory.'),
14
+ range: z.string().optional().describe('Commit range (e.g. "HEAD~1..HEAD", "main..feature"). Overrides staged flag.'),
14
15
  }),
15
16
  execute: async (input, context) => {
16
17
  const args = ['diff', '--no-color'];
17
- if (input.staged)
18
+ if (input.range) {
19
+ args.push(input.range);
20
+ }
21
+ else if (input.staged) {
18
22
  args.push('--cached');
23
+ }
19
24
  if (input.path)
20
25
  args.push('--', input.path);
21
26
  const cwd = context.cwd ?? process.cwd();
@@ -1 +1 @@
1
- {"version":3,"file":"git-diff.js","sourceRoot":"","sources":["../../../../src/tools/built-in/git-diff.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,UAAU;IAChB,WAAW,EACT,2DAA2D;QAC3D,iDAAiD;IAEnD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QACnF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;KACpF,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QACnC,IAAI,KAAK,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACvC,IAAI,KAAK,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAE3C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;QAExC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;YAC5E,MAAM,MAAM,GAAa,EAAE,CAAA;YAC3B,MAAM,SAAS,GAAa,EAAE,CAAA;YAE9B,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YACtD,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YAEzD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;oBAC7D,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,cAAc,EAAE,CAAC,CAAA;gBAC7C,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;gBAC9E,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACxB,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YAC/C,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"git-diff.js","sourceRoot":"","sources":["../../../../src/tools/built-in/git-diff.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,13 @@ import { enterPlanModeTool, exitPlanModeTool } from './plan-tools.js';
27
27
  import { mcpListResourcesTool, mcpReadResourceTool } from './mcp-resource-tools.js';
28
28
  import { graphImpactTool, graphQueryTool, graphReviewTool } from './graph-tools.js';
29
29
  import { pdfReportTool } from './pdf-report.js';
30
- export { bashTool, fileReadTool, fileWriteTool, fileEditTool, grepTool, globTool, gitDiffTool, gitLogTool, gitCommitTool, gitBranchTool, gitWorktreeTool, lspDiagnosticsTool, notebookReadTool, notebookEditTool, notebookRunTool, thinkTool, webFetchTool, webSearchTool, askUserTool, memoryReadTool, memoryWriteTool, todoWriteTool, taskCreateTool, taskListTool, taskGetTool, taskStopTool, cronCreateTool, cronListTool, cronDeleteTool, enterPlanModeTool, exitPlanModeTool, mcpListResourcesTool, mcpReadResourceTool, graphImpactTool, graphQueryTool, graphReviewTool, pdfReportTool, };
30
+ import { ragSearchTool } from './rag-search.js';
31
+ export { bashTool, fileReadTool, fileWriteTool, fileEditTool, grepTool, globTool, gitDiffTool, gitLogTool, gitCommitTool, gitBranchTool, gitWorktreeTool, lspDiagnosticsTool, notebookReadTool, notebookEditTool, notebookRunTool, thinkTool, webFetchTool, webSearchTool, askUserTool, memoryReadTool, memoryWriteTool, todoWriteTool, taskCreateTool, taskListTool, taskGetTool, taskStopTool, cronCreateTool, cronListTool, cronDeleteTool, enterPlanModeTool, exitPlanModeTool, mcpListResourcesTool, mcpReadResourceTool, graphImpactTool, graphQueryTool, graphReviewTool, pdfReportTool, ragSearchTool, };
31
32
  export declare const BUILT_IN_TOOLS: ToolDefinition<any>[];
32
33
  export declare function registerBuiltInTools(registry: ToolRegistry): void;
34
+ /**
35
+ * Register browser automation tools (requires --browser flag and playwright-core).
36
+ * Call this separately after registerBuiltInTools when browser mode is enabled.
37
+ */
38
+ export declare function registerBrowserTools(registry: ToolRegistry): Promise<boolean>;
33
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tools/built-in/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACzF,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AACnF,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,OAAO,EACL,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EACnD,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EACzE,eAAe,EAAE,kBAAkB,EACnC,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EACnD,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EACpF,aAAa,EACb,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EACvD,cAAc,EAAE,YAAY,EAAE,cAAc,EAC5C,iBAAiB,EAAE,gBAAgB,EACnC,oBAAoB,EAAE,mBAAmB,EACzC,eAAe,EAAE,cAAc,EAAE,eAAe,EAChD,aAAa,GACd,CAAA;AAGD,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,GAAG,CAAC,EAa/C,CAAA;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAMjE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/tools/built-in/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACzF,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AACnF,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG/C,OAAO,EACL,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EACnD,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EACzE,eAAe,EAAE,kBAAkB,EACnC,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EACnD,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EACpF,aAAa,EACb,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EACvD,cAAc,EAAE,YAAY,EAAE,cAAc,EAC5C,iBAAiB,EAAE,gBAAgB,EACnC,oBAAoB,EAAE,mBAAmB,EACzC,eAAe,EAAE,cAAc,EAAE,eAAe,EAChD,aAAa,EACb,aAAa,GACd,CAAA;AAGD,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,GAAG,CAAC,EAc/C,CAAA;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAMjE;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CASnF"}
@@ -25,7 +25,9 @@ import { enterPlanModeTool, exitPlanModeTool } from './plan-tools.js';
25
25
  import { mcpListResourcesTool, mcpReadResourceTool } from './mcp-resource-tools.js';
26
26
  import { graphImpactTool, graphQueryTool, graphReviewTool } from './graph-tools.js';
27
27
  import { pdfReportTool } from './pdf-report.js';
28
- export { bashTool, fileReadTool, fileWriteTool, fileEditTool, grepTool, globTool, gitDiffTool, gitLogTool, gitCommitTool, gitBranchTool, gitWorktreeTool, lspDiagnosticsTool, notebookReadTool, notebookEditTool, notebookRunTool, thinkTool, webFetchTool, webSearchTool, askUserTool, memoryReadTool, memoryWriteTool, todoWriteTool, taskCreateTool, taskListTool, taskGetTool, taskStopTool, cronCreateTool, cronListTool, cronDeleteTool, enterPlanModeTool, exitPlanModeTool, mcpListResourcesTool, mcpReadResourceTool, graphImpactTool, graphQueryTool, graphReviewTool, pdfReportTool, };
28
+ import { ragSearchTool } from './rag-search.js';
29
+ import { BROWSER_TOOLS, isPlaywrightAvailable } from './browser.js';
30
+ export { bashTool, fileReadTool, fileWriteTool, fileEditTool, grepTool, globTool, gitDiffTool, gitLogTool, gitCommitTool, gitBranchTool, gitWorktreeTool, lspDiagnosticsTool, notebookReadTool, notebookEditTool, notebookRunTool, thinkTool, webFetchTool, webSearchTool, askUserTool, memoryReadTool, memoryWriteTool, todoWriteTool, taskCreateTool, taskListTool, taskGetTool, taskStopTool, cronCreateTool, cronListTool, cronDeleteTool, enterPlanModeTool, exitPlanModeTool, mcpListResourcesTool, mcpReadResourceTool, graphImpactTool, graphQueryTool, graphReviewTool, pdfReportTool, ragSearchTool, };
29
31
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
30
32
  export const BUILT_IN_TOOLS = [
31
33
  bashTool, fileReadTool, fileWriteTool, fileEditTool,
@@ -40,6 +42,7 @@ export const BUILT_IN_TOOLS = [
40
42
  mcpListResourcesTool, mcpReadResourceTool,
41
43
  graphImpactTool, graphQueryTool, graphReviewTool,
42
44
  pdfReportTool,
45
+ ragSearchTool,
43
46
  ];
44
47
  export function registerBuiltInTools(registry) {
45
48
  for (const tool of BUILT_IN_TOOLS) {
@@ -48,4 +51,19 @@ export function registerBuiltInTools(registry) {
48
51
  }
49
52
  }
50
53
  }
54
+ /**
55
+ * Register browser automation tools (requires --browser flag and playwright-core).
56
+ * Call this separately after registerBuiltInTools when browser mode is enabled.
57
+ */
58
+ export async function registerBrowserTools(registry) {
59
+ const available = await isPlaywrightAvailable();
60
+ if (!available)
61
+ return false;
62
+ for (const tool of BROWSER_TOOLS) {
63
+ if (!registry.has(tool.name)) {
64
+ registry.register(tool);
65
+ }
66
+ }
67
+ return true;
68
+ }
51
69
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tools/built-in/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tools/built-in/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * rag_search — semantic search over indexed project documents.
3
+ *
4
+ * Requires prior indexing via /index command.
5
+ */
6
+ import { IndexManager } from '../../memory/index-manager.js';
7
+ export declare function setIndexManager(manager: IndexManager): void;
8
+ export declare const ragSearchTool: import("../registry.js").ToolDefinition<{
9
+ query: string;
10
+ topK?: number | undefined;
11
+ }>;
12
+ //# sourceMappingURL=rag-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rag-search.d.ts","sourceRoot":"","sources":["../../../../src/tools/built-in/rag-search.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAK5D,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAE3D;AAED,eAAO,MAAM,aAAa;;;EA2BxB,CAAA"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * rag_search — semantic search over indexed project documents.
3
+ *
4
+ * Requires prior indexing via /index command.
5
+ */
6
+ import { z } from 'zod';
7
+ import { defineTool } from '../registry.js';
8
+ // Singleton IndexManager — set at startup by the REPL
9
+ let indexManager = null;
10
+ export function setIndexManager(manager) {
11
+ indexManager = manager;
12
+ }
13
+ export const ragSearchTool = defineTool({
14
+ name: 'rag_search',
15
+ description: 'Search indexed project documents using semantic similarity. Returns the most relevant code chunks for a given query. Use /index to build the index first.',
16
+ inputSchema: z.object({
17
+ query: z.string().describe('Natural language search query'),
18
+ topK: z.number().default(5).describe('Number of results to return (default: 5)'),
19
+ }),
20
+ execute: async (input) => {
21
+ if (!indexManager) {
22
+ return { data: 'Index not initialized. Use /index <path> to index files first.', isError: true };
23
+ }
24
+ try {
25
+ const results = await indexManager.search(input.query, input.topK);
26
+ if (results.length === 0) {
27
+ return { data: 'No results found. Make sure files are indexed with /index.' };
28
+ }
29
+ const output = results.map((r, i) => `[${i + 1}] ${r.file}:${r.startLine}-${r.endLine} (score: ${r.score.toFixed(3)})\n${r.text.slice(0, 500)}`).join('\n\n---\n\n');
30
+ return { data: output };
31
+ }
32
+ catch (err) {
33
+ return { data: `Search failed: ${err instanceof Error ? err.message : String(err)}`, isError: true };
34
+ }
35
+ },
36
+ });
37
+ //# sourceMappingURL=rag-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rag-search.js","sourceRoot":"","sources":["../../../../src/tools/built-in/rag-search.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAG3C,sDAAsD;AACtD,IAAI,YAAY,GAAwB,IAAI,CAAA;AAE5C,MAAM,UAAU,eAAe,CAAC,OAAqB;IACnD,YAAY,GAAG,OAAO,CAAA;AACxB,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;IACtC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,2JAA2J;IACxK,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QAC3D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KACjF,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACvB,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,EAAE,IAAI,EAAE,gEAAgE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QAClG,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YAClE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,EAAE,IAAI,EAAE,4DAA4D,EAAE,CAAA;YAC/E,CAAC;YAED,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAClC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAC3G,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;YAErB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,IAAI,EAAE,kBAAkB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QACtG,CAAC;IACH,CAAC;CACF,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cmdr-agent",
3
- "version": "2.5.5",
3
+ "version": "3.0.0",
4
4
  "description": "Open-source multi-agent coding tool for your terminal. Powered by Ollama.",
5
5
  "type": "module",
6
6
  "bin": {