| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- #!/usr/bin/env node
- import fs from 'fs';
- import os from 'os';
- import path from 'path';
- import { DOCCENTER_API_URL } from '../src/data/doc-paths.js';
- const ROOT = '/Users/ivx/Documents/VLCode-Lite';
- const SPEC_PATH = path.join(ROOT, 'docs', 'vl-workflow-spec-3.18.md');
- const AUTH_PATH = path.join(os.homedir(), '.vl-code', 'auth.json');
- const APPLY = process.argv.includes('--apply');
- const cookie = process.env.DOCCENTER_COOKIE || (() => {
- try {
- return JSON.parse(fs.readFileSync(AUTH_PATH, 'utf-8')).cookie;
- } catch {
- return '';
- }
- })();
- if (!cookie) {
- console.error('Missing DocCenter cookie. Set DOCCENTER_COOKIE or login so ~/.vl-code/auth.json exists.');
- process.exit(1);
- }
- const headers = {
- 'Content-Type': 'application/json',
- Cookie: String(cookie).startsWith('ih5bearer=') ? String(cookie) : `ih5bearer=${cookie}`,
- };
- async function dcPost(endpoint, body) {
- const res = await fetch(`${DOCCENTER_API_URL}/${endpoint}`, {
- method: 'POST',
- headers,
- body: JSON.stringify(body),
- });
- const text = await res.text();
- try {
- return JSON.parse(text);
- } catch {
- throw new Error(`DocCenter returned non-JSON for ${endpoint}: ${text.slice(0, 300)}`);
- }
- }
- async function loadDocByPath(docPath) {
- const list = await dcPost('SERVICE_DocCenter_GetDocList', {
- keyword: 'Workflow Spec',
- tagId: 0,
- page: 1,
- pageSize: 100,
- });
- return (list?.data || []).find(doc => String(doc.path) === String(docPath)) || null;
- }
- async function main() {
- const currentContent = fs.readFileSync(SPEC_PATH, 'utf-8');
- const existing = await loadDocByPath(3);
- if (!existing) {
- throw new Error('DocCenter Path 3 was not found');
- }
- const docId = existing._id || existing.id;
- const remote = await dcPost('SERVICE_DocCenter_GetDocById', { docId });
- const remoteContent = remote?.data?.currentContent || '';
- if (remoteContent === currentContent) {
- console.log(`unchanged path 3 VL Workflow Spec 3.18 (docId ${docId})`);
- return;
- }
- if (!APPLY) {
- console.log(`publish path 3 VL Workflow Spec 3.18 (docId ${docId})`);
- return;
- }
- const result = await dcPost('SERVICE_DocCenter_SaveAsVersion', {
- path: '3',
- name: 'VL Workflow Spec 3.18',
- description: 'Canonical workflow specification with Doc ID resolution priority, Tool_* extension profiles, tool events, clientRunToken, and checkpoint rerun semantics.',
- currentContent,
- changeNote: 'v3.18 — document Doc ID priority, locked core spec slots, Tool_* runtime semantics, and workflow-of-workflows compatibility',
- });
- console.log(JSON.stringify({
- success: result?.success ?? null,
- message: result?.message ?? null,
- data: result?.data ?? null,
- }, null, 2));
- }
- main().catch(err => {
- console.error(err.message);
- process.exit(1);
- });
|