maestro-flow 0.3.22 → 0.3.23

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 (144) hide show
  1. package/.claude/commands/maestro-analyze.md +1 -1
  2. package/.claude/commands/maestro-brainstorm.md +1 -1
  3. package/.claude/commands/maestro-composer.md +3 -3
  4. package/.claude/commands/maestro-init.md +4 -4
  5. package/.claude/commands/maestro-roadmap.md +164 -108
  6. package/.claude/commands/maestro.md +19 -10
  7. package/.claude/commands/quality-business-test.md +2 -2
  8. package/.claude/skills/team-quality-assurance/roles/scout/role.md +1 -1
  9. package/.claude/skills/team-review/roles/reviewer/role.md +1 -1
  10. package/.claude/skills/team-review/roles/scanner/role.md +1 -1
  11. package/.claude/skills/team-tech-debt/roles/scanner/role.md +3 -3
  12. package/.codex/skills/maestro/SKILL.md +12 -9
  13. package/.codex/skills/maestro-brainstorm/SKILL.md +1 -1
  14. package/.codex/skills/maestro-composer/SKILL.md +3 -3
  15. package/.codex/skills/maestro-init/SKILL.md +1 -1
  16. package/.codex/skills/maestro-link-coordinate/SKILL.md +1 -1
  17. package/.codex/skills/maestro-player/SKILL.md +2 -2
  18. package/.codex/skills/maestro-roadmap/SKILL.md +443 -332
  19. package/.codex/skills/quality-business-test/SKILL.md +2 -2
  20. package/.codex/skills/team-coordinate/roles/coordinator/role.md +1 -1
  21. package/.codex/skills/team-lifecycle-v4/roles/coordinator/role.md +1 -1
  22. package/.codex/skills/team-quality-assurance/roles/scout/role.md +1 -1
  23. package/.codex/skills/team-review/roles/reviewer/role.md +1 -1
  24. package/.codex/skills/team-review/roles/scanner/role.md +1 -1
  25. package/.codex/skills/team-tech-debt/roles/scanner/role.md +3 -3
  26. package/chains/singles/spec-generate.json +3 -3
  27. package/chains/spec-driven.json +2 -2
  28. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +4 -0
  29. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  30. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +2 -2
  31. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
  32. package/dashboard/dist-server/dashboard/src/server/routes/install-utils.d.ts +5 -12
  33. package/dashboard/dist-server/dashboard/src/server/routes/install-utils.js +10 -65
  34. package/dashboard/dist-server/dashboard/src/server/routes/install-utils.js.map +1 -1
  35. package/dashboard/dist-server/dashboard/src/server/routes/install.js +17 -11
  36. package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
  37. package/dashboard/dist-server/src/agents/cli-agent-runner.d.ts +4 -0
  38. package/dashboard/dist-server/src/agents/cli-agent-runner.js +4 -2
  39. package/dashboard/dist-server/src/agents/cli-agent-runner.js.map +1 -1
  40. package/dashboard/dist-server/src/commands/delegate.d.ts +2 -0
  41. package/dashboard/dist-server/src/commands/delegate.js +20 -4
  42. package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
  43. package/dashboard/dist-server/src/config/cli-tools-config.d.ts +64 -3
  44. package/dashboard/dist-server/src/config/cli-tools-config.js +226 -9
  45. package/dashboard/dist-server/src/config/cli-tools-config.js.map +1 -1
  46. package/dist/src/agents/cli-agent-runner.d.ts +4 -0
  47. package/dist/src/agents/cli-agent-runner.d.ts.map +1 -1
  48. package/dist/src/agents/cli-agent-runner.js +4 -2
  49. package/dist/src/agents/cli-agent-runner.js.map +1 -1
  50. package/dist/src/cli.js +2 -0
  51. package/dist/src/cli.js.map +1 -1
  52. package/dist/src/commands/cli.d.ts.map +1 -1
  53. package/dist/src/commands/cli.js +21 -4
  54. package/dist/src/commands/cli.js.map +1 -1
  55. package/dist/src/commands/delegate.d.ts +2 -0
  56. package/dist/src/commands/delegate.d.ts.map +1 -1
  57. package/dist/src/commands/delegate.js +20 -4
  58. package/dist/src/commands/delegate.js.map +1 -1
  59. package/dist/src/commands/install-backend.d.ts +5 -16
  60. package/dist/src/commands/install-backend.d.ts.map +1 -1
  61. package/dist/src/commands/install-backend.js +8 -104
  62. package/dist/src/commands/install-backend.js.map +1 -1
  63. package/dist/src/commands/install-ui/ExecutionView.js +1 -1
  64. package/dist/src/commands/install-ui/ExecutionView.js.map +1 -1
  65. package/dist/src/commands/install-ui/InstallExecution.d.ts +1 -0
  66. package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
  67. package/dist/src/commands/install-ui/InstallExecution.js +19 -4
  68. package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
  69. package/dist/src/commands/install-ui/InstallResult.d.ts.map +1 -1
  70. package/dist/src/commands/install-ui/InstallResult.js +1 -1
  71. package/dist/src/commands/install-ui/InstallResult.js.map +1 -1
  72. package/dist/src/commands/install.d.ts.map +1 -1
  73. package/dist/src/commands/install.js +23 -3
  74. package/dist/src/commands/install.js.map +1 -1
  75. package/dist/src/commands/tools-ui/CommandReference.d.ts +7 -0
  76. package/dist/src/commands/tools-ui/CommandReference.d.ts.map +1 -0
  77. package/dist/src/commands/tools-ui/CommandReference.js +33 -0
  78. package/dist/src/commands/tools-ui/CommandReference.js.map +1 -0
  79. package/dist/src/commands/tools-ui/ConfigSources.d.ts +6 -0
  80. package/dist/src/commands/tools-ui/ConfigSources.d.ts.map +1 -0
  81. package/dist/src/commands/tools-ui/ConfigSources.js +27 -0
  82. package/dist/src/commands/tools-ui/ConfigSources.js.map +1 -0
  83. package/dist/src/commands/tools-ui/RegisterSettings.d.ts +8 -0
  84. package/dist/src/commands/tools-ui/RegisterSettings.d.ts.map +1 -0
  85. package/dist/src/commands/tools-ui/RegisterSettings.js +125 -0
  86. package/dist/src/commands/tools-ui/RegisterSettings.js.map +1 -0
  87. package/dist/src/commands/tools-ui/RoleMappings.d.ts +9 -0
  88. package/dist/src/commands/tools-ui/RoleMappings.d.ts.map +1 -0
  89. package/dist/src/commands/tools-ui/RoleMappings.js +104 -0
  90. package/dist/src/commands/tools-ui/RoleMappings.js.map +1 -0
  91. package/dist/src/commands/tools-ui/ToolsDashboard.d.ts +8 -0
  92. package/dist/src/commands/tools-ui/ToolsDashboard.d.ts.map +1 -0
  93. package/dist/src/commands/tools-ui/ToolsDashboard.js +60 -0
  94. package/dist/src/commands/tools-ui/ToolsDashboard.js.map +1 -0
  95. package/dist/src/commands/tools-ui/ToolsOverview.d.ts +9 -0
  96. package/dist/src/commands/tools-ui/ToolsOverview.d.ts.map +1 -0
  97. package/dist/src/commands/tools-ui/ToolsOverview.js +84 -0
  98. package/dist/src/commands/tools-ui/ToolsOverview.js.map +1 -0
  99. package/dist/src/commands/tools.d.ts +3 -0
  100. package/dist/src/commands/tools.d.ts.map +1 -0
  101. package/dist/src/commands/tools.js +78 -0
  102. package/dist/src/commands/tools.js.map +1 -0
  103. package/dist/src/config/cli-tools-config.d.ts +64 -3
  104. package/dist/src/config/cli-tools-config.d.ts.map +1 -1
  105. package/dist/src/config/cli-tools-config.js +226 -9
  106. package/dist/src/config/cli-tools-config.js.map +1 -1
  107. package/dist/src/core/component-defs.d.ts +16 -0
  108. package/dist/src/core/component-defs.d.ts.map +1 -0
  109. package/dist/src/core/component-defs.js +142 -0
  110. package/dist/src/core/component-defs.js.map +1 -0
  111. package/dist/src/core/manifest.d.ts +8 -1
  112. package/dist/src/core/manifest.d.ts.map +1 -1
  113. package/dist/src/core/manifest.js +29 -40
  114. package/dist/src/core/manifest.js.map +1 -1
  115. package/dist/src/core/tag-injector.d.ts +72 -0
  116. package/dist/src/core/tag-injector.d.ts.map +1 -0
  117. package/dist/src/core/tag-injector.js +228 -0
  118. package/dist/src/core/tag-injector.js.map +1 -0
  119. package/dist/src/index.d.ts +4 -0
  120. package/dist/src/index.d.ts.map +1 -1
  121. package/dist/src/index.js +2 -0
  122. package/dist/src/index.js.map +1 -1
  123. package/dist/tsconfig.tsbuildinfo +1 -0
  124. package/package.json +1 -1
  125. package/templates/cli/prompts/workflow-skill-conflict-patterns.txt +1 -1
  126. package/templates/cli/prompts/workflow-skill-lessons-learned.txt +1 -1
  127. package/templates/search-tools.md +1 -1
  128. package/templates/workflows/specs/node-catalog.md +1 -1
  129. package/workflows/brainstorm.md +1 -1
  130. package/{.claude/CLAUDE.md → workflows/claude-instructions.md} +25 -26
  131. package/workflows/cli-tools-usage.md +16 -2
  132. package/workflows/codex-instructions.md +150 -0
  133. package/workflows/delegate-usage.md +16 -2
  134. package/workflows/execute.md +28 -14
  135. package/workflows/init.md +2 -2
  136. package/workflows/issue-discover.md +2 -2
  137. package/workflows/maestro-super.md +120 -0
  138. package/workflows/maestro.codex.md +4 -4
  139. package/workflows/maestro.md +5 -5
  140. package/workflows/roadmap-common.md +197 -0
  141. package/workflows/roadmap.md +190 -355
  142. package/workflows/spec-generate.md +457 -544
  143. package/.claude/commands/maestro-spec-generate.md +0 -78
  144. package/.codex/skills/maestro-spec-generate/SKILL.md +0 -355
