blue-gardener 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/README.md +88 -0
  2. package/agents/CATALOG.md +272 -0
  3. package/agents/blockchain/blue-blockchain-architecture-designer.md +518 -0
  4. package/agents/blockchain/blue-blockchain-backend-integrator.md +784 -0
  5. package/agents/blockchain/blue-blockchain-code-reviewer.md +523 -0
  6. package/agents/blockchain/blue-blockchain-defi-specialist.md +551 -0
  7. package/agents/blockchain/blue-blockchain-ethereum-developer.md +707 -0
  8. package/agents/blockchain/blue-blockchain-frontend-integrator.md +732 -0
  9. package/agents/blockchain/blue-blockchain-gas-optimizer.md +508 -0
  10. package/agents/blockchain/blue-blockchain-product-strategist.md +439 -0
  11. package/agents/blockchain/blue-blockchain-security-auditor.md +517 -0
  12. package/agents/blockchain/blue-blockchain-solana-developer.md +760 -0
  13. package/agents/blockchain/blue-blockchain-tokenomics-designer.md +412 -0
  14. package/agents/configuration/blue-ai-platform-configuration-specialist.md +587 -0
  15. package/agents/development/blue-animation-specialist.md +439 -0
  16. package/agents/development/blue-api-integration-expert.md +681 -0
  17. package/agents/development/blue-go-backend-implementation-specialist.md +702 -0
  18. package/agents/development/blue-node-backend-implementation-specialist.md +543 -0
  19. package/agents/development/blue-react-developer.md +425 -0
  20. package/agents/development/blue-state-management-expert.md +557 -0
  21. package/agents/development/blue-storybook-specialist.md +450 -0
  22. package/agents/development/blue-third-party-api-strategist.md +391 -0
  23. package/agents/development/blue-ui-styling-specialist.md +557 -0
  24. package/agents/infrastructure/blue-cron-job-implementation-specialist.md +589 -0
  25. package/agents/infrastructure/blue-database-architecture-specialist.md +515 -0
  26. package/agents/infrastructure/blue-docker-specialist.md +407 -0
  27. package/agents/infrastructure/blue-document-database-specialist.md +695 -0
  28. package/agents/infrastructure/blue-github-actions-specialist.md +148 -0
  29. package/agents/infrastructure/blue-keyvalue-database-specialist.md +678 -0
  30. package/agents/infrastructure/blue-monorepo-specialist.md +431 -0
  31. package/agents/infrastructure/blue-relational-database-specialist.md +557 -0
  32. package/agents/infrastructure/blue-typescript-cli-developer.md +310 -0
  33. package/agents/orchestrators/blue-app-quality-gate-keeper.md +299 -0
  34. package/agents/orchestrators/blue-architecture-designer.md +319 -0
  35. package/agents/orchestrators/blue-feature-specification-analyst.md +212 -0
  36. package/agents/orchestrators/blue-implementation-review-coordinator.md +497 -0
  37. package/agents/orchestrators/blue-refactoring-strategy-planner.md +307 -0
  38. package/agents/quality/blue-accessibility-specialist.md +588 -0
  39. package/agents/quality/blue-e2e-testing-specialist.md +613 -0
  40. package/agents/quality/blue-frontend-code-reviewer.md +528 -0
  41. package/agents/quality/blue-go-backend-code-reviewer.md +610 -0
  42. package/agents/quality/blue-node-backend-code-reviewer.md +486 -0
  43. package/agents/quality/blue-performance-specialist.md +595 -0
  44. package/agents/quality/blue-security-specialist.md +616 -0
  45. package/agents/quality/blue-seo-specialist.md +477 -0
  46. package/agents/quality/blue-unit-testing-specialist.md +560 -0
  47. package/dist/commands/add.d.ts +4 -0
  48. package/dist/commands/add.d.ts.map +1 -0
  49. package/dist/commands/add.js +154 -0
  50. package/dist/commands/add.js.map +1 -0
  51. package/dist/commands/entrypoints.d.ts +2 -0
  52. package/dist/commands/entrypoints.d.ts.map +1 -0
  53. package/dist/commands/entrypoints.js +37 -0
  54. package/dist/commands/entrypoints.js.map +1 -0
  55. package/dist/commands/list.d.ts +2 -0
  56. package/dist/commands/list.d.ts.map +1 -0
  57. package/dist/commands/list.js +28 -0
  58. package/dist/commands/list.js.map +1 -0
  59. package/dist/commands/profiles.d.ts +2 -0
  60. package/dist/commands/profiles.d.ts.map +1 -0
  61. package/dist/commands/profiles.js +12 -0
  62. package/dist/commands/profiles.js.map +1 -0
  63. package/dist/commands/remove.d.ts +2 -0
  64. package/dist/commands/remove.d.ts.map +1 -0
  65. package/dist/commands/remove.js +46 -0
  66. package/dist/commands/remove.js.map +1 -0
  67. package/dist/commands/repair.d.ts +2 -0
  68. package/dist/commands/repair.d.ts.map +1 -0
  69. package/dist/commands/repair.js +38 -0
  70. package/dist/commands/repair.js.map +1 -0
  71. package/dist/commands/search.d.ts +2 -0
  72. package/dist/commands/search.d.ts.map +1 -0
  73. package/dist/commands/search.js +85 -0
  74. package/dist/commands/search.js.map +1 -0
  75. package/dist/commands/sync.d.ts +6 -0
  76. package/dist/commands/sync.d.ts.map +1 -0
  77. package/dist/commands/sync.js +31 -0
  78. package/dist/commands/sync.js.map +1 -0
  79. package/dist/index.d.ts +3 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +49 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/lib/adapters/base.d.ts +52 -0
  84. package/dist/lib/adapters/base.d.ts.map +1 -0
  85. package/dist/lib/adapters/base.js +100 -0
  86. package/dist/lib/adapters/base.js.map +1 -0
  87. package/dist/lib/adapters/claude-desktop.d.ts +14 -0
  88. package/dist/lib/adapters/claude-desktop.d.ts.map +1 -0
  89. package/dist/lib/adapters/claude-desktop.js +38 -0
  90. package/dist/lib/adapters/claude-desktop.js.map +1 -0
  91. package/dist/lib/adapters/codex.d.ts +19 -0
  92. package/dist/lib/adapters/codex.d.ts.map +1 -0
  93. package/dist/lib/adapters/codex.js +97 -0
  94. package/dist/lib/adapters/codex.js.map +1 -0
  95. package/dist/lib/adapters/cursor.d.ts +14 -0
  96. package/dist/lib/adapters/cursor.d.ts.map +1 -0
  97. package/dist/lib/adapters/cursor.js +38 -0
  98. package/dist/lib/adapters/cursor.js.map +1 -0
  99. package/dist/lib/adapters/github-copilot.d.ts +19 -0
  100. package/dist/lib/adapters/github-copilot.d.ts.map +1 -0
  101. package/dist/lib/adapters/github-copilot.js +107 -0
  102. package/dist/lib/adapters/github-copilot.js.map +1 -0
  103. package/dist/lib/adapters/index.d.ts +8 -0
  104. package/dist/lib/adapters/index.d.ts.map +1 -0
  105. package/dist/lib/adapters/index.js +29 -0
  106. package/dist/lib/adapters/index.js.map +1 -0
  107. package/dist/lib/adapters/opencode.d.ts +14 -0
  108. package/dist/lib/adapters/opencode.d.ts.map +1 -0
  109. package/dist/lib/adapters/opencode.js +38 -0
  110. package/dist/lib/adapters/opencode.js.map +1 -0
  111. package/dist/lib/adapters/windsurf.d.ts +16 -0
  112. package/dist/lib/adapters/windsurf.d.ts.map +1 -0
  113. package/dist/lib/adapters/windsurf.js +66 -0
  114. package/dist/lib/adapters/windsurf.js.map +1 -0
  115. package/dist/lib/agents.d.ts +58 -0
  116. package/dist/lib/agents.d.ts.map +1 -0
  117. package/dist/lib/agents.js +340 -0
  118. package/dist/lib/agents.js.map +1 -0
  119. package/dist/lib/entrypoints.d.ts +9 -0
  120. package/dist/lib/entrypoints.d.ts.map +1 -0
  121. package/dist/lib/entrypoints.js +72 -0
  122. package/dist/lib/entrypoints.js.map +1 -0
  123. package/dist/lib/manifest.d.ts +41 -0
  124. package/dist/lib/manifest.d.ts.map +1 -0
  125. package/dist/lib/manifest.js +84 -0
  126. package/dist/lib/manifest.js.map +1 -0
  127. package/dist/lib/paths.d.ts +23 -0
  128. package/dist/lib/paths.d.ts.map +1 -0
  129. package/dist/lib/paths.js +64 -0
  130. package/dist/lib/paths.js.map +1 -0
  131. package/dist/lib/platform.d.ts +20 -0
  132. package/dist/lib/platform.d.ts.map +1 -0
  133. package/dist/lib/platform.js +86 -0
  134. package/dist/lib/platform.js.map +1 -0
  135. package/dist/lib/profiles.d.ts +14 -0
  136. package/dist/lib/profiles.d.ts.map +1 -0
  137. package/dist/lib/profiles.js +138 -0
  138. package/dist/lib/profiles.js.map +1 -0
  139. package/dist/ui/menu.d.ts +2 -0
  140. package/dist/ui/menu.d.ts.map +1 -0
  141. package/dist/ui/menu.js +88 -0
  142. package/dist/ui/menu.js.map +1 -0
  143. package/package.json +73 -0
