maestro-flow 0.3.2 → 0.3.4

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 (187) hide show
  1. package/.claude/CLAUDE.md +2 -2
  2. package/.claude/agents/cli-explore-agent.md +1 -1
  3. package/.claude/agents/team-worker.md +237 -237
  4. package/.claude/commands/maestro-coordinate.md +65 -65
  5. package/.claude/commands/maestro-link-coordinate.md +71 -71
  6. package/.claude/commands/manage-issue-execute.md +73 -73
  7. package/.claude/commands/quality-business-test.md +110 -0
  8. package/.claude/skills/team-coordinate/SKILL.md +266 -266
  9. package/.claude/skills/team-lifecycle-v4/SKILL.md +209 -209
  10. package/.claude/skills/team-lifecycle-v4/roles/analyst/role.md +94 -94
  11. package/.claude/skills/team-lifecycle-v4/roles/executor/commands/implement.md +62 -62
  12. package/.claude/skills/team-lifecycle-v4/roles/planner/role.md +85 -85
  13. package/.claude/skills/team-lifecycle-v4/roles/writer/role.md +95 -95
  14. package/.claude/skills/team-quality-assurance/SKILL.md +147 -147
  15. package/.claude/skills/team-quality-assurance/roles/scout/role.md +75 -75
  16. package/.claude/skills/team-review/SKILL.md +147 -147
  17. package/.claude/skills/team-review/roles/reviewer/role.md +68 -68
  18. package/.claude/skills/team-review/roles/scanner/role.md +79 -79
  19. package/.claude/skills/team-tech-debt/SKILL.md +128 -128
  20. package/.claude/skills/team-tech-debt/roles/executor/role.md +76 -76
  21. package/.claude/skills/team-tech-debt/roles/scanner/role.md +90 -90
  22. package/.claude/skills/team-tech-debt/roles/validator/role.md +78 -78
  23. package/.claude/skills/team-testing/SKILL.md +143 -143
  24. package/.claude/skills/team-testing/roles/executor/role.md +99 -99
  25. package/.claude/skills/team-testing/roles/generator/role.md +98 -98
  26. package/.codex/skills/maestro-coordinate/SKILL.md +1 -1
  27. package/.codex/skills/manage-issue-analyze/SKILL.md +3 -3
  28. package/.codex/skills/manage-issue-execute/SKILL.md +4 -4
  29. package/.codex/skills/manage-issue-plan/SKILL.md +2 -2
  30. package/.codex/skills/quality-business-test/SKILL.md +223 -0
  31. package/.codex/skills/team-coordinate/SKILL.md +7 -7
  32. package/.codex/skills/team-coordinate/roles/coordinator/role.md +1 -1
  33. package/.codex/skills/team-lifecycle-v4/SKILL.md +2 -2
  34. package/.codex/skills/team-lifecycle-v4/instructions/agent-instruction.md +2 -2
  35. package/.codex/skills/team-lifecycle-v4/roles/analyst/role.md +2 -2
  36. package/.codex/skills/team-lifecycle-v4/roles/coordinator/role.md +2 -2
  37. package/.codex/skills/team-lifecycle-v4/roles/executor/commands/implement.md +1 -1
  38. package/.codex/skills/team-lifecycle-v4/roles/planner/role.md +2 -2
  39. package/.codex/skills/team-lifecycle-v4/roles/writer/role.md +1 -1
  40. package/.codex/skills/team-quality-assurance/SKILL.md +2 -2
  41. package/.codex/skills/team-quality-assurance/roles/coordinator/role.md +2 -2
  42. package/.codex/skills/team-quality-assurance/roles/scout/role.md +2 -2
  43. package/.codex/skills/team-review/SKILL.md +2 -2
  44. package/.codex/skills/team-review/roles/coordinator/role.md +2 -2
  45. package/.codex/skills/team-review/roles/reviewer/role.md +1 -1
  46. package/.codex/skills/team-review/roles/scanner/role.md +1 -1
  47. package/.codex/skills/team-tech-debt/SKILL.md +2 -2
  48. package/.codex/skills/team-tech-debt/roles/coordinator/role.md +1 -1
  49. package/.codex/skills/team-tech-debt/roles/executor/role.md +1 -1
  50. package/.codex/skills/team-tech-debt/roles/scanner/role.md +1 -1
  51. package/.codex/skills/team-tech-debt/roles/validator/role.md +1 -1
  52. package/.codex/skills/team-testing/SKILL.md +2 -2
  53. package/.codex/skills/team-testing/roles/coordinator/role.md +2 -2
  54. package/.codex/skills/team-testing/roles/executor/role.md +1 -1
  55. package/.codex/skills/team-testing/roles/generator/role.md +1 -1
  56. package/README.md +31 -2
  57. package/README.zh-CN.md +23 -1
  58. package/chains/_intent-map.json +6 -0
  59. package/chains/_router.json +14 -0
  60. package/chains/full-lifecycle.json +15 -0
  61. package/chains/quality-loop.json +16 -1
  62. package/chains/singles/business-test.json +26 -0
  63. package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js +16 -2
  64. package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js.map +1 -1
  65. package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.d.ts +1 -1
  66. package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js +25 -9
  67. package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js.map +1 -1
  68. package/dashboard/dist-server/src/agents/cli-agent-runner.d.ts +3 -0
  69. package/dashboard/dist-server/src/agents/cli-agent-runner.js +78 -61
  70. package/dashboard/dist-server/src/agents/cli-agent-runner.js.map +1 -1
  71. package/dashboard/dist-server/src/agents/cli-history-store.d.ts +14 -1
  72. package/dashboard/dist-server/src/agents/cli-history-store.js +24 -2
  73. package/dashboard/dist-server/src/agents/cli-history-store.js.map +1 -1
  74. package/dashboard/dist-server/src/commands/delegate.js +142 -6
  75. package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
  76. package/dist/src/agents/cli-agent-runner.d.ts +3 -0
  77. package/dist/src/agents/cli-agent-runner.d.ts.map +1 -1
  78. package/dist/src/agents/cli-agent-runner.js +78 -61
  79. package/dist/src/agents/cli-agent-runner.js.map +1 -1
  80. package/dist/src/agents/cli-history-store.d.ts +14 -1
  81. package/dist/src/agents/cli-history-store.d.ts.map +1 -1
  82. package/dist/src/agents/cli-history-store.js +24 -2
  83. package/dist/src/agents/cli-history-store.js.map +1 -1
  84. package/dist/src/commands/delegate.d.ts.map +1 -1
  85. package/dist/src/commands/delegate.js +142 -6
  86. package/dist/src/commands/delegate.js.map +1 -1
  87. package/dist/src/commands/hooks.d.ts +15 -0
  88. package/dist/src/commands/hooks.d.ts.map +1 -1
  89. package/dist/src/commands/hooks.js +29 -2
  90. package/dist/src/commands/hooks.js.map +1 -1
  91. package/dist/src/commands/install-backend.d.ts +15 -0
  92. package/dist/src/commands/install-backend.d.ts.map +1 -1
  93. package/dist/src/commands/install-backend.js +67 -0
  94. package/dist/src/commands/install-backend.js.map +1 -1
  95. package/dist/src/commands/install-ui/BackupConfig.d.ts +6 -4
  96. package/dist/src/commands/install-ui/BackupConfig.d.ts.map +1 -1
  97. package/dist/src/commands/install-ui/BackupConfig.js +39 -12
  98. package/dist/src/commands/install-ui/BackupConfig.js.map +1 -1
  99. package/dist/src/commands/install-ui/ConfigPanel.d.ts.map +1 -1
  100. package/dist/src/commands/install-ui/ConfigPanel.js +1 -1
  101. package/dist/src/commands/install-ui/ConfigPanel.js.map +1 -1
  102. package/dist/src/commands/install-ui/InstallConfirm.d.ts +3 -0
  103. package/dist/src/commands/install-ui/InstallConfirm.d.ts.map +1 -1
  104. package/dist/src/commands/install-ui/InstallConfirm.js +5 -1
  105. package/dist/src/commands/install-ui/InstallConfirm.js.map +1 -1
  106. package/dist/src/commands/install-ui/InstallExecution.d.ts +2 -0
  107. package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
  108. package/dist/src/commands/install-ui/InstallExecution.js +30 -5
  109. package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
  110. package/dist/src/commands/install-ui/InstallFlow.d.ts +1 -1
  111. package/dist/src/commands/install-ui/InstallFlow.d.ts.map +1 -1
  112. package/dist/src/commands/install-ui/InstallFlow.js +31 -6
  113. package/dist/src/commands/install-ui/InstallFlow.js.map +1 -1
  114. package/dist/src/commands/install-ui/InstallHub.d.ts +5 -0
  115. package/dist/src/commands/install-ui/InstallHub.d.ts.map +1 -1
  116. package/dist/src/commands/install-ui/InstallHub.js +24 -0
  117. package/dist/src/commands/install-ui/InstallHub.js.map +1 -1
  118. package/dist/src/commands/install-ui/InstallResult.d.ts.map +1 -1
  119. package/dist/src/commands/install-ui/InstallResult.js +1 -1
  120. package/dist/src/commands/install-ui/InstallResult.js.map +1 -1
  121. package/dist/src/commands/install-ui/StatuslineConfig.d.ts +9 -0
  122. package/dist/src/commands/install-ui/StatuslineConfig.d.ts.map +1 -0
  123. package/dist/src/commands/install-ui/StatuslineConfig.js +13 -0
  124. package/dist/src/commands/install-ui/StatuslineConfig.js.map +1 -0
  125. package/dist/src/commands/install-ui/index.d.ts +1 -1
  126. package/dist/src/commands/install-ui/index.d.ts.map +1 -1
  127. package/dist/src/commands/install-ui/types.d.ts +6 -0
  128. package/dist/src/commands/install-ui/types.d.ts.map +1 -1
  129. package/dist/src/commands/install-ui/types.js +3 -0
  130. package/dist/src/commands/install-ui/types.js.map +1 -1
  131. package/dist/src/commands/install.d.ts.map +1 -1
  132. package/dist/src/commands/install.js +6 -1
  133. package/dist/src/commands/install.js.map +1 -1
  134. package/dist/src/commands/overlay.d.ts.map +1 -1
  135. package/dist/src/commands/overlay.js +45 -1
  136. package/dist/src/commands/overlay.js.map +1 -1
  137. package/dist/src/commands/team.d.ts +10 -0
  138. package/dist/src/commands/team.d.ts.map +1 -1
  139. package/dist/src/commands/team.js +436 -42
  140. package/dist/src/commands/team.js.map +1 -1
  141. package/dist/src/core/manifest.d.ts.map +1 -1
  142. package/dist/src/core/manifest.js +58 -0
  143. package/dist/src/core/manifest.js.map +1 -1
  144. package/dist/src/core/overlay/applier.d.ts +4 -0
  145. package/dist/src/core/overlay/applier.d.ts.map +1 -1
  146. package/dist/src/core/overlay/applier.js.map +1 -1
  147. package/dist/src/hooks/delegate-monitor.js +1 -1
  148. package/dist/src/hooks/delegate-monitor.js.map +1 -1
  149. package/dist/src/hooks/plugins/spec-injection-plugin.d.ts.map +1 -1
  150. package/dist/src/hooks/plugins/spec-injection-plugin.js +17 -1
  151. package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
  152. package/dist/src/hooks/spec-injector.d.ts +2 -1
  153. package/dist/src/hooks/spec-injector.d.ts.map +1 -1
  154. package/dist/src/hooks/spec-injector.js +19 -2
  155. package/dist/src/hooks/spec-injector.js.map +1 -1
  156. package/dist/src/hooks/team-monitor.d.ts.map +1 -1
  157. package/dist/src/hooks/team-monitor.js +17 -0
  158. package/dist/src/hooks/team-monitor.js.map +1 -1
  159. package/dist/src/i18n/locales/en.d.ts.map +1 -1
  160. package/dist/src/i18n/locales/en.js +25 -1
  161. package/dist/src/i18n/locales/en.js.map +1 -1
  162. package/dist/src/i18n/locales/zh.d.ts.map +1 -1
  163. package/dist/src/i18n/locales/zh.js +25 -1
  164. package/dist/src/i18n/locales/zh.js.map +1 -1
  165. package/dist/src/i18n/types.d.ts +22 -0
  166. package/dist/src/i18n/types.d.ts.map +1 -1
  167. package/dist/src/mcp/delegate-channel-relay.d.ts.map +1 -1
  168. package/dist/src/mcp/delegate-channel-relay.js +9 -9
  169. package/dist/src/mcp/delegate-channel-relay.js.map +1 -1
  170. package/dist/src/tools/index.d.ts.map +1 -1
  171. package/dist/src/tools/index.js +11 -2
  172. package/dist/src/tools/index.js.map +1 -1
  173. package/dist/src/tools/namespace-guard.d.ts +37 -0
  174. package/dist/src/tools/namespace-guard.d.ts.map +1 -0
  175. package/dist/src/tools/namespace-guard.js +126 -0
  176. package/dist/src/tools/namespace-guard.js.map +1 -0
  177. package/dist/src/tools/spec-loader.d.ts +17 -1
  178. package/dist/src/tools/spec-loader.d.ts.map +1 -1
  179. package/dist/src/tools/spec-loader.js +71 -13
  180. package/dist/src/tools/spec-loader.js.map +1 -1
  181. package/dist/src/tools/team-members.d.ts +16 -0
  182. package/dist/src/tools/team-members.d.ts.map +1 -1
  183. package/dist/src/tools/team-members.js +31 -0
  184. package/dist/src/tools/team-members.js.map +1 -1
  185. package/package.json +2 -2
  186. package/templates/business-test-report.json +68 -0
  187. package/workflows/delegate-usage.md +330 -0
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../../src/commands/overlay.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,+CAA+C;AAC/C,EAAE;AACF,eAAe;AACf,qEAAqE;AACrE,gFAAgF;AAChF,2EAA2E;AAC3E,oEAAoE;AACpE,oEAAoE;AACpE,0EAA0E;AAC1E,wEAAwE;AACxE,2EAA2E;AAC3E,8EAA8E;AAG9E,OAAO,EACL,UAAU,EACV,UAAU,EACV,WAAW,GACZ,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,YAAY,GAEb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAW1E,+EAA+E;AAC/E,SAAS,cAAc;IACrB,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QACnE,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI,UAAU,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,6EAA6E;IAC7E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAC1D,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACtC,CAAC;AAED,8EAA8E;AAC9E,mCAAmC;AACnC,8EAA8E;AAE9E,KAAK,UAAU,OAAO,CAAC,WAAoB;IACzC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACnE,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;AACtC,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,SAAS,QAAQ;IACf,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAEtB,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACvE,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,aAAa,CAAC;YAC3B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,OAAO,CAAC,KAAK,CACX,YAAY,MAAM,CAAC,cAAc,YAAY,MAAM,CAAC,eAAe,GAAG;YACpE,WAAW,MAAM,CAAC,YAAY,cAAc,MAAM,CAAC,cAAc,EAAE,CACtE,CAAC;QACF,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC/B,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,SAAS,MAAM,CAAC,IAAY;IAC1B,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,WAAW;YAAE,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC/D,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,gBAAgB,EAAE,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClD,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM;gBAAE,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,QAAQ,EAAE,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,SAAS,SAAS,CAAC,IAAY,EAAE,IAAsB;IACrD,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IAEzB,gCAAgC;IAChC,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,wBAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;QAClE,YAAY,IAAI,GAAG,CAAC,YAAY,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,yBAAyB,YAAY,WAAW,CAAC,CAAC;IAEhE,2CAA2C;IAC3C,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,SAAS;YACvC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;gBAChC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBAC/B,UAAU,CAAC,EAAE,CAAC,CAAC;oBACf,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;QACH,CAAC;QACD,IAAI,OAAO,GAAG,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,WAAW,OAAO,mBAAmB,CAAC,CAAC;IACxE,CAAC;IAED,2DAA2D;IAC3D,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,qBAAqB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,SAAS,SAAS,CAAC,IAAwC;IACzD,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,sBAAsB,CAAC,CAAC;IAC3E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,eAAe,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,eAAe,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,eAAe,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,WAAW,mBAAmB,CAAC,CAAC;QAClE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC;YACzD,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,QAAQ,EAAE,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,OAAO,GAAG,OAAO;SACpB,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,qEAAqE,CAAC,CAAC;IAEtF,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,sEAAsE,CAAC;SACnF,MAAM,CAAC,kBAAkB,EAAE,yCAAyC,CAAC;SACrE,MAAM,CAAC,CAAC,IAA+B,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC;IAEpF,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,0DAA0D,CAAC;SACvE,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE5B,OAAO;SACJ,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1C,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1C,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,qDAAqD,CAAC;SAClE,MAAM,CAAC,kBAAkB,EAAE,mDAAmD,CAAC;SAC/E,MAAM,CAAC,CAAC,IAAY,EAAE,IAAsB,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAE3E,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,mDAAmD,CAAC;SAChE,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAE7C,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oEAAoE,CAAC;SACjF,MAAM,CAAC,kBAAkB,EAAE,+CAA+C,CAAC;SAC3E,MAAM,CAAC,wBAAwB,EAAE,uCAAuC,CAAC;SACzE,MAAM,CAAC,CAAC,IAAwC,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAEzE,OAAO;SACJ,OAAO,CAAC,sBAAsB,CAAC;SAC/B,WAAW,CAAC,+DAA+D,CAAC;SAC5E,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../../src/commands/overlay.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,16 @@
1
1
  import type { Command } from 'commander';
