developer-ai 1.1.1 → 1.1.2

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 (40) hide show
  1. package/dist/core/agent.d.ts.map +1 -1
  2. package/dist/core/agent.js +14 -2
  3. package/dist/core/agent.js.map +1 -1
  4. package/dist/core/system-prompt.d.ts.map +1 -1
  5. package/dist/core/system-prompt.js +33 -8
  6. package/dist/core/system-prompt.js.map +1 -1
  7. package/dist/tools/git-commit.d.ts +7 -0
  8. package/dist/tools/git-commit.d.ts.map +1 -0
  9. package/dist/tools/git-commit.js +84 -0
  10. package/dist/tools/git-commit.js.map +1 -0
  11. package/dist/tools/git-diff.d.ts +6 -0
  12. package/dist/tools/git-diff.d.ts.map +1 -0
  13. package/dist/tools/git-diff.js +84 -0
  14. package/dist/tools/git-diff.js.map +1 -0
  15. package/dist/tools/git-status.d.ts +7 -0
  16. package/dist/tools/git-status.d.ts.map +1 -0
  17. package/dist/tools/git-status.js +70 -0
  18. package/dist/tools/git-status.js.map +1 -0
  19. package/dist/tools/index.d.ts.map +1 -1
  20. package/dist/tools/index.js +17 -0
  21. package/dist/tools/index.js.map +1 -1
  22. package/dist/tools/project-detect.d.ts +8 -0
  23. package/dist/tools/project-detect.d.ts.map +1 -0
  24. package/dist/tools/project-detect.js +201 -0
  25. package/dist/tools/project-detect.js.map +1 -0
  26. package/dist/tools/read-file.d.ts.map +1 -1
  27. package/dist/tools/read-file.js +27 -3
  28. package/dist/tools/read-file.js.map +1 -1
  29. package/dist/tools/run-command.d.ts.map +1 -1
  30. package/dist/tools/run-command.js +29 -8
  31. package/dist/tools/run-command.js.map +1 -1
  32. package/dist/tools/stat-file.d.ts +7 -0
  33. package/dist/tools/stat-file.d.ts.map +1 -0
  34. package/dist/tools/stat-file.js +96 -0
  35. package/dist/tools/stat-file.js.map +1 -0
  36. package/dist/tools/test-run.d.ts +7 -0
  37. package/dist/tools/test-run.d.ts.map +1 -0
  38. package/dist/tools/test-run.js +181 -0
  39. package/dist/tools/test-run.js.map +1 -0
  40. package/package.json +1 -1
