canopycms 0.0.61 → 0.0.62

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 (184) hide show
  1. package/dist/ai/json-to-markdown.js +1 -2
  2. package/dist/ai/json-to-markdown.js.map +1 -1
  3. package/dist/api/__test__/mock-client.d.ts +5 -1
  4. package/dist/api/__test__/mock-client.d.ts.map +1 -1
  5. package/dist/api/__test__/mock-client.js +9 -2
  6. package/dist/api/__test__/mock-client.js.map +1 -1
  7. package/dist/api/admin-branch-health.d.ts +36 -1
  8. package/dist/api/admin-branch-health.d.ts.map +1 -1
  9. package/dist/api/admin-branch-health.js +176 -2
  10. package/dist/api/admin-branch-health.js.map +1 -1
  11. package/dist/api/admin.d.ts +8 -1
  12. package/dist/api/admin.d.ts.map +1 -1
  13. package/dist/api/admin.js.map +1 -1
  14. package/dist/api/branch.d.ts.map +1 -1
  15. package/dist/api/branch.js +16 -2
  16. package/dist/api/branch.js.map +1 -1
  17. package/dist/api/client.d.ts +5 -1
  18. package/dist/api/client.d.ts.map +1 -1
  19. package/dist/api/client.js +6 -0
  20. package/dist/api/client.js.map +1 -1
  21. package/dist/api/comments.d.ts +2 -2
  22. package/dist/api/content.d.ts +11 -5
  23. package/dist/api/content.d.ts.map +1 -1
  24. package/dist/api/content.js +79 -6
  25. package/dist/api/content.js.map +1 -1
  26. package/dist/api/entries.d.ts +10 -0
  27. package/dist/api/entries.d.ts.map +1 -1
  28. package/dist/api/entries.js +40 -15
  29. package/dist/api/entries.js.map +1 -1
  30. package/dist/api/schema.d.ts +4 -4
  31. package/dist/api/schema.d.ts.map +1 -1
  32. package/dist/api/schema.js +13 -13
  33. package/dist/api/schema.js.map +1 -1
  34. package/dist/assets/transform.d.ts.map +1 -1
  35. package/dist/assets/transform.js +19 -6
  36. package/dist/assets/transform.js.map +1 -1
  37. package/dist/branch-health.d.ts +13 -0
  38. package/dist/branch-health.d.ts.map +1 -1
  39. package/dist/branch-health.js +23 -0
  40. package/dist/branch-health.js.map +1 -1
  41. package/dist/cli/cli.js +858 -537
  42. package/dist/cli/generate-ai-content.js +760 -455
  43. package/dist/cli/init.js +25 -7
  44. package/dist/cli/template-files/Dockerfile.cms.template +19 -1
  45. package/dist/cli/template-files/canopycms.config.ts.template +7 -0
  46. package/dist/cli/template-files/cms-stack.ts.template +7 -1
  47. package/dist/client.d.ts +1 -0
  48. package/dist/client.d.ts.map +1 -1
  49. package/dist/client.js.map +1 -1
  50. package/dist/config/schemas/field.d.ts +15 -15
  51. package/dist/config/types.d.ts +2 -2
  52. package/dist/config/types.d.ts.map +1 -1
  53. package/dist/config/types.js +0 -1
  54. package/dist/config/types.js.map +1 -1
  55. package/dist/config/validation.d.ts +9 -0
  56. package/dist/config/validation.d.ts.map +1 -1
  57. package/dist/config/validation.js +14 -0
  58. package/dist/config/validation.js.map +1 -1
  59. package/dist/content-id-index.d.ts +97 -5
  60. package/dist/content-id-index.d.ts.map +1 -1
  61. package/dist/content-id-index.js +170 -18
  62. package/dist/content-id-index.js.map +1 -1
  63. package/dist/content-store.d.ts +81 -7
  64. package/dist/content-store.d.ts.map +1 -1
  65. package/dist/content-store.js +443 -258
  66. package/dist/content-store.js.map +1 -1
  67. package/dist/editor/BranchManager.d.ts.map +1 -1
  68. package/dist/editor/BranchManager.js +18 -6
  69. package/dist/editor/BranchManager.js.map +1 -1
  70. package/dist/editor/CanopyEditor.d.ts.map +1 -1
  71. package/dist/editor/CanopyEditor.js +2 -2
  72. package/dist/editor/CanopyEditor.js.map +1 -1
  73. package/dist/editor/CanopyEditorPage.d.ts +9 -1
  74. package/dist/editor/CanopyEditorPage.d.ts.map +1 -1
  75. package/dist/editor/CanopyEditorPage.js +9 -2
  76. package/dist/editor/CanopyEditorPage.js.map +1 -1
  77. package/dist/editor/Editor.d.ts +9 -1
  78. package/dist/editor/Editor.d.ts.map +1 -1
  79. package/dist/editor/Editor.js +58 -24
  80. package/dist/editor/Editor.js.map +1 -1
  81. package/dist/editor/FormRenderer.d.ts.map +1 -1
  82. package/dist/editor/FormRenderer.js +12 -0
  83. package/dist/editor/FormRenderer.js.map +1 -1
  84. package/dist/editor/admin/SystemHealthPanel.js +6 -2
  85. package/dist/editor/admin/SystemHealthPanel.js.map +1 -1
  86. package/dist/editor/components/EntryCreateModal.d.ts +9 -1
  87. package/dist/editor/components/EntryCreateModal.d.ts.map +1 -1
  88. package/dist/editor/components/EntryCreateModal.js +4 -1
  89. package/dist/editor/components/EntryCreateModal.js.map +1 -1
  90. package/dist/editor/fields/DateTimeField.d.ts +46 -0
  91. package/dist/editor/fields/DateTimeField.d.ts.map +1 -0
  92. package/dist/editor/fields/DateTimeField.js +66 -0
  93. package/dist/editor/fields/DateTimeField.js.map +1 -0
  94. package/dist/editor/fields/NumberField.d.ts +34 -0
  95. package/dist/editor/fields/NumberField.d.ts.map +1 -0
  96. package/dist/editor/fields/NumberField.js +53 -0
  97. package/dist/editor/fields/NumberField.js.map +1 -0
  98. package/dist/editor/fields/NumberListField.d.ts +25 -0
  99. package/dist/editor/fields/NumberListField.d.ts.map +1 -0
  100. package/dist/editor/fields/NumberListField.js +53 -0
  101. package/dist/editor/fields/NumberListField.js.map +1 -0
  102. package/dist/editor/hooks/useBranchManager.d.ts.map +1 -1
  103. package/dist/editor/hooks/useBranchManager.js +115 -26
  104. package/dist/editor/hooks/useBranchManager.js.map +1 -1
  105. package/dist/editor/hooks/useDraftManager.d.ts +8 -0
  106. package/dist/editor/hooks/useDraftManager.d.ts.map +1 -1
  107. package/dist/editor/hooks/useDraftManager.js +261 -21
  108. package/dist/editor/hooks/useDraftManager.js.map +1 -1
  109. package/dist/editor/hooks/useEntryManager.d.ts +21 -0
  110. package/dist/editor/hooks/useEntryManager.d.ts.map +1 -1
  111. package/dist/editor/hooks/useEntryManager.js +25 -2
  112. package/dist/editor/hooks/useEntryManager.js.map +1 -1
  113. package/dist/editor/theme.d.ts +8 -8
  114. package/dist/git-manager.d.ts +51 -7
  115. package/dist/git-manager.d.ts.map +1 -1
  116. package/dist/git-manager.js +105 -14
  117. package/dist/git-manager.js.map +1 -1
  118. package/dist/http/handler.d.ts.map +1 -1
  119. package/dist/http/handler.js +70 -27
  120. package/dist/http/handler.js.map +1 -1
  121. package/dist/http/router.d.ts.map +1 -1
  122. package/dist/http/router.js +40 -3
  123. package/dist/http/router.js.map +1 -1
  124. package/dist/operating-mode/deployment-name-fixtures.d.ts +29 -0
  125. package/dist/operating-mode/deployment-name-fixtures.d.ts.map +1 -0
  126. package/dist/operating-mode/deployment-name-fixtures.js +55 -0
  127. package/dist/operating-mode/deployment-name-fixtures.js.map +1 -0
  128. package/dist/operating-mode/deployment-name.d.ts +9 -0
  129. package/dist/operating-mode/deployment-name.d.ts.map +1 -1
  130. package/dist/operating-mode/deployment-name.js +9 -1
  131. package/dist/operating-mode/deployment-name.js.map +1 -1
  132. package/dist/operating-mode/index.d.ts +2 -1
  133. package/dist/operating-mode/index.d.ts.map +1 -1
  134. package/dist/operating-mode/index.js +4 -1
  135. package/dist/operating-mode/index.js.map +1 -1
  136. package/dist/operating-mode/mode-env.d.ts +58 -0
  137. package/dist/operating-mode/mode-env.d.ts.map +1 -0
  138. package/dist/operating-mode/mode-env.js +97 -0
  139. package/dist/operating-mode/mode-env.js.map +1 -0
  140. package/dist/resolve-canopy-user.d.ts +34 -0
  141. package/dist/resolve-canopy-user.d.ts.map +1 -0
  142. package/dist/resolve-canopy-user.js +55 -0
  143. package/dist/resolve-canopy-user.js.map +1 -0
  144. package/dist/schema/schema-store.d.ts +53 -2
  145. package/dist/schema/schema-store.d.ts.map +1 -1
  146. package/dist/schema/schema-store.js +92 -21
  147. package/dist/schema/schema-store.js.map +1 -1
  148. package/dist/server.d.ts +9 -0
  149. package/dist/server.d.ts.map +1 -1
  150. package/dist/server.js +9 -0
  151. package/dist/server.js.map +1 -1
  152. package/dist/services.d.ts.map +1 -1
  153. package/dist/services.js +40 -6
  154. package/dist/services.js.map +1 -1
  155. package/dist/settings-workspace.d.ts +40 -0
  156. package/dist/settings-workspace.d.ts.map +1 -1
  157. package/dist/settings-workspace.js +139 -151
  158. package/dist/settings-workspace.js.map +1 -1
  159. package/dist/types.d.ts +10 -0
  160. package/dist/types.d.ts.map +1 -1
  161. package/dist/utils/content-write-lock.d.ts +127 -0
  162. package/dist/utils/content-write-lock.d.ts.map +1 -0
  163. package/dist/utils/content-write-lock.js +170 -0
  164. package/dist/utils/content-write-lock.js.map +1 -0
  165. package/dist/utils/error.d.ts +1 -1
  166. package/dist/utils/error.js +1 -1
  167. package/dist/utils/git.d.ts +16 -0
  168. package/dist/utils/git.d.ts.map +1 -1
  169. package/dist/utils/git.js +22 -0
  170. package/dist/utils/git.js.map +1 -1
  171. package/dist/utils/sanitize-href.d.ts +28 -3
  172. package/dist/utils/sanitize-href.d.ts.map +1 -1
  173. package/dist/utils/sanitize-href.js +64 -6
  174. package/dist/utils/sanitize-href.js.map +1 -1
  175. package/dist/validation/entry-link-validator.d.ts +1 -1
  176. package/dist/validation/entry-link-validator.js +3 -3
  177. package/dist/validation/entry-link-validator.js.map +1 -1
  178. package/dist/validation/entry-validator.js +1 -1
  179. package/dist/validation/entry-validator.js.map +1 -1
  180. package/dist/worker/cms-worker.d.ts +13 -0
  181. package/dist/worker/cms-worker.d.ts.map +1 -1
  182. package/dist/worker/cms-worker.js +326 -264
  183. package/dist/worker/cms-worker.js.map +1 -1
  184. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"services.js","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAG5C,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,GAEpB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAClE,OAAO,EAAE,mBAAmB,EAAsB,MAAM,kBAAkB,CAAA;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C;;;;;;;GAOG;AACH,SAAS,0BAA0B;IACjC,IAAI,KAAK,GAAgD,IAAI,CAAA;IAE7D,OAAO,KAAK,EAAE,MAAoB,EAAmB,EAAE;QACrD,IAAI,MAAM,CAAC,mBAAmB;YAAE,OAAO,MAAM,CAAC,mBAAmB,CAAA;QACjE,6EAA6E;QAC7E,IAAI,gBAAgB,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAA;QACvE,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACtB,IAAI,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;gBACnC,OAAO,KAAK,CAAC,KAAK,CAAA;YACpB,CAAC;YACD,mEAAmE;YACnE,2DAA2D;YAC3D,gEAAgE;YAChE,4CAA4C;YAC5C,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,CAAA;YACxF,KAAK,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,IAAI,EAAE,CAAA;YAChD,OAAO,MAAM,CAAA;QACf,CAAC;QACD,OAAO,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAA;IAC3C,CAAC,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAgB,EAAE;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAA;IACrD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,GAAG,EAAE,CAAA;IAC7B,OAAO,IAAI,GAAG,CACZ,MAAM;SACH,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;SACtB,MAAM,CAAC,OAAO,CAAC,CACnB,CAAA;AACH,CAAC,CAAA;AAsFD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACvC,MAAoB,EACpB,UAAuC,EAAE,EAChB,EAAE;IAC3B,OAAO,6BAA6B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AACvD,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAC3C,MAAoB,EACpB,UAAuC,EAAE,EAChB,EAAE;IAC3B,yEAAyE;IACzE,uEAAuE;IACvE,MAAM,UAAU,GAAG;QACjB,GAAG,MAAM;QACT,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,MAAM;QACrD,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,iBAAiB,IAAI,MAAM;KACtF,CAAA;IACD,OAAO,6BAA6B,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;AAC3D,CAAC,CAAA;AAED;;;GAGG;AACH,KAAK,UAAU,6BAA6B,CAC1C,MAAoB,EACpB,OAAoC;IAEpC,2FAA2F;IAC3F,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC/C,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;IAE/B,wEAAwE;IACxE,6EAA6E;IAC7E,yEAAyE;IACzE,6EAA6E;IAC7E,2EAA2E;IAC3E,0EAA0E;IAC1E,MAAM,kBAAkB,GAAG,0BAA0B,EAAE,CAAA;IACvD,MAAM,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,CAAA;IACvD,MAAM,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAA;IACnD,MAAM,mBAAmB,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAC5D,uEAAuE;IACvE,6EAA6E;IAC7E,kEAAkE;IAClE,MAAM,iBAAiB,GACrB,kBAAkB;QAClB,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YACjD,CAAC,CAAC,MAAM,kBAAkB,CAAC,EAAE,GAAG,MAAM,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC;YACzE,CAAC,CAAC,MAAM,CAAC,CAAA;IACb,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAA;IAE9D,4CAA4C;IAC5C,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAA;IAEhD,mEAAmE;IACnE,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAEzF,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,CAAA;IACvF,oFAAoF;IACpF,yEAAyE;IACzE,MAAM,eAAe,GAAG,qBAAqB,CAAC,EAAE,EAAE,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAC,CAAA;IACrF,4FAA4F;IAC5F,MAAM,qBAAqB,GACzB,OAAO,CAAC,qBAAqB;QAC7B,CAAC,KAAK,IAAqB,EAAE;YAC3B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAE/C,MAAM,YAAY,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAA;YAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAA;YAEzD,oEAAoE;YACpE,gEAAgE;YAChE,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC,MAAM,CAAC,CAAA;YACpD,MAAM,OAAO,CAAC,kBAAkB,CAAC;gBAC/B,YAAY;gBACZ,UAAU;gBACV,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,SAAS,EAAE,MAAM,CAAC,gBAAgB;aACnC,CAAC,CAAA;YAEF,OAAO,YAAY,CAAA;QACrB,CAAC,CAAC,CAAA;IAEJ,MAAM,iBAAiB,GAAG;QACxB,iBAAiB;QACjB,mBAAmB;QACnB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,MAAM;QACrD,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,qBAAqB;KACtB,CAAA;IACD,MAAM,kBAAkB,GAAG,wBAAwB,CAAC,iBAAiB,CAAC,CAAA;IACtE,MAAM,+BAA+B,GAAG,CACtC,OAAsB,EACtB,UAAkB,EAClB,IAAgB,EACe,EAAE,CACjC,0BAA0B,CAAC,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;IAC1E,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAA;IAC1C,MAAM,mBAAmB,GAAG,CAC1B,QAAgB,EAChB,IAA0E,EAC1E,EAAE,CACF,IAAI,UAAU,CAAC;QACb,QAAQ;QACR,UAAU,EAAE,IAAI,EAAE,UAAU,IAAI,MAAM,CAAC,iBAAiB,IAAI,MAAM;QAClE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,MAAM,CAAC,iBAAiB,IAAI,cAAc,CAAC,UAAU;QAC7E,eAAe,EAAE,IAAI,EAAE,eAAe;KACvC,CAAC,CAAA;IAEJ,MAAM,WAAW,GAAG,KAAK,EAAE,OAI1B,EAAiB,EAAE;QAClB,uEAAuE;QACvE,6EAA6E;QAC7E,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE;YAC1D,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU;SAC9C,CAAC,CAAA;QACF,MAAM,GAAG,CAAC,YAAY,CAAC;YACrB,IAAI,EAAE,MAAM,CAAC,gBAAgB;YAC7B,KAAK,EAAE,MAAM,CAAC,iBAAiB;SAChC,CAAC,CAAA;QACF,MAAM,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC5B,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACnC,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,KAAK,EAAE,OAG3B,EAAiB,EAAE;QAClB,yEAAyE;QACzE,2EAA2E;QAC3E,wEAAwE;QACxE,0EAA0E;QAC1E,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,iBAAiB,IAAI,MAAM,CAAA;QAC7F,IAAI,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,kBAAkB,CAAC,aAAa,CAAC,EAAE,CAAC;YAC1F,MAAM,IAAI,KAAK,CACb,gDAAgD,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,mDAAmD,CAC/H,CAAA;QACH,CAAC;QAED,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE;YAC1D,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU;SAC9C,CAAC,CAAA;QACF,MAAM,GAAG,CAAC,YAAY,CAAC;YACrB,IAAI,EAAE,MAAM,CAAC,gBAAgB;YAC7B,KAAK,EAAE,MAAM,CAAC,iBAAiB;SAChC,CAAC,CAAA;QACF,MAAM,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACrD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAA;QACjC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAClB,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,UAAU,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;YAC5E,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC,CAAA;IAED,kFAAkF;IAClF,iFAAiF;IACjF,IAAI,aAAwC,CAAA;IAC5C,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAA;QACzC,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;gBACtD,IAAI,OAAO,EAAE,CAAC;oBACZ,aAAa,GAAG,OAAO,CAAA;gBACzB,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,GAAG,CAAC,CAAA;gBACpE,sCAAsC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,sBAAsB,GAAG,KAAK,EAAE,OAKrC,EAME,EAAE;QACH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;QAExB,6CAA6C;QAC7C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC;YAC5C,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;QAC5C,CAAC;QAED,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAA;QACnF,wEAAwE;QACxE,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAA;QAE9E,IAAI,CAAC;YACH,qEAAqE;YACrE,yEAAyE;YACzE,4EAA4E;YAC5E,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,iBAAiB,EAAE,CAAA;YAC/B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,gBAAgB;oBAAE,MAAM,GAAG,CAAA;gBAC9C,0DAA0D;gBAC1D,OAAO,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAA;YAC7F,CAAC;YAED,SAAS;YACT,MAAM,GAAG,CAAC,YAAY,CAAC;gBACrB,IAAI,EAAE,MAAM,CAAC,gBAAgB;gBAC7B,KAAK,EAAE,MAAM,CAAC,iBAAiB;aAChC,CAAC,CAAA;YACF,MAAM,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAC5B,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YAEjC,0EAA0E;YAC1E,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,SAAS,EAAE,IAAI;oBACf,MAAM,EAAE,KAAK;oBACb,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa;iBAC9D,CAAA;YACH,CAAC;YAED,6EAA6E;YAC7E,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;gBAC/B,sDAAsD;gBACtD,IAAI,aAAa,EAAE,CAAC;oBAClB,IAAI,KAAyB,CAAA;oBAC7B,IAAI,CAAC;wBACH,gEAAgE;wBAChE,kEAAkE;wBAClE,6DAA6D;wBAC7D,iEAAiE;wBACjE,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,gBAAgB,CAAC;4BAClD,IAAI,EAAE,cAAc;4BACpB,IAAI,EAAE,MAAM,CAAC,iBAAiB,IAAI,MAAM;4BACxC,KAAK,EAAE,+BAA+B;4BACtC,IAAI,EAAE,oIAAoI;yBAC3I,CAAC,CAAA;wBACF,KAAK,GAAG,MAAM,CAAC,GAAG,CAAA;oBACpB,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAA;wBAChD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,CAAA;oBACrE,CAAC;oBACD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAA;gBACvE,CAAC;gBAED,kEAAkE;gBAClE,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;gBACvC,IAAI,CAAC;oBACH,MAAM,WAAW,CAAC,OAAO,EAAE;wBACzB,MAAM,EAAE,8BAA8B;wBACtC,OAAO,EAAE;4BACP,MAAM,EAAE,cAAc;4BACtB,UAAU,EAAE,MAAM,CAAC,iBAAiB,IAAI,MAAM;4BAC9C,KAAK,EAAE,+BAA+B;4BACtC,IAAI,EAAE,oIAAoI;yBAC3I;qBACF,CAAC,CAAA;oBACF,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,CAAA;gBACtE,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAA;oBACxD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,CAAA;gBACrE,CAAC;YACH,CAAC;YAED,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAChE,CAAA;QACH,CAAC;IACH,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAA;IACjC,MAAM,YAAY,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAA;IAErD,iDAAiD;IACjD,8DAA8D;IAC9D,MAAM,QAAQ,GAAG,YAAY,CAAC,iBAAiB,EAAE;QAC/C,CAAC,CAAC,IAAI,cAAc,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;QACzD,CAAC,CAAC,SAAS,CAAA;IAEb,MAAM,QAAQ,GAAmB;QAC/B,MAAM;QACN,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,IAAI,EAAE;QACtD,iBAAiB;QACjB,iBAAiB;QACjB,eAAe;QACf,kBAAkB;QAClB,0BAA0B,EAAE,+BAA+B;QAC3D,mBAAmB;QACnB,QAAQ;QACR,aAAa;QACb,iBAAiB;QACjB,WAAW;QACX,YAAY;QACZ,sBAAsB;QACtB,qBAAqB;QACrB,mBAAmB,EAAE,KAAK,IAAI,EAAE;YAC9B,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK;gBAAE,OAAM;YAC1C,oEAAoE;YACpE,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAM;YAC7C,mEAAmE;YACnE,kEAAkE;YAClE,IAAI,oBAAoB,IAAI,kBAAkB;gBAAE,OAAM;YACtD,wEAAwE;YACxE,0EAA0E;YAC1E,yEAAyE;YACzE,wEAAwE;YACxE,iEAAiE;YACjE,oEAAoE;YACpE,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC;gBACrC,GAAG,QAAQ,CAAC,MAAM;gBAClB,mBAAmB,EAAE,SAAS;aAC/B,CAAC,CAAA;YACF,MAAM,IAAI,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAA;YACnC,IAAI,OAAO,GAAG,KAAK,CAAA;YACnB,IAAI,CAAC,oBAAoB,IAAI,KAAK,KAAK,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAChE,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAA;gBAChC,OAAO,GAAG,IAAI,CAAA;YAChB,CAAC;YACD,IAAI,CAAC,kBAAkB,IAAI,KAAK,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5D,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAA;gBAC9B,OAAO,GAAG,IAAI,CAAA;YAChB,CAAC;YACD,IAAI,OAAO,EAAE,CAAC;gBACZ,8EAA8E;gBAC9E,2EAA2E;gBAC3E,2EAA2E;gBAC3E,yEAAyE;gBACzE,wDAAwD;gBACxD,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAA;YACxB,CAAC;QACH,CAAC;KACF,CAAA;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC"}
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,51 @@
1
1
  import type { CanopyConfig } from './config';
