maestro-flow 0.3.8 → 0.3.10

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 (312) hide show
  1. package/.claude/commands/learn-decompose.md +3 -3
  2. package/.claude/commands/learn-follow.md +5 -5
  3. package/.claude/commands/learn-investigate.md +3 -3
  4. package/.claude/commands/learn-retro.md +6 -6
  5. package/.claude/commands/learn-second-opinion.md +3 -3
  6. package/.claude/commands/maestro-analyze.md +166 -99
  7. package/.claude/commands/maestro-brainstorm.md +2 -2
  8. package/.claude/commands/maestro-execute.md +151 -97
  9. package/.claude/commands/maestro-fork.md +111 -0
  10. package/.claude/commands/maestro-init.md +6 -6
  11. package/.claude/commands/maestro-merge.md +77 -0
  12. package/.claude/commands/maestro-milestone-audit.md +72 -60
  13. package/.claude/commands/maestro-milestone-complete.md +67 -59
  14. package/.claude/commands/maestro-milestone-release.md +6 -6
  15. package/.claude/commands/maestro-plan.md +167 -130
  16. package/.claude/commands/maestro-quick.md +4 -4
  17. package/.claude/commands/maestro-roadmap.md +5 -5
  18. package/.claude/commands/maestro-spec-generate.md +5 -5
  19. package/.claude/commands/maestro-ui-design.md +3 -3
  20. package/.claude/commands/maestro-verify.md +106 -87
  21. package/.claude/commands/maestro.md +10 -4
  22. package/.claude/commands/manage-codebase-rebuild.md +4 -4
  23. package/.claude/commands/manage-codebase-refresh.md +1 -1
  24. package/.claude/commands/manage-harvest.md +6 -6
  25. package/.claude/commands/manage-issue-discover.md +2 -2
  26. package/.claude/commands/manage-issue.md +7 -7
  27. package/.claude/commands/manage-learn.md +2 -2
  28. package/.claude/commands/manage-memory-capture.md +4 -4
  29. package/.claude/commands/manage-memory.md +2 -2
  30. package/.claude/commands/manage-status.md +24 -24
  31. package/.claude/commands/quality-business-test.md +5 -5
  32. package/.claude/commands/quality-debug.md +4 -4
  33. package/.claude/commands/quality-integration-test.md +4 -4
  34. package/.claude/commands/quality-refactor.md +3 -3
  35. package/.claude/commands/quality-retrospective.md +2 -2
  36. package/.claude/commands/quality-review.md +4 -4
  37. package/.claude/commands/quality-sync.md +3 -3
  38. package/.claude/commands/quality-test-gen.md +4 -4
  39. package/.claude/commands/quality-test.md +9 -9
  40. package/.claude/commands/spec-add.md +2 -2
  41. package/.claude/commands/spec-load.md +1 -1
  42. package/.claude/commands/spec-setup.md +5 -5
  43. package/.claude/commands/wiki-connect.md +3 -3
  44. package/.claude/commands/wiki-digest.md +4 -4
  45. package/.codex/skills/maestro/SKILL.md +463 -0
  46. package/.codex/skills/maestro-analyze/SKILL.md +79 -20
  47. package/.codex/skills/maestro-chain/SKILL.md +248 -0
  48. package/.codex/skills/maestro-coordinate/SKILL.md +279 -224
  49. package/.codex/skills/maestro-execute/SKILL.md +35 -26
  50. package/.codex/skills/maestro-milestone-audit/SKILL.md +103 -209
  51. package/.codex/skills/maestro-milestone-complete/SKILL.md +149 -158
  52. package/.codex/skills/maestro-plan/SKILL.md +56 -18
  53. package/.codex/skills/maestro-roadmap/SKILL.md +3 -2
  54. package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +2 -2
  55. package/.codex/skills/team-executor/roles/executor/commands/monitor.md +1 -1
  56. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +2 -2
  57. package/.codex/skills/team-lifecycle-v4/specs/knowledge-transfer.md +2 -2
  58. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +1 -1
  59. package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +1 -1
  60. package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +1 -1
  61. package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +1 -1
  62. package/README.md +26 -21
  63. package/README.zh-CN.md +23 -19
  64. package/bin/maestro-mcp.js +1 -1
  65. package/chains/_intent-map.json +21 -9
  66. package/chains/_router.json +30 -77
  67. package/chains/brainstorm-driven.json +17 -6
  68. package/chains/full-lifecycle.json +22 -23
  69. package/chains/issue-lifecycle.json +13 -13
  70. package/chains/milestone-close.json +20 -7
  71. package/chains/milestone-fork-merge.json +50 -0
  72. package/chains/roadmap-driven.json +17 -6
  73. package/chains/singles/issue-analyze.json +3 -3
  74. package/chains/singles/issue-execute.json +3 -3
  75. package/chains/singles/issue-plan.json +3 -3
  76. package/chains/spec-driven.json +17 -6
  77. package/dashboard/dist/assets/{ArtifactsPage-BmPOu8sO.js → ArtifactsPage-DZNCi6tn.js} +12 -7
  78. package/dashboard/dist/assets/ChatInput-Bvr-FeEq.js +49 -0
  79. package/dashboard/dist/assets/ChatPage-D9zTkJZo.js +22 -0
  80. package/dashboard/dist/assets/CollabPage-B4NAHXS2.js +1 -0
  81. package/dashboard/dist/assets/ExecutionPanel-CFt4LJyq.js +1 -0
  82. package/dashboard/dist/assets/KanbanPage-C8USth6H.js +21 -0
  83. package/dashboard/dist/assets/{MarkdownRenderer-BjZ43aSa.js → MarkdownRenderer-X4af_WNb.js} +1 -1
  84. package/dashboard/dist/assets/McpPage-BKfCVIyU.js +21 -0
  85. package/dashboard/dist/assets/OutputPanel-BlBQFJSW.js +1 -0
  86. package/dashboard/dist/assets/ProblemsPanel-De3DLvoI.js +1 -0
  87. package/dashboard/dist/assets/{RequirementBoardPage-B7yRL0s_.js → RequirementBoardPage-Bf1trzqs.js} +2 -2
  88. package/dashboard/dist/assets/{RequirementPage-D8J_-b6O.js → RequirementPage-Bllxe2XI.js} +10 -5
  89. package/dashboard/dist/assets/{SpecsPage-6lO8v8_C.js → SpecsPage-9lwxKT27.js} +2 -2
  90. package/dashboard/dist/assets/{SupervisorPage-Ds5N378a.js → SupervisorPage-SusdfHFq.js} +1 -1
  91. package/dashboard/dist/assets/{TeamsPage-DrkKr17T.js → TeamsPage-DsuM6OwC.js} +2 -2
  92. package/dashboard/dist/assets/TreeBrowser-Q12qobZs.js +6 -0
  93. package/dashboard/dist/assets/WorkflowPage-D_Fzdy3_.js +6 -0
  94. package/dashboard/dist/assets/{arrow-left-CadP5YgU.js → arrow-left-Bqtb2hle.js} +1 -1
  95. package/dashboard/dist/assets/{check-5xufDzS8.js → check-u6fGOwQO.js} +1 -1
  96. package/dashboard/dist/assets/{chevron-right-CYbpR4ev.js → chevron-right-Csu22t58.js} +1 -1
  97. package/dashboard/dist/assets/{circle-Bm-5Q-Yh.js → circle-CMrkbRNg.js} +1 -1
  98. package/dashboard/dist/assets/{circle-alert-BqcYuT7x.js → circle-alert-c3tH1P4z.js} +1 -1
  99. package/dashboard/dist/assets/{circle-check-big-yyzAFysU.js → circle-check-big-TDSeWstm.js} +1 -1
  100. package/dashboard/dist/assets/{circle-check-DEVzW_lm.js → circle-check-gYxxSYuH.js} +1 -1
  101. package/dashboard/dist/assets/{code-BBdC8Wmw.js → code-CFN2uX9V.js} +1 -1
  102. package/dashboard/dist/assets/{columns-3-CQ9Trztr.js → columns-3-38xIDlzy.js} +1 -1
  103. package/dashboard/dist/assets/{download-DayuF-sn.js → download-DC7KkKyP.js} +1 -1
  104. package/dashboard/dist/assets/{folder-CqXeSKeC.js → folder-CWq_lAnf.js} +1 -1
  105. package/dashboard/dist/assets/index-DWG-WrzT.js +231 -0
  106. package/dashboard/dist/assets/{index-Dru5HYy0.js → index-Do71weNR.js} +1 -1
  107. package/dashboard/dist/assets/index-GUNJodSR.css +1 -0
  108. package/dashboard/dist/assets/{list-DBOD6IUt.js → list-CgIP_2A-.js} +1 -1
  109. package/dashboard/dist/assets/{minus-fQI1Syn2.js → minus-DYoN5UGk.js} +1 -1
  110. package/dashboard/dist/assets/{pen-line-Bkbbngl5.js → pen-line-Bh_WKYHm.js} +1 -1
  111. package/dashboard/dist/assets/{proxy-teW12DdZ.js → proxy-BKxDAKTj.js} +1 -1
  112. package/dashboard/dist/assets/{search-Bq3ygFUW.js → search-SieXnOgr.js} +1 -1
  113. package/dashboard/dist/assets/{shallow-22ZN8sFt.js → shallow-Bme1JY57.js} +1 -1
  114. package/dashboard/dist/assets/{table-BEYtdWc4.js → table-llyEtj-7.js} +1 -1
  115. package/dashboard/dist/assets/terminal-BB3Xfuv5.js +6 -0
  116. package/dashboard/dist/assets/{trash-2-DMqGBgcF.js → trash-2-C8f4vFFM.js} +1 -1
  117. package/dashboard/dist/assets/{zap-9DVkGVtt.js → zap-4uwlzVm0.js} +1 -1
  118. package/dashboard/dist/index.html +2 -2
  119. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +8 -4
  120. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  121. package/dashboard/dist-server/dashboard/src/server/agents/entry-normalizer.d.ts +1 -0
  122. package/dashboard/dist-server/dashboard/src/server/agents/entry-normalizer.js +2 -1
  123. package/dashboard/dist-server/dashboard/src/server/agents/entry-normalizer.js.map +1 -1
  124. package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js +20 -10
  125. package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js.map +1 -1
  126. package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js +2 -2
  127. package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js.map +1 -1
  128. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +3 -3
  129. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
  130. package/dashboard/dist-server/dashboard/src/server/routes/git.d.ts +2 -0
  131. package/dashboard/dist-server/dashboard/src/server/routes/git.js +79 -0
  132. package/dashboard/dist-server/dashboard/src/server/routes/git.js.map +1 -0
  133. package/dashboard/dist-server/dashboard/src/server/routes/index.js +3 -0
  134. package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
  135. package/dashboard/dist-server/dashboard/src/server/routes/issues.js +34 -0
  136. package/dashboard/dist-server/dashboard/src/server/routes/issues.js.map +1 -1
  137. package/dashboard/dist-server/dashboard/src/server/routes/workspace.js +43 -0
  138. package/dashboard/dist-server/dashboard/src/server/routes/workspace.js.map +1 -1
  139. package/dashboard/dist-server/dashboard/src/server/state/state-manager.js +43 -3
  140. package/dashboard/dist-server/dashboard/src/server/state/state-manager.js.map +1 -1
  141. package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js +2 -3
  142. package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js.map +1 -1
  143. package/dashboard/dist-server/dashboard/src/shared/issue-types.d.ts +5 -0
  144. package/dashboard/dist-server/dashboard/src/shared/issue-types.js.map +1 -1
  145. package/dashboard/dist-server/dashboard/src/shared/normalize-task.d.ts +2 -0
  146. package/dashboard/dist-server/dashboard/src/shared/normalize-task.js +75 -0
  147. package/dashboard/dist-server/dashboard/src/shared/normalize-task.js.map +1 -0
  148. package/dashboard/dist-server/src/hooks/constants.d.ts +90 -12
  149. package/dashboard/dist-server/src/hooks/constants.js +149 -16
  150. package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
  151. package/dashboard/dist-server/src/types/index.d.ts +5 -0
  152. package/dashboard/package.json +59 -59
  153. package/dist/src/cli.js +3 -1
  154. package/dist/src/cli.js.map +1 -1
  155. package/dist/src/commands/collab.d.ts +14 -0
  156. package/dist/src/commands/collab.d.ts.map +1 -0
  157. package/dist/src/commands/{team.js → collab.js} +395 -96
  158. package/dist/src/commands/collab.js.map +1 -0
  159. package/dist/src/commands/hooks.d.ts +5 -1
  160. package/dist/src/commands/hooks.d.ts.map +1 -1
  161. package/dist/src/commands/hooks.js +50 -10
  162. package/dist/src/commands/hooks.js.map +1 -1
  163. package/dist/src/commands/install-ui/InstallConfirm.d.ts +3 -1
  164. package/dist/src/commands/install-ui/InstallConfirm.d.ts.map +1 -1
  165. package/dist/src/commands/install-ui/InstallConfirm.js +3 -1
  166. package/dist/src/commands/install-ui/InstallConfirm.js.map +1 -1
  167. package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
  168. package/dist/src/commands/install-ui/InstallExecution.js +5 -1
  169. package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
  170. package/dist/src/commands/install-ui/InstallFlow.d.ts.map +1 -1
  171. package/dist/src/commands/install-ui/InstallFlow.js +7 -3
  172. package/dist/src/commands/install-ui/InstallFlow.js.map +1 -1
  173. package/dist/src/commands/install-ui/StatuslineConfig.d.ts +6 -1
  174. package/dist/src/commands/install-ui/StatuslineConfig.d.ts.map +1 -1
  175. package/dist/src/commands/install-ui/StatuslineConfig.js +27 -5
  176. package/dist/src/commands/install-ui/StatuslineConfig.js.map +1 -1
  177. package/dist/src/commands/msg.d.ts.map +1 -1
  178. package/dist/src/commands/msg.js +4 -3
  179. package/dist/src/commands/msg.js.map +1 -1
  180. package/dist/src/hooks/__tests__/statusline-visual-test.d.ts +7 -0
  181. package/dist/src/hooks/__tests__/statusline-visual-test.d.ts.map +1 -0
  182. package/dist/src/hooks/__tests__/statusline-visual-test.js +236 -0
  183. package/dist/src/hooks/__tests__/statusline-visual-test.js.map +1 -0
  184. package/dist/src/hooks/constants.d.ts +90 -12
  185. package/dist/src/hooks/constants.d.ts.map +1 -1
  186. package/dist/src/hooks/constants.js +149 -16
  187. package/dist/src/hooks/constants.js.map +1 -1
  188. package/dist/src/hooks/guards/index.d.ts +1 -0
  189. package/dist/src/hooks/guards/index.d.ts.map +1 -1
  190. package/dist/src/hooks/guards/index.js +1 -0
  191. package/dist/src/hooks/guards/index.js.map +1 -1
  192. package/dist/src/hooks/guards/preflight-guard.d.ts +29 -0
  193. package/dist/src/hooks/guards/preflight-guard.d.ts.map +1 -0
  194. package/dist/src/hooks/guards/preflight-guard.js +95 -0
  195. package/dist/src/hooks/guards/preflight-guard.js.map +1 -0
  196. package/dist/src/hooks/index.d.ts +1 -0
  197. package/dist/src/hooks/index.d.ts.map +1 -1
  198. package/dist/src/hooks/index.js +1 -0
  199. package/dist/src/hooks/index.js.map +1 -1
  200. package/dist/src/{commands/team.d.ts → hooks/preflight-core.d.ts} +12 -22
  201. package/dist/src/hooks/preflight-core.d.ts.map +1 -0
  202. package/dist/src/hooks/preflight-core.js +86 -0
  203. package/dist/src/hooks/preflight-core.js.map +1 -0
  204. package/dist/src/hooks/statusline.d.ts +8 -17
  205. package/dist/src/hooks/statusline.d.ts.map +1 -1
  206. package/dist/src/hooks/statusline.js +269 -112
  207. package/dist/src/hooks/statusline.js.map +1 -1
  208. package/dist/src/hooks/team-monitor.d.ts.map +1 -1
  209. package/dist/src/hooks/team-monitor.js +16 -0
  210. package/dist/src/hooks/team-monitor.js.map +1 -1
  211. package/dist/src/i18n/locales/en.d.ts.map +1 -1
  212. package/dist/src/i18n/locales/en.js +5 -0
  213. package/dist/src/i18n/locales/en.js.map +1 -1
  214. package/dist/src/i18n/locales/zh.d.ts.map +1 -1
  215. package/dist/src/i18n/locales/zh.js +5 -0
  216. package/dist/src/i18n/locales/zh.js.map +1 -1
  217. package/dist/src/i18n/types.d.ts +5 -0
  218. package/dist/src/i18n/types.d.ts.map +1 -1
  219. package/dist/src/tools/collab-adapter.d.ts +102 -0
  220. package/dist/src/tools/collab-adapter.d.ts.map +1 -0
  221. package/dist/src/tools/collab-adapter.js +458 -0
  222. package/dist/src/tools/collab-adapter.js.map +1 -0
  223. package/dist/src/tools/merge-validator.d.ts +24 -0
  224. package/dist/src/tools/merge-validator.d.ts.map +1 -0
  225. package/dist/src/tools/merge-validator.js +220 -0
  226. package/dist/src/tools/merge-validator.js.map +1 -0
  227. package/dist/src/tools/namespace-guard.d.ts +2 -0
  228. package/dist/src/tools/namespace-guard.d.ts.map +1 -1
  229. package/dist/src/tools/namespace-guard.js +12 -0
  230. package/dist/src/tools/namespace-guard.js.map +1 -1
  231. package/dist/src/tools/phase-gate-evaluator.d.ts +45 -0
  232. package/dist/src/tools/phase-gate-evaluator.d.ts.map +1 -0
  233. package/dist/src/tools/phase-gate-evaluator.js +42 -0
  234. package/dist/src/tools/phase-gate-evaluator.js.map +1 -0
  235. package/dist/src/tools/team-members.d.ts +18 -0
  236. package/dist/src/tools/team-members.d.ts.map +1 -1
  237. package/dist/src/tools/team-members.js +50 -0
  238. package/dist/src/tools/team-members.js.map +1 -1
  239. package/dist/src/tools/team-tasks.d.ts +120 -0
  240. package/dist/src/tools/team-tasks.d.ts.map +1 -0
  241. package/dist/src/tools/team-tasks.js +365 -0
  242. package/dist/src/tools/team-tasks.js.map +1 -0
  243. package/dist/src/tools/transition-recorder.d.ts +3 -0
  244. package/dist/src/tools/transition-recorder.d.ts.map +1 -1
  245. package/dist/src/tools/transition-recorder.js +52 -1
  246. package/dist/src/tools/transition-recorder.js.map +1 -1
  247. package/dist/src/types/index.d.ts +5 -0
  248. package/dist/src/types/index.d.ts.map +1 -1
  249. package/dist/src/utils/get-version.d.ts.map +1 -1
  250. package/dist/src/utils/get-version.js +15 -4
  251. package/dist/src/utils/get-version.js.map +1 -1
  252. package/package.json +1 -1
  253. package/templates/cli/prompts/workflow-skill-conflict-patterns.txt +3 -3
  254. package/templates/cli/prompts/workflow-skill-lessons-learned.txt +3 -3
  255. package/templates/config.json +7 -0
  256. package/templates/search-tools.md +1 -1
  257. package/templates/worktree-scope.json +10 -0
  258. package/templates/worktrees.json +27 -0
  259. package/workflows/analyze.md +86 -36
  260. package/workflows/brainstorm.md +17 -37
  261. package/workflows/cli-tools-usage.md +44 -27
  262. package/workflows/delegate-usage.md +3 -3
  263. package/workflows/execute.md +94 -28
  264. package/workflows/fork.md +309 -0
  265. package/workflows/init.md +10 -1
  266. package/workflows/issue-analyze.md +6 -2
  267. package/workflows/issue-discover.md +4 -4
  268. package/workflows/issue-execute.md +6 -3
  269. package/workflows/issue-plan.md +5 -2
  270. package/workflows/issue.md +66 -7
  271. package/workflows/maestro-coordinate.codex.md +281 -470
  272. package/workflows/maestro-coordinate.md +37 -30
  273. package/workflows/maestro-link-coordinate.md +2 -2
  274. package/workflows/maestro.codex.md +710 -0
  275. package/workflows/maestro.md +62 -46
  276. package/workflows/merge.md +285 -0
  277. package/workflows/milestone-audit.md +89 -70
  278. package/workflows/milestone-complete.md +89 -156
  279. package/workflows/plan.md +122 -17
  280. package/workflows/retrospective.md +4 -4
  281. package/workflows/roadmap.md +11 -3
  282. package/workflows/spec-generate.md +9 -0
  283. package/workflows/status.md +76 -27
  284. package/workflows/ui-design.md +14 -12
  285. package/workflows/verify.md +44 -8
  286. package/.claude/commands/maestro-phase-add.md +0 -63
  287. package/.claude/commands/maestro-phase-transition.md +0 -75
  288. package/.claude/commands/manage-issue-analyze.md +0 -62
  289. package/.claude/commands/manage-issue-execute.md +0 -73
  290. package/.claude/commands/manage-issue-plan.md +0 -62
  291. package/.codex/skills/maestro-phase-add/SKILL.md +0 -154
  292. package/.codex/skills/maestro-phase-transition/SKILL.md +0 -173
  293. package/.codex/skills/manage-issue-analyze/SKILL.md +0 -207
  294. package/.codex/skills/manage-issue-execute/SKILL.md +0 -200
  295. package/.codex/skills/manage-issue-plan/SKILL.md +0 -186
  296. package/chains/singles/phase-add.json +0 -31
  297. package/chains/singles/phase-transition.json +0 -23
  298. package/dashboard/dist/assets/ChatInput-CL8YDfOU.js +0 -67
  299. package/dashboard/dist/assets/ChatPage-CT-ozBK2.js +0 -8
  300. package/dashboard/dist/assets/CollabPage-C0rWMden.js +0 -1
  301. package/dashboard/dist/assets/KanbanPage-C6WbAlwI.js +0 -16
  302. package/dashboard/dist/assets/McpPage-BPIXADQi.js +0 -16
  303. package/dashboard/dist/assets/TreeBrowser-g_QUKemL.js +0 -11
  304. package/dashboard/dist/assets/WorkflowPage-X8aNkDEr.js +0 -6
  305. package/dashboard/dist/assets/git-branch-SqFf4Ru5.js +0 -6
  306. package/dashboard/dist/assets/index-D2Mtyw7I.css +0 -1
  307. package/dashboard/dist/assets/index-nufWop4p.js +0 -231
  308. package/dashboard/dist/assets/wrench-B84-zdLI.js +0 -11
  309. package/dist/src/commands/team.d.ts.map +0 -1
  310. package/dist/src/commands/team.js.map +0 -1
  311. package/workflows/phase-add.md +0 -252
  312. package/workflows/phase-transition.md +0 -399
