@intutic/sync-daemon 2.1.0 → 2.2.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 (179) hide show
  1. package/dist/agentReporter.d.ts +1 -0
  2. package/dist/agentReporter.d.ts.map +1 -1
  3. package/dist/configReader.d.ts +44 -22
  4. package/dist/configReader.d.ts.map +1 -1
  5. package/dist/configReader.js +70 -44
  6. package/dist/configReader.js.map +1 -1
  7. package/dist/configWriter.d.ts +29 -41
  8. package/dist/configWriter.d.ts.map +1 -1
  9. package/dist/configWriter.js +26 -637
  10. package/dist/configWriter.js.map +1 -1
  11. package/dist/disconnect/harnesses.d.ts +31 -0
  12. package/dist/disconnect/harnesses.d.ts.map +1 -0
  13. package/dist/disconnect/harnesses.js +728 -0
  14. package/dist/disconnect/harnesses.js.map +1 -0
  15. package/dist/disconnect/index.d.ts +25 -0
  16. package/dist/disconnect/index.d.ts.map +1 -0
  17. package/dist/disconnect/index.js +82 -0
  18. package/dist/disconnect/index.js.map +1 -0
  19. package/dist/disconnect/mcp.d.ts +60 -0
  20. package/dist/disconnect/mcp.d.ts.map +1 -0
  21. package/dist/disconnect/mcp.js +283 -0
  22. package/dist/disconnect/mcp.js.map +1 -0
  23. package/dist/disconnect/originals.d.ts +88 -0
  24. package/dist/disconnect/originals.d.ts.map +1 -0
  25. package/dist/disconnect/originals.js +257 -0
  26. package/dist/disconnect/originals.js.map +1 -0
  27. package/dist/disconnect/plan.d.ts +175 -0
  28. package/dist/disconnect/plan.d.ts.map +1 -0
  29. package/dist/disconnect/plan.js +580 -0
  30. package/dist/disconnect/plan.js.map +1 -0
  31. package/dist/disconnect/recognise.d.ts +43 -0
  32. package/dist/disconnect/recognise.d.ts.map +1 -0
  33. package/dist/disconnect/recognise.js +98 -0
  34. package/dist/disconnect/recognise.js.map +1 -0
  35. package/dist/disconnect/tomlLines.d.ts +39 -0
  36. package/dist/disconnect/tomlLines.d.ts.map +1 -0
  37. package/dist/disconnect/tomlLines.js +105 -0
  38. package/dist/disconnect/tomlLines.js.map +1 -0
  39. package/dist/harness/aiderConfigMerger.d.ts +1 -0
  40. package/dist/harness/aiderConfigMerger.d.ts.map +1 -1
  41. package/dist/harness/aiderConfigMerger.js +4 -1
  42. package/dist/harness/aiderConfigMerger.js.map +1 -1
  43. package/dist/harness/antigravityHooks.d.ts.map +1 -1
  44. package/dist/harness/antigravityHooks.js +2 -0
  45. package/dist/harness/antigravityHooks.js.map +1 -1
  46. package/dist/harness/claudeCodeHooks.d.ts +1 -2
  47. package/dist/harness/claudeCodeHooks.d.ts.map +1 -1
  48. package/dist/harness/claudeCodeHooks.js +19 -6
  49. package/dist/harness/claudeCodeHooks.js.map +1 -1
  50. package/dist/harness/claudeDesktopHooks.d.ts +3 -0
  51. package/dist/harness/claudeDesktopHooks.d.ts.map +1 -1
  52. package/dist/harness/claudeDesktopHooks.js +3 -1
  53. package/dist/harness/claudeDesktopHooks.js.map +1 -1
  54. package/dist/harness/claudeProjectApproval.d.ts +53 -0
  55. package/dist/harness/claudeProjectApproval.d.ts.map +1 -0
  56. package/dist/harness/claudeProjectApproval.js +159 -0
  57. package/dist/harness/claudeProjectApproval.js.map +1 -0
  58. package/dist/harness/clineHooks.d.ts.map +1 -1
  59. package/dist/harness/clineHooks.js +3 -0
  60. package/dist/harness/clineHooks.js.map +1 -1
  61. package/dist/harness/codexConfigMerger.d.ts.map +1 -1
  62. package/dist/harness/codexConfigMerger.js +4 -0
  63. package/dist/harness/codexConfigMerger.js.map +1 -1
  64. package/dist/harness/codexHooks.d.ts.map +1 -1
  65. package/dist/harness/codexHooks.js +3 -0
  66. package/dist/harness/codexHooks.js.map +1 -1
  67. package/dist/harness/continueConfigMerger.d.ts.map +1 -1
  68. package/dist/harness/continueConfigMerger.js +4 -0
  69. package/dist/harness/continueConfigMerger.js.map +1 -1
  70. package/dist/harness/continueHooks.d.ts.map +1 -1
  71. package/dist/harness/continueHooks.js +3 -0
  72. package/dist/harness/continueHooks.js.map +1 -1
  73. package/dist/harness/cursorHooks.d.ts.map +1 -1
  74. package/dist/harness/cursorHooks.js +3 -0
  75. package/dist/harness/cursorHooks.js.map +1 -1
  76. package/dist/harness/dshHooks.d.ts.map +1 -1
  77. package/dist/harness/dshHooks.js +7 -0
  78. package/dist/harness/dshHooks.js.map +1 -1
  79. package/dist/harness/gateBody.d.ts +11 -2
  80. package/dist/harness/gateBody.d.ts.map +1 -1
  81. package/dist/harness/gateBody.js +33 -6
  82. package/dist/harness/gateBody.js.map +1 -1
  83. package/dist/harness/githubCopilotHooks.d.ts.map +1 -1
  84. package/dist/harness/githubCopilotHooks.js +4 -9
  85. package/dist/harness/githubCopilotHooks.js.map +1 -1
  86. package/dist/harness/gooseHooks.d.ts +15 -0
  87. package/dist/harness/gooseHooks.d.ts.map +1 -1
  88. package/dist/harness/gooseHooks.js +55 -43
  89. package/dist/harness/gooseHooks.js.map +1 -1
  90. package/dist/harness/grokHooks.d.ts.map +1 -1
  91. package/dist/harness/grokHooks.js +9 -12
  92. package/dist/harness/grokHooks.js.map +1 -1
  93. package/dist/harness/hermesHooks.d.ts.map +1 -1
  94. package/dist/harness/hermesHooks.js +7 -2
  95. package/dist/harness/hermesHooks.js.map +1 -1
  96. package/dist/harness/holdRedaction.d.ts +4 -1
  97. package/dist/harness/holdRedaction.d.ts.map +1 -1
  98. package/dist/harness/holdRedaction.js +32 -8
  99. package/dist/harness/holdRedaction.js.map +1 -1
  100. package/dist/harness/jetbrainsXmlConfig.d.ts +20 -0
  101. package/dist/harness/jetbrainsXmlConfig.d.ts.map +1 -1
  102. package/dist/harness/jetbrainsXmlConfig.js +39 -18
  103. package/dist/harness/jetbrainsXmlConfig.js.map +1 -1
  104. package/dist/harness/mcpAutoWrite.d.ts +39 -17
  105. package/dist/harness/mcpAutoWrite.d.ts.map +1 -1
  106. package/dist/harness/mcpAutoWrite.js +189 -71
  107. package/dist/harness/mcpAutoWrite.js.map +1 -1
  108. package/dist/harness/museHooks.d.ts.map +1 -1
  109. package/dist/harness/museHooks.js +6 -2
  110. package/dist/harness/museHooks.js.map +1 -1
  111. package/dist/harness/openCodeHooks.d.ts.map +1 -1
  112. package/dist/harness/openCodeHooks.js +2 -5
  113. package/dist/harness/openCodeHooks.js.map +1 -1
  114. package/dist/harness/openWebuiHooks.d.ts.map +1 -1
  115. package/dist/harness/openWebuiHooks.js +6 -2
  116. package/dist/harness/openWebuiHooks.js.map +1 -1
  117. package/dist/harness/openclawHooks.d.ts +5 -0
  118. package/dist/harness/openclawHooks.d.ts.map +1 -1
  119. package/dist/harness/openclawHooks.js +3 -1
  120. package/dist/harness/openclawHooks.js.map +1 -1
  121. package/dist/harness/openhandsHooks.d.ts +13 -1
  122. package/dist/harness/openhandsHooks.d.ts.map +1 -1
  123. package/dist/harness/openhandsHooks.js +106 -56
  124. package/dist/harness/openhandsHooks.js.map +1 -1
  125. package/dist/harness/piHooks.d.ts.map +1 -1
  126. package/dist/harness/piHooks.js +3 -0
  127. package/dist/harness/piHooks.js.map +1 -1
  128. package/dist/harness/rooCodeHooks.d.ts.map +1 -1
  129. package/dist/harness/rooCodeHooks.js +5 -10
  130. package/dist/harness/rooCodeHooks.js.map +1 -1
  131. package/dist/harness/windsurfHooks.d.ts +18 -2
  132. package/dist/harness/windsurfHooks.d.ts.map +1 -1
  133. package/dist/harness/windsurfHooks.js +37 -7
  134. package/dist/harness/windsurfHooks.js.map +1 -1
  135. package/dist/harness/windsurfJetBrainsProxy.d.ts +1 -1
  136. package/dist/harness/windsurfJetBrainsProxy.d.ts.map +1 -1
  137. package/dist/harness/windsurfJetBrainsProxy.js +5 -1
  138. package/dist/harness/windsurfJetBrainsProxy.js.map +1 -1
  139. package/dist/index.d.ts +9 -12
  140. package/dist/index.d.ts.map +1 -1
  141. package/dist/index.js +8 -10
  142. package/dist/index.js.map +1 -1
  143. package/dist/lib/decisionsDigest.d.ts +1 -1
  144. package/dist/lib/decisionsDigest.js +1 -1
  145. package/dist/lib/policySnapshot.d.ts +18 -0
  146. package/dist/lib/policySnapshot.d.ts.map +1 -1
  147. package/dist/lib/policySnapshot.js +142 -7
  148. package/dist/lib/policySnapshot.js.map +1 -1
  149. package/dist/sessionReporter.d.ts +2 -2
  150. package/dist/sessionReporter.js +2 -2
  151. package/dist/syncCycle.d.ts +142 -0
  152. package/dist/syncCycle.d.ts.map +1 -0
  153. package/dist/syncCycle.js +315 -0
  154. package/dist/syncCycle.js.map +1 -0
  155. package/dist/trajectoryMonitor.d.ts +1 -1
  156. package/dist/trajectoryMonitor.d.ts.map +1 -1
  157. package/dist/trajectoryMonitor.js +1 -1
  158. package/dist/trajectoryMonitor.js.map +1 -1
  159. package/dist/watcher/settingsGuard.d.ts +4 -1
  160. package/dist/watcher/settingsGuard.d.ts.map +1 -1
  161. package/dist/watcher/settingsGuard.js +28 -3
  162. package/dist/watcher/settingsGuard.js.map +1 -1
  163. package/package.json +5 -5
  164. package/dist/hashReporter.d.ts +0 -33
  165. package/dist/hashReporter.d.ts.map +0 -1
  166. package/dist/hashReporter.js +0 -69
  167. package/dist/hashReporter.js.map +0 -1
  168. package/dist/integrityStore.d.ts +0 -35
  169. package/dist/integrityStore.d.ts.map +0 -1
  170. package/dist/integrityStore.js +0 -71
  171. package/dist/integrityStore.js.map +0 -1
  172. package/dist/lib/gitWorktrees.d.ts +0 -140
  173. package/dist/lib/gitWorktrees.d.ts.map +0 -1
  174. package/dist/lib/gitWorktrees.js +0 -191
  175. package/dist/lib/gitWorktrees.js.map +0 -1
  176. package/dist/syncLoop.d.ts +0 -172
  177. package/dist/syncLoop.d.ts.map +0 -1
  178. package/dist/syncLoop.js +0 -878
  179. package/dist/syncLoop.js.map +0 -1
