@n8n-as-code/sync 0.12.0 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/assets/n8n-workflows.d.ts +320 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/services/sync-engine.d.ts +1 -1
- package/dist/services/sync-engine.d.ts.map +1 -1
- package/dist/services/sync-engine.js +51 -25
- package/dist/services/sync-engine.js.map +1 -1
- package/dist/services/sync-manager.d.ts.map +1 -1
- package/dist/services/sync-manager.js +18 -1
- package/dist/services/sync-manager.js.map +1 -1
- package/dist/services/watcher.d.ts +2 -1
- package/dist/services/watcher.d.ts.map +1 -1
- package/dist/services/watcher.js +160 -49
- package/dist/services/watcher.js.map +1 -1
- package/dist/services/workflow-transformer-adapter.d.ts +87 -0
- package/dist/services/workflow-transformer-adapter.d.ts.map +1 -0
- package/dist/services/workflow-transformer-adapter.js +234 -0
- package/dist/services/workflow-transformer-adapter.js.map +1 -0
- package/dist/services/workspace-setup-service.d.ts +36 -0
- package/dist/services/workspace-setup-service.d.ts.map +1 -0
- package/dist/services/workspace-setup-service.js +107 -0
- package/dist/services/workspace-setup-service.js.map +1 -0
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-manager.js","sourceRoot":"","sources":["../../src/services/sync-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync-manager.js","sourceRoot":"","sources":["../../src/services/sync-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -131,9 +131,10 @@ export declare class Watcher extends EventEmitter {
|
|
|
131
131
|
*/
|
|
132
132
|
private findFilenameByWorkflowId;
|
|
133
133
|
private readJsonFile;
|
|
134
|
+
private readWorkflowFile;
|
|
134
135
|
private writeWorkflowFile;
|
|
135
136
|
getFileToIdMap(): Map<string, string>;
|
|
136
|
-
getStatusMatrix(): IWorkflowStatus[]
|
|
137
|
+
getStatusMatrix(): Promise<IWorkflowStatus[]>;
|
|
137
138
|
/**
|
|
138
139
|
* Get last synced hash for a workflow
|
|
139
140
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/services/watcher.ts"],"names":[],"mappings":"AAEA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7E;;;;;;;;;;;GAWG;AACH,qBAAa,OAAQ,SAAQ,YAAY;IACrC,OAAO,CAAC,mBAAmB,CAA0B;IACrD,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,WAAW,CAAW;IAC9B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,cAAc,CAAkB;IAGxC,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,iBAAiB,CAA8C;IAGvE,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,eAAe,CAAqB;IAG5C,OAAO,CAAC,iBAAiB,CAAyH;IAIlJ,OAAO,CAAC,gBAAgB,CAAsE;IAG9F,OAAO,CAAC,gBAAgB,CAAkC;gBAGtD,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,OAAO,CAAC;QACtB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;KACrB;IAYQ,KAAK;IAqFL,IAAI;IAiBjB;;OAEG;IACI,gBAAgB,CAAC,UAAU,EAAE,MAAM;IAI1C;;OAEG;IACI,iBAAiB,CAAC,UAAU,EAAE,MAAM;IAO3C;;OAEG;IACI,0BAA0B,CAAC,QAAQ,EAAE,MAAM;IAIlD;;OAEG;IACI,2BAA2B,CAAC,QAAQ,EAAE,MAAM;IAInD;;OAEG;IACI,kBAAkB,CAAC,UAAU,EAAE,MAAM;IAI5C;;OAEG;IACI,gBAAgB,CAAC,UAAU,EAAE,MAAM;YAI5B,aAAa;
|
|
1
|
+
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/services/watcher.ts"],"names":[],"mappings":"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"}
|
package/dist/services/watcher.js
CHANGED
|
@@ -2,7 +2,7 @@ import fs from 'fs';
|
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import EventEmitter from 'events';
|
|
4
4
|
import chokidar from 'chokidar';
|
|
5
|
-
import {
|
|
5
|
+
import { WorkflowTransformerAdapter } from './workflow-transformer-adapter.js';
|
|
6
6
|
import { HashUtils } from './hash-utils.js';
|
|
7
7
|
import { WorkflowSyncStatus } from '../types.js';
|
|
8
8
|
/**
|
|
@@ -190,12 +190,15 @@ export class Watcher extends EventEmitter {
|
|
|
190
190
|
}
|
|
191
191
|
async onLocalChange(filePath) {
|
|
192
192
|
const filename = path.basename(filePath);
|
|
193
|
-
|
|
193
|
+
console.log(`[Watcher] onLocalChange: ${filename}`);
|
|
194
|
+
if (!filename.endsWith('.workflow.ts'))
|
|
194
195
|
return;
|
|
195
196
|
const content = this.readJsonFile(filePath);
|
|
196
197
|
if (!content) {
|
|
198
|
+
console.log(`[Watcher] ❌ Cannot read file content for ${filename} - readJsonFile returned null`);
|
|
197
199
|
return;
|
|
198
200
|
}
|
|
201
|
+
console.log(`[Watcher] ✅ File content read for ${filename}, ID=${content.id}`);
|
|
199
202
|
// Check if this is a rename operation (following architectural plan)
|
|
200
203
|
const detectedWorkflowId = content.id || this.fileToIdMap.get(filename);
|
|
201
204
|
const pendingOpKey = `unlink:${detectedWorkflowId || filename}`;
|
|
@@ -214,10 +217,12 @@ export class Watcher extends EventEmitter {
|
|
|
214
217
|
}
|
|
215
218
|
// Check if filename is paused (for workflows without ID)
|
|
216
219
|
if (this.pausedFilenames.has(filename)) {
|
|
220
|
+
console.log(`[Watcher] ⏸️ Filename ${filename} is paused, ignoring change`);
|
|
217
221
|
return;
|
|
218
222
|
}
|
|
219
223
|
let workflowId = content.id || this.fileToIdMap.get(filename);
|
|
220
224
|
if (workflowId && (this.isPaused.has(workflowId) || this.syncInProgress.has(workflowId))) {
|
|
225
|
+
console.log(`[Watcher] ⏸️ Workflow ${workflowId} is paused or sync in progress, ignoring change`);
|
|
221
226
|
return;
|
|
222
227
|
}
|
|
223
228
|
// Check for duplicate ID (following architectural plan)
|
|
@@ -267,16 +272,18 @@ export class Watcher extends EventEmitter {
|
|
|
267
272
|
const currentContent = this.readJsonFile(filePath);
|
|
268
273
|
if (currentContent && currentContent.id === content.id) {
|
|
269
274
|
delete currentContent.id;
|
|
270
|
-
this.writeWorkflowFile(filename, currentContent);
|
|
271
|
-
// Re-read the content
|
|
272
|
-
const
|
|
273
|
-
|
|
275
|
+
await this.writeWorkflowFile(filename, currentContent);
|
|
276
|
+
// Re-read the TypeScript content and compute hash
|
|
277
|
+
const tsContent = fs.readFileSync(filePath, 'utf-8');
|
|
278
|
+
try {
|
|
279
|
+
const hash = await WorkflowTransformerAdapter.hashWorkflow(tsContent);
|
|
274
280
|
const workflowId = this.fileToIdMap.get(filename);
|
|
275
|
-
const clean = WorkflowSanitizer.cleanForHash(newContent);
|
|
276
|
-
const hash = this.computeHash(clean);
|
|
277
281
|
this.localHashes.set(filename, hash);
|
|
278
282
|
this.broadcastStatus(filename, workflowId);
|
|
279
283
|
}
|
|
284
|
+
catch (parseErr) {
|
|
285
|
+
console.error(`[Watcher] ❌ Cannot parse "${filename}" after duplicate-ID removal: ${parseErr.message}`);
|
|
286
|
+
}
|
|
280
287
|
}
|
|
281
288
|
return; // Stop processing this file as it's being modified
|
|
282
289
|
// Don't return - continue processing as normal
|
|
@@ -287,13 +294,29 @@ export class Watcher extends EventEmitter {
|
|
|
287
294
|
// IMPORTANT: Hash is calculated on the SANITIZED version
|
|
288
295
|
// This means versionId, versionCounter, pinData, etc. are ignored
|
|
289
296
|
// The file on disk can contain these fields, but they won't affect the hash
|
|
290
|
-
const
|
|
291
|
-
|
|
297
|
+
const tsContent = fs.readFileSync(filePath, 'utf-8');
|
|
298
|
+
let hash;
|
|
299
|
+
try {
|
|
300
|
+
hash = await WorkflowTransformerAdapter.hashWorkflow(tsContent);
|
|
301
|
+
}
|
|
302
|
+
catch (parseErr) {
|
|
303
|
+
// Parsing failed (e.g. invalid identifier characters like → in the class name
|
|
304
|
+
// cause ts-morph to silently drop the class body, resulting in a 0-node compile
|
|
305
|
+
// which would be mistaken as a local modification and pushed, wiping the remote).
|
|
306
|
+
// Log the problem and abort – do NOT update localHashes so the file is not pushed.
|
|
307
|
+
console.error(`[Watcher] ❌ Cannot parse "${filename}" – skipping hash/status update to prevent data loss.\n` +
|
|
308
|
+
` Cause: ${parseErr.message}\n` +
|
|
309
|
+
` Tip: Make sure the class name contains only valid ASCII/identifier characters ` +
|
|
310
|
+
`(→ U+2192 and similar symbols are not allowed in TypeScript identifiers).`);
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
console.log(`[Watcher] 🔢 Hash computed for ${filename}: ${hash.substring(0, 8)}...`);
|
|
292
314
|
this.localHashes.set(filename, hash);
|
|
293
315
|
if (workflowId) {
|
|
294
316
|
this.fileToIdMap.set(filename, workflowId);
|
|
295
317
|
this.idToFileMap.set(workflowId, filename);
|
|
296
318
|
}
|
|
319
|
+
console.log(`[Watcher] 📡 Broadcasting status for ${filename}...`);
|
|
297
320
|
this.broadcastStatus(filename, workflowId);
|
|
298
321
|
}
|
|
299
322
|
async onLocalDelete(filePath) {
|
|
@@ -343,7 +366,7 @@ export class Watcher extends EventEmitter {
|
|
|
343
366
|
async onLocalRename(oldPath, newPath) {
|
|
344
367
|
const oldFilename = path.basename(oldPath);
|
|
345
368
|
const newFilename = path.basename(newPath);
|
|
346
|
-
if (!oldFilename.endsWith('.
|
|
369
|
+
if (!oldFilename.endsWith('.workflow.ts') || !newFilename.endsWith('.workflow.ts')) {
|
|
347
370
|
return;
|
|
348
371
|
}
|
|
349
372
|
// Try to get workflow ID from old filename mapping
|
|
@@ -409,10 +432,13 @@ export class Watcher extends EventEmitter {
|
|
|
409
432
|
if (!fs.existsSync(trashDir)) {
|
|
410
433
|
fs.mkdirSync(trashDir, { recursive: true });
|
|
411
434
|
}
|
|
412
|
-
//
|
|
413
|
-
const
|
|
435
|
+
// Convert to TypeScript and save to archive with timestamp
|
|
436
|
+
const tsCode = await WorkflowTransformerAdapter.convertToTypeScript(remoteWorkflow, {
|
|
437
|
+
format: true,
|
|
438
|
+
commentStyle: 'verbose'
|
|
439
|
+
});
|
|
414
440
|
const archivePath = path.join(trashDir, `${Date.now()}_${filename}`);
|
|
415
|
-
fs.writeFileSync(archivePath,
|
|
441
|
+
fs.writeFileSync(archivePath, tsCode, 'utf-8');
|
|
416
442
|
}
|
|
417
443
|
}
|
|
418
444
|
catch (error) {
|
|
@@ -470,7 +496,7 @@ export class Watcher extends EventEmitter {
|
|
|
470
496
|
this.localHashes.clear();
|
|
471
497
|
return;
|
|
472
498
|
}
|
|
473
|
-
const files = fs.readdirSync(this.directory).filter(f => f.endsWith('.
|
|
499
|
+
const files = fs.readdirSync(this.directory).filter(f => f.endsWith('.workflow.ts') && !f.startsWith('.'));
|
|
474
500
|
const currentFiles = new Set(files);
|
|
475
501
|
// Remove entries for files that no longer exist
|
|
476
502
|
for (const filename of this.localHashes.keys()) {
|
|
@@ -487,17 +513,27 @@ export class Watcher extends EventEmitter {
|
|
|
487
513
|
const fileContents = [];
|
|
488
514
|
for (const filename of files) {
|
|
489
515
|
const filePath = path.join(this.directory, filename);
|
|
490
|
-
const content = this.readJsonFile(filePath);
|
|
516
|
+
const content = this.readJsonFile(filePath); // Quick ID extraction
|
|
491
517
|
if (content) {
|
|
492
518
|
const stat = fs.statSync(filePath);
|
|
493
519
|
fileContents.push({ filename, content, mtime: stat.mtimeMs });
|
|
494
|
-
|
|
495
|
-
const
|
|
496
|
-
|
|
520
|
+
// Compute hash from TypeScript file directly
|
|
521
|
+
const tsContent = fs.readFileSync(filePath, 'utf-8');
|
|
522
|
+
try {
|
|
523
|
+
const hash = await WorkflowTransformerAdapter.hashWorkflow(tsContent);
|
|
524
|
+
this.localHashes.set(filename, hash);
|
|
525
|
+
}
|
|
526
|
+
catch (parseErr) {
|
|
527
|
+
console.error(`[Watcher] ❌ Cannot parse "${filename}" during local scan – skipping.\n` +
|
|
528
|
+
` Cause: ${parseErr.message}\n` +
|
|
529
|
+
` Tip: Make sure the class name contains only valid identifier characters ` +
|
|
530
|
+
`(→ U+2192 and similar symbols are not allowed in TypeScript identifiers).`);
|
|
531
|
+
// Do NOT add to localHashes so this file stays invisible to auto-sync
|
|
532
|
+
}
|
|
497
533
|
}
|
|
498
534
|
}
|
|
499
535
|
// Detect and resolve duplicate IDs (following architectural plan)
|
|
500
|
-
this.resolveDuplicateIds(fileContents);
|
|
536
|
+
await this.resolveDuplicateIds(fileContents);
|
|
501
537
|
// Second pass: update mappings after duplicate resolution
|
|
502
538
|
// CRITICAL: Only update mappings if not already set from persisted state
|
|
503
539
|
// This prevents ID alternation when remote workflows have duplicate names
|
|
@@ -526,7 +562,7 @@ export class Watcher extends EventEmitter {
|
|
|
526
562
|
* Resolve duplicate IDs in local files (following architectural plan)
|
|
527
563
|
* Principle: Keep ID only in the oldest file, remove from others
|
|
528
564
|
*/
|
|
529
|
-
resolveDuplicateIds(fileContents) {
|
|
565
|
+
async resolveDuplicateIds(fileContents) {
|
|
530
566
|
// Group files by workflow ID
|
|
531
567
|
const filesById = new Map();
|
|
532
568
|
for (const { filename, content, mtime } of fileContents) {
|
|
@@ -551,10 +587,10 @@ export class Watcher extends EventEmitter {
|
|
|
551
587
|
const content = this.readJsonFile(filePath);
|
|
552
588
|
if (content) {
|
|
553
589
|
delete content.id;
|
|
554
|
-
|
|
590
|
+
await this.writeWorkflowFile(dupFilename, content);
|
|
555
591
|
// Update local hash for the modified file
|
|
556
|
-
const
|
|
557
|
-
const hash =
|
|
592
|
+
const tsContent = fs.readFileSync(filePath, 'utf-8');
|
|
593
|
+
const hash = await WorkflowTransformerAdapter.hashWorkflow(tsContent);
|
|
558
594
|
this.localHashes.set(dupFilename, hash);
|
|
559
595
|
}
|
|
560
596
|
}
|
|
@@ -606,12 +642,12 @@ export class Watcher extends EventEmitter {
|
|
|
606
642
|
}
|
|
607
643
|
// If still not found, this is a NEW remote workflow - generate filename
|
|
608
644
|
if (!filename) {
|
|
609
|
-
const baseName = `${this.safeName(wf.name)}.
|
|
645
|
+
const baseName = `${this.safeName(wf.name)}.workflow.ts`;
|
|
610
646
|
// Check if this base name is already assigned to another workflow
|
|
611
647
|
if (assignedFilenames.has(baseName)) {
|
|
612
648
|
// Name collision - generate unique filename with ID suffix
|
|
613
649
|
const idSuffix = wf.id.substring(0, 8);
|
|
614
|
-
filename = `${this.safeName(wf.name)}_${idSuffix}.
|
|
650
|
+
filename = `${this.safeName(wf.name)}_${idSuffix}.workflow.ts`;
|
|
615
651
|
}
|
|
616
652
|
else {
|
|
617
653
|
// Name is free - use it
|
|
@@ -644,8 +680,7 @@ export class Watcher extends EventEmitter {
|
|
|
644
680
|
try {
|
|
645
681
|
const fullWf = await this.client.getWorkflow(wf.id);
|
|
646
682
|
if (fullWf) {
|
|
647
|
-
const
|
|
648
|
-
const hash = this.computeHash(clean);
|
|
683
|
+
const hash = await WorkflowTransformerAdapter.hashWorkflowFromJson(fullWf);
|
|
649
684
|
this.remoteHashes.set(wf.id, hash);
|
|
650
685
|
if (wf.updatedAt) {
|
|
651
686
|
this.remoteTimestamps.set(wf.id, wf.updatedAt);
|
|
@@ -712,7 +747,7 @@ export class Watcher extends EventEmitter {
|
|
|
712
747
|
// If workflow not tracked yet (first sync of local-only workflow),
|
|
713
748
|
// scan directory to find the file with this ID
|
|
714
749
|
if (!filename) {
|
|
715
|
-
const files = fs.readdirSync(this.directory).filter(f => f.endsWith('.
|
|
750
|
+
const files = fs.readdirSync(this.directory).filter(f => f.endsWith('.workflow.ts') && !f.startsWith('.'));
|
|
716
751
|
for (const file of files) {
|
|
717
752
|
const filePath = path.join(this.directory, file);
|
|
718
753
|
const content = this.readJsonFile(filePath);
|
|
@@ -734,8 +769,8 @@ export class Watcher extends EventEmitter {
|
|
|
734
769
|
if (!content) {
|
|
735
770
|
throw new Error(`Cannot finalize sync: local file not found for ${workflowId}`);
|
|
736
771
|
}
|
|
737
|
-
const
|
|
738
|
-
const computedHash =
|
|
772
|
+
const tsContent = fs.readFileSync(filePath, 'utf-8');
|
|
773
|
+
const computedHash = await WorkflowTransformerAdapter.hashWorkflow(tsContent);
|
|
739
774
|
// After a successful sync, local and remote should be identical
|
|
740
775
|
// Use the computed hash for both
|
|
741
776
|
const localHash = computedHash;
|
|
@@ -833,7 +868,9 @@ export class Watcher extends EventEmitter {
|
|
|
833
868
|
const status = this.calculateStatus(filename, workflowId);
|
|
834
869
|
const key = workflowId || filename;
|
|
835
870
|
const lastStatus = this.lastKnownStatuses.get(key);
|
|
871
|
+
console.log(`[Watcher] Status for ${filename}: ${status} (last: ${lastStatus || 'none'})`);
|
|
836
872
|
if (status !== lastStatus) {
|
|
873
|
+
console.log(`[Watcher] 🔔 Status changed! Emitting statusChange event`);
|
|
837
874
|
this.lastKnownStatuses.set(key, status);
|
|
838
875
|
this.emit('statusChange', {
|
|
839
876
|
filename,
|
|
@@ -841,6 +878,9 @@ export class Watcher extends EventEmitter {
|
|
|
841
878
|
status
|
|
842
879
|
});
|
|
843
880
|
}
|
|
881
|
+
else {
|
|
882
|
+
console.log(`[Watcher] Status unchanged, not emitting event`);
|
|
883
|
+
}
|
|
844
884
|
}
|
|
845
885
|
calculateStatus(filename, workflowId) {
|
|
846
886
|
if (!workflowId)
|
|
@@ -855,6 +895,13 @@ export class Watcher extends EventEmitter {
|
|
|
855
895
|
const state = this.loadState();
|
|
856
896
|
const baseState = workflowId ? state.workflows[workflowId] : undefined;
|
|
857
897
|
const lastSyncedHash = baseState?.lastSyncedHash;
|
|
898
|
+
// Debug logging for new files
|
|
899
|
+
if (!workflowId && localHash) {
|
|
900
|
+
console.log(`[Watcher] 🆕 calculateStatus for NEW file: ${filename}`);
|
|
901
|
+
console.log(` localHash: ${localHash ? localHash.substring(0, 8) : 'none'}`);
|
|
902
|
+
console.log(` lastSyncedHash: ${lastSyncedHash ? lastSyncedHash.substring(0, 8) : 'none'}`);
|
|
903
|
+
console.log(` remoteHash: ${remoteHash ? remoteHash.substring(0, 8) : 'none'}`);
|
|
904
|
+
}
|
|
858
905
|
// Implementation of 4.2 Status Logic Matrix
|
|
859
906
|
if (localHash && !lastSyncedHash && !remoteHash)
|
|
860
907
|
return WorkflowSyncStatus.EXIST_ONLY_LOCALLY;
|
|
@@ -879,6 +926,7 @@ export class Watcher extends EventEmitter {
|
|
|
879
926
|
return WorkflowSyncStatus.MODIFIED_REMOTELY;
|
|
880
927
|
}
|
|
881
928
|
// Fallback for edge cases
|
|
929
|
+
console.warn(`[Watcher] ⚠️ CONFLICT fallback for ${filename}:`, { localHash: !!localHash, remoteHash: !!remoteHash, lastSyncedHash: !!lastSyncedHash, workflowId });
|
|
882
930
|
return WorkflowSyncStatus.CONFLICT;
|
|
883
931
|
}
|
|
884
932
|
shouldIgnore(wf) {
|
|
@@ -903,7 +951,7 @@ export class Watcher extends EventEmitter {
|
|
|
903
951
|
return undefined;
|
|
904
952
|
}
|
|
905
953
|
const files = fs.readdirSync(this.directory)
|
|
906
|
-
.filter(f => f.endsWith('.
|
|
954
|
+
.filter(f => f.endsWith('.workflow.ts') && !f.startsWith('.'));
|
|
907
955
|
for (const file of files) {
|
|
908
956
|
const content = this.readJsonFile(path.join(this.directory, file));
|
|
909
957
|
if (content?.id === workflowId) {
|
|
@@ -914,20 +962,81 @@ export class Watcher extends EventEmitter {
|
|
|
914
962
|
}
|
|
915
963
|
readJsonFile(filePath) {
|
|
916
964
|
try {
|
|
917
|
-
|
|
965
|
+
// For TypeScript workflow files, we need async parsing
|
|
966
|
+
// This method should only be called for extracting workflow ID
|
|
967
|
+
// For full workflow data, use readWorkflowFile (async)
|
|
968
|
+
const content = fs.readFileSync(filePath, 'utf8');
|
|
969
|
+
if (filePath.endsWith('.workflow.ts')) {
|
|
970
|
+
// Quick extraction of workflow ID and name from TypeScript decorator
|
|
971
|
+
// Look for: @workflow({ id: "...", name: "..." })
|
|
972
|
+
const decoratorMatch = content.match(/@workflow\s*\(\s*\{([^}]+)\}/);
|
|
973
|
+
if (decoratorMatch) {
|
|
974
|
+
const decoratorContent = decoratorMatch[1];
|
|
975
|
+
const result = {};
|
|
976
|
+
// Extract id if present
|
|
977
|
+
const idMatch = decoratorContent.match(/id:\s*["']([^"']+)["']/);
|
|
978
|
+
if (idMatch) {
|
|
979
|
+
result.id = idMatch[1];
|
|
980
|
+
}
|
|
981
|
+
// Extract name if present
|
|
982
|
+
const nameMatch = decoratorContent.match(/name:\s*["']([^"']+)["']/);
|
|
983
|
+
if (nameMatch) {
|
|
984
|
+
result.name = nameMatch[1];
|
|
985
|
+
}
|
|
986
|
+
// Return at least the extracted data (even if no id)
|
|
987
|
+
// This allows EXIST_ONLY_LOCALLY workflows to be detected
|
|
988
|
+
return Object.keys(result).length > 0 ? result : {};
|
|
989
|
+
}
|
|
990
|
+
// Fallback: If file contains JSON (for tests/transition), parse it
|
|
991
|
+
try {
|
|
992
|
+
const jsonData = JSON.parse(content);
|
|
993
|
+
// Return workflow data even if it doesn't have an ID
|
|
994
|
+
// (workflows without ID should be detected as EXIST_ONLY_LOCALLY)
|
|
995
|
+
return jsonData;
|
|
996
|
+
}
|
|
997
|
+
catch {
|
|
998
|
+
// Not JSON, and no decorator match - but still valid .workflow.ts file
|
|
999
|
+
// Return empty object to allow detection
|
|
1000
|
+
}
|
|
1001
|
+
return {};
|
|
1002
|
+
}
|
|
1003
|
+
else {
|
|
1004
|
+
// Legacy JSON files
|
|
1005
|
+
return JSON.parse(content);
|
|
1006
|
+
}
|
|
918
1007
|
}
|
|
919
1008
|
catch {
|
|
920
1009
|
return null;
|
|
921
1010
|
}
|
|
922
1011
|
}
|
|
923
|
-
|
|
1012
|
+
async readWorkflowFile(filePath) {
|
|
1013
|
+
try {
|
|
1014
|
+
const content = fs.readFileSync(filePath, 'utf8');
|
|
1015
|
+
if (filePath.endsWith('.workflow.ts')) {
|
|
1016
|
+
return await WorkflowTransformerAdapter.compileToJson(content);
|
|
1017
|
+
}
|
|
1018
|
+
else {
|
|
1019
|
+
// Legacy JSON files
|
|
1020
|
+
return JSON.parse(content);
|
|
1021
|
+
}
|
|
1022
|
+
}
|
|
1023
|
+
catch {
|
|
1024
|
+
return null;
|
|
1025
|
+
}
|
|
1026
|
+
}
|
|
1027
|
+
async writeWorkflowFile(filename, workflow) {
|
|
924
1028
|
const filePath = path.join(this.directory, filename);
|
|
925
|
-
|
|
1029
|
+
// Always write as TypeScript
|
|
1030
|
+
const tsCode = await WorkflowTransformerAdapter.convertToTypeScript(workflow, {
|
|
1031
|
+
format: true,
|
|
1032
|
+
commentStyle: 'verbose'
|
|
1033
|
+
});
|
|
1034
|
+
fs.writeFileSync(filePath, tsCode, 'utf-8');
|
|
926
1035
|
}
|
|
927
1036
|
getFileToIdMap() {
|
|
928
1037
|
return this.fileToIdMap;
|
|
929
1038
|
}
|
|
930
|
-
getStatusMatrix() {
|
|
1039
|
+
async getStatusMatrix() {
|
|
931
1040
|
const results = new Map();
|
|
932
1041
|
const state = this.loadState();
|
|
933
1042
|
// Get workflows with metadata for project info
|
|
@@ -938,11 +1047,12 @@ export class Watcher extends EventEmitter {
|
|
|
938
1047
|
const filePath = path.join(this.directory, filename);
|
|
939
1048
|
if (fs.existsSync(filePath)) {
|
|
940
1049
|
try {
|
|
941
|
-
const
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
1050
|
+
const workflow = await this.readWorkflowFile(filePath);
|
|
1051
|
+
if (workflow) {
|
|
1052
|
+
const workflowId = workflow.id || this.fileToIdMap.get(filename);
|
|
1053
|
+
if (workflowId) {
|
|
1054
|
+
workflowsMap.set(workflowId, workflow);
|
|
1055
|
+
}
|
|
946
1056
|
}
|
|
947
1057
|
}
|
|
948
1058
|
catch (e) {
|
|
@@ -961,7 +1071,7 @@ export class Watcher extends EventEmitter {
|
|
|
961
1071
|
const workflow = workflowId ? workflowsMap.get(workflowId) : undefined;
|
|
962
1072
|
results.set(filename, {
|
|
963
1073
|
id: workflowId || '',
|
|
964
|
-
name: workflow?.name || filename.replace('.
|
|
1074
|
+
name: workflow?.name || filename.replace('.workflow.ts', ''),
|
|
965
1075
|
filename: filename,
|
|
966
1076
|
status: status,
|
|
967
1077
|
active: workflow?.active ?? true,
|
|
@@ -975,13 +1085,13 @@ export class Watcher extends EventEmitter {
|
|
|
975
1085
|
for (const [workflowId, remoteHash] of this.remoteHashes.entries()) {
|
|
976
1086
|
// Use persisted filename from state for stability
|
|
977
1087
|
const persistedFilename = state.workflows[workflowId]?.filename;
|
|
978
|
-
const filename = persistedFilename || this.idToFileMap.get(workflowId) || `${workflowId}.
|
|
1088
|
+
const filename = persistedFilename || this.idToFileMap.get(workflowId) || `${workflowId}.workflow.ts`;
|
|
979
1089
|
if (!results.has(filename)) {
|
|
980
1090
|
const status = this.calculateStatus(filename, workflowId);
|
|
981
1091
|
const workflow = workflowsMap.get(workflowId);
|
|
982
1092
|
results.set(filename, {
|
|
983
1093
|
id: workflowId,
|
|
984
|
-
name: workflow?.name || filename.replace('.
|
|
1094
|
+
name: workflow?.name || filename.replace('.workflow.ts', ''),
|
|
985
1095
|
filename: filename,
|
|
986
1096
|
status: status,
|
|
987
1097
|
active: workflow?.active ?? true,
|
|
@@ -996,13 +1106,13 @@ export class Watcher extends EventEmitter {
|
|
|
996
1106
|
for (const id of Object.keys(state.workflows)) {
|
|
997
1107
|
// Use persisted filename from state for stability
|
|
998
1108
|
const persistedFilename = state.workflows[id].filename;
|
|
999
|
-
const filename = persistedFilename || this.idToFileMap.get(id) || `${id}.
|
|
1109
|
+
const filename = persistedFilename || this.idToFileMap.get(id) || `${id}.workflow.ts`;
|
|
1000
1110
|
if (!results.has(filename)) {
|
|
1001
1111
|
const status = this.calculateStatus(filename, id);
|
|
1002
1112
|
const workflow = workflowsMap.get(id);
|
|
1003
1113
|
results.set(filename, {
|
|
1004
1114
|
id,
|
|
1005
|
-
name: workflow?.name || filename.replace('.
|
|
1115
|
+
name: workflow?.name || filename.replace('.workflow.ts', ''),
|
|
1006
1116
|
filename,
|
|
1007
1117
|
status,
|
|
1008
1118
|
active: workflow?.active ?? true,
|
|
@@ -1047,9 +1157,10 @@ export class Watcher extends EventEmitter {
|
|
|
1047
1157
|
for (const [filename, _] of this.localHashes.entries()) {
|
|
1048
1158
|
const filepath = path.join(this.directory, filename);
|
|
1049
1159
|
try {
|
|
1050
|
-
const
|
|
1051
|
-
|
|
1052
|
-
|
|
1160
|
+
const workflow = await this.readWorkflowFile(filepath);
|
|
1161
|
+
if (workflow) {
|
|
1162
|
+
workflows.push(workflow);
|
|
1163
|
+
}
|
|
1053
1164
|
}
|
|
1054
1165
|
catch (error) {
|
|
1055
1166
|
console.warn(`[Watcher] Failed to read local workflow ${filename}:`, error);
|