@josstei/maestro 1.6.4-rc.1

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 (655) hide show
  1. package/.agents/plugins/marketplace.json +20 -0
  2. package/CHANGELOG.md +485 -0
  3. package/EXAMPLES.md +255 -0
  4. package/GEMINI.md +231 -0
  5. package/LICENSE +201 -0
  6. package/QWEN.md +241 -0
  7. package/README.md +220 -0
  8. package/agents/accessibility_specialist.md +20 -0
  9. package/agents/analytics_engineer.md +22 -0
  10. package/agents/api_designer.md +19 -0
  11. package/agents/architect.md +19 -0
  12. package/agents/cloud_architect.md +19 -0
  13. package/agents/cobol_engineer.md +22 -0
  14. package/agents/code_reviewer.md +17 -0
  15. package/agents/coder.md +22 -0
  16. package/agents/compliance_reviewer.md +19 -0
  17. package/agents/content_strategist.md +19 -0
  18. package/agents/copywriter.md +19 -0
  19. package/agents/data_engineer.md +22 -0
  20. package/agents/database_administrator.md +21 -0
  21. package/agents/db2_dba.md +21 -0
  22. package/agents/debugger.md +19 -0
  23. package/agents/design_system_engineer.md +22 -0
  24. package/agents/devops_engineer.md +23 -0
  25. package/agents/hlasm_assembler_specialist.md +22 -0
  26. package/agents/i18n_specialist.md +21 -0
  27. package/agents/ibm_i_specialist.md +22 -0
  28. package/agents/integration_engineer.md +23 -0
  29. package/agents/ml_engineer.md +23 -0
  30. package/agents/mlops_engineer.md +23 -0
  31. package/agents/mobile_engineer.md +23 -0
  32. package/agents/observability_engineer.md +23 -0
  33. package/agents/performance_engineer.md +21 -0
  34. package/agents/platform_engineer.md +24 -0
  35. package/agents/product_manager.md +20 -0
  36. package/agents/prompt_engineer.md +22 -0
  37. package/agents/refactor.md +22 -0
  38. package/agents/release_manager.md +22 -0
  39. package/agents/security_engineer.md +21 -0
  40. package/agents/seo_specialist.md +21 -0
  41. package/agents/site_reliability_engineer.md +21 -0
  42. package/agents/solutions_architect.md +19 -0
  43. package/agents/technical_writer.md +21 -0
  44. package/agents/tester.md +23 -0
  45. package/agents/ux_designer.md +20 -0
  46. package/agents/zos_sysprog.md +21 -0
  47. package/bin/maestro-mcp-server.js +10 -0
  48. package/claude/.claude-plugin/plugin.json +21 -0
  49. package/claude/.mcp.json +11 -0
  50. package/claude/README.md +191 -0
  51. package/claude/agents/accessibility-specialist.md +36 -0
  52. package/claude/agents/analytics-engineer.md +38 -0
  53. package/claude/agents/api-designer.md +33 -0
  54. package/claude/agents/architect.md +33 -0
  55. package/claude/agents/cloud-architect.md +33 -0
  56. package/claude/agents/cobol-engineer.md +38 -0
  57. package/claude/agents/code-reviewer.md +31 -0
  58. package/claude/agents/coder.md +38 -0
  59. package/claude/agents/compliance-reviewer.md +33 -0
  60. package/claude/agents/content-strategist.md +33 -0
  61. package/claude/agents/copywriter.md +33 -0
  62. package/claude/agents/data-engineer.md +37 -0
  63. package/claude/agents/database-administrator.md +37 -0
  64. package/claude/agents/db2-dba.md +37 -0
  65. package/claude/agents/debugger.md +32 -0
  66. package/claude/agents/design-system-engineer.md +38 -0
  67. package/claude/agents/devops-engineer.md +39 -0
  68. package/claude/agents/hlasm-assembler-specialist.md +38 -0
  69. package/claude/agents/i18n-specialist.md +37 -0
  70. package/claude/agents/ibm-i-specialist.md +38 -0
  71. package/claude/agents/integration-engineer.md +39 -0
  72. package/claude/agents/ml-engineer.md +39 -0
  73. package/claude/agents/mlops-engineer.md +39 -0
  74. package/claude/agents/mobile-engineer.md +39 -0
  75. package/claude/agents/observability-engineer.md +39 -0
  76. package/claude/agents/performance-engineer.md +34 -0
  77. package/claude/agents/platform-engineer.md +40 -0
  78. package/claude/agents/product-manager.md +34 -0
  79. package/claude/agents/prompt-engineer.md +38 -0
  80. package/claude/agents/refactor.md +38 -0
  81. package/claude/agents/release-manager.md +38 -0
  82. package/claude/agents/security-engineer.md +37 -0
  83. package/claude/agents/seo-specialist.md +37 -0
  84. package/claude/agents/site-reliability-engineer.md +37 -0
  85. package/claude/agents/solutions-architect.md +33 -0
  86. package/claude/agents/technical-writer.md +37 -0
  87. package/claude/agents/tester.md +39 -0
  88. package/claude/agents/ux-designer.md +34 -0
  89. package/claude/agents/zos-sysprog.md +37 -0
  90. package/claude/hooks/claude-hooks.json +48 -0
  91. package/claude/mcp/maestro-server.js +9 -0
  92. package/claude/mcp-config.example.json +9 -0
  93. package/claude/scripts/adapters/claude-adapter.js +7 -0
  94. package/claude/scripts/hook-runner.js +8 -0
  95. package/claude/scripts/policy-enforcer.js +294 -0
  96. package/claude/skills/a11y-audit/SKILL.md +26 -0
  97. package/claude/skills/archive/SKILL.md +24 -0
  98. package/claude/skills/code-review/SKILL.md +7 -0
  99. package/claude/skills/compliance-check/SKILL.md +26 -0
  100. package/claude/skills/debug-workflow/SKILL.md +27 -0
  101. package/claude/skills/delegation/SKILL.md +7 -0
  102. package/claude/skills/design-dialogue/SKILL.md +7 -0
  103. package/claude/skills/execute/SKILL.md +38 -0
  104. package/claude/skills/execution/SKILL.md +7 -0
  105. package/claude/skills/implementation-planning/SKILL.md +7 -0
  106. package/claude/skills/orchestrate/SKILL.md +38 -0
  107. package/claude/skills/perf-check/SKILL.md +26 -0
  108. package/claude/skills/resume-session/SKILL.md +38 -0
  109. package/claude/skills/review-code/SKILL.md +27 -0
  110. package/claude/skills/security-audit/SKILL.md +28 -0
  111. package/claude/skills/seo-audit/SKILL.md +26 -0
  112. package/claude/skills/session-management/SKILL.md +7 -0
  113. package/claude/skills/status/SKILL.md +22 -0
  114. package/claude/skills/validation/SKILL.md +7 -0
  115. package/claude/src/agents/accessibility-specialist.md +163 -0
  116. package/claude/src/agents/analytics-engineer.md +182 -0
  117. package/claude/src/agents/api-designer.md +124 -0
  118. package/claude/src/agents/architect.md +120 -0
  119. package/claude/src/agents/cloud-architect.md +134 -0
  120. package/claude/src/agents/cobol-engineer.md +127 -0
  121. package/claude/src/agents/code-reviewer.md +123 -0
  122. package/claude/src/agents/coder.md +132 -0
  123. package/claude/src/agents/compliance-reviewer.md +219 -0
  124. package/claude/src/agents/content-strategist.md +111 -0
  125. package/claude/src/agents/copywriter.md +113 -0
  126. package/claude/src/agents/data-engineer.md +130 -0
  127. package/claude/src/agents/database-administrator.md +126 -0
  128. package/claude/src/agents/db2-dba.md +124 -0
  129. package/claude/src/agents/debugger.md +133 -0
  130. package/claude/src/agents/design-system-engineer.md +258 -0
  131. package/claude/src/agents/devops-engineer.md +138 -0
  132. package/claude/src/agents/hlasm-assembler-specialist.md +134 -0
  133. package/claude/src/agents/i18n-specialist.md +241 -0
  134. package/claude/src/agents/ibm-i-specialist.md +132 -0
  135. package/claude/src/agents/integration-engineer.md +133 -0
  136. package/claude/src/agents/ml-engineer.md +115 -0
  137. package/claude/src/agents/mlops-engineer.md +116 -0
  138. package/claude/src/agents/mobile-engineer.md +115 -0
  139. package/claude/src/agents/observability-engineer.md +133 -0
  140. package/claude/src/agents/performance-engineer.md +139 -0
  141. package/claude/src/agents/platform-engineer.md +129 -0
  142. package/claude/src/agents/product-manager.md +170 -0
  143. package/claude/src/agents/prompt-engineer.md +129 -0
  144. package/claude/src/agents/refactor.md +138 -0
  145. package/claude/src/agents/release-manager.md +132 -0
  146. package/claude/src/agents/security-engineer.md +143 -0
  147. package/claude/src/agents/seo-specialist.md +129 -0
  148. package/claude/src/agents/site-reliability-engineer.md +131 -0
  149. package/claude/src/agents/solutions-architect.md +137 -0
  150. package/claude/src/agents/technical-writer.md +129 -0
  151. package/claude/src/agents/tester.md +135 -0
  152. package/claude/src/agents/ux-designer.md +168 -0
  153. package/claude/src/agents/zos-sysprog.md +134 -0
  154. package/claude/src/config/setting-resolver.js +32 -0
  155. package/claude/src/core/agent-registry.js +67 -0
  156. package/claude/src/core/canonical-source.js +39 -0
  157. package/claude/src/core/env-file-parser.js +82 -0
  158. package/claude/src/core/feature-blocks.js +34 -0
  159. package/claude/src/core/logger.js +12 -0
  160. package/claude/src/core/markdown-state.js +36 -0
  161. package/claude/src/core/policy-rules.js +32 -0
  162. package/claude/src/core/project-root-resolver.js +184 -0
  163. package/claude/src/core/stdin-reader.js +77 -0
  164. package/claude/src/core/version.js +50 -0
  165. package/claude/src/entry-points/core-command-registry.js +37 -0
  166. package/claude/src/entry-points/preamble-builders.js +54 -0
  167. package/claude/src/entry-points/registry.js +199 -0
  168. package/claude/src/entry-points/templates/claude-core-command.md.tmpl +38 -0
  169. package/claude/src/entry-points/templates/claude-skill.md.tmpl +18 -0
  170. package/claude/src/entry-points/templates/codex-core-command.md.tmpl +16 -0
  171. package/claude/src/entry-points/templates/codex-skill.md.tmpl +11 -0
  172. package/claude/src/entry-points/templates/gemini-command.toml.tmpl +17 -0
  173. package/claude/src/entry-points/templates/gemini-core-command.toml.tmpl +30 -0
  174. package/claude/src/generated/agent-registry.json +630 -0
  175. package/claude/src/generated/hook-registry.json +18 -0
  176. package/claude/src/generated/resource-registry.json +16 -0
  177. package/claude/src/hooks/logic/after-agent-logic.js +54 -0
  178. package/claude/src/hooks/logic/before-agent-logic.js +57 -0
  179. package/claude/src/hooks/logic/hook-state.js +127 -0
  180. package/claude/src/hooks/logic/session-end-logic.js +17 -0
  181. package/claude/src/hooks/logic/session-start-logic.js +25 -0
  182. package/claude/src/lib/discovery/index.js +172 -0
  183. package/claude/src/lib/errors/index.js +104 -0
  184. package/claude/src/lib/framework-detection.js +50 -0
  185. package/claude/src/lib/frontmatter/index.js +262 -0
  186. package/claude/src/lib/io/index.js +96 -0
  187. package/claude/src/lib/naming/index.js +94 -0
  188. package/claude/src/lib/validation/index.js +124 -0
  189. package/claude/src/lib/yaml-emit.js +38 -0
  190. package/claude/src/mcp/content/provider.js +68 -0
  191. package/claude/src/mcp/content/runtime-content.js +188 -0
  192. package/claude/src/mcp/contracts/cache-path-rejector.js +39 -0
  193. package/claude/src/mcp/contracts/downstream-context.js +106 -0
  194. package/claude/src/mcp/contracts/plan-schema.js +148 -0
  195. package/claude/src/mcp/contracts/workspace-marker.js +61 -0
  196. package/claude/src/mcp/core/create-server.js +76 -0
  197. package/claude/src/mcp/core/line-reader.js +35 -0
  198. package/claude/src/mcp/core/project-root-cache.js +120 -0
  199. package/claude/src/mcp/core/protocol-dispatcher.js +274 -0
  200. package/claude/src/mcp/core/recovery-hints.js +43 -0
  201. package/claude/src/mcp/core/tool-outcome.js +77 -0
  202. package/claude/src/mcp/core/tool-registry.js +82 -0
  203. package/claude/src/mcp/handlers/assess-task-complexity.js +108 -0
  204. package/claude/src/mcp/handlers/blocker-parser.js +34 -0
  205. package/claude/src/mcp/handlers/design-gate.js +393 -0
  206. package/claude/src/mcp/handlers/get-agent.js +54 -0
  207. package/claude/src/mcp/handlers/get-runtime-context.js +49 -0
  208. package/claude/src/mcp/handlers/get-skill-content.js +51 -0
  209. package/claude/src/mcp/handlers/initialize-workspace.js +45 -0
  210. package/claude/src/mcp/handlers/reconciliation.js +224 -0
  211. package/claude/src/mcp/handlers/resolve-settings.js +39 -0
  212. package/claude/src/mcp/handlers/session-state-core.js +108 -0
  213. package/claude/src/mcp/handlers/session-state-tools.js +562 -0
  214. package/claude/src/mcp/handlers/validate-plan.js +76 -0
  215. package/claude/src/mcp/maestro-server.js +122 -0
  216. package/claude/src/mcp/runtime/runtime-config-map.js +70 -0
  217. package/claude/src/mcp/tool-packs/content/index.js +80 -0
  218. package/claude/src/mcp/tool-packs/contracts.js +30 -0
  219. package/claude/src/mcp/tool-packs/index.js +15 -0
  220. package/claude/src/mcp/tool-packs/session/index.js +243 -0
  221. package/claude/src/mcp/tool-packs/workspace/index.js +98 -0
  222. package/claude/src/mcp/utils/extension-root.js +31 -0
  223. package/claude/src/mcp/validation/agent-checker.js +81 -0
  224. package/claude/src/mcp/validation/dag-checker.js +214 -0
  225. package/claude/src/mcp/validation/file-overlap-checker.js +63 -0
  226. package/claude/src/mcp/validation/schema-checker.js +108 -0
  227. package/claude/src/platforms/claude/runtime-config.js +60 -0
  228. package/claude/src/platforms/shared/adapters/claude-adapter.js +36 -0
  229. package/claude/src/platforms/shared/adapters/conventions.js +29 -0
  230. package/claude/src/platforms/shared/adapters/exit-codes.js +6 -0
  231. package/claude/src/platforms/shared/adapters/factory.js +40 -0
  232. package/claude/src/platforms/shared/agent-names.js +10 -0
  233. package/claude/src/platforms/shared/hook-runner.js +52 -0
  234. package/claude/src/references/architecture.md +139 -0
  235. package/claude/src/references/orchestration-steps.md +193 -0
  236. package/claude/src/skills/shared/code-review/SKILL.md +145 -0
  237. package/claude/src/skills/shared/delegation/SKILL.md +370 -0
  238. package/claude/src/skills/shared/delegation/protocols/agent-base-protocol.md +145 -0
  239. package/claude/src/skills/shared/delegation/protocols/filesystem-safety-protocol.md +31 -0
  240. package/claude/src/skills/shared/design-dialogue/SKILL.md +284 -0
  241. package/claude/src/skills/shared/execution/SKILL.md +258 -0
  242. package/claude/src/skills/shared/implementation-planning/SKILL.md +303 -0
  243. package/claude/src/skills/shared/session-management/SKILL.md +314 -0
  244. package/claude/src/skills/shared/validation/SKILL.md +204 -0
  245. package/claude/src/state/session-state.js +113 -0
  246. package/claude/src/templates/design-document.md +95 -0
  247. package/claude/src/templates/implementation-plan.md +86 -0
  248. package/claude/src/templates/session-state.md +68 -0
  249. package/claude/src/version.json +3 -0
  250. package/commands/maestro/a11y-audit.toml +22 -0
  251. package/commands/maestro/archive.toml +23 -0
  252. package/commands/maestro/compliance-check.toml +22 -0
  253. package/commands/maestro/debug.toml +23 -0
  254. package/commands/maestro/execute.toml +30 -0
  255. package/commands/maestro/orchestrate.toml +30 -0
  256. package/commands/maestro/perf-check.toml +22 -0
  257. package/commands/maestro/resume.toml +38 -0
  258. package/commands/maestro/review.toml +23 -0
  259. package/commands/maestro/security-audit.toml +24 -0
  260. package/commands/maestro/seo-audit.toml +22 -0
  261. package/commands/maestro/status.toml +21 -0
  262. package/docs/architecture.md +310 -0
  263. package/docs/cicd.md +647 -0
  264. package/docs/flow.md +255 -0
  265. package/docs/maestro-cheatsheet.md +199 -0
  266. package/docs/overview.md +141 -0
  267. package/docs/runtime-claude.md +190 -0
  268. package/docs/runtime-codex.md +197 -0
  269. package/docs/runtime-gemini.md +170 -0
  270. package/docs/runtime-qwen.md +147 -0
  271. package/docs/usage.md +312 -0
  272. package/gemini-extension.json +55 -0
  273. package/hooks/adapters/gemini-adapter.js +2 -0
  274. package/hooks/adapters/qwen-adapter.js +2 -0
  275. package/hooks/hook-runner.js +3 -0
  276. package/hooks/hooks.json +56 -0
  277. package/mcp/maestro-server.js +4 -0
  278. package/package.json +93 -0
  279. package/plugins/maestro/.app.json +3 -0
  280. package/plugins/maestro/.codex-plugin/plugin.json +41 -0
  281. package/plugins/maestro/.mcp.json +16 -0
  282. package/plugins/maestro/README.md +57 -0
  283. package/plugins/maestro/references/runtime-guide.md +125 -0
  284. package/plugins/maestro/skills/a11y-audit/SKILL.md +16 -0
  285. package/plugins/maestro/skills/archive/SKILL.md +16 -0
  286. package/plugins/maestro/skills/code-review/SKILL.md +6 -0
  287. package/plugins/maestro/skills/compliance-check/SKILL.md +16 -0
  288. package/plugins/maestro/skills/debug-workflow/SKILL.md +16 -0
  289. package/plugins/maestro/skills/delegation/SKILL.md +6 -0
  290. package/plugins/maestro/skills/design-dialogue/SKILL.md +6 -0
  291. package/plugins/maestro/skills/execute/SKILL.md +16 -0
  292. package/plugins/maestro/skills/execution/SKILL.md +6 -0
  293. package/plugins/maestro/skills/implementation-planning/SKILL.md +6 -0
  294. package/plugins/maestro/skills/orchestrate/SKILL.md +16 -0
  295. package/plugins/maestro/skills/perf-check/SKILL.md +16 -0
  296. package/plugins/maestro/skills/resume-session/SKILL.md +16 -0
  297. package/plugins/maestro/skills/review-code/SKILL.md +16 -0
  298. package/plugins/maestro/skills/security-audit/SKILL.md +16 -0
  299. package/plugins/maestro/skills/seo-audit/SKILL.md +16 -0
  300. package/plugins/maestro/skills/session-management/SKILL.md +6 -0
  301. package/plugins/maestro/skills/status/SKILL.md +14 -0
  302. package/plugins/maestro/skills/validation/SKILL.md +6 -0
  303. package/plugins/maestro/src/agents/accessibility-specialist.md +163 -0
  304. package/plugins/maestro/src/agents/analytics-engineer.md +182 -0
  305. package/plugins/maestro/src/agents/api-designer.md +124 -0
  306. package/plugins/maestro/src/agents/architect.md +120 -0
  307. package/plugins/maestro/src/agents/cloud-architect.md +134 -0
  308. package/plugins/maestro/src/agents/cobol-engineer.md +127 -0
  309. package/plugins/maestro/src/agents/code-reviewer.md +123 -0
  310. package/plugins/maestro/src/agents/coder.md +132 -0
  311. package/plugins/maestro/src/agents/compliance-reviewer.md +219 -0
  312. package/plugins/maestro/src/agents/content-strategist.md +111 -0
  313. package/plugins/maestro/src/agents/copywriter.md +113 -0
  314. package/plugins/maestro/src/agents/data-engineer.md +130 -0
  315. package/plugins/maestro/src/agents/database-administrator.md +126 -0
  316. package/plugins/maestro/src/agents/db2-dba.md +124 -0
  317. package/plugins/maestro/src/agents/debugger.md +133 -0
  318. package/plugins/maestro/src/agents/design-system-engineer.md +258 -0
  319. package/plugins/maestro/src/agents/devops-engineer.md +138 -0
  320. package/plugins/maestro/src/agents/hlasm-assembler-specialist.md +134 -0
  321. package/plugins/maestro/src/agents/i18n-specialist.md +241 -0
  322. package/plugins/maestro/src/agents/ibm-i-specialist.md +132 -0
  323. package/plugins/maestro/src/agents/integration-engineer.md +133 -0
  324. package/plugins/maestro/src/agents/ml-engineer.md +115 -0
  325. package/plugins/maestro/src/agents/mlops-engineer.md +116 -0
  326. package/plugins/maestro/src/agents/mobile-engineer.md +115 -0
  327. package/plugins/maestro/src/agents/observability-engineer.md +133 -0
  328. package/plugins/maestro/src/agents/performance-engineer.md +139 -0
  329. package/plugins/maestro/src/agents/platform-engineer.md +129 -0
  330. package/plugins/maestro/src/agents/product-manager.md +170 -0
  331. package/plugins/maestro/src/agents/prompt-engineer.md +129 -0
  332. package/plugins/maestro/src/agents/refactor.md +138 -0
  333. package/plugins/maestro/src/agents/release-manager.md +132 -0
  334. package/plugins/maestro/src/agents/security-engineer.md +143 -0
  335. package/plugins/maestro/src/agents/seo-specialist.md +129 -0
  336. package/plugins/maestro/src/agents/site-reliability-engineer.md +131 -0
  337. package/plugins/maestro/src/agents/solutions-architect.md +137 -0
  338. package/plugins/maestro/src/agents/technical-writer.md +129 -0
  339. package/plugins/maestro/src/agents/tester.md +135 -0
  340. package/plugins/maestro/src/agents/ux-designer.md +168 -0
  341. package/plugins/maestro/src/agents/zos-sysprog.md +134 -0
  342. package/plugins/maestro/src/config/setting-resolver.js +32 -0
  343. package/plugins/maestro/src/core/agent-registry.js +67 -0
  344. package/plugins/maestro/src/core/canonical-source.js +39 -0
  345. package/plugins/maestro/src/core/env-file-parser.js +82 -0
  346. package/plugins/maestro/src/core/feature-blocks.js +34 -0
  347. package/plugins/maestro/src/core/logger.js +12 -0
  348. package/plugins/maestro/src/core/markdown-state.js +36 -0
  349. package/plugins/maestro/src/core/policy-rules.js +32 -0
  350. package/plugins/maestro/src/core/project-root-resolver.js +184 -0
  351. package/plugins/maestro/src/core/stdin-reader.js +77 -0
  352. package/plugins/maestro/src/core/version.js +50 -0
  353. package/plugins/maestro/src/entry-points/core-command-registry.js +37 -0
  354. package/plugins/maestro/src/entry-points/preamble-builders.js +54 -0
  355. package/plugins/maestro/src/entry-points/registry.js +199 -0
  356. package/plugins/maestro/src/entry-points/templates/claude-core-command.md.tmpl +38 -0
  357. package/plugins/maestro/src/entry-points/templates/claude-skill.md.tmpl +18 -0
  358. package/plugins/maestro/src/entry-points/templates/codex-core-command.md.tmpl +16 -0
  359. package/plugins/maestro/src/entry-points/templates/codex-skill.md.tmpl +11 -0
  360. package/plugins/maestro/src/entry-points/templates/gemini-command.toml.tmpl +17 -0
  361. package/plugins/maestro/src/entry-points/templates/gemini-core-command.toml.tmpl +30 -0
  362. package/plugins/maestro/src/generated/agent-registry.json +630 -0
  363. package/plugins/maestro/src/generated/hook-registry.json +18 -0
  364. package/plugins/maestro/src/generated/resource-registry.json +16 -0
  365. package/plugins/maestro/src/hooks/logic/after-agent-logic.js +54 -0
  366. package/plugins/maestro/src/hooks/logic/before-agent-logic.js +57 -0
  367. package/plugins/maestro/src/hooks/logic/hook-state.js +127 -0
  368. package/plugins/maestro/src/hooks/logic/session-end-logic.js +17 -0
  369. package/plugins/maestro/src/hooks/logic/session-start-logic.js +25 -0
  370. package/plugins/maestro/src/lib/discovery/index.js +172 -0
  371. package/plugins/maestro/src/lib/errors/index.js +104 -0
  372. package/plugins/maestro/src/lib/framework-detection.js +50 -0
  373. package/plugins/maestro/src/lib/frontmatter/index.js +262 -0
  374. package/plugins/maestro/src/lib/io/index.js +96 -0
  375. package/plugins/maestro/src/lib/naming/index.js +94 -0
  376. package/plugins/maestro/src/lib/validation/index.js +124 -0
  377. package/plugins/maestro/src/lib/yaml-emit.js +38 -0
  378. package/plugins/maestro/src/mcp/content/provider.js +68 -0
  379. package/plugins/maestro/src/mcp/content/runtime-content.js +188 -0
  380. package/plugins/maestro/src/mcp/contracts/cache-path-rejector.js +39 -0
  381. package/plugins/maestro/src/mcp/contracts/downstream-context.js +106 -0
  382. package/plugins/maestro/src/mcp/contracts/plan-schema.js +148 -0
  383. package/plugins/maestro/src/mcp/contracts/workspace-marker.js +61 -0
  384. package/plugins/maestro/src/mcp/core/create-server.js +76 -0
  385. package/plugins/maestro/src/mcp/core/line-reader.js +35 -0
  386. package/plugins/maestro/src/mcp/core/project-root-cache.js +120 -0
  387. package/plugins/maestro/src/mcp/core/protocol-dispatcher.js +274 -0
  388. package/plugins/maestro/src/mcp/core/recovery-hints.js +43 -0
  389. package/plugins/maestro/src/mcp/core/tool-outcome.js +77 -0
  390. package/plugins/maestro/src/mcp/core/tool-registry.js +82 -0
  391. package/plugins/maestro/src/mcp/handlers/assess-task-complexity.js +108 -0
  392. package/plugins/maestro/src/mcp/handlers/blocker-parser.js +34 -0
  393. package/plugins/maestro/src/mcp/handlers/design-gate.js +393 -0
  394. package/plugins/maestro/src/mcp/handlers/get-agent.js +54 -0
  395. package/plugins/maestro/src/mcp/handlers/get-runtime-context.js +49 -0
  396. package/plugins/maestro/src/mcp/handlers/get-skill-content.js +51 -0
  397. package/plugins/maestro/src/mcp/handlers/initialize-workspace.js +45 -0
  398. package/plugins/maestro/src/mcp/handlers/reconciliation.js +224 -0
  399. package/plugins/maestro/src/mcp/handlers/resolve-settings.js +39 -0
  400. package/plugins/maestro/src/mcp/handlers/session-state-core.js +108 -0
  401. package/plugins/maestro/src/mcp/handlers/session-state-tools.js +562 -0
  402. package/plugins/maestro/src/mcp/handlers/validate-plan.js +76 -0
  403. package/plugins/maestro/src/mcp/maestro-server.js +122 -0
  404. package/plugins/maestro/src/mcp/runtime/runtime-config-map.js +70 -0
  405. package/plugins/maestro/src/mcp/tool-packs/content/index.js +80 -0
  406. package/plugins/maestro/src/mcp/tool-packs/contracts.js +30 -0
  407. package/plugins/maestro/src/mcp/tool-packs/index.js +15 -0
  408. package/plugins/maestro/src/mcp/tool-packs/session/index.js +243 -0
  409. package/plugins/maestro/src/mcp/tool-packs/workspace/index.js +98 -0
  410. package/plugins/maestro/src/mcp/utils/extension-root.js +31 -0
  411. package/plugins/maestro/src/mcp/validation/agent-checker.js +81 -0
  412. package/plugins/maestro/src/mcp/validation/dag-checker.js +214 -0
  413. package/plugins/maestro/src/mcp/validation/file-overlap-checker.js +63 -0
  414. package/plugins/maestro/src/mcp/validation/schema-checker.js +108 -0
  415. package/plugins/maestro/src/platforms/codex/runtime-config.js +58 -0
  416. package/plugins/maestro/src/platforms/shared/adapters/conventions.js +29 -0
  417. package/plugins/maestro/src/platforms/shared/adapters/exit-codes.js +6 -0
  418. package/plugins/maestro/src/platforms/shared/adapters/factory.js +40 -0
  419. package/plugins/maestro/src/platforms/shared/agent-names.js +10 -0
  420. package/plugins/maestro/src/platforms/shared/hook-runner.js +52 -0
  421. package/plugins/maestro/src/references/architecture.md +139 -0
  422. package/plugins/maestro/src/references/orchestration-steps.md +193 -0
  423. package/plugins/maestro/src/skills/shared/code-review/SKILL.md +145 -0
  424. package/plugins/maestro/src/skills/shared/delegation/SKILL.md +370 -0
  425. package/plugins/maestro/src/skills/shared/delegation/protocols/agent-base-protocol.md +145 -0
  426. package/plugins/maestro/src/skills/shared/delegation/protocols/filesystem-safety-protocol.md +31 -0
  427. package/plugins/maestro/src/skills/shared/design-dialogue/SKILL.md +284 -0
  428. package/plugins/maestro/src/skills/shared/execution/SKILL.md +258 -0
  429. package/plugins/maestro/src/skills/shared/implementation-planning/SKILL.md +303 -0
  430. package/plugins/maestro/src/skills/shared/session-management/SKILL.md +314 -0
  431. package/plugins/maestro/src/skills/shared/validation/SKILL.md +204 -0
  432. package/plugins/maestro/src/state/session-state.js +113 -0
  433. package/plugins/maestro/src/templates/design-document.md +95 -0
  434. package/plugins/maestro/src/templates/implementation-plan.md +86 -0
  435. package/plugins/maestro/src/templates/session-state.md +68 -0
  436. package/plugins/maestro/src/version.json +3 -0
  437. package/policies/maestro.toml +44 -0
  438. package/qwen/agents/accessibility_specialist.md +18 -0
  439. package/qwen/agents/analytics_engineer.md +20 -0
  440. package/qwen/agents/api_designer.md +17 -0
  441. package/qwen/agents/architect.md +17 -0
  442. package/qwen/agents/cloud_architect.md +17 -0
  443. package/qwen/agents/cobol_engineer.md +20 -0
  444. package/qwen/agents/code_reviewer.md +15 -0
  445. package/qwen/agents/coder.md +20 -0
  446. package/qwen/agents/compliance_reviewer.md +17 -0
  447. package/qwen/agents/content_strategist.md +17 -0
  448. package/qwen/agents/copywriter.md +17 -0
  449. package/qwen/agents/data_engineer.md +20 -0
  450. package/qwen/agents/database_administrator.md +19 -0
  451. package/qwen/agents/db2_dba.md +19 -0
  452. package/qwen/agents/debugger.md +17 -0
  453. package/qwen/agents/design_system_engineer.md +20 -0
  454. package/qwen/agents/devops_engineer.md +21 -0
  455. package/qwen/agents/hlasm_assembler_specialist.md +20 -0
  456. package/qwen/agents/i18n_specialist.md +19 -0
  457. package/qwen/agents/ibm_i_specialist.md +20 -0
  458. package/qwen/agents/integration_engineer.md +21 -0
  459. package/qwen/agents/ml_engineer.md +21 -0
  460. package/qwen/agents/mlops_engineer.md +21 -0
  461. package/qwen/agents/mobile_engineer.md +21 -0
  462. package/qwen/agents/observability_engineer.md +21 -0
  463. package/qwen/agents/performance_engineer.md +19 -0
  464. package/qwen/agents/platform_engineer.md +22 -0
  465. package/qwen/agents/product_manager.md +18 -0
  466. package/qwen/agents/prompt_engineer.md +20 -0
  467. package/qwen/agents/refactor.md +20 -0
  468. package/qwen/agents/release_manager.md +20 -0
  469. package/qwen/agents/security_engineer.md +19 -0
  470. package/qwen/agents/seo_specialist.md +19 -0
  471. package/qwen/agents/site_reliability_engineer.md +19 -0
  472. package/qwen/agents/solutions_architect.md +17 -0
  473. package/qwen/agents/technical_writer.md +19 -0
  474. package/qwen/agents/tester.md +21 -0
  475. package/qwen/agents/ux_designer.md +18 -0
  476. package/qwen/agents/zos_sysprog.md +19 -0
  477. package/qwen/hooks.json +56 -0
  478. package/qwen-extension.json +55 -0
  479. package/scripts/check-layer-boundaries.js +74 -0
  480. package/scripts/generate.js +155 -0
  481. package/scripts/install-codex-plugin.js +167 -0
  482. package/scripts/install-git-hooks.js +43 -0
  483. package/scripts/npm-publish-idempotent.js +150 -0
  484. package/scripts/package-release-artifacts.js +156 -0
  485. package/scripts/release-artifact-manifest.js +378 -0
  486. package/scripts/release-version-metadata.js +129 -0
  487. package/scripts/update-versions.js +33 -0
  488. package/scripts/verify-npm-pack.js +85 -0
  489. package/scripts/verify-release-artifacts.js +95 -0
  490. package/src/agents/accessibility-specialist.md +163 -0
  491. package/src/agents/analytics-engineer.md +182 -0
  492. package/src/agents/api-designer.md +124 -0
  493. package/src/agents/architect.md +120 -0
  494. package/src/agents/cloud-architect.md +134 -0
  495. package/src/agents/cobol-engineer.md +127 -0
  496. package/src/agents/code-reviewer.md +123 -0
  497. package/src/agents/coder.md +132 -0
  498. package/src/agents/compliance-reviewer.md +219 -0
  499. package/src/agents/content-strategist.md +111 -0
  500. package/src/agents/copywriter.md +113 -0
  501. package/src/agents/data-engineer.md +130 -0
  502. package/src/agents/database-administrator.md +126 -0
  503. package/src/agents/db2-dba.md +124 -0
  504. package/src/agents/debugger.md +133 -0
  505. package/src/agents/design-system-engineer.md +258 -0
  506. package/src/agents/devops-engineer.md +138 -0
  507. package/src/agents/hlasm-assembler-specialist.md +134 -0
  508. package/src/agents/i18n-specialist.md +241 -0
  509. package/src/agents/ibm-i-specialist.md +132 -0
  510. package/src/agents/integration-engineer.md +133 -0
  511. package/src/agents/ml-engineer.md +115 -0
  512. package/src/agents/mlops-engineer.md +116 -0
  513. package/src/agents/mobile-engineer.md +115 -0
  514. package/src/agents/observability-engineer.md +133 -0
  515. package/src/agents/performance-engineer.md +139 -0
  516. package/src/agents/platform-engineer.md +129 -0
  517. package/src/agents/product-manager.md +170 -0
  518. package/src/agents/prompt-engineer.md +129 -0
  519. package/src/agents/refactor.md +138 -0
  520. package/src/agents/release-manager.md +132 -0
  521. package/src/agents/security-engineer.md +143 -0
  522. package/src/agents/seo-specialist.md +129 -0
  523. package/src/agents/site-reliability-engineer.md +131 -0
  524. package/src/agents/solutions-architect.md +137 -0
  525. package/src/agents/technical-writer.md +129 -0
  526. package/src/agents/tester.md +135 -0
  527. package/src/agents/ux-designer.md +168 -0
  528. package/src/agents/zos-sysprog.md +134 -0
  529. package/src/config/setting-resolver.js +32 -0
  530. package/src/core/agent-registry.js +67 -0
  531. package/src/core/canonical-source.js +39 -0
  532. package/src/core/env-file-parser.js +82 -0
  533. package/src/core/feature-blocks.js +34 -0
  534. package/src/core/logger.js +12 -0
  535. package/src/core/markdown-state.js +36 -0
  536. package/src/core/policy-rules.js +32 -0
  537. package/src/core/project-root-resolver.js +184 -0
  538. package/src/core/stdin-reader.js +77 -0
  539. package/src/core/version.js +50 -0
  540. package/src/entry-points/core-command-registry.js +37 -0
  541. package/src/entry-points/preamble-builders.js +54 -0
  542. package/src/entry-points/registry.js +199 -0
  543. package/src/entry-points/templates/claude-core-command.md.tmpl +38 -0
  544. package/src/entry-points/templates/claude-skill.md.tmpl +18 -0
  545. package/src/entry-points/templates/codex-core-command.md.tmpl +16 -0
  546. package/src/entry-points/templates/codex-skill.md.tmpl +11 -0
  547. package/src/entry-points/templates/gemini-command.toml.tmpl +17 -0
  548. package/src/entry-points/templates/gemini-core-command.toml.tmpl +30 -0
  549. package/src/generated/agent-registry.json +630 -0
  550. package/src/generated/hook-registry.json +18 -0
  551. package/src/generated/resource-registry.json +16 -0
  552. package/src/generator/entry-point-expander.js +182 -0
  553. package/src/generator/file-writer.js +167 -0
  554. package/src/generator/generation-session.js +62 -0
  555. package/src/generator/manifest-curator.js +31 -0
  556. package/src/generator/manifest-expander.js +256 -0
  557. package/src/generator/payload-builder.js +217 -0
  558. package/src/generator/registry-scanner.js +130 -0
  559. package/src/generator/stale-pruner.js +101 -0
  560. package/src/hooks/logic/after-agent-logic.js +54 -0
  561. package/src/hooks/logic/before-agent-logic.js +57 -0
  562. package/src/hooks/logic/hook-state.js +127 -0
  563. package/src/hooks/logic/session-end-logic.js +17 -0
  564. package/src/hooks/logic/session-start-logic.js +25 -0
  565. package/src/lib/discovery/index.js +172 -0
  566. package/src/lib/errors/index.js +104 -0
  567. package/src/lib/framework-detection.js +50 -0
  568. package/src/lib/frontmatter/index.js +262 -0
  569. package/src/lib/io/index.js +96 -0
  570. package/src/lib/naming/index.js +94 -0
  571. package/src/lib/validation/index.js +124 -0
  572. package/src/lib/yaml-emit.js +38 -0
  573. package/src/manifest.js +11 -0
  574. package/src/mcp/content/provider.js +68 -0
  575. package/src/mcp/content/runtime-content.js +188 -0
  576. package/src/mcp/contracts/cache-path-rejector.js +39 -0
  577. package/src/mcp/contracts/downstream-context.js +106 -0
  578. package/src/mcp/contracts/plan-schema.js +148 -0
  579. package/src/mcp/contracts/workspace-marker.js +61 -0
  580. package/src/mcp/core/create-server.js +76 -0
  581. package/src/mcp/core/line-reader.js +35 -0
  582. package/src/mcp/core/project-root-cache.js +120 -0
  583. package/src/mcp/core/protocol-dispatcher.js +274 -0
  584. package/src/mcp/core/recovery-hints.js +43 -0
  585. package/src/mcp/core/tool-outcome.js +77 -0
  586. package/src/mcp/core/tool-registry.js +82 -0
  587. package/src/mcp/handlers/assess-task-complexity.js +108 -0
  588. package/src/mcp/handlers/blocker-parser.js +34 -0
  589. package/src/mcp/handlers/design-gate.js +393 -0
  590. package/src/mcp/handlers/get-agent.js +54 -0
  591. package/src/mcp/handlers/get-runtime-context.js +49 -0
  592. package/src/mcp/handlers/get-skill-content.js +51 -0
  593. package/src/mcp/handlers/initialize-workspace.js +45 -0
  594. package/src/mcp/handlers/reconciliation.js +224 -0
  595. package/src/mcp/handlers/resolve-settings.js +39 -0
  596. package/src/mcp/handlers/session-state-core.js +108 -0
  597. package/src/mcp/handlers/session-state-tools.js +562 -0
  598. package/src/mcp/handlers/validate-plan.js +76 -0
  599. package/src/mcp/maestro-server.js +122 -0
  600. package/src/mcp/runtime/runtime-config-map.js +70 -0
  601. package/src/mcp/tool-packs/content/index.js +80 -0
  602. package/src/mcp/tool-packs/contracts.js +30 -0
  603. package/src/mcp/tool-packs/index.js +15 -0
  604. package/src/mcp/tool-packs/session/index.js +243 -0
  605. package/src/mcp/tool-packs/workspace/index.js +98 -0
  606. package/src/mcp/utils/extension-root.js +31 -0
  607. package/src/mcp/validation/agent-checker.js +81 -0
  608. package/src/mcp/validation/dag-checker.js +214 -0
  609. package/src/mcp/validation/file-overlap-checker.js +63 -0
  610. package/src/mcp/validation/schema-checker.js +108 -0
  611. package/src/platforms/claude/metadata.js +96 -0
  612. package/src/platforms/claude/runtime-config.js +60 -0
  613. package/src/platforms/codex/metadata.js +107 -0
  614. package/src/platforms/codex/runtime-config.js +58 -0
  615. package/src/platforms/gemini/metadata.js +27 -0
  616. package/src/platforms/gemini/runtime-config.js +62 -0
  617. package/src/platforms/metadata-shared.js +131 -0
  618. package/src/platforms/metadata.js +29 -0
  619. package/src/platforms/qwen/metadata.js +27 -0
  620. package/src/platforms/qwen/runtime-config.js +62 -0
  621. package/src/platforms/shared/adapters/claude-adapter.js +36 -0
  622. package/src/platforms/shared/adapters/conventions.js +29 -0
  623. package/src/platforms/shared/adapters/exit-codes.js +6 -0
  624. package/src/platforms/shared/adapters/factory.js +40 -0
  625. package/src/platforms/shared/adapters/gemini-adapter.js +34 -0
  626. package/src/platforms/shared/adapters/qwen-adapter.js +93 -0
  627. package/src/platforms/shared/agent-names.js +10 -0
  628. package/src/platforms/shared/hook-runner.js +52 -0
  629. package/src/references/architecture.md +139 -0
  630. package/src/references/orchestration-steps.md +193 -0
  631. package/src/scripts/ensure-workspace.js +14 -0
  632. package/src/scripts/read-active-session.js +26 -0
  633. package/src/scripts/read-setting.js +18 -0
  634. package/src/scripts/read-state.js +17 -0
  635. package/src/scripts/write-state.js +22 -0
  636. package/src/skills/shared/code-review/SKILL.md +145 -0
  637. package/src/skills/shared/delegation/SKILL.md +370 -0
  638. package/src/skills/shared/delegation/protocols/agent-base-protocol.md +145 -0
  639. package/src/skills/shared/delegation/protocols/filesystem-safety-protocol.md +31 -0
  640. package/src/skills/shared/design-dialogue/SKILL.md +284 -0
  641. package/src/skills/shared/execution/SKILL.md +258 -0
  642. package/src/skills/shared/implementation-planning/SKILL.md +303 -0
  643. package/src/skills/shared/session-management/SKILL.md +314 -0
  644. package/src/skills/shared/validation/SKILL.md +204 -0
  645. package/src/state/session-state.js +113 -0
  646. package/src/templates/design-document.md +95 -0
  647. package/src/templates/implementation-plan.md +86 -0
  648. package/src/templates/session-state.md +68 -0
  649. package/src/transforms/agent-stub.js +29 -0
  650. package/src/transforms/extract-examples.js +63 -0
  651. package/src/transforms/index.js +35 -0
  652. package/src/transforms/parse-frontmatter.js +23 -0
  653. package/src/transforms/rebuild-frontmatter.js +147 -0
  654. package/src/transforms/skill-discovery-stub.js +27 -0
  655. package/src/transforms/skill-metadata.js +14 -0