@@ -1 +1 @@
1
- {"version":3,"file":"en.js","sourceRoot":"","sources":["../../../../src/i18n/locales/en.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"en.js","sourceRoot":"","sources":["../../../../src/i18n/locales/en.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"zh.d.ts","sourceRoot":"","sources":["../../../../src/i18n/locales/zh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,eAAO,MAAM,EAAE,EAAE,aA8LhB,CAAC"}
1
+ {"version":3,"file":"zh.d.ts","sourceRoot":"","sources":["../../../../src/i18n/locales/zh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,eAAO,MAAM,EAAE,EAAE,aAmMhB,CAAC"}
@@ -62,6 +62,11 @@ export const zh = {
62
62
  statuslineDetected: '已检测:{cmd}',
63
63
  statuslineWillInstall: 'maestro-statusline',
64
64
  statuslineEnabled: 'maestro-statusline',
65
+ statuslineStyleTitle: '显示风格:',
66
+ statuslineStyleText: '彩色文字 + 管道分隔符(兼容所有终端)',
67
+ statuslineStylePowerline: '彩色背景 + 箭头分隔符(建议使用 Powerline 字体)',
68
+ statuslineNerdFontPrompt: 'Nerd Font 图标?',
69
+ statuslineNerdFontHint: '需要终端安装 Nerd Font 字体(如 CaskaydiaCove NF)',
65
70
  // Backup
66
71
  backupTitle: '备份配置',
67
72
  backupOptClaudeMd: 'CLAUDE.md',
@@ -1 +1 @@
1
- {"version":3,"file":"zh.js","sourceRoot":"","sources":["../../../../src/i18n/locales/zh.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zh.js","sourceRoot":"","sources":["../../../../src/i18n/locales/zh.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,11 @@ export interface LocaleStrings {
48
48
  statuslineDetected: string;
49
49
  statuslineWillInstall: string;
50
50
  statuslineEnabled: string;
51
+ statuslineStyleTitle: string;
52
+ statuslineStyleText: string;
53
+ statuslineStylePowerline: string;
54
+ statuslineNerdFontPrompt: string;
55
+ statuslineNerdFontHint: string;
51
56
  backupTitle: string;
52
57
  backupOptClaudeMd: string;
53
58
  backupOptClaudeMdDesc: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/i18n/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/i18n/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Collaboration adapter interface and registry (team-lite collaboration).
3
+ *
4
+ * Provides a pluggable notification layer that maps collab events to external
5
+ * services (DingTalk, Linear, etc.). Adapters are configured via
6
+ * `.workflow/collab/adapters.json` and instantiated on demand.
7
+ *
8
+ * Fire-and-forget contract: `notifyAdapters()` is synchronous (void return),
9
+ * spawns async work internally, and NEVER throws -- matching the
10
+ * `reportActivity` pattern in `team-activity.ts`.
11
+ *
12
+ * Strict namespace separation: this module belongs to the HUMAN collaboration
13
+ * domain (`.workflow/collab/`).
14
+ */
15
+ export type CollabEventType = 'task.created' | 'task.assigned' | 'task.status_changed' | 'task.checked' | 'role.changed';
16
+ export interface CollabEvent {
17
+ type: CollabEventType;
18
+ payload: Record<string, unknown>;
19
+ recipients?: string[];
20
+ }
21
+ export interface CollabAdapter {
22
+ name: string;
23
+ sendNotification(event: CollabEvent): Promise<void>;
24
+ validateConfig(config: Record<string, unknown>): boolean;
25
+ }
26
+ /**
27
+ * Adapter configuration shape.
28
+ *
29
+ * `enabled` lists adapter names to activate. Every other top-level key holds
30
+ * the per-adapter config block (arbitrary key-value pairs).
31
+ *
32
+ * The index signature uses `unknown` values so that both `Record<string, unknown>`
33
+ * (adapter config blocks) and `string[]` (the `enabled` field) are valid values.
34
+ */
35
+ export interface AdapterConfig {
36
+ enabled: string[];
37
+ [adapterName: string]: unknown;
38
+ }
39
+ /** DingTalk webhook adapter with HMAC-SHA256 signing. */
40
+ export declare class DingTalkAdapter implements CollabAdapter {
41
+ readonly name = "dingtalk";
42
+ private webhook;
43
+ private secret;
44
+ validateConfig(config: Record<string, unknown>): boolean;
45
+ sendNotification(event: CollabEvent): Promise<void>;
46
+ }
47
+ /** Linear GraphQL API adapter. */
48
+ export declare class LinearAdapter implements CollabAdapter {
49
+ readonly name = "linear";
50
+ private apiKey;
51
+ private teamId;
52
+ validateConfig(config: Record<string, unknown>): boolean;
53
+ sendNotification(event: CollabEvent): Promise<void>;
54
+ }
55
+ /** GitHub Issues adapter using REST API v3. */
56
+ export declare class GitHubAdapter implements CollabAdapter {
57
+ readonly name = "github";
58
+ private owner;
59
+ private repo;
60
+ private token;
61
+ validateConfig(config: Record<string, unknown>): boolean;
62
+ sendNotification(event: CollabEvent): Promise<void>;
63
+ }
64
+ /** Slack Incoming Webhook adapter with Block Kit formatting. */
65
+ export declare class SlackAdapter implements CollabAdapter {
66
+ readonly name = "slack";
67
+ private webhookUrl;
68
+ private channel;
69
+ validateConfig(config: Record<string, unknown>): boolean;
70
+ sendNotification(event: CollabEvent): Promise<void>;
71
+ }
72
+ /** Absolute path to the adapter configuration file. */
73
+ export declare function getAdaptersConfigPath(): string;
74
+ /**
75
+ * Read and parse the adapter config file.
76
+ *
77
+ * Returns `{ enabled: [] }` if the file is missing, empty, or fails to parse.
78
+ * Never throws -- graceful fallback on any I/O or JSON error.
79
+ */
80
+ export declare function loadAdapterConfig(): AdapterConfig;
81
+ /**
82
+ * Instantiate adapter classes based on the `enabled` array in config.
83
+ *
84
+ * For each name in `config.enabled`:
85
+ * 1. Look up the constructor in the built-in registry.
86
+ * 2. Instantiate and call `validateConfig` with the matching config block.
87
+ * 3. Keep only valid adapters; skip unknown or invalid ones.
88
+ *
89
+ * Returns an empty array when no adapters are configured or valid.
90
+ */
91
+ export declare function getEnabledAdapters(config: AdapterConfig): CollabAdapter[];
92
+ /**
93
+ * Send a collab event to all enabled adapters.
94
+ *
95
+ * Fire-and-forget: this function is synchronous (returns void), dispatches
96
+ * notifications in parallel via `Promise.allSettled`, and NEVER throws.
97
+ * Individual adapter failures are logged to `console.error`.
98
+ *
99
+ * No-op when no adapters are configured.
100
+ */
101
+ export declare function notifyAdapters(event: CollabEvent): void;
102
+ //# sourceMappingURL=collab-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collab-adapter.d.ts","sourceRoot":"","sources":["../../../src/tools/collab-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAaH,MAAM,MAAM,eAAe,GACvB,cAAc,GACd,eAAe,GACf,qBAAqB,GACrB,cAAc,GACd,cAAc,CAAC;AAEnB,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;CAC1D;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;CAChC;AAMD,yDAAyD;AACzD,qBAAa,eAAgB,YAAW,aAAa;IACnD,QAAQ,CAAC,IAAI,cAAc;IAC3B,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,MAAM,CAAM;IAEpB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;IAQlD,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAoB1D;AAMD,kCAAkC;AAClC,qBAAa,aAAc,YAAW,aAAa;IACjD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,MAAM,CAAM;IAEpB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;IAQlD,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAQ1D;AAMD,+CAA+C;AAC/C,qBAAa,aAAc,YAAW,aAAa;IACjD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,KAAK,CAAM;IAEnB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;IAUlD,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CA0D1D;AAMD,gEAAgE;AAChE,qBAAa,YAAa,YAAW,aAAa;IAChD,QAAQ,CAAC,IAAI,WAAW;IACxB,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,OAAO,CAAM;IAErB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;IAOlD,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAuB1D;AAuCD,uDAAuD;AACvD,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,CAYjD;AAMD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,EAAE,CAqBzE;AAMD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAqBvD"}
@@ -0,0 +1,458 @@
1
+ /**
2
+ * Collaboration adapter interface and registry (team-lite collaboration).
3
+ *
4
+ * Provides a pluggable notification layer that maps collab events to external
5
+ * services (DingTalk, Linear, etc.). Adapters are configured via
6
+ * `.workflow/collab/adapters.json` and instantiated on demand.
7
+ *
8
+ * Fire-and-forget contract: `notifyAdapters()` is synchronous (void return),
9
+ * spawns async work internally, and NEVER throws -- matching the
10
+ * `reportActivity` pattern in `team-activity.ts`.
11
+ *
12
+ * Strict namespace separation: this module belongs to the HUMAN collaboration
13
+ * domain (`.workflow/collab/`).
14
+ */
15
+ import { createHmac } from 'node:crypto';
16
+ import { readFileSync } from 'node:fs';
17
+ import { join } from 'node:path';
18
+ import { request } from 'node:https';
19
+ import { getProjectRoot } from '../utils/path-validator.js';
20
+ // ---------------------------------------------------------------------------
21
+ // Built-in adapter: DingTalk
22
+ // ---------------------------------------------------------------------------
23
+ /** DingTalk webhook adapter with HMAC-SHA256 signing. */
24
+ export class DingTalkAdapter {
25
+ name = 'dingtalk';
26
+ webhook = '';
27
+ secret = '';
28
+ validateConfig(config) {
29
+ if (typeof config.webhook !== 'string' || !config.webhook)
30
+ return false;
31
+ if (typeof config.secret !== 'string' || !config.secret)
32
+ return false;
33
+ this.webhook = config.webhook;
34
+ this.secret = config.secret;
35
+ return true;
36
+ }
37
+ async sendNotification(event) {
38
+ const timestamp = Date.now();
39
+ const stringToSign = `${timestamp}\n${this.secret}`;
40
+ const hmac = createHmac('sha256', this.secret);
41
+ hmac.update(stringToSign);
42
+ const sign = encodeURIComponent(hmac.digest('base64'));
43
+ const url = new URL(this.webhook);
44
+ url.searchParams.set('timestamp', String(timestamp));
45
+ url.searchParams.set('sign', sign);
46
+ const body = JSON.stringify({
47
+ msgtype: 'text',
48
+ text: {
49
+ content: formatEventSummary(event),
50
+ },
51
+ });
52
+ await postJSON(url.href, body);
53
+ }
54
+ }
55
+ // ---------------------------------------------------------------------------
56
+ // Built-in adapter: Linear
57
+ // ---------------------------------------------------------------------------
58
+ /** Linear GraphQL API adapter. */
59
+ export class LinearAdapter {
60
+ name = 'linear';
61
+ apiKey = '';
62
+ teamId = '';
63
+ validateConfig(config) {
64
+ if (typeof config.apiKey !== 'string' || !config.apiKey)
65
+ return false;
66
+ if (typeof config.teamId !== 'string' || !config.teamId)
67
+ return false;
68
+ this.apiKey = config.apiKey;
69
+ this.teamId = config.teamId;
70
+ return true;
71
+ }
72
+ async sendNotification(event) {
73
+ const { query, variables } = buildLinearMutation(event, this.teamId);
74
+ const body = JSON.stringify({ query, variables });
75
+ await postJSON('https://api.linear.app/graphql', body, {
76
+ Authorization: this.apiKey,
77
+ });
78
+ }
79
+ }
80
+ // ---------------------------------------------------------------------------
81
+ // Built-in adapter: GitHub Issues
82
+ // ---------------------------------------------------------------------------
83
+ /** GitHub Issues adapter using REST API v3. */
84
+ export class GitHubAdapter {
85
+ name = 'github';
86
+ owner = '';
87
+ repo = '';
88
+ token = '';
89
+ validateConfig(config) {
90
+ if (typeof config.owner !== 'string' || !config.owner)
91
+ return false;
92
+ if (typeof config.repo !== 'string' || !config.repo)
93
+ return false;
94
+ if (typeof config.token !== 'string' || !config.token)
95
+ return false;
96
+ this.owner = config.owner;
97
+ this.repo = config.repo;
98
+ this.token = config.token;
99
+ return true;
100
+ }
101
+ async sendNotification(event) {
102
+ const p = event.payload;
103
+ const baseUrl = `https://api.github.com/repos/${this.owner}/${this.repo}`;
104
+ switch (event.type) {
105
+ case 'task.created': {
106
+ const title = typeof p.task_title === 'string' ? p.task_title : 'Untitled';
107
+ const description = typeof p.description === 'string' ? p.description : '';
108
+ const labels = Array.isArray(p.tags) ? p.tags : [];
109
+ const body = JSON.stringify({
110
+ title: `[Maestro] ${title}`,
111
+ body: description || `Created by ${p.actor ?? 'unknown'} via Maestro collab`,
112
+ labels,
113
+ });
114
+ await postJSON(`${baseUrl}/issues`, body, {
115
+ Authorization: `Bearer ${this.token}`,
116
+ 'X-GitHub-Api-Version': '2022-11-28',
117
+ });
118
+ break;
119
+ }
120
+ case 'task.status_changed': {
121
+ const issueNumber = p.github_issue_number;
122
+ if (typeof issueNumber !== 'number')
123
+ break;
124
+ const state = p.status === 'done' || p.status === 'closed' ? 'closed' : 'open';
125
+ const body = JSON.stringify({ state });
126
+ await postJSON(`${baseUrl}/issues/${issueNumber}`, body, {
127
+ Authorization: `Bearer ${this.token}`,
128
+ 'X-GitHub-Api-Version': '2022-11-28',
129
+ });
130
+ break;
131
+ }
132
+ case 'task.assigned': {
133
+ const issueNumber = p.github_issue_number;
134
+ if (typeof issueNumber !== 'number')
135
+ break;
136
+ const assignee = typeof p.github_username === 'string' ? p.github_username : '';
137
+ if (!assignee)
138
+ break;
139
+ const body = JSON.stringify({ assignees: [assignee] });
140
+ await postJSON(`${baseUrl}/issues/${issueNumber}/assignees`, body, {
141
+ Authorization: `Bearer ${this.token}`,
142
+ 'X-GitHub-Api-Version': '2022-11-28',
143
+ });
144
+ break;
145
+ }
146
+ default: {
147
+ // For other events, add a comment if we have an issue number.
148
+ const issueNum = p.github_issue_number;
149
+ if (typeof issueNum !== 'number')
150
+ break;
151
+ const body = JSON.stringify({ body: formatEventSummary(event) });
152
+ await postJSON(`${baseUrl}/issues/${issueNum}/comments`, body, {
153
+ Authorization: `Bearer ${this.token}`,
154
+ 'X-GitHub-Api-Version': '2022-11-28',
155
+ });
156
+ }
157
+ }
158
+ }
159
+ }
160
+ // ---------------------------------------------------------------------------
161
+ // Built-in adapter: Slack
162
+ // ---------------------------------------------------------------------------
163
+ /** Slack Incoming Webhook adapter with Block Kit formatting. */
164
+ export class SlackAdapter {
165
+ name = 'slack';
166
+ webhookUrl = '';
167
+ channel = '';
168
+ validateConfig(config) {
169
+ if (typeof config.webhookUrl !== 'string' || !config.webhookUrl)
170
+ return false;
171
+ this.webhookUrl = config.webhookUrl;
172
+ this.channel = typeof config.channel === 'string' ? config.channel : '';
173
+ return true;
174
+ }
175
+ async sendNotification(event) {
176
+ const summary = formatEventSummary(event);
177
+ const emoji = getSlackEmoji(event.type);
178
+ const payload = {
179
+ text: summary,
180
+ blocks: [
181
+ {
182
+ type: 'section',
183
+ text: {
184
+ type: 'mrkdwn',
185
+ text: `${emoji} *${eventTypeLabel(event.type)}*\n${summary}`,
186
+ },
187
+ },
188
+ ],
189
+ };
190
+ if (this.channel) {
191
+ payload.channel = this.channel;
192
+ }
193
+ await postJSON(this.webhookUrl, JSON.stringify(payload));
194
+ }
195
+ }
196
+ function getSlackEmoji(type) {
197
+ switch (type) {
198
+ case 'task.created': return ':clipboard:';
199
+ case 'task.assigned': return ':bust_in_silhouette:';
200
+ case 'task.status_changed': return ':arrows_counterclockwise:';
201
+ case 'task.checked': return ':white_check_mark:';
202
+ case 'role.changed': return ':key:';
203
+ default: return ':bell:';
204
+ }
205
+ }
206
+ function eventTypeLabel(type) {
207
+ switch (type) {
208
+ case 'task.created': return 'Task Created';
209
+ case 'task.assigned': return 'Task Assigned';
210
+ case 'task.status_changed': return 'Status Changed';
211
+ case 'task.checked': return 'Task Checked';
212
+ case 'role.changed': return 'Role Changed';
213
+ default: return 'Event';
214
+ }
215
+ }
216
+ // ---------------------------------------------------------------------------
217
+ // Adapter registry
218
+ // ---------------------------------------------------------------------------
219
+ const BUILTIN_ADAPTERS = {
220
+ dingtalk: DingTalkAdapter,
221
+ linear: LinearAdapter,
222
+ github: GitHubAdapter,
223
+ slack: SlackAdapter,
224
+ };
225
+ // ---------------------------------------------------------------------------
226
+ // Path helpers
227
+ // ---------------------------------------------------------------------------
228
+ /** Absolute path to the adapter configuration file. */
229
+ export function getAdaptersConfigPath() {
230
+ return join(getProjectRoot(), '.workflow', 'collab', 'adapters.json');
231
+ }
232
+ // ---------------------------------------------------------------------------
233
+ // Config loading
234
+ // ---------------------------------------------------------------------------
235
+ /**
236
+ * Read and parse the adapter config file.
237
+ *
238
+ * Returns `{ enabled: [] }` if the file is missing, empty, or fails to parse.
239
+ * Never throws -- graceful fallback on any I/O or JSON error.
240
+ */
241
+ export function loadAdapterConfig() {
242
+ const configPath = getAdaptersConfigPath();
243
+ try {
244
+ const raw = readFileSync(configPath, 'utf-8');
245
+ const parsed = JSON.parse(raw);
246
+ if (!parsed || typeof parsed !== 'object')
247
+ return { enabled: [] };
248
+ const obj = parsed;
249
+ if (!Array.isArray(obj.enabled))
250
+ return { enabled: [] };
251
+ return parsed;
252
+ }
253
+ catch {
254
+ return { enabled: [] };
255
+ }
256
+ }
257
+ // ---------------------------------------------------------------------------
258
+ // Adapter instantiation
259
+ // ---------------------------------------------------------------------------
260
+ /**
261
+ * Instantiate adapter classes based on the `enabled` array in config.
262
+ *
263
+ * For each name in `config.enabled`:
264
+ * 1. Look up the constructor in the built-in registry.
265
+ * 2. Instantiate and call `validateConfig` with the matching config block.
266
+ * 3. Keep only valid adapters; skip unknown or invalid ones.
267
+ *
268
+ * Returns an empty array when no adapters are configured or valid.
269
+ */
270
+ export function getEnabledAdapters(config) {
271
+ const adapters = [];
272
+ for (const name of config.enabled) {
273
+ const Ctor = BUILTIN_ADAPTERS[name];
274
+ if (!Ctor) {
275
+ console.error(`[collab-adapter] unknown adapter: ${name}`);
276
+ continue;
277
+ }
278
+ try {
279
+ const instance = new Ctor();
280
+ const block = config[name];
281
+ if (!instance.validateConfig(block ?? {})) {
282
+ console.error(`[collab-adapter] invalid config for adapter: ${name}`);
283
+ continue;
284
+ }
285
+ adapters.push(instance);
286
+ }
287
+ catch (err) {
288
+ console.error(`[collab-adapter] failed to instantiate adapter: ${name}`, err);
289
+ }
290
+ }
291
+ return adapters;
292
+ }
293
+ // ---------------------------------------------------------------------------
294
+ // Main entry point
295
+ // ---------------------------------------------------------------------------
296
+ /**
297
+ * Send a collab event to all enabled adapters.
298
+ *
299
+ * Fire-and-forget: this function is synchronous (returns void), dispatches
300
+ * notifications in parallel via `Promise.allSettled`, and NEVER throws.
301
+ * Individual adapter failures are logged to `console.error`.
302
+ *
303
+ * No-op when no adapters are configured.
304
+ */
305
+ export function notifyAdapters(event) {
306
+ try {
307
+ const config = loadAdapterConfig();
308
+ const adapters = getEnabledAdapters(config);
309
+ if (adapters.length === 0)
310
+ return;
311
+ const promises = adapters.map((adapter) => adapter.sendNotification(event));
312
+ Promise.allSettled(promises).then((results) => {
313
+ for (let i = 0; i < results.length; i++) {
314
+ const result = results[i];
315
+ if (result.status === 'rejected') {
316
+ console.error(`[collab-adapter] ${adapters[i].name} notification failed:`, result.reason);
317
+ }
318
+ }
319
+ });
320
+ }
321
+ catch (err) {
322
+ console.error('[collab-adapter] unexpected error in notifyAdapters:', err);
323
+ }
324
+ }
325
+ // ---------------------------------------------------------------------------
326
+ // Internal helpers
327
+ // ---------------------------------------------------------------------------
328
+ /** Format a human-readable one-liner from a collab event. */
329
+ function formatEventSummary(event) {
330
+ const p = event.payload;
331
+ const who = typeof p.actor === 'string' ? p.actor : 'unknown';
332
+ const task = typeof p.task_title === 'string' ? p.task_title : '';
333
+ switch (event.type) {
334
+ case 'task.created':
335
+ return `${who} created task: ${task}`;
336
+ case 'task.assigned':
337
+ return `${who} assigned task: ${task} -> ${p.assignee ?? 'unknown'}`;
338
+ case 'task.status_changed':
339
+ return `${who} changed status: ${task} -> ${p.status ?? 'unknown'}`;
340
+ case 'task.checked':
341
+ return `${who} checked item in: ${task}`;
342
+ case 'role.changed':
343
+ return `${who} changed role: ${p.member ?? 'unknown'} -> ${p.role ?? 'unknown'}`;
344
+ default:
345
+ return `${who}: ${event.type}`;
346
+ }
347
+ }
348
+ /** Build a Linear GraphQL mutation for the given event type. */
349
+ function buildLinearMutation(event, teamId) {
350
+ const p = event.payload;
351
+ const title = typeof p.task_title === 'string' ? p.task_title : 'Untitled';
352
+ const description = typeof p.description === 'string' ? p.description : '';
353
+ switch (event.type) {
354
+ case 'task.created':
355
+ return {
356
+ query: `
357
+ mutation CreateIssue($title: String!, $teamId: String!, $description: String) {
358
+ issueCreate(input: { title: $title, teamId: $teamId, description: $description }) {
359
+ success
360
+ issue { id title }
361
+ }
362
+ }
363
+ `,
364
+ variables: { title, teamId, description },
365
+ };
366
+ case 'task.status_changed': {
367
+ const linearState = mapToLinearState(p.status);
368
+ return {
369
+ query: `
370
+ mutation UpdateIssueState($issueId: String!, $stateId: String!) {
371
+ issueUpdate(id: $issueId, input: { stateId: $stateId }) {
372
+ success
373
+ }
374
+ }
375
+ `,
376
+ variables: { issueId: p.task_id ?? '', stateId: linearState },
377
+ };
378
+ }
379
+ case 'task.assigned': {
380
+ return {
381
+ query: `
382
+ mutation AssignIssue($issueId: String!, $assigneeId: String!) {
383
+ issueUpdate(id: $issueId, input: { assigneeId: $assigneeId }) {
384
+ success
385
+ }
386
+ }
387
+ `,
388
+ variables: { issueId: p.task_id ?? '', assigneeId: p.assignee_id ?? '' },
389
+ };
390
+ }
391
+ default:
392
+ // For events without a direct Linear mapping, create a comment.
393
+ return {
394
+ query: `
395
+ mutation CreateComment($issueId: String!, $body: String!) {
396
+ commentCreate(input: { issueId: $issueId, body: $body }) {
397
+ success
398
+ }
399
+ }
400
+ `,
401
+ variables: {
402
+ issueId: p.task_id ?? '',
403
+ body: formatEventSummary(event),
404
+ },
405
+ };
406
+ }
407
+ }
408
+ /** Map collab status strings to Linear state IDs (placeholder heuristic). */
409
+ function mapToLinearState(status) {
410
+ const map = {
411
+ todo: 'Todo',
412
+ in_progress: 'In Progress',
413
+ done: 'Done',
414
+ cancelled: 'Cancelled',
415
+ backlog: 'Backlog',
416
+ };
417
+ return map[status] ?? status;
418
+ }
419
+ /**
420
+ * POST a JSON body to an HTTPS URL.
421
+ *
422
+ * Returns a promise that resolves on 2xx status and rejects otherwise.
423
+ * Uses only Node.js built-in `node:https` -- no external dependencies.
424
+ */
425
+ function postJSON(url, body, extraHeaders = {}) {
426
+ return new Promise((resolve, reject) => {
427
+ const parsed = new URL(url);
428
+ const options = {
429
+ hostname: parsed.hostname,
430
+ port: parsed.port || 443,
431
+ path: parsed.pathname + parsed.search,
432
+ method: 'POST',
433
+ headers: {
434
+ 'Content-Type': 'application/json',
435
+ 'Content-Length': Buffer.byteLength(body),
436
+ ...extraHeaders,
437
+ },
438
+ };
439
+ const req = request(options, (res) => {
440
+ // Drain the response to free the connection.
441
+ const chunks = [];
442
+ res.on('data', (chunk) => chunks.push(chunk));
443
+ res.on('end', () => {
444
+ if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
445
+ resolve();
446
+ }
447
+ else {
448
+ const responseBody = Buffer.concat(chunks).toString('utf-8');
449
+ reject(new Error(`HTTP ${res.statusCode} from ${parsed.hostname}: ${responseBody.slice(0, 200)}`));
450
+ }
451
+ });
452
+ });
453
+ req.on('error', reject);
454
+ req.write(body);
455
+ req.end();
456
+ });
457
+ }
458
+ //# sourceMappingURL=collab-adapter.js.map