@@ -0,0 +1,181 @@
1
+ import { execSync } from 'node:child_process';
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ import { z } from 'zod';
5
+ import { MAX_OUTPUT_LENGTH } from '../constants.js';
6
+ const schema = z.object({
7
+ command: z.string().optional(),
8
+ filter: z.string().optional(),
9
+ coverage: z.boolean().optional().default(false),
10
+ });
11
+ /** Auto-detect the test command for common project types. */
12
+ function detectTestCommand(root) {
13
+ // package.json scripts.test
14
+ const pkgPath = path.join(root, 'package.json');
15
+ if (fs.existsSync(pkgPath)) {
16
+ try {
17
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
18
+ if (pkg.scripts?.test && pkg.scripts.test !== 'echo "Error: no test specified" && exit 1') {
19
+ // Determine package manager
20
+ if (fs.existsSync(path.join(root, 'pnpm-lock.yaml')))
21
+ return 'pnpm test';
22
+ if (fs.existsSync(path.join(root, 'yarn.lock')))
23
+ return 'yarn test';
24
+ if (fs.existsSync(path.join(root, 'bun.lockb')))
25
+ return 'bun test';
26
+ return 'npm test';
27
+ }
28
+ }
29
+ catch { /* ignore */ }
30
+ }
31
+ // Python
32
+ if (fs.existsSync(path.join(root, 'pyproject.toml')) || fs.existsSync(path.join(root, 'pytest.ini'))) {
33
+ return 'python -m pytest -v';
34
+ }
35
+ if (fs.existsSync(path.join(root, 'setup.py'))) {
36
+ return 'python -m pytest -v';
37
+ }
38
+ // Go
39
+ if (fs.existsSync(path.join(root, 'go.mod')))
40
+ return 'go test ./...';
41
+ // Rust
42
+ if (fs.existsSync(path.join(root, 'Cargo.toml')))
43
+ return 'cargo test';
44
+ return null;
45
+ }
46
+ /**
47
+ * Parse structured test failures from common test runner outputs.
48
+ * Returns an array of { file, line, message } objects.
49
+ */
50
+ function parseFailures(output) {
51
+ const failures = [];
52
+ // Jest / Vitest pattern: "● Test Suite > test name" or "FAIL src/file.test.ts"
53
+ const jestFail = /FAIL\s+(.+)/g;
54
+ let m;
55
+ while ((m = jestFail.exec(output)) !== null) {
56
+ failures.push({ file: m[1]?.trim(), message: `FAIL: ${m[1]?.trim()}` });
57
+ }
58
+ // Vitest/Jest assertion errors: "at Object.<anonymous> (src/file.ts:123:45)"
59
+ const stackLine = /at\s+\S+\s+\((.+?):(\d+):\d+\)/g;
60
+ while ((m = stackLine.exec(output)) !== null) {
61
+ failures.push({ file: m[1], line: Number(m[2]), message: `Error at ${m[1]}:${m[2]}` });
62
+ }
63
+ // Pytest pattern: "FAILED tests/test_file.py::test_name"
64
+ const pytestFail = /FAILED\s+(.+?)::(.+)/g;
65
+ while ((m = pytestFail.exec(output)) !== null) {
66
+ failures.push({ file: m[1], message: `FAILED: ${m[1]}::${m[2]}` });
67
+ }
68
+ // Go pattern: "--- FAIL: TestName (0.00s)"
69
+ const goFail = /---\s+FAIL:\s+(\S+)/g;
70
+ while ((m = goFail.exec(output)) !== null) {
71
+ failures.push({ message: `FAIL: ${m[1]}` });
72
+ }
73
+ return failures;
74
+ }
75
+ /**
76
+ * Test runner tool — auto-detects and runs the project's test suite.
77
+ * Parses failures into structured output for the agent to act on.
78
+ */
79
+ export const testRunTool = {
80
+ name: 'test_run',
81
+ description: 'Run the project\'s test suite. Auto-detects the test command (npm test, pytest, go test, cargo test). ' +
82
+ 'Optionally provide a custom command or filter to run specific tests. ' +
83
+ 'Returns structured failure information when tests fail.',
84
+ schema,
85
+ jsonSchema: {
86
+ type: 'object',
87
+ properties: {
88
+ command: {
89
+ type: 'string',
90
+ description: 'Custom test command to run (auto-detected if omitted)',
91
+ },
92
+ filter: {
93
+ type: 'string',
94
+ description: 'Test name filter / pattern to run specific tests',
95
+ },
96
+ coverage: {
97
+ type: 'boolean',
98
+ description: 'Include coverage report if supported (default: false)',
99
+ },
100
+ },
101
+ required: [],
102
+ },
103
+ async execute(input, ctx) {
104
+ const { command: customCmd, filter, coverage } = schema.parse(input);
105
+ let testCmd = customCmd ?? detectTestCommand(ctx.workspaceDir);
106
+ if (!testCmd) {
107
+ return {
108
+ success: false,
109
+ output: '',
110
+ error: 'Could not auto-detect test command. No package.json scripts.test, pytest, go.mod, or Cargo.toml found. ' +
111
+ 'Provide a custom `command` parameter.',
112
+ };
113
+ }
114
+ // Append filter if provided
115
+ if (filter) {
116
+ // Common pattern: append -- --grep or -k or -t depending on runner
117
+ if (testCmd.includes('jest') || testCmd.includes('vitest')) {
118
+ testCmd += ` -- -t "${filter}"`;
119
+ }
120
+ else if (testCmd.includes('pytest')) {
121
+ testCmd += ` -k "${filter}"`;
122
+ }
123
+ else if (testCmd.includes('go test')) {
124
+ testCmd += ` -run "${filter}"`;
125
+ }
126
+ else {
127
+ testCmd += ` ${filter}`;
128
+ }
129
+ }
130
+ // Coverage flag
131
+ if (coverage) {
132
+ if (testCmd.includes('jest') || testCmd.includes('vitest')) {
133
+ testCmd += ' --coverage';
134
+ }
135
+ else if (testCmd.includes('pytest')) {
136
+ testCmd += ' --cov';
137
+ }
138
+ else if (testCmd.includes('go test')) {
139
+ testCmd += ' -cover';
140
+ }
141
+ }
142
+ try {
143
+ const stdout = execSync(testCmd, {
144
+ cwd: ctx.workspaceDir,
145
+ encoding: 'utf-8',
146
+ timeout: 120_000, // Tests can take a while
147
+ maxBuffer: 4 * 1024 * 1024,
148
+ stdio: ['pipe', 'pipe', 'pipe'],
149
+ env: { ...process.env, FORCE_COLOR: '0', CI: 'true' },
150
+ });
151
+ return {
152
+ success: true,
153
+ output: `✅ Tests passed.\n\n${stdout.slice(0, MAX_OUTPUT_LENGTH)}`,
154
+ };
155
+ }
156
+ catch (err) {
157
+ const e = err;
158
+ const combined = `${e.stdout ?? ''}\n${e.stderr ?? ''}`.trim();
159
+ const truncated = combined.slice(0, MAX_OUTPUT_LENGTH);
160
+ // Parse structured failures
161
+ const failures = parseFailures(combined);
162
+ let failureSummary = '';
163
+ if (failures.length > 0) {
164
+ failureSummary = '\n\n📋 Parsed failures:\n' +
165
+ failures
166
+ .slice(0, 20) // cap at 20 failures
167
+ .map((f, i) => {
168
+ const loc = f.file ? ` (${f.file}${f.line ? `:${f.line}` : ''})` : '';
169
+ return ` ${i + 1}. ${f.message}${loc}`;
170
+ })
171
+ .join('\n');
172
+ }
173
+ return {
174
+ success: false,
175
+ output: truncated + failureSummary,
176
+ error: `Tests failed (exit code ${e.status ?? 1})`,
177
+ };
178
+ }
179
+ },
180
+ };
181
+ //# sourceMappingURL=test-run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-run.js","sourceRoot":"","sources":["../../src/tools/test-run.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "developer-ai",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "A production-grade terminal AI coding assistant. Supports OpenAI and Ollama, MCP servers, web search, and agent skills.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",