@@ -0,0 +1,93 @@
1
+ 'use strict';
2
+
3
+ const { defineAdapter } = require('./factory');
4
+ const { EXIT_SUCCESS, EXIT_BLOCK } = require('./exit-codes');
5
+
6
+ /**
7
+ * Qwen Code hook I/O adapter.
8
+ * Normalizes Qwen Code stdin JSON to the internal context contract
9
+ * and formats internal responses for Qwen Code stdout.
10
+ *
11
+ * Each hook event has a distinct payload in Qwen. This adapter
12
+ * normalizes to an internal contract and serializes per-event output.
13
+ *
14
+ * Event reference:
15
+ * - SessionStart: session bootstrap (common + permission_mode, source, model)
16
+ * - SessionEnd: session teardown (common + reason)
17
+ * - SubagentStart: subagent lifecycle start (common + agent_id, agent_type, permission_mode)
18
+ * - SubagentStop: subagent lifecycle end (common + agent_id, agent_type, stop_hook_active, last_assistant_message)
19
+ * - PreToolUse: permission-oriented (uses permissionDecision output, not handled here)
20
+ *
21
+ * Internal contract fields:
22
+ * event, sessionId, cwd, transcriptPath, permissionMode,
23
+ * agentId, agentName, agentInput, agentResult, source, model, reason, stopHookActive
24
+ *
25
+ * Output contract (for non-permission hooks):
26
+ * { continue, decision, reason?, hookSpecificOutput?: { additionalContext } }
27
+ */
28
+
29
+ function normalizeInput(raw) {
30
+ const event = raw.hook_event_name || '';
31
+
32
+ return {
33
+ event,
34
+ sessionId: raw.session_id || '',
35
+ cwd: raw.cwd || '',
36
+ transcriptPath: raw.transcript_path || '',
37
+ permissionMode: raw.permission_mode || '',
38
+ agentId: raw.agent_id || '',
39
+ agentName: raw.agent_type || null,
40
+ agentInput: null,
41
+ agentResult: event === 'SubagentStop'
42
+ ? (raw.last_assistant_message || '')
43
+ : null,
44
+ source: raw.source || '',
45
+ model: raw.model || '',
46
+ reason: raw.reason || '',
47
+ stopHookActive: raw.stop_hook_active === true || raw.stop_hook_active === 'true',
48
+ };
49
+ }
50
+
51
+ /**
52
+ * Serialize internal result to Qwen-native output.
53
+ *
54
+ * Result from logic: { action: 'allow'|'deny', message: string|null, reason: string|null }
55
+ *
56
+ * For SessionStart, SubagentStart, SubagentStop, SessionEnd:
57
+ * standard output + optional hookSpecificOutput.additionalContext
58
+ */
59
+ function formatOutput(result) {
60
+ const isDeny = result.action === 'deny';
61
+ const out = {};
62
+
63
+ // Only emit decision/reason when explicitly controlling flow
64
+ if (isDeny) {
65
+ out.continue = false;
66
+ out.decision = 'block';
67
+ out.reason = result.reason || 'Blocked by hook';
68
+ } else if (result.reason) {
69
+ out.decision = 'allow';
70
+ out.reason = result.reason;
71
+ }
72
+
73
+ if (result.message) {
74
+ out.hookSpecificOutput = { additionalContext: result.message };
75
+ }
76
+
77
+ return out;
78
+ }
79
+
80
+ function errorFallback() {
81
+ return { continue: true, decision: 'allow' };
82
+ }
83
+
84
+ function getExitCode(result) {
85
+ return result.action === 'deny' ? EXIT_BLOCK : EXIT_SUCCESS;
86
+ }
87
+
88
+ module.exports = defineAdapter({
89
+ normalizeInput,
90
+ formatOutput,
91
+ errorFallback,
92
+ getExitCode,
93
+ });
@@ -0,0 +1,10 @@
1
+ module.exports = {
2
+ agentNames: [
3
+ 'accessibility-specialist', 'analytics-engineer', 'api-designer', 'architect',
4
+ 'code-reviewer', 'coder', 'compliance-reviewer', 'content-strategist',
5
+ 'copywriter', 'data-engineer', 'debugger', 'design-system-engineer',
6
+ 'devops-engineer', 'i18n-specialist', 'performance-engineer', 'product-manager',
7
+ 'refactor', 'security-engineer', 'seo-specialist', 'technical-writer',
8
+ 'tester', 'ux-designer',
9
+ ],
10
+ };
@@ -0,0 +1,52 @@
1
+ 'use strict';
2
+
3
+ const fs = require('node:fs');
4
+ const path = require('node:path');
5
+
6
+ const { isAdapterFile, extractRuntime } = require('./adapters/conventions');
7
+
8
+ const ADAPTERS_DIR = path.join(__dirname, 'adapters');
9
+ const VALID_RUNTIMES = new Set(
10
+ fs.readdirSync(ADAPTERS_DIR)
11
+ .filter(isAdapterFile)
12
+ .map(extractRuntime)
13
+ );
14
+
15
+ const HOOK_MAP = require('../../generated/hook-registry.json');
16
+
17
+ const runtime = process.argv[2];
18
+ const hookName = process.argv[3];
19
+
20
+ if (!runtime || !hookName) {
21
+ process.stderr.write('Usage: node hook-runner.js <runtime> <hook-name>\n');
22
+ process.exit(1);
23
+ }
24
+
25
+ if (!VALID_RUNTIMES.has(runtime)) {
26
+ process.stderr.write('Unknown runtime: ' + runtime + '\n');
27
+ process.exit(1);
28
+ }
29
+
30
+ const hookEntry = HOOK_MAP[hookName];
31
+ if (!hookEntry) {
32
+ process.stderr.write('Unknown hook: ' + hookName + '\n');
33
+ process.exit(1);
34
+ }
35
+
36
+ const adapter = require('./adapters/' + runtime + '-adapter');
37
+ const logicModule = require(path.resolve(__dirname, '../../', hookEntry.module));
38
+ const handler = logicModule[hookEntry.fn];
39
+
40
+ adapter.readBoundedStdin()
41
+ .then((raw) => {
42
+ const ctx = adapter.normalizeInput(raw);
43
+ return handler(ctx);
44
+ })
45
+ .then((result) => {
46
+ process.stdout.write(JSON.stringify(adapter.formatOutput(result)) + '\n');
47
+ process.exitCode = adapter.getExitCode(result);
48
+ })
49
+ .catch((err) => {
50
+ process.stderr.write('Hook error: ' + err.message + '\n');
51
+ process.stdout.write(JSON.stringify(adapter.errorFallback()) + '\n');
52
+ });
@@ -0,0 +1,139 @@
1
+ # Maestro Architecture Reference
2
+
3
+ ## Orchestration Model
4
+
5
+ Maestro is a multi-agent orchestration system that coordinates 39 specialized agents through a structured 4-phase workflow:
6
+
7
+ 1. **Design** — Structured requirements discovery, tradeoff-backed design questions, and design approval
8
+ 2. **Plan** — Phase-based implementation planning with dependencies, file ownership, and validation gates
9
+ 3. **Execute** — Delegated execution through child agents in parallel or sequential mode
10
+ 4. **Complete** — Deliverable verification, code review gate, archival, and summary
11
+
12
+ The TechLead orchestrator does not implement code directly. It designs, plans, delegates to specialized agents, validates results, and reports outcomes.
13
+
14
+ ## Agent Roster
15
+
16
+ | Agent | Focus |
17
+ | --- | --- |
18
+ | `accessibility-specialist` | WCAG compliance auditing, ARIA review |
19
+ | `analytics-engineer` | Event tracking, conversion funnels |
20
+ | `api-designer` | API contracts and endpoint design |
21
+ | `architect` | System design and architecture decisions |
22
+ | `cloud-architect` | AWS/GCP/Azure topology, IaC, multi-region design |
23
+ | `cobol-engineer` | Mainframe COBOL, JCL, CICS/IMS on z/OS |
24
+ | `code-reviewer` | Code quality review and bug identification |
25
+ | `coder` | Feature implementation |
26
+ | `compliance-reviewer` | Legal and regulatory compliance (GDPR, CCPA, licensing) |
27
+ | `content-strategist` | Content planning and strategy |
28
+ | `copywriter` | Marketing copy and landing-page content |
29
+ | `data-engineer` | Schema design, queries, and data pipelines |
30
+ | `database-administrator` | RDBMS tuning, indexes, migration safety (Postgres, MySQL, Oracle, SQL Server) |
31
+ | `db2-dba` | DB2 for z/OS and LUW, REORG, RUNSTATS, bind/rebind |
32
+ | `debugger` | Root cause analysis and defect investigation |
33
+ | `design-system-engineer` | Design tokens and theming |
34
+ | `devops-engineer` | CI/CD, containerization, and deployment |
35
+ | `hlasm-assembler-specialist` | IBM HLASM for z/OS, macros, SVCs |
36
+ | `i18n-specialist` | Internationalization and locale management |
37
+ | `ibm-i-specialist` | IBM i RPG/CL, DB2 for i, OS/400 |
38
+ | `integration-engineer` | B2B APIs, ETL, message brokers (Kafka, MQ) |
39
+ | `ml-engineer` | Model training, feature pipelines, evaluation |
40
+ | `mlops-engineer` | Model registry, CI/CD for models, drift detection |
41
+ | `mobile-engineer` | iOS/Android/React Native/Flutter platform work |
42
+ | `observability-engineer` | Metrics, logs, traces, OpenTelemetry, dashboards |
43
+ | `performance-engineer` | Performance profiling and optimization |
44
+ | `platform-engineer` | Internal developer platforms, paved paths |
45
+ | `product-manager` | Requirements and product strategy |
46
+ | `prompt-engineer` | LLM prompt design, few-shot, RAG tuning |
47
+ | `refactor` | Structural refactoring and technical debt |
48
+ | `release-manager` | Release notes, changelogs, rollout planning |
49
+ | `security-engineer` | Security assessment and vulnerability analysis |
50
+ | `seo-specialist` | Technical SEO auditing and structured data |
51
+ | `site-reliability-engineer` | SLOs, error budgets, runbooks, postmortems |
52
+ | `solutions-architect` | Enterprise integration, cross-team architecture |
53
+ | `technical-writer` | Documentation and technical writing |
54
+ | `tester` | Test implementation and coverage analysis |
55
+ | `ux-designer` | User experience design |
56
+ | `zos-sysprog` | z/OS systems programming, JCL, USS, RACF |
57
+
58
+ Agent names use the format specified by the runtime's Agent Naming Convention section. When delegating, use the exact name from the roster.
59
+
60
+ ## State Contract
61
+
62
+ <!-- @feature scriptBasedStateContract -->
63
+ Maestro maintains session state under `<state_dir>` (resolved from `MAESTRO_STATE_DIR`):
64
+
65
+ - **Active session**: `<state_dir>/state/active-session.md`
66
+ - **Plans**: `<state_dir>/plans/`
67
+ - **Archives**: `<state_dir>/state/archive/`, `<state_dir>/plans/archive/`
68
+
69
+ State scripts:
70
+
71
+ - `node ${extensionPath}/src/scripts/ensure-workspace.js <state_dir>` — initialize workspace directories
72
+ - `node ${extensionPath}/src/scripts/read-active-session.js` — read current session state
73
+ - `node ${extensionPath}/src/scripts/read-state.js <relative-path>` — read arbitrary state file
74
+ - `node ${extensionPath}/src/scripts/write-state.js <relative-path>` — write state from stdin
75
+ - `node ${extensionPath}/src/scripts/read-setting.js <SETTING_NAME>` — resolve a Maestro setting
76
+ <!-- @end-feature -->
77
+ <!-- @feature claudeStateContract -->
78
+ Maestro maintains session state under `docs/maestro` (resolved from `MAESTRO_STATE_DIR`):
79
+
80
+ - **Active session**: `docs/maestro/state/active-session.md`
81
+ - **Plans**: `docs/maestro/plans/`
82
+ - **Archives**: `docs/maestro/state/archive/`, `docs/maestro/plans/archive/`
83
+
84
+ State scripts:
85
+
86
+ - `node ${CLAUDE_PLUGIN_ROOT}/../src/scripts/ensure-workspace.js docs/maestro` — initialize workspace directories
87
+ - `node ${CLAUDE_PLUGIN_ROOT}/../src/scripts/read-active-session.js` — read current session state
88
+ - `node ${CLAUDE_PLUGIN_ROOT}/../src/scripts/read-state.js <relative-path>` — read arbitrary state file
89
+ - `node ${CLAUDE_PLUGIN_ROOT}/../src/scripts/write-state.js <relative-path>` — write state from stdin
90
+ - `node ${CLAUDE_PLUGIN_ROOT}/../src/scripts/read-setting.js <SETTING_NAME>` — resolve a Maestro setting
91
+ <!-- @end-feature -->
92
+ <!-- @feature codexStateContract -->
93
+ Maestro maintains session state under `docs/maestro` in the workspace root:
94
+
95
+ - **Active session**: `docs/maestro/state/active-session.md`
96
+ - **Plans**: `docs/maestro/plans/`
97
+ - **Archives**: `docs/maestro/state/archive/`, `docs/maestro/plans/archive/`
98
+
99
+ State scripts:
100
+
101
+ - `node ./src/scripts/ensure-workspace.js docs/maestro` — initialize workspace directories
102
+ - `node ./src/scripts/read-active-session.js` — read current session state
103
+ - `node ./src/scripts/read-state.js <relative-path>` — read arbitrary state file
104
+ - `node ./src/scripts/write-state.js <relative-path>` — write state from stdin
105
+ - `node ./src/scripts/read-setting.js <SETTING_NAME>` — resolve a Maestro setting
106
+ <!-- @end-feature -->
107
+
108
+ ## Session Management
109
+
110
+ Sessions track:
111
+
112
+ - Session ID and creation timestamp
113
+ - Current phase and overall status
114
+ - Phase-by-phase progress with assigned agents, file manifests, and validation results
115
+ - Execution mode (`parallel` or `sequential`)
116
+ - Downstream context for inter-phase dependencies
117
+ - Error history and retry counts
118
+
119
+ Session lifecycle: create -> active -> (resume if interrupted) -> archive on completion.
120
+
121
+ ## Execution Modes
122
+
123
+ - **parallel**: Dispatch multiple child agents for phases at the same dependency depth with non-overlapping file ownership
124
+ - **sequential**: Dispatch one child agent at a time in dependency order
125
+ - **ask**: Prompt the user for mode selection after plan approval (default)
126
+
127
+ The execution mode gate must resolve before any implementation delegation begins.
128
+
129
+ ## Delegation Contract
130
+
131
+ Every delegated agent query must include the header:
132
+ - `Agent: <agent_name>`
133
+ - `Phase: <id>/<total>`
134
+ - `Batch: <batch_id|single>`
135
+ - `Session: <session_id>`
136
+
137
+ Every agent must conclude with:
138
+ - `## Task Report` — what was done, files changed, tests run
139
+ - `## Downstream Context` — information needed by subsequent phases
@@ -0,0 +1,193 @@
1
+ STARTUP (Turn 1 — tool calls only, no text output)
2
+ 0. If get_runtime_context appears in your available tools, call it. Carry the returned mappings (tool names, agent dispatch syntax, MCP prefix, paths) through the entire session. If unavailable, use the fallback mappings in the entry-point skill preamble.
3
+ 1. Call resolve_settings.
4
+ 2. Read `workspace_suggestion` from the `get_runtime_context` response (populated from MCP roots and/or runtime env var). Call `initialize_workspace(workspace_path=<workspace_suggestion or explicit user workspace>, state_dir=<resolved>)`. If no suggestion is available, ask the user via the runtime's user-prompt tool. `initialize_workspace` rejects paths inside extension caches.
5
+ 3. Call get_session_status — if active, present status and offer resume/archive.
6
+ 4. Call assess_task_complexity.
7
+ 5. Parse MAESTRO_DISABLED_AGENTS from resolved settings. Exclude listed agents from all planning.
8
+ 6. STOP. Turn 1 is ONLY steps 1-5. No text, no design questions, no file reads.
9
+
10
+ CLASSIFICATION (Turn 2)
11
+ 7. Pre-load architecture plus every skill used before Phase 3 in a single batch:
12
+ `get_skill_content(["architecture", "design-dialogue", "design-document", "implementation-planning", "implementation-plan"])`.
13
+ <HARD-GATE>
14
+ This batch MUST complete before any `enter_plan_mode` call. Some runtimes
15
+ (notably Gemini CLI) deregister MCP tools once Plan Mode is active —
16
+ attempting to fetch these skills from inside Plan Mode will fail with
17
+ "tool not found" and strand the orchestrator. Execution-phase templates
18
+ (session-management, session-state, execution, delegation, validation,
19
+ agent-base-protocol, filesystem-safety-protocol, code-review) still load
20
+ lazily at their consumption points because Phase 3 never enters Plan Mode.
21
+ </HARD-GATE>
22
+ 8. Classify task as simple/medium/complex. Present classification with rationale.
23
+ 9. Route: simple → Express (step 31). Medium/complex → continue to step 10.
24
+
25
+ DESIGN GATE (Phase 1 pre-entry)
26
+ 9a. Finalize the session_id now and use it verbatim for every subsequent MCP call. Format: `YYYY-MM-DD-<kebab-task-slug>`. Then call `enter_design_gate(session_id)`. This blocks `create_session` until `record_design_approval` is called. Idempotent; safe to call on resume.
27
+ <HARD-GATE>
28
+ Session ID Invariance — the session_id chosen here MUST be passed unchanged
29
+ to every MCP call that accepts a session_id parameter for the remainder of
30
+ this workflow: `record_design_approval`, `get_design_gate_status`,
31
+ `create_session`, `update_session`, `get_session_status`, `transition_phase`,
32
+ `scan_phase_changes`, `reconcile_phase`, and `archive_session`. Do NOT
33
+ substitute a placeholder id for initial calls and a final id later — the
34
+ design gate is keyed by session_id, so a drift orphans the approved gate
35
+ and strands the design document. `create_session` rejects with
36
+ `DESIGN_GATE_SESSION_MISMATCH` when it detects an approved gate for a
37
+ different session_id than the one passed in.
38
+ </HARD-GATE>
39
+
40
+ DESIGN (Phase 1)
41
+ 10. Enter Plan Mode. If `plan_mode_native` from `get_runtime_context` is false (Codex), the server-side Design Gate (9a + step 13) is the authoritative contract; runtime-native plan mode is a UI affordance only.
42
+ 11. Using the `design-dialogue` protocol already loaded in step 7, run the design conversation:
43
+ - Design depth selector (first design question)
44
+ - Repository grounding (for existing codebases, skip for greenfield)
45
+ - One question at a time via user prompt
46
+ - Enrichment per chosen depth (Quick/Standard/Deep)
47
+ <HARD-GATE>
48
+ Technology Recommendation Gate: Before presenting technology options, re-read
49
+ the <user-request>. If the request implies static delivery (fan site, portfolio,
50
+ landing page, profile page) or specifies vanilla/static/no-frameworks, the
51
+ recommended option MUST be vanilla HTML/CSS/JS. Do NOT recommend frameworks
52
+ (Next.js, React, Vue, Svelte, Astro) unless the request explicitly requires
53
+ server-side rendering, authentication, database queries, or real-time updates.
54
+ </HARD-GATE>
55
+ <ANTI-PATTERN>
56
+ WRONG: user requests "fan site" → options include React, Next.js, Astro
57
+ CORRECT: user requests "fan site" → recommended option is vanilla HTML/CSS/JS
58
+ </ANTI-PATTERN>
59
+ 12. Present design sections one at a time, per the design-dialogue skill's convergence protocol.
60
+ <HARD-GATE>
61
+ Each section must be presented individually and approved via user prompt before
62
+ proceeding to the next. Do NOT present the full design as a single block.
63
+ Quick depth may combine sections. Standard/Deep MUST validate individually.
64
+ </HARD-GATE>
65
+ 13. Using the `design-document` template already loaded in step 7, write the approved design document to the runtime's write surface (Plan Mode tmp for Gemini, `<state_dir>/plans/` when Plan Mode is unavailable). Do NOT call `record_design_approval` while still inside Plan Mode — Gemini deregisters MCP tools during Plan Mode and the call will fail.
66
+ 14. If Plan Mode is active, exit Plan Mode with the plan path. MCP tools become available again at this point.
67
+ 14a. Call `record_design_approval` to clear the design gate. Choose the variant by runtime:
68
+ - **Content variant (required for Gemini)**: pass `design_document_content` + `design_document_filename`. The MCP server materializes the canonical copy inside `<state_dir>/plans/` atomically. Required whenever the runtime's write surface resolves relative paths against a root the MCP server cannot reach — Gemini Plan Mode writes to `~/.gemini/tmp/<uuid>/...`, so a path handed back to the server never resolves to the same file.
69
+ - **Path variant (Codex, Claude direct writes)**: pass `design_document_path` (absolute or workspace-relative). The approval handler records the path without requiring the file to already be on disk; `create_session` in step 21 materializes the file into `<state_dir>/plans/` and will reject if the file is still missing at that point.
70
+ <HARD-GATE>
71
+ The two variants are mutually exclusive. Supplying both, or neither, fails with VALIDATION_ERROR.
72
+ </HARD-GATE>
73
+
74
+ PLANNING (Phase 2)
75
+ 15. Using the `implementation-planning` and `implementation-plan` resources already loaded in step 7, follow the planning protocol to draft the implementation plan. If the planning skill instructs you to re-enter Plan Mode for the plan-approval UI, write the plan document first; all subsequent MCP calls (including `validate_plan`) must happen after the next `exit_plan_mode`, not inside Plan Mode.
76
+ 16. Call validate_plan with the generated plan and task_complexity.
77
+ <HARD-GATE>
78
+ You MUST call validate_plan BEFORE presenting the plan for approval. Do NOT
79
+ present the plan, write it to state_dir, or proceed to step 17 without first
80
+ calling validate_plan and resolving any error-severity violations.
81
+ validate_plan enforces server-side: phase count limits, dependency cycles,
82
+ unknown agents, file ownership conflicts, and agent-deliverable compatibility
83
+ (read-only agents cannot be assigned to file-creating phases). If it returns
84
+ violations with severity "error", fix them in the plan and re-validate.
85
+ </HARD-GATE>
86
+ 17. Present plan for user approval (Approve / Revise / Abort via user prompt).
87
+ 18. Write approved implementation plan to <state_dir>/plans/.
88
+
89
+ EXECUTION SETUP (Phase 3 — pre-delegation)
90
+ 19. Call `get_skill_content` with resources: ["execution"]. Follow its Execution Mode Gate.
91
+ <HARD-GATE>
92
+ Present ONLY "Parallel" and "Sequential" as execution mode options.
93
+ Do NOT present "Ask" as a user-facing choice — "ask" is a setting value
94
+ that means "prompt the user", not an execution mode the user selects.
95
+ </HARD-GATE>
96
+ 20. Call `get_skill_content` with resources: ["session-management", "session-state"].
97
+ 21. Pass the exact plan object returned by `validate_plan` to `create_session`. Do not reshape phases — `create_session` rejects plans whose phases are missing required fields ({id, name, agent, parallel, blocked_by}). Set `execution_mode` to the value resolved in step 19. Attach the implementation plan document by runtime:
98
+ - **Content variant (required for Gemini)**: pass `implementation_plan_content` + `implementation_plan_filename`. Mirrors the design-document content path in step 14a and closes the same runtime-tmp resolution gap when Plan Mode is used for plan approval.
99
+ - **Path variant (Codex, Claude direct writes)**: pass `implementation_plan` as an absolute or workspace-relative path. Requires the file to exist on disk at the workspace-resolved path when `create_session` runs.
100
+ <HARD-GATE>
101
+ The two variants are mutually exclusive. Supplying both fails with VALIDATION_ERROR. Supplying neither is valid — the session records no implementation plan.
102
+ </HARD-GATE>
103
+ 22. Call `get_skill_content` with resources: ["delegation", "validation", "agent-base-protocol", "filesystem-safety-protocol"].
104
+
105
+ EXECUTION (Phase 3 — delegation loop)
106
+ 23. For each phase (or parallel batch): call `get_agent` for the assigned agent, then delegate using the returned methodology and tool restrictions. Before constructing the dispatch, read `delegation.constraints` from the cached `get_runtime_context` and shape the call accordingly — omit `agent_type`/`model`/`reasoning_effort` when `fork_full_context_incompatible_with` includes them and you are spawning with full-history fork.
107
+ <HARD-GATE>
108
+ Dispatch by calling the agent's registered tool directly.
109
+ Do NOT use the built-in generalist tool or invoke agents by bare name.
110
+ Each Maestro agent carries specialized methodology, tool restrictions, temperature,
111
+ and turn limits from its frontmatter that the generalist ignores.
112
+ </HARD-GATE>
113
+ 24. After each agent returns, parse the response. If a `## Blockers` section is present and non-empty, do NOT call `transition_phase`: aggregate blockers across the batch, ask the user via the user-prompt tool, and re-delegate the phase with the answer in the context block. Only when blockers are empty, parse Task Report + Downstream Context.
114
+ 25. Call transition_phase to persist results. `transition_phase` rejects with `HANDOFF_INCOMPLETE` if the phase produced files but downstream_context is empty — re-request the handoff. It sets `requires_reconciliation: true` when all manifests AND downstream_context are empty — in that case, invoke the Recovery Protocol in the execution skill (`scan_phase_changes` → user confirmation → `reconcile_phase`).
115
+ <HARD-GATE>
116
+ For parallel batches: call transition_phase INDIVIDUALLY for EVERY completed
117
+ phase in the batch. The MCP tool writes files_created, files_modified,
118
+ files_deleted, and downstream_context to the SPECIFIC phase identified by
119
+ completed_phase_id. Extract each agent's Task Report separately and pass
120
+ that agent's files and context to the corresponding phase's call. Do NOT
121
+ merge all agents' files into one call — the archive attributes files per
122
+ phase, so empty payloads mean lost traceability.
123
+ </HARD-GATE>
124
+ 26. Repeat steps 23-25 until all phases complete.
125
+
126
+ COMPLETION (Phase 4)
127
+ 27. Call `get_skill_content` with resources: ["code-review"].
128
+ 28. If execution changed non-documentation files, delegate to the code reviewer agent. Block on Critical/Major findings.
129
+ <HARD-GATE>
130
+ If Critical/Major findings: re-delegate to the implementing agent to fix.
131
+ The orchestrator MUST NOT write code directly.
132
+ </HARD-GATE>
133
+ 29. If MAESTRO_AUTO_ARCHIVE is true (or unset), call archive_session. If false, inform user session is complete but not archived.
134
+ 30. Present final summary with files changed, phase outcomes, and next steps.
135
+
136
+ RECOVERY (referenced from any step on user request)
137
+ If the user says the flow moved too fast: return to the most recent unanswered approval gate.
138
+ If the user asks for implementation before approval: remind them Maestro requires approval first.
139
+ If the user asks to skip execution-mode: remind them parallel/sequential is required unless MAESTRO_EXECUTION_MODE pins it.
140
+ If an answer invalidates a prior choice: restate the updated assumption and re-run the relevant gate.
141
+ If delegation collapses to parent session without fallback approval: return to step 19 or re-scope the child-agent work packages.
142
+
143
+ EXPRESS WORKFLOW (simple tasks only — jumped to from step 9)
144
+
145
+ EXPRESS MODE GATE BYPASS: Express bypasses the execution-mode gate entirely. Express always dispatches sequentially. Do NOT prompt for parallel/sequential.
146
+
147
+ EXPRESS MCP FALLBACK: If MCP state tools (create_session, transition_phase, archive_session) are unavailable, fall back to direct file writes on <state_dir>/state/active-session.md.
148
+
149
+ 31. Verify classification is simple. If task requires multiple phases or agents, override to medium → step 10.
150
+ <HARD-GATE>
151
+ Express sessions MUST have exactly one implementation phase with exactly one agent.
152
+ </HARD-GATE>
153
+ 32. Ask 1-2 clarifying questions from Area 1 only.
154
+ <HARD-GATE>
155
+ Each question MUST use the user prompt tool (not plain text). Use the choose
156
+ variant with 2-4 options where possible. Do NOT ask questions as plain text
157
+ in the model response — the user prompt tool is the only input mechanism.
158
+ </HARD-GATE>
159
+ 33. Present structured Express brief as plain text, then ask for approval.
160
+ <HARD-GATE>
161
+ The brief MUST be plain text output in the model response.
162
+ The approval MUST be a SEPARATE user prompt tool call — not embedded in the
163
+ brief text. The prompt contains only: "Approve this Express brief to proceed?"
164
+ These are two distinct actions: first emit the brief as text, then call the
165
+ user prompt tool for approval. Do NOT combine them into one text block.
166
+ </HARD-GATE>
167
+ 34. On approval, create session with workflow_mode: "express", exactly 1 phase.
168
+ On rejection, revise. On second rejection, escalate to Standard → step 10.
169
+ 35. Call `get_skill_content` with resources: ["agent-base-protocol", "filesystem-safety-protocol"] and prepend them to the delegation prompt.
170
+ 36. Delegate to the assigned agent.
171
+ <HARD-GATE>
172
+ Same dispatch rule as step 23: call agent by registered tool name, not generalist.
173
+ </HARD-GATE>
174
+ 37. Parse Task Report from the agent's response. Call transition_phase to persist results.
175
+ <HARD-GATE>
176
+ You MUST call transition_phase after the implementing agent returns. Extract
177
+ files_created, files_modified, files_deleted, and downstream_context from the
178
+ Task Report and pass them to transition_phase. Without this call, the session
179
+ state has no record of what was delivered. Do NOT skip to code review or archive
180
+ without calling transition_phase first.
181
+ </HARD-GATE>
182
+ 38. Delegate to the code reviewer agent.
183
+ <HARD-GATE>
184
+ If Critical/Major findings: re-delegate to implementing agent (1 retry).
185
+ Orchestrator MUST NOT write code directly. If retry fails, escalate to user.
186
+ </HARD-GATE>
187
+ 39. Call archive_session.
188
+ 40. Present summary.
189
+
190
+ EXPRESS RESUME (when resuming an Express session from get_session_status)
191
+ If phase is pending: re-generate and present brief (step 33). On approval, proceed to delegation (step 36).
192
+ If phase is in_progress: re-delegate with same scope (step 36).
193
+ If phase is completed but session is in_progress: run code review (step 38), then archive (step 39).
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ const { ensureWorkspace, DEFAULT_STATE_DIR } = require('../state/session-state');
5
+ const { fatal } = require('../core/logger');
6
+
7
+ const stateDir = process.argv[2] || DEFAULT_STATE_DIR;
8
+ const basePath = process.cwd();
9
+
10
+ try {
11
+ ensureWorkspace(stateDir, basePath);
12
+ } catch (err) {
13
+ fatal(err.message);
14
+ }
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ const fs = require('fs');
5
+ const { resolveSetting } = require('../config/setting-resolver');
6
+ const { resolveProjectRoot } = require('../core/project-root-resolver');
7
+ const { resolveActiveSessionPath } = require('../state/session-state');
8
+
9
+ function main() {
10
+ const projectRoot = resolveProjectRoot();
11
+
12
+ const resolvedStateDir = resolveSetting('MAESTRO_STATE_DIR', projectRoot);
13
+ if (resolvedStateDir) {
14
+ process.env.MAESTRO_STATE_DIR = resolvedStateDir;
15
+ }
16
+
17
+ try {
18
+ const sessionPath = resolveActiveSessionPath(projectRoot);
19
+ const content = fs.readFileSync(sessionPath, 'utf8');
20
+ process.stdout.write(content);
21
+ } catch {
22
+ process.stdout.write('No active session\n');
23
+ }
24
+ }
25
+
26
+ main();
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ const { resolveSetting } = require('../config/setting-resolver');
5
+ const { resolveProjectRoot } = require('../core/project-root-resolver');
6
+ const { fatal } = require('../core/logger');
7
+
8
+ const settingName = process.argv[2];
9
+ if (!settingName) {
10
+ fatal('Usage: read-setting.js <SETTING_NAME>');
11
+ }
12
+
13
+ const projectRoot = resolveProjectRoot();
14
+ const resolvedValue = resolveSetting(settingName, projectRoot);
15
+
16
+ if (resolvedValue !== undefined) {
17
+ process.stdout.write(String(resolvedValue));
18
+ }
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ const { readState } = require('../state/session-state');
5
+ const { fatal } = require('../core/logger');
6
+
7
+ const stateFile = process.argv[2];
8
+ if (!stateFile) {
9
+ fatal('Usage: read-state.js <relative-path>');
10
+ }
11
+
12
+ try {
13
+ const content = readState(stateFile, process.cwd());
14
+ process.stdout.write(content);
15
+ } catch (err) {
16
+ fatal(err.message);
17
+ }
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ const { writeState } = require('../state/session-state');
5
+ const { readText } = require('../core/stdin-reader');
6
+ const { fatal } = require('../core/logger');
7
+
8
+ const stateFile = process.argv[2];
9
+ if (!stateFile) {
10
+ fatal('Usage: write-state.js <relative-path>');
11
+ }
12
+
13
+ readText()
14
+ .then((content) => {
15
+ if (!content) {
16
+ fatal('stdin content is empty');
17
+ }
18
+ writeState(stateFile, content, process.cwd());
19
+ })
20
+ .catch((err) => {
21
+ fatal(err.message);
22
+ });