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
@@ -10,7 +10,7 @@ import { join } from 'node:path';
10
10
  // ============================================================================
11
11
  // Filename → Category mapping (single source of truth)
12
12
  // ============================================================================
13
- const CATEGORY_MAP = {
13
+ export const CATEGORY_MAP = {
14
14
  'coding-conventions.md': ['execution'],
15
15
  'architecture-constraints.md': ['execution', 'planning'],
16
16
  'quality-rules.md': ['execution'],
@@ -23,20 +23,84 @@ const CATEGORY_MAP = {
23
23
  // learnings.md is always included regardless of category filter
24
24
  const ALWAYS_INCLUDE = 'learnings.md';
25
25
  const SPECS_DIR = '.workflow/specs';
26
+ export const TEAM_SPECS_DIR = '.workflow/collab/specs';
27
+ /** Layer labels used as section headers when multi-directory scanning is active. */
28
+ const LAYER_LABELS = {
29
+ baseline: '# Baseline Specs',
30
+ team: '# Team Specs',
31
+ // personal label is dynamic — includes uid
32
+ };
26
33
  // ============================================================================
27
34
  // Public API
28
35
  // ============================================================================
29
- export function loadSpecs(projectPath, category) {
30
- const specsDir = join(projectPath, SPECS_DIR);
31
- if (!existsSync(specsDir)) {
32
- return { content: '', matchedSpecs: [], totalLoaded: 0 };
36
+ /**
37
+ * Load spec files from one or more directories.
38
+ *
39
+ * When `uid` is provided, scans three directories in order:
40
+ * 1. .workflow/specs/ (baseline)
41
+ * 2. .workflow/collab/specs/ (team shared)
42
+ * 3. .workflow/collab/specs/{uid}/ (personal)
43
+ *
44
+ * Content from later layers is appended (never replaces earlier content).
45
+ * Each layer's content is prefixed with a header for clarity.
46
+ *
47
+ * When `uid` is absent, only the baseline directory is scanned — identical
48
+ * to the original single-directory behavior.
49
+ */
50
+ export function loadSpecs(projectPath, category, uid) {
51
+ // Build ordered list of (directory, label) pairs to scan
52
+ const layers = buildLayers(projectPath, uid);
53
+ const allSections = [];
54
+ const allMatched = [];
55
+ let totalCount = 0;
56
+ for (const { dir, label } of layers) {
57
+ const { sections, matched } = loadFromDir(dir, category);
58
+ if (sections.length === 0)
59
+ continue;
60
+ // Only add layer headers when multi-layer mode is active (uid provided)
61
+ if (uid) {
62
+ allSections.push(`${label}\n\n${sections.join('\n\n---\n\n')}`);
63
+ }
64
+ else {
65
+ allSections.push(...sections);
66
+ }
67
+ allMatched.push(...matched);
68
+ totalCount += matched.length;
33
69
  }
70
+ return {
71
+ content: allSections.length > 0
72
+ ? `# Project Specs (${totalCount} loaded)\n\n${allSections.join('\n\n---\n\n')}`
73
+ : '',
74
+ matchedSpecs: allMatched,
75
+ totalLoaded: totalCount,
76
+ };
77
+ }
78
+ function buildLayers(projectPath, uid) {
79
+ const baseline = {
80
+ dir: join(projectPath, SPECS_DIR),
81
+ label: LAYER_LABELS.baseline,
82
+ };
83
+ if (!uid)
84
+ return [baseline];
85
+ return [
86
+ baseline,
87
+ { dir: join(projectPath, TEAM_SPECS_DIR), label: LAYER_LABELS.team },
88
+ { dir: join(projectPath, TEAM_SPECS_DIR, uid), label: `# Personal Specs (${uid})` },
89
+ ];
90
+ }
91
+ /**
92
+ * Load spec files from a single directory. Returns empty arrays if the
93
+ * directory does not exist or is unreadable.
94
+ */
95
+ function loadFromDir(specsDir, category) {
96
+ if (!existsSync(specsDir))
97
+ return { sections: [], matched: [] };
34
98
  let files;
35
99
  try {
36
100
  files = readdirSync(specsDir).filter(f => f.endsWith('.md'));
37
101
  }
38
102
  catch {
39
- return { content: '', matchedSpecs: [], totalLoaded: 0 };
103
+ return { sections: [], matched: [] };
40
104
  }
41
105
  const sections = [];
42
106
  const matched = [];
@@ -57,13 +121,7 @@ export function loadSpecs(projectPath, category) {
57
121
  sections.push(body);
58
122
  matched.push(file);
59
123
  }
60
- return {
61
- content: sections.length > 0
62
- ? `# Project Specs (${matched.length} loaded)\n\n${sections.join('\n\n---\n\n')}`
63
- : '',
64
- matchedSpecs: matched,
65
- totalLoaded: matched.length,
66
- };
124
+ return { sections, matched };
67
125
  }
68
126
  // ============================================================================
69
127
  // Internal
@@ -1 +1 @@
1
- {"version":3,"file":"spec-loader.js","sourceRoot":"","sources":["../../../src/tools/spec-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spec-loader.js","sourceRoot":"","sources":["../../../src/tools/spec-loader.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,22 @@ export declare function getMemberByUid(uid: string): MemberRecord | null;
59
59
  * Returns null if git identity is unavailable or no record matches.
60
60
  */
61
61
  export declare function resolveSelf(): MemberRecord | null;
62
+ /**
63
+ * Assert that team mode is active (i.e. the current git user has a member
64
+ * record). Throws a descriptive error if `resolveSelf()` returns null.
65
+ *
66
+ * Returns the resolved `MemberRecord` for convenience so callers can chain:
67
+ * const self = requireTeamMode();
68
+ */
69
+ export declare function requireTeamMode(): MemberRecord;
70
+ /**
71
+ * Assert the current user holds the given role. Calls `resolveSelf()`
72
+ * internally, so it also fails when team mode is off.
73
+ *
74
+ * Throws with a message like:
75
+ * "This operation requires admin role. Your role: member"
76
+ */
77
+ export declare function requireRole(required: 'admin' | 'member'): MemberRecord;
62
78
  /**
63
79
  * Join the team. Idempotent.
64
80
  *
@@ -1 +1 @@
1
- {"version":3,"file":"team-members.d.ts","sourceRoot":"","sources":["../../../src/tools/team-members.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAeH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,2DAA2D;AAC3D,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAUD;;;GAGG;AACH,wBAAgB,eAAe,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAKxE;AAcD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED,yEAAyE;AACzE,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAMD;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,YAAY,EAAE,CAkB5C;AAED,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAI/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,IAAI,YAAY,GAAG,IAAI,CAQjD;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;CAAE,GAAG,YAAY,CAkC3E"}
1
+ {"version":3,"file":"team-members.d.ts","sourceRoot":"","sources":["../../../src/tools/team-members.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAeH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,2DAA2D;AAC3D,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAUD;;;GAGG;AACH,wBAAgB,eAAe,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAKxE;AAcD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED,yEAAyE;AACzE,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAMD;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,YAAY,EAAE,CAkB5C;AAED,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAI/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,IAAI,YAAY,GAAG,IAAI,CAQjD;AAMD;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAQ9C;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,YAAY,CAQtE;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;CAAE,GAAG,YAAY,CAkC3E"}
@@ -127,6 +127,37 @@ export function resolveSelf() {
127
127
  return null;
128
128
  }
129
129
  // ---------------------------------------------------------------------------
130
+ // Guards
131
+ // ---------------------------------------------------------------------------
132
+ /**
133
+ * Assert that team mode is active (i.e. the current git user has a member
134
+ * record). Throws a descriptive error if `resolveSelf()` returns null.
135
+ *
136
+ * Returns the resolved `MemberRecord` for convenience so callers can chain:
137
+ * const self = requireTeamMode();
138
+ */
139
+ export function requireTeamMode() {
140
+ const self = resolveSelf();
141
+ if (!self) {
142
+ throw new Error("Team mode not enabled. Run 'maestro team join' first.");
143
+ }
144
+ return self;
145
+ }
146
+ /**
147
+ * Assert the current user holds the given role. Calls `resolveSelf()`
148
+ * internally, so it also fails when team mode is off.
149
+ *
150
+ * Throws with a message like:
151
+ * "This operation requires admin role. Your role: member"
152
+ */
153
+ export function requireRole(required) {
154
+ const self = requireTeamMode();
155
+ if (self.role !== required) {
156
+ throw new Error(`This operation requires ${required} role. Your role: ${self.role}`);
157
+ }
158
+ return self;
159
+ }
160
+ // ---------------------------------------------------------------------------
130
161
  // Writes
131
162
  // ---------------------------------------------------------------------------
132
163
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"team-members.js","sourceRoot":"","sources":["../../../src/tools/team-members.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"team-members.js","sourceRoot":"","sources":["../../../src/tools/team-members.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "maestro-flow",
3
- "version": "0.3.2",
3
+ "version": "0.3.4",
4
4
  "description": "Workflow orchestration CLI with MCP endpoint support and extensible architecture",
5
5
  "type": "module",
6
6
  "imports": {
@@ -33,7 +33,7 @@
33
33
  "dashboard/package.json"
34
34
  ],
35
35
  "scripts": {
36
- "build": "tsc",
36
+ "build": "cd dashboard && npx tsc -p tsconfig.node.json && cd .. && tsc",
37
37
  "dev": "tsc --watch",
38
38
  "start": "node bin/maestro.js",
39
39
  "mcp": "node bin/maestro-mcp.js",
@@ -0,0 +1,68 @@
1
+ {
2
+ "_template_note": "Template for business-test-report.json. Fields marked with {placeholder} are filled at runtime.",
3
+ "phase": "{phase}",
4
+ "spec_ref": "{spec_ref}",
5
+ "spec_mode": "full|degraded",
6
+ "completed_at": "{ISO timestamp}",
7
+ "execution_mode": "gen-code|agent",
8
+ "iterations": {
9
+ "L1": { "count": 0, "converged": false },
10
+ "L2": { "count": 0, "converged": false },
11
+ "L3": { "count": 0, "converged": false }
12
+ },
13
+ "layers": {
14
+ "L1": { "total": 0, "passed": 0, "failed": 0, "blocked": 0, "pass_rate": 0.0 },
15
+ "L2": { "total": 0, "passed": 0, "failed": 0, "blocked": 0, "pass_rate": 0.0 },
16
+ "L3": { "total": 0, "passed": 0, "failed": 0, "blocked": 0, "pass_rate": 0.0 }
17
+ },
18
+ "requirement_coverage": [
19
+ {
20
+ "_example": true,
21
+ "req_id": "REQ-001",
22
+ "title": "Requirement title",
23
+ "total_criteria": 0,
24
+ "criteria_results": [
25
+ {
26
+ "ac_id": "AC-1",
27
+ "description": "Acceptance criterion text",
28
+ "priority": "critical|high|medium",
29
+ "status": "passed|failed|blocked|untested",
30
+ "tests": ["BT-001"],
31
+ "failure": null
32
+ }
33
+ ],
34
+ "coverage_pct": 0.0,
35
+ "verdict": "verified|partial|unverified"
36
+ }
37
+ ],
38
+ "failures": [
39
+ {
40
+ "_example": true,
41
+ "id": "BF-001",
42
+ "test_id": "BT-001",
43
+ "req_ref": "REQ-001:AC-1",
44
+ "layer": "L1|L2|L3",
45
+ "severity": "critical|high|medium",
46
+ "classification": "code_defect|test_defect|env_issue",
47
+ "description": "Failure description",
48
+ "expected": "Expected behavior",
49
+ "actual": "Actual behavior",
50
+ "fix_suggestion": {
51
+ "file": "src/...",
52
+ "line": 0,
53
+ "direction": "Fix direction"
54
+ }
55
+ }
56
+ ],
57
+ "summary": {
58
+ "total_requirements": 0,
59
+ "fully_verified": 0,
60
+ "partially_verified": 0,
61
+ "unverified": 0,
62
+ "coverage_pct": 0.0,
63
+ "total_scenarios": 0,
64
+ "total_passed": 0,
65
+ "total_failed": 0,
66
+ "total_blocked": 0
67
+ }
68
+ }
@@ -0,0 +1,330 @@
1
+ # Delegate Execution Specification
2
+
3
+ <purpose>
4
+ Unified reference for `maestro delegate` — async task delegation via detached worker processes, with broker-managed lifecycle, message injection, and MCP notifications. Superset of `maestro cli` with async execution, cancellation, and message chaining.
5
+ </purpose>
6
+
7
+ **References**: `~/.maestro/cli-tools.json` (tool config), `~/.maestro/templates/cli/` (protocol + prompt templates)
8
+
9
+ ---
10
+
11
+ ## 1. Quick Reference
12
+
13
+ <context>
14
+
15
+ ### Command Syntax
16
+
17
+ ```bash
18
+ maestro delegate "<PROMPT>" [options]
19
+ ```
20
+
21
+ ### Options
22
+
23
+ | Option | Description | Default |
24
+ |--------|-------------|---------|
25
+ | `--to <tool>` | Tool: gemini, qwen, codex, claude, opencode | First enabled in config |
26
+ | `--mode <mode>` | `analysis` (read-only) or `write` (create/modify/delete) | `analysis` |
27
+ | `--model <model>` | Model override | Tool's `primaryModel` |
28
+ | `--cd <dir>` | Working directory | Current directory |
29
+ | `--rule <template>` | Load protocol + prompt template | — (optional) |
30
+ | `--id <id>` | Execution ID | Auto: `{prefix}-{HHmmss}-{rand4}` |
31
+ | `--resume [id]` | Resume previous session (last if no id) | — |
32
+ | `--includeDirs <dirs>` | Additional directories (comma-separated) | — |
33
+ | `--session <id>` | MCP session ID for completion notifications | Auto-detected |
34
+ | `--backend <type>` | Adapter backend: `direct` or `terminal` (tmux/wezterm) | `direct` |
35
+ | `--async` | Run in background and return immediately | foreground |
36
+
37
+ ### Mode Definition (Authoritative)
38
+
39
+ | Mode | Permission | Auto-Invoke Safe | Use For |
40
+ |------|-----------|------------------|---------|
41
+ | `analysis` | Read-only | Yes | Review, exploration, diagnosis, architecture analysis |
42
+ | `write` | Create/Modify/Delete | No — requires explicit intent | Implementation, bug fixes, refactoring |
43
+
44
+ > `--mode` is the **authoritative** permission control. The `MODE:` field inside prompt text is a hint for the agent — both should be consistent, but `--mode` governs actual behavior.
45
+ </context>
46
+
47
+ ---
48
+
49
+ ## 2. Configuration
50
+
51
+ <context>
52
+
53
+ ### Config File: `~/.maestro/cli-tools.json`
54
+
55
+ | Field | Description |
56
+ |-------|-------------|
57
+ | `enabled` | Tool availability |
58
+ | `primaryModel` | Default model |
59
+ | `secondaryModel` | Fallback model |
60
+ | `tags` | Capability tags (for caller-side routing) |
61
+ | `type` | `builtin` / `cli-wrapper` / `api-endpoint` |
62
+
63
+ > `api-endpoint` tools support **analysis only** — no file write capability.
64
+
65
+ ### Tool Selection
66
+
67
+ 1. Explicit `--to` specified → use it (validate enabled)
68
+ 2. No `--to` → first enabled tool in config order
69
+
70
+ ### Fallback Chain
71
+
72
+ Primary model fails → `secondaryModel` → next enabled tool → first enabled (default).
73
+
74
+ ### MCP Server Startup
75
+
76
+ ```bash
77
+ # Claude Code — load Maestro as development MCP server
78
+ claude --dangerously-load-development-channels server:maestro --dangerously-skip-permissions
79
+ ```
80
+
81
+ With MCP connected, all delegate tools are available programmatically.
82
+ </context>
83
+
84
+ ---
85
+
86
+ ## 3. Prompt Construction
87
+
88
+ <context>
89
+
90
+ ### Assembly Order
91
+
92
+ `maestro delegate` builds the final prompt identically to `maestro cli`:
93
+
94
+ 1. **Mode protocol** — `~/.maestro/templates/cli/protocols/{mode}-protocol.md`
95
+ 2. **User prompt** — the positional `"<PROMPT>"` value
96
+ 3. **Rule template** — `~/.maestro/templates/cli/prompts/{rule}.txt` (if `--rule` specified)
97
+
98
+ ### Prompt Template (6 Fields)
99
+
100
+ ```
101
+ PURPOSE: [goal] + [why] + [success criteria]
102
+ TASK: [step 1] | [step 2] | [step 3]
103
+ MODE: analysis|write
104
+ CONTEXT: @[file patterns] | Memory: [prior work context]
105
+ EXPECTED: [output format] + [quality criteria]
106
+ CONSTRAINTS: [scope limits] | [special requirements]
107
+ ```
108
+
109
+ - **PURPOSE**: What + Why + Success. Not "Analyze code" but "Identify auth vulnerabilities; success = OWASP Top 10 covered"
110
+ - **TASK**: Specific verbs. Not "Review code" but "Scan for SQL injection | Check XSS | Verify CSRF"
111
+ - **MODE**: Must match `--mode` flag
112
+ - **CONTEXT**: File scope + memory from prior work
113
+ - **EXPECTED**: Deliverable format, not just "Report"
114
+ - **CONSTRAINTS**: Task-specific limits (vs `--rule` which loads generic templates)
115
+
116
+ ### CONTEXT: File Patterns + Directory
117
+
118
+ - `@**/*` — all files in working directory (default)
119
+ - `@src/**/*.ts` — scoped pattern
120
+ - `@../shared/**/*` — sibling directory (**requires `--includeDirs`**)
121
+
122
+ **Rule**: If CONTEXT uses `@../dir/**/*`, must add `--includeDirs ../dir`.
123
+
124
+ ```bash
125
+ maestro delegate "CONTEXT: @**/* @../shared/**/*" --to gemini --mode analysis \
126
+ --cd "src/auth" --includeDirs "../shared"
127
+ ```
128
+
129
+ ### CONTEXT: Memory
130
+
131
+ Include when building on previous work:
132
+
133
+ ```
134
+ Memory: Building on auth refactoring (commit abc123), implementing refresh tokens
135
+ Memory: Integration with auth module, using shared error patterns
136
+ ```
137
+
138
+ ### --rule Templates
139
+
140
+ **Universal**: `universal-rigorous-style`, `universal-creative-style`
141
+
142
+ **Analysis**: `analysis-trace-code-execution`, `analysis-diagnose-bug-root-cause`, `analysis-analyze-code-patterns`, `analysis-analyze-technical-document`, `analysis-review-architecture`, `analysis-review-code-quality`, `analysis-analyze-performance`, `analysis-assess-security-risks`
143
+
144
+ **Planning**: `planning-plan-architecture-design`, `planning-breakdown-task-steps`, `planning-design-component-spec`, `planning-plan-migration-strategy`
145
+
146
+ **Development**: `development-implement-feature`, `development-refactor-codebase`, `development-generate-tests`, `development-implement-component-ui`, `development-debug-runtime-issues`
147
+
148
+ ### Complete Example
149
+
150
+ ```bash
151
+ maestro delegate "PURPOSE: Identify OWASP Top 10 vulnerabilities in auth module; success = all critical/high documented with remediation
152
+ TASK: Scan for injection flaws | Check auth bypass vectors | Evaluate session management | Assess data exposure
153
+ MODE: analysis
154
+ CONTEXT: @src/auth/**/* @src/middleware/auth.ts | Memory: Using bcrypt + JWT
155
+ EXPECTED: Severity matrix, file:line references, remediation snippets, priority ranking
156
+ CONSTRAINTS: Focus on authentication | Ignore test files
157
+ " --to gemini --mode analysis --rule analysis-assess-security-risks --cd "src/auth" --async
158
+ ```
159
+ </context>
160
+
161
+ ---
162
+
163
+ ## 4. Execution
164
+
165
+ <execution>
166
+
167
+ ### Execution ID
168
+
169
+ ID prefix: gemini→`gem`, qwen→`qwn`, codex→`cdx`, claude→`cld`, opencode→`opc`
170
+
171
+ Format: `{prefix}-{HHmmss}-{rand4}` (e.g. `gem-143022-a7f2`)
172
+
173
+ Output to stderr: `[MAESTRO_EXEC_ID=<id>]`
174
+
175
+ ```bash
176
+ maestro delegate "analyze code" --to gemini --async # auto-ID: gem-143022-a7f2
177
+ maestro delegate "fix bug" --to gemini --mode write --id my-task-1 # custom ID
178
+ ```
179
+
180
+ ### Session Resume
181
+
182
+ ```bash
183
+ maestro delegate "continue" --to gemini --resume # last session
184
+ maestro delegate "continue" --to gemini --resume <id> # specific session
185
+ ```
186
+
187
+ Resume auto-assembles previous conversation context. Warning emitted when context exceeds 32KB.
188
+
189
+ ### Subcommands
190
+
191
+ ```bash
192
+ # List executions
193
+ maestro delegate show # recent 20
194
+ maestro delegate show --all # up to 100
195
+
196
+ # Inspect state
197
+ maestro delegate status <id> # broker + history + snapshot preview
198
+ maestro delegate status <id> --events 10 # with more broker events
199
+ maestro delegate tail <id> # recent events + history
200
+ maestro delegate tail <id> --events 20 --history 20
201
+
202
+ # Get result
203
+ maestro delegate output <id> # assistant output
204
+ maestro delegate output <id> --verbose # include timestamps
205
+
206
+ # Lifecycle control
207
+ maestro delegate cancel <id> # request cancellation
208
+
209
+ # Message delivery
210
+ maestro delegate message <id> "text" # inject into running worker
211
+ maestro delegate message <id> "text" --delivery after_complete # chain after done
212
+ maestro delegate messages <id> # list queued messages
213
+ ```
214
+
215
+ ### MCP Tools
216
+
217
+ All subcommands are also available as MCP tools for programmatic access:
218
+
219
+ | CLI Subcommand | MCP Tool | Extra Params |
220
+ |---------------|----------|-------------|
221
+ | `message <id> "text"` | `delegate_message` | `delivery` (inject/after_complete) |
222
+ | `messages <id>` | `delegate_messages` | — |
223
+ | `status <id>` | `delegate_status` | `eventLimit` |
224
+ | `output <id>` | `delegate_output` | — |
225
+ | `tail <id>` | `delegate_tail` | `limit` |
226
+ | `cancel <id>` | `delegate_cancel` | — |
227
+
228
+ ### Snapshot & Preview
229
+
230
+ `delegate status` includes a `Preview:` field showing the agent's latest output — built from `assistant_message`, `tool_use` completions, and `file_change` events. This serves the same purpose as `maestro cli watch` without requiring real-time streaming.
231
+
232
+ ### Job Lifecycle
233
+
234
+ ```
235
+ queued → running → completed
236
+ → failed
237
+ → cancelled
238
+
239
+ input_required
240
+ ```
241
+
242
+ ### Message Delivery
243
+
244
+ | Mode | Behavior | Use For |
245
+ |------|----------|---------|
246
+ | `inject` | Routes to running worker stdin; non-interactive adapters auto cancel + relaunch | Supplementary context, course correction |
247
+ | `after_complete` | Queues message; relaunches delegate with queued message on completion | Chained tasks, post-processing |
248
+
249
+ ### Notification Channels
250
+
251
+ Delegate completion notifies the caller through dual channels:
252
+
253
+ 1. **MCP channel** (primary) — push notification with structured meta (exec_id, event_type, status)
254
+ 2. **Hook fallback** — JSONL file read by `delegate-monitor` PostToolUse hook
255
+
256
+ Throttling: `status_update` at 10s, `snapshot` at 15s.
257
+ </execution>
258
+
259
+ ---
260
+
261
+ ## 5. Auto-Invoke Triggers
262
+
263
+ <execution>
264
+
265
+ Proactively invoke `maestro delegate` when these conditions are met — no user confirmation needed for `analysis` mode:
266
+
267
+ | Trigger | Suggested Rule |
268
+ |---------|---------------|
269
+ | Self-repair fails (1+ attempts) | `analysis-diagnose-bug-root-cause` |
270
+ | Ambiguous requirements | `planning-breakdown-task-steps` |
271
+ | Architecture decisions needed | `planning-plan-architecture-design` |
272
+ | Pattern uncertainty | `analysis-analyze-code-patterns` |
273
+ | Critical/security code paths | `analysis-assess-security-risks` |
274
+
275
+ ### Principles
276
+
277
+ - Default `--mode analysis` (safe, read-only)
278
+ - Use `--async` for non-blocking execution; await MCP notification for result
279
+ - Tool fallback: `gemini` → `qwen` → `codex`
280
+ - Rule suggestions are guidelines — choose the best fit
281
+ - Use `inject` for supplementary context mid-execution; `after_complete` for chained multi-step tasks
282
+ - Check `delegate status` for snapshot preview instead of polling output
283
+ </execution>
284
+
285
+ ---
286
+
287
+ ## 6. Workflows
288
+
289
+ <execution>
290
+
291
+ ### Launch → Monitor → Retrieve
292
+
293
+ ```bash
294
+ maestro delegate "analyze auth module" --to gemini --async
295
+ # → [MAESTRO_EXEC_ID=gem-143022-a7f2]
296
+
297
+ maestro delegate status gem-143022-a7f2
298
+ # → status: running, Preview: "Found 3 potential injection points..."
299
+
300
+ # Await MCP channel notification...
301
+ # → [DELEGATE DONE] gem-143022-a7f2 gemini/analysis completed
302
+
303
+ maestro delegate output gem-143022-a7f2
304
+ # → full analysis result
305
+ ```
306
+
307
+ ### Inject Supplementary Context
308
+
309
+ ```bash
310
+ maestro delegate message gem-143022-a7f2 "Also check src/utils/sanitize.ts"
311
+ # → accepted: true, delivery: inject
312
+ ```
313
+
314
+ ### Chain: Analyze → Auto-Fix
315
+
316
+ ```bash
317
+ maestro delegate "find SQL injection vulnerabilities" --to gemini --async
318
+ maestro delegate message gem-143022-a7f2 "Fix all critical vulnerabilities" --delivery after_complete
319
+ # → queued, auto-relaunches after analysis completes
320
+ ```
321
+
322
+ ### Cancel → Redirect
323
+
324
+ ```bash
325
+ maestro delegate cancel gem-143022-a7f2
326
+ # → cancellation requested
327
+
328
+ maestro delegate "analyze only the payment module" --to gemini --async
329
+ ```
330
+ </execution>