2
2
  import type { OperatingMode } from './operating-mode';
3
+ /**
4
+ * Directory the cross-process init lock is anchored on — a dedicated sibling of
5
+ * the settings root, and NOT the settings root itself.
6
+ *
7
+ * Two properties this name has to satisfy:
8
+ *
9
+ * 1. **It must not pre-create the settings root.** `acquireProvisioningLock`
10
+ * mkdir's its target, and `GitManager.initializeWorkspace` clones INTO the
11
+ * settings root — `git clone` refuses a destination that already has content
12
+ * in it. So the lock lives beside the settings root, never inside it.
13
+ * 2. **It must not alias any other proper-lockfile target.** proper-lockfile
14
+ * keys its module-level bookkeeping (refresh timer + release function) by the
15
+ * TARGET path passed to `lock()`, not by `lockfilePath`, so two live locks in
16
+ * one process that share a target clobber each other's registry entry (see
17
+ * `.claude/future-tasks/proper-lockfile-hazards.md`). This target is a
18
+ * dedicated dot-directory, so it collides with none of the existing targets:
19
+ * the content-branches root and the bare remote's parent (provisioning locks
20
+ * — note the latter IS `path.dirname(settingsRoot)`, which is precisely why
21
+ * this cannot be anchored there: settings init calls into
22
+ * `ensureLocalSimulatedRemote` while holding this lock), `<branchRoot>/.canopy-meta`
23
+ * (content-write lock), `<workspaceRoot>/.tasks` (worker task lock), and the
24
+ * individual JSON file paths used by `withOccFileLock`.
25
+ */
26
+ export declare function settingsInitLockTarget(settingsRoot: string): string;
3
27
  export interface EnsureSettingsWorkspaceOptions {
4
28
  settingsRoot: string;
5
29
  branchName: string;
6
30
  mode: OperatingMode;
7
31
  remoteUrl?: string;
8
32
  }
