blue-gardener 0.1.1 → 0.1.3

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.
@@ -26,14 +26,22 @@ You are a quality assurance orchestrator who ensures code meets standards across
26
26
 
27
27
  ## Available Specialists
28
28
 
29
- | Specialist | Audit Type | When to Include |
30
- | -------------------------------- | -------------------------------------- | ------------------------- |
31
- | `@blue-code-reviewer` | Code quality, patterns, best practices | Always |
32
- | `@blue-security-specialist` | Security vulnerabilities, auth flows | Auth, payments, user data |
33
- | `@blue-performance-specialist` | Bundle size, rendering, caching | User-facing features |
34
- | `@blue-accessibility-specialist` | WCAG compliance, screen readers | UI components |
35
- | `@blue-seo-specialist` | Meta tags, structured data | Public pages |
36
- | `@blue-unit-testing-specialist` | Test coverage assessment | When coverage matters |
29
+ | Specialist | Audit Type | When to Include |
30
+ | ---------------------------------- | --------------------------------------------------- | ------------------------- |
31
+ | `@blue-frontend-code-reviewer` | Frontend code quality, patterns, best practices | Frontend scopes |
32
+ | `@blue-node-backend-code-reviewer` | Node backend code quality, patterns, best practices | Node backend scopes |
33
+ | `@blue-go-backend-code-reviewer` | Go backend code quality, patterns, best practices | Go backend scopes |
34
+ | `@blue-security-specialist` | Security vulnerabilities, auth flows | Auth, payments, user data |
35
+ | `@blue-performance-specialist` | Bundle size, rendering, caching | User-facing features |
36
+ | `@blue-accessibility-specialist` | WCAG compliance, screen readers | UI components |
37
+ | `@blue-seo-specialist` | Meta tags, structured data | Public pages |
38
+ | `@blue-unit-testing-specialist` | Test coverage assessment | When coverage matters |
39
+
40
+ For code-quality reviews, route by scope:
41
+
42
+ - Frontend UI/client code -> `@blue-frontend-code-reviewer`
43
+ - Node backend code -> `@blue-node-backend-code-reviewer`
44
+ - Go backend code -> `@blue-go-backend-code-reviewer`
37
45
 
38
46
  ## Gate Levels
39
47
 
@@ -44,7 +52,7 @@ You are a quality assurance orchestrator who ensures code meets standards across
44
52
 
45
53
  ```
46
54
  Delegate to:
47
- → @blue-code-reviewer
55
+ → @blue-frontend-code-reviewer (frontend) or @blue-node-backend-code-reviewer / @blue-go-backend-code-reviewer (backend)
48
56
  ```
49
57
 
50
58
  ### Standard Gate
@@ -54,7 +62,7 @@ Delegate to:
54
62
 
55
63
  ```
56
64
  Delegate to:
57
- → @blue-code-reviewer
65
+ → @blue-frontend-code-reviewer (frontend) or @blue-node-backend-code-reviewer / @blue-go-backend-code-reviewer (backend)
58
66
  → @blue-performance-specialist
59
67
  → @blue-accessibility-specialist
60
68
  ```
@@ -66,7 +74,7 @@ Delegate to:
66
74
 
67
75
  ```
68
76
  Delegate to:
69
- → @blue-code-reviewer
77
+ → @blue-frontend-code-reviewer (frontend) or @blue-node-backend-code-reviewer / @blue-go-backend-code-reviewer (backend)
70
78
  → @blue-security-specialist
71
79
  → @blue-performance-specialist
72
80
  → @blue-accessibility-specialist
@@ -80,7 +88,7 @@ Delegate to:
80
88
 
81
89
  ```
82
90
  Delegate to:
83
- → @blue-code-reviewer
91
+ → @blue-frontend-code-reviewer (frontend) or @blue-node-backend-code-reviewer / @blue-go-backend-code-reviewer (backend)
84
92
  → @blue-security-specialist
