@qelos/aidev 0.5.1 → 0.5.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.
- package/.env.aidev.example +8 -0
- package/README.md +113 -0
- package/dist/cli.js +13 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/accepted.d.ts +7 -2
- package/dist/commands/accepted.d.ts.map +1 -1
- package/dist/commands/accepted.js +17 -2
- package/dist/commands/accepted.js.map +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +13 -0
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/run.d.ts +9 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +187 -20
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/tasks.d.ts +1 -0
- package/dist/commands/tasks.d.ts.map +1 -1
- package/dist/commands/tasks.js +29 -0
- package/dist/commands/tasks.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -0
- package/dist/config.js.map +1 -1
- package/dist/hooks.d.ts +1 -1
- package/dist/hooks.d.ts.map +1 -1
- package/dist/providers/linear.js +1 -1
- package/dist/providers/linear.js.map +1 -1
- package/dist/sessions.d.ts +20 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +171 -0
- package/dist/sessions.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/__tests__/ai-runners.test.d.ts +0 -2
- package/dist/__tests__/ai-runners.test.d.ts.map +0 -1
- package/dist/__tests__/ai-runners.test.js +0 -367
- package/dist/__tests__/ai-runners.test.js.map +0 -1
- package/dist/__tests__/clickup-format.test.d.ts +0 -2
- package/dist/__tests__/clickup-format.test.d.ts.map +0 -1
- package/dist/__tests__/clickup-format.test.js +0 -256
- package/dist/__tests__/clickup-format.test.js.map +0 -1
- package/dist/__tests__/config.test.d.ts +0 -2
- package/dist/__tests__/config.test.d.ts.map +0 -1
- package/dist/__tests__/config.test.js +0 -418
- package/dist/__tests__/config.test.js.map +0 -1
- package/dist/__tests__/git.test.d.ts +0 -2
- package/dist/__tests__/git.test.d.ts.map +0 -1
- package/dist/__tests__/git.test.js +0 -697
- package/dist/__tests__/git.test.js.map +0 -1
- package/dist/__tests__/github.test.d.ts +0 -2
- package/dist/__tests__/github.test.d.ts.map +0 -1
- package/dist/__tests__/github.test.js +0 -273
- package/dist/__tests__/github.test.js.map +0 -1
- package/dist/__tests__/help.test.d.ts +0 -2
- package/dist/__tests__/help.test.d.ts.map +0 -1
- package/dist/__tests__/help.test.js +0 -34
- package/dist/__tests__/help.test.js.map +0 -1
- package/dist/__tests__/hooks.test.d.ts +0 -2
- package/dist/__tests__/hooks.test.d.ts.map +0 -1
- package/dist/__tests__/hooks.test.js +0 -381
- package/dist/__tests__/hooks.test.js.map +0 -1
- package/dist/__tests__/init.test.d.ts +0 -2
- package/dist/__tests__/init.test.d.ts.map +0 -1
- package/dist/__tests__/init.test.js +0 -596
- package/dist/__tests__/init.test.js.map +0 -1
- package/dist/__tests__/local-provider.test.d.ts +0 -2
- package/dist/__tests__/local-provider.test.d.ts.map +0 -1
- package/dist/__tests__/local-provider.test.js +0 -631
- package/dist/__tests__/local-provider.test.js.map +0 -1
- package/dist/__tests__/lockfile.test.d.ts +0 -2
- package/dist/__tests__/lockfile.test.d.ts.map +0 -1
- package/dist/__tests__/lockfile.test.js +0 -144
- package/dist/__tests__/lockfile.test.js.map +0 -1
- package/dist/__tests__/permissions.test.d.ts +0 -2
- package/dist/__tests__/permissions.test.d.ts.map +0 -1
- package/dist/__tests__/permissions.test.js +0 -151
- package/dist/__tests__/permissions.test.js.map +0 -1
- package/dist/__tests__/platform.test.d.ts +0 -2
- package/dist/__tests__/platform.test.d.ts.map +0 -1
- package/dist/__tests__/platform.test.js +0 -329
- package/dist/__tests__/platform.test.js.map +0 -1
- package/dist/__tests__/providers.test.d.ts +0 -2
- package/dist/__tests__/providers.test.d.ts.map +0 -1
- package/dist/__tests__/providers.test.js +0 -925
- package/dist/__tests__/providers.test.js.map +0 -1
- package/dist/__tests__/run.test.d.ts +0 -2
- package/dist/__tests__/run.test.d.ts.map +0 -1
- package/dist/__tests__/run.test.js +0 -767
- package/dist/__tests__/run.test.js.map +0 -1
- package/dist/__tests__/schedule.test.d.ts +0 -2
- package/dist/__tests__/schedule.test.d.ts.map +0 -1
- package/dist/__tests__/schedule.test.js +0 -258
- package/dist/__tests__/schedule.test.js.map +0 -1
|
@@ -1,367 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const node_test_1 = require("node:test");
|
|
7
|
-
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
8
|
-
const node_test_2 = require("node:test");
|
|
9
|
-
const logger_1 = require("../logger");
|
|
10
|
-
const antigravity_1 = require("../ai/antigravity");
|
|
11
|
-
const claude_1 = require("../ai/claude");
|
|
12
|
-
const codex_1 = require("../ai/codex");
|
|
13
|
-
const cursor_1 = require("../ai/cursor");
|
|
14
|
-
const windsurf_1 = require("../ai/windsurf");
|
|
15
|
-
const windsurf_2 = require("../ai/windsurf");
|
|
16
|
-
const index_1 = require("../ai/index");
|
|
17
|
-
const platform_1 = require("../platform");
|
|
18
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
19
|
-
const childProcess = require('node:child_process');
|
|
20
|
-
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
21
|
-
function mockSpawnSync(overrides) {
|
|
22
|
-
return node_test_2.mock.method(childProcess, 'spawnSync', () => ({
|
|
23
|
-
pid: 1,
|
|
24
|
-
output: [],
|
|
25
|
-
stdout: '',
|
|
26
|
-
stderr: '',
|
|
27
|
-
status: 0,
|
|
28
|
-
signal: null,
|
|
29
|
-
error: undefined,
|
|
30
|
-
...overrides,
|
|
31
|
-
}));
|
|
32
|
-
}
|
|
33
|
-
function spyLogger() {
|
|
34
|
-
return {
|
|
35
|
-
info: node_test_2.mock.method(logger_1.logger, 'info', () => { }),
|
|
36
|
-
warn: node_test_2.mock.method(logger_1.logger, 'warn', () => { }),
|
|
37
|
-
debug: node_test_2.mock.method(logger_1.logger, 'debug', () => { }),
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
// ─── ClaudeRunner ─────────────────────────────────────────────────────────────
|
|
41
|
-
(0, node_test_1.describe)('ClaudeRunner – failed tasks', () => {
|
|
42
|
-
(0, node_test_1.beforeEach)(() => node_test_2.mock.restoreAll());
|
|
43
|
-
(0, node_test_1.afterEach)(() => node_test_2.mock.restoreAll());
|
|
44
|
-
(0, node_test_1.it)('returns success=false when claude exits with non-zero status', async () => {
|
|
45
|
-
mockSpawnSync({ status: 1, stdout: '', stderr: 'something went wrong' });
|
|
46
|
-
spyLogger();
|
|
47
|
-
const runner = new claude_1.ClaudeRunner();
|
|
48
|
-
const result = await runner.run('test prompt');
|
|
49
|
-
strict_1.default.equal(result.success, false);
|
|
50
|
-
strict_1.default.equal(result.error, 'something went wrong');
|
|
51
|
-
});
|
|
52
|
-
(0, node_test_1.it)('logs a warning with exit status on failure', async () => {
|
|
53
|
-
mockSpawnSync({ status: 2, stdout: '', stderr: 'fatal error' });
|
|
54
|
-
const spies = spyLogger();
|
|
55
|
-
const runner = new claude_1.ClaudeRunner();
|
|
56
|
-
await runner.run('test prompt');
|
|
57
|
-
const warnCalls = spies.warn.mock.calls.map((c) => c.arguments[0]);
|
|
58
|
-
strict_1.default.ok(warnCalls.some((msg) => msg?.includes('status 2')));
|
|
59
|
-
});
|
|
60
|
-
(0, node_test_1.it)('logs stderr on failure', async () => {
|
|
61
|
-
mockSpawnSync({ status: 1, stdout: '', stderr: 'heap out of memory' });
|
|
62
|
-
const spies = spyLogger();
|
|
63
|
-
const runner = new claude_1.ClaudeRunner();
|
|
64
|
-
await runner.run('test prompt');
|
|
65
|
-
const warnCalls = spies.warn.mock.calls.map((c) => c.arguments[0]);
|
|
66
|
-
strict_1.default.ok(warnCalls.some((msg) => msg?.includes('heap out of memory')));
|
|
67
|
-
});
|
|
68
|
-
(0, node_test_1.it)('logs spawn error when present', async () => {
|
|
69
|
-
mockSpawnSync({ status: null, stdout: '', stderr: '', error: new Error('ENOENT') });
|
|
70
|
-
const spies = spyLogger();
|
|
71
|
-
const runner = new claude_1.ClaudeRunner();
|
|
72
|
-
await runner.run('test prompt');
|
|
73
|
-
const warnCalls = spies.warn.mock.calls.map((c) => c.arguments[0]);
|
|
74
|
-
strict_1.default.ok(warnCalls.some((msg) => msg?.includes('ENOENT')));
|
|
75
|
-
});
|
|
76
|
-
(0, node_test_1.it)('returns empty output on failure', async () => {
|
|
77
|
-
mockSpawnSync({ status: 1, stdout: '', stderr: 'err' });
|
|
78
|
-
spyLogger();
|
|
79
|
-
const runner = new claude_1.ClaudeRunner();
|
|
80
|
-
const result = await runner.run('test prompt');
|
|
81
|
-
strict_1.default.equal(result.output, '');
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
// ─── ClaudeRunner – argv order ────────────────────────────────────────────────
|
|
85
|
-
(0, node_test_1.describe)('ClaudeRunner – argv order', () => {
|
|
86
|
-
(0, node_test_1.beforeEach)(() => node_test_2.mock.restoreAll());
|
|
87
|
-
(0, node_test_1.afterEach)(() => node_test_2.mock.restoreAll());
|
|
88
|
-
(0, node_test_1.it)('first attempt omits --model so default CLI model is used', async () => {
|
|
89
|
-
const argvSnapshots = [];
|
|
90
|
-
node_test_2.mock.method(childProcess, 'spawnSync', (cmd, args) => {
|
|
91
|
-
// On Windows, spawnCommand calls findBin which may invoke where.exe —
|
|
92
|
-
// skip those helper calls and only capture the real CLI invocations.
|
|
93
|
-
const command = cmd;
|
|
94
|
-
if (!command.endsWith('where.exe')) {
|
|
95
|
-
argvSnapshots.push([...args]);
|
|
96
|
-
}
|
|
97
|
-
return {
|
|
98
|
-
pid: 1,
|
|
99
|
-
output: [],
|
|
100
|
-
stdout: 'ok',
|
|
101
|
-
stderr: '',
|
|
102
|
-
status: 0,
|
|
103
|
-
signal: null,
|
|
104
|
-
error: undefined,
|
|
105
|
-
};
|
|
106
|
-
});
|
|
107
|
-
spyLogger();
|
|
108
|
-
await new claude_1.ClaudeRunner().run('fix the bug');
|
|
109
|
-
strict_1.default.equal(argvSnapshots.length, 1);
|
|
110
|
-
const args = argvSnapshots[0];
|
|
111
|
-
const pIdx = args.indexOf('-p');
|
|
112
|
-
strict_1.default.ok(pIdx >= 0, 'expected -p in spawn argv (after any Windows node cli.js prefix)');
|
|
113
|
-
strict_1.default.equal(args[pIdx + 1], 'fix the bug');
|
|
114
|
-
strict_1.default.ok(args.includes('--dangerously-skip-permissions'));
|
|
115
|
-
strict_1.default.ok(!args.includes('--model'));
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
// ─── AntigravityRunner ────────────────────────────────────────────────────────
|
|
119
|
-
(0, node_test_1.describe)('AntigravityRunner', () => {
|
|
120
|
-
(0, node_test_1.it)('isAvailable returns boolean (depends on agy/antigravity in PATH)', () => {
|
|
121
|
-
const runner = new antigravity_1.AntigravityRunner();
|
|
122
|
-
strict_1.default.equal(typeof runner.isAvailable(), 'boolean');
|
|
123
|
-
});
|
|
124
|
-
});
|
|
125
|
-
// ─── CodexRunner ─────────────────────────────────────────────────────────────
|
|
126
|
-
(0, node_test_1.describe)('CodexRunner', () => {
|
|
127
|
-
(0, node_test_1.it)('isAvailable returns boolean (depends on codex CLI in PATH)', () => {
|
|
128
|
-
const runner = new codex_1.CodexRunner();
|
|
129
|
-
strict_1.default.equal(typeof runner.isAvailable(), 'boolean');
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
(0, node_test_1.describe)('AntigravityRunner – failed tasks', () => {
|
|
133
|
-
(0, node_test_1.beforeEach)(() => node_test_2.mock.restoreAll());
|
|
134
|
-
(0, node_test_1.afterEach)(() => node_test_2.mock.restoreAll());
|
|
135
|
-
(0, node_test_1.it)('returns success=false when antigravity exits with non-zero status', async () => {
|
|
136
|
-
mockSpawnSync({ status: 1, stdout: '', stderr: 'antigravity failed' });
|
|
137
|
-
spyLogger();
|
|
138
|
-
const runner = new antigravity_1.AntigravityRunner();
|
|
139
|
-
const result = await runner.run('test prompt');
|
|
140
|
-
strict_1.default.equal(result.success, false);
|
|
141
|
-
strict_1.default.equal(result.error, 'antigravity failed');
|
|
142
|
-
});
|
|
143
|
-
(0, node_test_1.it)('logs a warning with exit status on failure', async () => {
|
|
144
|
-
mockSpawnSync({ status: 2, stdout: '', stderr: 'not found' });
|
|
145
|
-
const spies = spyLogger();
|
|
146
|
-
const runner = new antigravity_1.AntigravityRunner();
|
|
147
|
-
await runner.run('test prompt');
|
|
148
|
-
const warnCalls = spies.warn.mock.calls.map((c) => c.arguments[0]);
|
|
149
|
-
strict_1.default.ok(warnCalls.some((msg) => msg?.includes('status 2')));
|
|
150
|
-
});
|
|
151
|
-
(0, node_test_1.it)('returns empty output on failure', async () => {
|
|
152
|
-
mockSpawnSync({ status: 1, stdout: '', stderr: 'err' });
|
|
153
|
-
spyLogger();
|
|
154
|
-
const runner = new antigravity_1.AntigravityRunner();
|
|
155
|
-
const result = await runner.run('test prompt');
|
|
156
|
-
strict_1.default.equal(result.output, '');
|
|
157
|
-
});
|
|
158
|
-
});
|
|
159
|
-
(0, node_test_1.describe)('CodexRunner – failed tasks', () => {
|
|
160
|
-
(0, node_test_1.beforeEach)(() => node_test_2.mock.restoreAll());
|
|
161
|
-
(0, node_test_1.afterEach)(() => node_test_2.mock.restoreAll());
|
|
162
|
-
(0, node_test_1.it)('returns success=false when codex exits with non-zero status', async () => {
|
|
163
|
-
mockSpawnSync({ status: 1, stdout: '', stderr: 'codex failed' });
|
|
164
|
-
spyLogger();
|
|
165
|
-
const runner = new codex_1.CodexRunner();
|
|
166
|
-
const result = await runner.run('test prompt');
|
|
167
|
-
strict_1.default.equal(result.success, false);
|
|
168
|
-
strict_1.default.equal(result.error, 'codex failed');
|
|
169
|
-
});
|
|
170
|
-
(0, node_test_1.it)('logs a warning with exit status on failure', async () => {
|
|
171
|
-
mockSpawnSync({ status: 2, stdout: '', stderr: 'auth error' });
|
|
172
|
-
const spies = spyLogger();
|
|
173
|
-
const runner = new codex_1.CodexRunner();
|
|
174
|
-
await runner.run('test prompt');
|
|
175
|
-
const warnCalls = spies.warn.mock.calls.map((c) => c.arguments[0]);
|
|
176
|
-
strict_1.default.ok(warnCalls.some((msg) => msg?.includes('status 2')));
|
|
177
|
-
});
|
|
178
|
-
(0, node_test_1.it)('returns empty output on failure', async () => {
|
|
179
|
-
mockSpawnSync({ status: 1, stdout: '', stderr: 'err' });
|
|
180
|
-
spyLogger();
|
|
181
|
-
const runner = new codex_1.CodexRunner();
|
|
182
|
-
const result = await runner.run('test prompt');
|
|
183
|
-
strict_1.default.equal(result.output, '');
|
|
184
|
-
});
|
|
185
|
-
});
|
|
186
|
-
// ─── CursorRunner ─────────────────────────────────────────────────────────────
|
|
187
|
-
(0, node_test_1.describe)('CursorRunner', () => {
|
|
188
|
-
(0, node_test_1.it)('isAvailable returns boolean (depends on agent CLI in PATH)', () => {
|
|
189
|
-
const runner = new cursor_1.CursorRunner();
|
|
190
|
-
strict_1.default.equal(typeof runner.isAvailable(), 'boolean');
|
|
191
|
-
});
|
|
192
|
-
});
|
|
193
|
-
(0, node_test_1.describe)('CursorRunner – failed tasks', () => {
|
|
194
|
-
(0, node_test_1.beforeEach)(() => node_test_2.mock.restoreAll());
|
|
195
|
-
(0, node_test_1.afterEach)(() => node_test_2.mock.restoreAll());
|
|
196
|
-
(0, node_test_1.it)('returns success=false when cursor exits with non-zero status', async () => {
|
|
197
|
-
mockSpawnSync({ status: 1, stdout: '', stderr: 'cursor failed' });
|
|
198
|
-
spyLogger();
|
|
199
|
-
const runner = new cursor_1.CursorRunner();
|
|
200
|
-
const result = await runner.run('test prompt');
|
|
201
|
-
strict_1.default.equal(result.success, false);
|
|
202
|
-
strict_1.default.equal(result.error, 'cursor failed');
|
|
203
|
-
});
|
|
204
|
-
(0, node_test_1.it)('logs a warning with exit status on failure', async () => {
|
|
205
|
-
mockSpawnSync({ status: 3, stdout: '', stderr: 'timeout' });
|
|
206
|
-
const spies = spyLogger();
|
|
207
|
-
const runner = new cursor_1.CursorRunner();
|
|
208
|
-
await runner.run('test prompt');
|
|
209
|
-
const warnCalls = spies.warn.mock.calls.map((c) => c.arguments[0]);
|
|
210
|
-
strict_1.default.ok(warnCalls.some((msg) => msg?.includes('status 3')));
|
|
211
|
-
});
|
|
212
|
-
(0, node_test_1.it)('logs stderr on failure', async () => {
|
|
213
|
-
mockSpawnSync({ status: 1, stdout: '', stderr: 'workspace not found' });
|
|
214
|
-
const spies = spyLogger();
|
|
215
|
-
const runner = new cursor_1.CursorRunner();
|
|
216
|
-
await runner.run('test prompt');
|
|
217
|
-
const warnCalls = spies.warn.mock.calls.map((c) => c.arguments[0]);
|
|
218
|
-
strict_1.default.ok(warnCalls.some((msg) => msg?.includes('workspace not found')));
|
|
219
|
-
});
|
|
220
|
-
(0, node_test_1.it)('logs spawn error when present', async () => {
|
|
221
|
-
mockSpawnSync({ status: null, stdout: '', stderr: '', error: new Error('EACCES') });
|
|
222
|
-
const spies = spyLogger();
|
|
223
|
-
const runner = new cursor_1.CursorRunner();
|
|
224
|
-
await runner.run('test prompt');
|
|
225
|
-
const warnCalls = spies.warn.mock.calls.map((c) => c.arguments[0]);
|
|
226
|
-
strict_1.default.ok(warnCalls.some((msg) => msg?.includes('EACCES')));
|
|
227
|
-
});
|
|
228
|
-
(0, node_test_1.it)('returns empty output on failure', async () => {
|
|
229
|
-
mockSpawnSync({ status: 1, stdout: '', stderr: 'err' });
|
|
230
|
-
spyLogger();
|
|
231
|
-
const runner = new cursor_1.CursorRunner();
|
|
232
|
-
const result = await runner.run('test prompt');
|
|
233
|
-
strict_1.default.equal(result.output, '');
|
|
234
|
-
});
|
|
235
|
-
});
|
|
236
|
-
// ─── WindsurfRunner ───────────────────────────────────────────────────────────
|
|
237
|
-
(0, node_test_1.describe)('WindsurfRunner – failed tasks', () => {
|
|
238
|
-
(0, node_test_1.beforeEach)(() => node_test_2.mock.restoreAll());
|
|
239
|
-
(0, node_test_1.afterEach)(() => node_test_2.mock.restoreAll());
|
|
240
|
-
(0, node_test_1.it)('returns success=false when windsurf exits with non-zero status', async () => {
|
|
241
|
-
mockSpawnSync({ status: 1, stdout: '', stderr: 'windsurf crashed' });
|
|
242
|
-
spyLogger();
|
|
243
|
-
const runner = new windsurf_1.WindsurfRunner();
|
|
244
|
-
const result = await runner.run('test prompt');
|
|
245
|
-
strict_1.default.equal(result.success, false);
|
|
246
|
-
strict_1.default.equal(result.error, 'windsurf crashed');
|
|
247
|
-
});
|
|
248
|
-
(0, node_test_1.it)('logs a warning with exit status on failure', async () => {
|
|
249
|
-
mockSpawnSync({ status: 127, stdout: '', stderr: 'not found' });
|
|
250
|
-
const spies = spyLogger();
|
|
251
|
-
const runner = new windsurf_1.WindsurfRunner();
|
|
252
|
-
await runner.run('test prompt');
|
|
253
|
-
const warnCalls = spies.warn.mock.calls.map((c) => c.arguments[0]);
|
|
254
|
-
strict_1.default.ok(warnCalls.some((msg) => msg?.includes('status 127')));
|
|
255
|
-
});
|
|
256
|
-
(0, node_test_1.it)('logs stderr on failure', async () => {
|
|
257
|
-
mockSpawnSync({ status: 1, stdout: '', stderr: 'license expired' });
|
|
258
|
-
const spies = spyLogger();
|
|
259
|
-
const runner = new windsurf_1.WindsurfRunner();
|
|
260
|
-
await runner.run('test prompt');
|
|
261
|
-
const warnCalls = spies.warn.mock.calls.map((c) => c.arguments[0]);
|
|
262
|
-
strict_1.default.ok(warnCalls.some((msg) => msg?.includes('license expired')));
|
|
263
|
-
});
|
|
264
|
-
(0, node_test_1.it)('logs spawn error when present', async () => {
|
|
265
|
-
mockSpawnSync({ status: null, stdout: '', stderr: '', error: new Error('SIGTERM') });
|
|
266
|
-
const spies = spyLogger();
|
|
267
|
-
const runner = new windsurf_1.WindsurfRunner();
|
|
268
|
-
await runner.run('test prompt');
|
|
269
|
-
const warnCalls = spies.warn.mock.calls.map((c) => c.arguments[0]);
|
|
270
|
-
strict_1.default.ok(warnCalls.some((msg) => msg?.includes('SIGTERM')));
|
|
271
|
-
});
|
|
272
|
-
(0, node_test_1.it)('returns empty output on failure', async () => {
|
|
273
|
-
mockSpawnSync({ status: 1, stdout: '', stderr: 'err' });
|
|
274
|
-
spyLogger();
|
|
275
|
-
const runner = new windsurf_1.WindsurfRunner();
|
|
276
|
-
const result = await runner.run('test prompt');
|
|
277
|
-
strict_1.default.equal(result.output, '');
|
|
278
|
-
});
|
|
279
|
-
});
|
|
280
|
-
(0, node_test_1.describe)('WindsurfRunner – process cleanup (non-Windows CLI mode)', { skip: platform_1.isWindows }, () => {
|
|
281
|
-
(0, node_test_1.beforeEach)(() => node_test_2.mock.restoreAll());
|
|
282
|
-
(0, node_test_1.afterEach)(() => node_test_2.mock.restoreAll());
|
|
283
|
-
(0, node_test_1.it)('kills Windsurf IDE after run when it was not already running', async () => {
|
|
284
|
-
const spawnMock = node_test_2.mock.method(childProcess, 'spawnSync', (command) => {
|
|
285
|
-
const base = { pid: 1, output: [], stderr: '', status: 0, signal: null, error: undefined };
|
|
286
|
-
if (command === 'pgrep')
|
|
287
|
-
return { ...base, stdout: '', status: 1 };
|
|
288
|
-
return { ...base, stdout: '' };
|
|
289
|
-
});
|
|
290
|
-
spyLogger();
|
|
291
|
-
const runner = new windsurf_1.WindsurfRunner();
|
|
292
|
-
await runner.run('test prompt');
|
|
293
|
-
const calls = spawnMock.mock.calls.map((c) => c.arguments[0]);
|
|
294
|
-
strict_1.default.ok(calls.some((cmd) => cmd === 'pkill'), `Expected pkill in spawn calls: [${calls}]`);
|
|
295
|
-
});
|
|
296
|
-
(0, node_test_1.it)('does not kill Windsurf IDE when it was already running', async () => {
|
|
297
|
-
const spawnMock = node_test_2.mock.method(childProcess, 'spawnSync', (command) => {
|
|
298
|
-
const base = { pid: 1, output: [], stderr: '', status: 0, signal: null, error: undefined };
|
|
299
|
-
if (command === 'pgrep') {
|
|
300
|
-
return { ...base, stdout: '1234' };
|
|
301
|
-
}
|
|
302
|
-
return { ...base, stdout: '' };
|
|
303
|
-
});
|
|
304
|
-
spyLogger();
|
|
305
|
-
const runner = new windsurf_1.WindsurfRunner();
|
|
306
|
-
await runner.run('test prompt');
|
|
307
|
-
const calls = spawnMock.mock.calls.map((c) => c.arguments[0]);
|
|
308
|
-
strict_1.default.ok(!calls.some((cmd) => cmd === 'pkill'), `Expected no pkill in spawn calls: [${calls}]`);
|
|
309
|
-
});
|
|
310
|
-
});
|
|
311
|
-
(0, node_test_1.describe)('WindsurfRunner – Docker mode (Windows)', { skip: !platform_1.isWindows }, () => {
|
|
312
|
-
(0, node_test_1.it)('isDockerWindsurfAvailable checks for docker and WINDSURF_TOKEN', () => {
|
|
313
|
-
// This test reflects the real environment — just verify it returns a boolean
|
|
314
|
-
strict_1.default.equal(typeof (0, windsurf_2.isDockerWindsurfAvailable)(), 'boolean');
|
|
315
|
-
});
|
|
316
|
-
(0, node_test_1.it)('isAvailable returns boolean on Windows', () => {
|
|
317
|
-
const runner = new windsurf_1.WindsurfRunner();
|
|
318
|
-
strict_1.default.equal(typeof runner.isAvailable(), 'boolean');
|
|
319
|
-
});
|
|
320
|
-
});
|
|
321
|
-
// ─── createRunners ────────────────────────────────────────────────────────────
|
|
322
|
-
function makeConfig(agents) {
|
|
323
|
-
return { agents };
|
|
324
|
-
}
|
|
325
|
-
(0, node_test_1.describe)('createRunners', () => {
|
|
326
|
-
(0, node_test_1.beforeEach)(() => node_test_2.mock.restoreAll());
|
|
327
|
-
(0, node_test_1.afterEach)(() => node_test_2.mock.restoreAll());
|
|
328
|
-
(0, node_test_1.it)('returns runners in the order specified by config.agents', () => {
|
|
329
|
-
spyLogger();
|
|
330
|
-
const runners = (0, index_1.createRunners)(makeConfig(['cursor', 'codex', 'windsurf', 'claude', 'antigravity']));
|
|
331
|
-
strict_1.default.deepEqual(runners.map((r) => r.name), ['cursor', 'codex', 'windsurf', 'claude', 'antigravity']);
|
|
332
|
-
});
|
|
333
|
-
(0, node_test_1.it)('returns runners in reversed order when config specifies reversed order', () => {
|
|
334
|
-
spyLogger();
|
|
335
|
-
const runners = (0, index_1.createRunners)(makeConfig(['claude', 'cursor']));
|
|
336
|
-
strict_1.default.deepEqual(runners.map((r) => r.name), ['claude', 'cursor']);
|
|
337
|
-
});
|
|
338
|
-
(0, node_test_1.it)('returns a single runner when only one agent is configured', () => {
|
|
339
|
-
spyLogger();
|
|
340
|
-
const runners = (0, index_1.createRunners)(makeConfig(['claude']));
|
|
341
|
-
strict_1.default.equal(runners.length, 1);
|
|
342
|
-
strict_1.default.equal(runners[0].name, 'claude');
|
|
343
|
-
});
|
|
344
|
-
(0, node_test_1.it)('logs configured runners at info level', () => {
|
|
345
|
-
const spies = spyLogger();
|
|
346
|
-
(0, index_1.createRunners)(makeConfig(['cursor', 'claude']));
|
|
347
|
-
const infoCalls = spies.info.mock.calls.map((c) => c.arguments[0]);
|
|
348
|
-
strict_1.default.ok(infoCalls.some((msg) => msg?.includes('cursor') && msg?.includes('claude') && msg?.includes('Configured runners')));
|
|
349
|
-
});
|
|
350
|
-
(0, node_test_1.it)('logs a warning when a configured runner is not available', () => {
|
|
351
|
-
const spies = spyLogger();
|
|
352
|
-
(0, index_1.createRunners)(makeConfig(['windsurf', 'claude']));
|
|
353
|
-
const warnCalls = spies.warn.mock.calls.map((c) => c.arguments[0]);
|
|
354
|
-
const hasUnavailableWarning = warnCalls.some((msg) => msg?.includes('not found'));
|
|
355
|
-
// At least windsurf should be flagged (it's typically not installed in CI)
|
|
356
|
-
// We can't assert strongly since CI might have different tool availability
|
|
357
|
-
strict_1.default.ok(typeof hasUnavailableWarning === 'boolean');
|
|
358
|
-
});
|
|
359
|
-
(0, node_test_1.it)('includes unavailable runners in the returned array (filtering is done by callers)', () => {
|
|
360
|
-
spyLogger();
|
|
361
|
-
const runners = (0, index_1.createRunners)(makeConfig(['windsurf', 'claude']));
|
|
362
|
-
strict_1.default.equal(runners.length, 2);
|
|
363
|
-
strict_1.default.equal(runners[0].name, 'windsurf');
|
|
364
|
-
strict_1.default.equal(runners[1].name, 'claude');
|
|
365
|
-
});
|
|
366
|
-
});
|
|
367
|
-
//# sourceMappingURL=ai-runners.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ai-runners.test.js","sourceRoot":"","sources":["../../src/__tests__/ai-runners.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clickup-format.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/clickup-format.test.ts"],"names":[],"mappings":""}
|