canopycms 0.0.11 → 0.0.13

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.
Files changed (143) hide show
  1. package/README.md +24 -27
  2. package/dist/ai/handler.d.ts +3 -3
  3. package/dist/ai/handler.d.ts.map +1 -1
  4. package/dist/ai/handler.js +6 -9
  5. package/dist/ai/handler.js.map +1 -1
  6. package/dist/ai/resolve-branch.d.ts +1 -2
  7. package/dist/ai/resolve-branch.d.ts.map +1 -1
  8. package/dist/ai/resolve-branch.js +8 -9
  9. package/dist/ai/resolve-branch.js.map +1 -1
  10. package/dist/api/branch.js +2 -2
  11. package/dist/api/branch.js.map +1 -1
  12. package/dist/api/comments.d.ts +2 -2
  13. package/dist/api/content.d.ts +4 -4
  14. package/dist/api/content.d.ts.map +1 -1
  15. package/dist/api/content.js +2 -2
  16. package/dist/api/content.js.map +1 -1
  17. package/dist/api/entries.d.ts +2 -2
  18. package/dist/api/entries.d.ts.map +1 -1
  19. package/dist/api/entries.js +2 -2
  20. package/dist/api/entries.js.map +1 -1
  21. package/dist/api/github-sync.js +0 -2
  22. package/dist/api/github-sync.js.map +1 -1
  23. package/dist/api/settings-helpers.d.ts +3 -5
  24. package/dist/api/settings-helpers.d.ts.map +1 -1
  25. package/dist/api/settings-helpers.js +6 -19
  26. package/dist/api/settings-helpers.js.map +1 -1
  27. package/dist/api/validators.d.ts +3 -13
  28. package/dist/api/validators.d.ts.map +1 -1
  29. package/dist/api/validators.js +3 -26
  30. package/dist/api/validators.js.map +1 -1
  31. package/dist/auth/caching-auth-plugin.d.ts +7 -1
  32. package/dist/auth/caching-auth-plugin.d.ts.map +1 -1
  33. package/dist/auth/caching-auth-plugin.js +31 -3
  34. package/dist/auth/caching-auth-plugin.js.map +1 -1
  35. package/dist/auth/plugin.d.ts +1 -1
  36. package/dist/authorization/types.d.ts +1 -1
  37. package/dist/branch-registry.js +1 -1
  38. package/dist/branch-registry.js.map +1 -1
  39. package/dist/branch-schema-cache.d.ts +8 -13
  40. package/dist/branch-schema-cache.d.ts.map +1 -1
  41. package/dist/branch-schema-cache.js +55 -44
  42. package/dist/branch-schema-cache.js.map +1 -1
  43. package/dist/cli/cli.d.ts +20 -0
  44. package/dist/cli/cli.d.ts.map +1 -0
  45. package/dist/cli/cli.js +196 -0
  46. package/dist/cli/cli.js.map +1 -0
  47. package/dist/cli/generate-ai-content.js +1508 -733
  48. package/dist/cli/init.d.ts +2 -3
  49. package/dist/cli/init.d.ts.map +1 -1
  50. package/dist/cli/init.js +258 -2861
  51. package/dist/cli/init.js.map +1 -1
  52. package/dist/cli/sync.d.ts +33 -0
  53. package/dist/cli/sync.d.ts.map +1 -0
  54. package/dist/cli/sync.js +510 -0
  55. package/dist/cli/sync.js.map +1 -0
  56. package/dist/config/schemas/config.d.ts +5 -5
  57. package/dist/config/schemas/config.d.ts.map +1 -1
  58. package/dist/config/schemas/config.js +1 -1
  59. package/dist/config/schemas/config.js.map +1 -1
  60. package/dist/config-test.d.ts.map +1 -1
  61. package/dist/config-test.js +0 -1
  62. package/dist/config-test.js.map +1 -1
  63. package/dist/content-id-index.d.ts +3 -3
  64. package/dist/content-id-index.d.ts.map +1 -1
  65. package/dist/content-id-index.js +7 -7
  66. package/dist/content-id-index.js.map +1 -1
  67. package/dist/content-listing.d.ts +3 -3
  68. package/dist/content-listing.d.ts.map +1 -1
  69. package/dist/content-listing.js +1 -1
  70. package/dist/content-listing.js.map +1 -1
  71. package/dist/content-reader.d.ts +2 -2
  72. package/dist/content-reader.d.ts.map +1 -1
  73. package/dist/content-reader.js +1 -1
  74. package/dist/content-reader.js.map +1 -1
  75. package/dist/content-store.d.ts +8 -8
  76. package/dist/content-store.d.ts.map +1 -1
  77. package/dist/content-store.js +6 -9
  78. package/dist/content-store.js.map +1 -1
  79. package/dist/content-tree.d.ts +2 -2
  80. package/dist/content-tree.d.ts.map +1 -1
  81. package/dist/context.js +1 -1
  82. package/dist/context.js.map +1 -1
  83. package/dist/editor/BranchManager.d.ts.map +1 -1
  84. package/dist/editor/BranchManager.js +1 -3
  85. package/dist/editor/BranchManager.js.map +1 -1
  86. package/dist/git-manager.d.ts +2 -3
  87. package/dist/git-manager.d.ts.map +1 -1
  88. package/dist/git-manager.js +12 -4
  89. package/dist/git-manager.js.map +1 -1
  90. package/dist/operating-mode/client-safe-strategy.d.ts +1 -12
  91. package/dist/operating-mode/client-safe-strategy.d.ts.map +1 -1
  92. package/dist/operating-mode/client-safe-strategy.js +5 -42
  93. package/dist/operating-mode/client-safe-strategy.js.map +1 -1
  94. package/dist/operating-mode/client-unsafe-strategy.d.ts.map +1 -1
  95. package/dist/operating-mode/client-unsafe-strategy.js +10 -68
  96. package/dist/operating-mode/client-unsafe-strategy.js.map +1 -1
  97. package/dist/operating-mode/index.d.ts +3 -3
  98. package/dist/operating-mode/index.d.ts.map +1 -1
  99. package/dist/operating-mode/index.js +2 -2
  100. package/dist/operating-mode/types.d.ts +2 -6
  101. package/dist/operating-mode/types.d.ts.map +1 -1
  102. package/dist/paths/index.d.ts +1 -1
  103. package/dist/paths/index.d.ts.map +1 -1
  104. package/dist/paths/index.js.map +1 -1
  105. package/dist/paths/test-utils.d.ts +4 -6
  106. package/dist/paths/test-utils.d.ts.map +1 -1
  107. package/dist/paths/test-utils.js +3 -5
  108. package/dist/paths/test-utils.js.map +1 -1
  109. package/dist/paths/types.d.ts +4 -11
  110. package/dist/paths/types.d.ts.map +1 -1
  111. package/dist/paths/validation.d.ts +5 -6
  112. package/dist/paths/validation.d.ts.map +1 -1
  113. package/dist/paths/validation.js +9 -10
  114. package/dist/paths/validation.js.map +1 -1
  115. package/dist/reference-resolver.d.ts +2 -2
  116. package/dist/reference-resolver.d.ts.map +1 -1
  117. package/dist/reference-resolver.js.map +1 -1
  118. package/dist/services.d.ts +6 -0
  119. package/dist/services.d.ts.map +1 -1
  120. package/dist/services.js +52 -40
  121. package/dist/services.js.map +1 -1
  122. package/dist/settings-branch-utils.d.ts +2 -2
  123. package/dist/settings-branch-utils.js +3 -3
  124. package/dist/settings-branch-utils.js.map +1 -1
  125. package/dist/settings-workspace.d.ts +1 -2
  126. package/dist/settings-workspace.d.ts.map +1 -1
  127. package/dist/settings-workspace.js +1 -2
  128. package/dist/settings-workspace.js.map +1 -1
  129. package/dist/utils/fs.d.ts +3 -0
  130. package/dist/utils/fs.d.ts.map +1 -0
  131. package/dist/utils/fs.js +15 -0
  132. package/dist/utils/fs.js.map +1 -0
  133. package/dist/utils/git.d.ts +7 -0
  134. package/dist/utils/git.d.ts.map +1 -0
  135. package/dist/utils/git.js +17 -0
  136. package/dist/utils/git.js.map +1 -0
  137. package/dist/validation/deletion-checker.d.ts +2 -2
  138. package/dist/validation/deletion-checker.d.ts.map +1 -1
  139. package/dist/worker/task-queue-config.d.ts +2 -4
  140. package/dist/worker/task-queue-config.d.ts.map +1 -1
  141. package/dist/worker/task-queue-config.js +3 -7
  142. package/dist/worker/task-queue-config.js.map +1 -1
  143. package/package.json +4 -2
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACjC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAA;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAkB5C;;;GAGG;AACH,KAAK,UAAU,SAAS,CACtB,QAAgB,EAChB,OAAe,EACf,OAAoD;IAEpD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAA;IAE3D,IAAI,MAAM,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,oCAAoC;QACtC,CAAC;aAAM,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAClC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,YAAY,mBAAmB,CAAC,CAAA;YACpD,OAAO,KAAK,CAAA;QACd,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;gBAChC,OAAO,EAAE,GAAG,YAAY,6BAA6B;gBACrD,YAAY,EAAE,KAAK;aACpB,CAAC,CAAA;YACF,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACxC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,YAAY,EAAE,CAAC,CAAA;gBACnC,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAC9C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,YAAY,EAAE,CAAC,CAAA;IACzC,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,MAAc,EAAE,OAAe;IACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAA;IACzD,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAA;IACrC,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,kBAAkB,CAAA;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAoB;IAC7C,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAA;IACvE,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,CAAA;IAC3C,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAC9F,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;IAE7B,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;IAEzB,iBAAiB;IACjB,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,EAC5C,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,EAC/B,SAAS,CACV,CAAA;IACD,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,CAAC,EAC9C,MAAM,aAAa,CAAC,EAAE,YAAY,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAClE,SAAS,CACV,CAAA;IACD,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,eAAe,EAAE,EAAE,SAAS,CAAC,CAAA;IAChG,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,uCAAuC,CAAC,EACtE,MAAM,QAAQ,CAAC;QACb,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY;KAC7C,CAAC,EACF,SAAS,CACV,CAAA;IACD,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,CAAC,EAC9C,MAAM,QAAQ,CAAC,EAAE,YAAY,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAC7D,SAAS,CACV,CAAA;IACD,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAA;QAC3F,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,uBAAuB,CAAC,EACtD,MAAM,OAAO,CAAC,EAAE,YAAY,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAC5D,SAAS,CACV,CAAA;IACH,CAAC;IAED,oBAAoB;IACpB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;IACzD,IAAI,MAAM,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;QACzD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACrC,MAAM,EAAE,CAAC,UAAU,CAAC,aAAa,EAAE,+BAA+B,CAAC,CAAA;YACnE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAA;QACtC,CAAC;IACH,CAAC;IAED,CAAC,CAAC,IAAI,CACJ;QACE,0BAA0B;QAC1B,iFAAiF;QACjF,EAAE;QACF,8BAA8B;QAC9B,gDAAgD;QAChD,qDAAqD;QACrD,EAAE;QACF,eAAe,GAAG,MAAM,GAAG,sCAAsC;QACjE,EAAE;QACF,qBAAqB;QACrB,sCAAsC;KACvC,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,YAAY,CACb,CAAA;IAED,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA0B;IAC5D,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAA;IACrD,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,CAAA;IAC3C,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;IAExE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAEpC,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,EAAE,MAAM,aAAa,EAAE,EAAE,SAAS,CAAC,CAAA;IAC1F,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,kCAAkC,CAAC,EACzD,MAAM,iBAAiB,EAAE,EACzB,SAAS,CACV,CAAA;IAED,wDAAwD;IACxD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAA;IAC9D,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;IAClE,MAAM,UAAU,GAAG,CAAC,MAAM,cAAc,CAAC,cAAc,CAAC,CAAC;QACvD,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,iBAAiB,CAAC,CAAC;YACzC,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,IAAI,CAAA;IAEV,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QACtD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACtC,CAAC,CAAC,IAAI,CACJ;gBACE,6BAA6B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG;gBACzD,EAAE;gBACF,yEAAyE;aAC1E,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,aAAa,CACd,CAAA;QACH,CAAC;IACH,CAAC;IAED,CAAC,CAAC,IAAI,CACJ,2GAA2G,EAC3G,gBAAgB,CACjB,CAAA;IAED,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAGnC;IACC,8DAA8D;IAC9D,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAA;IAEvE,2CAA2C;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAA;IACpE,IAAI,IAAI,GAAmB,KAAK,CAAA;IAChC,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACzD,2EAA2E;QAC3E,IAAI,kCAAkC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3D,IAAI,GAAG,MAAM,CAAA;QACf,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IAEzC,uDAAuD;IACvD,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAClC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;IAEnF,IAAI,gBAAmD,CAAA;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,KAAK,CAAA;IAEtD,IAAI,OAAO,CAAC,UAAU,EAAE,oBAAoB,EAAE,CAAC;QAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;QACpE,IAAI,SAAS,EAAE,CAAC;YACd,gBAAgB,GAAG,KAAK,IAAI,EAAE;gBAC5B,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAA;gBAChC,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,SAAS,WAAW,MAAM,CAAC,UAAU,SAAS,CAAC,CAAA;YACzE,CAAC,CAAA;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,sCAAsC,IAAI,WAAW,QAAQ,KAAK,CAAC,CAAA;IAE/E,qBAAqB;IACrB,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;QACvC,MAAM,gBAAgB,EAAE,CAAA;QACxB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;IACrC,CAAC;IAED,4CAA4C;IAC5C,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAA;IAC1E,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,IAAI,IAAI,CAAA;IACR,OAAO,CAAC,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;QAC3D,2DAA2D;QAC3D,oDAAoD;QACpD,OAAO,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAA;QAC1F,MAAM,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QACvD,SAAS,EAAE,CAAA;IACb,CAAC;IAED,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,aAAa,SAAS,UAAU,CAAC,CAAA;IAC/C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IACjC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AACvB,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * CLI command: npx canopycms sync
3
+ *
4
+ * Bidirectional sync between the developer's working tree and
5
+ * CMS branch workspaces in .canopy-dev/content-branches/.
6
+ *
7
+ * - Push: copies working-tree content into a branch workspace and commits.
8
+ *
9
+ * - Pull: copies content from a branch workspace back into the working tree
10
+ * so the developer can review and commit.
11
+ *
12
+ * - Both: merges working-tree changes with editor changes in the workspace
13
+ * using a 3-way git merge, then pulls the merged result back.
14
+ */
15
+ export interface SyncOptions {
16
+ projectDir: string;
17
+ direction: 'push' | 'pull' | 'both' | 'abort';
18
+ /** Which branch workspace to push to / pull from */
19
+ branch?: string;
20
+ contentRoot?: string;
21
+ /** Skip confirmation prompts (for testing or scripts). */
22
+ force?: boolean;
23
+ }
24
+ /**
25
+ * Run the sync command.
26
+ *
27
+ * @returns Summary of what was synced
28
+ */
29
+ export declare function sync(options: SyncOptions): Promise<{
30
+ pushed: number;
31
+ pulled: number;
32
+ }>;
33
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA6CH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;IAC7C,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAkeD;;;;GAIG;AACH,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAsB5F"}
@@ -0,0 +1,510 @@
1
+ /**
2
+ * CLI command: npx canopycms sync
3
+ *
4
+ * Bidirectional sync between the developer's working tree and
5
+ * CMS branch workspaces in .canopy-dev/content-branches/.
6
+ *
7
+ * - Push: copies working-tree content into a branch workspace and commits.
8
+ *
9
+ * - Pull: copies content from a branch workspace back into the working tree
10
+ * so the developer can review and commit.
11
+ *
12
+ * - Both: merges working-tree changes with editor changes in the workspace
13
+ * using a 3-way git merge, then pulls the merged result back.
14
+ */
15
+ import fs from 'node:fs/promises';
16
+ import path from 'node:path';
17
+ import { simpleGit } from 'simple-git';
18
+ import * as p from '@clack/prompts';
19
+ import { filePathExists } from '../utils/fs';
20
+ /** Validate that a resolved path stays within the expected parent directory. */
21
+ function assertWithinDir(resolved, parent, label) {
22
+ const normalizedResolved = path.resolve(resolved);
23
+ const normalizedParent = path.resolve(parent);
24
+ if (!normalizedResolved.startsWith(normalizedParent + path.sep) &&
25
+ normalizedResolved !== normalizedParent) {
26
+ throw new Error(`${label} escapes the expected directory: ${resolved}`);
27
+ }
28
+ }
29
+ /**
30
+ * Safely replace a directory by renaming the old one to a backup, renaming
31
+ * the new one into place, then deleting the backup. If interrupted between
32
+ * steps, at least one copy always exists on disk.
33
+ */
34
+ async function safeReplaceDir(oldDir, newDir) {
35
+ const backupDir = `${oldDir}.sync-backup-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
36
+ const oldExists = await filePathExists(oldDir);
37
+ if (oldExists) {
38
+ await fs.rename(oldDir, backupDir);
39
+ }
40
+ try {
41
+ await fs.rename(newDir, oldDir);
42
+ }
43
+ catch (err) {
44
+ // Restore backup if the rename failed
45
+ if (oldExists) {
46
+ await fs.rename(backupDir, oldDir).catch(() => { });
47
+ }
48
+ throw err;
49
+ }
50
+ if (oldExists) {
51
+ await fs.rm(backupDir, { recursive: true, force: true }).catch(() => { });
52
+ }
53
+ }
54
+ const SYNC_BASE_TAG = 'canopycms-sync-base';
55
+ /** Recursively list all file paths relative to `dir`. Skips .git and symlinks. */
56
+ async function listFilesRecursive(dir, prefix = '') {
57
+ const results = [];
58
+ let entries;
59
+ try {
60
+ entries = await fs.readdir(dir, { withFileTypes: true });
61
+ }
62
+ catch {
63
+ return results;
64
+ }
65
+ for (const entry of entries) {
66
+ if (entry.name === '.git')
67
+ continue;
68
+ if (entry.isSymbolicLink())
69
+ continue;
70
+ const rel = prefix ? `${prefix}/${entry.name}` : entry.name;
71
+ if (entry.isDirectory()) {
72
+ results.push(...(await listFilesRecursive(path.join(dir, entry.name), rel)));
73
+ }
74
+ else {
75
+ results.push(rel);
76
+ }
77
+ }
78
+ return results;
79
+ }
80
+ /** Recursively copy a directory, creating the destination if needed. Skips .git directories and symlinks. */
81
+ async function copyDir(src, dest) {
82
+ await fs.mkdir(dest, { recursive: true });
83
+ const entries = await fs.readdir(src, { withFileTypes: true });
84
+ for (const entry of entries) {
85
+ if (entry.name === '.git')
86
+ continue;
87
+ if (entry.isSymbolicLink())
88
+ continue;
89
+ const srcPath = path.join(src, entry.name);
90
+ const destPath = path.join(dest, entry.name);
91
+ if (entry.isDirectory()) {
92
+ await copyDir(srcPath, destPath);
93
+ }
94
+ else {
95
+ await fs.copyFile(srcPath, destPath);
96
+ }
97
+ }
98
+ }
99
+ /**
100
+ * Select a branch workspace. Auto-selects if only one exists, prompts if
101
+ * multiple, or uses the --branch flag. Returns null if cancelled or not found.
102
+ */
103
+ async function selectBranch(options, branchesDir) {
104
+ let branches = [];
105
+ if (await filePathExists(branchesDir)) {
106
+ const entries = await fs.readdir(branchesDir, { withFileTypes: true });
107
+ branches = entries.filter((e) => e.isDirectory()).map((e) => e.name);
108
+ }
109
+ if (branches.length === 0) {
110
+ p.log.error('No branch workspaces found. Create a branch in the editor first.');
111
+ return null;
112
+ }
113
+ let branchName = options.branch;
114
+ if (!branchName) {
115
+ if (branches.length === 1) {
116
+ branchName = branches[0];
117
+ }
118
+ else {
119
+ const result = await p.select({
120
+ message: 'Which branch?',
121
+ options: branches.map((b) => ({ value: b, label: b })),
122
+ });
123
+ if (p.isCancel(result)) {
124
+ p.cancel('Sync cancelled.');
125
+ return null;
126
+ }
127
+ branchName = result;
128
+ }
129
+ }
130
+ // Validate branch name does not escape the branches directory
131
+ const branchPath = path.join(branchesDir, branchName);
132
+ assertWithinDir(branchPath, branchesDir, '--branch');
133
+ if (!branches.includes(branchName)) {
134
+ p.log.error(`Branch workspace "${branchName}" not found.`);
135
+ p.log.info(`Available branches: ${branches.join(', ')}`);
136
+ return null;
137
+ }
138
+ return branchName;
139
+ }
140
+ /**
141
+ * Push: copy working-tree content into a branch workspace and commit.
142
+ * Tags the resulting commit as the sync base for future merges.
143
+ */
144
+ async function syncPush(options) {
145
+ const { projectDir } = options;
146
+ const contentRoot = options.contentRoot || 'content';
147
+ const branchesDir = path.join(projectDir, '.canopy-dev', 'content-branches');
148
+ const branchName = await selectBranch(options, branchesDir);
149
+ if (!branchName)
150
+ return { fileCount: 0 };
151
+ const branchPath = path.join(branchesDir, branchName);
152
+ assertWithinDir(branchPath, branchesDir, '--branch');
153
+ const wsGit = simpleGit({ baseDir: branchPath });
154
+ // Validate source content
155
+ const srcContentDir = path.join(projectDir, contentRoot);
156
+ assertWithinDir(srcContentDir, projectDir, '--content-root');
157
+ if (!(await filePathExists(srcContentDir))) {
158
+ p.log.warn(`Content directory not found: ${contentRoot}/`);
159
+ return { fileCount: 0 };
160
+ }
161
+ // Check workspace health
162
+ const status = await wsGit.status();
163
+ if (status.conflicted.length > 0) {
164
+ p.log.error('Branch workspace has unresolved merge conflicts.');
165
+ if (!options.force) {
166
+ const shouldAbort = await p.confirm({
167
+ message: 'Abort the merge and restore workspace to pre-merge state?',
168
+ initialValue: false,
169
+ });
170
+ if (!p.isCancel(shouldAbort) && shouldAbort) {
171
+ await wsGit.merge(['--abort']);
172
+ p.log.success('Merge aborted. Workspace restored to pre-merge state.');
173
+ }
174
+ }
175
+ return { fileCount: 0 };
176
+ }
177
+ // Warn about uncommitted workspace changes (editor saves)
178
+ if (status.files.length > 0 && !options.force) {
179
+ p.log.warn(`Branch workspace has ${status.files.length} uncommitted change(s) that will be committed to history then overwritten:`);
180
+ for (const file of status.files.slice(0, 10)) {
181
+ p.log.warn(` ${file.path}`);
182
+ }
183
+ if (status.files.length > 10) {
184
+ p.log.warn(` ... and ${status.files.length - 10} more`);
185
+ }
186
+ const confirm = await p.confirm({
187
+ message: 'Continue? Editor changes will be preserved in git history.',
188
+ initialValue: false,
189
+ });
190
+ if (p.isCancel(confirm) || !confirm) {
191
+ p.cancel('Push cancelled.');
192
+ return { fileCount: 0 };
193
+ }
194
+ }
195
+ // Auto-commit uncommitted workspace changes to preserve in history
196
+ if (status.files.length > 0) {
197
+ await wsGit.add('-A');
198
+ await wsGit.commit('sync: save editor state before push');
199
+ p.log.info('Committed editor changes to history before push');
200
+ }
201
+ p.log.step(`Pushing content to branch workspace: ${branchName}`);
202
+ // Copy working-tree content → workspace content dir
203
+ const wsContentDir = path.join(branchPath, contentRoot);
204
+ assertWithinDir(wsContentDir, branchPath, '--content-root');
205
+ const tmpDir = `${wsContentDir}.sync-tmp-${Date.now()}`;
206
+ try {
207
+ await copyDir(srcContentDir, tmpDir);
208
+ await safeReplaceDir(wsContentDir, tmpDir);
209
+ }
210
+ catch (err) {
211
+ await fs.rm(tmpDir, { recursive: true, force: true }).catch(() => { });
212
+ throw err;
213
+ }
214
+ // Stage and check for changes
215
+ await wsGit.add('-A');
216
+ const postStatus = await wsGit.status();
217
+ if (postStatus.files.length === 0) {
218
+ p.log.info('Content is already up to date — nothing to push');
219
+ // Still tag as sync base — marks this as a known sync point for future merges
220
+ await wsGit.tag(['-f', SYNC_BASE_TAG]);
221
+ return { fileCount: 0 };
222
+ }
223
+ await wsGit.commit('sync: update content from working tree');
224
+ // Tag as sync base for future merges
225
+ await wsGit.tag(['-f', SYNC_BASE_TAG]);
226
+ p.log.success(`Pushed ${postStatus.files.length} file change(s) to branch "${branchName}"`);
227
+ return { fileCount: postStatus.files.length };
228
+ }
229
+ /**
230
+ * Pull: copy content from a branch workspace back into the working tree.
231
+ */
232
+ async function syncPull(options) {
233
+ const { projectDir } = options;
234
+ const contentRoot = options.contentRoot || 'content';
235
+ const branchesDir = path.join(projectDir, '.canopy-dev', 'content-branches');
236
+ const branchName = await selectBranch(options, branchesDir);
237
+ if (!branchName)
238
+ return { fileCount: 0 };
239
+ const branchPath = path.join(branchesDir, branchName);
240
+ assertWithinDir(branchPath, branchesDir, '--branch');
241
+ const branchContentDir = path.join(branchPath, contentRoot);
242
+ assertWithinDir(branchContentDir, branchPath, '--content-root');
243
+ if (!(await filePathExists(branchContentDir))) {
244
+ p.log.error(`Content directory not found in branch workspace: ${branchName}/${contentRoot}`);
245
+ return { fileCount: 0 };
246
+ }
247
+ p.log.step(`Pulling content from branch: ${branchName}`);
248
+ const destContentDir = path.join(projectDir, contentRoot);
249
+ assertWithinDir(destContentDir, projectDir, '--content-root');
250
+ // Check for uncommitted changes AND untracked files in the content directory
251
+ // before overwriting. The pull replaces the entire content directory, so any
252
+ // file not in the branch workspace will be lost.
253
+ const sourceGit = simpleGit({ baseDir: projectDir });
254
+ const status = await sourceGit.status();
255
+ const uncommittedContent = status.files.filter((f) => f.path.startsWith(contentRoot + '/') || f.path === contentRoot);
256
+ // Also detect untracked files that git status doesn't report (e.g., new files
257
+ // in subdirectories that haven't been staged). Walk the content directory and
258
+ // compare against the branch workspace to find files that would be deleted.
259
+ const untrackedLosses = [];
260
+ if (await filePathExists(destContentDir)) {
261
+ const localFiles = await listFilesRecursive(destContentDir);
262
+ const branchFiles = new Set(await listFilesRecursive(branchContentDir));
263
+ for (const file of localFiles) {
264
+ if (!branchFiles.has(file)) {
265
+ const relativePath = contentRoot + '/' + file;
266
+ // Only flag files not already captured by git status
267
+ if (!uncommittedContent.some((f) => f.path === relativePath)) {
268
+ untrackedLosses.push(relativePath);
269
+ }
270
+ }
271
+ }
272
+ }
273
+ const totalWarnings = uncommittedContent.length + untrackedLosses.length;
274
+ if (totalWarnings > 0 && !options.force) {
275
+ if (uncommittedContent.length > 0) {
276
+ p.log.warn(`You have ${uncommittedContent.length} uncommitted change(s) in ${contentRoot}/:`);
277
+ for (const file of uncommittedContent.slice(0, 10)) {
278
+ p.log.warn(` ${file.path}`);
279
+ }
280
+ if (uncommittedContent.length > 10) {
281
+ p.log.warn(` ... and ${uncommittedContent.length - 10} more`);
282
+ }
283
+ }
284
+ if (untrackedLosses.length > 0) {
285
+ p.log.warn(`${untrackedLosses.length} file(s) in ${contentRoot}/ not present in branch "${branchName}" will be deleted:`);
286
+ for (const file of untrackedLosses.slice(0, 10)) {
287
+ p.log.warn(` ${file}`);
288
+ }
289
+ if (untrackedLosses.length > 10) {
290
+ p.log.warn(` ... and ${untrackedLosses.length - 10} more`);
291
+ }
292
+ }
293
+ const confirm = await p.confirm({
294
+ message: 'Overwrite content directory? Files listed above will be lost.',
295
+ initialValue: false,
296
+ });
297
+ if (p.isCancel(confirm) || !confirm) {
298
+ p.cancel('Pull cancelled. Commit or stash your changes first.');
299
+ return { fileCount: 0 };
300
+ }
301
+ }
302
+ // Replace the working-tree content with the branch workspace content.
303
+ // Uses backup-rename pattern: if interrupted, at least one copy always exists.
304
+ const tmpDestDir = `${destContentDir}.sync-tmp-${Date.now()}`;
305
+ try {
306
+ await copyDir(branchContentDir, tmpDestDir);
307
+ await safeReplaceDir(destContentDir, tmpDestDir);
308
+ }
309
+ catch (err) {
310
+ // Clean up temp dir on failure, preserve original
311
+ await fs.rm(tmpDestDir, { recursive: true, force: true }).catch(() => { });
312
+ throw err;
313
+ }
314
+ // Show what changed using git status (re-check after copy)
315
+ const postStatus = await sourceGit.status();
316
+ const contentChanges = postStatus.files.filter((f) => f.path.startsWith(contentRoot + '/') || f.path === contentRoot);
317
+ if (contentChanges.length === 0) {
318
+ p.log.info('Content is already up to date — nothing to pull');
319
+ }
320
+ else {
321
+ p.log.success(`Pulled ${contentChanges.length} changed file(s) from branch "${branchName}"`);
322
+ for (const file of contentChanges.slice(0, 20)) {
323
+ const indicator = file.working_dir === '?' ? 'A' : file.working_dir || file.index;
324
+ p.log.info(` ${indicator} ${file.path}`);
325
+ }
326
+ if (contentChanges.length > 20) {
327
+ p.log.info(` ... and ${contentChanges.length - 20} more`);
328
+ }
329
+ p.log.info('\nReview the changes, then git add and commit when ready.');
330
+ }
331
+ return { fileCount: contentChanges.length };
332
+ }
333
+ /**
334
+ * Both: merge working-tree changes with editor changes in the workspace
335
+ * using a 3-way git merge, then pull the merged result back.
336
+ *
337
+ * Uses a `canopycms-sync-base` tag as the merge base — this tag is set
338
+ * by push after each successful sync.
339
+ */
340
+ async function syncBoth(options) {
341
+ const { projectDir } = options;
342
+ const contentRoot = options.contentRoot || 'content';
343
+ const branchesDir = path.join(projectDir, '.canopy-dev', 'content-branches');
344
+ const branchName = await selectBranch(options, branchesDir);
345
+ if (!branchName)
346
+ return { pushed: 0, pulled: 0 };
347
+ const branchPath = path.join(branchesDir, branchName);
348
+ assertWithinDir(branchPath, branchesDir, '--branch');
349
+ const wsGit = simpleGit({ baseDir: branchPath });
350
+ // Validate source content
351
+ const srcContentDir = path.join(projectDir, contentRoot);
352
+ assertWithinDir(srcContentDir, projectDir, '--content-root');
353
+ if (!(await filePathExists(srcContentDir))) {
354
+ p.log.warn(`Content directory not found: ${contentRoot}/`);
355
+ return { pushed: 0, pulled: 0 };
356
+ }
357
+ // Check workspace health
358
+ const status = await wsGit.status();
359
+ if (status.conflicted.length > 0) {
360
+ p.log.error('Branch workspace has unresolved merge conflicts.');
361
+ if (!options.force) {
362
+ const shouldAbort = await p.confirm({
363
+ message: 'Abort the merge and restore workspace to pre-merge state?',
364
+ initialValue: false,
365
+ });
366
+ if (!p.isCancel(shouldAbort) && shouldAbort) {
367
+ await wsGit.merge(['--abort']);
368
+ p.log.success('Merge aborted. Workspace restored to pre-merge state.');
369
+ }
370
+ }
371
+ return { pushed: 0, pulled: 0 };
372
+ }
373
+ // Auto-commit uncommitted workspace changes (preserves editor work for the merge)
374
+ if (status.files.length > 0) {
375
+ await wsGit.add('-A');
376
+ await wsGit.commit('sync: save editor state before merge');
377
+ p.log.info('Committed editor changes before merge');
378
+ }
379
+ // Determine merge base
380
+ let baseRef;
381
+ try {
382
+ await wsGit.raw(['rev-parse', SYNC_BASE_TAG]);
383
+ baseRef = SYNC_BASE_TAG;
384
+ }
385
+ catch {
386
+ // First time: no tag exists. Use current HEAD as base.
387
+ baseRef = 'HEAD';
388
+ }
389
+ // Remember the current branch to switch back after merge
390
+ const currentBranch = (await wsGit.revparse(['--abbrev-ref', 'HEAD'])).trim();
391
+ // Create temp branch from the merge base
392
+ const incomingBranch = `sync-incoming-${Date.now()}`;
393
+ await wsGit.raw(['checkout', '-b', incomingBranch, baseRef]);
394
+ // Replace content on temp branch with working-tree content
395
+ const wsContentDir = path.join(branchPath, contentRoot);
396
+ assertWithinDir(wsContentDir, branchPath, '--content-root');
397
+ const tmpDir = `${wsContentDir}.sync-tmp-${Date.now()}`;
398
+ try {
399
+ await copyDir(srcContentDir, tmpDir);
400
+ await safeReplaceDir(wsContentDir, tmpDir);
401
+ }
402
+ catch (err) {
403
+ await fs.rm(tmpDir, { recursive: true, force: true }).catch(() => { });
404
+ // Switch back to workspace branch before re-throwing
405
+ await wsGit.checkout(currentBranch);
406
+ await wsGit.raw(['branch', '-D', incomingBranch]).catch(() => { });
407
+ throw err;
408
+ }
409
+ await wsGit.add('-A');
410
+ const incomingStatus = await wsGit.status();
411
+ // No working-tree changes — skip merge, just pull editor changes
412
+ if (incomingStatus.files.length === 0) {
413
+ await wsGit.checkout(currentBranch);
414
+ await wsGit.raw(['branch', '-D', incomingBranch]);
415
+ p.log.info('No working-tree changes to merge — pulling editor changes only');
416
+ const pullResult = await syncPull({ ...options, branch: branchName, force: true });
417
+ return { pushed: 0, pulled: pullResult.fileCount };
418
+ }
419
+ await wsGit.commit('sync: incoming working-tree changes');
420
+ // Switch back to workspace branch and merge
421
+ await wsGit.checkout(currentBranch);
422
+ p.log.step('Merging working-tree changes with editor changes...');
423
+ try {
424
+ await wsGit.merge([incomingBranch, '--no-edit']);
425
+ }
426
+ catch (mergeError) {
427
+ // Check if it's a merge conflict
428
+ let mergeStatus;
429
+ try {
430
+ mergeStatus = await wsGit.status();
431
+ }
432
+ catch {
433
+ // status() failed — clean up incoming branch and re-throw original error
434
+ await wsGit.raw(['branch', '-D', incomingBranch]).catch(() => { });
435
+ throw mergeError;
436
+ }
437
+ if (mergeStatus.conflicted.length > 0) {
438
+ p.log.error('Merge conflicts detected in the following files:');
439
+ for (const file of mergeStatus.conflicted) {
440
+ p.log.error(` ${file}`);
441
+ }
442
+ p.log.info('The branch workspace is now in a merge state.');
443
+ p.log.info('Resolve the conflicts in the workspace, then run: canopycms sync --pull');
444
+ p.log.info('Or abort the merge with: canopycms sync --abort');
445
+ // Clean up the incoming branch (leave merge state for user resolution)
446
+ await wsGit.raw(['branch', '-D', incomingBranch]).catch(() => { });
447
+ return { pushed: 0, pulled: 0 };
448
+ }
449
+ // Not a conflict — clean up and re-throw original error
450
+ await wsGit.raw(['branch', '-D', incomingBranch]).catch(() => { });
451
+ throw mergeError;
452
+ }
453
+ // Clean merge succeeded
454
+ await wsGit.raw(['branch', '-D', incomingBranch]);
455
+ await wsGit.tag(['-f', SYNC_BASE_TAG]);
456
+ p.log.success('Merged working-tree changes with editor changes');
457
+ // Pull merged result back to working tree
458
+ const pullResult = await syncPull({ ...options, branch: branchName, force: true });
459
+ return { pushed: incomingStatus.files.length, pulled: pullResult.fileCount };
460
+ }
461
+ /**
462
+ * Abort: cancel a failed merge in a branch workspace by running `git merge --abort`.
463
+ * Restores the workspace to its pre-merge state.
464
+ */
465
+ async function syncAbort(options) {
466
+ const { projectDir } = options;
467
+ const branchesDir = path.join(projectDir, '.canopy-dev', 'content-branches');
468
+ const branchName = await selectBranch(options, branchesDir);
469
+ if (!branchName)
470
+ return;
471
+ const branchPath = path.join(branchesDir, branchName);
472
+ assertWithinDir(branchPath, branchesDir, '--branch');
473
+ const wsGit = simpleGit({ baseDir: branchPath });
474
+ const status = await wsGit.status();
475
+ if (status.conflicted.length === 0) {
476
+ p.log.info(`Branch workspace "${branchName}" is not in a merge state — nothing to abort.`);
477
+ return;
478
+ }
479
+ await wsGit.merge(['--abort']);
480
+ p.log.success(`Merge aborted in branch workspace "${branchName}". Workspace restored to pre-merge state.`);
481
+ }
482
+ /**
483
+ * Run the sync command.
484
+ *
485
+ * @returns Summary of what was synced
486
+ */
487
+ export async function sync(options) {
488
+ p.intro('CanopyCMS sync');
489
+ let pushed = 0;
490
+ let pulled = 0;
491
+ if (options.direction === 'abort') {
492
+ await syncAbort(options);
493
+ }
494
+ else if (options.direction === 'both') {
495
+ const result = await syncBoth(options);
496
+ pushed = result.pushed;
497
+ pulled = result.pulled;
498
+ }
499
+ else if (options.direction === 'push') {
500
+ const result = await syncPush(options);
501
+ pushed = result.fileCount;
502
+ }
503
+ else {
504
+ const result = await syncPull(options);
505
+ pulled = result.fileCount;
506
+ }
507
+ p.outro('Done!');
508
+ return { pushed, pulled };
509
+ }
510
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/cli/sync.ts"],"names":[],"mappings":"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"}