oh-my-copilot 4.13.2 → 4.13.21

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 (311) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +1 -1
  4. package/bridge/cli.cjs +2522 -949
  5. package/bridge/mcp-server.cjs +97 -9
  6. package/bridge/runtime-cli.cjs +1256 -133
  7. package/bridge/team.js +1241 -65
  8. package/dist/__tests__/auto-slash-aliases.test.js +91 -0
  9. package/dist/__tests__/auto-slash-aliases.test.js.map +1 -1
  10. package/dist/__tests__/hud/labels.test.d.ts +2 -0
  11. package/dist/__tests__/hud/labels.test.d.ts.map +1 -0
  12. package/dist/__tests__/hud/labels.test.js +158 -0
  13. package/dist/__tests__/hud/labels.test.js.map +1 -0
  14. package/dist/__tests__/hud/render-rate-limits-priority.test.js +26 -0
  15. package/dist/__tests__/hud/render-rate-limits-priority.test.js.map +1 -1
  16. package/dist/__tests__/hud-marketplace-resolution.test.js +34 -0
  17. package/dist/__tests__/hud-marketplace-resolution.test.js.map +1 -1
  18. package/dist/__tests__/installer-hud-skip.test.js +6 -0
  19. package/dist/__tests__/installer-hud-skip.test.js.map +1 -1
  20. package/dist/__tests__/installer-omc-reference.test.js +1 -1
  21. package/dist/__tests__/installer-omc-reference.test.js.map +1 -1
  22. package/dist/__tests__/mnemosyne/detector.test.js +2 -0
  23. package/dist/__tests__/mnemosyne/detector.test.js.map +1 -1
  24. package/dist/__tests__/notepad.test.js +2 -2
  25. package/dist/__tests__/notepad.test.js.map +1 -1
  26. package/dist/__tests__/pre-tool-enforcer.test.js +84 -1
  27. package/dist/__tests__/pre-tool-enforcer.test.js.map +1 -1
  28. package/dist/__tests__/ralph-prd-mandatory.test.js +11 -1
  29. package/dist/__tests__/ralph-prd-mandatory.test.js.map +1 -1
  30. package/dist/__tests__/ralph-prd.test.js +40 -2
  31. package/dist/__tests__/ralph-prd.test.js.map +1 -1
  32. package/dist/__tests__/skills.test.js +363 -4
  33. package/dist/__tests__/skills.test.js.map +1 -1
  34. package/dist/__tests__/state-root-resolution.test.js +56 -6
  35. package/dist/__tests__/state-root-resolution.test.js.map +1 -1
  36. package/dist/autoresearch/__tests__/runtime.test.js +225 -28
  37. package/dist/autoresearch/__tests__/runtime.test.js.map +1 -1
  38. package/dist/autoresearch/runtime.d.ts.map +1 -1
  39. package/dist/autoresearch/runtime.js +9 -5
  40. package/dist/autoresearch/runtime.js.map +1 -1
  41. package/dist/cli/autoresearch.d.ts +1 -1
  42. package/dist/cli/autoresearch.d.ts.map +1 -1
  43. package/dist/cli/autoresearch.js +4 -4
  44. package/dist/cli/commands/team.d.ts +1 -0
  45. package/dist/cli/commands/team.d.ts.map +1 -1
  46. package/dist/cli/commands/team.js +14 -2
  47. package/dist/cli/commands/team.js.map +1 -1
  48. package/dist/cli/index.js +3 -0
  49. package/dist/cli/index.js.map +1 -1
  50. package/dist/cli/team.d.ts +6 -0
  51. package/dist/cli/team.d.ts.map +1 -1
  52. package/dist/cli/team.js +23 -1
  53. package/dist/cli/team.js.map +1 -1
  54. package/dist/config/__tests__/loader.test.js.map +1 -1
  55. package/dist/features/boulder-state/constants.d.ts +1 -1
  56. package/dist/features/boulder-state/constants.d.ts.map +1 -1
  57. package/dist/features/builtin-skills/skills.d.ts.map +1 -1
  58. package/dist/features/builtin-skills/skills.js +11 -3
  59. package/dist/features/builtin-skills/skills.js.map +1 -1
  60. package/dist/features/builtin-skills/types.d.ts +7 -0
  61. package/dist/features/builtin-skills/types.d.ts.map +1 -1
  62. package/dist/features/magic-keywords.d.ts.map +1 -1
  63. package/dist/features/magic-keywords.js +30 -1
  64. package/dist/features/magic-keywords.js.map +1 -1
  65. package/dist/features/rate-limit-wait/tmux-detector.d.ts +4 -4
  66. package/dist/features/rate-limit-wait/tmux-detector.js +9 -9
  67. package/dist/features/rate-limit-wait/tmux-detector.js.map +1 -1
  68. package/dist/hooks/__tests__/bridge-routing.test.js +156 -0
  69. package/dist/hooks/__tests__/bridge-routing.test.js.map +1 -1
  70. package/dist/hooks/auto-slash-command/constants.d.ts.map +1 -1
  71. package/dist/hooks/auto-slash-command/constants.js +1 -0
  72. package/dist/hooks/auto-slash-command/constants.js.map +1 -1
  73. package/dist/hooks/auto-slash-command/executor.d.ts.map +1 -1
  74. package/dist/hooks/auto-slash-command/executor.js +29 -0
  75. package/dist/hooks/auto-slash-command/executor.js.map +1 -1
  76. package/dist/hooks/bridge.d.ts.map +1 -1
  77. package/dist/hooks/bridge.js +184 -1
  78. package/dist/hooks/bridge.js.map +1 -1
  79. package/dist/hooks/learner/detector.js +1 -1
  80. package/dist/hooks/mode-registry/__tests__/session-isolation.test.js +16 -0
  81. package/dist/hooks/mode-registry/__tests__/session-isolation.test.js.map +1 -1
  82. package/dist/hooks/notepad/index.d.ts +4 -1
  83. package/dist/hooks/notepad/index.d.ts.map +1 -1
  84. package/dist/hooks/notepad/index.js +7 -4
  85. package/dist/hooks/notepad/index.js.map +1 -1
  86. package/dist/hooks/persistent-mode/__tests__/ralph-verification-flow.test.js +70 -3
  87. package/dist/hooks/persistent-mode/__tests__/ralph-verification-flow.test.js.map +1 -1
  88. package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
  89. package/dist/hooks/persistent-mode/index.js +10 -9
  90. package/dist/hooks/persistent-mode/index.js.map +1 -1
  91. package/dist/hooks/persistent-mode/stop-hook-blocking.test.js +64 -9
  92. package/dist/hooks/persistent-mode/stop-hook-blocking.test.js.map +1 -1
  93. package/dist/hooks/project-memory/__tests__/integration.test.js +117 -3
  94. package/dist/hooks/project-memory/__tests__/integration.test.js.map +1 -1
  95. package/dist/hooks/project-memory/__tests__/storage.test.js +11 -11
  96. package/dist/hooks/project-memory/__tests__/storage.test.js.map +1 -1
  97. package/dist/hooks/project-memory/index.d.ts.map +1 -1
  98. package/dist/hooks/project-memory/index.js +24 -12
  99. package/dist/hooks/project-memory/index.js.map +1 -1
  100. package/dist/hooks/ralph/index.d.ts +1 -1
  101. package/dist/hooks/ralph/index.d.ts.map +1 -1
  102. package/dist/hooks/ralph/index.js +1 -1
  103. package/dist/hooks/ralph/index.js.map +1 -1
  104. package/dist/hooks/ralph/loop.d.ts +6 -6
  105. package/dist/hooks/ralph/loop.d.ts.map +1 -1
  106. package/dist/hooks/ralph/loop.js +18 -18
  107. package/dist/hooks/ralph/loop.js.map +1 -1
  108. package/dist/hooks/ralph/prd.d.ts +23 -12
  109. package/dist/hooks/ralph/prd.d.ts.map +1 -1
  110. package/dist/hooks/ralph/prd.js +88 -42
  111. package/dist/hooks/ralph/prd.js.map +1 -1
  112. package/dist/hooks/session-end/__tests__/mode-state-cleanup.test.js +20 -0
  113. package/dist/hooks/session-end/__tests__/mode-state-cleanup.test.js.map +1 -1
  114. package/dist/hooks/session-end/index.d.ts +9 -0
  115. package/dist/hooks/session-end/index.d.ts.map +1 -1
  116. package/dist/hooks/session-end/index.js +67 -0
  117. package/dist/hooks/session-end/index.js.map +1 -1
  118. package/dist/hooks/skill-bridge.cjs +6 -5
  119. package/dist/hooks/skill-state/index.d.ts.map +1 -1
  120. package/dist/hooks/skill-state/index.js +1 -0
  121. package/dist/hooks/skill-state/index.js.map +1 -1
  122. package/dist/hud/__tests__/git-status.test.js +18 -0
  123. package/dist/hud/__tests__/git-status.test.js.map +1 -1
  124. package/dist/hud/elements/background.d.ts +3 -3
  125. package/dist/hud/elements/background.d.ts.map +1 -1
  126. package/dist/hud/elements/background.js +5 -4
  127. package/dist/hud/elements/background.js.map +1 -1
  128. package/dist/hud/elements/call-counts.d.ts +2 -2
  129. package/dist/hud/elements/call-counts.d.ts.map +1 -1
  130. package/dist/hud/elements/call-counts.js +7 -6
  131. package/dist/hud/elements/call-counts.js.map +1 -1
  132. package/dist/hud/elements/context.d.ts +3 -3
  133. package/dist/hud/elements/context.d.ts.map +1 -1
  134. package/dist/hud/elements/context.js +5 -4
  135. package/dist/hud/elements/context.js.map +1 -1
  136. package/dist/hud/elements/git.d.ts +2 -1
  137. package/dist/hud/elements/git.d.ts.map +1 -1
  138. package/dist/hud/elements/git.js +7 -6
  139. package/dist/hud/elements/git.js.map +1 -1
  140. package/dist/hud/elements/ralph.d.ts +2 -2
  141. package/dist/hud/elements/ralph.d.ts.map +1 -1
  142. package/dist/hud/elements/ralph.js +3 -2
  143. package/dist/hud/elements/ralph.js.map +1 -1
  144. package/dist/hud/elements/thinking.d.ts +2 -2
  145. package/dist/hud/elements/thinking.d.ts.map +1 -1
  146. package/dist/hud/elements/thinking.js +3 -2
  147. package/dist/hud/elements/thinking.js.map +1 -1
  148. package/dist/hud/elements/token-usage.d.ts +2 -2
  149. package/dist/hud/elements/token-usage.d.ts.map +1 -1
  150. package/dist/hud/elements/token-usage.js +3 -2
  151. package/dist/hud/elements/token-usage.js.map +1 -1
  152. package/dist/hud/render.d.ts.map +1 -1
  153. package/dist/hud/render.js +11 -10
  154. package/dist/hud/render.js.map +1 -1
  155. package/dist/hud/state.d.ts.map +1 -1
  156. package/dist/hud/state.js +18 -1
  157. package/dist/hud/state.js.map +1 -1
  158. package/dist/hud/types.d.ts +26 -0
  159. package/dist/hud/types.d.ts.map +1 -1
  160. package/dist/hud/types.js +58 -0
  161. package/dist/hud/types.js.map +1 -1
  162. package/dist/installer/__tests__/hud-cache-wrapper.test.d.ts +2 -0
  163. package/dist/installer/__tests__/hud-cache-wrapper.test.d.ts.map +1 -0
  164. package/dist/installer/__tests__/hud-cache-wrapper.test.js +235 -0
  165. package/dist/installer/__tests__/hud-cache-wrapper.test.js.map +1 -0
  166. package/dist/installer/__tests__/standalone-hook-reconcile.test.js +2 -0
  167. package/dist/installer/__tests__/standalone-hook-reconcile.test.js.map +1 -1
  168. package/dist/installer/index.d.ts.map +1 -1
  169. package/dist/installer/index.js +19 -7
  170. package/dist/installer/index.js.map +1 -1
  171. package/dist/lib/__tests__/worktree-paths.test.js +162 -39
  172. package/dist/lib/__tests__/worktree-paths.test.js.map +1 -1
  173. package/dist/lib/worktree-paths.d.ts +87 -9
  174. package/dist/lib/worktree-paths.d.ts.map +1 -1
  175. package/dist/lib/worktree-paths.js +209 -27
  176. package/dist/lib/worktree-paths.js.map +1 -1
  177. package/dist/team/__tests__/auto-merge-restart.test.d.ts +2 -0
  178. package/dist/team/__tests__/auto-merge-restart.test.d.ts.map +1 -0
  179. package/dist/team/__tests__/auto-merge-restart.test.js +128 -0
  180. package/dist/team/__tests__/auto-merge-restart.test.js.map +1 -0
  181. package/dist/team/__tests__/auto-merge.perf.test.d.ts +2 -0
  182. package/dist/team/__tests__/auto-merge.perf.test.d.ts.map +1 -0
  183. package/dist/team/__tests__/auto-merge.perf.test.js +85 -0
  184. package/dist/team/__tests__/auto-merge.perf.test.js.map +1 -0
  185. package/dist/team/__tests__/conflict-mailbox.test.d.ts +2 -0
  186. package/dist/team/__tests__/conflict-mailbox.test.d.ts.map +1 -0
  187. package/dist/team/__tests__/conflict-mailbox.test.js +238 -0
  188. package/dist/team/__tests__/conflict-mailbox.test.js.map +1 -0
  189. package/dist/team/__tests__/helpers/git-fixture.d.ts +72 -0
  190. package/dist/team/__tests__/helpers/git-fixture.d.ts.map +1 -0
  191. package/dist/team/__tests__/helpers/git-fixture.js +252 -0
  192. package/dist/team/__tests__/helpers/git-fixture.js.map +1 -0
  193. package/dist/team/__tests__/leader-inbox.test.d.ts +2 -0
  194. package/dist/team/__tests__/leader-inbox.test.d.ts.map +1 -0
  195. package/dist/team/__tests__/leader-inbox.test.js +152 -0
  196. package/dist/team/__tests__/leader-inbox.test.js.map +1 -0
  197. package/dist/team/__tests__/merge-orchestrator.test.d.ts +2 -0
  198. package/dist/team/__tests__/merge-orchestrator.test.d.ts.map +1 -0
  199. package/dist/team/__tests__/merge-orchestrator.test.js +779 -0
  200. package/dist/team/__tests__/merge-orchestrator.test.js.map +1 -0
  201. package/dist/team/__tests__/rebase-smoke.test.d.ts +2 -0
  202. package/dist/team/__tests__/rebase-smoke.test.d.ts.map +1 -0
  203. package/dist/team/__tests__/rebase-smoke.test.js +272 -0
  204. package/dist/team/__tests__/rebase-smoke.test.js.map +1 -0
  205. package/dist/team/__tests__/runtime-cli.test.js +9 -1
  206. package/dist/team/__tests__/runtime-cli.test.js.map +1 -1
  207. package/dist/team/__tests__/runtime-v2.dispatch.test.js +150 -1
  208. package/dist/team/__tests__/runtime-v2.dispatch.test.js.map +1 -1
  209. package/dist/team/__tests__/teardown-invariant.test.d.ts +2 -0
  210. package/dist/team/__tests__/teardown-invariant.test.d.ts.map +1 -0
  211. package/dist/team/__tests__/teardown-invariant.test.js +176 -0
  212. package/dist/team/__tests__/teardown-invariant.test.js.map +1 -0
  213. package/dist/team/__tests__/worker-commit-cadence.test.d.ts +2 -0
  214. package/dist/team/__tests__/worker-commit-cadence.test.d.ts.map +1 -0
  215. package/dist/team/__tests__/worker-commit-cadence.test.js +315 -0
  216. package/dist/team/__tests__/worker-commit-cadence.test.js.map +1 -0
  217. package/dist/team/__tests__/worktree-runtime-e2e.test.d.ts +2 -0
  218. package/dist/team/__tests__/worktree-runtime-e2e.test.d.ts.map +1 -0
  219. package/dist/team/__tests__/worktree-runtime-e2e.test.js +182 -0
  220. package/dist/team/__tests__/worktree-runtime-e2e.test.js.map +1 -0
  221. package/dist/team/conflict-mailbox.d.ts +49 -0
  222. package/dist/team/conflict-mailbox.d.ts.map +1 -0
  223. package/dist/team/conflict-mailbox.js +98 -0
  224. package/dist/team/conflict-mailbox.js.map +1 -0
  225. package/dist/team/leader-inbox.d.ts +28 -0
  226. package/dist/team/leader-inbox.d.ts.map +1 -0
  227. package/dist/team/leader-inbox.js +68 -0
  228. package/dist/team/leader-inbox.js.map +1 -0
  229. package/dist/team/merge-coordinator.d.ts +6 -0
  230. package/dist/team/merge-coordinator.d.ts.map +1 -1
  231. package/dist/team/merge-coordinator.js +6 -2
  232. package/dist/team/merge-coordinator.js.map +1 -1
  233. package/dist/team/merge-orchestrator.d.ts +41 -0
  234. package/dist/team/merge-orchestrator.d.ts.map +1 -0
  235. package/dist/team/merge-orchestrator.js +736 -0
  236. package/dist/team/merge-orchestrator.js.map +1 -0
  237. package/dist/team/runtime-cli.d.ts +1 -0
  238. package/dist/team/runtime-cli.d.ts.map +1 -1
  239. package/dist/team/runtime-cli.js +15 -2
  240. package/dist/team/runtime-cli.js.map +1 -1
  241. package/dist/team/runtime-flags.d.ts +5 -0
  242. package/dist/team/runtime-flags.d.ts.map +1 -0
  243. package/dist/team/runtime-flags.js +12 -0
  244. package/dist/team/runtime-flags.js.map +1 -0
  245. package/dist/team/runtime-v2.d.ts +7 -1
  246. package/dist/team/runtime-v2.d.ts.map +1 -1
  247. package/dist/team/runtime-v2.js +185 -8
  248. package/dist/team/runtime-v2.js.map +1 -1
  249. package/dist/team/worker-bootstrap.d.ts +4 -0
  250. package/dist/team/worker-bootstrap.d.ts.map +1 -1
  251. package/dist/team/worker-bootstrap.js +10 -1
  252. package/dist/team/worker-bootstrap.js.map +1 -1
  253. package/dist/team/worker-commit-cadence.d.ts +70 -0
  254. package/dist/team/worker-commit-cadence.d.ts.map +1 -0
  255. package/dist/team/worker-commit-cadence.js +271 -0
  256. package/dist/team/worker-commit-cadence.js.map +1 -0
  257. package/dist/tools/__tests__/memory-tools.test.js +4 -4
  258. package/dist/tools/__tests__/memory-tools.test.js.map +1 -1
  259. package/dist/tools/__tests__/state-tools.test.js +13 -1
  260. package/dist/tools/__tests__/state-tools.test.js.map +1 -1
  261. package/docs/GETTING-STARTED.md +415 -0
  262. package/docs/MIGRATION.md +66 -66
  263. package/docs/REFERENCE.md +21 -4
  264. package/docs/company-context-interface.md +5 -16
  265. package/docs/copilot-instructions.md +1 -1
  266. package/package.json +1 -1
  267. package/scripts/lib/hud-cache-wrapper.sh +122 -0
  268. package/scripts/plugin-setup.mjs +10 -1
  269. package/scripts/post-tool-verifier.mjs +118 -5
  270. package/scripts/pre-tool-enforcer.mjs +54 -6
  271. package/scripts/session-start.mjs +171 -3
  272. package/skills/AGENTS.md +22 -91
  273. package/skills/ai-slop-cleaner/SKILL.md +118 -120
  274. package/skills/ask/SKILL.md +6 -8
  275. package/skills/autopilot/SKILL.md +1 -28
  276. package/skills/autoresearch/SKILL.md +5 -5
  277. package/skills/cancel/SKILL.md +13 -13
  278. package/skills/cccg/SKILL.md +1 -0
  279. package/skills/configure-notifications/SKILL.md +80 -215
  280. package/skills/debug/SKILL.md +3 -2
  281. package/skills/deep-dive/SKILL.md +20 -9
  282. package/skills/deep-interview/SKILL.md +32 -4
  283. package/skills/deepinit/SKILL.md +1 -0
  284. package/skills/external-context/SKILL.md +2 -1
  285. package/skills/hud/SKILL.md +22 -52
  286. package/skills/learner/SKILL.md +90 -57
  287. package/skills/mcp-setup/SKILL.md +45 -60
  288. package/skills/omc-doctor/SKILL.md +1 -1
  289. package/skills/omc-reference/SKILL.md +6 -6
  290. package/skills/omc-setup/SKILL.md +30 -74
  291. package/skills/omc-setup/phases/01-install-claude-md.md +97 -0
  292. package/skills/omc-setup/phases/02-configure.md +25 -40
  293. package/skills/omc-setup/phases/03-integrations.md +100 -69
  294. package/skills/omc-setup/phases/04-welcome.md +102 -44
  295. package/skills/omc-teams/SKILL.md +63 -26
  296. package/skills/plan/SKILL.md +11 -9
  297. package/skills/ralph/SKILL.md +42 -41
  298. package/skills/ralplan/SKILL.md +3 -10
  299. package/skills/release/SKILL.md +168 -57
  300. package/skills/remember/SKILL.md +2 -1
  301. package/skills/sciomc/SKILL.md +12 -11
  302. package/skills/self-improve/SKILL.md +4 -4
  303. package/skills/setup/SKILL.md +1 -0
  304. package/skills/skill/SKILL.md +21 -20
  305. package/skills/skillify/SKILL.md +34 -3
  306. package/skills/team/SKILL.md +62 -44
  307. package/skills/ultraqa/SKILL.md +1 -2
  308. package/skills/ultrawork/SKILL.md +28 -21
  309. package/skills/verify/SKILL.md +2 -1
  310. package/skills/writer-memory/SKILL.md +2 -1
  311. package/templates/hooks/pre-tool-use.mjs +144 -45