@@ -1,19 +1,43 @@
1
+ /** Domain tags for tool expertise matching. */
2
+ export declare const DOMAIN_TAGS: readonly ["frontend", "backend", "fullstack", "devops", "data", "mobile", "infra"];
3
+ export type DomainTag = (typeof DOMAIN_TAGS)[number];
1
4
  export interface ToolEntry {
2
5
  enabled: boolean;
3
6
  primaryModel: string;
4
7
  secondaryModel?: string;
8
+ /** Domain expertise tags (frontend, backend, fullstack, etc.) — used by execute for tool selection */
5
9
  tags: string[];
6
10
  type: string;
11
+ /** Settings file path for the CLI tool (e.g. Claude --settings, Codex --profile) */
12
+ settingsFile?: string;
13
+ /** Base tool name for aliases (e.g. "claude" for "claude-analysis") */
14
+ baseTool?: string;
15
+ }
16
+ export interface RoleMapping {
17
+ /** Direct tool name (simplest config) */
18
+ tool?: string;
19
+ /** Ordered fallback tool names */
20
+ fallbackChain?: string[];
7
21
  }
8
22
  export interface CliToolsConfig {
9
23
  version: string;
10
24
  tools: Record<string, ToolEntry>;
25
+ /** User-configurable role → tool mappings */
26
+ roles?: Record<string, RoleMapping>;
11
27
  }
