| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- #!/usr/bin/env node
- import assert from 'assert';
- import fs from 'fs';
- import os from 'os';
- import path from 'path';
- import { WebServer } from './src/server/server.js';
- import { createVLGenerateTool } from './src/tools/vl-generate.js';
- import { createVLAdjustTool } from './src/tools/vl-adjust.js';
- import { createWorkflowRunTool } from './src/tools/workflow-run.js';
- function createTempProject() {
- const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'vlcode-workflow-status-'));
- fs.mkdirSync(path.join(dir, '.vl-code'), { recursive: true });
- fs.writeFileSync(path.join(dir, '.vl-code', 'workspace.json'), '{}');
- return dir;
- }
- async function main() {
- const workDir = createTempProject();
- const projectContext = {
- workDir,
- async load() {},
- async scan() {},
- isVLProject() { return true; },
- getSummary() { return { projectName: path.basename(workDir) }; },
- getAllFiles() { return []; },
- };
- const toolRegistry = {
- clear() {},
- execute: async () => ({}),
- getToolSchemas() { return []; },
- };
- const server = new WebServer({
- config: { workDir, port: 4002 },
- orchestrator: null,
- projectContext,
- contextManager: null,
- toolRegistry,
- symbolIndex: null,
- impactAnalyzer: null,
- autoFix: null,
- localWorkspace: null,
- blueprintContext: null,
- });
- clearInterval(server._sseHeartbeat);
- server.autoExtractMeta = () => {};
- const generateTool = createVLGenerateTool(server.config);
- const adjustTool = createVLAdjustTool(server.config);
- const workflowTool = createWorkflowRunTool(server.config);
- let status = JSON.parse(await generateTool.execute({ action: 'status' }));
- assert.equal(status.active, false);
- assert.equal(status.workflowName, null);
- assert.equal(status.projectName, path.basename(workDir));
- server.config._onWorkflowStart('3-file');
- server.config._onWorkflowNodeStatus('LLM_100_PRD', 'running');
- server.config._recordWorkflowEvent({
- type: 'wf_node_start',
- nodeId: 'LLM_100_PRD',
- title: 'PRD Analysis',
- nodeType: 'LLM',
- input: { docs: ['31'] },
- });
- status = JSON.parse(await generateTool.execute({ action: 'status' }));
- assert.equal(status.active, true);
- assert.equal(status.workflowName, '3-file');
- assert.equal(status.nodeStatuses.LLM_100_PRD, 'running');
- assert.equal(status.nodeDetails.LLM_100_PRD.title, 'PRD Analysis');
- assert.equal(status.timeline[0].type, 'wf_node_start');
- let adjustStatus = JSON.parse(await adjustTool.execute({ action: 'status' }));
- assert.equal(adjustStatus.active, true);
- assert.equal(adjustStatus.workflowName, '3-file');
- assert.equal(adjustStatus.nodeDetails.LLM_100_PRD.type, 'LLM');
- let workflowStatus = JSON.parse(await workflowTool.execute({ mode: 'status' }));
- assert.equal(workflowStatus.active, true);
- assert.equal(workflowStatus.workflowName, '3-file');
- assert.equal(workflowStatus.nodeDetails.LLM_100_PRD.status, 'running');
- server.config._onWorkflowDone();
- await new Promise((resolve) => setTimeout(resolve, 0));
- adjustStatus = JSON.parse(await adjustTool.execute({ action: 'status' }));
- assert.equal(adjustStatus.active, false);
- assert.equal(adjustStatus.workflowName, null);
- workflowStatus = JSON.parse(await workflowTool.execute({ mode: 'status' }));
- assert.equal(workflowStatus.active, false);
- assert.equal(workflowStatus.workflowName, null);
- fs.rmSync(workDir, { recursive: true, force: true });
- console.log('\n── Workflow Status Tools ──');
- console.log('PASS test-workflow-status-tools.js');
- }
- main().catch((err) => {
- console.error(err);
- process.exit(1);
- });
|