33
+ /**
34
+ * Manages settings filesystem workspace and git operations.
35
+ *
36
+ * Settings are stored separately from content branches:
37
+ * - prod/dev: Orphan git branches (no shared history with content)
38
+ *
39
+ * Unlike BranchWorkspaceManager, this does not:
40
+ * - Create or manage metadata files
41
+ * - Interact with the branch registry
42
+ * - Check for special cases (settings are always settings)
43
+ *
44
+ * Uses two layers of locking, mirroring BranchWorkspaceManager:
45
+ * - In-memory Promise lock for within-process serialization (Lambda request lifecycle)
46
+ * - `acquireProvisioningLock` (proper-lockfile) for cross-process/cross-host
47
+ * synchronization of the init itself (multiple Lambda containers on EFS)
48
+ */
9
49
  export declare class SettingsWorkspaceManager {
10
50
  private readonly config;
11
51
  constructor(config: CanopyConfig);
@@ -1 +1 @@
1
- {"version":3,"file":"settings-workspace.d.ts","sourceRoot":"","sources":["../src/settings-workspace.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAerD,MAAM,WAAW,8BAA8B;IAC7C,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,aAAa,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA6FD,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAEzB,MAAM,EAAE,YAAY;IAI1B,kBAAkB,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;CAuIjF"}
1
+ {"version":3,"file":"settings-workspace.d.ts","sourceRoot":"","sources":["../src/settings-workspace.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAgBrD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,MAAM,WAAW,8BAA8B;IAC7C,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,aAAa,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA8FD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAEzB,MAAM,EAAE,YAAY;IAI1B,kBAAkB,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC;CAmFjF"}
@@ -2,83 +2,41 @@ import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import { GitManager } from './git-manager.js';
4
4
  import { createDebugLogger } from './utils/debug.js';
5
- import { getErrorMessage, isFileExistsError } from './utils/error.js';
5
+ import { getErrorMessage } from './utils/error.js';
6
+ import { acquireProvisioningLock } from './utils/provisioning-lock.js';
6
7
  import { RESERVED_SETTINGS_BRANCH_PREFIX } from './paths/index.js';
7
8
  const log = createDebugLogger({ prefix: 'SettingsWorkspace' });
8
9
  // In-memory lock to prevent concurrent workspace initialization within the same process.
9
10
  // Settings only need one lock (not per-branch like content branches).
10
11
  let settingsInitLock = null;
11
- // Stale lock threshold — init should complete well within this window
12
- const LOCK_STALE_MS = 30_000;
12
+ const SETTINGS_INIT_LOCK_DIR = '.settings-init';
13
+ const SETTINGS_INIT_LOCK_NAME = 'lock';
13
14
  /**
14
- * Acquire a file-based lock for cross-process synchronization.
15
- * Uses O_CREAT|O_EXCL (wx flag) for atomic file creation.
16
- * Stale locks (older than LOCK_STALE_MS) are cleaned up automatically.
15
+ * Directory the cross-process init lock is anchored on — a dedicated sibling of
16
+ * the settings root, and NOT the settings root itself.
17
17
  *
18
- * Returns true if lock was acquired, false if another process holds it.
19
- */
20
- async function acquireFileLock(lockPath) {
21
- const lockContent = JSON.stringify({
22
- pid: process.pid,
23
- timestamp: new Date().toISOString(),
24
- });
25
- await fs.mkdir(path.dirname(lockPath), { recursive: true });
26
- try {
27
- const handle = await fs.open(lockPath, 'wx');
28
- await handle.writeFile(lockContent, 'utf-8');
29
- await handle.close();
30
- return true;
31
- }
32
- catch (err) {
33
- if (!isFileExistsError(err))
34
- throw err;
35
- }
36
- // Lock file exists — check if stale
37
- try {
38
- const stat = await fs.stat(lockPath);
39
- const ageMs = Date.now() - stat.mtimeMs;
40
- if (ageMs < LOCK_STALE_MS) {
41
- // Lock is fresh — another process is initializing
42
- return false;
43
- }
44
- // Stale lock — another process likely crashed during init
45
- log.debug('workspace', 'Removing stale settings init lock', { ageMs });
46
- await fs.unlink(lockPath).catch(() => { });
47
- }
48
- catch {
49
- // Lock file vanished between check and stat — try again
50
- }
51
- // Retry lock acquisition after stale cleanup
52
- try {
53
- const handle = await fs.open(lockPath, 'wx');
54
- await handle.writeFile(lockContent, 'utf-8');
55
- await handle.close();
56
- return true;
57
- }
58
- catch (retryErr) {
59
- if (isFileExistsError(retryErr))
60
- return false;
61
- throw retryErr;
62
- }
63
- }
64
- async function releaseFileLock(lockPath) {
65
- await fs.unlink(lockPath).catch(() => { });
66
- }
67
- /**
68
- * Manages settings filesystem workspace and git operations.
18
+ * Two properties this name has to satisfy:
69
19
  *
70
- * Settings are stored separately from content branches:
71
- * - prod/dev: Orphan git branches (no shared history with content)
72
- *
73
- * Unlike BranchWorkspaceManager, this does not:
74
- * - Create or manage metadata files
75
- * - Interact with the branch registry
76
- * - Check for special cases (settings are always settings)
77
- *
78
- * Uses two layers of locking:
79
- * - In-memory Promise lock for within-process serialization (Lambda request lifecycle)
80
- * - File-based lock for cross-process synchronization (multiple Lambda instances on EFS)
20
+ * 1. **It must not pre-create the settings root.** `acquireProvisioningLock`
21
+ * mkdir's its target, and `GitManager.initializeWorkspace` clones INTO the
22
+ * settings root — `git clone` refuses a destination that already has content
23
+ * in it. So the lock lives beside the settings root, never inside it.
24
+ * 2. **It must not alias any other proper-lockfile target.** proper-lockfile
25
+ * keys its module-level bookkeeping (refresh timer + release function) by the
26
+ * TARGET path passed to `lock()`, not by `lockfilePath`, so two live locks in
27
+ * one process that share a target clobber each other's registry entry (see
28
+ * `.claude/future-tasks/proper-lockfile-hazards.md`). This target is a
29
+ * dedicated dot-directory, so it collides with none of the existing targets:
30
+ * the content-branches root and the bare remote's parent (provisioning locks
31
+ * — note the latter IS `path.dirname(settingsRoot)`, which is precisely why
32
+ * this cannot be anchored there: settings init calls into
33
+ * `ensureLocalSimulatedRemote` while holding this lock), `<branchRoot>/.canopy-meta`
34
+ * (content-write lock), `<workspaceRoot>/.tasks` (worker task lock), and the
35
+ * individual JSON file paths used by `withOccFileLock`.
81
36
  */
37
+ export function settingsInitLockTarget(settingsRoot) {
38
+ return path.join(path.dirname(path.resolve(settingsRoot)), SETTINGS_INIT_LOCK_DIR);
39
+ }
82
40
  /**
83
41
  * Whether a settings workspace actually holds settings data yet. Used by the
84
42
  * rename guard to tell an already-populated workspace (refuse) apart from a
@@ -99,6 +57,87 @@ async function settingsFilesPresent(settingsRoot) {
99
57
  }
100
58
  return false;
101
59
  }
60
+ /**
61
+ * Rename guard (settings-branch protection). Refuses to boot when an
62
+ * ALREADY-POPULATED settings workspace would be re-orphaned under a different
63
+ * branch name.
64
+ *
65
+ * Trace of what happens without it: GitManager.initializeWorkspace sees an
66
+ * existing .git (no clone happens) and goes straight to
67
+ * createOrphanSettingsBranch(branchName). If that name isn't already known, git
68
+ * runs `checkout --orphan <name>` + `rm -rf .` + an empty `--allow-empty`
69
+ * commit — orphan branches share no history, so this isn't a "migration", it
70
+ * PERMANENTLY WIPES permissions.json/groups.json with nothing to recover from.
71
+ * That almost always means deploymentName / settingsBranch /
72
+ * CANOPYCMS_DEPLOYMENT_NAME changed on a live deployment (see
73
+ * resolveDeploymentName in operating-mode/deployment-name.ts).
74
+ *
75
+ * What this deliberately does NOT refuse, and why it matters:
76
+ * initializeWorkspace clones at the BASE branch and only creates the orphan
77
+ * branch several steps later (addConfig, resolveRemoteUrl, ensureRemote come in
78
+ * between). If that first init is interrupted — a Lambda timeout on a slow EFS
79
+ * clone, an OOM, a spot interruption — it leaves a perfectly valid repo sitting
80
+ * on the base branch with NO settings files in it. Refusing on "branch differs"
81
+ * alone would then brick the deployment permanently on every subsequent boot, to
82
+ * protect data that was never written. So the refusal additionally requires
83
+ * evidence that this really is a populated settings workspace: either it is
84
+ * checked out on some OTHER settings branch, or the settings files are actually
85
+ * on disk.
86
+ *
87
+ * This function is NEVER gated on holding the init lock — see its two call
88
+ * sites in ensureGitWorkspace and the comment there.
89
+ */
90
+ async function assertSettingsWorkspaceIdentity(options) {
91
+ const repoExists = await GitManager.repoExistsAt(options.settingsRoot);
92
+ if (!repoExists)
93
+ return;
94
+ let currentBranch;
95
+ let readError;
96
+ try {
97
+ const existing = new GitManager({ repoPath: options.settingsRoot });
98
+ currentBranch = (await existing.status()).current ?? undefined;
99
+ }
100
+ catch (err) {
101
+ currentBranch = undefined;
102
+ readError = getErrorMessage(err);
103
+ }
104
+ const onDifferentBranch = currentBranch !== options.branchName;
105
+ const looksLikeSettingsBranch = currentBranch !== undefined && currentBranch.startsWith(RESERVED_SETTINGS_BRANCH_PREFIX);
106
+ const hasSettingsData = await settingsFilesPresent(options.settingsRoot);
107
+ if (onDifferentBranch && (looksLikeSettingsBranch || hasSettingsData)) {
108
+ throw new Error(`CanopyCMS: refusing to initialize settings workspace at ${options.settingsRoot}. ` +
109
+ (currentBranch
110
+ ? `It is currently on branch '${currentBranch}', but this deployment resolved ` +
111
+ `settings branch '${options.branchName}'.`
112
+ : `Its current branch could not be read (${readError ?? 'unknown error'}), but it ` +
113
+ `holds settings files, and this deployment resolved settings branch ` +
114
+ `'${options.branchName}'.`) +
115
+ ` Proceeding would run \`git checkout --orphan\` + \`rm -rf .\` on this workspace, ` +
116
+ `which PERMANENTLY WIPES permissions.json/groups.json (orphan branches share no ` +
117
+ `history — there is nothing to migrate from). This almost always means ` +
118
+ `deploymentName, settingsBranch, or CANOPYCMS_DEPLOYMENT_NAME changed on a ` +
119
+ `deployment that already has a populated settings workspace. To resolve: restore ` +
120
+ `the previous value so this resolves back to ` +
121
+ `'${currentBranch ?? options.branchName}', or, if starting fresh is genuinely ` +
122
+ `intended, move ${options.settingsRoot} aside manually first.`);
123
+ }
124
+ }
125
+ /**
126
+ * Manages settings filesystem workspace and git operations.
127
+ *
128
+ * Settings are stored separately from content branches:
129
+ * - prod/dev: Orphan git branches (no shared history with content)
130
+ *
131
+ * Unlike BranchWorkspaceManager, this does not:
132
+ * - Create or manage metadata files
133
+ * - Interact with the branch registry
134
+ * - Check for special cases (settings are always settings)
135
+ *
136
+ * Uses two layers of locking, mirroring BranchWorkspaceManager:
137
+ * - In-memory Promise lock for within-process serialization (Lambda request lifecycle)
138
+ * - `acquireProvisioningLock` (proper-lockfile) for cross-process/cross-host
139
+ * synchronization of the init itself (multiple Lambda containers on EFS)
140
+ */
102
141
  export class SettingsWorkspaceManager {
103
142
  constructor(config) {
104
143
  this.config = config;
@@ -117,88 +156,34 @@ export class SettingsWorkspaceManager {
117
156
  branchName: options.branchName,
118
157
  mode: options.mode,
119
158
  });
120
- // Layer 2: File-based lock (prevents concurrent init across processes)
121
- // Lock file is placed OUTSIDE the settings root (as a sibling) so that
122
- // acquireFileLock's mkdir does not pre-create the settings directory,
123
- // which would cause git clone to fail ("already exists and is not empty").
124
- const lockPath = path.join(path.dirname(options.settingsRoot), '.settings-init.lock');
125
- const acquired = await acquireFileLock(lockPath);
159
+ // Rename guard, run LOCK-FREE and unconditionally, before any waiting.
160
+ // A deployment whose settings-branch name no longer matches the
161
+ // workspace on disk is misconfigured, not contended: it must refuse
162
+ // immediately rather than queue behind a live provisioner for what can
163
+ // be minutes. Running it here also keeps the guarantee the guard has
164
+ // always had — no code path reaches initializeWorkspace without it
165
+ // having run in THIS process.
166
+ await assertSettingsWorkspaceIdentity(options);
167
+ // Layer 2: cross-process/cross-host lock around the init itself
168
+ // (proper-lockfile: heartbeat-refreshed while the holder lives, so a
169
+ // slow EFS clone is not mistaken for a crash, and patient retries so a
170
+ // loser WAITS instead of racing into a concurrent clone).
171
+ //
172
+ // This replaced a bespoke O_CREAT|O_EXCL + 30s-mtime scheme whose
173
+ // return value was only ever used to decide whether to release: the
174
+ // loser proceeded into initializeWorkspace anyway, concurrently with
175
+ // the holder, where it could see a half-written .git, classify it
176
+ // corrupt, and `rm -rf` it out from under the in-flight clone.
177
+ const releaseLock = await acquireProvisioningLock(settingsInitLockTarget(options.settingsRoot), SETTINGS_INIT_LOCK_NAME);
126
178
  try {
127
- // Rename guard (settings-branch protection). Refuses to boot when
128
- // an ALREADY-POPULATED settings workspace would be re-orphaned
129
- // under a different branch name.
130
- //
131
- // Trace of what happens without it: GitManager.initializeWorkspace
132
- // sees an existing .git (no clone happens) and goes straight to
133
- // createOrphanSettingsBranch(options.branchName). If that name
134
- // isn't already known, git runs `checkout --orphan <name>` +
135
- // `rm -rf .` + an empty `--allow-empty` commit — orphan branches
136
- // share no history, so this isn't a "migration", it PERMANENTLY
137
- // WIPES permissions.json/groups.json with nothing to recover from.
138
- // That almost always means deploymentName / settingsBranch /
139
- // CANOPYCMS_DEPLOYMENT_NAME changed on a live deployment (see
140
- // resolveDeploymentName in operating-mode/deployment-name.ts).
141
- //
142
- // What this deliberately does NOT refuse, and why it matters:
143
- // initializeWorkspace clones at the BASE branch and only creates
144
- // the orphan branch several steps later (addConfig, resolveRemoteUrl,
145
- // ensureRemote come in between). If that first init is interrupted
146
- // — a Lambda timeout on a slow EFS clone, an OOM, a spot
147
- // interruption — it leaves a perfectly valid repo sitting on the
148
- // base branch with NO settings files in it. Refusing on "branch
149
- // differs" alone would then brick the deployment permanently on
150
- // every subsequent boot, to protect data that was never written.
151
- // So the refusal additionally requires evidence that this really
152
- // is a populated settings workspace: either it is checked out on
153
- // some OTHER settings branch, or the settings files are actually
154
- // on disk.
155
- const repoExists = await GitManager.repoExistsAt(options.settingsRoot);
156
- // Deliberately NOT gated on `acquired`: when another process holds
157
- // the init lock, THIS process still proceeds to initializeWorkspace
158
- // below (pre-existing concurrent-init design), so skipping the
159
- // guard here would let the un-locked process wipe a populated
160
- // workspace — concurrent cold starts are routine right after a
161
- // deploy, which is exactly when a changed deploymentName arrives.
162
- // Running the guard lock-free cannot false-positive on a
163
- // legitimate concurrent init: a first-ever init sits on the base
164
- // branch with no settings files (fires neither arm of the
165
- // condition below), and a same-name re-init has
166
- // currentBranch === options.branchName. The only mid-init state
167
- // that fires is another process initializing a DIFFERENT settings
168
- // branch name — the rename hazard itself, where firing is correct.
169
- if (repoExists) {
170
- let currentBranch;
171
- let readError;
172
- try {
173
- const existing = new GitManager({ repoPath: options.settingsRoot });
174
- currentBranch = (await existing.status()).current ?? undefined;
175
- }
176
- catch (err) {
177
- currentBranch = undefined;
178
- readError = getErrorMessage(err);
179
- }
180
- const onDifferentBranch = currentBranch !== options.branchName;
181
- const looksLikeSettingsBranch = currentBranch !== undefined &&
182
- currentBranch.startsWith(RESERVED_SETTINGS_BRANCH_PREFIX);
183
- const hasSettingsData = await settingsFilesPresent(options.settingsRoot);
184
- if (onDifferentBranch && (looksLikeSettingsBranch || hasSettingsData)) {
185
- throw new Error(`CanopyCMS: refusing to initialize settings workspace at ${options.settingsRoot}. ` +
186
- (currentBranch
187
- ? `It is currently on branch '${currentBranch}', but this deployment resolved ` +
188
- `settings branch '${options.branchName}'.`
189
- : `Its current branch could not be read (${readError ?? 'unknown error'}), but it ` +
190
- `holds settings files, and this deployment resolved settings branch ` +
191
- `'${options.branchName}'.`) +
192
- ` Proceeding would run \`git checkout --orphan\` + \`rm -rf .\` on this workspace, ` +
193
- `which PERMANENTLY WIPES permissions.json/groups.json (orphan branches share no ` +
194
- `history — there is nothing to migrate from). This almost always means ` +
195
- `deploymentName, settingsBranch, or CANOPYCMS_DEPLOYMENT_NAME changed on a ` +
196
- `deployment that already has a populated settings workspace. To resolve: restore ` +
197
- `the previous value so this resolves back to ` +
198
- `'${currentBranch ?? options.branchName}', or, if starting fresh is genuinely ` +
199
- `intended, move ${options.settingsRoot} aside manually first.`);
200
- }
201
- }
179
+ // Re-run the guard on the now-stable state. If we waited above, the
180
+ // previous holder may have created the workspace (or moved it onto
181
+ // its own settings branch) after we sampled it, and acting on that
182
+ // stale sample is exactly the destructive path the guard exists to
183
+ // stop. Still not gated on any "did I win the race" flag — there is
184
+ // no such flag by design; every process either holds the lock here
185
+ // or has already thrown.
186
+ await assertSettingsWorkspaceIdentity(options);
202
187
  // GitManager.initializeWorkspace is idempotent (checks for .git),
203
188
  // so it's safe to call even if another process just finished init.
204
189
  await GitManager.initializeWorkspace({
@@ -217,8 +202,11 @@ export class SettingsWorkspaceManager {
217
202
  });
218
203
  }
219
204
  finally {
220
- if (acquired) {
221
- await releaseFileLock(lockPath);
205
+ try {
206
+ await releaseLock();
207
+ }
208
+ catch (err) {
209
+ log.debug('workspace', 'Failed to release settings-init lock', { err });
222
210
  }
223
211
  }
224
212
  }
@@ -1 +1 @@
1
- {"version":3,"file":"settings-workspace.js","sourceRoot":"","sources":["../src/settings-workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings-workspace.js","sourceRoot":"","sources":["../src/settings-workspace.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -124,6 +124,16 @@ export interface WorkerStatusReport {
124
124
  durationMs: number;
125
125
  rebased: string[];
126
126
  skippedDirty: string[];
127
+ /**
128
+ * [SYNC-C1] Branches skipped because a content write held the branch's
129
+ * cross-host content-write lock (utils/content-write-lock.ts) -- the
130
+ * worker yields and retries next cycle.
131
+ *
132
+ * Optional for the same reason as `tracked` below: absent from a
133
+ * worker-status.json written by a worker predating that lock. Readers must
134
+ * tolerate its absence.
135
+ */
136
+ skippedLocked?: string[];
127
137
  failed: {
128
138
  branch: string;
129
139
  error: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}