@straiffi/archon 1.0.13 → 1.1.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.
@@ -0,0 +1,494 @@
1
+ import { randomUUID } from 'crypto';
2
+ import { spawn } from 'child_process';
3
+ import { existsSync, lstatSync, readdirSync, readFileSync } from 'fs';
4
+ import { join, relative, resolve } from 'path';
5
+ import { resolveTestCommandRunner, resolveTestCommandWorkspacePath } from './testCommandRunner.js';
6
+ const MAX_OUTPUT_LENGTH = 256 * 1024;
7
+ const TEST_FILE_PATTERN = /(?:^|\/)(?:__tests__\/.*|.*\.(?:test|spec)\.[cm]?[jt]sx?)$/i;
8
+ const TEST_CASE_PATTERN = /\b(?:it|test)(?:\.(?:only|skip|concurrent|todo|failing|each))*\s*\(\s*(['"`])(.+?)\1/;
9
+ const IGNORED_DIRECTORY_NAMES = new Set(['.git', 'node_modules', 'dist', 'build', 'coverage', '.next', '.turbo']);
10
+ const ANSI_ESCAPE_PATTERN = new RegExp(`${String.fromCharCode(27)}\\[[0-9;?]*[ -/]*[@-~]`, 'g');
11
+ const sessions = new Map();
12
+ const escapeShellArgument = (value) => {
13
+ return `'${value.replace(/'/g, `'"'"'`)}'`;
14
+ };
15
+ const resolveShell = () => {
16
+ return process.env.SHELL?.trim() || '/bin/zsh';
17
+ };
18
+ const serializeTestSession = (session) => {
19
+ return {
20
+ id: session.id,
21
+ project_id: session.project_id,
22
+ ticket_id: session.ticket_id,
23
+ target_kind: session.target_kind,
24
+ target_bundle_id: session.target_bundle_id,
25
+ cwd: session.cwd,
26
+ target_label: session.target_label,
27
+ status: session.status,
28
+ command_id: session.command_id,
29
+ command_name: session.command_name,
30
+ command_runner: session.command_runner,
31
+ active_command: session.active_command,
32
+ exit_code: session.exit_code,
33
+ duration_ms: session.duration_ms,
34
+ output: session.output,
35
+ output_truncated: session.output_truncated,
36
+ error: session.error,
37
+ selection: session.selection,
38
+ summary: session.summary,
39
+ started_at: session.started_at,
40
+ completed_at: session.completed_at,
41
+ };
42
+ };
43
+ const emitSessionUpdate = (io, session) => {
44
+ io.emit('test-session:updated', serializeTestSession(session));
45
+ };
46
+ const emitSessionOutput = (io, sessionId, chunk, outputTruncated) => {
47
+ io.emit('test-session:output', {
48
+ session_id: sessionId,
49
+ chunk,
50
+ output_truncated: outputTruncated,
51
+ });
52
+ };
53
+ const resolveCommandWorkspace = (sessionCwd, command) => {
54
+ if (!command) {
55
+ return {
56
+ spawnCwd: sessionCwd,
57
+ workspaceCwd: sessionCwd,
58
+ };
59
+ }
60
+ const configuredCwd = command.cwd?.trim();
61
+ const workspacePath = configuredCwd || resolveTestCommandWorkspacePath(command);
62
+ if (!workspacePath) {
63
+ return {
64
+ spawnCwd: sessionCwd,
65
+ workspaceCwd: sessionCwd,
66
+ };
67
+ }
68
+ const normalizedWorkspacePath = normalizeSelectionPath(sessionCwd, workspacePath);
69
+ const workspaceCwd = normalizedWorkspacePath ? join(sessionCwd, normalizedWorkspacePath) : sessionCwd;
70
+ return {
71
+ spawnCwd: configuredCwd ? workspaceCwd : sessionCwd,
72
+ workspaceCwd,
73
+ };
74
+ };
75
+ const rebaseSelectionPathToCommandCwd = (sessionCwd, commandCwd, selectionPath) => {
76
+ const normalizedSessionPath = normalizeSelectionPath(sessionCwd, selectionPath);
77
+ if (!normalizedSessionPath) {
78
+ return null;
79
+ }
80
+ const absoluteSelectionPath = resolve(sessionCwd, normalizedSessionPath);
81
+ const commandRelativePath = relative(commandCwd, absoluteSelectionPath).replaceAll('\\', '/');
82
+ if (commandRelativePath === '' || commandRelativePath.startsWith('..') || commandRelativePath.includes('/../')) {
83
+ return null;
84
+ }
85
+ return {
86
+ absolutePath: absoluteSelectionPath,
87
+ commandRelativePath,
88
+ sessionRelativePath: normalizedSessionPath,
89
+ };
90
+ };
91
+ const isExistingDirectory = (pathName) => {
92
+ if (!existsSync(pathName)) {
93
+ return false;
94
+ }
95
+ try {
96
+ return lstatSync(pathName).isDirectory();
97
+ }
98
+ catch {
99
+ return false;
100
+ }
101
+ };
102
+ const appendSelectionArgs = (command, selection, runner) => {
103
+ if (selection.kind === 'all') {
104
+ return command;
105
+ }
106
+ if (runner !== 'vitest' && runner !== 'jest') {
107
+ throw new Error('The selected test command only supports running the full suite.');
108
+ }
109
+ const args = [selection.path];
110
+ if (selection.kind === 'case') {
111
+ args.push('-t', selection.name);
112
+ }
113
+ const escapedArgs = args.map(argument => escapeShellArgument(argument)).join(' ');
114
+ const requiresDoubleDash = /\b(?:npm|pnpm|bun)\b/.test(command) && /\b(?:run\s+)?(?:test|vitest|jest)\b/.test(command);
115
+ return requiresDoubleDash ? `${command} -- ${escapedArgs}` : `${command} ${escapedArgs}`;
116
+ };
117
+ const stripAnsi = (value) => {
118
+ return value.replace(ANSI_ESCAPE_PATTERN, '');
119
+ };
120
+ const parseSummaryCounts = (value) => {
121
+ const failedMatch = value.match(/(\d+)\s+failed\b/i);
122
+ const passedMatch = value.match(/(\d+)\s+passed\b/i);
123
+ const totalMatch = value.match(/\((\d+)\)\s*$/) ?? value.match(/(\d+)\s+total\b/i);
124
+ if (!failedMatch && !passedMatch && !totalMatch) {
125
+ return null;
126
+ }
127
+ return {
128
+ failedCount: failedMatch ? Number.parseInt(failedMatch[1] ?? '', 10) : null,
129
+ passedCount: passedMatch ? Number.parseInt(passedMatch[1] ?? '', 10) : null,
130
+ totalCount: totalMatch ? Number.parseInt(totalMatch[1] ?? '', 10) : null,
131
+ };
132
+ };
133
+ const cloneSummary = (summary) => {
134
+ return summary
135
+ ? { ...summary }
136
+ : {
137
+ file_count: null,
138
+ case_count: null,
139
+ passed_count: null,
140
+ failed_count: null,
141
+ };
142
+ };
143
+ const updateSummaryCount = (summary, key, nextValue) => {
144
+ if (nextValue == null) {
145
+ return false;
146
+ }
147
+ if (summary[key] === nextValue) {
148
+ return false;
149
+ }
150
+ summary[key] = nextValue;
151
+ return true;
152
+ };
153
+ const updateSessionSummaryFromOutput = (session) => {
154
+ if (session.command_runner !== 'vitest' && session.command_runner !== 'jest') {
155
+ return false;
156
+ }
157
+ const nextSummary = cloneSummary(session.summary);
158
+ let didChange = false;
159
+ const lines = stripAnsi(session.output).split(/\r?\n/);
160
+ for (const line of lines) {
161
+ if (session.command_runner === 'vitest') {
162
+ const testCounts = line.match(/^\s*Tests\s+(.*)$/i);
163
+ if (testCounts) {
164
+ const parsed = parseSummaryCounts(testCounts[1] ?? '');
165
+ if (parsed) {
166
+ didChange = updateSummaryCount(nextSummary, 'failed_count', parsed.failedCount) || didChange;
167
+ didChange = updateSummaryCount(nextSummary, 'passed_count', parsed.passedCount) || didChange;
168
+ didChange = updateSummaryCount(nextSummary, 'case_count', parsed.totalCount) || didChange;
169
+ }
170
+ }
171
+ const fileCounts = line.match(/^\s*Test Files\s+(.*)$/i);
172
+ if (fileCounts) {
173
+ const parsed = parseSummaryCounts(fileCounts[1] ?? '');
174
+ if (parsed) {
175
+ didChange = updateSummaryCount(nextSummary, 'file_count', parsed.totalCount) || didChange;
176
+ }
177
+ }
178
+ }
179
+ if (session.command_runner === 'jest') {
180
+ const testCounts = line.match(/^\s*Tests:\s+(.*)$/i);
181
+ if (testCounts) {
182
+ const parsed = parseSummaryCounts(testCounts[1] ?? '');
183
+ if (parsed) {
184
+ didChange = updateSummaryCount(nextSummary, 'failed_count', parsed.failedCount) || didChange;
185
+ didChange = updateSummaryCount(nextSummary, 'passed_count', parsed.passedCount) || didChange;
186
+ didChange = updateSummaryCount(nextSummary, 'case_count', parsed.totalCount) || didChange;
187
+ }
188
+ }
189
+ const suiteCounts = line.match(/^\s*Test Suites:\s+(.*)$/i);
190
+ if (suiteCounts) {
191
+ const parsed = parseSummaryCounts(suiteCounts[1] ?? '');
192
+ if (parsed) {
193
+ didChange = updateSummaryCount(nextSummary, 'file_count', parsed.totalCount) || didChange;
194
+ }
195
+ }
196
+ }
197
+ }
198
+ if (!didChange) {
199
+ return false;
200
+ }
201
+ session.summary = nextSummary;
202
+ return true;
203
+ };
204
+ const appendOutput = (session, chunk) => {
205
+ const nextOutput = `${session.output}${chunk}`;
206
+ if (nextOutput.length <= MAX_OUTPUT_LENGTH) {
207
+ session.output = nextOutput;
208
+ return;
209
+ }
210
+ session.output = nextOutput.slice(-MAX_OUTPUT_LENGTH);
211
+ session.output_truncated = true;
212
+ };
213
+ const markSessionComplete = (session, status, options = {}) => {
214
+ session.status = status;
215
+ session.child = null;
216
+ session.exit_code = options.exitCode ?? session.exit_code;
217
+ session.error = options.error ?? session.error;
218
+ session.completed_at = new Date().toISOString();
219
+ session.duration_ms = session.started_at_ms == null ? null : Date.now() - session.started_at_ms;
220
+ };
221
+ const isProcessAlive = (child) => {
222
+ return Boolean(child && child.exitCode == null && child.signalCode == null);
223
+ };
224
+ const killProcessGroup = (child) => {
225
+ if (child.pid && process.platform !== 'win32') {
226
+ try {
227
+ process.kill(-child.pid, 'SIGTERM');
228
+ return;
229
+ }
230
+ catch (error) {
231
+ if (error.code === 'ESRCH') {
232
+ return;
233
+ }
234
+ }
235
+ }
236
+ try {
237
+ child.kill('SIGTERM');
238
+ }
239
+ catch {
240
+ // Ignore already-exited processes.
241
+ }
242
+ };
243
+ const normalizeSelectionPath = (cwd, path) => {
244
+ const trimmedPath = path.trim().replaceAll('\\', '/');
245
+ if (!trimmedPath) {
246
+ return null;
247
+ }
248
+ const resolvedPath = resolve(cwd, trimmedPath);
249
+ const relativePath = relative(cwd, resolvedPath).replaceAll('\\', '/');
250
+ if (relativePath === '' || relativePath.startsWith('..') || relativePath.includes('/../')) {
251
+ return null;
252
+ }
253
+ return relativePath;
254
+ };
255
+ const discoverTestCases = (filePath) => {
256
+ const cases = [];
257
+ const source = readFileSync(filePath, 'utf8');
258
+ const lines = source.split('\n');
259
+ for (const [index, line] of lines.entries()) {
260
+ const match = line.match(TEST_CASE_PATTERN);
261
+ if (!match) {
262
+ continue;
263
+ }
264
+ const name = match[2]?.trim();
265
+ if (!name) {
266
+ continue;
267
+ }
268
+ cases.push({
269
+ id: `${index + 1}:${name}`,
270
+ name,
271
+ line: index + 1,
272
+ });
273
+ }
274
+ return cases;
275
+ };
276
+ const listTestFiles = (cwd, currentDir = cwd) => {
277
+ const entries = readdirSync(currentDir);
278
+ const discovered = [];
279
+ for (const entry of entries) {
280
+ if (IGNORED_DIRECTORY_NAMES.has(entry)) {
281
+ continue;
282
+ }
283
+ const absolutePath = join(currentDir, entry);
284
+ const stats = lstatSync(absolutePath);
285
+ if (stats.isDirectory()) {
286
+ discovered.push(...listTestFiles(cwd, absolutePath));
287
+ continue;
288
+ }
289
+ const relativePath = relative(cwd, absolutePath).replaceAll('\\', '/');
290
+ if (!TEST_FILE_PATTERN.test(relativePath)) {
291
+ continue;
292
+ }
293
+ discovered.push({
294
+ path: relativePath,
295
+ cases: discoverTestCases(absolutePath),
296
+ });
297
+ }
298
+ return discovered.sort((left, right) => left.path.localeCompare(right.path));
299
+ };
300
+ export const createTestSession = (options) => {
301
+ const session = {
302
+ id: randomUUID(),
303
+ project_id: options.projectId,
304
+ ticket_id: options.ticketId ?? null,
305
+ target_kind: options.targetKind ?? 'repo_root',
306
+ target_bundle_id: options.targetBundleId ?? null,
307
+ cwd: options.cwd,
308
+ target_label: options.targetLabel,
309
+ status: 'idle',
310
+ command_id: null,
311
+ command_name: null,
312
+ command_runner: null,
313
+ active_command: null,
314
+ exit_code: null,
315
+ duration_ms: null,
316
+ output: '',
317
+ output_truncated: false,
318
+ error: null,
319
+ selection: null,
320
+ summary: null,
321
+ started_at: null,
322
+ completed_at: null,
323
+ child: null,
324
+ started_at_ms: null,
325
+ };
326
+ sessions.set(session.id, session);
327
+ return serializeTestSession(session);
328
+ };
329
+ export const getTestSession = (sessionId) => {
330
+ const session = sessions.get(sessionId);
331
+ return session ? serializeTestSession(session) : null;
332
+ };
333
+ const requireSession = (sessionId) => {
334
+ const session = sessions.get(sessionId);
335
+ if (!session) {
336
+ throw new Error('Test session not found');
337
+ }
338
+ return session;
339
+ };
340
+ export const discoverTestsForSession = (sessionId, command = null) => {
341
+ const session = requireSession(sessionId);
342
+ const commandWorkspace = resolveCommandWorkspace(session.cwd, command);
343
+ if (!isExistingDirectory(commandWorkspace.workspaceCwd)) {
344
+ return [];
345
+ }
346
+ return listTestFiles(session.cwd, commandWorkspace.workspaceCwd);
347
+ };
348
+ export const startTestSessionRun = async (sessionId, project, options, io) => {
349
+ const session = requireSession(sessionId);
350
+ if (session.project_id !== project.id) {
351
+ throw new Error('Test session project mismatch');
352
+ }
353
+ if (isProcessAlive(session.child)) {
354
+ throw new Error('A test run is already active for this session.');
355
+ }
356
+ const runner = resolveTestCommandRunner(options.command, session.cwd);
357
+ const commandWorkspace = resolveCommandWorkspace(session.cwd, options.command);
358
+ const rebasedSelection = options.selection.kind === 'all'
359
+ ? null
360
+ : rebaseSelectionPathToCommandCwd(session.cwd, commandWorkspace.workspaceCwd, options.selection.path);
361
+ const selection = options.selection.kind === 'all'
362
+ ? options.selection
363
+ : options.selection.kind === 'file'
364
+ ? {
365
+ kind: 'file',
366
+ path: rebasedSelection?.sessionRelativePath ?? '',
367
+ }
368
+ : {
369
+ kind: 'case',
370
+ path: rebasedSelection?.sessionRelativePath ?? '',
371
+ name: options.selection.name.trim(),
372
+ };
373
+ if (selection.kind !== 'all' && selection.path === '') {
374
+ throw new Error('The selected test path must stay inside the target workspace.');
375
+ }
376
+ if (selection.kind === 'case' && selection.name === '') {
377
+ throw new Error('The selected test case name is required.');
378
+ }
379
+ const commandSelection = selection.kind === 'all'
380
+ ? selection
381
+ : selection.kind === 'file'
382
+ ? { kind: 'file', path: rebasedSelection?.commandRelativePath ?? '' }
383
+ : { kind: 'case', path: rebasedSelection?.commandRelativePath ?? '', name: selection.name };
384
+ const commandText = appendSelectionArgs(options.command.command, commandSelection, runner);
385
+ const env = { ...process.env };
386
+ delete env.npm_config_prefix;
387
+ const child = spawn(resolveShell(), ['-i', '-c', commandText], {
388
+ cwd: commandWorkspace.spawnCwd,
389
+ detached: process.platform !== 'win32',
390
+ env,
391
+ stdio: ['ignore', 'pipe', 'pipe'],
392
+ });
393
+ session.status = 'running';
394
+ session.command_id = options.command.id;
395
+ session.command_name = options.command.name;
396
+ session.command_runner = runner;
397
+ session.active_command = commandText;
398
+ session.exit_code = null;
399
+ session.duration_ms = null;
400
+ session.output = '';
401
+ session.output_truncated = false;
402
+ session.error = null;
403
+ session.selection = selection;
404
+ session.summary = {
405
+ file_count: selection.kind === 'all' ? null : 1,
406
+ case_count: selection.kind === 'case' ? 1 : null,
407
+ passed_count: null,
408
+ failed_count: null,
409
+ };
410
+ session.started_at = new Date().toISOString();
411
+ session.completed_at = null;
412
+ session.child = child;
413
+ session.started_at_ms = Date.now();
414
+ emitSessionUpdate(io, session);
415
+ const handleChunk = (chunk) => {
416
+ const text = chunk.toString();
417
+ appendOutput(session, text);
418
+ const didSummaryChange = updateSessionSummaryFromOutput(session);
419
+ emitSessionOutput(io, session.id, text, session.output_truncated);
420
+ if (didSummaryChange) {
421
+ emitSessionUpdate(io, session);
422
+ }
423
+ };
424
+ child.stdout?.on('data', handleChunk);
425
+ child.stderr?.on('data', handleChunk);
426
+ child.on('error', error => {
427
+ markSessionComplete(session, 'error', {
428
+ error: error instanceof Error ? error.message : String(error),
429
+ exitCode: null,
430
+ });
431
+ emitSessionUpdate(io, session);
432
+ });
433
+ child.on('close', code => {
434
+ if (session.status === 'stopped') {
435
+ emitSessionUpdate(io, session);
436
+ return;
437
+ }
438
+ markSessionComplete(session, code === 0 ? 'passed' : 'failed', {
439
+ exitCode: typeof code === 'number' ? code : null,
440
+ });
441
+ emitSessionUpdate(io, session);
442
+ });
443
+ return serializeTestSession(session);
444
+ };
445
+ export const stopTestSessionRun = async (sessionId, io) => {
446
+ const session = requireSession(sessionId);
447
+ if (!session.child || !isProcessAlive(session.child)) {
448
+ return serializeTestSession(session);
449
+ }
450
+ killProcessGroup(session.child);
451
+ markSessionComplete(session, 'stopped', {
452
+ exitCode: session.exit_code,
453
+ error: null,
454
+ });
455
+ emitSessionUpdate(io, session);
456
+ return serializeTestSession(session);
457
+ };
458
+ export const deleteTestSession = async (sessionId, io) => {
459
+ const session = sessions.get(sessionId);
460
+ if (!session) {
461
+ return false;
462
+ }
463
+ if (session.child && isProcessAlive(session.child)) {
464
+ await stopTestSessionRun(sessionId, io);
465
+ }
466
+ sessions.delete(sessionId);
467
+ return true;
468
+ };
469
+ export const findProjectTestCommand = (project, commandId) => {
470
+ return JSON.parse(project.test_commands ?? '[]')
471
+ .find(command => command.id === commandId) ?? null;
472
+ };
473
+ export const clearAllTestSessions = async (io) => {
474
+ for (const sessionId of [...sessions.keys()]) {
475
+ await deleteTestSession(sessionId, io);
476
+ }
477
+ };
478
+ export const isTestSelectionSupported = (command, selection, sessionCwd) => {
479
+ if (selection.kind === 'all') {
480
+ return true;
481
+ }
482
+ const runner = resolveTestCommandRunner(command, sessionCwd);
483
+ return runner === 'vitest' || runner === 'jest';
484
+ };
485
+ export const doesTestFileExistForSession = (sessionId, filePath, command = null) => {
486
+ const session = requireSession(sessionId);
487
+ const commandWorkspace = resolveCommandWorkspace(session.cwd, command);
488
+ const rebasedSelection = rebaseSelectionPathToCommandCwd(session.cwd, commandWorkspace.workspaceCwd, filePath);
489
+ if (!rebasedSelection) {
490
+ return false;
491
+ }
492
+ return existsSync(rebasedSelection.absolutePath);
493
+ };
494
+ //# sourceMappingURL=testSessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testSessions.js","sourceRoot":"","sources":["../../../server/lib/testSessions.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@straiffi/archon",
3
- "version": "1.0.13",
3
+ "version": "1.1.0",
4
4
  "private": false,
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "type": "module",