test-tool-workflow-state-sync.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #!/usr/bin/env node
  2. import assert from 'assert';
  3. import fs from 'fs';
  4. import os from 'os';
  5. import path from 'path';
  6. import { WebServer } from './src/server/server.js';
  7. function createTempProject() {
  8. const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'vlcode-tool-state-'));
  9. fs.mkdirSync(path.join(dir, '.vl-code'), { recursive: true });
  10. fs.writeFileSync(path.join(dir, '.vl-code', 'workspace.json'), '{}');
  11. return dir;
  12. }
  13. async function main() {
  14. const workDir = createTempProject();
  15. const projectContext = {
  16. workDir,
  17. async load() {},
  18. async scan() {},
  19. isVLProject() { return true; },
  20. getSummary() { return { projectName: path.basename(workDir) }; },
  21. getAllFiles() { return []; },
  22. };
  23. const toolRegistry = {
  24. clear() {},
  25. execute: async () => ({}),
  26. getToolSchemas() { return []; },
  27. };
  28. const server = new WebServer({
  29. config: { workDir, port: 4002 },
  30. orchestrator: null,
  31. projectContext,
  32. contextManager: null,
  33. toolRegistry,
  34. symbolIndex: null,
  35. impactAnalyzer: null,
  36. autoFix: null,
  37. localWorkspace: null,
  38. blueprintContext: null,
  39. });
  40. clearInterval(server._sseHeartbeat);
  41. server.autoExtractMeta = () => {};
  42. server.config._onWorkflowStart('parallel-codegen');
  43. assert.equal(server._currentRunState.active, true);
  44. assert.equal(server._currentRunState.workflowName, 'parallel-codegen');
  45. assert.deepEqual(server._currentRunState.nodeStatuses, {});
  46. server.config._onWorkflowNodeStatus('LLM_010_GenMeta', 'running');
  47. assert.equal(server._currentRunState.nodeStatuses.LLM_010_GenMeta, 'running');
  48. server.config._onWorkflowDone();
  49. await new Promise((resolve) => setTimeout(resolve, 0));
  50. assert.equal(server._currentRunState.active, false);
  51. assert.equal(server._currentRunState.workflowName, null);
  52. assert.equal(server._activeExecutor, null);
  53. server.config._onWorkflowStart('parallel-codegen');
  54. server.config._onWorkflowError('parallel-codegen', 'boom');
  55. assert.equal(server._currentRunState.active, false);
  56. assert.equal(server._currentRunState.workflowName, null);
  57. fs.rmSync(workDir, { recursive: true, force: true });
  58. console.log('\n── Tool Workflow State Sync ──');
  59. console.log('PASS test-tool-workflow-state-sync.js');
  60. }
  61. main().catch((err) => {
  62. console.error(err);
  63. process.exit(1);
  64. });