sdlc-agent-4-enterprise-server 1.7.0 → 1.7.1

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.
@@ -60,6 +60,16 @@ function resolveViewerPort() {
60
60
  return parseInt(envPort, 10);
61
61
  return 3202;
62
62
  }
63
+ function resolvePort() {
64
+ const args = process.argv.slice(2);
65
+ const idx = args.indexOf('--port');
66
+ if (idx >= 0 && args[idx + 1])
67
+ return parseInt(args[idx + 1], 10);
68
+ const envPort = process.env['CODE_INTEL_PORT'];
69
+ if (envPort)
70
+ return parseInt(envPort, 10);
71
+ return 48721;
72
+ }
63
73
  function loadFileConfig(configPath) {
64
74
  try {
65
75
  if (fs.existsSync(configPath)) {
@@ -120,7 +130,7 @@ export function loadConfig(overrides) {
120
130
  const envDb = process.env['CODE_INTEL_DB'] || 'index.db';
121
131
  const dbPath = path.isAbsolute(envDb) ? envDb : path.join(codeIntelDir, envDb);
122
132
  const raw = {
123
- port: parseInt(process.env.CODE_INTEL_PORT || '48721', 10),
133
+ port: resolvePort(),
124
134
  host: process.env.CODE_INTEL_HOST || '0.0.0.0',
125
135
  onnxModelPath: process.env.CODE_INTEL_ONNX_MODEL || 'models/model.onnx',
126
136
  logLevel: (process.env.CODE_INTEL_LOG_LEVEL || 'info'),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,11 @@ export function createDatabaseRoutes(ctx) {
29
29
  app.get('/api/admin/database/status', (c) => {
30
30
  try {
31
31
  const config = configService.load();
32
- return c.json({ success: true, data: { engine: config.activeEngine, status: 'connected', details: config.engines.sqlite, lastMigration: config.migration.lastMigration } });
32
+ const engine = config.activeEngine;
33
+ const connParams = engine !== 'sqlite' && config.engines[engine]
34
+ ? { host: config.engines[engine].host, port: config.engines[engine].port, username: config.engines[engine].username, database: config.engines[engine].database, ssl: config.engines[engine].ssl }
35
+ : undefined;
36
+ return c.json({ success: true, data: { engine, status: 'connected', details: config.engines.sqlite, connection: connParams, lastMigration: config.migration.lastMigration } });
33
37
  }
34
38
  catch (err) {
35
39
  return c.json({ success: false, error: { code: 'STATUS_ERROR', message: err.message } }, 500);
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../../../src/server/routes/admin/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../../../src/server/routes/admin/database.ts"],"names":[],"mappings":"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"}
@@ -252,7 +252,7 @@ function ConfigurationPage(){const[config,setConfig]=useState({});const[history,
252
252
  const[llmTesting,setLlmTesting]=useState(false);const[llmTestResult,setLlmTestResult]=useState(null);const[showApiKey,setShowApiKey]=useState(false);const[apiKeyInput,setApiKeyInput]=useState('');const[useDefaultUrl,setUseDefaultUrl]=useState(true);const[liveModels,setLiveModels]=useState(null);
253
253
  const[dbStatus,setDbStatus]=useState(null);const[dbEngine,setDbEngine]=useState('sqlite');const[dbForm,setDbForm]=useState({host:'localhost',port:5432,username:'',password:'',database:'',ssl:false});const[dbTestResult,setDbTestResult]=useState(null);const[dbTesting,setDbTesting]=useState(false);const[dbMigrating,setDbMigrating]=useState(false);const[dbMigrationProgress,setDbMigrationProgress]=useState(null);const[dbMigrationLog,setDbMigrationLog]=useState([]);
254
254
  const fetchModels=async(prov,baseUrl)=>{try{const d=await api('/llm/models?provider='+encodeURIComponent(prov||'')+'&baseUrl='+encodeURIComponent(baseUrl||''));if(d&&!d.__error&&d.models&&d.models.length>0)setLiveModels(d.models);else setLiveModels(null);}catch{setLiveModels(null);}};
255
- const loadDbStatus=()=>{api('/database/status').then(d=>{if(d&&!d.__error&&d.data){setDbStatus(d.data);setDbEngine(d.data.engine||'sqlite');}});};
255
+ const loadDbStatus=()=>{api('/database/status').then(d=>{if(d&&!d.__error&&d.data){setDbStatus(d.data);setDbEngine(d.data.engine||'sqlite');if(d.data.connection){setDbForm(f=>({...f,host:d.data.connection.host||f.host,port:d.data.connection.port||f.port,username:d.data.connection.username||f.username,database:d.data.connection.database||f.database,ssl:d.data.connection.ssl??f.ssl}));}}});};
256
256
  const testDbConnection=async()=>{setDbTesting(true);setDbTestResult(null);try{const d=await api('/database/test-connection',{method:'POST',body:JSON.stringify({engine:dbEngine,...dbForm,port:parseInt(dbForm.port)||5432})});if(d&&!d.__error){setDbTestResult(d);}else{setDbTestResult({success:false,error:d?.error||{message:'Request failed'}});}}catch(e){setDbTestResult({success:false,error:{message:e.message}});}setDbTesting(false);};
257
257
  const startMigration=async()=>{setDbMigrating(true);setDbMigrationLog([]);setDbMigrationProgress(null);try{const resp=await fetch((window.__MCP_BASE||'')+'/api/admin/database/migrate',{method:'POST',headers:{'Content-Type':'application/json','Authorization':'Bearer '+localStorage.getItem('admin_token')},body:JSON.stringify({engine:dbEngine,...dbForm,port:parseInt(dbForm.port)||5432})});if(!resp.ok){const err=await resp.json().catch(()=>({error:{message:'Request failed'}}));setDbMigrating(false);setMsg('✗ Migration failed: '+(err?.error?.message||resp.statusText));return;}const reader=resp.body?.getReader();if(!reader){setDbMigrating(false);setMsg('✗ No stream');return;}const decoder=new TextDecoder();let buf='';try{while(true){const{done,value}=await reader.read();if(done)break;buf+=decoder.decode(value,{stream:true});const lines=buf.split('\n');buf=lines.pop()||'';for(const line of lines){if(line.startsWith('data:')){try{const ev=JSON.parse(line.slice(5));setDbMigrationProgress(ev);setDbMigrationLog(l=>[...l,{time:new Date().toLocaleTimeString(),msg:(ev.table||'')+' '+(ev.percent!=null?ev.percent+'%':ev.phase||ev.message||'')}]);}catch{}}}}}catch(streamErr){setMsg('✗ Stream error: '+(streamErr?.message||'connection lost'));}setDbMigrating(false);loadDbStatus();}catch(e){setDbMigrating(false);setMsg('✗ Migration failed: '+e.message);}};
258
258
  const cancelMigration=async()=>{await api('/database/migrate/cancel',{method:'POST'});setDbMigrating(false);setMsg('Migration cancelled');};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sdlc-agent-4-enterprise-server",
3
- "version": "1.7.0",
3
+ "version": "1.7.1",
4
4
  "description": "Code Intelligence MCP Server — multi-agent SDLC pipeline with semantic memory, code graph, and draw.io integration",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -67,6 +67,15 @@ function resolveViewerPort(): number {
67
67
  return 3202;
68
68
  }
69
69
 
70
+ function resolvePort(): number {
71
+ const args = process.argv.slice(2);
72
+ const idx = args.indexOf('--port');
73
+ if (idx >= 0 && args[idx + 1]) return parseInt(args[idx + 1], 10);
74
+ const envPort = process.env['CODE_INTEL_PORT'];
75
+ if (envPort) return parseInt(envPort, 10);
76
+ return 48721;
77
+ }
78
+
70
79
  function loadFileConfig(configPath: string): Record<string, any> {
71
80
  try {
72
81
  if (fs.existsSync(configPath)) {
@@ -126,7 +135,7 @@ export function loadConfig(overrides?: Partial<UnifiedConfig>): UnifiedConfig {
126
135
  const dbPath = path.isAbsolute(envDb) ? envDb : path.join(codeIntelDir, envDb);
127
136
 
128
137
  const raw = {
129
- port: parseInt(process.env.CODE_INTEL_PORT || '48721', 10),
138
+ port: resolvePort(),
130
139
  host: process.env.CODE_INTEL_HOST || '0.0.0.0',
131
140
  onnxModelPath: process.env.CODE_INTEL_ONNX_MODEL || 'models/model.onnx',
132
141
  logLevel: (process.env.CODE_INTEL_LOG_LEVEL || 'info') as any,
@@ -35,7 +35,11 @@ export function createDatabaseRoutes(ctx: AdminContext): Hono {
35
35
  app.get('/api/admin/database/status', (c) => {
36
36
  try {
37
37
  const config = configService.load();
38
- return c.json({ success: true, data: { engine: config.activeEngine, status: 'connected', details: config.engines.sqlite, lastMigration: config.migration.lastMigration } });
38
+ const engine = config.activeEngine;
39
+ const connParams = engine !== 'sqlite' && config.engines[engine]
40
+ ? { host: config.engines[engine]!.host, port: config.engines[engine]!.port, username: config.engines[engine]!.username, database: config.engines[engine]!.database, ssl: config.engines[engine]!.ssl }
41
+ : undefined;
42
+ return c.json({ success: true, data: { engine, status: 'connected', details: config.engines.sqlite, connection: connParams, lastMigration: config.migration.lastMigration } });
39
43
  } catch (err) {
40
44
  return c.json({ success: false, error: { code: 'STATUS_ERROR', message: (err as Error).message } }, 500);
41
45
  }
@@ -252,7 +252,7 @@ function ConfigurationPage(){const[config,setConfig]=useState({});const[history,
252
252
  const[llmTesting,setLlmTesting]=useState(false);const[llmTestResult,setLlmTestResult]=useState(null);const[showApiKey,setShowApiKey]=useState(false);const[apiKeyInput,setApiKeyInput]=useState('');const[useDefaultUrl,setUseDefaultUrl]=useState(true);const[liveModels,setLiveModels]=useState(null);
253
253
  const[dbStatus,setDbStatus]=useState(null);const[dbEngine,setDbEngine]=useState('sqlite');const[dbForm,setDbForm]=useState({host:'localhost',port:5432,username:'',password:'',database:'',ssl:false});const[dbTestResult,setDbTestResult]=useState(null);const[dbTesting,setDbTesting]=useState(false);const[dbMigrating,setDbMigrating]=useState(false);const[dbMigrationProgress,setDbMigrationProgress]=useState(null);const[dbMigrationLog,setDbMigrationLog]=useState([]);
254
254
  const fetchModels=async(prov,baseUrl)=>{try{const d=await api('/llm/models?provider='+encodeURIComponent(prov||'')+'&baseUrl='+encodeURIComponent(baseUrl||''));if(d&&!d.__error&&d.models&&d.models.length>0)setLiveModels(d.models);else setLiveModels(null);}catch{setLiveModels(null);}};
255
- const loadDbStatus=()=>{api('/database/status').then(d=>{if(d&&!d.__error&&d.data){setDbStatus(d.data);setDbEngine(d.data.engine||'sqlite');}});};
255
+ const loadDbStatus=()=>{api('/database/status').then(d=>{if(d&&!d.__error&&d.data){setDbStatus(d.data);setDbEngine(d.data.engine||'sqlite');if(d.data.connection){setDbForm(f=>({...f,host:d.data.connection.host||f.host,port:d.data.connection.port||f.port,username:d.data.connection.username||f.username,database:d.data.connection.database||f.database,ssl:d.data.connection.ssl??f.ssl}));}}});};
256
256
  const testDbConnection=async()=>{setDbTesting(true);setDbTestResult(null);try{const d=await api('/database/test-connection',{method:'POST',body:JSON.stringify({engine:dbEngine,...dbForm,port:parseInt(dbForm.port)||5432})});if(d&&!d.__error){setDbTestResult(d);}else{setDbTestResult({success:false,error:d?.error||{message:'Request failed'}});}}catch(e){setDbTestResult({success:false,error:{message:e.message}});}setDbTesting(false);};
257
257
  const startMigration=async()=>{setDbMigrating(true);setDbMigrationLog([]);setDbMigrationProgress(null);try{const resp=await fetch((window.__MCP_BASE||'')+'/api/admin/database/migrate',{method:'POST',headers:{'Content-Type':'application/json','Authorization':'Bearer '+localStorage.getItem('admin_token')},body:JSON.stringify({engine:dbEngine,...dbForm,port:parseInt(dbForm.port)||5432})});if(!resp.ok){const err=await resp.json().catch(()=>({error:{message:'Request failed'}}));setDbMigrating(false);setMsg('✗ Migration failed: '+(err?.error?.message||resp.statusText));return;}const reader=resp.body?.getReader();if(!reader){setDbMigrating(false);setMsg('✗ No stream');return;}const decoder=new TextDecoder();let buf='';try{while(true){const{done,value}=await reader.read();if(done)break;buf+=decoder.decode(value,{stream:true});const lines=buf.split('\n');buf=lines.pop()||'';for(const line of lines){if(line.startsWith('data:')){try{const ev=JSON.parse(line.slice(5));setDbMigrationProgress(ev);setDbMigrationLog(l=>[...l,{time:new Date().toLocaleTimeString(),msg:(ev.table||'')+' '+(ev.percent!=null?ev.percent+'%':ev.phase||ev.message||'')}]);}catch{}}}}}catch(streamErr){setMsg('✗ Stream error: '+(streamErr?.message||'connection lost'));}setDbMigrating(false);loadDbStatus();}catch(e){setDbMigrating(false);setMsg('✗ Migration failed: '+e.message);}};
258
258
  const cancelMigration=async()=>{await api('/database/migrate/cancel',{method:'POST'});setDbMigrating(false);setMsg('Migration cancelled');};
@@ -1,15 +1,15 @@
1
1
  /**
2
2
  * E2E API Tests — Admin Portal
3
- * Tests real HTTP requests against http://localhost:48721
4
- * Server MUST be running before executing these tests.
3
+ * Tests real HTTP requests against the E2E test server (dynamic port).
4
+ * Server is started by global-setup with an isolated temp database.
5
5
  *
6
6
  * Run: npm run test:e2e-api
7
7
  */
8
8
 
9
9
  import { describe, it, expect, beforeAll, afterAll } from 'vitest';
10
+ import { BASE_URL, API_URL, E2E_PASSWORD } from './setup/e2e-config.js';
10
11
 
11
- const BASE_URL = 'http://localhost:48721';
12
- const API = `${BASE_URL}/api/admin`;
12
+ const API = API_URL;
13
13
 
14
14
  // Admin credentials — sourced from env (vuln-0001: no hardcoded default).
15
15
  // Set ADMIN_INITIAL_PASSWORD to match the running server's admin password.
@@ -1,18 +1,16 @@
1
1
  /**
2
2
  * E2E UI Tests - Admin Portal (Playwright)
3
- * Tests browser interactions against http://localhost:48721/admin
4
- * Server MUST be running before executing these tests.
3
+ * Tests browser interactions against E2E test server (dynamic port).
5
4
  *
6
5
  * Run: npm run test:e2e-ui (or: npx playwright test)
7
6
  */
8
7
 
9
8
  import { test, expect, type Page } from '@playwright/test';
9
+ import { BASE_URL, ADMIN_URL, E2E_PASSWORD } from './setup/e2e-config.js';
10
10
 
11
- const BASE_URL = 'http://localhost:48721';
12
- const ADMIN_URL = `${BASE_URL}/admin`;
13
11
  // Admin credentials — sourced from env (vuln-0001: no hardcoded default).
14
12
  const ADMIN_USERNAME = 'admin';
15
- const ADMIN_PASSWORD = process.env.ADMIN_INITIAL_PASSWORD || 'admin';
13
+ const ADMIN_PASSWORD = process.env.ADMIN_INITIAL_PASSWORD || E2E_PASSWORD;
16
14
 
17
15
  // Helper: login and store token
18
16
  async function login(page: Page): Promise<void> {
@@ -1,4 +1,5 @@
1
1
  import { chromium } from 'playwright';
2
+ const BASE_URL = `http://localhost:${process.env.E2E_PORT || 48721}`;
2
3
 
3
4
  const browser = await chromium.launch();
4
5
  const page = await browser.newPage();
@@ -6,7 +7,7 @@ page.on('console', msg => { if(msg.text().includes('[LOD]')) console.log('CONSOL
6
7
  page.on('pageerror', err => console.log('PAGE ERROR:', err.message));
7
8
 
8
9
  // Login
9
- await page.goto('http://localhost:48721/admin');
10
+ await page.goto(`${BASE_URL}/admin`);
10
11
  await page.waitForSelector('.login-box');
11
12
  await page.fill('input[placeholder="Username"]', 'admin');
12
13
  await page.fill('input[placeholder="Password"]', 'admin');
@@ -1,10 +1,11 @@
1
1
  import { chromium } from 'playwright';
2
+ const BASE_URL = `http://localhost:${process.env.E2E_PORT || 48721}`;
2
3
 
3
4
  const browser = await chromium.launch();
4
5
  const page = await browser.newPage();
5
6
  page.on('console', msg => { if(msg.text().includes('[LOD]')) console.log('CONSOLE:', msg.text()); });
6
7
 
7
- await page.goto('http://localhost:48721/admin');
8
+ await page.goto(`${BASE_URL}/admin`);
8
9
  await page.waitForSelector('.login-box');
9
10
  await page.fill('input[placeholder="Username"]', 'admin');
10
11
  await page.fill('input[placeholder="Password"]', 'admin');
@@ -1,10 +1,11 @@
1
1
  import { chromium } from 'playwright';
2
+ const BASE_URL = `http://localhost:${process.env.E2E_PORT || 48721}`;
2
3
 
3
4
  const browser = await chromium.launch({ headless: false });
4
5
  const page = await browser.newPage();
5
6
  page.on('console', msg => { if(msg.text().includes('[LOD]')) console.log(msg.text()); });
6
7
 
7
- await page.goto('http://localhost:48721/admin');
8
+ await page.goto(`${BASE_URL}/admin`);
8
9
  await page.waitForSelector('.login-box');
9
10
  await page.fill('input[placeholder="Username"]', 'admin');
10
11
  await page.fill('input[placeholder="Password"]', 'admin');
@@ -1,11 +1,12 @@
1
1
  import { chromium } from 'playwright';
2
+ const BASE_URL = `http://localhost:${process.env.E2E_PORT || 48721}`;
2
3
 
3
4
  const browser = await chromium.launch();
4
5
  const page = await browser.newPage();
5
6
  page.on('console', msg => console.log('CONSOLE:', msg.text()));
6
7
  page.on('pageerror', err => console.log('PAGE ERROR:', err.message));
7
8
 
8
- await page.goto('http://localhost:48721/admin');
9
+ await page.goto(`${BASE_URL}/admin`);
9
10
  await page.waitForSelector('.login-box');
10
11
  await page.fill('input[placeholder="Username"]', 'admin');
11
12
  await page.fill('input[placeholder="Password"]', 'admin');
@@ -1,10 +1,11 @@
1
1
  import { chromium } from 'playwright';
2
+ const BASE_URL = `http://localhost:${process.env.E2E_PORT || 48721}`;
2
3
 
3
4
  const browser = await chromium.launch({ headless: false });
4
5
  const page = await browser.newPage();
5
6
  page.on('console', msg => { if(msg.text().includes('[LOD]')) console.log(msg.text()); });
6
7
 
7
- await page.goto('http://localhost:48721/admin');
8
+ await page.goto(`${BASE_URL}/admin`);
8
9
  await page.waitForSelector('.login-box');
9
10
  await page.fill('input[placeholder="Username"]', 'admin');
10
11
  await page.fill('input[placeholder="Password"]', 'admin');
@@ -6,9 +6,7 @@
6
6
  */
7
7
 
8
8
  import { test, expect, type Page } from '@playwright/test';
9
-
10
- const BASE_URL = 'http://localhost:48721';
11
- const ADMIN_URL = `${BASE_URL}/admin`;
9
+ import { BASE_URL, ADMIN_URL } from './setup/e2e-config.js';
12
10
 
13
11
  test.setTimeout(60000);
14
12
 
@@ -1,14 +1,12 @@
1
1
  /**
2
2
  * E2E API Tests — MCP Server (KSA-284: Backend MCP Server)
3
- * Tests real HTTP calls to localhost:48721.
4
- * Server MUST be running before executing these tests.
3
+ * Tests real HTTP calls to the E2E test server (dynamic port).
5
4
  *
6
5
  * Run: npx vitest run tests/e2e/mcp-api.e2e.test.ts
7
6
  */
8
7
 
9
8
  import { describe, it, expect, beforeAll } from 'vitest';
10
-
11
- const BASE_URL = 'http://localhost:48721';
9
+ import { BASE_URL } from './setup/e2e-config.js';
12
10
 
13
11
  // ============================================================
14
12
  // Setup: Verify server is running
@@ -1,15 +1,14 @@
1
1
  /**
2
2
  * E2E Multi-Tenant Isolation Tests — KSA-285
3
3
  * Tests RBAC permission enforcement, roleData rules, and cross-user isolation.
4
- * Server MUST be running at http://localhost:48721.
5
4
  *
6
5
  * Run: npm run test:e2e-api
7
6
  */
8
7
 
9
8
  import { describe, it, expect, beforeAll, afterAll } from 'vitest';
9
+ import { BASE_URL, API_URL } from './setup/e2e-config.js';
10
10
 
11
- const BASE_URL = 'http://localhost:48721';
12
- const API = `${BASE_URL}/api/admin`;
11
+ const API = API_URL;
13
12
 
14
13
  const TEST_ID = Date.now().toString().slice(-6);
15
14
 
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Shared E2E test configuration.
3
+ * Port is dynamically assigned by global-setup and written to a temp file.
4
+ * All test files MUST import from here — never hardcode port.
5
+ */
6
+ import * as fs from 'fs';
7
+ import * as path from 'path';
8
+ import * as os from 'os';
9
+
10
+ const PORT_FILE = path.join(os.tmpdir(), 'sa4e-e2e-port.txt');
11
+
12
+ function readPort(): number {
13
+ try {
14
+ return parseInt(fs.readFileSync(PORT_FILE, 'utf-8').trim(), 10);
15
+ } catch {
16
+ // Fallback: if running against a manually started server
17
+ return parseInt(process.env.E2E_PORT || '48721', 10);
18
+ }
19
+ }
20
+
21
+ export const E2E_PORT = readPort();
22
+ export const BASE_URL = `http://localhost:${E2E_PORT}`;
23
+ export const ADMIN_URL = `${BASE_URL}/admin`;
24
+ export const API_URL = `${BASE_URL}/api/admin`;
25
+ export const E2E_PASSWORD = 'test-admin-pw-01';
26
+ export const PORT_FILE_PATH = PORT_FILE;
@@ -0,0 +1,131 @@
1
+ /**
2
+ * E2E Global Setup — starts a real server with ISOLATED temp database.
3
+ *
4
+ * CRITICAL: Production .code-intel/ is NEVER touched.
5
+ * All data lives in a fresh temp directory that's cleaned up after tests.
6
+ * Port is dynamically assigned (finds a free port) to avoid conflicts.
7
+ */
8
+ import { spawn, type ChildProcess } from 'child_process';
9
+ import * as net from 'net';
10
+ import * as os from 'os';
11
+ import * as path from 'path';
12
+ import * as fs from 'fs';
13
+ import { PORT_FILE_PATH } from './e2e-config.js';
14
+
15
+ const E2E_PASSWORD = 'test-admin-pw-01';
16
+ const STARTUP_TIMEOUT_MS = 30_000;
17
+ const HEALTH_POLL_INTERVAL_MS = 500;
18
+
19
+ let serverProcess: ChildProcess | null = null;
20
+ let tempDataDir: string | null = null;
21
+ let assignedPort: number = 0;
22
+
23
+ async function findFreePort(): Promise<number> {
24
+ return new Promise((resolve, reject) => {
25
+ const srv = net.createServer();
26
+ srv.listen(0, '127.0.0.1', () => {
27
+ const addr = srv.address() as net.AddressInfo;
28
+ const port = addr.port;
29
+ srv.close(() => resolve(port));
30
+ });
31
+ srv.on('error', reject);
32
+ });
33
+ }
34
+
35
+ export async function setup(): Promise<void> {
36
+ // 1. Create isolated temp directory for all DB files
37
+ tempDataDir = fs.mkdtempSync(path.join(os.tmpdir(), 'sa4e-e2e-'));
38
+ console.log(`[E2E Setup] Temp data dir: ${tempDataDir}`);
39
+
40
+ // 2. Find a free port
41
+ assignedPort = await findFreePort();
42
+ console.log(`[E2E Setup] Using free port: ${assignedPort}`);
43
+
44
+ // 3. Write port to temp file so test files can read it
45
+ fs.writeFileSync(PORT_FILE_PATH, String(assignedPort), 'utf-8');
46
+
47
+ // 4. Start server with isolated environment
48
+ const serverEntry = path.resolve(__dirname, '../../../src/index.ts');
49
+ serverProcess = spawn('npx', ['tsx', serverEntry], {
50
+ cwd: path.resolve(__dirname, '../../..'),
51
+ env: {
52
+ ...process.env,
53
+ CODE_INTEL_DATA_DIR: tempDataDir,
54
+ CODE_INTEL_WORKSPACE: tempDataDir,
55
+ CODE_INTEL_PORT: String(assignedPort),
56
+ ADMIN_INITIAL_PASSWORD: E2E_PASSWORD,
57
+ NODE_ENV: 'test',
58
+ LOG_LEVEL: 'warn',
59
+ },
60
+ stdio: ['ignore', 'pipe', 'pipe'],
61
+ shell: true,
62
+ });
63
+
64
+ serverProcess.stdout?.on('data', (d) => {
65
+ const line = d.toString();
66
+ if (line.includes('"level":50') || line.includes('"level":40')) {
67
+ process.stderr.write(`[E2E Server] ${line}`);
68
+ }
69
+ });
70
+
71
+ serverProcess.stderr?.on('data', (d) => {
72
+ process.stderr.write(`[E2E Server ERR] ${d.toString()}`);
73
+ });
74
+
75
+ // 5. Wait for server to become healthy
76
+ await waitForHealth();
77
+ console.log(`[E2E Setup] Server ready on port ${assignedPort}`);
78
+ }
79
+
80
+ export async function teardown(): Promise<void> {
81
+ // 1. Kill server process
82
+ if (serverProcess) {
83
+ serverProcess.kill('SIGTERM');
84
+ await new Promise<void>((resolve) => {
85
+ const timeout = setTimeout(() => {
86
+ serverProcess?.kill('SIGKILL');
87
+ resolve();
88
+ }, 5000);
89
+ serverProcess?.on('exit', () => { clearTimeout(timeout); resolve(); });
90
+ });
91
+ serverProcess = null;
92
+ console.log('[E2E Teardown] Server stopped');
93
+ }
94
+
95
+ // 2. Clean up port file
96
+ try { fs.unlinkSync(PORT_FILE_PATH); } catch { /* ignore */ }
97
+
98
+ // 3. Clean up temp directory (retry on Windows EBUSY)
99
+ if (tempDataDir && fs.existsSync(tempDataDir)) {
100
+ await sleep(1000); // Wait for DB file handles to release on Windows
101
+ try {
102
+ fs.rmSync(tempDataDir, { recursive: true, force: true });
103
+ console.log(`[E2E Teardown] Cleaned temp dir: ${tempDataDir}`);
104
+ } catch (err: any) {
105
+ console.warn(`[E2E Teardown] Could not clean temp dir (EBUSY on Windows is OK): ${err.message}`);
106
+ }
107
+ tempDataDir = null;
108
+ }
109
+ }
110
+
111
+ async function waitForHealth(): Promise<void> {
112
+ const start = Date.now();
113
+ while (Date.now() - start < STARTUP_TIMEOUT_MS) {
114
+ try {
115
+ const res = await fetch(`http://localhost:${assignedPort}/health`, {
116
+ signal: AbortSignal.timeout(2000),
117
+ });
118
+ if (res.ok) return;
119
+ } catch {
120
+ // Server not ready yet
121
+ }
122
+ await sleep(HEALTH_POLL_INTERVAL_MS);
123
+ }
124
+ throw new Error(
125
+ `[E2E Setup] Server did not become healthy within ${STARTUP_TIMEOUT_MS}ms`,
126
+ );
127
+ }
128
+
129
+ function sleep(ms: number): Promise<void> {
130
+ return new Promise((r) => setTimeout(r, ms));
131
+ }
@@ -1,4 +1,5 @@
1
1
  import { chromium } from 'playwright';
2
+ const BASE_URL = `http://localhost:${process.env.E2E_PORT || 48721}`;
2
3
 
3
4
  const browser = await chromium.launch();
4
5
  const page = await browser.newPage();
@@ -6,7 +7,7 @@ const logs = [];
6
7
  page.on('console', msg => logs.push(msg.text()));
7
8
  page.on('pageerror', err => logs.push('ERROR: ' + err.message));
8
9
 
9
- await page.goto('http://localhost:48721/admin');
10
+ await page.goto(`${BASE_URL}/admin`);
10
11
  await page.waitForSelector('.login-box');
11
12
  await page.fill('input[placeholder="Username"]', 'admin');
12
13
  await page.fill('input[placeholder="Password"]', 'admin');
@@ -1,11 +1,12 @@
1
1
  import { chromium } from 'playwright';
2
+ const BASE_URL = `http://localhost:${process.env.E2E_PORT || 48721}`;
2
3
 
3
4
  const browser = await chromium.launch({ headless: false, slowMo: 100 });
4
5
  const page = await browser.newPage();
5
6
  page.on('console', msg => { if(msg.text().includes('[LOD]') || msg.text().includes('Error')) console.log('>', msg.text()); });
6
7
  page.on('pageerror', err => console.log('PAGE ERROR:', err.message));
7
8
 
8
- await page.goto('http://localhost:48721/admin');
9
+ await page.goto(`${BASE_URL}/admin`);
9
10
  await page.waitForSelector('.login-box');
10
11
  await page.fill('input[placeholder="Username"]', 'admin');
11
12
  await page.fill('input[placeholder="Password"]', 'admin');
@@ -1,14 +1,13 @@
1
1
  /**
2
2
  * E2E Tests — Tool Forwarding (KSA-293: Extension Thin Client)
3
3
  * Verifies all 52 expected tools are registered, callable, and return valid responses.
4
- * Server MUST be running before executing these tests.
5
4
  *
6
5
  * Run: npx vitest run tests/e2e/tool-forwarding.e2e.test.ts
7
6
  */
8
7
 
9
8
  import { describe, it, expect, beforeAll } from 'vitest';
9
+ import { BASE_URL } from './setup/e2e-config.js';
10
10
 
11
- const BASE_URL = process.env.CODE_INTEL_TEST_URL || 'http://127.0.0.1:48721';
12
11
  const TEST_TIMEOUT = 30000; // 30s per test for heavy DB queries
13
12
 
14
13
  const EXPECTED_TOOLS = [