@@ -25,7 +25,7 @@ import { writeClineHooks } from '../harness/clineHooks.js';
25
25
  import { writeCursorHooks } from '../harness/cursorHooks.js';
26
26
  import { writeOpenHandsHooks } from '../harness/openhandsHooks.js';
27
27
  import { writeGooseHooks } from '../harness/gooseHooks.js';
28
- import { writeWindsurfHooks } from '../harness/windsurfHooks.js';
28
+ import { writeWindsurfHooks, windsurfSettingsPath } from '../harness/windsurfHooks.js';
29
29
  import { writeMuseHooks } from '../harness/museHooks.js';
30
30
  import { writeOpenCodeHooks, OPENCODE_PLUGIN_DIR, OPENCODE_PLUGIN_FILE, OPENCODE_PLUGIN_V2_FILE } from '../harness/openCodeHooks.js';
31
31
  import { writeGrokHooks } from '../harness/grokHooks.js';
@@ -48,7 +48,7 @@ export function buildProtectedPaths(workspaceRoot) {
48
48
  path.join(workspaceRoot, '.cursor', 'hooks.json'),
49
49
  // ── Windsurf ─────────────────────────────────────────────────────
50
50
  path.join(home, '.codeium', 'windsurf', 'hooks.json'),
51
- path.join(home, '.codeium', 'windsurf', 'settings.json'),
51
+ windsurfSettingsPath(),
52
52
  // JetBrains plugin's separate user-level path (no `windsurf`
53
53
  // subdirectory) — see windsurfHooks.ts's module doc comment.
54
54
  path.join(home, '.codeium', 'hooks.json'),
@@ -146,11 +146,16 @@ async function resolveWorkspaceId(workspaceRoot) {
146
146
  * @param sops - Current SOP list.
147
147
  * @param proxyUrl - Current proxy URL.
148
148
  * @param settings - Optional passthrough settings.
149
+ * @param skip - Harnesses `intutic disconnect --harness` took out:
150
+ * their files are no longer governed, so a change to
151
+ * one is not tampering and is not restored.
149
152
  * @returns true if tampering was detected.
150
153
  */
151
- export async function guardSettingsFile(changedPath, workspaceRoot, sops, proxyUrl = '', settings) {
154
+ export async function guardSettingsFile(changedPath, workspaceRoot, sops, proxyUrl = '', settings, skip = new Set()) {
152
155
  // ── Goose plugin: immutable file tamper → incident, not restore ───
153
156
  if (changedPath.includes('intutic-governance')) {
157
+ if (skip.has('goose'))
158
+ return false;
154
159
  if (await isImmutable(changedPath)) {
155
160
  log.error({ action: 'governance_override_attempt', path: changedPath }, 'SECURITY: Immutable Goose governance file was modified — OS immutable flag bypassed. Emitting incident.');
156
161
  const workspaceId = await resolveWorkspaceId(workspaceRoot);
@@ -187,28 +192,38 @@ export async function guardSettingsFile(changedPath, workspaceRoot, sops, proxyU
187
192
  }
188
193
  // ── Claude Code settings.json ─────────────────────────────────────
189
194
  if (changedPath.includes('.claude') && changedPath.endsWith('settings.json')) {
195
+ if (skip.has('claude-code'))
196
+ return false;
190
197
  return guardClaudeCodeSettings(changedPath, workspaceRoot, sops, settings);
191
198
  }
192
199
  // ── Cursor hooks.json ─────────────────────────────────────────────
193
200
  if (changedPath.includes('.cursor') && changedPath.endsWith('hooks.json')) {
201
+ if (skip.has('cursor'))
202
+ return false;
194
203
  return guardJsonHookFile(changedPath, 'cursor', async () => {
195
204
  await writeCursorHooks(workspaceRoot, proxyUrl, '', changedPath.startsWith('/etc'));
196
205
  });
197
206
  }
198
207
  // ── Windsurf hooks.json ───────────────────────────────────────────
199
208
  if ((changedPath.includes('.codeium') || changedPath.includes('.windsurf')) && changedPath.endsWith('hooks.json')) {
209
+ if (skip.has('windsurf'))
210
+ return false;
200
211
  return guardJsonHookFile(changedPath, 'windsurf', async () => {
201
212
  await writeWindsurfHooks(workspaceRoot, proxyUrl);
202
213
  });
203
214
  }
204
215
  // ── Cline hooks.json ──────────────────────────────────────────────
205
216
  if (changedPath.includes('.clinerules') && changedPath.endsWith('hooks.json')) {
217
+ if (skip.has('cline'))
218
+ return false;
206
219
  return guardJsonHookFile(changedPath, 'cline', async () => {
207
220
  await writeClineHooks(workspaceRoot, proxyUrl);
208
221
  });
209
222
  }
210
223
  // ── OpenHands hooks.json ──────────────────────────────────────────
211
224
  if (changedPath.includes('.openhands') && changedPath.endsWith('hooks.json')) {
225
+ if (skip.has('openhands'))
226
+ return false;
212
227
  return guardJsonHookFile(changedPath, 'openhands', async () => {
213
228
  await writeOpenHandsHooks(workspaceRoot, proxyUrl);
214
229
  });
@@ -219,6 +234,8 @@ export async function guardSettingsFile(changedPath, workspaceRoot, sops, proxyU
219
234
  if ((changedPath.includes(path.join('.muse', 'hooks.json'))) ||
220
235
  (changedPath.includes(path.join('.config', 'muse')) &&
221
236
  (changedPath.endsWith('settings.json') || changedPath.endsWith('intutic-managed-hooks.json')))) {
237
+ if (skip.has('muse-code'))
238
+ return false;
222
239
  return guardJsonHookFile(changedPath, 'muse-code', async () => {
223
240
  await writeMuseHooks(workspaceRoot, proxyUrl, await resolveWorkspaceId(workspaceRoot));
224
241
  });
@@ -230,6 +247,8 @@ export async function guardSettingsFile(changedPath, workspaceRoot, sops, proxyU
230
247
  // a tamper there falls through to the generic drift-log path below rather
231
248
  // than a targeted restore.
232
249
  if (changedPath.includes('.grok') && changedPath.endsWith('intutic-governance.json')) {
250
+ if (skip.has('grok'))
251
+ return false;
233
252
  return guardJsonHookFile(changedPath, 'grok', async () => {
234
253
  await writeGrokHooks(workspaceRoot, proxyUrl);
235
254
  });
@@ -242,6 +261,8 @@ export async function guardSettingsFile(changedPath, workspaceRoot, sops, proxyU
242
261
  // closes itself, rather than waiting for an unrelated file change or the
243
262
  // next poll cycle to notice.
244
263
  if (isDshProfilesRoot(changedPath)) {
264
+ if (skip.has('dsh'))
265
+ return false;
245
266
  await safeRestore('dsh', () => writeDshHooks(workspaceRoot, proxyUrl, ''));
246
267
  return true;
247
268
  }
@@ -258,12 +279,16 @@ export async function guardSettingsFile(changedPath, workspaceRoot, sops, proxyU
258
279
  // longer writes it.
259
280
  if (changedPath.startsWith(path.join(resolveDshHome(), 'profiles') + path.sep) &&
260
281
  changedPath.endsWith('cordis.patch.yml')) {
282
+ if (skip.has('dsh'))
283
+ return false;
261
284
  return guardDshFile(changedPath, ['intutic-governance', proxyUrl], workspaceRoot, proxyUrl);
262
285
  }
263
286
  // ── OpenCode plugin: marker-substring guard, same shape as dsh ────
264
287
  // The gate body stamps itself; a file without the stamp is not ours.
265
288
  if (changedPath === path.join(workspaceRoot, OPENCODE_PLUGIN_DIR, OPENCODE_PLUGIN_FILE) ||
266
289
  changedPath === path.join(workspaceRoot, OPENCODE_PLUGIN_DIR, OPENCODE_PLUGIN_V2_FILE)) {
290
+ if (skip.has('opencode'))
291
+ return false;
267
292
  return guardMarkedFile(changedPath, 'Intutic gate body', 'opencode', () => writeOpenCodeHooks(workspaceRoot, proxyUrl, ''));
268
293
  }
269
294
  // ── All other paths: file deleted or corrupted → log drift incident
@@ -1 +1 @@
1
- {"version":3,"file":"settingsGuard.js","sourceRoot":"","sources":["../../src/watcher/settingsGuard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AACpI,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,MAAM,GAAG,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAA;AAE/C,+DAA+D;AAC/D,MAAM,WAAW,GAAG,iBAAiB,CAAA;AAErC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;AAEzB,wEAAwE;AAExE,yDAAyD;AACzD,MAAM,UAAU,mBAAmB,CAAC,aAAqB;IACvD,OAAO;QACL,oEAAoE;QACpE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,eAAe,CAAC;QACpD,oEAAoE;QACpE,wBAAwB;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,YAAY,CAAC;QACjD,oEAAoE;QACpE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,CAAC;QACxD,6DAA6D;QAC7D,6DAA6D;QAC7D,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC;QACnD,oEAAoE;QACpE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,CAAC;QAC9D,oEAAoE;QACpE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,YAAY,CAAC;QACpD,oEAAoE;QACpE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,oBAAoB,EAAE,OAAO,EAAE,YAAY,CAAC;QAClF,oEAAoE;QACpE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC;QACrC,oEAAoE;QACpE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC;QAClF,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,eAAe,CAAC;QACpD,qEAAqE;QACrE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,4BAA4B,CAAC;QACzF,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,4BAA4B,CAAC;QAClE,qEAAqE;QACrE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,eAAe,CAAC;QACpD,oEAAoE;QACpE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,4BAA4B,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,YAAY,CAAC;QAC/C,oEAAoE;QACpE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,EAAE,oBAAoB,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,EAAE,uBAAuB,CAAC;QACtE,oEAAoE;QACpE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,CAAC;QACrE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,sBAAsB,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,sBAAsB,CAAC;QACzD,oEAAoE;QACpE,uEAAuE;QACvE,+DAA+D;QAC/D,uEAAuE;QACvE,gEAAgE;QAChE,sEAAsE;QACtE,qEAAqE;QACrE,0CAA0C;QAC1C,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,UAAU,CAAC;KACxC,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,OAAO,WAAW,KAAK,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,UAAU,CAAC,CAAA;AAChE,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,kBAAkB,CAAC,aAAqB;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAA;IACtD,IAAI,OAAO;QAAE,OAAO,OAAO,CAAA;IAC3B,KAAK,MAAM,OAAO,IAAI;QACpB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,CAAC;KAC3D,EAAE,CAAC;QACF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAA;YAC3D,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;gBAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;QACpE,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,wEAAwE;AAExE;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,WAAmB,EACnB,aAAqB,EACrB,IAAoB,EACpB,QAAQ,GAAG,EAAE,EACb,QAAkC;IAElC,qEAAqE;IACrE,IAAI,WAAW,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC/C,IAAI,MAAM,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,KAAK,CACP,EAAE,MAAM,EAAE,6BAA6B,EAAE,IAAI,EAAE,WAAW,EAAE,EAC5D,yGAAyG,CAC1G,CAAA;YAED,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,aAAa,CAAC,CAAA;YAE3D,6DAA6D;YAC7D,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;oBACjC,KAAK,EAAE,eAAe;oBACtB,QAAQ,EAAE,cAAc;oBACxB,MAAM,EAAE,sFAAsF;oBAC9F,WAAW;oBACX,QAAQ,EAAE,WAAW;oBACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;iBAClG,CAAC,GAAG,IAAI,CAAA;gBACT,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAA;gBAC1F,MAAM,EAAE,CAAC,UAAU,CAAC,eAAe,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;YAClE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,0DAA0D,CAAC,CAAA;YAC/E,CAAC;YAED,OAAO,IAAI,CAAA;QACb,CAAC;QACD,yEAAyE;QACzE,EAAE;QACF,8DAA8D;QAC9D,uEAAuE;QACvE,wEAAwE;QACxE,2EAA2E;QAC3E,6DAA6D;QAC7D,6EAA6E;QAC7E,kCAAkC;QAClC,MAAM,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAA;QACvF,OAAO,IAAI,CAAA;IACb,CAAC;IAED,qEAAqE;IACrE,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC7E,OAAO,uBAAuB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC5E,CAAC;IAED,qEAAqE;IACrE,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1E,OAAO,iBAAiB,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,gBAAgB,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;QACrF,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,qEAAqE;IACrE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAClH,OAAO,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,kBAAkB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;QACnD,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,qEAAqE;IACrE,IAAI,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9E,OAAO,iBAAiB,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,eAAe,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,qEAAqE;IACrE,IAAI,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7E,OAAO,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,mBAAmB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;QACpD,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,oEAAoE;IACpE,uEAAuE;IACvE,qEAAqE;IACrE,IACE,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QACxD,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACjD,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAChG,CAAC;QACD,OAAO,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,cAAc,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAA;QACxF,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,qEAAqE;IACrE,4EAA4E;IAC5E,0EAA0E;IAC1E,0EAA0E;IAC1E,0EAA0E;IAC1E,2BAA2B;IAC3B,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;QACrF,OAAO,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;QAC/C,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,mEAAmE;IACnE,wEAAwE;IACxE,uEAAuE;IACvE,yEAAyE;IACzE,qEAAqE;IACrE,yEAAyE;IACzE,6BAA6B;IAC7B,IAAI,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;QACnC,MAAM,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAA;QAC1E,OAAO,IAAI,CAAA;IACb,CAAC;IAED,oEAAoE;IACpE,wEAAwE;IACxE,sEAAsE;IACtE,uEAAuE;IACvE,uEAAuE;IACvE,0EAA0E;IAC1E,2EAA2E;IAC3E,oEAAoE;IACpE,qEAAqE;IACrE,qEAAqE;IACrE,oBAAoB;IACpB,IACE,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;QAC1E,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EACxC,CAAC;QACD,OAAO,YAAY,CAAC,WAAW,EAAE,CAAC,oBAAoB,EAAE,QAAQ,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAA;IAC7F,CAAC;IAED,qEAAqE;IACrE,qEAAqE;IACrE,IACE,WAAW,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,EAAE,oBAAoB,CAAC;QACnF,WAAW,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,EAAE,uBAAuB,CAAC,EACtF,CAAC;QACD,OAAO,eAAe,CAAC,WAAW,EAAE,mBAAmB,EAAE,UAAU,EAAE,GAAG,EAAE,CACxE,kBAAkB,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAA;IACpD,CAAC;IAED,qEAAqE;IACrE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAA;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,8BAA8B,WAAW,EAAE,CAAC,CAAA;QACxG,8FAA8F;QAC9F,OAAO,IAAI,CAAA;IACb,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,+CAA+C,CAAC,CAAA;IAC5G,OAAO,KAAK,CAAA;AACd,CAAC;AAED,wEAAwE;AAExE,KAAK,UAAU,uBAAuB,CACpC,gBAAwB,EACxB,aAAqB,EACrB,IAAoB,EACpB,QAAkC;IAElC,IAAI,GAAW,CAAA;IACf,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,+CAA+C,CAAC,CAAA;QACjH,MAAM,qBAAqB,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC1D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,MAA+B,CAAA;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAA;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,iDAAiD,CAAC,CAAA;QACrH,MAAM,qBAAqB,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC1D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,KAAK,GAAI,MAAM,CAAC,KAA6C,IAAI,EAAE,CAAA;IACzE,MAAM,UAAU,GAAI,KAAK,CAAC,UAAoC,IAAI,EAAE,CAAA;IACpE,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,KAAK,CAAA;QAC7D,MAAM,CAAC,GAAI,KAAmC,CAAC,KAAK,IAAI,EAAE,CAAA;QAC1D,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAQ,EAA8B,CAAC,OAAO,KAAK,QAAQ;eAC5E,MAAM,CAAE,EAA8B,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAA;IAC7E,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,iDAAiD,CAAC,CAAA;QAC/G,MAAM,qBAAqB,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC1D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,IAAI,GAAK,MAAM,CAAC,WAAuC,EAAE,IAAkB,IAAI,EAAE,CAAA;IACvF,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACvD,MAAM,iBAAiB,GAAG,WAAW,CAAC,aAAa,CAAC,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAA;IACxF,IAAI,IAAI,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACpC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,gCAAgC,CAAC,CAAA;QACpG,MAAM,qBAAqB,CAAC,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC1D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,mCAAmC,CAAC,CAAA;IACrG,OAAO,KAAK,CAAA;AACd,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,QAAgB,EAChB,OAAe,EACf,OAA4B;IAE5B,IAAI,GAAW,CAAA;IACf,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,iCAAiC,CAAC,CAAA;QAC/G,MAAM,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC9B,+DAA+D;QAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAC5D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,kCAAkC,CAAC,CAAA;YAClH,MAAM,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YACnC,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,mCAAmC,CAAC,CAAA;QACnH,MAAM,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;GAKG;AACH;;;;GAIG;AACH,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,MAAc,EAAE,OAAe,EAAE,OAA4B;IAC5G,IAAI,GAAW,CAAA;IACf,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,sCAAsC,CAAC,CAAA;QACjH,MAAM,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,uCAAuC,CAAC,CAAA;QACpH,MAAM,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,OAAiB,EAAE,aAAqB,EAAE,QAAgB;IACtG,IAAI,GAAW,CAAA;IACf,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,yCAAyC,CAAC,CAAA;QACnG,MAAM,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAA;QAC1E,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,0CAA0C,CAAC,CAAA;QACtG,MAAM,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAA;QAC1E,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,MAAM,GAAG,MAAM,oBAAoB,EAAE,CAAA;IAC3C,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,GAAG,CAAC,IAAI,CACN,EAAE,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,EAClG,2FAA2F;YACzF,4FAA4F;YAC5F,6FAA6F,CAChG,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAA;AACnB,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAAe,EAAE,OAA4B;IACtE,IAAI,CAAC;QACH,MAAM,OAAO,EAAE,CAAA;QACf,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,4BAA4B,CAAC,CAAA;IACxF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,qBAAqB,OAAO,mBAAmB,CAAC,CAAA;IAC7G,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,CAAS;IACjC,IAAI,CAAC;QAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAAC,OAAO,IAAI,CAAA;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,KAAK,CAAA;IAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"settingsGuard.js","sourceRoot":"","sources":["../../src/watcher/settingsGuard.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intutic/sync-daemon",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "Intutic Sync Daemon — bidirectional state sync between control plane and developer workspaces",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -102,10 +102,10 @@
102
102
  "ws": "^8.21.0",
103
103
  "yaml": "^2.9.0",
104
104
  "zod": "^3",
105
- "@intutic/id": "2.1.0",
106
- "@intutic/logger": "2.1.0",
107
- "@intutic/mcp-governance-proxy": "2.1.0",
108
- "@intutic/shared-types": "2.1.0"
105
+ "@intutic/id": "2.2.0",
106
+ "@intutic/shared-types": "2.2.0",
107
+ "@intutic/mcp-governance-proxy": "2.2.0",
108
+ "@intutic/logger": "2.2.0"
109
109
  },
110
110
  "devDependencies": {
111
111
  "@types/node": "^22",
@@ -1,33 +0,0 @@
1
- /**
2
- * hashReporter.ts — SHA-256 hash computation + integrity comparison.
3
- *
4
- * Computes SHA-256 hashes of local harness config files and compares
5
- * them against canonical hashes from the control plane. This enables
6
- * SOP drift detection: if a developer manually edits a governed file,
7
- * the daemon flags it as drifted in the next sync report.
8
- *
9
- * HLD §3.14 — SOP Integrity Verification
10
- * LLD #8 — Sync Daemon / CLI
11
- *
12
- * @module
13
- */
14
- import type { HarnessType, SopFileHash } from '@intutic/shared-types';
15
- /**
16
- * Compute SHA-256 hashes for all harness config files and compare
17
- * against canonical hashes from the control plane.
18
- *
19
- * @param workspaceRoot - Absolute path to the workspace root.
20
- * @param harnesses - Harness types detected in the workspace.
21
- * @param canonicalHashes - Expected hashes from last sync (filePath → SHA-256).
22
- * @returns Array of SopFileHash entries with drift detection flags.
23
- */
24
- export declare function computeFileHashes(workspaceRoot: string, harnesses: HarnessType[], canonicalHashes: Record<string, string>): Promise<SopFileHash[]>;
25
- /**
26
- * Compute the SHA-256 hex digest of a file's contents.
27
- *
28
- * @param filePath - Absolute path to the file.
29
- * @returns 64-character lowercase hex SHA-256 hash.
30
- * @throws If the file does not exist or is not readable.
31
- */
32
- export declare function hashFile(filePath: string): Promise<string>;
33
- //# sourceMappingURL=hashReporter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hashReporter.d.ts","sourceRoot":"","sources":["../src/hashReporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGrE;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,WAAW,EAAE,EACxB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,OAAO,CAAC,WAAW,EAAE,CAAC,CAiCxB;AAED;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhE"}
@@ -1,69 +0,0 @@
1
- /**
2
- * hashReporter.ts — SHA-256 hash computation + integrity comparison.
3
- *
4
- * Computes SHA-256 hashes of local harness config files and compares
5
- * them against canonical hashes from the control plane. This enables
6
- * SOP drift detection: if a developer manually edits a governed file,
7
- * the daemon flags it as drifted in the next sync report.
8
- *
9
- * HLD §3.14 — SOP Integrity Verification
10
- * LLD #8 — Sync Daemon / CLI
11
- *
12
- * @module
13
- */
14
- import { createHash } from 'node:crypto';
15
- import * as node_fs from 'node:fs/promises';
16
- import * as node_path from 'node:path';
17
- import { HARNESS_FILES } from './configWriter.js';
18
- /**
19
- * Compute SHA-256 hashes for all harness config files and compare
20
- * against canonical hashes from the control plane.
21
- *
22
- * @param workspaceRoot - Absolute path to the workspace root.
23
- * @param harnesses - Harness types detected in the workspace.
24
- * @param canonicalHashes - Expected hashes from last sync (filePath → SHA-256).
25
- * @returns Array of SopFileHash entries with drift detection flags.
26
- */
27
- export async function computeFileHashes(workspaceRoot, harnesses, canonicalHashes) {
28
- const results = [];
29
- for (const harness of harnesses) {
30
- const filename = HARNESS_FILES[harness];
31
- if (!filename)
32
- continue; // Phase 2 deferred
33
- const configPath = node_path.join(workspaceRoot, filename);
34
- const relativePath = filename;
35
- try {
36
- const localHash = await hashFile(configPath);
37
- const canonical = canonicalHashes[relativePath] ?? '';
38
- const drifted = canonical !== '' && localHash !== canonical;
39
- results.push({
40
- filePath: relativePath,
41
- localHash,
42
- canonicalHash: canonical,
43
- drifted,
44
- });
45
- }
46
- catch {
47
- // File doesn't exist or isn't readable — report empty hash, not drifted
48
- results.push({
49
- filePath: relativePath,
50
- localHash: '',
51
- canonicalHash: canonicalHashes[relativePath] ?? '',
52
- drifted: false,
53
- });
54
- }
55
- }
56
- return results;
57
- }
58
- /**
59
- * Compute the SHA-256 hex digest of a file's contents.
60
- *
61
- * @param filePath - Absolute path to the file.
62
- * @returns 64-character lowercase hex SHA-256 hash.
63
- * @throws If the file does not exist or is not readable.
64
- */
65
- export async function hashFile(filePath) {
66
- const content = await node_fs.readFile(filePath, 'utf-8');
67
- return createHash('sha256').update(content, 'utf-8').digest('hex');
68
- }
69
- //# sourceMappingURL=hashReporter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hashReporter.js","sourceRoot":"","sources":["../src/hashReporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,SAAS,MAAM,WAAW,CAAA;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,aAAqB,EACrB,SAAwB,EACxB,eAAuC;IAEvC,MAAM,OAAO,GAAkB,EAAE,CAAA;IAEjC,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;QACvC,IAAI,CAAC,QAAQ;YAAE,SAAQ,CAAC,mBAAmB;QAE3C,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;QAC1D,MAAM,YAAY,GAAG,QAAQ,CAAA;QAE7B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAA;YAC5C,MAAM,SAAS,GAAG,eAAe,CAAC,YAAY,CAAC,IAAI,EAAE,CAAA;YACrD,MAAM,OAAO,GAAG,SAAS,KAAK,EAAE,IAAI,SAAS,KAAK,SAAS,CAAA;YAE3D,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,YAAY;gBACtB,SAAS;gBACT,aAAa,EAAE,SAAS;gBACxB,OAAO;aACR,CAAC,CAAA;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;YACxE,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,YAAY;gBACtB,SAAS,EAAE,EAAE;gBACb,aAAa,EAAE,eAAe,CAAC,YAAY,CAAC,IAAI,EAAE;gBAClD,OAAO,EAAE,KAAK;aACf,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAgB;IAC7C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACzD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACpE,CAAC"}
@@ -1,35 +0,0 @@
1
- /**
2
- * integrityStore.ts — Local .intutic/integrity.json manager.
3
- *
4
- * Maintains a per-workspace integrity store that tracks the last sync
5
- * timestamp, config version, and canonical file hashes. This allows
6
- * the daemon to skip redundant syncs when the config version hasn't
7
- * changed and to detect local drift between sync cycles.
8
- *
9
- * HLD §3.14 — Real-Time State Mirroring
10
- * LLD #8 — Sync Daemon / CLI
11
- *
12
- * @module
13
- */
14
- import type { IntegrityStore } from '@intutic/shared-types';
15
- /**
16
- * Load the local integrity store from `.intutic/integrity.json`.
17
- *
18
- * Returns `null` if the file doesn't exist (first sync) or is
19
- * corrupted (will be overwritten on next save).
20
- *
21
- * @param workspaceRoot - Absolute path to the workspace root.
22
- * @returns The parsed IntegrityStore, or null if not found.
23
- */
24
- export declare function loadIntegrity(workspaceRoot: string): Promise<IntegrityStore | null>;
25
- /**
26
- * Save the integrity store to `.intutic/integrity.json`.
27
- *
28
- * Creates the `.intutic/` directory if it doesn't exist.
29
- * Uses atomic write (tmp → rename) to prevent corruption.
30
- *
31
- * @param workspaceRoot - Absolute path to the workspace root.
32
- * @param store - The IntegrityStore to persist.
33
- */
34
- export declare function saveIntegrity(workspaceRoot: string, store: IntegrityStore): Promise<void>;
35
- //# sourceMappingURL=integrityStore.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"integrityStore.d.ts","sourceRoot":"","sources":["../src/integrityStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAQ3D;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAqBhC;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,IAAI,CAAC,CAUf"}
@@ -1,71 +0,0 @@
1
- /**
2
- * integrityStore.ts — Local .intutic/integrity.json manager.
3
- *
4
- * Maintains a per-workspace integrity store that tracks the last sync
5
- * timestamp, config version, and canonical file hashes. This allows
6
- * the daemon to skip redundant syncs when the config version hasn't
7
- * changed and to detect local drift between sync cycles.
8
- *
9
- * HLD §3.14 — Real-Time State Mirroring
10
- * LLD #8 — Sync Daemon / CLI
11
- *
12
- * @module
13
- */
14
- import * as node_fs from 'node:fs/promises';
15
- import * as node_path from 'node:path';
16
- /** Filename for the integrity store within the `.intutic/` directory. */
17
- const INTEGRITY_FILE = 'integrity.json';
18
- /** Directory name for Intutic local state. */
19
- const INTUTIC_DIR = '.intutic';
20
- /**
21
- * Load the local integrity store from `.intutic/integrity.json`.
22
- *
23
- * Returns `null` if the file doesn't exist (first sync) or is
24
- * corrupted (will be overwritten on next save).
25
- *
26
- * @param workspaceRoot - Absolute path to the workspace root.
27
- * @returns The parsed IntegrityStore, or null if not found.
28
- */
29
- export async function loadIntegrity(workspaceRoot) {
30
- const filePath = node_path.join(workspaceRoot, INTUTIC_DIR, INTEGRITY_FILE);
31
- try {
32
- const raw = await node_fs.readFile(filePath, 'utf-8');
33
- const parsed = JSON.parse(raw);
34
- // Basic shape validation
35
- if (typeof parsed.lastSyncAt !== 'string' ||
36
- typeof parsed.configVersion !== 'number' ||
37
- typeof parsed.files !== 'object') {
38
- return null;
39
- }
40
- return parsed;
41
- }
42
- catch {
43
- // File doesn't exist or is corrupted
44
- return null;
45
- }
46
- }
47
- /**
48
- * Save the integrity store to `.intutic/integrity.json`.
49
- *
50
- * Creates the `.intutic/` directory if it doesn't exist.
51
- * Uses atomic write (tmp → rename) to prevent corruption.
52
- *
53
- * @param workspaceRoot - Absolute path to the workspace root.
54
- * @param store - The IntegrityStore to persist.
55
- */
56
- export async function saveIntegrity(workspaceRoot, store) {
57
- const dir = node_path.join(workspaceRoot, INTUTIC_DIR);
58
- await node_fs.mkdir(dir, { recursive: true });
59
- const filePath = node_path.join(dir, INTEGRITY_FILE);
60
- const tmpPath = `${filePath}.tmp`;
61
- const content = JSON.stringify(store, null, 2) + '\n';
62
- await node_fs.writeFile(tmpPath, content, 'utf-8');
63
- await node_fs.rename(tmpPath, filePath);
64
- }
65
- // `loadContextIntegrity` / `saveContextIntegrity` were removed on 2026-07-30. They
66
- // had no callers in either repo — not even tests — while
67
- // `.intutic/context_integrity.json` sat in three harness hook denylists as a
68
- // protected path. The file was never created, so those hooks guarded nothing. The
69
- // config integrity store above already hashes every governed file `syncLoop` writes,
70
- // which is what the second store would have duplicated.
71
- //# sourceMappingURL=integrityStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"integrityStore.js","sourceRoot":"","sources":["../src/integrityStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,SAAS,MAAM,WAAW,CAAA;AAGtC,yEAAyE;AACzE,MAAM,cAAc,GAAG,gBAAgB,CAAA;AAEvC,8CAA8C;AAC9C,MAAM,WAAW,GAAG,UAAU,CAAA;AAE9B;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,aAAqB;IAErB,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,cAAc,CAAC,CAAA;IAE3E,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAA;QAEhD,yBAAyB;QACzB,IACE,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;YACrC,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ;YACxC,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAChC,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,MAAM,CAAC;QACP,qCAAqC;QACrC,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,aAAqB,EACrB,KAAqB;IAErB,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;IACtD,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAE7C,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;IACpD,MAAM,OAAO,GAAG,GAAG,QAAQ,MAAM,CAAA;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAA;IAErD,MAAM,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAClD,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACzC,CAAC;AAGD,mFAAmF;AACnF,yDAAyD;AACzD,6EAA6E;AAC7E,kFAAkF;AAClF,qFAAqF;AACrF,wDAAwD"}
@@ -1,140 +0,0 @@
1
- /**
2
- * gitWorktrees.ts — discovers every `git worktree` checkout of a repo the
3
- * sync daemon is watching, so project-tier governance files can be written
4
- * into each one, not just the main checkout.
5
- *
6
- * # The gap this closes
7
- *
8
- * `git worktree add <path>` creates a second, fully independent WORKING
9
- * TREE that shares the main checkout's `.git` object store (via a `.git`
10
- * FILE pointing back at `<main>/.git/worktrees/<name>`) but has its own
11
- * untracked files. Every project-tier governance file this product writes
12
- * — `.claude/settings.json`, `.cursor/hooks.json`, `.intutic/hooks/*`,
13
- * `AGENTS.md`'s sibling hook registrations, the wrapped `.mcp.json` entries,
14
- * etc. — is untracked by convention (SOP content is workspace-specific and
15
- * synced from the control plane, not committed). That means none of it
16
- * exists in a worktree's working tree by default: `writeConfigFiles`/
17
- * `injectMcpServer` running against only the main checkout's `workspaceRoot`
18
- * leaves every OTHER worktree of that same repo completely ungoverned,
19
- * regardless of what the main checkout has configured.
20
- *
21
- * This was already true for any hand-rolled `git worktree` workflow before
22
- * this module existed — Xirp (an orchestrator that spawns CLI agents each
23
- * inside its own tmux session + git worktree, see `tools/cli/src/harness/
24
- * xirp.ts`) is what surfaced it, but the fix here is general: it benefits
25
- * ANY worktree-based workflow, Xirp-managed or not. See TD-390.
26
- *
27
- * # Verifying the mechanics for real
28
- *
29
- * Confirmed against a real throwaway repo during this module's development
30
- * (not asserted from memory of git's docs): an untracked file written into
31
- * a main checkout is NOT visible from a `git worktree add`-created sibling
32
- * checkout's directory. `git worktree list --porcelain`'s block format,
33
- * including `locked`/`prunable`/`bare`/`detached` fields, was captured from
34
- * a real `git worktree list --porcelain` run (this module's own test suite
35
- * builds the same kind of fixture, in an isolated temp directory, rather
36
- * than relying on this description alone).
37
- *
38
- * @module
39
- */
40
- /** One block of `git worktree list --porcelain` output, parsed. */
41
- export interface WorktreeInfo {
42
- /** Absolute path to this worktree's working directory. */
43
- path: string;
44
- /** Commit the worktree's HEAD points at, or null if not reported (bare). */
45
- head: string | null;
46
- /** Branch ref this worktree has checked out (e.g. `refs/heads/main`), or
47
- * null when detached or bare. */
48
- branch: string | null;
49
- /** True if this worktree's HEAD is detached (no branch checked out). */
50
- detached: boolean;
51
- /** True for the bare-repository worktree entry — the repo root itself
52
- * when it has no working tree of its own files (only ever the first
53
- * entry, and only for a bare repo). */
54
- bare: boolean;
55
- /** True if this worktree is locked (`git worktree lock`) — git will not
56
- * prune it even if its directory looks gone. Locking does not restrict
57
- * reading or writing ordinary files in it, so this does not by itself
58
- * change whether `discoverWorktrees` includes the path. */
59
- locked: boolean;
60
- /** Reason string passed to `git worktree lock --reason`, if any. */
61
- lockedReason: string | null;
62
- /** True if git has flagged this worktree's directory as missing/invalid
63
- * and a candidate for `git worktree prune`. */
64
- prunable: boolean;
65
- /** Reason string git reports for why this worktree is prunable, if any. */
66
- prunableReason: string | null;
67
- }
68
- /**
69
- * Parses `git worktree list --porcelain` output.
70
- *
71
- * Real format (verified against a live `git worktree list --porcelain` run,
72
- * git 2.x): one block per worktree, separated by a blank line, each line a
73
- * bare keyword or `<keyword> <value>`:
74
- *
75
- * ```
76
- * worktree /path/to/main
77
- * HEAD 56bdba0a04f83da4e821a0a3e7a6208d43fcaec5
78
- * branch refs/heads/master
79
- *
80
- * worktree /path/to/locked-wt
81
- * HEAD 56bdba0a04f83da4e821a0a3e7a6208d43fcaec5
82
- * branch refs/heads/feature2
83
- * locked testing lock
84
- *
85
- * worktree /path/to/detached-wt
86
- * HEAD 56bdba0a04f83da4e821a0a3e7a6208d43fcaec5
87
- * detached
88
- * ```
89
- *
90
- * Deliberately implemented with plain string methods (`startsWith`/`slice`)
91
- * rather than a line-matching regex — this parses `git`-controlled, not
92
- * attacker-controlled, input, but a sibling Wave 1 phase shipped a
93
- * CodeQL-flagged polynomial-regex bug from exactly this kind of "just trim
94
- * a path" text handling, so the same class of construct is avoided here on
95
- * principle even though the input source differs.
96
- */
97
- export declare function parseWorktreeListPorcelain(output: string): WorktreeInfo[];
98
- /**
99
- * Discovers every worktree of the git repository containing `repoRoot`,
100
- * returning the absolute paths that should be treated as additional
101
- * project-tier workspace roots.
102
- *
103
- * Filtering decisions, made explicit rather than left implicit:
104
- *
105
- * - **The main checkout is included.** `git worktree list` always lists it
106
- * first (confirmed against a live run) — it needs no special-casing by
107
- * callers; a caller that already writes to `repoRoot` directly can simply
108
- * skip a returned path equal to `repoRoot` if it wants to avoid a
109
- * redundant duplicate write, but the list is uniformly correct either way.
110
- * - **Locked worktrees are included.** `git worktree lock` only prevents
111
- * git's own pruning of a worktree it cannot otherwise verify still
112
- * exists (e.g. on removable storage) — it says nothing about whether the
113
- * directory is currently present and writable, which it normally is.
114
- * Excluding locked worktrees would silently under-cover a workflow (like
115
- * Xirp's) that locks worktrees deliberately to protect them from being
116
- * pruned out from under a long-running session — exactly the worktrees
117
- * most worth covering.
118
- * - **Prunable worktrees are EXCLUDED.** `prunable` means git itself has
119
- * flagged the worktree's directory as missing or otherwise administratively
120
- * invalid. Writing into that path would either fail or (via this
121
- * codebase's `mkdir(dir, { recursive: true })` write convention) silently
122
- * RECREATE a directory git considers gone — resurrecting a deleted
123
- * worktree's folder with governance files nobody asked for. Skipping it
124
- * is what "don't write into a directory git says isn't really there"
125
- * means in practice.
126
- * - **Bare-repository entries are EXCLUDED.** A bare repo's own `worktree`
127
- * porcelain entry names its root path but has no working tree of ordinary
128
- * files to write project-tier config into.
129
- *
130
- * Best-effort by design: returns `[]` (never throws) if `repoRoot` is not
131
- * inside a git repository, if `git` is not on `PATH`, or on any other
132
- * failure — this is additive coverage on top of the existing single-root
133
- * write path, so a git failure here must not break the sync cycle that
134
- * already succeeds for the main `workspaceRoot`. This also means a
135
- * non-worktree, single-checkout project (the common case) is a harmless
136
- * no-extra-work path: `git worktree list` still runs, still succeeds, and
137
- * returns exactly one entry (the main checkout itself).
138
- */
139
- export declare function discoverWorktrees(repoRoot: string): Promise<string[]>;
140
- //# sourceMappingURL=gitWorktrees.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gitWorktrees.d.ts","sourceRoot":"","sources":["../../src/lib/gitWorktrees.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAOH,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAA;IACZ,4EAA4E;IAC5E,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB;sCACkC;IAClC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,wEAAwE;IACxE,QAAQ,EAAE,OAAO,CAAA;IACjB;;4CAEwC;IACxC,IAAI,EAAE,OAAO,CAAA;IACb;;;gEAG4D;IAC5D,MAAM,EAAE,OAAO,CAAA;IACf,oEAAoE;IACpE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B;oDACgD;IAChD,QAAQ,EAAE,OAAO,CAAA;IACjB,2EAA2E;IAC3E,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,CAuDzE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgB3E"}