@aligndottech/cli 0.57.0 → 0.58.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.
Files changed (140) hide show
  1. package/README.md +31 -18
  2. package/dist/bin.d.ts +3 -0
  3. package/dist/bin.d.ts.map +1 -0
  4. package/dist/bin.js +14 -0
  5. package/dist/bin.js.map +1 -0
  6. package/dist/commands/doctor.d.ts.map +1 -1
  7. package/dist/commands/doctor.js +24 -2
  8. package/dist/commands/doctor.js.map +1 -1
  9. package/dist/commands/import/git.d.ts.map +1 -1
  10. package/dist/commands/import/git.js +8 -4
  11. package/dist/commands/import/git.js.map +1 -1
  12. package/dist/commands/mcp.js +1 -1
  13. package/dist/commands/mcp.js.map +1 -1
  14. package/dist/commands/setup.d.ts.map +1 -1
  15. package/dist/commands/setup.js +26 -12
  16. package/dist/commands/setup.js.map +1 -1
  17. package/dist/commands/use.d.ts +2 -0
  18. package/dist/commands/use.d.ts.map +1 -1
  19. package/dist/commands/use.js +19 -1
  20. package/dist/commands/use.js.map +1 -1
  21. package/dist/commands/why.d.ts.map +1 -1
  22. package/dist/commands/why.js +91 -53
  23. package/dist/commands/why.js.map +1 -1
  24. package/dist/lib/agent-rules.d.ts +11 -4
  25. package/dist/lib/agent-rules.d.ts.map +1 -1
  26. package/dist/lib/agent-rules.js +163 -190
  27. package/dist/lib/agent-rules.js.map +1 -1
  28. package/dist/lib/ask-listing.d.ts +30 -0
  29. package/dist/lib/ask-listing.d.ts.map +1 -0
  30. package/dist/lib/ask-listing.js +60 -0
  31. package/dist/lib/ask-listing.js.map +1 -0
  32. package/dist/lib/capture-report.d.ts.map +1 -1
  33. package/dist/lib/capture-report.js +11 -3
  34. package/dist/lib/capture-report.js.map +1 -1
  35. package/dist/lib/claude-presence.d.ts +12 -0
  36. package/dist/lib/claude-presence.d.ts.map +1 -0
  37. package/dist/lib/claude-presence.js +19 -0
  38. package/dist/lib/claude-presence.js.map +1 -0
  39. package/dist/lib/config.d.ts +2 -0
  40. package/dist/lib/config.d.ts.map +1 -1
  41. package/dist/lib/config.js +4 -0
  42. package/dist/lib/config.js.map +1 -1
  43. package/dist/lib/doctor.d.ts +9 -1
  44. package/dist/lib/doctor.d.ts.map +1 -1
  45. package/dist/lib/doctor.js +19 -1
  46. package/dist/lib/doctor.js.map +1 -1
  47. package/dist/lib/embedding-assets.d.ts +40 -0
  48. package/dist/lib/embedding-assets.d.ts.map +1 -0
  49. package/dist/lib/embedding-assets.js +74 -0
  50. package/dist/lib/embedding-assets.js.map +1 -0
  51. package/dist/lib/embedding-runtime.d.ts +41 -0
  52. package/dist/lib/embedding-runtime.d.ts.map +1 -0
  53. package/dist/lib/embedding-runtime.js +224 -0
  54. package/dist/lib/embedding-runtime.js.map +1 -0
  55. package/dist/lib/fetchers/git.d.ts +3 -0
  56. package/dist/lib/fetchers/git.d.ts.map +1 -1
  57. package/dist/lib/fetchers/git.js +9 -5
  58. package/dist/lib/fetchers/git.js.map +1 -1
  59. package/dist/lib/found-summary.d.ts.map +1 -1
  60. package/dist/lib/found-summary.js +19 -3
  61. package/dist/lib/found-summary.js.map +1 -1
  62. package/dist/lib/gateway-client.d.ts.map +1 -1
  63. package/dist/lib/gateway-client.js +21 -1
  64. package/dist/lib/gateway-client.js.map +1 -1
  65. package/dist/lib/git.d.ts +7 -0
  66. package/dist/lib/git.d.ts.map +1 -1
  67. package/dist/lib/git.js +7 -2
  68. package/dist/lib/git.js.map +1 -1
  69. package/dist/lib/import-defaults.d.ts +11 -4
  70. package/dist/lib/import-defaults.d.ts.map +1 -1
  71. package/dist/lib/import-defaults.js +11 -4
  72. package/dist/lib/import-defaults.js.map +1 -1
  73. package/dist/lib/launch/mcp-child-env.d.ts.map +1 -1
  74. package/dist/lib/launch/mcp-child-env.js +6 -4
  75. package/dist/lib/launch/mcp-child-env.js.map +1 -1
  76. package/dist/lib/local-db.d.ts +13 -0
  77. package/dist/lib/local-db.d.ts.map +1 -1
  78. package/dist/lib/local-db.js +23 -0
  79. package/dist/lib/local-db.js.map +1 -1
  80. package/dist/lib/local-embeddings-native.d.ts +17 -0
  81. package/dist/lib/local-embeddings-native.d.ts.map +1 -0
  82. package/dist/lib/local-embeddings-native.js +78 -0
  83. package/dist/lib/local-embeddings-native.js.map +1 -0
  84. package/dist/lib/local-embeddings.d.ts.map +1 -1
  85. package/dist/lib/local-embeddings.js +46 -47
  86. package/dist/lib/local-embeddings.js.map +1 -1
  87. package/dist/lib/local-gateway-client.d.ts +2 -2
  88. package/dist/lib/local-gateway-client.d.ts.map +1 -1
  89. package/dist/lib/local-gateway-client.js +43 -31
  90. package/dist/lib/local-gateway-client.js.map +1 -1
  91. package/dist/lib/local-thresholds.d.ts +8 -0
  92. package/dist/lib/local-thresholds.d.ts.map +1 -1
  93. package/dist/lib/local-thresholds.js +8 -0
  94. package/dist/lib/local-thresholds.js.map +1 -1
  95. package/dist/lib/model-cache.d.ts +13 -0
  96. package/dist/lib/model-cache.d.ts.map +1 -1
  97. package/dist/lib/model-cache.js +26 -0
  98. package/dist/lib/model-cache.js.map +1 -1
  99. package/dist/lib/next-step.d.ts +2 -0
  100. package/dist/lib/next-step.d.ts.map +1 -1
  101. package/dist/lib/next-step.js +37 -16
  102. package/dist/lib/next-step.js.map +1 -1
  103. package/dist/lib/node-floor.d.ts +6 -0
  104. package/dist/lib/node-floor.d.ts.map +1 -0
  105. package/dist/lib/node-floor.js +15 -0
  106. package/dist/lib/node-floor.js.map +1 -0
  107. package/dist/lib/safe-config-write.d.ts +24 -1
  108. package/dist/lib/safe-config-write.d.ts.map +1 -1
  109. package/dist/lib/safe-config-write.js +113 -26
  110. package/dist/lib/safe-config-write.js.map +1 -1
  111. package/dist/lib/scope-real.d.ts.map +1 -1
  112. package/dist/lib/search-query.d.ts +21 -0
  113. package/dist/lib/search-query.d.ts.map +1 -1
  114. package/dist/lib/search-query.js +1 -1
  115. package/dist/lib/search-query.js.map +1 -1
  116. package/dist/lib/search-rerank.d.ts +23 -0
  117. package/dist/lib/search-rerank.d.ts.map +1 -0
  118. package/dist/lib/search-rerank.js +63 -0
  119. package/dist/lib/search-rerank.js.map +1 -0
  120. package/dist/lib/suppress-sqlite-warning.d.ts +13 -0
  121. package/dist/lib/suppress-sqlite-warning.d.ts.map +1 -0
  122. package/dist/lib/suppress-sqlite-warning.js +21 -0
  123. package/dist/lib/suppress-sqlite-warning.js.map +1 -0
  124. package/dist/lib/sync/real-env.d.ts.map +1 -1
  125. package/dist/lib/sync/spawn-background.d.ts +1 -1
  126. package/dist/lib/sync/spawn-background.d.ts.map +1 -1
  127. package/dist/lib/sync/spawn-background.js +1 -1
  128. package/dist/lib/sync/spawn-background.js.map +1 -1
  129. package/dist/lib/tar-lite.d.ts +18 -0
  130. package/dist/lib/tar-lite.d.ts.map +1 -0
  131. package/dist/lib/tar-lite.js +120 -0
  132. package/dist/lib/tar-lite.js.map +1 -0
  133. package/dist/lib/user-hooks.d.ts.map +1 -1
  134. package/dist/lib/user-hooks.js +13 -3
  135. package/dist/lib/user-hooks.js.map +1 -1
  136. package/dist/lib/verified-download.d.ts +19 -0
  137. package/dist/lib/verified-download.d.ts.map +1 -0
  138. package/dist/lib/verified-download.js +105 -0
  139. package/dist/lib/verified-download.js.map +1 -0
  140. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"why.js","sourceRoot":"","sources":["../../src/commands/why.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"why.js","sourceRoot":"","sources":["../../src/commands/why.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAgB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,YAAY,EAAmB,mBAAmB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9K,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE9G,SAAS,QAAQ,CAAC,IAAY,EAAE,MAAc,EAAE,QAAgB;IAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACvC,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;QACD,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC;IACxB,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;AAC/F,CAAC;AAID;;;;;;;;;GASG;AACH,SAAS,WAAW,CAAC,CAAY;IAC/B,OAAO,UAAU,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,UAAU,CAAC,CAAY;IAC9B,sEAAsE;IACtE,oEAAoE;IACpE,2CAA2C;IAC3C,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;IAC/C,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5F,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,GAAG,QAAQ,GAAG,WAAW,GAAG,GAAG,GAAG,SAAS,CAAC;AACxF,CAAC;AAED,+EAA+E;AAC/E,SAAS,UAAU,CAAC,CAAY;IAC9B,uFAAuF;IACvF,yFAAyF;IACzF,MAAM,GAAG,GAAG,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC7C,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,SAAS,OAAO,CAAC,CAAY,EAAE,WAA6C;IAC1E,IAAI,CAAC,CAAC,CAAC,mBAAmB,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC;IAChD,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;IACjE,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,OAAoB;IAC3C,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAa,CAAC;IAC3F,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,qBAAqB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,yFAAyF,CAAC;SACtG,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC;SACpC,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,GAAG,CAAC;SACzC,MAAM,CAAC,eAAe,EAAE,gFAAgF,CAAC;SACzG,MAAM,CAAC,OAAO,EAAE,+DAA+D,CAAC;SAChF,MAAM,CAAC,QAAQ,EAAE,oEAAoE,CAAC;SACtF,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,IAAoF,EAAE,GAAY,EAAE,EAAE;QAClI,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;QACnE,kFAAkF;QAClF,mFAAmF;QACnF,MAAM,KAAK,GAAG,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxH,kFAAkF;QAClF,kFAAkF;QAClF,8CAA8C;QAC9C,MAAM,WAAW,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC;QAEpF,+EAA+E;QAC/E,mFAAmF;QACnF,+EAA+E;QAC/E,mFAAmF;QACnF,MAAM,QAAQ,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAE1C,wEAAwE;QACxE,2EAA2E;QAC3E,uEAAuE;QACvE,sEAAsE;QACtE,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,WAAW,GAAG,KAAK,CAAC;QAC1B,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAEhC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI,OAAO,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAEjF,0EAA0E;YAC1E,gFAAgF;YAChF,6EAA6E;YAC7E,+EAA+E;YAC/E,gFAAgF;YAChF,+EAA+E;YAC/E,gEAAgE;YAChE,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACzC,IAAI,WAAW,GAAkB,IAAI,CAAC;YACtC,IAAI,cAAc,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,IAAI,QAAQ,EAAE,CAAC;gBACzD,cAAc,GAAG,IAAI,CAAC;gBACtB,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9F,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBAC9B,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;oBAC5B,OAAO,GAAG,UAAU,CAAC;gBACvB,CAAC;YACH,CAAC;YAED,oFAAoF;YACpF,qFAAqF;YACrF,iFAAiF;YACjF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;gBAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC9L,OAAO;YACT,CAAC;YAED,uGAAuG;YACvG,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE;gBAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;YAE9E,+EAA+E;YAC/E,gFAAgF;YAChF,gFAAgF;YAChF,6EAA6E;YAC7E,6EAA6E;YAC7E,0DAA0D;YAC1D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,iFAAiF;gBACjF,kFAAkF;gBAClF,8EAA8E;gBAC9E,4EAA4E;gBAC5E,0EAA0E;gBAC1E,+EAA+E;gBAC/E,MAAM,eAAe,GAAG,CAAC,QAAQ,IAAI,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBACxE,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,KAAK,GAAG,CAAC,CAAC,CAAC;oBAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;gBACzE,CAAC;qBAAM,CAAC;oBACN,+EAA+E;oBAC/E,iFAAiF;oBACjF,4EAA4E;oBAC5E,+EAA+E;oBAC/E,wEAAwE;oBACxE,EAAE;oBACF,+EAA+E;oBAC/E,gFAAgF;oBAChF,8EAA8E;oBAC9E,EAAE;oBACF,8EAA8E;oBAC9E,4EAA4E;oBAC5E,8EAA8E;oBAC9E,gFAAgF;oBAChF,4EAA4E;oBAC5E,qEAAqE;oBACrE,IAAI,iBAAsC,CAAC;oBAC3C,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;wBACjE,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;oBAC7D,CAAC;oBAAC,MAAM,CAAC;wBACP,2EAA2E;wBAC3E,0EAA0E;wBAC1E,qBAAqB;oBACvB,CAAC;oBAED,IAAI,iBAAiB,EAAE,CAAC;wBACtB,8EAA8E;wBAC9E,+EAA+E;wBAC/E,yEAAyE;wBACzE,MAAM,OAAO,GAAG,sBAAsB,CAAC;wBACvC,IAAI,OAAO,CAAC,KAAK,IAAI,cAAc,EAAE,CAAC;4BACpC,uEAAuE;4BACvE,uEAAuE;4BACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,KAAK,QAAQ,OAAO,CAAC,KAAK,6BAA6B,CAAC,CAAC,CAAC;4BACtG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;wBAC7E,CAAC;6BAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;4BACzB,yEAAyE;4BACzE,gFAAgF;4BAChF,qEAAqE;4BACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,KAAK,QAAQ,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;4BAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC,CAAC;wBAClG,CAAC;6BAAM,CAAC;4BACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,KAAK,iCAAiC,CAAC,CAAC,CAAC;4BACrF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;wBAC7E,CAAC;wBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;wBACzC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBAChB,IAAI,eAAe;4BAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;wBAC/F,OAAO;oBACT,CAAC;oBAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC,CAAC;oBACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBAC9C,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC,CAAC;gBAC1F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,IAAI,eAAe;oBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/F,OAAO;YACT,CAAC;YAED,4EAA4E;YAC5E,4EAA4E;YAC5E,8EAA8E;YAC9E,2EAA2E;YAC3E,oDAAoD;YACpD,EAAE;YACF,gFAAgF;YAChF,gFAAgF;YAChF,yCAAyC;YACzC,IAAI,YAAoC,CAAC;YACzC,IAAI,MAAM,GAAkB,IAAI,CAAC;YACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,KAAK,GAAG,MAAM,kBAAkB,CACpC,KAAK,EACL,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC,CACrF,CAAC;gBACF,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,EAAE;oBAAE,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;gBAE5C,qFAAqF;gBACrF,iFAAiF;gBACjF,oFAAoF;gBACpF,kFAAkF;gBAClF,8EAA8E;gBAC9E,sEAAsE;gBACtE,IACE,YAAY,EAAE,IAAI,KAAK,aAAa;uBACjC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK;oBAC9C,+EAA+E;oBAC/E,iDAAiD;uBAC9C,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;uBAC7B,CAAC,MAAM,CAAC,sBAAsB,EAAE,EACnC,CAAC;oBACD,OAAO,CAAC,IAAI,EAAE,CAAC;oBACf,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;oBACxE,IAAI,MAAM,mBAAmB,CAAC,MAAM,CAAC,KAAK,YAAY,EAAE,CAAC;wBACvD,OAAO,CAAC,KAAK,EAAE,CAAC;wBAChB,MAAM,KAAK,GAAG,MAAM,kBAAkB,CACpC,KAAK,EACL,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC,CACrF,CAAC;wBACF,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;wBACtC,YAAY,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;oBACtD,CAAC;gBACH,CAAC;gBAED,8EAA8E;gBAC9E,8EAA8E;gBAC9E,2EAA2E;gBAC3E,6EAA6E;gBAC7E,6EAA6E;gBAC7E,2EAA2E;gBAC3E,cAAc;gBACd,IAAI,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,IAAI,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;oBAChF,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC9F,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;wBAC9B,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,KAAK,EACL,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC,CACxF,CAAC;wBACF,uEAAuE;wBACvE,2EAA2E;wBAC3E,yEAAyE;wBACzE,6DAA6D;wBAC7D,qEAAqE;wBACrE,qEAAqE;wBACrE,wDAAwD;wBACxD,qEAAqE;wBACrE,0EAA0E;wBAC1E,6CAA6C;wBAC7C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,mBAAmB,CAAC;wBAC5D,IAAI,MAAM,CAAC,EAAE,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;4BAC/D,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;4BAC5B,OAAO,GAAG,UAAU,CAAC;4BACrB,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;wBACvB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,gFAAgF;YAChF,2EAA2E;YAC3E,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,WAAW,yCAAyC,CAAC,CAAC,CAAC;YAC/F,CAAC;iBAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,KAAK,8BAA8B,CAAC,CAAC,CAAC;YAC1F,CAAC;YAED,gFAAgF;YAChF,6EAA6E;YAC7E,6EAA6E;YAC7E,8EAA8E;YAC9E,gFAAgF;YAChF,6EAA6E;YAC7E,KAAK,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAEvF,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChB,sEAAsE;oBACtE,sEAAsE;oBACtE,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,YAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;wBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAClG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;oBACrC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC1C,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;oBACpC,IAAI,IAAI,EAAE,CAAC;wBACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBAClB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAClB,CAAC;oBACD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;wBACtB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC3B,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;wBAC3B,IAAI,IAAI;4BAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;wBACpC,IAAI,GAAG;4BAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAC5B,CAAC;oBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChB,+EAA+E;oBAC/E,6EAA6E;oBAC7E,wEAAwE;oBACxE,qCAAqC;oBACrC,IAAI,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;wBAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,eAAe,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC;wBACpE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAClB,CAAC;oBACD,OAAO;gBACT,CAAC;YACH,CAAC;YAED,oFAAoF;YACpF,uEAAuE;YACvE,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC;YAE7E,kFAAkF;YAClF,qFAAqF;YACrF,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,6EAA6E;gBAC7E,8EAA8E;gBAC9E,2EAA2E;gBAC3E,MAAM,QAAQ,GAAG,YAAY,EAAE,IAAI,KAAK,2BAA2B,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;gBACjG,MAAM,OAAO,GAAG,YAAY,EAAE,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;gBAChF,MAAM,WAAW,GAAG,YAAY,EAAE,IAAI,KAAK,uBAAuB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;gBACzF,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,GAAG,6DAA6D,CAAC;oBACvE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC,CAAC;oBACtF,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;oBAC5E,KAAK,MAAM,CAAC,IAAI,QAAQ;wBAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;oBACjE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,uBAAuB,EAAE,CAAC,CAAC,CAAC;oBACnF,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;gBACzE,CAAC;qBAAM,IAAI,OAAO,EAAE,CAAC;oBACnB,0EAA0E;oBAC1E,uEAAuE;oBACvE,wCAAwC;oBACxC,MAAM,GAAG,sEAAsE,CAAC;oBAChF,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,QAAQ,eAAe,CAAC,CAAC,CAAC;oBACpG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,OAAO,CAAC,MAAM,oCAAoC,CAAC,CAAC,CAAC;oBACrG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC,CAAC;gBACrF,CAAC;qBAAM,IAAI,WAAW,EAAE,CAAC;oBACvB,8EAA8E;oBAC9E,wEAAwE;oBACxE,mEAAmE;oBACnE,iFAAiF;oBACjF,kFAAkF;oBAClF,8EAA8E;oBAC9E,4BAA4B;oBAC5B,MAAM,GAAG,2DAA2D,CAAC;oBACrE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAC;oBAClF,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;wBAClC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;oBAC/D,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC,CAAC;gBAC/F,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,iDAAiD,CAAC;oBAC3D,KAAK,MAAM,IAAI,IAAI,mBAAmB,EAAE;wBAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;YACD,oFAAoF;YACpF,8CAA8C;YAC9C,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEpD,kFAAkF;YAClF,8EAA8E;YAC9E,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YACvE,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,gFAAgF;YAChF,MAAM,aAAa,GAAG,GAAG,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC;YAClE,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;YAC5F,yFAAyF;YACzF,MAAM,OAAO,GAAG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YAExE,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,KAAK,IAAI,CAAC,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,6EAA6E;gBAC7E,gFAAgF;gBAChF,kFAAkF;gBAClF,mFAAmF;gBACnF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC/D,MAAM,IAAI,GAAG,OAAO;oBAClB,CAAC,CAAC,0BAA0B,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;oBACvD,CAAC,CAAC,0BAA0B,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC;gBACjF,IAAI,aAAa,EAAE,CAAC;oBAClB,KAAK,MAAM,IAAI,IAAI,QAAQ;wBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;YAGD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,KAAK,SAAS;oBACtC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;oBAC7H,CAAC,CAAC,EAAE,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;gBAEhD,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;oBACd,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;oBACnG,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;wBAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC/B,CAAC;gBACH,CAAC;gBAED,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ;oBACnD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;oBAChC,CAAC,CAAC,EAAE,CAAC;gBACP,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;gBAC5B,8DAA8D;gBAC9D,6DAA6D;gBAC7D,oEAAoE;gBACpE,kEAAkE;gBAClE,mEAAmE;gBACnE,kEAAkE;gBAClE,yCAAyC;gBACzC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;gBACtD,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,MAAM,aAAa,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5H,6EAA6E;gBAC7E,oFAAoF;gBACpF,MAAM,SAAS,GAAG,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;gBACnD,IAAI,SAAS;oBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC,CAAC;gBACxD,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;gBACpC,IAAI,GAAG;oBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC1B,4BAA4B;gBAC5B,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI;oBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC3E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,sBAAsB,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC3H,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;gBAChC,KAAK,MAAM,IAAI,IAAI,QAAQ;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAC5B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAC;gBAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC,CAAC;gBAC1F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YACD,kFAAkF;YAClF,kFAAkF;YAClF,kEAAkE;YAClE,+EAA+E;YAC/E,IAAI,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,eAAe,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -9,12 +9,12 @@ export declare function isAlignSessionHookGroup(group: unknown): boolean;
9
9
  */
10
10
  export declare function alignClaudeHooks(env?: string): Record<'PreToolUse' | 'PostToolUse', unknown[]>;
11
11
  export declare function writeClaudeCodeHook(cwd: string, env?: string, onForeign?: OnForeign): boolean;
12
- export declare function writeClaudeCodeSessionHook(cwd: string): void;
12
+ export declare function writeClaudeCodeSessionHook(cwd: string): boolean;
13
13
  /** The managed CLAUDE.md block as text, for per-session injection (C1). */
14
14
  export declare function alignNudgeBody(): string;
15
- export declare function writeManagedNudge(cwd: string): void;
16
- export declare function writeAgentsNudge(cwd: string): void;
17
- export declare function writeCursorRule(cwd: string): void;
15
+ export declare function writeManagedNudge(cwd: string): boolean;
16
+ export declare function writeAgentsNudge(cwd: string): boolean;
17
+ export declare function writeCursorRule(cwd: string): boolean;
18
18
  export declare function writeProjectMcpConfig(cwd: string, env?: string, onForeign?: OnForeign): boolean;
19
19
  export declare function piExtensionBody(env?: string): string;
20
20
  export declare function writePiExtension(cwd: string, env?: string, onForeign?: OnForeign): boolean;
@@ -26,4 +26,11 @@ export declare function setupAgentAlignment(opts: {
26
26
  env?: string;
27
27
  onForeign?: OnForeign;
28
28
  }): string[];
29
+ /**
30
+ * Files under `cwd` that carry align's own text, for the case where `align use --undo` has no
31
+ * record of writing them (an older build wrote them, or the record was lost). Read only: undo
32
+ * names these and touches none of them, because without a record it cannot tell align's text
33
+ * from the user's.
34
+ */
35
+ export declare function projectFilesWithAlignText(cwd: string): string[];
29
36
  //# sourceMappingURL=agent-rules.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-rules.d.ts","sourceRoot":"","sources":["../../src/lib/agent-rules.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAuCnE,eAAO,MAAM,iBAAiB,kEAAkE,CAAC;AACjG,eAAO,MAAM,eAAe,uBAAuB,CAAC;AAOpD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGxD;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAG/D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,YAAY,GAAG,aAAa,EAAE,OAAO,EAAE,CAAC,CAM9F;AAKD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAoC7F;AAWD,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAyB5D;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAoDD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEnD;AAID,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAElD;AAyBD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAIjD;AAMD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAkC/F;AA6CD,wBAAgB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CA2DpD;AAGD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAU1F;AAmCD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAuC1F;AAYD,wBAAgB,kBAAkB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CA6DvD;AAGD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAU7F;AAID,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,MAAM,EAAE,CA6BxG"}
1
+ {"version":3,"file":"agent-rules.d.ts","sourceRoot":"","sources":["../../src/lib/agent-rules.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAwCnE,eAAO,MAAM,iBAAiB,kEAAkE,CAAC;AACjG,eAAO,MAAM,eAAe,uBAAuB,CAAC;AAgBpD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGxD;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAG/D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,YAAY,GAAG,aAAa,EAAE,OAAO,EAAE,CAAC,CAM9F;AAKD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAyB7F;AAWD,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAe/D;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAgDD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEtD;AAID,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErD;AAyBD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGpD;AAMD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAiB/F;AA6CD,wBAAgB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CA2DpD;AAGD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAO1F;AA0BD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAoB1F;AAYD,wBAAgB,kBAAkB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CA6DvD;AAGD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAO7F;AAID,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,MAAM,EAAE,CAiCxG;AAaD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAW/D"}
@@ -1,7 +1,8 @@
1
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
1
+ import { readFileSync } from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { carriesLocalEnv } from './foreign-env.js';
4
4
  import { alignServerEntry } from './mcp-setup.js';
5
+ import { safeWriteJson, safeWriteText } from './safe-config-write.js';
5
6
  // ALI-121: the deterministic auto-alignment layer. ALI-120 gave the MCP server
6
7
  // instructions (model discretion); these project-local, committed files make the
7
8
  // alignment context fire regardless of which agent/model the user runs:
@@ -36,6 +37,14 @@ const SESSION_INJECT_COMMAND = 'align context inject';
36
37
  const SESSION_START_MATCHER = 'startup|resume|clear|compact|fork';
37
38
  export const ALIGN_NUDGE_START = '<!-- align:start (managed by `align setup` - do not edit) -->';
38
39
  export const ALIGN_NUDGE_END = '<!-- align:end -->';
40
+ // ALI-1778: every project file goes through the safe writer (safe-config-write.ts), the same one
41
+ // the user-level configs use. That is what records each write in the ledger `align use --undo`
42
+ // reads, keeps the first copy of a file that already existed, and refuses to write through a
43
+ // symlink. `root: cwd` limits the link check to inside the repo.
44
+ function projectWrite(cwd, markers) {
45
+ return { root: cwd, projectFile: true, trailingNewline: true, ...(markers ? { markers } : {}), invalidJsonAdvice: ' before running align' };
46
+ }
47
+ const NUDGE_MARKERS = { start: ALIGN_NUDGE_START, end: ALIGN_NUDGE_END };
39
48
  function advisoryCommand(env) {
40
49
  // prod is the default env, so leave it off to keep the committed command portable.
41
50
  return env && env !== 'prod' ? `align check --advisory --env ${env}` : 'align check --advisory';
@@ -63,39 +72,30 @@ export function alignClaudeHooks(env) {
63
72
  // file is committed so the whole team gets it; Claude Code shows a one-time "approve
64
73
  // hooks" prompt the first time it loads a committed hook (documented in setup output).
65
74
  export function writeClaudeCodeHook(cwd, env, onForeign) {
66
- const dir = path.join(cwd, '.claude');
67
- const file = path.join(dir, 'settings.json');
68
- let settings = {};
69
- try {
70
- settings = JSON.parse(readFileSync(file, 'utf8'));
71
- }
72
- catch (err) {
73
- if (err.code !== 'ENOENT') {
74
- throw new Error(`${file} contains invalid JSON - fix it manually before running align`);
75
+ const file = path.join(cwd, '.claude', 'settings.json');
76
+ const status = safeWriteJson(file, (settings) => {
77
+ const hooks = (settings['hooks'] ?? {});
78
+ // The local wizard never replaces a hook that checks against a team env.
79
+ if (onForeign && env === 'local' && ['PreToolUse', 'PostToolUse'].some((event) => (Array.isArray(hooks[event]) ? hooks[event] : []).some((g) => isAlignHookGroup(g) && !carriesLocalEnv(JSON.stringify(g))))) {
80
+ return undefined;
75
81
  }
76
- }
77
- const hooks = (settings['hooks'] ?? {});
78
- // The local wizard never replaces a hook that checks against a team env.
79
- if (onForeign && env === 'local' && ['PreToolUse', 'PostToolUse'].some((event) => (Array.isArray(hooks[event]) ? hooks[event] : []).some((g) => isAlignHookGroup(g) && !carriesLocalEnv(JSON.stringify(g))))) {
80
- onForeign('.claude/settings.json');
81
- return false;
82
- }
83
- // The same advisory command goes in both events; it self-detects Pre vs Post from the
84
- // hook payload on stdin. PreToolUse catches a conflict before the edit is written
85
- // (ALI-122); PostToolUse is the backstop on the landed change (ALI-121). Strip any
86
- // prior align-managed group from each so re-runs stay idempotent and pick up env changes.
87
- const alignGroups = alignClaudeHooks(env);
88
- for (const event of ['PreToolUse', 'PostToolUse']) {
89
- const existing = (Array.isArray(hooks[event]) ? hooks[event] : []);
90
- const preserved = existing.filter((g) => !isAlignHookGroup(g));
91
- preserved.push(...alignGroups[event]);
92
- hooks[event] = preserved;
93
- }
94
- settings['hooks'] = hooks;
95
- if (!existsSync(dir))
96
- mkdirSync(dir, { recursive: true });
97
- writeFileSync(file, `${JSON.stringify(settings, null, 2)}\n`, 'utf8');
98
- return true;
82
+ // The same advisory command goes in both events; it self-detects Pre vs Post from the
83
+ // hook payload on stdin. PreToolUse catches a conflict before the edit is written
84
+ // (ALI-122); PostToolUse is the backstop on the landed change (ALI-121). Strip any
85
+ // prior align-managed group from each so re-runs stay idempotent and pick up env changes.
86
+ const alignGroups = alignClaudeHooks(env);
87
+ for (const event of ['PreToolUse', 'PostToolUse']) {
88
+ const existing = (Array.isArray(hooks[event]) ? hooks[event] : []);
89
+ const preserved = existing.filter((g) => !isAlignHookGroup(g));
90
+ preserved.push(...alignGroups[event]);
91
+ hooks[event] = preserved;
92
+ }
93
+ settings['hooks'] = hooks;
94
+ return settings;
95
+ }, projectWrite(cwd));
96
+ if (status === 'declined')
97
+ onForeign?.('.claude/settings.json');
98
+ return status === 'written' || status === 'unchanged';
99
99
  }
100
100
  // Merge a SessionStart hook into the project .claude/settings.json (ALI-933) - the
101
101
  // read-path counterpart to writeClaudeCodeHook above. Separate function, separate merge:
@@ -107,29 +107,20 @@ export function writeClaudeCodeHook(cwd, env, onForeign) {
107
107
  // `align context inject` only ever prints an additionalContext line or nothing, never a
108
108
  // deny - there is nothing here to approve or reject, only content to offer or withhold.
109
109
  export function writeClaudeCodeSessionHook(cwd) {
110
- const dir = path.join(cwd, '.claude');
111
- const file = path.join(dir, 'settings.json');
112
- let settings = {};
113
- try {
114
- settings = JSON.parse(readFileSync(file, 'utf8'));
115
- }
116
- catch (err) {
117
- if (err.code !== 'ENOENT') {
118
- throw new Error(`${file} contains invalid JSON - fix it manually before running align`);
119
- }
120
- }
121
- const hooks = (settings['hooks'] ?? {});
122
- const existing = (Array.isArray(hooks['SessionStart']) ? hooks['SessionStart'] : []);
123
- const preserved = existing.filter((g) => !isAlignSessionHookGroup(g));
124
- preserved.push({
125
- matcher: SESSION_START_MATCHER,
126
- hooks: [{ type: 'command', command: SESSION_INJECT_COMMAND, timeout: HOOK_TIMEOUT_SECONDS }],
127
- });
128
- hooks['SessionStart'] = preserved;
129
- settings['hooks'] = hooks;
130
- if (!existsSync(dir))
131
- mkdirSync(dir, { recursive: true });
132
- writeFileSync(file, `${JSON.stringify(settings, null, 2)}\n`, 'utf8');
110
+ const file = path.join(cwd, '.claude', 'settings.json');
111
+ const status = safeWriteJson(file, (settings) => {
112
+ const hooks = (settings['hooks'] ?? {});
113
+ const existing = (Array.isArray(hooks['SessionStart']) ? hooks['SessionStart'] : []);
114
+ const preserved = existing.filter((g) => !isAlignSessionHookGroup(g));
115
+ preserved.push({
116
+ matcher: SESSION_START_MATCHER,
117
+ hooks: [{ type: 'command', command: SESSION_INJECT_COMMAND, timeout: HOOK_TIMEOUT_SECONDS }],
118
+ });
119
+ hooks['SessionStart'] = preserved;
120
+ settings['hooks'] = hooks;
121
+ return settings;
122
+ }, projectWrite(cwd));
123
+ return status === 'written' || status === 'unchanged';
133
124
  }
134
125
  /** The managed CLAUDE.md block as text, for per-session injection (C1). */
135
126
  export function alignNudgeBody() {
@@ -160,38 +151,34 @@ function managedNudgeBlock(opts) {
160
151
  }
161
152
  // Append (or replace) a marker-delimited Align block in a project markdown file. Only the
162
153
  // content between the markers is managed; everything else the user wrote is preserved.
163
- function writeMarkerNudge(file, block) {
164
- let content = '';
165
- try {
166
- content = readFileSync(file, 'utf8');
167
- }
168
- catch (err) {
169
- if (err.code !== 'ENOENT')
170
- throw err;
171
- }
172
- const start = content.indexOf(ALIGN_NUDGE_START);
173
- const end = content.indexOf(ALIGN_NUDGE_END);
174
- if (start !== -1 && end !== -1 && end > start) {
175
- const before = content.slice(0, start);
176
- const after = content.slice(end + ALIGN_NUDGE_END.length);
177
- content = `${before}${block}${after}`;
178
- }
179
- else if (content.trim()) {
180
- content = `${content.replace(/\s*$/, '')}\n\n${block}\n`;
181
- }
182
- else {
183
- content = `${block}\n`;
184
- }
185
- writeFileSync(file, content, 'utf8');
154
+ function writeMarkerNudge(file, block, cwd) {
155
+ const status = safeWriteText(file, (current) => {
156
+ let content = current ?? '';
157
+ const start = content.indexOf(ALIGN_NUDGE_START);
158
+ const end = content.indexOf(ALIGN_NUDGE_END);
159
+ if (start !== -1 && end !== -1 && end > start) {
160
+ const before = content.slice(0, start);
161
+ const after = content.slice(end + ALIGN_NUDGE_END.length);
162
+ content = `${before}${block}${after}`;
163
+ }
164
+ else if (content.trim()) {
165
+ content = `${content.replace(/\s*$/, '')}\n\n${block}\n`;
166
+ }
167
+ else {
168
+ content = `${block}\n`;
169
+ }
170
+ return content;
171
+ }, projectWrite(cwd, NUDGE_MARKERS));
172
+ return status === 'written' || status === 'unchanged';
186
173
  }
187
174
  // CLAUDE.md nudge (Claude Code reads this file).
188
175
  export function writeManagedNudge(cwd) {
189
- writeMarkerNudge(path.join(cwd, 'CLAUDE.md'), managedNudgeBlock({ claudeHooks: true }));
176
+ return writeMarkerNudge(path.join(cwd, 'CLAUDE.md'), managedNudgeBlock({ claudeHooks: true }), cwd);
190
177
  }
191
178
  // AGENTS.md nudge - the cross-agent standard read by Cursor, Windsurf, Codex,
192
179
  // Gemini, Zed and others. Agent-neutral (no Claude-hook line).
193
180
  export function writeAgentsNudge(cwd) {
194
- writeMarkerNudge(path.join(cwd, 'AGENTS.md'), managedNudgeBlock({ claudeHooks: false }));
181
+ return writeMarkerNudge(path.join(cwd, 'AGENTS.md'), managedNudgeBlock({ claudeHooks: false }), cwd);
195
182
  }
196
183
  function cursorRuleBody() {
197
184
  return [
@@ -216,48 +203,31 @@ function cursorRuleBody() {
216
203
  }
217
204
  // Cursor project rule. Fully managed - overwritten each run.
218
205
  export function writeCursorRule(cwd) {
219
- const dir = path.join(cwd, '.cursor', 'rules');
220
- if (!existsSync(dir))
221
- mkdirSync(dir, { recursive: true });
222
- writeFileSync(path.join(dir, 'align.md'), cursorRuleBody(), 'utf8');
206
+ const status = safeWriteText(path.join(cwd, '.cursor', 'rules', 'align.md'), () => cursorRuleBody(), projectWrite(cwd));
207
+ return status === 'written' || status === 'unchanged';
223
208
  }
224
209
  // .mcp.json - the tool-agnostic, project-local MCP config. pi reads it (via
225
210
  // pi-mcp-adapter), so does Claude Code, and it is committed, so one write covers the
226
211
  // whole team rather than each person's per-host config. Deliberately host-NEUTRAL: pi's
227
212
  // `directTools` goes in the Pi-owned override that mcp-setup.ts writes, never here.
228
213
  export function writeProjectMcpConfig(cwd, env, onForeign) {
229
- const file = path.join(cwd, '.mcp.json');
230
- let raw = '';
231
- try {
232
- raw = readFileSync(file, 'utf8');
233
- }
234
- catch (err) {
235
- if (err.code !== 'ENOENT')
236
- throw err;
237
- }
238
- let config = {};
239
- if (raw.trim()) {
240
- try {
241
- config = JSON.parse(raw);
214
+ const status = safeWriteJson(path.join(cwd, '.mcp.json'), (config) => {
215
+ const servers = (config['mcpServers'] ?? {});
216
+ // A committed entry that targets a team env is the team's, not ours to replace.
217
+ if (onForeign && env === 'local' && servers['align'] !== undefined && !carriesLocalEnv(JSON.stringify(servers['align']))) {
218
+ return undefined;
242
219
  }
243
- catch {
244
- throw new Error(`${file} contains invalid JSON - fix it manually before running align`);
245
- }
246
- }
247
- const servers = (config['mcpServers'] ?? {});
248
- // A committed entry that targets a team env is the team's, not ours to replace.
249
- if (onForeign && env === 'local' && servers['align'] !== undefined && !carriesLocalEnv(JSON.stringify(servers['align']))) {
250
- onForeign('.mcp.json');
251
- return false;
252
- }
253
- // `committed: true` keeps the Windows `cmd /c` wrapper OUT of this file (ALI-1135). It is
254
- // the one MCP config that travels: a wrapper written here by a Windows machine would be
255
- // committed and then fail to spawn for every teammate on macOS or Linux. Windows readers
256
- // get the wrapper from their own user-level entry instead.
257
- servers['align'] = alignServerEntry('mcpServers', env, { committed: true });
258
- config['mcpServers'] = servers;
259
- writeFileSync(file, `${JSON.stringify(config, null, 2)}\n`, 'utf8');
260
- return true;
220
+ // `committed: true` keeps the Windows `cmd /c` wrapper OUT of this file (ALI-1135). It is
221
+ // the one MCP config that travels: a wrapper written here by a Windows machine would be
222
+ // committed and then fail to spawn for every teammate on macOS or Linux. Windows readers
223
+ // get the wrapper from their own user-level entry instead.
224
+ servers['align'] = alignServerEntry('mcpServers', env, { committed: true });
225
+ config['mcpServers'] = servers;
226
+ return config;
227
+ }, projectWrite(cwd));
228
+ if (status === 'declined')
229
+ onForeign?.('.mcp.json');
230
+ return status === 'written' || status === 'unchanged';
261
231
  }
262
232
  // ---------------------------------------------------------------------------
263
233
  // Per-host hook shims (the agent-agnostic guardrail)
@@ -362,25 +332,14 @@ export default function (pi: { on: (e: string, h: (ev: PiEvent) => unknown) => v
362
332
  }
363
333
  // pi extension. Fully managed - overwritten each run.
364
334
  export function writePiExtension(cwd, env, onForeign) {
365
- const dir = path.join(cwd, '.pi', 'extensions');
366
- const file = path.join(dir, 'align.ts');
367
- if (onForeign && env === 'local' && isForeignPlugin(file)) {
368
- onForeign('.pi/extensions/align.ts');
369
- return false;
370
- }
371
- if (!existsSync(dir))
372
- mkdirSync(dir, { recursive: true });
373
- writeFileSync(file, piExtensionBody(env), 'utf8');
374
- return true;
375
- }
376
- /** A generated plugin that already exists and is not pointed at the local graph. */
377
- function isForeignPlugin(file) {
378
- try {
379
- return !carriesLocalEnv(readFileSync(file, 'utf8'));
380
- }
381
- catch {
382
- return false;
383
- }
335
+ const status = safeWriteText(path.join(cwd, '.pi', 'extensions', 'align.ts'), (current) => {
336
+ if (onForeign && env === 'local' && current !== null && !carriesLocalEnv(current))
337
+ return undefined;
338
+ return piExtensionBody(env);
339
+ }, projectWrite(cwd));
340
+ if (status === 'declined')
341
+ onForeign?.('.pi/extensions/align.ts');
342
+ return status === 'written' || status === 'unchanged';
384
343
  }
385
344
  // Gemini CLI hooks. BeforeTool can only deny (no additionalContext channel), so the
386
345
  // non-blocking finding is carried by AfterTool - the same split as pi, for the same
@@ -404,43 +363,25 @@ function isAlignGeminiHook(group) {
404
363
  return Array.isArray(hooks) && hooks.some((h) => String(h?.command ?? '').includes('align check --advisory'));
405
364
  }
406
365
  export function writeGeminiHooks(cwd, env, onForeign) {
407
- const dir = path.join(cwd, '.gemini');
408
- const file = path.join(dir, 'settings.json');
409
- let raw = '';
410
- try {
411
- raw = readFileSync(file, 'utf8');
412
- }
413
- catch (err) {
414
- if (err.code !== 'ENOENT')
415
- throw err;
416
- }
417
- let settings = {};
418
- if (raw.trim()) {
419
- try {
420
- settings = JSON.parse(raw);
366
+ const status = safeWriteJson(path.join(cwd, '.gemini', 'settings.json'), (settings) => {
367
+ const hooks = (settings['hooks'] ?? {});
368
+ if (onForeign && env === 'local' && ['BeforeTool', 'AfterTool'].some((event) => (Array.isArray(hooks[event]) ? hooks[event] : []).some((g) => isAlignGeminiHook(g) && !carriesLocalEnv(JSON.stringify(g))))) {
369
+ return undefined;
421
370
  }
422
- catch {
423
- throw new Error(`${file} contains invalid JSON - fix it manually before running align`);
371
+ // Strip any prior align-managed group from each event first, so a re-run replaces
372
+ // it (and picks up an env change) instead of stacking a second one.
373
+ for (const event of ['BeforeTool', 'AfterTool']) {
374
+ const existing = (Array.isArray(hooks[event]) ? hooks[event] : []);
375
+ const preserved = existing.filter((g) => !isAlignGeminiHook(g));
376
+ preserved.push(geminiHookGroup(event, env));
377
+ hooks[event] = preserved;
424
378
  }
425
- }
426
- const hooks = (settings['hooks'] ?? {});
427
- if (onForeign && env === 'local' && ['BeforeTool', 'AfterTool'].some((event) => (Array.isArray(hooks[event]) ? hooks[event] : []).some((g) => isAlignGeminiHook(g) && !carriesLocalEnv(JSON.stringify(g))))) {
428
- onForeign('.gemini/settings.json');
429
- return false;
430
- }
431
- // Strip any prior align-managed group from each event first, so a re-run replaces
432
- // it (and picks up an env change) instead of stacking a second one.
433
- for (const event of ['BeforeTool', 'AfterTool']) {
434
- const existing = (Array.isArray(hooks[event]) ? hooks[event] : []);
435
- const preserved = existing.filter((g) => !isAlignGeminiHook(g));
436
- preserved.push(geminiHookGroup(event, env));
437
- hooks[event] = preserved;
438
- }
439
- settings['hooks'] = hooks;
440
- if (!existsSync(dir))
441
- mkdirSync(dir, { recursive: true });
442
- writeFileSync(file, `${JSON.stringify(settings, null, 2)}\n`, 'utf8');
443
- return true;
379
+ settings['hooks'] = hooks;
380
+ return settings;
381
+ }, projectWrite(cwd));
382
+ if (status === 'declined')
383
+ onForeign?.('.gemini/settings.json');
384
+ return status === 'written' || status === 'unchanged';
444
385
  }
445
386
  // OpenCode discovers project plugins at .opencode/plugins/*.{js,ts} and loads them at
446
387
  // startup. Ships as plain JS so nothing depends on a type package resolving.
@@ -516,16 +457,14 @@ export const AlignPlugin = async () => ({
516
457
  }
517
458
  // OpenCode plugin. Fully managed - overwritten each run.
518
459
  export function writeOpenCodePlugin(cwd, env, onForeign) {
519
- const dir = path.join(cwd, '.opencode', 'plugins');
520
- const file = path.join(dir, 'align.js');
521
- if (onForeign && env === 'local' && isForeignPlugin(file)) {
522
- onForeign('.opencode/plugins/align.js');
523
- return false;
524
- }
525
- if (!existsSync(dir))
526
- mkdirSync(dir, { recursive: true });
527
- writeFileSync(file, openCodePluginBody(env), 'utf8');
528
- return true;
460
+ const status = safeWriteText(path.join(cwd, '.opencode', 'plugins', 'align.js'), (current) => {
461
+ if (onForeign && env === 'local' && current !== null && !carriesLocalEnv(current))
462
+ return undefined;
463
+ return openCodePluginBody(env);
464
+ }, projectWrite(cwd));
465
+ if (status === 'declined')
466
+ onForeign?.('.opencode/plugins/align.js');
467
+ return status === 'written' || status === 'unchanged';
529
468
  }
530
469
  // Write every deterministic-alignment artifact into the project. Returns the
531
470
  // repo-relative paths written, for the caller to report.
@@ -537,18 +476,22 @@ export function setupAgentAlignment(opts) {
537
476
  : undefined;
538
477
  // When the project's hooks belong to a team env the whole file is left as found, so the
539
478
  // session hook (which lives in the same file) is not added either.
540
- if (writeClaudeCodeHook(opts.cwd, opts.env, onForeign))
541
- writeClaudeCodeSessionHook(opts.cwd);
542
- writeManagedNudge(opts.cwd);
543
- writeAgentsNudge(opts.cwd);
544
- writeCursorRule(opts.cwd);
479
+ // A writer that returns false left its file as found (a team entry, or a symlink): not reported.
480
+ const left = new Set();
481
+ const track = (file, ok) => { if (!ok)
482
+ left.add(file); };
483
+ const hooksOk = writeClaudeCodeHook(opts.cwd, opts.env, onForeign);
484
+ track('.claude/settings.json', hooksOk && writeClaudeCodeSessionHook(opts.cwd));
485
+ track('CLAUDE.md', writeManagedNudge(opts.cwd));
486
+ track('AGENTS.md', writeAgentsNudge(opts.cwd));
487
+ track('.cursor/rules/align.md', writeCursorRule(opts.cwd));
545
488
  // prod is the default env, so leave it off to keep the committed file portable -
546
489
  // the same rule advisoryCommand() applies to the hook.
547
490
  const env = opts.env === 'prod' ? undefined : opts.env;
548
- writeProjectMcpConfig(opts.cwd, env, onForeign);
549
- writePiExtension(opts.cwd, env, onForeign);
550
- writeGeminiHooks(opts.cwd, env, onForeign);
551
- writeOpenCodePlugin(opts.cwd, env, onForeign);
491
+ track('.mcp.json', writeProjectMcpConfig(opts.cwd, env, onForeign));
492
+ track('.pi/extensions/align.ts', writePiExtension(opts.cwd, env, onForeign));
493
+ track('.gemini/settings.json', writeGeminiHooks(opts.cwd, env, onForeign));
494
+ track('.opencode/plugins/align.js', writeOpenCodePlugin(opts.cwd, env, onForeign));
552
495
  return [
553
496
  '.claude/settings.json',
554
497
  'CLAUDE.md',
@@ -558,6 +501,36 @@ export function setupAgentAlignment(opts) {
558
501
  '.pi/extensions/align.ts',
559
502
  '.gemini/settings.json',
560
503
  '.opencode/plugins/align.js',
561
- ].filter((f) => !skipped.has(f));
504
+ ].filter((f) => !skipped.has(f) && !left.has(f));
505
+ }
506
+ const PROJECT_FILE_TELLS = [
507
+ ['.claude/settings.json', ['align check --advisory', SESSION_INJECT_COMMAND]],
508
+ ['CLAUDE.md', [ALIGN_NUDGE_START]],
509
+ ['AGENTS.md', [ALIGN_NUDGE_START]],
510
+ ['.cursor/rules/align.md', ['Align decision graph']],
511
+ ['.mcp.json', ['"align"']],
512
+ ['.pi/extensions/align.ts', ['align check --advisory']],
513
+ ['.gemini/settings.json', ['align check --advisory']],
514
+ ['.opencode/plugins/align.js', ['align check --advisory']],
515
+ ];
516
+ /**
517
+ * Files under `cwd` that carry align's own text, for the case where `align use --undo` has no
518
+ * record of writing them (an older build wrote them, or the record was lost). Read only: undo
519
+ * names these and touches none of them, because without a record it cannot tell align's text
520
+ * from the user's.
521
+ */
522
+ export function projectFilesWithAlignText(cwd) {
523
+ const found = [];
524
+ for (const [rel, tells] of PROJECT_FILE_TELLS) {
525
+ try {
526
+ const text = readFileSync(path.join(cwd, rel), 'utf8');
527
+ if (tells.some((t) => text.includes(t)))
528
+ found.push(rel);
529
+ }
530
+ catch {
531
+ // missing or unreadable: nothing to name
532
+ }
533
+ }
534
+ return found;
562
535
  }
563
536
  //# sourceMappingURL=agent-rules.js.map