@sudocode-ai/cli 0.1.17 → 0.1.18-dev.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.
@@ -7,6 +7,8 @@
7
7
  * - Metadata merging (relationships, tags)
8
8
  */
9
9
  import * as fs from "fs";
10
+ import { toYaml, fromYaml } from "./yaml-converter.js";
11
+ import { mergeYamlContent } from "./git-merge.js";
10
12
  /**
11
13
  * Check if file contains git conflict markers
12
14
  */
@@ -135,6 +137,9 @@ function generateConflictId(originalId, uuid) {
135
137
  }
136
138
  /**
137
139
  * Merge metadata from multiple versions of same entity
140
+ *
141
+ * USE FOR: Two-way merge scenarios (manual conflict resolution)
142
+ * Merges both array fields (union) and scalar fields (latest-wins)
138
143
  */
139
144
  export function mergeMetadata(entities) {
140
145
  // Sort by updated_at, keep most recent as base
@@ -182,9 +187,114 @@ export function mergeMetadata(entities) {
182
187
  }
183
188
  return base;
184
189
  }
190
+ /**
191
+ * Merge ONLY array fields from multiple versions (union semantics)
192
+ *
193
+ * USE FOR: Three-way merge scenarios (git merge driver)
194
+ * Only merges array fields (relationships, tags, feedback)
195
+ * Scalar fields (status, priority, title, etc.) are NOT merged
196
+ *
197
+ * This allows git merge-file to see actual differences in scalar fields
198
+ * for proper three-way merge semantics.
199
+ */
200
+ export function mergeArrayFields(entities) {
201
+ const result = {};
202
+ // Merge relationships (union of unique)
203
+ const relationshipSet = new Set();
204
+ for (const entity of entities) {
205
+ if (entity.relationships) {
206
+ for (const rel of entity.relationships) {
207
+ relationshipSet.add(JSON.stringify(rel));
208
+ }
209
+ }
210
+ }
211
+ if (relationshipSet.size > 0) {
212
+ result.relationships = Array.from(relationshipSet).map((r) => JSON.parse(r));
213
+ }
214
+ // Merge tags (union of unique)
215
+ const tagSet = new Set();
216
+ for (const entity of entities) {
217
+ if (entity.tags) {
218
+ for (const tag of entity.tags) {
219
+ tagSet.add(tag);
220
+ }
221
+ }
222
+ }
223
+ if (tagSet.size > 0) {
224
+ result.tags = Array.from(tagSet);
225
+ }
226
+ // Merge feedback if present (union of unique by id)
227
+ const hasFeedback = entities.some((e) => e.feedback);
228
+ if (hasFeedback) {
229
+ const feedbackMap = new Map();
230
+ for (const entity of entities) {
231
+ if (entity.feedback) {
232
+ for (const fb of entity.feedback) {
233
+ if (!feedbackMap.has(fb.id)) {
234
+ feedbackMap.set(fb.id, fb);
235
+ }
236
+ }
237
+ }
238
+ }
239
+ if (feedbackMap.size > 0) {
240
+ result.feedback = Array.from(feedbackMap.values());
241
+ }
242
+ }
243
+ return result;
244
+ }
245
+ /**
246
+ * Resolve git conflict markers in YAML content using latest-wins per block
247
+ *
248
+ * When git merge-file produces conflicts in YAML, this function resolves
249
+ * each conflict block individually while preserving cleanly merged sections.
250
+ *
251
+ * @param yamlWithConflicts - YAML content containing git conflict markers
252
+ * @param useOurs - If true, use "ours" side for conflicts; if false, use "theirs"
253
+ * @returns Resolved YAML content without conflict markers
254
+ *
255
+ * @example
256
+ * ```typescript
257
+ * const yaml = `title: test
258
+ * <<<<<<< ours
259
+ * content: ours text
260
+ * =======
261
+ * content: theirs text
262
+ * >>>>>>> theirs
263
+ * priority: 3`;
264
+ *
265
+ * const resolved = resolveYamlConflicts(yaml, true);
266
+ * // Returns: "title: test\ncontent: ours text\npriority: 3"
267
+ * ```
268
+ */
269
+ export function resolveYamlConflicts(yamlWithConflicts, useOurs) {
270
+ const sections = parseMergeConflictFile(yamlWithConflicts);
271
+ const resolved = [];
272
+ for (const section of sections) {
273
+ if (section.type === 'clean') {
274
+ // Keep cleanly merged content
275
+ resolved.push(...section.lines);
276
+ }
277
+ else {
278
+ // Conflict block - apply latest-wins
279
+ const chosen = useOurs ? section.ours : section.theirs;
280
+ resolved.push(...chosen);
281
+ }
282
+ }
283
+ return resolved.join('\n');
284
+ }
185
285
  /**
186
286
  * Resolve all entities using UUID-based deduplication
187
287
  * Handles different UUIDs, same UUID conflicts, and metadata merging
288
+ *
289
+ * USE CASE: TWO-WAY MERGE
290
+ * - Manual conflict resolution (sudocode resolve-conflicts)
291
+ * - Conflicts already isolated by git conflict markers
292
+ * - No base version available (git index cleared after conflict)
293
+ * - Simple UUID deduplication is sufficient and faster
294
+ * - No benefit from YAML expansion overhead
295
+ *
296
+ * DO NOT USE FOR: Three-way merge with base/ours/theirs
297
+ * For that case, use mergeThreeWay() instead.
188
298
  */
