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.
- package/.claude/commands/maestro-analyze.md +1 -1
- package/.claude/commands/maestro-brainstorm.md +1 -1
- package/.claude/commands/maestro-composer.md +3 -3
- package/.claude/commands/maestro-init.md +4 -4
- package/.claude/commands/maestro-roadmap.md +164 -108
- package/.claude/commands/maestro.md +19 -10
- package/.claude/commands/quality-business-test.md +2 -2
- package/.claude/skills/team-quality-assurance/roles/scout/role.md +1 -1
- package/.claude/skills/team-review/roles/reviewer/role.md +1 -1
- package/.claude/skills/team-review/roles/scanner/role.md +1 -1
- package/.claude/skills/team-tech-debt/roles/scanner/role.md +3 -3
- package/.codex/skills/maestro/SKILL.md +12 -9
- package/.codex/skills/maestro-brainstorm/SKILL.md +1 -1
- package/.codex/skills/maestro-composer/SKILL.md +3 -3
- package/.codex/skills/maestro-init/SKILL.md +1 -1
- package/.codex/skills/maestro-link-coordinate/SKILL.md +1 -1
- package/.codex/skills/maestro-player/SKILL.md +2 -2
- package/.codex/skills/maestro-roadmap/SKILL.md +443 -332
- package/.codex/skills/quality-business-test/SKILL.md +2 -2
- package/.codex/skills/team-coordinate/roles/coordinator/role.md +1 -1
- package/.codex/skills/team-lifecycle-v4/roles/coordinator/role.md +1 -1
- package/.codex/skills/team-quality-assurance/roles/scout/role.md +1 -1
- package/.codex/skills/team-review/roles/reviewer/role.md +1 -1
- package/.codex/skills/team-review/roles/scanner/role.md +1 -1
- package/.codex/skills/team-tech-debt/roles/scanner/role.md +3 -3
- package/chains/singles/spec-generate.json +3 -3
- package/chains/spec-driven.json +2 -2
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +4 -0
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +2 -2
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/install-utils.d.ts +5 -12
- package/dashboard/dist-server/dashboard/src/server/routes/install-utils.js +10 -65
- package/dashboard/dist-server/dashboard/src/server/routes/install-utils.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/install.js +17 -11
- package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
- package/dashboard/dist-server/src/agents/cli-agent-runner.d.ts +4 -0
- package/dashboard/dist-server/src/agents/cli-agent-runner.js +4 -2
- package/dashboard/dist-server/src/agents/cli-agent-runner.js.map +1 -1
- package/dashboard/dist-server/src/commands/delegate.d.ts +2 -0
- package/dashboard/dist-server/src/commands/delegate.js +20 -4
- package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
- package/dashboard/dist-server/src/config/cli-tools-config.d.ts +64 -3
- package/dashboard/dist-server/src/config/cli-tools-config.js +226 -9
- package/dashboard/dist-server/src/config/cli-tools-config.js.map +1 -1
- package/dist/src/agents/cli-agent-runner.d.ts +4 -0
- package/dist/src/agents/cli-agent-runner.d.ts.map +1 -1
- package/dist/src/agents/cli-agent-runner.js +4 -2
- package/dist/src/agents/cli-agent-runner.js.map +1 -1
- package/dist/src/cli.js +2 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/cli.d.ts.map +1 -1
- package/dist/src/commands/cli.js +21 -4
- package/dist/src/commands/cli.js.map +1 -1
- package/dist/src/commands/delegate.d.ts +2 -0
- package/dist/src/commands/delegate.d.ts.map +1 -1
- package/dist/src/commands/delegate.js +20 -4
- package/dist/src/commands/delegate.js.map +1 -1
- package/dist/src/commands/install-backend.d.ts +5 -16
- package/dist/src/commands/install-backend.d.ts.map +1 -1
- package/dist/src/commands/install-backend.js +8 -104
- package/dist/src/commands/install-backend.js.map +1 -1
- package/dist/src/commands/install-ui/ExecutionView.js +1 -1
- package/dist/src/commands/install-ui/ExecutionView.js.map +1 -1
- package/dist/src/commands/install-ui/InstallExecution.d.ts +1 -0
- package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallExecution.js +19 -4
- package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
- package/dist/src/commands/install-ui/InstallResult.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallResult.js +1 -1
- package/dist/src/commands/install-ui/InstallResult.js.map +1 -1
- package/dist/src/commands/install.d.ts.map +1 -1
- package/dist/src/commands/install.js +23 -3
- package/dist/src/commands/install.js.map +1 -1
- package/dist/src/commands/tools-ui/CommandReference.d.ts +7 -0
- package/dist/src/commands/tools-ui/CommandReference.d.ts.map +1 -0
- package/dist/src/commands/tools-ui/CommandReference.js +33 -0
- package/dist/src/commands/tools-ui/CommandReference.js.map +1 -0
- package/dist/src/commands/tools-ui/ConfigSources.d.ts +6 -0
- package/dist/src/commands/tools-ui/ConfigSources.d.ts.map +1 -0
- package/dist/src/commands/tools-ui/ConfigSources.js +27 -0
- package/dist/src/commands/tools-ui/ConfigSources.js.map +1 -0
- package/dist/src/commands/tools-ui/RegisterSettings.d.ts +8 -0
- package/dist/src/commands/tools-ui/RegisterSettings.d.ts.map +1 -0
- package/dist/src/commands/tools-ui/RegisterSettings.js +125 -0
- package/dist/src/commands/tools-ui/RegisterSettings.js.map +1 -0
- package/dist/src/commands/tools-ui/RoleMappings.d.ts +9 -0
- package/dist/src/commands/tools-ui/RoleMappings.d.ts.map +1 -0
- package/dist/src/commands/tools-ui/RoleMappings.js +104 -0
- package/dist/src/commands/tools-ui/RoleMappings.js.map +1 -0
- package/dist/src/commands/tools-ui/ToolsDashboard.d.ts +8 -0
- package/dist/src/commands/tools-ui/ToolsDashboard.d.ts.map +1 -0
- package/dist/src/commands/tools-ui/ToolsDashboard.js +60 -0
- package/dist/src/commands/tools-ui/ToolsDashboard.js.map +1 -0
- package/dist/src/commands/tools-ui/ToolsOverview.d.ts +9 -0
- package/dist/src/commands/tools-ui/ToolsOverview.d.ts.map +1 -0
- package/dist/src/commands/tools-ui/ToolsOverview.js +84 -0
- package/dist/src/commands/tools-ui/ToolsOverview.js.map +1 -0
- package/dist/src/commands/tools.d.ts +3 -0
- package/dist/src/commands/tools.d.ts.map +1 -0
- package/dist/src/commands/tools.js +78 -0
- package/dist/src/commands/tools.js.map +1 -0
- package/dist/src/config/cli-tools-config.d.ts +64 -3
- package/dist/src/config/cli-tools-config.d.ts.map +1 -1
- package/dist/src/config/cli-tools-config.js +226 -9
- package/dist/src/config/cli-tools-config.js.map +1 -1
- package/dist/src/core/component-defs.d.ts +16 -0
- package/dist/src/core/component-defs.d.ts.map +1 -0
- package/dist/src/core/component-defs.js +142 -0
- package/dist/src/core/component-defs.js.map +1 -0
- package/dist/src/core/manifest.d.ts +8 -1
- package/dist/src/core/manifest.d.ts.map +1 -1
- package/dist/src/core/manifest.js +29 -40
- package/dist/src/core/manifest.js.map +1 -1
- package/dist/src/core/tag-injector.d.ts +72 -0
- package/dist/src/core/tag-injector.d.ts.map +1 -0
- package/dist/src/core/tag-injector.js +228 -0
- package/dist/src/core/tag-injector.js.map +1 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +1 -1
- package/templates/cli/prompts/workflow-skill-conflict-patterns.txt +1 -1
- package/templates/cli/prompts/workflow-skill-lessons-learned.txt +1 -1
- package/templates/search-tools.md +1 -1
- package/templates/workflows/specs/node-catalog.md +1 -1
- package/workflows/brainstorm.md +1 -1
- package/{.claude/CLAUDE.md → workflows/claude-instructions.md} +25 -26
- package/workflows/cli-tools-usage.md +16 -2
- package/workflows/codex-instructions.md +150 -0
- package/workflows/delegate-usage.md +16 -2
- package/workflows/execute.md +28 -14
- package/workflows/init.md +2 -2
- package/workflows/issue-discover.md +2 -2
- package/workflows/maestro-super.md +120 -0
- package/workflows/maestro.codex.md +4 -4
- package/workflows/maestro.md +5 -5
- package/workflows/roadmap-common.md +197 -0
- package/workflows/roadmap.md +190 -355
- package/workflows/spec-generate.md +457 -544
- package/.claude/commands/maestro-spec-generate.md +0 -78
- 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
|
|
14
|
-
*
|
|
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":"
|
|
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
|
|
20
|
-
*
|
|
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
|
-
|
|
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(
|
|
26
|
-
|
|
61
|
+
const raw = await readFile(globalPath, 'utf-8');
|
|
62
|
+
global = JSON.parse(raw);
|
|
27
63
|
}
|
|
28
64
|
catch {
|
|
29
|
-
|
|
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;
|
|
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
|
-
|
|
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":"
|
|
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"}
|