@@ -0,0 +1,154 @@
1
+ import chalk from "chalk";
2
+ import { checkbox, select } from "@inquirer/prompts";
3
+ import { getAvailableAgents, installAgent, getInstalledAgents, getCategories, getAgentsByCategory, } from "../lib/agents.js";
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";
7
+ export async function addCommand(agents, options) {
8
+ const availableAgents = getAvailableAgents();
9
+ const installedAgents = getInstalledAgents();
10
+ const installedNames = installedAgents.map((a) => a.name);
11
+ if (availableAgents.length === 0) {
12
+ console.log(chalk.yellow("No agents available to install."));
13
+ return;
14
+ }
15
+ // Filter out already installed agents
16
+ const notInstalled = availableAgents.filter((a) => !installedNames.includes(a.name));
17
+ if (notInstalled.length === 0) {
18
+ console.log(chalk.green("All available agents are already installed."));
19
+ return;
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.`));
86
+ return;
87
+ }
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
+ });
96
+ }
97
+ 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
+ })),
107
+ });
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;
113
+ }
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
+ }
123
+ }
124
+ if (agentsToInstall.length === 0) {
125
+ console.log(chalk.yellow("No agents selected."));
126
+ return;
127
+ }
128
+ // Step 3: Platform detection/prompt (on first use)
129
+ let manifest = readManifest();
130
+ let platform = manifest?.platform || detectPlatform();
131
+ if (!platform) {
132
+ // First time - prompt for platform
133
+ 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);
139
+ }
140
+ const platformInfo = getPlatformInfo(platform);
141
+ console.log(chalk.green(`\n✓ Platform set to: ${platformInfo.name}\n`));
142
+ }
143
+ // Step 4: Install selected agents
144
+ for (const name of agentsToInstall) {
145
+ const success = installAgent(name, platform);
146
+ if (success) {
147
+ console.log(chalk.green(`✓ Installed ${name}`));
148
+ }
149
+ else {
150
+ console.log(chalk.red(`✗ Failed to install ${name}`));
151
+ }
152
+ }
153
+ }
154
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
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 entrypointsCommand(): Promise<void>;
2
+ //# sourceMappingURL=entrypoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrypoints.d.ts","sourceRoot":"","sources":["../../src/commands/entrypoints.ts"],"names":[],"mappings":"AAKA,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoCxD"}
@@ -0,0 +1,37 @@
1
+ import chalk from "chalk";
2
+ import { detectPlatform, promptForPlatform, getPlatformInfo } from "../lib/platform.js";
3
+ import { readManifest } from "../lib/manifest.js";
4
+ import { installEntrypoints } from "../lib/entrypoints.js";
5
+ export async function entrypointsCommand() {
6
+ const manifest = readManifest();
7
+ let platform = manifest?.platform || detectPlatform();
8
+ if (!platform) {
9
+ platform = await promptForPlatform();
10
+ const platformInfo = getPlatformInfo(platform);
11
+ console.log(chalk.green(`\n✓ Platform set to: ${platformInfo.name}\n`));
12
+ }
13
+ const result = installEntrypoints(platform);
14
+ if (result.installed.length === 0 && result.skipped.length === 0) {
15
+ console.log(chalk.yellow(result.message || "No entrypoints installed."));
16
+ return;
17
+ }
18
+ if (result.installed.length > 0) {
19
+ console.log(chalk.green("\n✓ Installed orchestration entrypoints:\n"));
20
+ for (const item of result.installed) {
21
+ console.log(chalk.green(` - ${item}`));
22
+ }
23
+ }
24
+ if (result.skipped.length > 0) {
25
+ console.log(chalk.dim("\nUnchanged (already up to date):\n"));
26
+ for (const item of result.skipped) {
27
+ console.log(chalk.dim(` - ${item}`));
28
+ }
29
+ }
30
+ if (result.message) {
31
+ console.log(chalk.dim(`\n${result.message}\n`));
32
+ }
33
+ else {
34
+ console.log();
35
+ }
36
+ }
37
+ //# sourceMappingURL=entrypoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entrypoints.js","sourceRoot":"","sources":["../../src/commands/entrypoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,IAAI,QAAQ,GAAG,QAAQ,EAAE,QAAQ,IAAI,cAAc,EAAE,CAAC;IAEtD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAC;QACrC,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAE5C,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,2BAA2B,CAAC,CAAC,CAAC;QACzE,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACvE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC9D,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function listCommand(): Promise<void>;
2
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAGA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAmCjD"}
@@ -0,0 +1,28 @@
1
+ import chalk from "chalk";
2
+ import { getAvailableAgents, getInstalledAgents } from "../lib/agents.js";
3
+ export async function listCommand() {
4
+ const availableAgents = getAvailableAgents();
5
+ const installedAgents = getInstalledAgents();
6
+ const installedNames = installedAgents.map((a) => a.name);
7
+ if (availableAgents.length === 0) {
8
+ console.log(chalk.yellow("No agents available."));
9
+ return;
10
+ }
11
+ console.log(chalk.bold("\nAvailable Agents:\n"));
12
+ for (const agent of availableAgents) {
13
+ const isInstalled = installedNames.includes(agent.name);
14
+ const status = isInstalled
15
+ ? chalk.green(" [installed]")
16
+ : chalk.dim(" [not installed]");
17
+ console.log(` ${chalk.cyan(agent.name)}${status}`);
18
+ if (agent.category) {
19
+ console.log(` ${chalk.yellow(`[${agent.category}]`)} ${agent.tags.length > 0 ? chalk.dim(agent.tags.join(", ")) : ""}`);
20
+ }
21
+ if (agent.description) {
22
+ console.log(` ${chalk.dim(agent.description)}`);
23
+ }
24
+ console.log();
25
+ }
26
+ console.log(chalk.dim(`Total: ${availableAgents.length} available, ${installedAgents.length} installed`));
27
+ }
28
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE1E,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAC7C,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAC7C,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE1D,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAEjD,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,WAAW;YACxB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC;YAC7B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAElC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC;QACpD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CACT,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9G,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,UAAU,eAAe,CAAC,MAAM,eAAe,eAAe,CAAC,MAAM,YAAY,CAClF,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function profilesCommand(): Promise<void>;
2
+ //# sourceMappingURL=profiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/commands/profiles.ts"],"names":[],"mappings":"AAGA,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAYrD"}
@@ -0,0 +1,12 @@
1
+ import chalk from "chalk";
2
+ import { getProfiles } from "../lib/profiles.js";
3
+ export async function profilesCommand() {
4
+ const profiles = getProfiles();
5
+ console.log(chalk.bold("\nAgent Profiles:\n"));
6
+ for (const p of profiles) {
7
+ console.log(` ${chalk.cyan(p.id)} ${chalk.dim(`(${p.agentNames.length} agents)`)}`);
8
+ console.log(` ${chalk.dim(p.name)} — ${chalk.dim(p.description)}`);
9
+ console.log();
10
+ }
11
+ }
12
+ //# sourceMappingURL=profiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/commands/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAE/C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,UAAU,CAAC,EAAE,CACxE,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function removeCommand(agents?: string[]): Promise<void>;
2
+ //# sourceMappingURL=remove.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAIA,wBAAsB,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDpE"}
@@ -0,0 +1,46 @@
1
+ import chalk from "chalk";
2
+ import { checkbox } from "@inquirer/prompts";
3
+ import { getInstalledAgents, removeAgent } from "../lib/agents.js";
4
+ export async function removeCommand(agents) {
5
+ const installedAgents = getInstalledAgents();
6
+ if (installedAgents.length === 0) {
7
+ console.log(chalk.yellow("No agents installed."));
8
+ return;
9
+ }
10
+ let agentsToRemove;
11
+ if (agents && agents.length > 0) {
12
+ // Use provided agent names
13
+ const installedNames = installedAgents.map((a) => a.name);
14
+ agentsToRemove = agents.filter((name) => installedNames.includes(name));
15
+ const notInstalled = agents.filter((name) => !installedNames.includes(name));
16
+ if (notInstalled.length > 0) {
17
+ console.log(chalk.yellow(`Not installed: ${notInstalled.join(", ")}`));
18
+ }
19
+ }
20
+ else {
21
+ // Interactive selection
22
+ agentsToRemove = await checkbox({
23
+ message: "Select agents to remove (↑↓ to navigate, space to select, enter to confirm):",
24
+ choices: installedAgents.map((agent) => ({
25
+ name: agent.category ? `${agent.name} [${agent.category}]` : agent.name,
26
+ value: agent.name,
27
+ description: agent.description,
28
+ })),
29
+ });
30
+ }
31
+ if (agentsToRemove.length === 0) {
32
+ console.log(chalk.yellow("No agents selected."));
33
+ return;
34
+ }
35
+ // Remove selected agents
36
+ for (const name of agentsToRemove) {
37
+ const success = removeAgent(name);
38
+ if (success) {
39
+ console.log(chalk.green(`✓ Removed ${name}`));
40
+ }
41
+ else {
42
+ console.log(chalk.red(`✗ Failed to remove ${name}`));
43
+ }
44
+ }
45
+ }
46
+ //# sourceMappingURL=remove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEnE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAiB;IACnD,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAE7C,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IAED,IAAI,cAAwB,CAAC;IAE7B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,2BAA2B;QAC3B,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1D,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAExE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAChC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CACzC,CAAC;QACF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,wBAAwB;QACxB,cAAc,GAAG,MAAM,QAAQ,CAAC;YAC9B,OAAO,EACL,8EAA8E;YAChF,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACvC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;gBACvE,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC,CAAC;SACJ,CAAC,CAAC;IACL,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,yBAAyB;IACzB,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function repairCommand(): Promise<void>;
2
+ //# sourceMappingURL=repair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repair.d.ts","sourceRoot":"","sources":["../../src/commands/repair.ts"],"names":[],"mappings":"AAIA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA4CnD"}
@@ -0,0 +1,38 @@
1
+ import chalk from "chalk";
2
+ import { repairManifest, findOrphanedAgents } from "../lib/agents.js";
3
+ import { readManifest } from "../lib/manifest.js";
4
+ export async function repairCommand() {
5
+ console.log(chalk.blue("Checking for issues...\n"));
6
+ const orphaned = findOrphanedAgents();
7
+ const manifest = readManifest();
8
+ if (orphaned.length === 0 && manifest) {
9
+ console.log(chalk.green("✓ No issues found. Manifest is healthy."));
10
+ return;
11
+ }
12
+ if (orphaned.length > 0) {
13
+ console.log(chalk.yellow(`Found ${orphaned.length} untracked agent(s):`));
14
+ for (const agent of orphaned) {
15
+ console.log(` ${agent.name}`);
16
+ }
17
+ console.log();
18
+ }
19
+ if (!manifest) {
20
+ console.log(chalk.yellow("Manifest file is missing.\n"));
21
+ }
22
+ console.log(chalk.blue("Repairing...\n"));
23
+ const { repaired, removed } = repairManifest();
24
+ if (repaired.length > 0) {
25
+ console.log(chalk.green(`✓ Re-tracked ${repaired.length} agent(s):`));
26
+ for (const name of repaired) {
27
+ console.log(` ${name}`);
28
+ }
29
+ }
30
+ if (removed.length > 0) {
31
+ console.log(chalk.yellow(`✓ Removed ${removed.length} stale manifest entry(ies):`));
32
+ for (const name of removed) {
33
+ console.log(` ${name}`);
34
+ }
35
+ }
36
+ console.log(chalk.green("\n✓ Repair complete."));
37
+ }
38
+ //# sourceMappingURL=repair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repair.js","sourceRoot":"","sources":["../../src/commands/repair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEpD,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAEhC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,QAAQ,CAAC,MAAM,sBAAsB,CAAC,CAAC,CAAC;QAC1E,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAE1C,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAE/C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,QAAQ,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC;QACtE,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,aAAa,OAAO,CAAC,MAAM,6BAA6B,CAAC,CACvE,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function searchCommand(query?: string): Promise<void>;
2
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AA0CA,wBAAsB,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DjE"}
@@ -0,0 +1,85 @@
1
+ import chalk from "chalk";
2
+ import { input } from "@inquirer/prompts";
3
+ import { getAvailableAgents, getInstalledAgents } from "../lib/agents.js";
4
+ /**
5
+ * Search agents by name, description, category, or tags
6
+ */
7
+ function searchAgents(query) {
8
+ const availableAgents = getAvailableAgents();
9
+ const lowerQuery = query.toLowerCase();
10
+ return availableAgents.filter((agent) => {
11
+ // Search in name
12
+ if (agent.name.toLowerCase().includes(lowerQuery))
13
+ return true;
14
+ // Search in description
15
+ if (agent.description.toLowerCase().includes(lowerQuery))
16
+ return true;
17
+ // Search in category
18
+ if (agent.category.toLowerCase().includes(lowerQuery))
19
+ return true;
20
+ // Search in tags
21
+ if (agent.tags.some((tag) => tag.toLowerCase().includes(lowerQuery)))
22
+ return true;
23
+ return false;
24
+ });
25
+ }
26
+ /**
27
+ * Highlight matching text in a string
28
+ */
29
+ function highlightMatch(text, query) {
30
+ const lowerText = text.toLowerCase();
31
+ const lowerQuery = query.toLowerCase();
32
+ const index = lowerText.indexOf(lowerQuery);
33
+ if (index === -1)
34
+ return text;
35
+ const before = text.slice(0, index);
36
+ const match = text.slice(index, index + query.length);
37
+ const after = text.slice(index + query.length);
38
+ return `${before}${chalk.bgYellow.black(match)}${after}`;
39
+ }
40
+ export async function searchCommand(query) {
41
+ const installedAgents = getInstalledAgents();
42
+ const installedNames = installedAgents.map((a) => a.name);
43
+ // Get query interactively if not provided
44
+ let searchQuery = query;
45
+ if (!searchQuery) {
46
+ searchQuery = await input({
47
+ message: "Search agents:",
48
+ });
49
+ }
50
+ if (!searchQuery.trim()) {
51
+ console.log(chalk.yellow("Please provide a search term."));
52
+ return;
53
+ }
54
+ const results = searchAgents(searchQuery);
55
+ if (results.length === 0) {
56
+ console.log(chalk.yellow(`No agents found matching "${searchQuery}"`));
57
+ return;
58
+ }
59
+ console.log(chalk.bold(`\nFound ${results.length} agent(s) matching "${searchQuery}":\n`));
60
+ for (const agent of results) {
61
+ const isInstalled = installedNames.includes(agent.name);
62
+ const status = isInstalled
63
+ ? chalk.green(" [installed]")
64
+ : chalk.dim(" [not installed]");
65
+ // Highlight matches in name
66
+ const displayName = highlightMatch(agent.name, searchQuery);
67
+ console.log(` ${chalk.cyan(displayName)}${status}`);
68
+ // Show category and tags with highlighting
69
+ if (agent.category) {
70
+ const displayCategory = highlightMatch(agent.category, searchQuery);
71
+ const displayTags = agent.tags
72
+ .map((tag) => highlightMatch(tag, searchQuery))
73
+ .join(", ");
74
+ console.log(` ${chalk.yellow(`[${displayCategory}]`)} ${displayTags ? chalk.dim(displayTags) : ""}`);
75
+ }
76
+ // Show description with highlighting
77
+ if (agent.description) {
78
+ const displayDesc = highlightMatch(agent.description, searchQuery);
79
+ console.log(` ${chalk.dim(displayDesc)}`);
80
+ }
81
+ console.log();
82
+ }
83
+ console.log(chalk.dim(`Tip: Use "npx blue-gardener add <agent-name>" to install`));
84
+ }
85
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface SyncOptions {
2
+ silent?: boolean;
3
+ }
4
+ export declare function syncCommand(options?: SyncOptions): Promise<void>;
5
+ export {};
6
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAGA,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC1E"}
@@ -0,0 +1,31 @@
1
+ import chalk from "chalk";
2
+ import { syncAgents, getInstalledAgents } from "../lib/agents.js";
3
+ export async function syncCommand(options = {}) {
4
+ const installedAgents = getInstalledAgents();
5
+ if (installedAgents.length === 0) {
6
+ if (!options.silent) {
7
+ console.log(chalk.yellow("No agents installed to sync."));
8
+ }
9
+ return;
10
+ }
11
+ const { synced, failed } = syncAgents();
12
+ if (options.silent) {
13
+ return;
14
+ }
15
+ if (synced.length > 0) {
16
+ console.log(chalk.green(`✓ Synced ${synced.length} agent(s):`));
17
+ for (const name of synced) {
18
+ console.log(` ${name}`);
19
+ }
20
+ }
21
+ if (failed.length > 0) {
22
+ console.log(chalk.red(`✗ Failed to sync ${failed.length} agent(s):`));
23
+ for (const name of failed) {
24
+ console.log(` ${name}`);
25
+ }
26
+ }
27
+ if (synced.length === 0 && failed.length === 0) {
28
+ console.log(chalk.dim("All agents are up to date."));
29
+ }
30
+ }
31
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAMlE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAuB,EAAE;IACzD,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAE7C,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IAExC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC;QAChE,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC,CAAC;QACtE,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env node
2
+ import { program } from "commander";
3
+ // Note: ESM + NodeNext requires .js extensions in imports.
4
+ // TypeScript compiles .ts → .js, so imports must reference the compiled output.
5
+ import { interactiveMenu } from "./ui/menu.js";
6
+ import { addCommand } from "./commands/add.js";
7
+ import { removeCommand } from "./commands/remove.js";
8
+ import { listCommand } from "./commands/list.js";
9
+ import { syncCommand } from "./commands/sync.js";
10
+ import { repairCommand } from "./commands/repair.js";
11
+ import { searchCommand } from "./commands/search.js";
12
+ import { profilesCommand } from "./commands/profiles.js";
13
+ program
14
+ .name("blue-gardener")
15
+ .description("Manage AI coding agents across multiple platforms")
16
+ .version("0.1.0")
17
+ .action(() => interactiveMenu());
18
+ program
19
+ .command("add [agents...]")
20
+ .description("Add one or more agents to your project")
21
+ .option("-p, --profile <profileId>", "Install a preset profile of agents")
22
+ .action((agents, options) => addCommand(agents, options));
23
+ program
24
+ .command("remove [agents...]")
25
+ .description("Remove one or more agents from your project")
26
+ .action(removeCommand);
27
+ program
28
+ .command("list")
29
+ .description("List available and installed agents")
30
+ .action(listCommand);
31
+ program
32
+ .command("search [query]")
33
+ .description("Search agents by name, description, category, or tags")
34
+ .action(searchCommand);
35
+ program
36
+ .command("sync")
37
+ .option("-s, --silent", "Run silently without output")
38
+ .description("Sync installed agents to the latest version")
39
+ .action(syncCommand);
40
+ program
41
+ .command("repair")
42
+ .description("Repair manifest by re-tracking orphaned agents")
43
+ .action(repairCommand);
44
+ program
45
+ .command("profiles")
46
+ .description("List available agent install profiles")
47
+ .action(profilesCommand);
48
+ program.parse();
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}