189
299
  export function resolveEntities(entities, options = {}) {
190
300
  const stats = {
@@ -288,14 +398,319 @@ export function resolveEntities(entities, options = {}) {
288
398
  stats.totalOutput = finalResolved.length;
289
399
  return { entities: finalResolved, stats };
290
400
  }
401
+ /**
402
+ * Helper function to merge entities using YAML + git merge-file for line-level merging
403
+ */
404
+ function mergeYamlWithGit(versions, originalTimestamps) {
405
+ const { base, ours, theirs } = versions;
406
+ // Convert to YAML
407
+ const baseYaml = base ? toYaml(base) : "";
408
+ const oursYaml = ours ? toYaml(ours) : "";
409
+ const theirsYaml = theirs ? toYaml(theirs) : "";
410
+ // Run git merge-file for line-level merging
411
+ const mergeResult = mergeYamlContent({
412
+ base: baseYaml,
413
+ ours: oursYaml,
414
+ theirs: theirsYaml,
415
+ });
416
+ if (mergeResult.success && !mergeResult.hasConflicts) {
417
+ // Clean merge - parse YAML back to JSON
418
+ const mergedEntity = fromYaml(mergeResult.content);
419
+ return { success: true, entity: mergedEntity, hadConflicts: false };
420
+ }
421
+ else if (mergeResult.hasConflicts) {
422
+ // YAML has conflicts - resolve each conflict block individually
423
+ // Determine which side is newer for latest-wins decision
424
+ // Use original timestamps if provided (since versions may have updated_at stripped)
425
+ // When timestamps are identical, prefer ours for stability
426
+ const oursTimestamp = originalTimestamps?.ours ?? ours?.updated_at;
427
+ const theirsTimestamp = originalTimestamps?.theirs ?? theirs?.updated_at;
428
+ const oursNewer = compareTimestamps(oursTimestamp, theirsTimestamp) >= 0;
429
+ // Resolve conflict blocks, preserving cleanly merged sections
430
+ const resolvedYaml = resolveYamlConflicts(mergeResult.content, oursNewer);
431
+ const mergedEntity = fromYaml(resolvedYaml);
432
+ return { success: true, entity: mergedEntity, hadConflicts: true };
433
+ }
434
+ else {
435
+ // Fatal error during merge
436
+ return { success: false, entity: ours, hadConflicts: false };
437
+ }
438
+ }
291
439
  /**
292
440
  * Three-way merge for git merge driver
293
- * Merges base, ours, and theirs versions
441
+ * Uses hybrid approach: field-level merge for scalars + line-level merge for multi-line text
442
+ *
443
+ * USE CASE: THREE-WAY MERGE
444
+ * - Git merge driver operations (automatic merge)
445
+ * - Worktree sync with true base/ours/theirs versions
446
+ * - Field-level merging preserves changes from either branch
447
+ *
448
+ * DO NOT USE FOR: Manual conflict resolution (use resolveEntities)
449
+ *
450
+ * This function implements true three-way merge semantics:
451
+ * 1. Group entities by UUID across base/ours/theirs
452
+ * 2. Handle deletion cases (modification wins over deletion)
453
+ * 3. Merge array fields FIRST (tags, relationships, feedback) with union semantics
454
+ * 4. Field-level three-way merge for SCALAR fields only (status, priority, etc.)
455
+ * 5. YAML + git merge-file for multi-line text fields (content, description)
456
+ * 6. Handle ID collisions (hash conflicts with .1, .2 suffixes)
457
+ * 7. Sort by created_at (git-friendly)
458
+ *
459
+ * Field-level three-way merge logic:
460
+ * - If base == ours == theirs: use any value (no changes)
461
+ * - If base == ours && base != theirs: use theirs (only theirs changed)
462
+ * - If base == theirs && base != ours: use ours (only ours changed)
463
+ * - If base != ours && base != theirs && ours == theirs: use either (both made same change)
464
+ * - If base != ours && base != theirs && ours != theirs: conflict -> latest wins
294
465
  */
295
466
  export function mergeThreeWay(base, ours, theirs) {
296
- // Collect all entities from all three versions
297
- const allEntities = [...base, ...ours, ...theirs];
298
- // Use standard resolution logic
299
- return resolveEntities(allEntities);
467
+ const stats = {
468
+ totalInput: base.length + ours.length + theirs.length,
469
+ totalOutput: 0,
470
+ conflicts: [],
471
+ };
472
+ // Step 1: Group entities by UUID across all three versions
473
+ const byUuid = new Map();
474
+ // Populate from all three versions
475
+ for (const entity of base) {
476
+ const existing = byUuid.get(entity.uuid) || {};
477
+ byUuid.set(entity.uuid, { ...existing, base: entity });
478
+ }
479
+ for (const entity of ours) {
480
+ const existing = byUuid.get(entity.uuid) || {};
481
+ byUuid.set(entity.uuid, { ...existing, ours: entity });
482
+ }
483
+ for (const entity of theirs) {
484
+ const existing = byUuid.get(entity.uuid) || {};
485
+ byUuid.set(entity.uuid, { ...existing, theirs: entity });
486
+ }
487
+ const mergedEntities = [];
488
+ // Step 2: Process each UUID group
489
+ for (const [uuid, versions] of Array.from(byUuid.entries())) {
490
+ const { base: baseEntity, ours: oursEntity, theirs: theirsEntity } = versions;
491
+ // Step 2a: Handle deletion cases
492
+ // Deleted in both → skip
493
+ if (!oursEntity && !theirsEntity) {
494
+ continue;
495
+ }
496
+ // Deleted in theirs, modified in ours → modification wins
497
+ if (baseEntity && !theirsEntity && oursEntity) {
498
+ mergedEntities.push(oursEntity);
499
+ stats.conflicts.push({
500
+ type: "same-uuid-same-id",
501
+ uuid,
502
+ originalIds: [baseEntity.id],
503
+ resolvedIds: [oursEntity.id],
504
+ action: `Kept ours (deleted in theirs, modified in ours)`,
505
+ });
506
+ continue;
507
+ }
508
+ // Deleted in ours, modified in theirs → modification wins
509
+ if (baseEntity && !oursEntity && theirsEntity) {
510
+ mergedEntities.push(theirsEntity);
511
+ stats.conflicts.push({
512
+ type: "same-uuid-same-id",
513
+ uuid,
514
+ originalIds: [baseEntity.id],
515
+ resolvedIds: [theirsEntity.id],
516
+ action: `Kept theirs (deleted in ours, modified in theirs)`,
517
+ });
518
+ continue;
519
+ }
520
+ // Added in only one side (no base)
521
+ if (!baseEntity && oursEntity && !theirsEntity) {
522
+ mergedEntities.push(oursEntity);
523
+ continue;
524
+ }
525
+ if (!baseEntity && !oursEntity && theirsEntity) {
526
+ mergedEntities.push(theirsEntity);
527
+ continue;
528
+ }
529
+ // Added in both sides (no base) → use standard resolution
530
+ if (!baseEntity && oursEntity && theirsEntity) {
531
+ const resolved = resolveEntities([oursEntity, theirsEntity]);
532
+ mergedEntities.push(...resolved.entities);
533
+ stats.conflicts.push(...resolved.stats.conflicts);
534
+ continue;
535
+ }
536
+ // Check if IDs match - if not, this is an ID conflict
537
+ // In three-way merge, keep ours and theirs (they both moved from base)
538
+ const ids = new Set([baseEntity?.id, oursEntity?.id, theirsEntity?.id].filter(Boolean));
539
+ if (ids.size > 1) {
540
+ // IDs don't match - ID conflict
541
+ // Only keep ours and theirs (not base, since both sides moved away from it)
542
+ const versionsToResolve = [oursEntity, theirsEntity].filter((e) => e !== undefined);
543
+ const resolved = resolveEntities(versionsToResolve);
544
+ mergedEntities.push(...resolved.entities);
545
+ stats.conflicts.push(...resolved.stats.conflicts);
546
+ continue;
547
+ }
548
+ // Step 2b: Merge array fields FIRST (union semantics)
549
+ const versionsForMetadata = [baseEntity, oursEntity, theirsEntity].filter((e) => e !== undefined);
550
+ const arrayFieldsMerged = mergeArrayFields(versionsForMetadata);
551
+ // Step 2c: Get all fields from any of the three versions (except array fields)
552
+ const allFields = new Set();
553
+ for (const entity of [baseEntity, oursEntity, theirsEntity]) {
554
+ if (entity) {
555
+ for (const key of Object.keys(entity)) {
556
+ // Skip array fields (already merged via mergeArrayFields)
557
+ if (key === 'relationships' || key === 'tags' || key === 'feedback')
558
+ continue;
559
+ allFields.add(key);
560
+ }
561
+ }
562
+ }
563
+ // Step 2d: Perform field-level three-way merge for SCALAR fields only
564
+ // Multi-line text fields (content, description) will be handled by git merge-file
565
+ const fieldsMerged = { ...arrayFieldsMerged };
566
+ const scalarConflicts = [];
567
+ // Multi-line text fields that should go through git merge-file
568
+ const multiLineFields = new Set(['content', 'description']);
569
+ // updated_at always differs and causes spurious conflicts - extract latest value
570
+ const latestUpdatedAt = compareTimestamps(oursEntity?.updated_at, theirsEntity?.updated_at) > 0 ? oursEntity?.updated_at : theirsEntity?.updated_at;
571
+ for (const field of allFields) {
572
+ // Skip multi-line text fields - they'll be handled by git merge-file
573
+ if (multiLineFields.has(field)) {
574
+ continue;
575
+ }
576
+ // Skip updated_at - we'll add it back at the end
577
+ if (field === 'updated_at') {
578
+ continue;
579
+ }
580
+ const baseValue = baseEntity?.[field];
581
+ const oursValue = oursEntity?.[field];
582
+ const theirsValue = theirsEntity?.[field];
583
+ // Three-way merge logic for scalar fields:
584
+ // - If base == ours == theirs: use any value
585
+ // - If base == ours && base != theirs: use theirs (they changed it)
586
+ // - If base == theirs && base != ours: use ours (we changed it)
587
+ // - If base != ours && base != theirs && ours == theirs: use either (both made same change)
588
+ // - If base != ours && base != theirs && ours != theirs: conflict -> latest wins
589
+ if (baseValue === oursValue && baseValue === theirsValue) {
590
+ // No changes
591
+ fieldsMerged[field] = baseValue;
592
+ }
593
+ else if (baseValue === oursValue && baseValue !== theirsValue) {
594
+ // Only theirs changed
595
+ fieldsMerged[field] = theirsValue;
596
+ }
597
+ else if (baseValue === theirsValue && baseValue !== oursValue) {
598
+ // Only ours changed
599
+ fieldsMerged[field] = oursValue;
600
+ }
601
+ else if (oursValue === theirsValue) {
602
+ // Both made same change
603
+ fieldsMerged[field] = oursValue;
604
+ }
605
+ else {
606
+ // Conflict: both changed to different values -> latest wins
607
+ // When timestamps are identical, prefer ours for stability
608
+ const oursNewer = compareTimestamps(oursEntity?.updated_at, theirsEntity?.updated_at) >= 0;
609
+ fieldsMerged[field] = oursNewer ? oursValue : theirsValue;
610
+ scalarConflicts.push(field);
611
+ }
612
+ }
613
+ // Step 2e: FAST PATH - Skip expensive YAML merge if entity is unchanged
614
+ // Check if all multi-line text fields are identical across versions
615
+ const multiLineFieldsIdentical = Array.from(multiLineFields).every(field => {
616
+ const baseValue = baseEntity?.[field];
617
+ const oursValue = oursEntity?.[field];
618
+ const theirsValue = theirsEntity?.[field];
619
+ return baseValue === oursValue && oursValue === theirsValue;
620
+ });
621
+ let mergedEntity;
622
+ let hadYamlConflicts = false;
623
+ // If no scalar conflicts and multi-line fields are identical, skip YAML merge
624
+ if (scalarConflicts.length === 0 && multiLineFieldsIdentical) {
625
+ // Fast path: Entity unchanged, use any version (prefer ours)
626
+ mergedEntity = { ...oursEntity, ...fieldsMerged };
627
+ }
628
+ else {
629
+ // Slow path: Need YAML merge for multi-line fields or scalar conflicts exist
630
+ // For multi-line fields, keep original values for YAML conversion
631
+ // Git merge-file will handle the line-level merge
632
+ // Remove updated_at to avoid spurious conflicts in YAML
633
+ const versionsForYaml = {
634
+ base: baseEntity ? { ...baseEntity, ...fieldsMerged, updated_at: undefined } : undefined,
635
+ ours: oursEntity ? { ...oursEntity, ...fieldsMerged, updated_at: undefined } : undefined,
636
+ theirs: theirsEntity ? { ...theirsEntity, ...fieldsMerged, updated_at: undefined } : undefined,
637
+ };
638
+ // Step 2f: Convert to YAML and run git merge-file for line-level merging
639
+ // Pass original timestamps for conflict resolution (since we stripped updated_at from versions)
640
+ const yamlMergeResult = mergeYamlWithGit(versionsForYaml, {
641
+ ours: oursEntity?.updated_at,
642
+ theirs: theirsEntity?.updated_at,
643
+ });
644
+ hadYamlConflicts = yamlMergeResult.hadConflicts;
645
+ if (yamlMergeResult.success) {
646
+ mergedEntity = yamlMergeResult.entity;
647
+ }
648
+ else {
649
+ // Fatal error during merge - fallback to latest-wins for entire entity
650
+ // When timestamps are identical, prefer ours for stability
651
+ const oursNewer = compareTimestamps(oursEntity?.updated_at, theirsEntity?.updated_at) >= 0;
652
+ mergedEntity = (oursNewer ? versionsForYaml.ours : versionsForYaml.theirs);
653
+ }
654
+ }
655
+ // Add back the latest updated_at timestamp
656
+ mergedEntity.updated_at = latestUpdatedAt;
657
+ // Record conflicts if any
658
+ if (scalarConflicts.length > 0 || hadYamlConflicts) {
659
+ const conflictParts = [];
660
+ if (scalarConflicts.length > 0) {
661
+ conflictParts.push(`${scalarConflicts.length} scalar field conflicts (${scalarConflicts.join(', ')})`);
662
+ }
663
+ if (hadYamlConflicts) {
664
+ conflictParts.push('YAML conflict blocks (latest-wins per block)');
665
+ }
666
+ stats.conflicts.push({
667
+ type: "same-uuid-same-id",
668
+ uuid,
669
+ originalIds: [baseEntity?.id || oursEntity?.id || theirsEntity?.id || "unknown"],
670
+ resolvedIds: [mergedEntity.id || "unknown"],
671
+ action: `Resolved ${conflictParts.join(', ')}`,
672
+ });
673
+ }
674
+ mergedEntities.push(mergedEntity);
675
+ }
676
+ // Step 3: Handle ID collisions (hash conflicts)
677
+ const idCounts = new Map();
678
+ const finalResolved = [];
679
+ for (const entity of mergedEntities) {
680
+ const currentId = entity.id;
681
+ if (!idCounts.has(currentId)) {
682
+ // First entity with this ID
683
+ idCounts.set(currentId, 1);
684
+ finalResolved.push(entity);
685
+ }
686
+ else {
687
+ // ID collision - rename with suffix
688
+ const count = idCounts.get(currentId);
689
+ const newEntity = { ...entity };
690
+ const newId = `${currentId}.${count}`;
691
+ newEntity.id = newId;
692
+ idCounts.set(currentId, count + 1);
693
+ finalResolved.push(newEntity);
694
+ stats.conflicts.push({
695
+ type: "different-uuids",
696
+ uuid: entity.uuid,
697
+ originalIds: [currentId],
698
+ resolvedIds: [newId],
699
+ action: `Renamed ID to resolve hash collision (different UUIDs)`,
700
+ });
701
+ }
702
+ }
703
+ // Step 4: Sort by created_at (git-friendly)
704
+ finalResolved.sort((a, b) => {
705
+ const aDate = a.created_at || "";
706
+ const bDate = b.created_at || "";
707
+ if (aDate < bDate)
708
+ return -1;
709
+ if (aDate > bDate)
710
+ return 1;
711
+ return (a.id || "").localeCompare(b.id || "");
712
+ });
713
+ stats.totalOutput = finalResolved.length;
714
+ return { entities: finalResolved, stats };
300
715
  }
301
716
  //# sourceMappingURL=merge-resolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"merge-resolver.js","sourceRoot":"","sources":["../src/merge-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merge-resolver.js","sourceRoot":"","sources":["../src/merge-resolver.ts"],"names":[],"mappings":"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"}
package/dist/watcher.d.ts CHANGED
@@ -4,6 +4,12 @@
4
4
  */
5
5
  import type Database from "better-sqlite3";
6
6
  import type { EntitySyncEvent, FileChangeEvent } from "@sudocode-ai/types/events";
7
+ /**
8
+ * Parse a timestamp string to milliseconds, handling both ISO and SQLite formats
9
+ * SQLite's CURRENT_TIMESTAMP returns 'YYYY-MM-DD HH:MM:SS' (no timezone)
10
+ * which JavaScript incorrectly parses as local time. We need to treat it as UTC.
11
+ */
12
+ export declare function parseTimestampAsUTC(timestamp: string): number;
7
13
  export interface WatcherOptions {
8
14
  /**
9
15
  * Database instance
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAkB3C,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAsElF,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;OAEG;IACH,QAAQ,EAAE,MAAM,YAAY,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc,CAszBpE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CA+BnE"}
1
+ {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAkB3C,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAuClF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAQ7D;AAiCD,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;OAEG;IACH,QAAQ,EAAE,MAAM,YAAY,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc,CAszBpE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CA+BnE"}
package/dist/watcher.js CHANGED
@@ -46,6 +46,20 @@ class AsyncMutex {
46
46
  }
47
47
  }
48
48
  const processingMutex = new AsyncMutex();
49
+ /**
50
+ * Parse a timestamp string to milliseconds, handling both ISO and SQLite formats
51
+ * SQLite's CURRENT_TIMESTAMP returns 'YYYY-MM-DD HH:MM:SS' (no timezone)
52
+ * which JavaScript incorrectly parses as local time. We need to treat it as UTC.
53
+ */
54
+ export function parseTimestampAsUTC(timestamp) {
55
+ // If it's already ISO format with Z, parse directly
56
+ if (timestamp.includes('T') && timestamp.endsWith('Z')) {
57
+ return new Date(timestamp).getTime();
58
+ }
59
+ // SQLite format: "YYYY-MM-DD HH:MM:SS" - convert to ISO and append Z for UTC
60
+ const isoFormat = timestamp.replace(' ', 'T') + 'Z';
61
+ return new Date(isoFormat).getTime();
62
+ }
49
63
  /**
50
64
  * Compute SHA256 hash of file content for change detection
51
65
  */
@@ -361,7 +375,7 @@ export function startWatcher(options) {
361
375
  else {
362
376
  const fileStat = fs.statSync(filePath);
363
377
  const fileTime = fileStat.mtimeMs;
364
- const dbTime = new Date(dbEntity.updated_at).getTime();
378
+ const dbTime = parseTimestampAsUTC(dbEntity.updated_at);
365
379
  if (dbTime > fileTime) {
366
380
  // DB is newer than file - sync DB → markdown
367
381
  syncDirection = "db-to-markdown";