85
93
  ```
86
94
 
@@ -265,7 +273,7 @@ User: "Run quality gate on the new checkout flow before release"
265
273
  → Gate Level: Full (or Security-Focused minimum)
266
274
 
267
275
  2. Recommends delegation:
268
- → "@blue-code-reviewer: Review checkout components and hooks"
276
+ → "@blue-frontend-code-reviewer: Review checkout components and hooks"
269
277
  → "@blue-security-specialist: Audit payment form, token handling, input validation"
270
278
  → "@blue-performance-specialist: Check bundle impact, rendering performance"
271
279
  → "@blue-accessibility-specialist: Verify form accessibility, error announcements"
@@ -255,11 +255,13 @@ Review coordinator:
255
255
 
256
256
  ### Backend Issues
257
257
 
258
- | Issue Type | Route To |
259
- | -------------------------- | -------------------------------------------------- |
260
- | Node.js/TypeScript backend | `@blue-node-backend-implementation-specialist` |
261
- | Go backend | `@blue-go-backend-implementation-specialist` |
262
- | Database schema/queries | Database specialist (relational/document/keyvalue) |
258
+ | Issue Type | Route To |
259
+ | ------------------------------------ | ---------------------------------------------- |
260
+ | Node.js/TypeScript backend | `@blue-node-backend-implementation-specialist` |
261
+ | Go backend | `@blue-go-backend-implementation-specialist` |
262
+ | Database schema/queries (relational) | `@blue-relational-database-specialist` |
263
+ | Database schema/queries (document) | `@blue-document-database-specialist` |
264
+ | Database schema/queries (key-value) | `@blue-keyvalue-database-specialist` |
263
265
 
264
266
  ### Cross-Cutting Issues
265
267
 
@@ -1,4 +1,5 @@
1
1
  export declare function addCommand(agents?: string[], options?: {
2
2
  profile?: string;
3
+ platform?: string;
3
4
  }): Promise<void>;
4
5
  //# sourceMappingURL=add.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAqBA,wBAAsB,UAAU,CAC9B,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CA+Mf"}
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAmBA,wBAAsB,UAAU,CAC9B,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD,OAAO,CAAC,IAAI,CAAC,CAqPf"}
@@ -1,9 +1,9 @@
1
1
  import chalk from "chalk";
2
2
  import { checkbox, select } from "@inquirer/prompts";
3
- import { getAvailableAgents, installAgent, getInstalledAgents, getCategories, getAgentsByCategory, } from "../lib/agents.js";
3
+ import { getAvailableAgents, installAgent, getInstalledAgents, getCategories, getAgentsByCategory, addPlatformAndSyncAgents, } from "../lib/agents.js";
4
4
  import { getProfiles, getProfile } from "../lib/profiles.js";
5
- import { detectPlatform, promptForPlatform, getPlatformInfo, } from "../lib/platform.js";
6
- import { readManifest, writeManifest, updatePlatform, } from "../lib/manifest.js";
5
+ import { detectPlatform, promptForPlatform, getPlatformInfo, parsePlatform, } from "../lib/platform.js";
6
+ import { readManifest, getEnabledPlatforms } from "../lib/manifest.js";
7
7
  export async function addCommand(agents, options) {
8
8
  const availableAgents = getAvailableAgents();
9
9
  const installedAgents = getInstalledAgents();
@@ -14,135 +14,158 @@ export async function addCommand(agents, options) {
14
14
  }
15
15
  // Filter out already installed agents
16
16
  const notInstalled = availableAgents.filter((a) => !installedNames.includes(a.name));
17
- if (notInstalled.length === 0) {
17
+ if (notInstalled.length === 0 && !options?.platform) {
18
18
  console.log(chalk.green("All available agents are already installed."));
19
19
  return;
20
20
  }
21
- let agentsToInstall;
22
- if (options?.profile) {
23
- const profile = getProfile(options.profile);
24
- if (!profile) {
25
- console.log(chalk.yellow(`Unknown profile: ${options.profile}. Run "npx blue-gardener profiles" to see available profiles.`));
26
- return;
27
- }
28
- const requested = profile.agentNames;
29
- const known = requested.filter((name) => availableAgents.some((a) => a.name === name));
30
- const missing = requested.filter((name) => !availableAgents.some((a) => a.name === name));
31
- if (missing.length > 0) {
32
- console.log(chalk.yellow(`Profile contains unknown agents (skipping): ${missing.join(", ")}`));
33
- }
34
- agentsToInstall = known.filter((name) => notInstalled.some((a) => a.name === name));
35
- const alreadyInstalled = known.filter((name) => installedNames.includes(name));
36
- if (alreadyInstalled.length > 0) {
37
- console.log(chalk.dim(`Already installed (profile): ${alreadyInstalled.join(", ")}`));
38
- }
39
- }
40
- else if (agents && agents.length > 0) {
41
- // Use provided agent names
42
- agentsToInstall = agents.filter((name) => notInstalled.some((a) => a.name === name));
43
- const invalid = agents.filter((name) => !availableAgents.some((a) => a.name === name));
44
- if (invalid.length > 0) {
45
- console.log(chalk.yellow(`Unknown agents: ${invalid.join(", ")}`));
46
- }
47
- const alreadyInstalled = agents.filter((name) => installedNames.includes(name));
48
- if (alreadyInstalled.length > 0) {
49
- console.log(chalk.yellow(`Already installed: ${alreadyInstalled.join(", ")}`));
50
- }
51
- }
52
- else {
53
- // Interactive selection: profile vs category
54
- const installMode = await select({
55
- message: "Install agents by:",
56
- choices: [
57
- {
58
- name: "Profile preset (recommended)",
59
- value: "profile",
60
- description: "Install a curated set of agents for a project type",
61
- },
62
- {
63
- name: "Category browse",
64
- value: "category",
65
- description: "Pick individual agents from a category",
66
- },
67
- ],
68
- });
69
- if (installMode === "profile") {
70
- const profiles = getProfiles();
71
- const selectedProfileId = await select({
72
- message: "Select a profile:",
73
- choices: profiles.map((p) => ({
74
- name: `${p.name} (${p.agentNames.length} agents)`,
75
- value: p.id,
76
- description: p.description,
77
- })),
78
- });
79
- const profile = getProfile(selectedProfileId);
80
- const profileAgents = profile.agentNames
81
- .map((name) => availableAgents.find((a) => a.name === name))
82
- .filter(Boolean)
83
- .filter((a) => notInstalled.some((na) => na.name === a.name));
84
- if (profileAgents.length === 0) {
85
- console.log(chalk.green(`All agents in "${profile.name}" are already installed.`));
21
+ let agentsToInstall = [];
22
+ if (notInstalled.length > 0) {
23
+ if (options?.profile) {
24
+ const profile = getProfile(options.profile);
25
+ if (!profile) {
26
+ console.log(chalk.yellow(`Unknown profile: ${options.profile}. Run "npx blue-gardener profiles" to see available profiles.`));
86
27
  return;
87
28
  }
88
- agentsToInstall = await checkbox({
89
- message: `Select agents to install (${profile.name}):`,
90
- choices: profileAgents.map((agent) => ({
91
- name: agent.name,
92
- value: agent.name,
93
- description: agent.description,
94
- })),
95
- });
29
+ const requested = profile.agentNames;
30
+ const known = requested.filter((name) => availableAgents.some((a) => a.name === name));
31
+ const missing = requested.filter((name) => !availableAgents.some((a) => a.name === name));
32
+ if (missing.length > 0) {
33
+ console.log(chalk.yellow(`Profile contains unknown agents (skipping): ${missing.join(", ")}`));
34
+ }
35
+ agentsToInstall = known.filter((name) => notInstalled.some((a) => a.name === name));
36
+ const alreadyInstalled = known.filter((name) => installedNames.includes(name));
37
+ if (alreadyInstalled.length > 0) {
38
+ console.log(chalk.dim(`Already installed (profile): ${alreadyInstalled.join(", ")}`));
39
+ }
40
+ }
41
+ else if (agents && agents.length > 0) {
42
+ // Use provided agent names
43
+ agentsToInstall = agents.filter((name) => notInstalled.some((a) => a.name === name));
44
+ const invalid = agents.filter((name) => !availableAgents.some((a) => a.name === name));
45
+ if (invalid.length > 0) {
46
+ console.log(chalk.yellow(`Unknown agents: ${invalid.join(", ")}`));
47
+ }
48
+ const alreadyInstalled = agents.filter((name) => installedNames.includes(name));
49
+ if (alreadyInstalled.length > 0) {
50
+ console.log(chalk.yellow(`Already installed: ${alreadyInstalled.join(", ")}`));
51
+ }
96
52
  }
97
53
  else {
98
- // Category browse
99
- const categories = getCategories();
100
- // Step 1: Select category
101
- const selectedCategory = await select({
102
- message: "Select a category:",
103
- choices: categories.map((cat) => ({
104
- name: `${cat.name} (${cat.count} ${cat.count === 1 ? "agent" : "agents"})`,
105
- value: cat.id,
106
- })),
54
+ // Interactive selection: profile vs category
55
+ const installMode = await select({
56
+ message: "Install agents by:",
57
+ choices: [
58
+ {
59
+ name: "Profile preset (recommended)",
60
+ value: "profile",
61
+ description: "Install a curated set of agents for a project type",
62
+ },
63
+ {
64
+ name: "Category browse",
65
+ value: "category",
66
+ description: "Pick individual agents from a category",
67
+ },
68
+ ],
107
69
  });
108
- // Step 2: Select agents from category
109
- const categoryAgents = getAgentsByCategory(selectedCategory).filter((a) => notInstalled.some((na) => na.name === a.name));
110
- if (categoryAgents.length === 0) {
111
- console.log(chalk.green(`All agents in ${selectedCategory} category are already installed.`));
112
- return;
70
+ if (installMode === "profile") {
71
+ const profiles = getProfiles();
72
+ const selectedProfileId = await select({
73
+ message: "Select a profile:",
74
+ choices: profiles.map((p) => ({
75
+ name: `${p.name} (${p.agentNames.length} agents)`,
76
+ value: p.id,
77
+ description: p.description,
78
+ })),
79
+ });
80
+ const profile = getProfile(selectedProfileId);
81
+ const profileAgents = profile.agentNames
82
+ .map((name) => availableAgents.find((a) => a.name === name))
83
+ .filter(Boolean)
84
+ .filter((a) => notInstalled.some((na) => na.name === a.name));
85
+ if (profileAgents.length === 0) {
86
+ console.log(chalk.green(`All agents in "${profile.name}" are already installed.`));
87
+ return;
88
+ }
89
+ agentsToInstall = await checkbox({
90
+ message: `Select agents to install (${profile.name}):`,
91
+ choices: profileAgents.map((agent) => ({
92
+ name: agent.name,
93
+ value: agent.name,
94
+ description: agent.description,
95
+ })),
96
+ });
97
+ }
98
+ else {
99
+ // Category browse
100
+ const categories = getCategories();
101
+ // Step 1: Select category
102
+ const selectedCategory = await select({
103
+ message: "Select a category:",
104
+ choices: categories.map((cat) => ({
105
+ name: `${cat.name} (${cat.count} ${cat.count === 1 ? "agent" : "agents"})`,
106
+ value: cat.id,
107
+ })),
108
+ });
109
+ // Step 2: Select agents from category
110
+ const categoryAgents = getAgentsByCategory(selectedCategory).filter((a) => notInstalled.some((na) => na.name === a.name));
111
+ if (categoryAgents.length === 0) {
112
+ console.log(chalk.green(`All agents in ${selectedCategory} category are already installed.`));
113
+ return;
114
+ }
115
+ agentsToInstall = await checkbox({
116
+ message: `Select agents to install (${selectedCategory}):`,
117
+ choices: categoryAgents.map((agent) => ({
118
+ name: agent.name,
119
+ value: agent.name,
120
+ description: agent.description,
121
+ })),
122
+ });
113
123
  }
114
- agentsToInstall = await checkbox({
115
- message: `Select agents to install (${selectedCategory}):`,
116
- choices: categoryAgents.map((agent) => ({
117
- name: agent.name,
118
- value: agent.name,
119
- description: agent.description,
120
- })),
121
- });
122
124
  }
123
125
  }
124
- if (agentsToInstall.length === 0) {
126
+ if (agentsToInstall.length === 0 && !options?.platform) {
125
127
  console.log(chalk.yellow("No agents selected."));
126
128
  return;
127
129
  }
128
- // Step 3: Platform detection/prompt (on first use)
130
+ // Step 3: Ensure platform configuration exists and optionally add a platform
129
131
  let manifest = readManifest();
130
- let platform = manifest?.platform || detectPlatform();
131
- if (!platform) {
132
- // First time - prompt for platform
132
+ if (options?.platform) {
133
+ const requestedPlatform = parsePlatform(options.platform);
134
+ if (!requestedPlatform) {
135
+ console.log(chalk.red(`Unknown platform: ${options.platform}`));
136
+ return;
137
+ }
138
+ const addResult = addPlatformAndSyncAgents(requestedPlatform);
139
+ if (addResult.alreadyEnabled) {
140
+ const info = getPlatformInfo(requestedPlatform);
141
+ console.log(chalk.dim(`${info.name} is already enabled.`));
142
+ }
143
+ else {
144
+ const info = getPlatformInfo(requestedPlatform);
145
+ console.log(chalk.green(`✓ Added platform: ${info.name}`));
146
+ if (addResult.synced.length > 0) {
147
+ console.log(chalk.green(`✓ Synced ${addResult.synced.length} existing agent(s) to ${info.name}`));
148
+ }
149
+ if (addResult.failed.length > 0) {
150
+ console.log(chalk.yellow(`Could not sync ${addResult.failed.length} agent(s) to ${info.name}`));
151
+ }
152
+ }
153
+ manifest = readManifest() ?? manifest;
154
+ }
155
+ if (getEnabledPlatforms(manifest).length === 0) {
156
+ let platform = detectPlatform();
157
+ // First time - prompt for platform if detection fails
133
158
  console.log(chalk.cyan("\nWelcome to Blue Gardener! Let's set up your platform configuration."));
134
- platform = await promptForPlatform();
135
- // Update manifest with platform
136
- if (manifest) {
137
- manifest = updatePlatform(manifest, platform);
138
- writeManifest(manifest);
159
+ if (!platform) {
160
+ platform = await promptForPlatform();
139
161
  }
162
+ addPlatformAndSyncAgents(platform);
140
163
  const platformInfo = getPlatformInfo(platform);
141
164
  console.log(chalk.green(`\n✓ Platform set to: ${platformInfo.name}\n`));
142
165
  }
143
166
  // Step 4: Install selected agents
144
167
  for (const name of agentsToInstall) {
145
- const success = installAgent(name, platform);
168
+ const success = installAgent(name);
146
169
  if (success) {
147
170
  console.log(chalk.green(`✓ Installed ${name}`));
148
171
  }
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function platformAddCommand(platformArg?: string): Promise<void>;
2
+ //# sourceMappingURL=platform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/commands/platform.ts"],"names":[],"mappings":"AAYA,wBAAsB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsD5E"}
@@ -0,0 +1,43 @@
1
+ import chalk from "chalk";
2
+ import { addPlatformAndSyncAgents } from "../lib/agents.js";
3
+ import { readManifest, getEnabledPlatforms } from "../lib/manifest.js";
4
+ import { PLATFORMS, getPlatformInfo, getAvailablePlatformsToAdd, parsePlatform, promptForPlatform, } from "../lib/platform.js";
5
+ export async function platformAddCommand(platformArg) {
6
+ const manifest = readManifest();
7
+ const enabledPlatforms = getEnabledPlatforms(manifest);
8
+ let targetPlatform;
9
+ if (platformArg) {
10
+ const parsed = parsePlatform(platformArg);
11
+ if (!parsed) {
12
+ console.log(chalk.red(`Unknown platform: ${platformArg}`));
13
+ console.log(chalk.dim(`Available: ${PLATFORMS.map((platform) => platform.id).join(", ")}`));
14
+ return;
15
+ }
16
+ targetPlatform = parsed;
17
+ }
18
+ else {
19
+ const availableToAdd = getAvailablePlatformsToAdd(enabledPlatforms);
20
+ if (availableToAdd.length === 0) {
21
+ console.log(chalk.green("All platforms are already enabled."));
22
+ return;
23
+ }
24
+ targetPlatform = await promptForPlatform({
25
+ exclude: enabledPlatforms,
26
+ message: "Which platform would you like to add?",
27
+ });
28
+ }
29
+ const result = addPlatformAndSyncAgents(targetPlatform);
30
+ const platformInfo = getPlatformInfo(targetPlatform);
31
+ if (result.alreadyEnabled) {
32
+ console.log(chalk.yellow(`${platformInfo.name} is already enabled.`));
33
+ return;
34
+ }
35
+ console.log(chalk.green(`✓ Added platform: ${platformInfo.name}`));
36
+ if (result.synced.length > 0) {
37
+ console.log(chalk.green(`✓ Synced ${result.synced.length} existing agent(s) to ${platformInfo.name}`));
38
+ }
39
+ if (result.failed.length > 0) {
40
+ console.log(chalk.yellow(`Could not sync ${result.failed.length} agent(s) to ${platformInfo.name}: ${result.failed.join(", ")}`));
41
+ }
42
+ }
43
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/commands/platform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EACL,SAAS,EACT,eAAe,EACf,0BAA0B,EAC1B,aAAa,EACb,iBAAiB,GAElB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,WAAoB;IAC3D,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAEvD,IAAI,cAAwB,CAAC;IAC7B,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,WAAW,EAAE,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,cAAc,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpE,CACF,CAAC;YACF,OAAO;QACT,CAAC;QACD,cAAc,GAAG,MAAM,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,MAAM,cAAc,GAAG,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;QACpE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QACD,cAAc,GAAG,MAAM,iBAAiB,CAAC;YACvC,OAAO,EAAE,gBAAgB;YACzB,OAAO,EAAE,uCAAuC;SACjD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,wBAAwB,CAAC,cAAc,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IAErD,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,sBAAsB,CAAC,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAEnE,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,yBAAyB,YAAY,CAAC,IAAI,EAAE,CAC7E,CACF,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,kBAAkB,MAAM,CAAC,MAAM,CAAC,MAAM,gBAAgB,YAAY,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvG,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
package/dist/index.js CHANGED
@@ -10,6 +10,7 @@ import { syncCommand } from "./commands/sync.js";
10
10
  import { repairCommand } from "./commands/repair.js";
11
11
  import { searchCommand } from "./commands/search.js";
12
12
  import { profilesCommand } from "./commands/profiles.js";
13
+ import { platformAddCommand } from "./commands/platform.js";
13
14
  program
14
15
  .name("blue-gardener")
15
16
  .description("Manage AI coding agents across multiple platforms")
@@ -19,6 +20,7 @@ program
19
20
  .command("add [agents...]")
20
21
  .description("Add one or more agents to your project")
21
22
  .option("-p, --profile <profileId>", "Install a preset profile of agents")
23
+ .option("--platform <platform>", "Enable a platform and sync existing agents before install")
22
24
  .action((agents, options) => addCommand(agents, options));
23
25
  program
24
26
  .command("remove [agents...]")
@@ -45,5 +47,9 @@ program
45
47
  .command("profiles")
46
48
  .description("List available agent install profiles")
47
49
  .action(profilesCommand);
50
+ program
51
+ .command("platform add [platform]")
52
+ .description("Add a platform and sync existing agents to it")
53
+ .action(platformAddCommand);
48
54
  program.parse();
49
55
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,2DAA2D;AAC3D,gFAAgF;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO;KACJ,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,mDAAmD,CAAC;KAChE,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;AAEnC,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,2BAA2B,EAAE,oCAAoC,CAAC;KACzE,MAAM,CAAC,CAAC,MAAgB,EAAE,OAA6B,EAAE,EAAE,CAC1D,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAC5B,CAAC;AAEJ,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,MAAM,CAAC,cAAc,EAAE,6BAA6B,CAAC;KACrD,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,2DAA2D;AAC3D,gFAAgF;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO;KACJ,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,mDAAmD,CAAC;KAChE,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;AAEnC,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,2BAA2B,EAAE,oCAAoC,CAAC;KACzE,MAAM,CACL,uBAAuB,EACvB,2DAA2D,CAC5D;KACA,MAAM,CACL,CAAC,MAAgB,EAAE,OAAgD,EAAE,EAAE,CACrE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9B,CAAC;AAEJ,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,MAAM,CAAC,cAAc,EAAE,6BAA6B,CAAC;KACrD,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,OAAO;KACJ,OAAO,CAAC,yBAAyB,CAAC;KAClC,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAE9B,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -44,6 +44,15 @@ export declare function syncAgents(): {
44
44
  synced: string[];
45
45
  failed: string[];
46
46
  };
47
+ /**
48
+ * Add a platform and sync existing installed agents to it.
49
+ */
50
+ export declare function addPlatformAndSyncAgents(platform: Platform): {
51
+ added: boolean;
52
+ alreadyEnabled: boolean;
53
+ synced: string[];
54
+ failed: string[];
55
+ };
47
56
  /**
48
57
  * Find orphaned blue-* agent files that exist in project but aren't in manifest
49
58
  */
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/lib/agents.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAkB,MAAM,eAAe,CAAC;AA6BzD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,YAAY,EAAE,CAgC9C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CAGjE;AA6DD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,SAAS,EAAE,CAoChD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,SAAS,EAAE,CAKhD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAqC5E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CA4BtD;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CA0DnE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,SAAS,EAAE,CAwBhD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAsC1E"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/lib/agents.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,QAAQ,EAAkB,MAAM,eAAe,CAAC;AAiDzD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,YAAY,EAAE,CAgC9C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CAGjE;AA6DD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,SAAS,EAAE,CAoChD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,SAAS,EAAE,CAKhD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAsC5E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CA8BtD;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAoEnE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,GAAG;IAC5D,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CA8DA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,SAAS,EAAE,CAwBhD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAsC1E"}
@@ -2,7 +2,7 @@ import fs from "fs";
2
2
  import path from "path";
3
3
  import chalk from "chalk";
4
4
  import { getBundledAgentsDir, getProjectAgentsDir, ensureProjectAgentsDir, } from "./paths.js";
5
- import { readManifest, writeManifest, createManifest, addAgentToManifest, removeAgentFromManifest, getInstalledAgentNames, updatePlatform, } from "./manifest.js";
5
+ import { readManifest, writeManifest, createManifest, addAgentToManifest, removeAgentFromManifest, getInstalledAgentNames, addPlatformToManifest, getEnabledPlatforms, } from "./manifest.js";
6
6
  import { detectPlatform } from "./platform.js";
7
7
  import { getAdapter } from "./adapters/index.js";
8
8
  // Read version from package.json
@@ -26,6 +26,20 @@ function debugLog(message) {
26
26
  console.log(chalk.gray(`[debug] ${message}`));
27
27
  }
28
28
  }
29
+ function resolvePlatformsFromManifest(manifest) {
30
+ const enabled = getEnabledPlatforms(manifest);
31
+ if (enabled.length > 0) {
32
+ return enabled;
33
+ }
34
+ const detected = detectPlatform();
35
+ if (detected) {
36
+ return [detected];
37
+ }
38
+ return ["cursor"];
39
+ }
40
+ function dedupePlatforms(platforms) {
41
+ return Array.from(new Set(platforms));
42
+ }
29
43
  /**
30
44
  * Get list of all categories with agent counts
31
45
  */
@@ -164,27 +178,27 @@ export function installAgent(agentName, platform) {
164
178
  if (!agent) {
165
179
  return false;
166
180
  }
167
- // Get platform from manifest or parameter
181
+ // Resolve target platform(s)
168
182
  let manifest = readManifest();
169
- const targetPlatform = platform || manifest?.platform || detectPlatform() || "cursor";
170
- // Get adapter for platform
171
- const adapter = getAdapter(targetPlatform);
172
- // Ensure directory exists
173
- ensureProjectAgentsDir(targetPlatform);
174
- // Install agent using adapter
175
- try {
176
- adapter.installAgent(agentName, agent);
177
- }
178
- catch (error) {
179
- debugLog(`Failed to install ${agentName}: ${error}`);
180
- return false;
183
+ const targetPlatforms = dedupePlatforms(platform ? [platform] : resolvePlatformsFromManifest(manifest));
184
+ // Install agent across all target platforms
185
+ for (const targetPlatform of targetPlatforms) {
186
+ const adapter = getAdapter(targetPlatform);
187
+ ensureProjectAgentsDir(targetPlatform);
188
+ try {
189
+ adapter.installAgent(agentName, agent);
190
+ }
191
+ catch (error) {
192
+ debugLog(`Failed to install ${agentName} on ${targetPlatform}: ${error}`);
193
+ return false;
194
+ }
181
195
  }
182
196
  // Update manifest
183
197
  if (!manifest) {
184
- manifest = createManifest(PACKAGE_VERSION, targetPlatform);
198
+ manifest = createManifest(PACKAGE_VERSION);
185
199
  }
186
- else if (!manifest.platform) {
187
- manifest = updatePlatform(manifest, targetPlatform);
200
+ for (const targetPlatform of targetPlatforms) {
201
+ manifest = addPlatformToManifest(manifest, targetPlatform);
188
202
  }
189
203
  manifest = addAgentToManifest(manifest, agentName, PACKAGE_VERSION);
190
204
  writeManifest(manifest);
@@ -198,19 +212,21 @@ export function removeAgent(agentName) {
198
212
  if (!manifest || !manifest.agents[agentName]) {
199
213
  return false;
200
214
  }
201
- // Get platform from manifest
202
- const platform = manifest.platform || detectPlatform() || "cursor";
203
- const adapter = getAdapter(platform);
215
+ // Remove from all enabled platforms
216
+ const platforms = resolvePlatformsFromManifest(manifest);
204
217
  // Find the agent info
205
218
  const availableAgents = getAvailableAgents();
206
219
  const agent = availableAgents.find((a) => a.name === agentName);
207
220
  if (agent) {
208
- try {
209
- adapter.removeAgent(agentName, agent);
210
- }
211
- catch (error) {
212
- debugLog(`Failed to remove ${agentName}: ${error}`);
213
- return false;
221
+ for (const platform of platforms) {
222
+ const adapter = getAdapter(platform);
223
+ try {
224
+ adapter.removeAgent(agentName, agent);
225
+ }
226
+ catch (error) {
227
+ debugLog(`Failed to remove ${agentName} from ${platform}: ${error}`);
228
+ return false;
229
+ }
214
230
  }
215
231
  }
216
232
  // Update manifest
@@ -226,11 +242,9 @@ export function syncAgents() {
226
242
  if (!manifest) {
227
243
  return { synced: [], failed: [] };
228
244
  }
229
- // Get platform from manifest
230
- const platform = manifest.platform || detectPlatform() || "cursor";
231
- const adapter = getAdapter(platform);
232
- const synced = [];
233
- const failed = [];
245
+ const platforms = resolvePlatformsFromManifest(manifest);
246
+ const syncedSet = new Set();
247
+ const failedSet = new Set();
234
248
  // Get installed agents info
235
249
  const availableAgents = getAvailableAgents();
236
250
  const installedAgents = [];
@@ -240,33 +254,43 @@ export function syncAgents() {
240
254
  installedAgents.push(agent);
241
255
  }
242
256
  else {
243
- failed.push(agentName);
244
- }
245
- }
246
- if (adapter.isSingleFile) {
247
- // Single-file platforms: regenerate entire file
248
- try {
249
- adapter.syncAgents(installedAgents);
250
- synced.push(...installedAgents.map((a) => a.name));
251
- }
252
- catch (error) {
253
- debugLog(`Failed to sync agents: ${error}`);
254
- failed.push(...installedAgents.map((a) => a.name));
257
+ failedSet.add(agentName);
255
258
  }
256
259
  }
257
- else {
258
- // Multi-file platforms: update each file individually
259
- for (const agent of installedAgents) {
260
+ for (const platform of platforms) {
261
+ const adapter = getAdapter(platform);
262
+ ensureProjectAgentsDir(platform);
263
+ if (adapter.isSingleFile) {
264
+ // Single-file platforms: regenerate entire file
260
265
  try {
261
- adapter.installAgent(agent.name, agent);
262
- synced.push(agent.name);
266
+ adapter.syncAgents(installedAgents);
267
+ for (const agent of installedAgents) {
268
+ syncedSet.add(agent.name);
269
+ }
263
270
  }
264
271
  catch (error) {
265
- debugLog(`Failed to sync ${agent.name}: ${error}`);
266
- failed.push(agent.name);
272
+ debugLog(`Failed to sync agents for ${platform}: ${error}`);
273
+ for (const agent of installedAgents) {
274
+ failedSet.add(agent.name);
275
+ }
276
+ }
277
+ }
278
+ else {
279
+ // Multi-file platforms: update each file individually
280
+ for (const agent of installedAgents) {
281
+ try {
282
+ adapter.installAgent(agent.name, agent);
283
+ syncedSet.add(agent.name);
284
+ }
285
+ catch (error) {
286
+ debugLog(`Failed to sync ${agent.name} for ${platform}: ${error}`);
287
+ failedSet.add(agent.name);
288
+ }
267
289
  }
268
290
  }
269
291
  }
292
+ const synced = Array.from(syncedSet).filter((name) => !failedSet.has(name));
293
+ const failed = Array.from(failedSet);
270
294
  // Update manifest version
271
295
  if (synced.length > 0) {
272
296
  manifest.version = PACKAGE_VERSION;
@@ -277,6 +301,63 @@ export function syncAgents() {
277
301
  }
278
302
  return { synced, failed };
279
303
  }
304
+ /**
305
+ * Add a platform and sync existing installed agents to it.
306
+ */
307
+ export function addPlatformAndSyncAgents(platform) {
308
+ let manifest = readManifest();
309
+ if (!manifest) {
310
+ manifest = createManifest(PACKAGE_VERSION);
311
+ }
312
+ const enabledPlatforms = getEnabledPlatforms(manifest);
313
+ if (enabledPlatforms.includes(platform)) {
314
+ return { added: false, alreadyEnabled: true, synced: [], failed: [] };
315
+ }
316
+ manifest = addPlatformToManifest(manifest, platform);
317
+ writeManifest(manifest);
318
+ const availableAgents = getAvailableAgents();
319
+ const installedAgentNames = Object.keys(manifest.agents);
320
+ const adapter = getAdapter(platform);
321
+ ensureProjectAgentsDir(platform);
322
+ const synced = [];
323
+ const failed = [];
324
+ if (adapter.isSingleFile) {
325
+ const installedAgents = installedAgentNames
326
+ .map((name) => availableAgents.find((agent) => agent.name === name))
327
+ .filter((agent) => Boolean(agent));
328
+ for (const agentName of installedAgentNames) {
329
+ if (!installedAgents.some((agent) => agent.name === agentName)) {
330
+ failed.push(agentName);
331
+ }
332
+ }
333
+ try {
334
+ adapter.syncAgents(installedAgents);
335
+ synced.push(...installedAgents.map((agent) => agent.name));
336
+ }
337
+ catch (error) {
338
+ debugLog(`Failed to sync agents for ${platform}: ${error}`);
339
+ failed.push(...installedAgents.map((agent) => agent.name));
340
+ }
341
+ }
342
+ else {
343
+ for (const agentName of installedAgentNames) {
344
+ const agent = availableAgents.find((candidate) => candidate.name === agentName);
345
+ if (!agent) {
346
+ failed.push(agentName);
347
+ continue;
348
+ }
349
+ try {
350
+ adapter.installAgent(agentName, agent);
351
+ synced.push(agentName);
352
+ }
353
+ catch (error) {
354
+ debugLog(`Failed to install ${agentName} on ${platform}: ${error}`);
355
+ failed.push(agentName);
356
+ }
357
+ }
358
+ }
359
+ return { added: true, alreadyEnabled: false, synced, failed };
360
+ }
280
361
  /**
281
362
  * Find orphaned blue-* agent files that exist in project but aren't in manifest
282
363
  */
@@ -1 +1 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/lib/agents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/lib/agents.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,9 @@ export interface Manifest {
7
7
  _comment?: string;
8
8
  version: string;
9
9
  installedAt: string;
10
+ /** @deprecated Use platforms instead. */
10
11
  platform?: Platform;
12
+ platforms: Platform[];
11
13
  agents: Record<string, AgentEntry>;
12
14
  }
13
15
  /**
@@ -23,9 +25,17 @@ export declare function writeManifest(manifest: Manifest): void;
23
25
  */
24
26
  export declare function createManifest(version: string, platform?: Platform): Manifest;
25
27
  /**
26
- * Update platform in manifest
28
+ * Normalize manifest to current schema.
27
29
  */
28
- export declare function updatePlatform(manifest: Manifest, platform: Platform): Manifest;
30
+ export declare function normalizeManifest(manifest: Manifest): Manifest;
31
+ /**
32
+ * Add a platform to manifest if missing.
33
+ */
34
+ export declare function addPlatformToManifest(manifest: Manifest, platform: Platform): Manifest;
35
+ /**
36
+ * Get enabled platforms from manifest.
37
+ */
38
+ export declare function getEnabledPlatforms(manifest: Manifest | null): Platform[];
29
39
  /**
30
40
  * Add an agent to the manifest
31
41
  */
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/lib/manifest.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACpC;AAKD;;GAEG;AACH,wBAAgB,YAAY,IAAI,QAAQ,GAAG,IAAI,CAS9C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAYtD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAQ7E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,GACjB,QAAQ,CAKV;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,QAAQ,CAWV;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,GAChB,QAAQ,CAMV;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAMjD"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/lib/manifest.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACpC;AAKD;;GAEG;AACH,wBAAgB,YAAY,IAAI,QAAQ,GAAG,IAAI,CAS9C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAatD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAS7E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAa9D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,GACjB,QAAQ,CAUV;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,QAAQ,EAAE,CAKzE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,QAAQ,CAWV;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,GAChB,QAAQ,CAMV;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAMjD"}
@@ -8,7 +8,7 @@ export function readManifest() {
8
8
  const manifestPath = getManifestPath();
9
9
  if (fs.existsSync(manifestPath)) {
10
10
  const content = fs.readFileSync(manifestPath, "utf-8");
11
- return JSON.parse(content);
11
+ return normalizeManifest(JSON.parse(content));
12
12
  }
13
13
  return null;
14
14
  }
@@ -18,10 +18,11 @@ export function readManifest() {
18
18
  export function writeManifest(manifest) {
19
19
  ensureProjectAgentsDir();
20
20
  const manifestPath = getManifestPath();
21
+ const normalizedManifest = normalizeManifest(manifest);
21
22
  // Ensure comment is always present
22
23
  const manifestWithComment = {
23
24
  _comment: MANIFEST_COMMENT,
24
- ...manifest,
25
+ ...normalizedManifest,
25
26
  };
26
27
  fs.writeFileSync(manifestPath, JSON.stringify(manifestWithComment, null, 2) + "\n");
27
28
  }
@@ -34,18 +35,48 @@ export function createManifest(version, platform) {
34
35
  version,
35
36
  installedAt: new Date().toISOString(),
36
37
  platform,
38
+ platforms: platform ? [platform] : [],
37
39
  agents: {},
38
40
  };
39
41
  }
40
42
  /**
41
- * Update platform in manifest
43
+ * Normalize manifest to current schema.
42
44
  */
43
- export function updatePlatform(manifest, platform) {
45
+ export function normalizeManifest(manifest) {
46
+ const platforms = Array.isArray(manifest.platforms)
47
+ ? manifest.platforms
48
+ : manifest.platform
49
+ ? [manifest.platform]
50
+ : [];
51
+ const dedupedPlatforms = Array.from(new Set(platforms));
44
52
  return {
45
53
  ...manifest,
46
- platform,
54
+ platform: dedupedPlatforms[0],
55
+ platforms: dedupedPlatforms,
47
56
  };
48
57
  }
58
+ /**
59
+ * Add a platform to manifest if missing.
60
+ */
61
+ export function addPlatformToManifest(manifest, platform) {
62
+ const normalized = normalizeManifest(manifest);
63
+ if (normalized.platforms.includes(platform)) {
64
+ return normalized;
65
+ }
66
+ return normalizeManifest({
67
+ ...normalized,
68
+ platforms: [...normalized.platforms, platform],
69
+ });
70
+ }
71
+ /**
72
+ * Get enabled platforms from manifest.
73
+ */
74
+ export function getEnabledPlatforms(manifest) {
75
+ if (!manifest) {
76
+ return [];
77
+ }
78
+ return normalizeManifest(manifest).platforms;
79
+ }
49
80
  /**
50
81
  * Add an agent to the manifest
51
82
  */
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/lib/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAgBrE,MAAM,gBAAgB,GACpB,qHAAqH,CAAC;AAExH;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAa,CAAC;IACzC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,QAAkB;IAC9C,sBAAsB,EAAE,CAAC;IACzB,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,mCAAmC;IACnC,MAAM,mBAAmB,GAAG;QAC1B,QAAQ,EAAE,gBAAgB;QAC1B,GAAG,QAAQ;KACZ,CAAC;IACF,EAAE,CAAC,aAAa,CACd,YAAY,EACZ,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CACpD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,QAAmB;IACjE,OAAO;QACL,QAAQ,EAAE,gBAAgB;QAC1B,OAAO;QACP,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,QAAQ;QACR,MAAM,EAAE,EAAE;KACX,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAkB,EAClB,QAAkB;IAElB,OAAO;QACL,GAAG,QAAQ;QACX,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAkB,EAClB,SAAiB,EACjB,OAAe;IAEf,OAAO;QACL,GAAG,QAAQ;QACX,MAAM,EAAE;YACN,GAAG,QAAQ,CAAC,MAAM;YAClB,CAAC,SAAS,CAAC,EAAE;gBACX,OAAO;gBACP,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACtC;SACF;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAkB,EAClB,SAAiB;IAEjB,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,eAAe,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC/D,OAAO;QACL,GAAG,QAAQ;QACX,MAAM,EAAE,eAAe;KACxB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/lib/manifest.ts"],"names":[],"mappings":"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"}
@@ -9,10 +9,21 @@ export declare const PLATFORMS: PlatformInfo[];
9
9
  * Auto-detect platform based on project structure
10
10
  */
11
11
  export declare function detectPlatform(): Platform | null;
12
+ /**
13
+ * Parse platform from user input.
14
+ */
15
+ export declare function parsePlatform(value: string): Platform | null;
16
+ /**
17
+ * Get platforms that can still be added.
18
+ */
19
+ export declare function getAvailablePlatformsToAdd(enabled: Platform[]): PlatformInfo[];
12
20
  /**
13
21
  * Prompt user to select a platform
14
22
  */
15
- export declare function promptForPlatform(): Promise<Platform>;
23
+ export declare function promptForPlatform(options?: {
24
+ exclude?: Platform[];
25
+ message?: string;
26
+ }): Promise<Platform>;
16
27
  /**
17
28
  * Get platform info by ID
18
29
  */
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/lib/platform.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,QAAQ,GAChB,QAAQ,GACR,gBAAgB,GAChB,OAAO,GACP,gBAAgB,GAChB,UAAU,GACV,UAAU,CAAC;AAEf,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,QAAQ,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,SAAS,EAAE,YAAY,EA+BnC,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,IAAI,QAAQ,GAAG,IAAI,CA6BhD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAW3D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAMhE"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/lib/platform.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,QAAQ,GAChB,QAAQ,GACR,gBAAgB,GAChB,OAAO,GACP,gBAAgB,GAChB,UAAU,GACV,UAAU,CAAC;AAEf,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,QAAQ,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,SAAS,EAAE,YAAY,EA+BnC,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,IAAI,QAAQ,GAAG,IAAI,CA6BhD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAK5D;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,QAAQ,EAAE,GAClB,YAAY,EAAE,CAEhB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,CAAC,EAAE;IAChD,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkBpB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAMhE"}
@@ -59,17 +59,37 @@ export function detectPlatform() {
59
59
  }
60
60
  return null;
61
61
  }
62
+ /**
63
+ * Parse platform from user input.
64
+ */
65
+ export function parsePlatform(value) {
66
+ if (PLATFORMS.some((platform) => platform.id === value)) {
67
+ return value;
68
+ }
69
+ return null;
70
+ }
71
+ /**
72
+ * Get platforms that can still be added.
73
+ */
74
+ export function getAvailablePlatformsToAdd(enabled) {
75
+ return PLATFORMS.filter((platform) => !enabled.includes(platform.id));
76
+ }
62
77
  /**
63
78
  * Prompt user to select a platform
64
79
  */
65
- export async function promptForPlatform() {
80
+ export async function promptForPlatform(options) {
81
+ const exclude = options?.exclude ?? [];
82
+ const choices = PLATFORMS.filter((p) => !exclude.includes(p.id)).map((p) => ({
83
+ name: p.name,
84
+ value: p.id,
85
+ description: p.description,
86
+ }));
87
+ if (choices.length === 0) {
88
+ throw new Error("All platforms are already enabled.");
89
+ }
66
90
  const platform = await select({
67
- message: "Which platform are you using?",
68
- choices: PLATFORMS.map((p) => ({
69
- name: p.name,
70
- value: p.id,
71
- description: p.description,
72
- })),
91
+ message: options?.message || "Which platform are you using?",
92
+ choices,
73
93
  });
74
94
  return platform;
75
95
  }
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/lib/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/lib/platform.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/ui/menu.ts"],"names":[],"mappings":"AAoBA,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAmFrD"}
1
+ {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/ui/menu.ts"],"names":[],"mappings":"AAsBA,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CA2FrD"}
package/dist/ui/menu.js CHANGED
@@ -7,6 +7,7 @@ import { searchCommand } from "../commands/search.js";
7
7
  import { syncCommand } from "../commands/sync.js";
8
8
  import { repairCommand } from "../commands/repair.js";
9
9
  import { profilesCommand } from "../commands/profiles.js";
10
+ import { platformAddCommand } from "../commands/platform.js";
10
11
  export async function interactiveMenu() {
11
12
  console.log(chalk.blue.bold("\n🌱 Blue Gardener - Multi-Platform AI Agent Manager\n"));
12
13
  while (true) {
@@ -43,6 +44,11 @@ export async function interactiveMenu() {
43
44
  value: "sync",
44
45
  description: "Update installed agents to latest version",
45
46
  },
47
+ {
48
+ name: "Add platform",
49
+ value: "platform",
50
+ description: "Enable another platform and sync existing agents",
51
+ },
46
52
  {
47
53
  name: "Repair manifest",
48
54
  value: "repair",
@@ -78,6 +84,9 @@ export async function interactiveMenu() {
78
84
  case "repair":
79
85
  await repairCommand();
80
86
  break;
87
+ case "platform":
88
+ await platformAddCommand();
89
+ break;
81
90
  case "exit":
82
91
  console.log(chalk.blue("Goodbye! 🌱\n"));
83
92
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/ui/menu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAY1D,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAC1E,CAAC;IAEF,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAa;YACtC,OAAO,EAAE,4BAA4B;YACrC,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,YAAY;oBAClB,KAAK,EAAE,KAAK;oBACZ,WAAW,EAAE,oCAAoC;iBAClD;gBACD;oBACE,IAAI,EAAE,eAAe;oBACrB,KAAK,EAAE,QAAQ;oBACf,WAAW,EAAE,yBAAyB;iBACvC;gBACD;oBACE,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE,MAAM;oBACb,WAAW,EAAE,qCAAqC;iBACnD;gBACD;oBACE,IAAI,EAAE,uBAAuB;oBAC7B,KAAK,EAAE,UAAU;oBACjB,WAAW,EAAE,4CAA4C;iBAC1D;gBACD;oBACE,IAAI,EAAE,eAAe;oBACrB,KAAK,EAAE,QAAQ;oBACf,WAAW,EAAE,6CAA6C;iBAC3D;gBACD;oBACE,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE,MAAM;oBACb,WAAW,EAAE,2CAA2C;iBACzD;gBACD;oBACE,IAAI,EAAE,iBAAiB;oBACvB,KAAK,EAAE,QAAQ;oBACf,WAAW,EAAE,6CAA6C;iBAC3D;gBACD;oBACE,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,MAAM;oBACb,WAAW,EAAE,oBAAoB;iBAClC;aACF;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,KAAK;gBACR,MAAM,UAAU,EAAE,CAAC;gBACnB,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,aAAa,EAAE,CAAC;gBACtB,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,WAAW,EAAE,CAAC;gBACpB,MAAM;YACR,KAAK,UAAU;gBACb,MAAM,eAAe,EAAE,CAAC;gBACxB,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,aAAa,EAAE,CAAC;gBACtB,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,WAAW,EAAE,CAAC;gBACpB,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,aAAa,EAAE,CAAC;gBACtB,MAAM;YACR,KAAK,MAAM;gBACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;gBACzC,OAAO;QACX,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/ui/menu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAa7D,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAC1E,CAAC;IAEF,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAa;YACtC,OAAO,EAAE,4BAA4B;YACrC,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,YAAY;oBAClB,KAAK,EAAE,KAAK;oBACZ,WAAW,EAAE,oCAAoC;iBAClD;gBACD;oBACE,IAAI,EAAE,eAAe;oBACrB,KAAK,EAAE,QAAQ;oBACf,WAAW,EAAE,yBAAyB;iBACvC;gBACD;oBACE,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE,MAAM;oBACb,WAAW,EAAE,qCAAqC;iBACnD;gBACD;oBACE,IAAI,EAAE,uBAAuB;oBAC7B,KAAK,EAAE,UAAU;oBACjB,WAAW,EAAE,4CAA4C;iBAC1D;gBACD;oBACE,IAAI,EAAE,eAAe;oBACrB,KAAK,EAAE,QAAQ;oBACf,WAAW,EAAE,6CAA6C;iBAC3D;gBACD;oBACE,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE,MAAM;oBACb,WAAW,EAAE,2CAA2C;iBACzD;gBACD;oBACE,IAAI,EAAE,cAAc;oBACpB,KAAK,EAAE,UAAU;oBACjB,WAAW,EAAE,kDAAkD;iBAChE;gBACD;oBACE,IAAI,EAAE,iBAAiB;oBACvB,KAAK,EAAE,QAAQ;oBACf,WAAW,EAAE,6CAA6C;iBAC3D;gBACD;oBACE,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,MAAM;oBACb,WAAW,EAAE,oBAAoB;iBAClC;aACF;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,KAAK;gBACR,MAAM,UAAU,EAAE,CAAC;gBACnB,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,aAAa,EAAE,CAAC;gBACtB,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,WAAW,EAAE,CAAC;gBACpB,MAAM;YACR,KAAK,UAAU;gBACb,MAAM,eAAe,EAAE,CAAC;gBACxB,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,aAAa,EAAE,CAAC;gBACtB,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,WAAW,EAAE,CAAC;gBACpB,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,aAAa,EAAE,CAAC;gBACtB,MAAM;YACR,KAAK,UAAU;gBACb,MAAM,kBAAkB,EAAE,CAAC;gBAC3B,MAAM;YACR,KAAK,MAAM;gBACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;gBACzC,OAAO;QACX,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "blue-gardener",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "CLI tool to manage AI coding agents across multiple platforms - install, remove, and sync specialized AI agents for Cursor, Claude Desktop, Codex, GitHub Copilot, Windsurf, and OpenCode",
5
5
  "type": "module",
6
6
  "bin": {
7
- "blue-gardener": "./dist/index.js"
7
+ "blue-gardener": "dist/index.js"
8
8
  },
9
9
  "files": [
10
10
  "dist",
@@ -45,7 +45,7 @@
45
45
  "homepage": "https://bluegardenproject.github.io/blue-gardener/",
46
46
  "repository": {
47
47
  "type": "git",
48
- "url": "https://github.com/bluegardenproject/blue-gardener.git"
48
+ "url": "git+https://github.com/bluegardenproject/blue-gardener.git"
49
49
  },
50
50
  "bugs": {
51
51
  "url": "https://github.com/bluegardenproject/blue-gardener/issues"