| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #!/usr/bin/env node
- import assert from 'assert';
- import fs from 'fs';
- import os from 'os';
- import path from 'path';
- import { ensureProjectProfile } from './src/server/helpers.js';
- function makeTempProject() {
- const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'vlcode-workflow-sync-'));
- fs.mkdirSync(path.join(dir, '.vl-code', 'workflows'), { recursive: true });
- fs.mkdirSync(path.join(dir, 'Apps'), { recursive: true });
- fs.writeFileSync(path.join(dir, 'Apps', 'Demo.vx'), '// VL_VERSION:3.5\n');
- return dir;
- }
- function main() {
- const seedWorkflowDir = path.join(process.cwd(), 'public', 'seed-workflows');
- const projectDir = makeTempProject();
- const staleWorkflow = {
- version: '3.16',
- name: 'AddPage',
- registry: {
- vars: ['$updatedMeta(OBJECT)', '$newSection(OBJECT)'],
- docs: {
- '1': 'VL 3.5 Syntax Rules',
- '80': 'Agent-800-Section: Section business logic + UI',
- '90': 'Agent-900-App: App entry + routing',
- },
- },
- steps: [
- {
- id: 'LLM_050_UpdateApp',
- in: { docs: ['1', '90'] },
- out: {},
- },
- ],
- };
- const targetPath = path.join(projectDir, '.vl-code', 'workflows', 'add-page.json');
- fs.writeFileSync(targetPath, JSON.stringify(staleWorkflow, null, 2), 'utf-8');
- ensureProjectProfile(projectDir, seedWorkflowDir);
- const refreshedWorkflow = JSON.parse(fs.readFileSync(targetPath, 'utf-8'));
- const updateAppStep = refreshedWorkflow.steps.find((step) => step.id === 'LLM_050_UpdateApp');
- assert(
- refreshedWorkflow.registry.vars.some((entry) => String(entry).includes('$targetAppFilePath')),
- 'should refresh stale add-page workflow with targetAppFilePath support'
- );
- assert(
- updateAppStep?.in?.readFiles?.length > 0,
- 'should refresh stale add-page workflow with app readFiles input'
- );
- assert(
- updateAppStep?.out && Object.keys(updateAppStep.out).length > 0,
- 'should refresh stale add-page workflow with app output mapping'
- );
- fs.rmSync(projectDir, { recursive: true, force: true });
- console.log('\n── Workflow Seed Sync ──');
- console.log('PASS test-workflow-seed-sync.js');
- }
- main();
|