@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.
@@ -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":"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"}
1
+ {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../src/services/watcher.ts"],"names":[],"mappings":"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"}
@@ -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 { WorkflowSanitizer } from './workflow-sanitizer.js';
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
- if (!filename.endsWith('.json'))
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 without ID
272
- const newContent = this.readJsonFile(filePath);
273
- if (newContent) {
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 clean = WorkflowSanitizer.cleanForHash(content);
291
- const hash = this.computeHash(clean);
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('.json') || !newFilename.endsWith('.json')) {
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
- // Save to archive with timestamp
413
- const clean = WorkflowSanitizer.cleanForHash(remoteWorkflow);
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, JSON.stringify(clean, null, 2));
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('.json') && !f.startsWith('.'));
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
- const clean = WorkflowSanitizer.cleanForHash(content);
495
- const hash = this.computeHash(clean);
496
- this.localHashes.set(filename, hash);
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
- fs.writeFileSync(filePath, JSON.stringify(content, null, 2));
590
+ await this.writeWorkflowFile(dupFilename, content);
555
591
  // Update local hash for the modified file
556
- const clean = WorkflowSanitizer.cleanForHash(content);
557
- const hash = this.computeHash(clean);
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)}.json`;
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}.json`;
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 clean = WorkflowSanitizer.cleanForHash(fullWf);
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('.json') && !f.startsWith('.'));
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 clean = WorkflowSanitizer.cleanForHash(content);
738
- const computedHash = this.computeHash(clean);
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('.json') && !f.startsWith('.'));
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
- return JSON.parse(fs.readFileSync(filePath, 'utf8'));
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
- writeWorkflowFile(filename, content) {
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
- fs.writeFileSync(filePath, JSON.stringify(content, null, 2));
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 content = fs.readFileSync(filePath, 'utf8');
942
- const workflow = JSON.parse(content);
943
- const workflowId = workflow.id || this.fileToIdMap.get(filename);
944
- if (workflowId) {
945
- workflowsMap.set(workflowId, workflow);
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('.json', ''),
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}.json`;
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('.json', ''),
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}.json`;
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('.json', ''),
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 content = fs.readFileSync(filepath, 'utf-8');
1051
- const workflow = JSON.parse(content);
1052
- workflows.push(workflow);
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);