28
+ /** Fixed set of supported roles. */
29
+ export declare const DELEGATE_ROLES: readonly ["analyze", "explore", "review", "implement", "plan", "brainstorm", "research"];
30
+ export type DelegateRole = (typeof DELEGATE_ROLES)[number];
12
31
  /**
13
- * Load CLI tools configuration from ~/.maestro/cli-tools.json.
14
- * Returns a default empty config if the file does not exist or is invalid.
32
+ * Load CLI tools configuration with workspace-level overrides.
33
+ *
34
+ * Priority: {workDir}/.maestro/cli-tools.json > ~/.maestro/cli-tools.json > DEFAULT_CONFIG
35
+ *
36
+ * Merge strategy:
37
+ * - tools: deep merge (workspace overrides same-name tools)
38
+ * - roles: deep merge (workspace overrides same-name roles)
15
39
  */
16
- export declare function loadCliToolsConfig(): Promise<CliToolsConfig>;
40
+ export declare function loadCliToolsConfig(workDir?: string): Promise<CliToolsConfig>;
17
41
  export interface SelectedTool {
18
42
  name: string;
19
43
  entry: ToolEntry;
@@ -23,4 +47,41 @@ export interface SelectedTool {
23
47
  * Returns undefined when no tool can be resolved.
24
48
  */
25
49
  export declare function selectTool(name: string | undefined, config: CliToolsConfig): SelectedTool | undefined;
50
+ /**
51
+ * Select a tool by capability role.
52
+ *
53
+ * Resolution order:
54
+ * 1. User-configured role mapping (config.roles[role])
55
+ * 2. Built-in default role mapping (DEFAULT_ROLE_MAPPINGS[role])
56
+ * 3. If mapping has `tool` → direct selectTool()
57
+ * 4. Walk `fallbackChain` → first enabled tool in chain
58
+ * 5. Last resort → selectTool(undefined) (first enabled)
59
+ */
60
+ export declare function selectToolByRole(role: string, config: CliToolsConfig): SelectedTool | undefined;
61
+ /**
62
+ * Save CLI tools configuration to a specific scope.
63
+ * Reads existing config, deep-merges the update, and writes back.
64
+ */
65
+ export declare function saveCliToolsConfig(update: Partial<CliToolsConfig>, scope: 'global' | 'workspace', workDir?: string): Promise<void>;
66
+ /** Expose default role mappings for TUI display. */
67
+ export declare function getDefaultRoleMappings(): Record<string, RoleMapping>;
68
+ /**
69
+ * Rank enabled tools by domain tag relevance.
70
+ * Returns tools sorted: exact tag match first, then fullstack, then rest.
71
+ * Used by `maestro execute` to suggest the best tool for a task domain.
72
+ */
73
+ export declare function rankToolsByDomain(domain: string, config: CliToolsConfig): SelectedTool[];
74
+ /** Load global and workspace configs separately (un-merged) for introspection. */
75
+ export declare function loadConfigSources(workDir?: string): Promise<{
76
+ globalPath: string;
77
+ global: Partial<CliToolsConfig> | null;
78
+ workspacePath: string | null;
79
+ workspace: Partial<CliToolsConfig> | null;
80
+ }>;
81
+ /**
82
+ * Initialize ~/.maestro/cli-tools.json with auto-detected tool availability.
83
+ * No-op if the file already exists.
84
+ * Returns true if created, false if skipped.
85
+ */
86
+ export declare function initCliToolsConfig(): Promise<boolean>;
26
87
  //# sourceMappingURL=cli-tools-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-tools-config.d.ts","sourceRoot":"","sources":["../../../src/config/cli-tools-config.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAClC;AAeD;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC,CAQlE;AAMD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,MAAM,EAAE,cAAc,GACrB,YAAY,GAAG,SAAS,CAc1B"}
1
+ {"version":3,"file":"cli-tools-config.d.ts","sourceRoot":"","sources":["../../../src/config/cli-tools-config.ts"],"names":[],"mappings":"AAeA,+CAA+C;AAC/C,eAAO,MAAM,WAAW,oFAEd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sGAAsG;IACtG,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACrC;AAMD,oCAAoC;AACpC,eAAO,MAAM,cAAc,0FAEjB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AA6B3D;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA6BlF;AAMD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,MAAM,EAAE,cAAc,GACrB,YAAY,GAAG,SAAS,CAc1B;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,cAAc,GACrB,YAAY,GAAG,SAAS,CAqB1B;AAMD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,EAC/B,KAAK,EAAE,QAAQ,GAAG,WAAW,EAC7B,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAMD,oDAAoD;AACpD,wBAAgB,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAEpE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,GACrB,YAAY,EAAE,CAkBhB;AAED,kFAAkF;AAClF,wBAAsB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IACvC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;CAC3C,CAAC,CAaD;AAuBD;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAuB3D"}
@@ -1,10 +1,39 @@
1
1
  // ---------------------------------------------------------------------------
2
2
  // CLI Tools configuration loader
3
3
  // Reads ~/.maestro/cli-tools.json for tool selection and model routing.
4
+ // Supports role-based tool selection and workspace-level config overrides.
4
5
  // ---------------------------------------------------------------------------
5
- import { readFile } from 'node:fs/promises';
6
+ import { readFile, writeFile, mkdir } from 'node:fs/promises';
7
+ import { execSync } from 'node:child_process';
6
8
  import { homedir } from 'node:os';
7
- import { join } from 'node:path';
9
+ import { join, dirname } from 'node:path';
10
+ // ---------------------------------------------------------------------------
11
+ // Types
12
+ // ---------------------------------------------------------------------------
13
+ /** Domain tags for tool expertise matching. */
14
+ export const DOMAIN_TAGS = [
15
+ 'frontend', 'backend', 'fullstack', 'devops', 'data', 'mobile', 'infra',
16
+ ];
17
+ // ---------------------------------------------------------------------------
18
+ // Default role mappings
19
+ // ---------------------------------------------------------------------------
20
+ /** Fixed set of supported roles. */
21
+ export const DELEGATE_ROLES = [
22
+ 'analyze', 'explore', 'review', 'implement', 'plan', 'brainstorm', 'research',
23
+ ];
24
+ // Default strengths (codex high priority):
25
+ // codex — analyze, plan, implement, review, debug (preferred)
26
+ // gemini — analyze, plan, frontend, brainstorm, research
27
+ // claude — analyze, plan, implement
28
+ const DEFAULT_ROLE_MAPPINGS = {
29
+ analyze: { fallbackChain: ['codex', 'gemini', 'claude'] },
30
+ explore: { fallbackChain: ['codex', 'gemini', 'claude'] },
31
+ review: { fallbackChain: ['codex', 'gemini', 'claude'] },
32
+ implement: { fallbackChain: ['codex', 'claude', 'gemini'] },
33
+ plan: { fallbackChain: ['codex', 'gemini', 'claude'] },
34
+ brainstorm: { fallbackChain: ['gemini', 'codex', 'claude'] },
35
+ research: { fallbackChain: ['gemini', 'codex', 'claude'] },
36
+ };
8
37
  // ---------------------------------------------------------------------------
9
38
  // Defaults
10
39
  // ---------------------------------------------------------------------------
@@ -16,18 +45,43 @@ const DEFAULT_CONFIG = {
16
45
  // Loader
17
46
  // ---------------------------------------------------------------------------
18
47
  /**
19
- * Load CLI tools configuration from ~/.maestro/cli-tools.json.
20
- * Returns a default empty config if the file does not exist or is invalid.
48
+ * Load CLI tools configuration with workspace-level overrides.
49
+ *
50
+ * Priority: {workDir}/.maestro/cli-tools.json > ~/.maestro/cli-tools.json > DEFAULT_CONFIG
51
+ *
52
+ * Merge strategy:
53
+ * - tools: deep merge (workspace overrides same-name tools)
54
+ * - roles: deep merge (workspace overrides same-name roles)
21
55
  */
22
- export async function loadCliToolsConfig() {
23
- const configPath = join(homedir(), '.maestro', 'cli-tools.json');
56
+ export async function loadCliToolsConfig(workDir) {
57
+ // 1. Load global config
58
+ const globalPath = join(homedir(), '.maestro', 'cli-tools.json');
59
+ let global = DEFAULT_CONFIG;
24
60
  try {
25
- const raw = await readFile(configPath, 'utf-8');
26
- return JSON.parse(raw);
61
+ const raw = await readFile(globalPath, 'utf-8');
62
+ global = JSON.parse(raw);
27
63
  }
28
64
  catch {
29
- return DEFAULT_CONFIG;
65
+ // No global config — use defaults
30
66
  }
67
+ // 2. Load workspace config (if workDir provided)
68
+ if (workDir) {
69
+ const workspacePath = join(workDir, '.maestro', 'cli-tools.json');
70
+ try {
71
+ const raw = await readFile(workspacePath, 'utf-8');
72
+ const workspace = JSON.parse(raw);
73
+ // Merge: workspace overrides global
74
+ global = {
75
+ version: workspace.version ?? global.version,
76
+ tools: { ...global.tools, ...workspace.tools },
77
+ roles: { ...global.roles, ...workspace.roles },
78
+ };
79
+ }
80
+ catch {
81
+ // No workspace config — use global as-is
82
+ }
83
+ }
84
+ return global;
31
85
  }
32
86
  /**
33
87
  * Select a tool by explicit name or fall back to the first enabled tool.
@@ -46,4 +100,167 @@ export function selectTool(name, config) {
46
100
  }
47
101
  return undefined;
48
102
  }
103
+ /**
104
+ * Select a tool by capability role.
105
+ *
106
+ * Resolution order:
107
+ * 1. User-configured role mapping (config.roles[role])
108
+ * 2. Built-in default role mapping (DEFAULT_ROLE_MAPPINGS[role])
109
+ * 3. If mapping has `tool` → direct selectTool()
110
+ * 4. Walk `fallbackChain` → first enabled tool in chain
111
+ * 5. Last resort → selectTool(undefined) (first enabled)
112
+ */
113
+ export function selectToolByRole(role, config) {
114
+ const mapping = config.roles?.[role] ?? DEFAULT_ROLE_MAPPINGS[role];
115
+ if (!mapping) {
116
+ return selectTool(undefined, config);
117
+ }
118
+ // Direct tool name
119
+ if (mapping.tool) {
120
+ return selectTool(mapping.tool, config);
121
+ }
122
+ // Fallback chain: try each named tool in order
123
+ if (mapping.fallbackChain) {
124
+ for (const toolName of mapping.fallbackChain) {
125
+ if (config.tools[toolName]?.enabled) {
126
+ return { name: toolName, entry: config.tools[toolName] };
127
+ }
128
+ }
129
+ }
130
+ return selectTool(undefined, config);
131
+ }
132
+ // ---------------------------------------------------------------------------
133
+ // Config persistence
134
+ // ---------------------------------------------------------------------------
135
+ /**
136
+ * Save CLI tools configuration to a specific scope.
137
+ * Reads existing config, deep-merges the update, and writes back.
138
+ */
139
+ export async function saveCliToolsConfig(update, scope, workDir) {
140
+ const configPath = scope === 'global'
141
+ ? join(homedir(), '.maestro', 'cli-tools.json')
142
+ : join(workDir ?? process.cwd(), '.maestro', 'cli-tools.json');
143
+ // Read existing
144
+ let existing = {};
145
+ try {
146
+ const raw = await readFile(configPath, 'utf-8');
147
+ existing = JSON.parse(raw);
148
+ }
149
+ catch {
150
+ // No existing config
151
+ }
152
+ // Deep merge — tool entries are field-level merged, not replaced wholesale
153
+ const mergedTools = { ...existing.tools };
154
+ if (update.tools) {
155
+ for (const [name, entry] of Object.entries(update.tools)) {
156
+ mergedTools[name] = { ...mergedTools[name], ...entry };
157
+ }
158
+ }
159
+ const merged = {
160
+ version: update.version ?? existing.version ?? '1.1.0',
161
+ tools: mergedTools,
162
+ roles: { ...existing.roles, ...update.roles },
163
+ };
164
+ // Ensure directory exists and write
165
+ await mkdir(dirname(configPath), { recursive: true });
166
+ await writeFile(configPath, JSON.stringify(merged, null, 2) + '\n');
167
+ }
168
+ // ---------------------------------------------------------------------------
169
+ // Introspection
170
+ // ---------------------------------------------------------------------------
171
+ /** Expose default role mappings for TUI display. */
172
+ export function getDefaultRoleMappings() {
173
+ return { ...DEFAULT_ROLE_MAPPINGS };
174
+ }
175
+ /**
176
+ * Rank enabled tools by domain tag relevance.
177
+ * Returns tools sorted: exact tag match first, then fullstack, then rest.
178
+ * Used by `maestro execute` to suggest the best tool for a task domain.
179
+ */
180
+ export function rankToolsByDomain(domain, config) {
181
+ const exact = [];
182
+ const fullstack = [];
183
+ const rest = [];
184
+ for (const [name, entry] of Object.entries(config.tools)) {
185
+ if (!entry.enabled)
186
+ continue;
187
+ const tool = { name, entry };
188
+ if (entry.tags.includes(domain)) {
189
+ exact.push(tool);
190
+ }
191
+ else if (entry.tags.includes('fullstack')) {
192
+ fullstack.push(tool);
193
+ }
194
+ else {
195
+ rest.push(tool);
196
+ }
197
+ }
198
+ return [...exact, ...fullstack, ...rest];
199
+ }
200
+ /** Load global and workspace configs separately (un-merged) for introspection. */
201
+ export async function loadConfigSources(workDir) {
202
+ const gp = join(homedir(), '.maestro', 'cli-tools.json');
203
+ let g = null;
204
+ try {
205
+ g = JSON.parse(await readFile(gp, 'utf-8'));
206
+ }
207
+ catch { /* */ }
208
+ let wp = null;
209
+ let w = null;
210
+ if (workDir) {
211
+ wp = join(workDir, '.maestro', 'cli-tools.json');
212
+ try {
213
+ w = JSON.parse(await readFile(wp, 'utf-8'));
214
+ }
215
+ catch { /* */ }
216
+ }
217
+ return { globalPath: gp, global: g, workspacePath: wp, workspace: w };
218
+ }
219
+ // ---------------------------------------------------------------------------
220
+ // Initialization
221
+ // ---------------------------------------------------------------------------
222
+ /** CLI tool definitions with detection commands. */
223
+ const TOOL_DEFS = [
224
+ { name: 'gemini', cmd: 'gemini', primaryModel: 'gemini-2.5-pro', tags: ['fullstack', 'frontend'], type: 'builtin' },
225
+ { name: 'claude', cmd: 'claude', primaryModel: 'claude-sonnet-4-20250514', tags: ['fullstack'], type: 'builtin' },
226
+ { name: 'codex', cmd: 'codex', primaryModel: 'o3', tags: ['fullstack', 'backend'], type: 'builtin' },
227
+ { name: 'opencode', cmd: 'opencode', primaryModel: '', tags: ['fullstack'], type: 'builtin' },
228
+ ];
229
+ function isCliAvailable(cmd) {
230
+ try {
231
+ execSync(`${cmd} --version`, { stdio: 'ignore', timeout: 5000 });
232
+ return true;
233
+ }
234
+ catch {
235
+ return false;
236
+ }
237
+ }
238
+ /**
239
+ * Initialize ~/.maestro/cli-tools.json with auto-detected tool availability.
240
+ * No-op if the file already exists.
241
+ * Returns true if created, false if skipped.
242
+ */
243
+ export async function initCliToolsConfig() {
244
+ const configPath = join(homedir(), '.maestro', 'cli-tools.json');
245
+ try {
246
+ await readFile(configPath, 'utf-8');
247
+ return false; // already exists
248
+ }
249
+ catch {
250
+ // doesn't exist — create it
251
+ }
252
+ const tools = {};
253
+ for (const def of TOOL_DEFS) {
254
+ tools[def.name] = {
255
+ enabled: isCliAvailable(def.cmd),
256
+ primaryModel: def.primaryModel,
257
+ tags: def.tags,
258
+ type: def.type,
259
+ };
260
+ }
261
+ const config = { version: '1.1.0', tools };
262
+ await mkdir(dirname(configPath), { recursive: true });
263
+ await writeFile(configPath, JSON.stringify(config, null, 2) + '\n');
264
+ return true;
265
+ }
49
266
  //# sourceMappingURL=cli-tools-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-tools-config.js","sourceRoot":"","sources":["../../../src/config/cli-tools-config.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,iCAAiC;AACjC,wEAAwE;AACxE,8EAA8E;AAE9E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAmBjC,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E,MAAM,cAAc,GAAmB;IACrC,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,EAAE;CACV,CAAC;AAEF,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;IACjE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,cAAc,CAAC;IACxB,CAAC;AACH,CAAC;AAWD;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,IAAwB,EACxB,MAAsB;IAEtB,sBAAsB;IACtB,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;QACxC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7C,CAAC;IAED,+CAA+C;IAC/C,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7D,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"cli-tools-config.js","sourceRoot":"","sources":["../../../src/config/cli-tools-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export interface ComponentDef {
2
+ id: string;
3
+ label: string;
4
+ description: string;
5
+ sourcePath: string;
6
+ /** Resolve target path based on mode and project path */
7
+ target: (mode: 'global' | 'project', projectPath: string) => string;
8
+ /** Always installs to global location regardless of mode */
9
+ alwaysGlobal: boolean;
10
+ /** Use tag injection instead of file copy (for doc files like CLAUDE.md) */
11
+ inject?: boolean;
12
+ /** Section name for tag injection (default: "core") */
13
+ section?: string;
14
+ }
15
+ export declare const COMPONENT_DEFS: ComponentDef[];
16
+ //# sourceMappingURL=component-defs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-defs.d.ts","sourceRoot":"","sources":["../../../src/core/component-defs.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IACpE,4DAA4D;IAC5D,YAAY,EAAE,OAAO,CAAC;IACtB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD,eAAO,MAAM,cAAc,EAAE,YAAY,EA0IxC,CAAC"}
@@ -0,0 +1,142 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Component Definitions — single source of truth for CLI and Dashboard.
3
+ //
4
+ // Both `maestro install` (CLI) and the Dashboard wizard import from here.
5
+ // ---------------------------------------------------------------------------
6
+ import { join } from 'node:path';
7
+ import { homedir } from 'node:os';
8
+ import { paths } from '../config/paths.js';
9
+ // ---------------------------------------------------------------------------
10
+ // Definitions
11
+ // ---------------------------------------------------------------------------
12
+ export const COMPONENT_DEFS = [
13
+ {
14
+ id: 'workflows',
15
+ label: 'Workflows',
16
+ description: 'Workflow definitions (~/.maestro/workflows/)',
17
+ sourcePath: 'workflows',
18
+ target: () => join(paths.home, 'workflows'),
19
+ alwaysGlobal: true,
20
+ },
21
+ {
22
+ id: 'templates',
23
+ label: 'Templates',
24
+ description: 'Prompt & task templates (~/.maestro/templates/)',
25
+ sourcePath: 'templates',
26
+ target: () => join(paths.home, 'templates'),
27
+ alwaysGlobal: true,
28
+ },
29
+ {
30
+ id: 'chains',
31
+ label: 'Chains',
32
+ description: 'Coordinate chain graphs (~/.maestro/chains/)',
33
+ sourcePath: 'chains',
34
+ target: () => join(paths.home, 'chains'),
35
+ alwaysGlobal: true,
36
+ },
37
+ {
38
+ id: 'overlays',
39
+ label: 'Overlays',
40
+ description: 'Command overlay packs (~/.maestro/overlays/_shipped/)',
41
+ sourcePath: join('overlays', '_shipped'),
42
+ target: () => join(paths.home, 'overlays', '_shipped'),
43
+ alwaysGlobal: true,
44
+ },
45
+ {
46
+ id: 'commands',
47
+ label: 'Commands',
48
+ description: 'Claude Code slash commands',
49
+ sourcePath: join('.claude', 'commands'),
50
+ target: (mode, projectPath) => mode === 'global'
51
+ ? join(homedir(), '.claude', 'commands')
52
+ : join(projectPath, '.claude', 'commands'),
53
+ alwaysGlobal: false,
54
+ },
55
+ {
56
+ id: 'agents',
57
+ label: 'Agents',
58
+ description: 'Agent definitions',
59
+ sourcePath: join('.claude', 'agents'),
60
+ target: (mode, projectPath) => mode === 'global'
61
+ ? join(homedir(), '.claude', 'agents')
62
+ : join(projectPath, '.claude', 'agents'),
63
+ alwaysGlobal: false,
64
+ },
65
+ {
66
+ id: 'skills',
67
+ label: 'Skills',
68
+ description: 'Claude Code skills',
69
+ sourcePath: join('.claude', 'skills'),
70
+ target: (mode, projectPath) => mode === 'global'
71
+ ? join(homedir(), '.claude', 'skills')
72
+ : join(projectPath, '.claude', 'skills'),
73
+ alwaysGlobal: false,
74
+ },
75
+ {
76
+ id: 'claude-md',
77
+ label: 'CLAUDE.md',
78
+ description: 'Project instructions file',
79
+ sourcePath: join('workflows', 'claude-instructions.md'),
80
+ target: (mode, projectPath) => mode === 'global'
81
+ ? join(homedir(), '.claude', 'CLAUDE.md')
82
+ : join(projectPath, '.claude', 'CLAUDE.md'),
83
+ alwaysGlobal: false,
84
+ inject: true,
85
+ },
86
+ {
87
+ id: 'codex-agents-md',
88
+ label: 'Codex AGENTS.md',
89
+ description: 'Codex project instructions file',
90
+ sourcePath: join('workflows', 'codex-instructions.md'),
91
+ target: (mode, projectPath) => mode === 'global'
92
+ ? join(homedir(), '.codex', 'AGENTS.md')
93
+ : join(projectPath, '.codex', 'AGENTS.md'),
94
+ alwaysGlobal: false,
95
+ inject: true,
96
+ },
97
+ {
98
+ id: 'claude-md-chinese',
99
+ label: 'Chinese Response (Claude)',
100
+ description: 'Chinese response guidelines → CLAUDE.md',
101
+ sourcePath: join('workflows', 'chinese-response.md'),
102
+ target: (mode, projectPath) => mode === 'global'
103
+ ? join(homedir(), '.claude', 'CLAUDE.md')
104
+ : join(projectPath, '.claude', 'CLAUDE.md'),
105
+ alwaysGlobal: false,
106
+ inject: true,
107
+ section: 'chinese',
108
+ },
109
+ {
110
+ id: 'codex-md-chinese',
111
+ label: 'Chinese Response (Codex)',
112
+ description: 'Chinese response guidelines → AGENTS.md',
113
+ sourcePath: join('workflows', 'chinese-response.md'),
114
+ target: (mode, projectPath) => mode === 'global'
115
+ ? join(homedir(), '.codex', 'AGENTS.md')
116
+ : join(projectPath, '.codex', 'AGENTS.md'),
117
+ alwaysGlobal: false,
118
+ inject: true,
119
+ section: 'chinese',
120
+ },
121
+ {
122
+ id: 'codex-agents',
123
+ label: 'Codex Agents',
124
+ description: 'Codex agent definitions',
125
+ sourcePath: join('.codex', 'agents'),
126
+ target: (mode, projectPath) => mode === 'global'
127
+ ? join(homedir(), '.codex', 'agents')
128
+ : join(projectPath, '.codex', 'agents'),
129
+ alwaysGlobal: false,
130
+ },
131
+ {
132
+ id: 'codex-skills',
133
+ label: 'Codex Skills',
134
+ description: 'Codex skill definitions',
135
+ sourcePath: join('.codex', 'skills'),
136
+ target: (mode, projectPath) => mode === 'global'
137
+ ? join(homedir(), '.codex', 'skills')
138
+ : join(projectPath, '.codex', 'skills'),
139
+ alwaysGlobal: false,
140
+ },
141
+ ];
142
+ //# sourceMappingURL=component-defs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-defs.js","sourceRoot":"","sources":["../../../src/core/component-defs.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,14 @@ export declare function saveManifest(manifest: Manifest): string;
24
24
  export declare function findManifest(scope: 'global' | 'project', targetPath: string): Manifest | null;
25
25
  export declare function getAllManifests(): Manifest[];
26
26
  export declare function deleteManifest(manifest: Manifest): void;
27
- export declare function cleanManifestFiles(manifest: Manifest): {
27
+ /**
28
+ * @param skipContentManaged If true, skip CONTENT_MANAGED files (CLAUDE.md, AGENTS.md).
29
+ * Use during re-install — tag injection updates in-place, so no cleanup needed.
30
+ * Default false (full cleanup, used by uninstall).
31
+ */
32
+ export declare function cleanManifestFiles(manifest: Manifest, opts?: {
33
+ skipContentManaged?: boolean;
34
+ }): {
28
35
  removed: number;
29
36
  skipped: number;
30
37
  };
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/core/manifest.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAsBD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,QAAQ,GAAG,SAAS,EAC3B,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC7D,QAAQ,CAYV;AAED,wBAAgB,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAElE;AAED,wBAAgB,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAOvD;AAeD,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAa7F;AAED,wBAAgB,eAAe,IAAI,QAAQ,EAAE,CAgB5C;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAGvD;AA+DD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA+C3F"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/core/manifest.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAsBD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,QAAQ,GAAG,SAAS,EAC3B,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC7D,QAAQ,CAYV;AAED,wBAAgB,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAElE;AAED,wBAAgB,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAOvD;AAeD,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAa7F;AAED,wBAAgB,eAAe,IAAI,QAAQ,EAAE,CAgB5C;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAGvD;AAyCD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,IAAI,CAAC,EAAE;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,GACtC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAgDtC"}