2
2
  import { type MemberRecord } from '../tools/team-members.js';
3
3
  import { type ActivityEvent } from '../tools/team-activity.js';
4
+ /**
5
+ * Scan `.workflow/collab/overlays/` for bundle files from other team members,
6
+ * import bundles that are newer than previously imported, and update manifest.
7
+ *
8
+ * Returns counts of imported and skipped bundles.
9
+ */
10
+ export declare function syncOverlays(projectRoot: string, selfUid: string): {
11
+ imported: number;
12
+ skipped: number;
13
+ };
4
14
  export interface PreflightResult {
5
15
  exitCode: 0 | 1 | 2;
6
16
  warnings: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../../../src/commands/team.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,2BAA2B,CAAC;AAuVnC,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EACzB,IAAI,CAAC,EAAE;IACL,OAAO,CAAC,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC;IACpC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,EAAE,CAAC;IAChD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,GACA,eAAe,CAwDjB;AA+CD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgD1D"}
1
+ {"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../../../src/commands/team.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,2BAA2B,CAAC;AA6KnC;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAgFvC;AA2XD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACJ;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EACzB,IAAI,CAAC,EAAE;IACL,OAAO,CAAC,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC;IACpC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,EAAE,CAAC;IAChD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,GACA,eAAe,CAwDjB;AA+CD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsE1D"}
@@ -13,8 +13,15 @@
13
13
  // `.workflow/.team/` (that belongs to the agent pipeline, see team-msg.ts).
14
14
  // ---------------------------------------------------------------------------
15
15
  import { execSync } from 'node:child_process';
16
- import { joinTeam, resolveSelf, } from '../tools/team-members.js';
16
+ import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from 'node:fs';
17
+ import { join } from 'node:path';
18
+ import { joinTeam, resolveSelf, requireTeamMode, } from '../tools/team-members.js';
17
19
  import { reportActivity, readRecentActivity, rotateIfNeeded, } from '../tools/team-activity.js';
20
+ import { importBundle, } from '../core/overlay/applier.js';
21
+ import { paths } from '../config/paths.js';
22
+ import { getProjectRoot } from '../utils/path-validator.js';
23
+ import { CATEGORY_MAP, TEAM_SPECS_DIR } from '../tools/spec-loader.js';
24
+ import { getNamespaceBoundaries } from '../tools/namespace-guard.js';
18
25
  // ---------------------------------------------------------------------------
19
26
  // join
20
27
  // ---------------------------------------------------------------------------
@@ -152,6 +159,195 @@ function pad(s, width) {
152
159
  return s.slice(0, width);
153
160
  return s + ' '.repeat(width - s.length);
154
161
  }
162
+ /**
163
+ * Scan `.workflow/collab/overlays/` for bundle files from other team members,
164
+ * import bundles that are newer than previously imported, and update manifest.
165
+ *
166
+ * Returns counts of imported and skipped bundles.
167
+ */
168
+ export function syncOverlays(projectRoot, selfUid) {
169
+ const collabOverlaysDir = join(projectRoot, '.workflow', 'collab', 'overlays');
170
+ if (!existsSync(collabOverlaysDir)) {
171
+ return { imported: 0, skipped: 0 };
172
+ }
173
+ // Load sync manifest
174
+ const manifestPath = join(collabOverlaysDir, 'manifest.json');
175
+ let manifest = { imported: {} };
176
+ if (existsSync(manifestPath)) {
177
+ try {
178
+ manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
179
+ }
180
+ catch {
181
+ // Corrupted manifest — start fresh
182
+ manifest = { imported: {} };
183
+ }
184
+ }
185
+ const overlayDir = join(paths.home, 'overlays');
186
+ let imported = 0;
187
+ let skipped = 0;
188
+ // Scan for bundle files
189
+ let entries;
190
+ try {
191
+ entries = readdirSync(collabOverlaysDir);
192
+ }
193
+ catch {
194
+ return { imported: 0, skipped: 0 };
195
+ }
196
+ for (const entry of entries) {
197
+ if (!entry.endsWith('-bundle.json'))
198
+ continue;
199
+ const bundlePath = join(collabOverlaysDir, entry);
200
+ let bundle;
201
+ try {
202
+ bundle = JSON.parse(readFileSync(bundlePath, 'utf-8'));
203
+ }
204
+ catch {
205
+ skipped++;
206
+ continue;
207
+ }
208
+ // Skip own bundles
209
+ if (bundle.sourceMember === selfUid) {
210
+ skipped++;
211
+ continue;
212
+ }
213
+ // Skip bundles without team metadata
214
+ if (!bundle.sourceMember || !bundle.ts) {
215
+ skipped++;
216
+ continue;
217
+ }
218
+ // Check if we already imported this version
219
+ const lastImported = manifest.imported[bundle.sourceMember];
220
+ if (lastImported && lastImported >= bundle.ts) {
221
+ skipped++;
222
+ continue;
223
+ }
224
+ // Import the bundle
225
+ try {
226
+ importBundle(bundlePath, overlayDir);
227
+ manifest.imported[bundle.sourceMember] = bundle.ts;
228
+ imported++;
229
+ }
230
+ catch (err) {
231
+ const msg = err instanceof Error ? err.message : String(err);
232
+ console.error(` Warning: failed to import bundle from ${bundle.sourceMember}: ${msg}`);
233
+ skipped++;
234
+ }
235
+ }
236
+ // Save updated manifest
237
+ if (imported > 0) {
238
+ if (!existsSync(collabOverlaysDir))
239
+ mkdirSync(collabOverlaysDir, { recursive: true });
240
+ writeFileSync(manifestPath, JSON.stringify(manifest, null, 2), 'utf-8');
241
+ }
242
+ return { imported, skipped };
243
+ }
244
+ // ---------------------------------------------------------------------------
245
+ // sync -- fast-path detection
246
+ // ---------------------------------------------------------------------------
247
+ /**
248
+ * Attempt SHA-based fast-path detection. Runs git fetch origin, then
249
+ * compares local HEAD with upstream tracking ref to decide if the full
250
+ * stash/pull/push cycle can be shortened.
251
+ *
252
+ * Returns:
253
+ * 'skip' -- local and remote are identical; nothing to do.
254
+ * 'push-only' -- remote is ancestor of local; only push needed.
255
+ * 'pull-only' -- local is ancestor of remote; skip push step.
256
+ * null -- cannot determine; fall through to full sync.
257
+ *
258
+ * Any error falls through to full sync (returns null) so this never
259
+ * introduces new failure modes.
260
+ */
261
+ function tryFastPath(dry, say, self, dirty) {
262
+ try {
263
+ say('Fetching from origin...');
264
+ if (!dry) {
265
+ execSync('git fetch origin', { stdio: 'inherit' });
266
+ }
267
+ // Read local and upstream SHAs.
268
+ const localSha = execSync('git rev-parse HEAD', {
269
+ encoding: 'utf-8',
270
+ stdio: ['ignore', 'pipe', 'pipe'],
271
+ }).trim();
272
+ let remoteSha;
273
+ try {
274
+ remoteSha = execSync('git rev-parse @{u}', {
275
+ encoding: 'utf-8',
276
+ stdio: ['ignore', 'pipe', 'pipe'],
277
+ }).trim();
278
+ }
279
+ catch {
280
+ // No upstream tracking ref configured -- cannot fast-path.
281
+ say('No upstream tracking ref; falling through to full sync.');
282
+ return null;
283
+ }
284
+ // SKIP: identical SHAs.
285
+ if (localSha === remoteSha) {
286
+ if (dirty) {
287
+ say('Already up to date (working tree has uncommitted changes, nothing to sync).');
288
+ }
289
+ else {
290
+ say('Already up to date.');
291
+ }
292
+ reportActivity({
293
+ user: self.uid,
294
+ host: self.host,
295
+ action: 'sync-skip',
296
+ });
297
+ return 'skip';
298
+ }
299
+ if (dry) {
300
+ // In dry-run we cannot reliably run merge-base checks after a
301
+ // skipped fetch, but we can still show the SHA mismatch.
302
+ say(`Local HEAD ${localSha.slice(0, 8)} differs from upstream ${remoteSha.slice(0, 8)}.`);
303
+ // Fall through so the full dry-run plan is printed.
304
+ return null;
305
+ }
306
+ // PULL-ONLY: local is ancestor of remote (remote has new commits, local doesn't).
307
+ try {
308
+ execSync('git merge-base --is-ancestor HEAD @{u}', {
309
+ stdio: ['ignore', 'ignore', 'ignore'],
310
+ });
311
+ // Local is ancestor of remote -- only need to pull.
312
+ say('Local is behind upstream; skipping push.');
313
+ reportActivity({
314
+ user: self.uid,
315
+ host: self.host,
316
+ action: 'sync-pull-only',
317
+ });
318
+ return 'pull-only';
319
+ }
320
+ catch {
321
+ // Not an ancestor -- check the other direction.
322
+ }
323
+ // PUSH-ONLY: remote is ancestor of local (local has new commits, remote doesn't).
324
+ try {
325
+ execSync('git merge-base --is-ancestor @{u} HEAD', {
326
+ stdio: ['ignore', 'ignore', 'ignore'],
327
+ });
328
+ // Remote is ancestor of local -- only need to push.
329
+ say('Upstream is behind local; skipping pull.');
330
+ reportActivity({
331
+ user: self.uid,
332
+ host: self.host,
333
+ action: 'sync-push-only',
334
+ });
335
+ return 'push-only';
336
+ }
337
+ catch {
338
+ // Diverged -- need full sync.
339
+ }
340
+ // Diverged history -- full sync needed.
341
+ say('Local and upstream have diverged; running full sync.');
342
+ return null;
343
+ }
344
+ catch (err) {
345
+ // Any unexpected error: log and fall through to full sync.
346
+ const msg = err instanceof Error ? err.message : String(err);
347
+ console.error(`Warning: fast-path detection failed (${msg}); running full sync.`);
348
+ return null;
349
+ }
350
+ }
155
351
  // ---------------------------------------------------------------------------
156
352
  // sync
157
353
  // ---------------------------------------------------------------------------
@@ -168,9 +364,13 @@ function pad(s, width) {
168
364
  * 5 — detached HEAD
169
365
  */
170
366
  function runSync(opts) {
171
- const self = resolveSelf();
172
- if (!self) {
173
- console.error("Team mode not enabled. Run 'maestro team join' first.");
367
+ let self;
368
+ try {
369
+ self = requireTeamMode();
370
+ }
371
+ catch (err) {
372
+ const msg = err instanceof Error ? err.message : String(err);
373
+ console.error(`Error: ${msg}`);
174
374
  process.exit(1);
175
375
  return;
176
376
  }
@@ -202,6 +402,51 @@ function runSync(opts) {
202
402
  process.exit(2);
203
403
  return;
204
404
  }
405
+ // Fast path: fetch + SHA comparison to skip unnecessary steps.
406
+ const fastPath = tryFastPath(dry, say, self, dirty);
407
+ if (fastPath === 'skip') {
408
+ return;
409
+ }
410
+ if (fastPath === 'push-only') {
411
+ // Skip stash/pull, jump straight to push.
412
+ say('Pushing...');
413
+ if (!dry) {
414
+ const tryPush = () => {
415
+ try {
416
+ execSync('git push', { stdio: 'inherit' });
417
+ return true;
418
+ }
419
+ catch {
420
+ return false;
421
+ }
422
+ };
423
+ if (!tryPush()) {
424
+ console.error('Push rejected. Falling through to full sync...');
425
+ // Fall through below to full sync cycle.
426
+ }
427
+ else {
428
+ // Rotation check.
429
+ const archivePath = rotateIfNeeded(10 * 1024 * 1024);
430
+ if (archivePath) {
431
+ console.log(`Rotated activity.jsonl -> ${archivePath}`);
432
+ }
433
+ console.log('Sync complete (push-only fast path).');
434
+ return;
435
+ }
436
+ }
437
+ else {
438
+ say('Would check activity.jsonl rotation (10 MB threshold).');
439
+ console.log('[dry-run] Sync plan complete (push-only fast path).');
440
+ return;
441
+ }
442
+ }
443
+ if (fastPath === 'pull-only') {
444
+ // No local-only commits; skip push after pull.
445
+ // Still need stash/pull/pop, but can skip push.
446
+ // Fall through to full sync but mark that push can be skipped.
447
+ }
448
+ // Track whether push should be skipped (pull-only fast path).
449
+ const skipPush = fastPath === 'pull-only';
205
450
  let stashed = false;
206
451
  // Step 1: stash if dirty.
207
452
  if (dirty) {
@@ -245,47 +490,53 @@ function runSync(opts) {
245
490
  }
246
491
  }
247
492
  // Step 3: push (with one retry on non-fast-forward).
248
- say('Pushing...');
249
- if (!dry) {
250
- const tryPush = () => {
251
- try {
252
- execSync('git push', { stdio: 'inherit' });
253
- return true;
254
- }
255
- catch {
256
- return false;
257
- }
258
- };
259
- if (!tryPush()) {
260
- console.error('Push rejected. Retrying pull --rebase + push once...');
261
- try {
262
- execSync('git pull --rebase origin HEAD', { stdio: 'inherit' });
263
- }
264
- catch {
265
- console.error('Error: retry rebase failed.');
266
- if (stashed) {
267
- try {
268
- execSync('git stash pop', { stdio: 'inherit' });
269
- }
270
- catch {
271
- // Best-effort.
272
- }
493
+ // Skipped when pull-only fast path detected (local has no unique commits).
494
+ if (skipPush) {
495
+ say('Push skipped (pull-only fast path -- no local-only commits).');
496
+ }
497
+ else {
498
+ say('Pushing...');
499
+ if (!dry) {
500
+ const tryPush = () => {
501
+ try {
502
+ execSync('git push', { stdio: 'inherit' });
503
+ return true;
273
504
  }
274
- process.exit(3);
275
- return;
276
- }
505
+ catch {
506
+ return false;
507
+ }
508
+ };
277
509
  if (!tryPush()) {
278
- console.error('Error: push still rejected after retry.');
279
- if (stashed) {
280
- try {
281
- execSync('git stash pop', { stdio: 'inherit' });
510
+ console.error('Push rejected. Retrying pull --rebase + push once...');
511
+ try {
512
+ execSync('git pull --rebase origin HEAD', { stdio: 'inherit' });
513
+ }
514
+ catch {
515
+ console.error('Error: retry rebase failed.');
516
+ if (stashed) {
517
+ try {
518
+ execSync('git stash pop', { stdio: 'inherit' });
519
+ }
520
+ catch {
521
+ // Best-effort.
522
+ }
282
523
  }
283
- catch {
284
- // Best-effort.
524
+ process.exit(3);
525
+ return;
526
+ }
527
+ if (!tryPush()) {
528
+ console.error('Error: push still rejected after retry.');
529
+ if (stashed) {
530
+ try {
531
+ execSync('git stash pop', { stdio: 'inherit' });
532
+ }
533
+ catch {
534
+ // Best-effort.
535
+ }
285
536
  }
537
+ process.exit(3);
538
+ return;
286
539
  }
287
- process.exit(3);
288
- return;
289
540
  }
290
541
  }
291
542
  }
@@ -310,13 +561,33 @@ function runSync(opts) {
310
561
  if (!dry) {
311
562
  const archivePath = rotateIfNeeded(10 * 1024 * 1024);
312
563
  if (archivePath) {
313
- console.log(`Rotated activity.jsonl ${archivePath}`);
564
+ console.log(`Rotated activity.jsonl -> ${archivePath}`);
314
565
  }
315
566
  }
316
567
  else {
317
568
  say('Would check activity.jsonl rotation (10 MB threshold).');
318
569
  }
319
- console.log(dry ? '[dry-run] Sync plan complete.' : 'Sync complete.');
570
+ // Step 6: post-sync overlay import (when --with-overlays is set).
571
+ if (opts.withOverlays) {
572
+ say('Importing team overlay bundles...');
573
+ if (!dry) {
574
+ const result = syncOverlays(getProjectRoot(), self.uid);
575
+ if (result.imported > 0) {
576
+ console.log(`Imported ${result.imported} overlay bundle(s) from teammates.`);
577
+ }
578
+ if (result.skipped > 0) {
579
+ console.log(`Skipped ${result.skipped} overlay bundle(s) (own/unchanged/invalid).`);
580
+ }
581
+ if (result.imported === 0 && result.skipped === 0) {
582
+ console.log('No team overlay bundles found.');
583
+ }
584
+ }
585
+ else {
586
+ say('Would scan .workflow/collab/overlays/ for team bundles.');
587
+ }
588
+ }
589
+ const suffix = skipPush ? ' (pull-only fast path)' : '';
590
+ console.log(dry ? `[dry-run] Sync plan complete${suffix}.` : `Sync complete${suffix}.`);
320
591
  }
321
592
  // ---------------------------------------------------------------------------
322
593
  // preflight
@@ -459,6 +730,7 @@ export function registerTeamCommand(program) {
459
730
  .command('sync')
460
731
  .description('Sync with remote: git stash/pull --rebase/pop/push + log rotation')
461
732
  .option('--dry-run', 'Print the plan without executing any git command')
733
+ .option('--with-overlays', 'Import team overlay bundles after sync')
462
734
  .action((opts) => runSync(opts));
463
735
  team
464
736
  .command('preflight')
@@ -467,5 +739,127 @@ export function registerTeamCommand(program) {
467
739
  .option('--force', 'Print warnings but exit 0')
468
740
  .option('--json', 'Output conflicts as JSON')
469
741
  .action((opts) => runPreflightCli(opts));
742
+ team
743
+ .command('guard')
744
+ .description('Show namespace boundaries for the current team member')
745
+ .action(() => runGuard());
746
+ // spec subcommand group
747
+ const spec = team
748
+ .command('spec')
749
+ .description('Manage personal spec overrides');
750
+ spec
751
+ .command('list')
752
+ .description('List personal spec files')
753
+ .action(() => runSpecList());
754
+ spec
755
+ .command('edit')
756
+ .description('Create or edit a personal spec file')
757
+ .argument('<filename>', 'Spec filename (e.g. coding-conventions or coding-conventions.md)')
758
+ .action((filename) => runSpecEdit(filename));
759
+ }
760
+ // ---------------------------------------------------------------------------
761
+ // guard
762
+ // ---------------------------------------------------------------------------
763
+ function runGuard() {
764
+ const self = resolveSelf();
765
+ if (!self) {
766
+ console.error("Team mode not enabled. Run 'maestro team join' first.");
767
+ process.exit(1);
768
+ return;
769
+ }
770
+ const root = getProjectRoot();
771
+ const boundaries = getNamespaceBoundaries(self.uid, root);
772
+ console.log(`Namespace boundaries for ${self.uid}:`);
773
+ console.log('');
774
+ console.log('Writable paths (own namespace):');
775
+ for (const b of boundaries.filter((p) => !p.includes('activity.jsonl') && !p.endsWith('manifest.json'))) {
776
+ console.log(` ${b}`);
777
+ }
778
+ console.log('');
779
+ console.log('Shared writable paths:');
780
+ for (const b of boundaries.filter((p) => p.includes('activity.jsonl') || p.endsWith('manifest.json'))) {
781
+ console.log(` ${b}`);
782
+ }
783
+ console.log('');
784
+ console.log('Mode: advisory (warnings only, non-blocking)');
785
+ }
786
+ // ---------------------------------------------------------------------------
787
+ // spec list / spec edit
788
+ // ---------------------------------------------------------------------------
789
+ function runSpecList() {
790
+ const self = resolveSelf();
791
+ if (!self) {
792
+ console.error("Team mode not enabled. Run 'maestro team join' first.");
793
+ process.exit(1);
794
+ return;
795
+ }
796
+ const root = getProjectRoot();
797
+ const personalDir = join(root, TEAM_SPECS_DIR, self.uid);
798
+ if (!existsSync(personalDir)) {
799
+ console.log(`No personal specs found for ${self.uid}.`);
800
+ console.log(`Directory: ${personalDir}`);
801
+ console.log(`Run 'maestro team spec edit <filename>' to create one.`);
802
+ return;
803
+ }
804
+ let files;
805
+ try {
806
+ files = readdirSync(personalDir).filter(f => f.endsWith('.md'));
807
+ }
808
+ catch {
809
+ console.error(`Error: could not read ${personalDir}`);
810
+ process.exit(1);
811
+ return;
812
+ }
813
+ if (files.length === 0) {
814
+ console.log(`No personal spec files in ${personalDir}`);
815
+ return;
816
+ }
817
+ console.log(`Personal specs for ${self.uid} (${files.length} files):`);
818
+ console.log('');
819
+ for (const file of files.sort()) {
820
+ const cats = CATEGORY_MAP[file];
821
+ const catLabel = cats ? cats.join(', ') : 'general';
822
+ console.log(` ${file} (${catLabel})`);
823
+ }
824
+ }
825
+ function runSpecEdit(filename) {
826
+ const self = resolveSelf();
827
+ if (!self) {
828
+ console.error("Team mode not enabled. Run 'maestro team join' first.");
829
+ process.exit(1);
830
+ return;
831
+ }
832
+ // Ensure .md extension
833
+ const specFile = filename.endsWith('.md') ? filename : `${filename}.md`;
834
+ const root = getProjectRoot();
835
+ const personalDir = join(root, TEAM_SPECS_DIR, self.uid);
836
+ const filePath = join(personalDir, specFile);
837
+ // Create directory if needed
838
+ if (!existsSync(personalDir)) {
839
+ mkdirSync(personalDir, { recursive: true });
840
+ }
841
+ // Create file with template if it does not exist
842
+ if (!existsSync(filePath)) {
843
+ const cats = CATEGORY_MAP[specFile];
844
+ const catComment = cats ? cats.join(', ') : 'general';
845
+ writeFileSync(filePath, `# ${specFile.replace('.md', '')}\n\n<!-- categories: ${catComment} -->\n\n`, 'utf-8');
846
+ console.log(`Created: ${filePath}`);
847
+ }
848
+ else {
849
+ console.log(`Exists: ${filePath}`);
850
+ }
851
+ // Try to open with $EDITOR
852
+ const editor = process.env.EDITOR || process.env.VISUAL;
853
+ if (editor) {
854
+ try {
855
+ execSync(`${editor} "${filePath}"`, { stdio: 'inherit' });
856
+ }
857
+ catch {
858
+ console.log(`Open with your editor: ${filePath}`);
859
+ }
860
+ }
861
+ else {
862
+ console.log(`No $EDITOR set. Edit manually: ${filePath}`);
863
+ }
470
864
  }
471
865
  //# sourceMappingURL=team.js.map