| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import { CLIProvider } from './src/core/llm-provider.js';
- import { createWorkspaceManagerTool } from './src/tools/workspace-manager.js';
- let passed = 0;
- let failed = 0;
- function test(name, fn) {
- return Promise.resolve()
- .then(fn)
- .then(() => {
- console.log(` ✓ ${name}`);
- passed++;
- })
- .catch((err) => {
- console.log(` ✗ ${name}: ${err.message}`);
- failed++;
- });
- }
- function assert(cond, msg) {
- if (!cond) throw new Error(msg || 'Assertion failed');
- }
- console.log('\n── Dynamic Port Regression ──');
- await test('CLIProvider reads the current config port instead of a startup snapshot', async () => {
- const config = { model: 'claude-opus-4-6', port: 3300 };
- const provider = new CLIProvider(config);
- assert(provider.getServerPort() === 3300, 'expected initial port 3300');
- config.port = 3301;
- assert(provider.getServerPort() === 3301, 'provider should see updated config port');
- });
- await test('WorkspaceManager uses the latest config port at execution time', async () => {
- const config = { port: 3300 };
- const calls = [];
- const originalFetch = global.fetch;
- global.fetch = async (url) => {
- calls.push(url);
- return {
- ok: true,
- async json() {
- return [];
- },
- };
- };
- try {
- const tool = createWorkspaceManagerTool(config);
- config.port = 3301;
- await tool.execute({ action: 'list' });
- } finally {
- global.fetch = originalFetch;
- }
- assert(calls.length === 1, 'expected one fetch call');
- assert(calls[0] === 'http://localhost:3301/api/workspaces', `unexpected URL: ${calls[0]}`);
- });
- console.log(`\n── Results ──\n\n ${passed} passed, ${failed} failed\n`);
- process.exit(failed > 0 ? 1 : 0);
|