@@ -0,0 +1,98 @@
1
+ // src/team/conflict-mailbox.ts
2
+ //
3
+ // Formats and delivers merge/rebase conflict notifications for omc-teams CLI workers.
4
+ //
5
+ // NOTE: Markdown inbox is canonical for omc-teams CLI; JSONL is for native /team MCP workers
6
+ // (out of scope here). Worker inbox: .omcp/state/team/{team}/workers/{worker}/inbox.md.
7
+ // Leader inbox: .omcp/state/team/{team}/leader/inbox.md (see leader-inbox.ts).
8
+ //
9
+ // This module is 100% pure (formatMergeConflictForLeader, formatRebaseConflictForWorker).
10
+ // Delivery functions delegate to appendToLeaderInbox / appendToInbox respectively.
11
+ import { appendToInbox } from './worker-bootstrap.js';
12
+ import { appendToLeaderInbox } from './leader-inbox.js';
13
+ // ---------------------------------------------------------------------------
14
+ // Pure formatters
15
+ // ---------------------------------------------------------------------------
16
+ /**
17
+ * Sanitize a single conflicting-file path before interpolation into a markdown
18
+ * mailbox message. Paths come from `git status --porcelain` output and could
19
+ * contain backticks, newlines, or carriage returns that would break the
20
+ * markdown structure or be interpreted as additional instructions by the
21
+ * leader's LLM. Replace each unsafe character with `?` so the message remains
22
+ * informative without enabling prompt injection.
23
+ */
24
+ function sanitizeConflictPath(path) {
25
+ return path.replace(/[`\r\n]/g, '?');
26
+ }
27
+ /**
28
+ * Format a merge conflict notification destined for the leader inbox.
29
+ * Pure: same input → same output.
30
+ */
31
+ export function formatMergeConflictForLeader(args) {
32
+ const { workerName, workerBranch, leaderBranch, conflictingFiles, mergeBaseSha, observedAt } = args;
33
+ const ts = new Date(observedAt).toISOString();
34
+ const safeFiles = conflictingFiles.map(sanitizeConflictPath);
35
+ const fileList = safeFiles.map((f) => `- \`${f}\``).join('\n');
36
+ return `### Merge conflict: ${workerName} → ${leaderBranch}
37
+
38
+ **Worker branch:** \`${workerBranch}\`
39
+ **Leader branch:** \`${leaderBranch}\`
40
+ **Merge base:** \`${mergeBaseSha}\`
41
+ **Observed at:** ${ts}
42
+
43
+ **Conflicting files:**
44
+ ${fileList}
45
+
46
+ **Leader: choose strategy.** To resolve, run:
47
+
48
+ \`\`\`sh
49
+ git checkout ${leaderBranch} && git merge --no-ff ${workerBranch}
50
+ # resolve conflicts in the files listed above
51
+ git add ${safeFiles.join(' ')}
52
+ git commit
53
+ \`\`\`
54
+
55
+ Or abort with \`git merge --abort\` to defer resolution.`;
56
+ }
57
+ /**
58
+ * Format a rebase conflict notification destined for a worker inbox.
59
+ * Pure: same input → same output.
60
+ */
61
+ export function formatRebaseConflictForWorker(args) {
62
+ const { workerName, workerBranch, leaderBranch, conflictingFiles, baseSha, worktreePath, observedAt } = args;
63
+ const ts = new Date(observedAt).toISOString();
64
+ const safeFiles = conflictingFiles.map(sanitizeConflictPath);
65
+ const fileList = safeFiles.map((f) => `- \`${f}\``).join('\n');
66
+ return `### Rebase conflict: ${workerName} onto ${leaderBranch}
67
+
68
+ **Worker branch:** \`${workerBranch}\`
69
+ **Base branch:** \`${leaderBranch}\`
70
+ **Base SHA:** \`${baseSha}\`
71
+ **Worktree:** \`${worktreePath}\`
72
+ **Observed at:** ${ts}
73
+
74
+ **Conflicting files:**
75
+ ${fileList}
76
+
77
+ Resolve conflicts in your own pane, then \`git add <files>\` and \`git rebase --continue\`.
78
+ Cadence stays paused until \`.git/rebase-merge\` is gone.
79
+
80
+ Or run \`git rebase --abort\` to bail and return to the pre-rebase state.`;
81
+ }
82
+ /**
83
+ * Deliver a merge conflict message to the leader inbox.
84
+ * Delegates to leader-inbox.appendToLeaderInbox.
85
+ */
86
+ export async function deliverMergeConflictToLeader(args) {
87
+ const { teamName, cwd, message } = args;
88
+ await appendToLeaderInbox(teamName, message, cwd);
89
+ }
90
+ /**
91
+ * Deliver a rebase conflict message to a worker inbox.
92
+ * Delegates to worker-bootstrap.appendToInbox.
93
+ */
94
+ export async function deliverRebaseConflictToWorker(args) {
95
+ const { teamName, workerName, cwd, message } = args;
96
+ await appendToInbox(teamName, workerName, message, cwd);
97
+ }
98
+ //# sourceMappingURL=conflict-mailbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conflict-mailbox.js","sourceRoot":"","sources":["../../src/team/conflict-mailbox.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,EAAE;AACF,sFAAsF;AACtF,EAAE;AACF,6FAA6F;AAC7F,wFAAwF;AACxF,+EAA+E;AAC/E,EAAE;AACF,0FAA0F;AAC1F,mFAAmF;AAEnF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;;;;;;GAOG;AACH,SAAS,oBAAoB,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AACvC,CAAC;AAqBD;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAAuB;IAClE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IACpG,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,OAAO,uBAAuB,UAAU,MAAM,YAAY;;uBAErC,YAAY;uBACZ,YAAY;oBACf,YAAY;mBACb,EAAE;;;EAGnB,QAAQ;;;;;eAKK,YAAY,yBAAyB,YAAY;;UAEtD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;;;;yDAI4B,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAAC,IAAwB;IACpE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAC7G,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,OAAO,wBAAwB,UAAU,SAAS,YAAY;;uBAEzC,YAAY;qBACd,YAAY;kBACf,OAAO;kBACP,YAAY;mBACX,EAAE;;;EAGnB,QAAQ;;;;;0EAKgE,CAAC;AAC3E,CAAC;AAmBD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,IAA8B;IAC/E,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACxC,MAAM,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,IAA+B;IACjF,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACpD,MAAM,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Returns the absolute path to the leader inbox file. Pure function.
3
+ * Uses sanitizeName to normalise teamName (prevents traversal characters).
4
+ */
5
+ export declare function leaderInboxPath(teamName: string, cwd: string): string;
6
+ /**
7
+ * Ensures the leader inbox directory and seed file exist.
8
+ * Creates .omcp/state/team/{team}/leader/ and seeds inbox.md with a header banner.
9
+ * Returns the absolute path to inbox.md.
10
+ * Idempotent: safe to call multiple times.
11
+ * Validates path is within cwd to prevent traversal.
12
+ */
13
+ export declare function ensureLeaderInbox(teamName: string, cwd: string): Promise<string>;
14
+ /**
15
+ * Append a message to the leader inbox.
16
+ * Mirrors appendToInbox for workers: appends `\n\n---\n${message}` to the inbox file.
17
+ * Validates path is within cwd to prevent traversal.
18
+ */
19
+ export declare function appendToLeaderInbox(teamName: string, message: string, cwd: string): Promise<void>;
20
+ /**
21
+ * Returns a one-line directive to append to the leader pane's spawn prompt,
22
+ * telling the leader where to find runtime notifications.
23
+ * Pure function. Returns a workspace-relative path (no `cwd` parameter — the
24
+ * directive is consumed by the leader process which interprets the path
25
+ * relative to its own working directory).
26
+ */
27
+ export declare function extendLeaderBootstrapPrompt(teamName: string): string;
28
+ //# sourceMappingURL=leader-inbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leader-inbox.d.ts","sourceRoot":"","sources":["../../src/team/leader-inbox.ts"],"names":[],"mappings":"AAuBA;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQtF;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKvG;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIpE"}
@@ -0,0 +1,68 @@
1
+ // src/team/leader-inbox.ts
2
+ //
3
+ // Bootstraps and writes to the leader's markdown inbox, mirroring the worker
4
+ // appendToInbox pattern from worker-bootstrap.ts:268.
5
+ //
6
+ // Leader inbox path: .omcp/state/team/{sanitizedTeam}/leader/inbox.md
7
+ // This resolves C1: leader notifications arrive via file, not tmux send-keys.
8
+ // DO NOT register the leader as a member of the team registry (Option C, rejected).
9
+ import { appendFile, mkdir, writeFile } from 'fs/promises';
10
+ import { existsSync } from 'fs';
11
+ import { dirname, join } from 'path';
12
+ import { sanitizeName } from './tmux-session.js';
13
+ import { validateResolvedPath } from './fs-utils.js';
14
+ const LEADER_INBOX_HEADER = `# Leader Inbox
15
+
16
+ Runtime notifications (merge conflicts, rebase events, etc.) appear here.
17
+ Check this file periodically and after long-running operations.
18
+
19
+ ---
20
+ `;
21
+ /**
22
+ * Returns the absolute path to the leader inbox file. Pure function.
23
+ * Uses sanitizeName to normalise teamName (prevents traversal characters).
24
+ */
25
+ export function leaderInboxPath(teamName, cwd) {
26
+ const safe = sanitizeName(teamName);
27
+ return join(cwd, `.omcp/state/team/${safe}/leader/inbox.md`);
28
+ }
29
+ /**
30
+ * Ensures the leader inbox directory and seed file exist.
31
+ * Creates .omcp/state/team/{team}/leader/ and seeds inbox.md with a header banner.
32
+ * Returns the absolute path to inbox.md.
33
+ * Idempotent: safe to call multiple times.
34
+ * Validates path is within cwd to prevent traversal.
35
+ */
36
+ export async function ensureLeaderInbox(teamName, cwd) {
37
+ const inboxPath = leaderInboxPath(teamName, cwd);
38
+ validateResolvedPath(inboxPath, cwd);
39
+ await mkdir(dirname(inboxPath), { recursive: true });
40
+ if (!existsSync(inboxPath)) {
41
+ await writeFile(inboxPath, LEADER_INBOX_HEADER, 'utf-8');
42
+ }
43
+ return inboxPath;
44
+ }
45
+ /**
46
+ * Append a message to the leader inbox.
47
+ * Mirrors appendToInbox for workers: appends `\n\n---\n${message}` to the inbox file.
48
+ * Validates path is within cwd to prevent traversal.
49
+ */
50
+ export async function appendToLeaderInbox(teamName, message, cwd) {
51
+ const inboxPath = leaderInboxPath(teamName, cwd);
52
+ validateResolvedPath(inboxPath, cwd);
53
+ await mkdir(dirname(inboxPath), { recursive: true });
54
+ await appendFile(inboxPath, `\n\n---\n${message}`, 'utf-8');
55
+ }
56
+ /**
57
+ * Returns a one-line directive to append to the leader pane's spawn prompt,
58
+ * telling the leader where to find runtime notifications.
59
+ * Pure function. Returns a workspace-relative path (no `cwd` parameter — the
60
+ * directive is consumed by the leader process which interprets the path
61
+ * relative to its own working directory).
62
+ */
63
+ export function extendLeaderBootstrapPrompt(teamName) {
64
+ const safe = sanitizeName(teamName);
65
+ const path = `.omcp/state/team/${safe}/leader/inbox.md`;
66
+ return `Runtime notifications appear at ${path} — check this file periodically and after long-running operations.`;
67
+ }
68
+ //# sourceMappingURL=leader-inbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leader-inbox.js","sourceRoot":"","sources":["../../src/team/leader-inbox.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,EAAE;AACF,6EAA6E;AAC7E,sDAAsD;AACtD,EAAE;AACF,sEAAsE;AACtE,8EAA8E;AAC9E,oFAAoF;AAEpF,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,mBAAmB,GAAG;;;;;;CAM3B,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,GAAW;IAC3D,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC,GAAG,EAAE,oBAAoB,IAAI,kBAAkB,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAgB,EAAE,GAAW;IACnE,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACjD,oBAAoB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACrC,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,SAAS,CAAC,SAAS,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,QAAgB,EAAE,OAAe,EAAE,GAAW;IACtF,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACjD,oBAAoB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACrC,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,MAAM,UAAU,CAAC,SAAS,EAAE,YAAY,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CAAC,QAAgB;IAC1D,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,oBAAoB,IAAI,kBAAkB,CAAC;IACxD,OAAO,mCAAmC,IAAI,oEAAoE,CAAC;AACrH,CAAC"}
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Validate branch name to prevent flag injection in git commands.
3
+ * Exported so other modules (e.g. merge-orchestrator) can guard branch names
4
+ * before passing them to `git fetch/reset/rebase/rev-parse`.
5
+ */
6
+ export declare function validateBranchName(branch: string): void;
1
7
  export interface MergeResult {
2
8
  workerName: string;
3
9
  branch: string;
@@ -1 +1 @@
1
- {"version":3,"file":"merge-coordinator.d.ts","sourceRoot":"","sources":["../../src/team/merge-coordinator.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,MAAM,EAAE,CAoDV;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,WAAW,CAuDb;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,WAAW,EAAE,CAsBf"}
1
+ {"version":3,"file":"merge-coordinator.d.ts","sourceRoot":"","sources":["../../src/team/merge-coordinator.ts"],"names":[],"mappings":"AAeA;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAIvD;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,MAAM,EAAE,CAoDV;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,WAAW,CAuDb;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,WAAW,EAAE,CAsBf"}
@@ -9,8 +9,12 @@
9
9
  import { execFileSync } from 'node:child_process';
10
10
  import { listTeamWorktrees } from './git-worktree.js';
11
11
  const BRANCH_NAME_RE = /^[a-zA-Z0-9][a-zA-Z0-9/_.-]*$/;
12
- /** Validate branch name to prevent flag injection in git commands */
13
- function validateBranchName(branch) {
12
+ /**
13
+ * Validate branch name to prevent flag injection in git commands.
14
+ * Exported so other modules (e.g. merge-orchestrator) can guard branch names
15
+ * before passing them to `git fetch/reset/rebase/rev-parse`.
16
+ */
17
+ export function validateBranchName(branch) {
14
18
  if (!BRANCH_NAME_RE.test(branch)) {
15
19
  throw new Error(`Invalid branch name: "${branch}" — must match ${BRANCH_NAME_RE}`);
16
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"merge-coordinator.js","sourceRoot":"","sources":["../../src/team/merge-coordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merge-coordinator.js","sourceRoot":"","sources":["../../src/team/merge-coordinator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ export interface OrchestratorConfig {
2
+ teamName: string;
3
+ repoRoot: string;
4
+ leaderBranch: string;
5
+ cwd: string;
6
+ /** Polling interval for both the commit watcher and rebase resolver. Defaults to 1000ms. */
7
+ pollIntervalMs?: number;
8
+ /** Bound on `drainAndStop`. Defaults to 10000ms. */
9
+ drainTimeoutMs?: number;
10
+ }
11
+ export interface OrchestratorHandle {
12
+ /** Seed lastSha from the current branch HEAD (no fan-out on first observation). */
13
+ registerWorker(workerName: string): Promise<void>;
14
+ /** Stop tracking a worker. Idempotent. */
15
+ unregisterWorker(workerName: string): Promise<void>;
16
+ /**
17
+ * Run a final merge sweep for every worker whose lastSha is newer than what
18
+ * has been merged, then stop polling. Bounded by drainTimeoutMs.
19
+ */
20
+ drainAndStop(): Promise<{
21
+ unmerged: Array<{
22
+ workerName: string;
23
+ reason: string;
24
+ }>;
25
+ }>;
26
+ /** Run one poll cycle immediately (testing / debugging). */
27
+ pollOnce(): Promise<void>;
28
+ /** Inspect in-memory state (testing / debugging). */
29
+ getState(): {
30
+ workers: string[];
31
+ lastShas: Record<string, string>;
32
+ mergerWorktreePath: string;
33
+ };
34
+ }
35
+ export type OrchestratorEventType = 'commit_observed' | 'merge_attempted' | 'merge_succeeded' | 'merge_conflict' | 'rebase_triggered' | 'rebase_skipped_in_progress' | 'rebase_succeeded' | 'rebase_conflict' | 'rebase_resolved' | 'restart_recovery';
36
+ export declare function startMergeOrchestrator(config: OrchestratorConfig): Promise<OrchestratorHandle>;
37
+ export declare function recoverFromRestart(config: OrchestratorConfig): Promise<{
38
+ orphanedRebases: string[];
39
+ persistedShasLoaded: number;
40
+ }>;
41
+ //# sourceMappingURL=merge-orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-orchestrator.d.ts","sourceRoot":"","sources":["../../src/team/merge-orchestrator.ts"],"names":[],"mappings":"AAiFA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,4FAA4F;IAC5F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,mFAAmF;IACnF,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,0CAA0C;IAC1C,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD;;;OAGG;IACH,YAAY,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,KAAK,CAAC;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IACrF,4DAA4D;IAC5D,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,qDAAqD;IACrD,QAAQ,IAAI;QACV,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAuFD,MAAM,MAAM,qBAAqB,GAC7B,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,GACjB,gBAAgB,GAChB,kBAAkB,GAClB,4BAA4B,GAC5B,kBAAkB,GAClB,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,CAAC;AAwIvB,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,kBAAkB,CAAC,CA2e7B;AAMD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC;IAAE,eAAe,EAAE,MAAM,EAAE,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;CAAE,CAAC,CAyDrE"}