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.
- package/README.md +88 -0
- package/agents/CATALOG.md +272 -0
- package/agents/blockchain/blue-blockchain-architecture-designer.md +518 -0
- package/agents/blockchain/blue-blockchain-backend-integrator.md +784 -0
- package/agents/blockchain/blue-blockchain-code-reviewer.md +523 -0
- package/agents/blockchain/blue-blockchain-defi-specialist.md +551 -0
- package/agents/blockchain/blue-blockchain-ethereum-developer.md +707 -0
- package/agents/blockchain/blue-blockchain-frontend-integrator.md +732 -0
- package/agents/blockchain/blue-blockchain-gas-optimizer.md +508 -0
- package/agents/blockchain/blue-blockchain-product-strategist.md +439 -0
- package/agents/blockchain/blue-blockchain-security-auditor.md +517 -0
- package/agents/blockchain/blue-blockchain-solana-developer.md +760 -0
- package/agents/blockchain/blue-blockchain-tokenomics-designer.md +412 -0
- package/agents/configuration/blue-ai-platform-configuration-specialist.md +587 -0
- package/agents/development/blue-animation-specialist.md +439 -0
- package/agents/development/blue-api-integration-expert.md +681 -0
- package/agents/development/blue-go-backend-implementation-specialist.md +702 -0
- package/agents/development/blue-node-backend-implementation-specialist.md +543 -0
- package/agents/development/blue-react-developer.md +425 -0
- package/agents/development/blue-state-management-expert.md +557 -0
- package/agents/development/blue-storybook-specialist.md +450 -0
- package/agents/development/blue-third-party-api-strategist.md +391 -0
- package/agents/development/blue-ui-styling-specialist.md +557 -0
- package/agents/infrastructure/blue-cron-job-implementation-specialist.md +589 -0
- package/agents/infrastructure/blue-database-architecture-specialist.md +515 -0
- package/agents/infrastructure/blue-docker-specialist.md +407 -0
- package/agents/infrastructure/blue-document-database-specialist.md +695 -0
- package/agents/infrastructure/blue-github-actions-specialist.md +148 -0
- package/agents/infrastructure/blue-keyvalue-database-specialist.md +678 -0
- package/agents/infrastructure/blue-monorepo-specialist.md +431 -0
- package/agents/infrastructure/blue-relational-database-specialist.md +557 -0
- package/agents/infrastructure/blue-typescript-cli-developer.md +310 -0
- package/agents/orchestrators/blue-app-quality-gate-keeper.md +299 -0
- package/agents/orchestrators/blue-architecture-designer.md +319 -0
- package/agents/orchestrators/blue-feature-specification-analyst.md +212 -0
- package/agents/orchestrators/blue-implementation-review-coordinator.md +497 -0
- package/agents/orchestrators/blue-refactoring-strategy-planner.md +307 -0
- package/agents/quality/blue-accessibility-specialist.md +588 -0
- package/agents/quality/blue-e2e-testing-specialist.md +613 -0
- package/agents/quality/blue-frontend-code-reviewer.md +528 -0
- package/agents/quality/blue-go-backend-code-reviewer.md +610 -0
- package/agents/quality/blue-node-backend-code-reviewer.md +486 -0
- package/agents/quality/blue-performance-specialist.md +595 -0
- package/agents/quality/blue-security-specialist.md +616 -0
- package/agents/quality/blue-seo-specialist.md +477 -0
- package/agents/quality/blue-unit-testing-specialist.md +560 -0
- package/dist/commands/add.d.ts +4 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +154 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/entrypoints.d.ts +2 -0
- package/dist/commands/entrypoints.d.ts.map +1 -0
- package/dist/commands/entrypoints.js +37 -0
- package/dist/commands/entrypoints.js.map +1 -0
- package/dist/commands/list.d.ts +2 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +28 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/profiles.d.ts +2 -0
- package/dist/commands/profiles.d.ts.map +1 -0
- package/dist/commands/profiles.js +12 -0
- package/dist/commands/profiles.js.map +1 -0
- package/dist/commands/remove.d.ts +2 -0
- package/dist/commands/remove.d.ts.map +1 -0
- package/dist/commands/remove.js +46 -0
- package/dist/commands/remove.js.map +1 -0
- package/dist/commands/repair.d.ts +2 -0
- package/dist/commands/repair.d.ts.map +1 -0
- package/dist/commands/repair.js +38 -0
- package/dist/commands/repair.js.map +1 -0
- package/dist/commands/search.d.ts +2 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +85 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/sync.d.ts +6 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +31 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/adapters/base.d.ts +52 -0
- package/dist/lib/adapters/base.d.ts.map +1 -0
- package/dist/lib/adapters/base.js +100 -0
- package/dist/lib/adapters/base.js.map +1 -0
- package/dist/lib/adapters/claude-desktop.d.ts +14 -0
- package/dist/lib/adapters/claude-desktop.d.ts.map +1 -0
- package/dist/lib/adapters/claude-desktop.js +38 -0
- package/dist/lib/adapters/claude-desktop.js.map +1 -0
- package/dist/lib/adapters/codex.d.ts +19 -0
- package/dist/lib/adapters/codex.d.ts.map +1 -0
- package/dist/lib/adapters/codex.js +97 -0
- package/dist/lib/adapters/codex.js.map +1 -0
- package/dist/lib/adapters/cursor.d.ts +14 -0
- package/dist/lib/adapters/cursor.d.ts.map +1 -0
- package/dist/lib/adapters/cursor.js +38 -0
- package/dist/lib/adapters/cursor.js.map +1 -0
- package/dist/lib/adapters/github-copilot.d.ts +19 -0
- package/dist/lib/adapters/github-copilot.d.ts.map +1 -0
- package/dist/lib/adapters/github-copilot.js +107 -0
- package/dist/lib/adapters/github-copilot.js.map +1 -0
- package/dist/lib/adapters/index.d.ts +8 -0
- package/dist/lib/adapters/index.d.ts.map +1 -0
- package/dist/lib/adapters/index.js +29 -0
- package/dist/lib/adapters/index.js.map +1 -0
- package/dist/lib/adapters/opencode.d.ts +14 -0
- package/dist/lib/adapters/opencode.d.ts.map +1 -0
- package/dist/lib/adapters/opencode.js +38 -0
- package/dist/lib/adapters/opencode.js.map +1 -0
- package/dist/lib/adapters/windsurf.d.ts +16 -0
- package/dist/lib/adapters/windsurf.d.ts.map +1 -0
- package/dist/lib/adapters/windsurf.js +66 -0
- package/dist/lib/adapters/windsurf.js.map +1 -0
- package/dist/lib/agents.d.ts +58 -0
- package/dist/lib/agents.d.ts.map +1 -0
- package/dist/lib/agents.js +340 -0
- package/dist/lib/agents.js.map +1 -0
- package/dist/lib/entrypoints.d.ts +9 -0
- package/dist/lib/entrypoints.d.ts.map +1 -0
- package/dist/lib/entrypoints.js +72 -0
- package/dist/lib/entrypoints.js.map +1 -0
- package/dist/lib/manifest.d.ts +41 -0
- package/dist/lib/manifest.d.ts.map +1 -0
- package/dist/lib/manifest.js +84 -0
- package/dist/lib/manifest.js.map +1 -0
- package/dist/lib/paths.d.ts +23 -0
- package/dist/lib/paths.d.ts.map +1 -0
- package/dist/lib/paths.js +64 -0
- package/dist/lib/paths.js.map +1 -0
- package/dist/lib/platform.d.ts +20 -0
- package/dist/lib/platform.d.ts.map +1 -0
- package/dist/lib/platform.js +86 -0
- package/dist/lib/platform.js.map +1 -0
- package/dist/lib/profiles.d.ts +14 -0
- package/dist/lib/profiles.d.ts.map +1 -0
- package/dist/lib/profiles.js +138 -0
- package/dist/lib/profiles.js.map +1 -0
- package/dist/ui/menu.d.ts +2 -0
- package/dist/ui/menu.d.ts.map +1 -0
- package/dist/ui/menu.js +88 -0
- package/dist/ui/menu.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { PlatformAdapter } from "./base.js";
|
|
4
|
+
import { getProjectAgentsDir } from "../paths.js";
|
|
5
|
+
/**
|
|
6
|
+
* OpenCode adapter - similar to Cursor with minor frontmatter adjustments
|
|
7
|
+
*/
|
|
8
|
+
export class OpenCodeAdapter extends PlatformAdapter {
|
|
9
|
+
platform = "opencode";
|
|
10
|
+
isSingleFile = false;
|
|
11
|
+
getOutputPath() {
|
|
12
|
+
return getProjectAgentsDir("opencode");
|
|
13
|
+
}
|
|
14
|
+
installAgent(agentName, agentInfo) {
|
|
15
|
+
const content = this.loadAgentContent(agentInfo);
|
|
16
|
+
const outputDir = this.getOutputPath();
|
|
17
|
+
const outputPath = path.join(outputDir, agentInfo.filename);
|
|
18
|
+
// Ensure directory exists
|
|
19
|
+
if (!fs.existsSync(outputDir)) {
|
|
20
|
+
fs.mkdirSync(outputDir, { recursive: true });
|
|
21
|
+
}
|
|
22
|
+
// OpenCode uses similar format to Cursor - minimal changes needed
|
|
23
|
+
fs.writeFileSync(outputPath, content);
|
|
24
|
+
}
|
|
25
|
+
removeAgent(agentName, agentInfo) {
|
|
26
|
+
const outputPath = path.join(this.getOutputPath(), agentInfo.filename);
|
|
27
|
+
if (fs.existsSync(outputPath)) {
|
|
28
|
+
fs.unlinkSync(outputPath);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
syncAgents(installedAgents) {
|
|
32
|
+
// Update each file individually
|
|
33
|
+
for (const agent of installedAgents) {
|
|
34
|
+
this.installAgent(agent.name, agent);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=opencode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/lib/adapters/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,eAAe;IACzC,QAAQ,GAAG,UAAmB,CAAC;IAC/B,YAAY,GAAG,KAAK,CAAC;IAE9B,aAAa;QACX,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,YAAY,CAAC,SAAiB,EAAE,SAAoB;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QAE5D,0BAA0B;QAC1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,kEAAkE;QAClE,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,WAAW,CAAC,SAAiB,EAAE,SAAoB;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QACvE,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,UAAU,CAAC,eAA4B;QACrC,gCAAgC;QAChC,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;YACpC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PlatformAdapter } from "./base.js";
|
|
2
|
+
import { AgentInfo } from "../agents.js";
|
|
3
|
+
/**
|
|
4
|
+
* Windsurf adapter - converts agents to rule format
|
|
5
|
+
*/
|
|
6
|
+
export declare class WindsurfAdapter extends PlatformAdapter {
|
|
7
|
+
readonly platform: "windsurf";
|
|
8
|
+
readonly isSingleFile = false;
|
|
9
|
+
private readonly HEADER_MAPPINGS;
|
|
10
|
+
getOutputPath(): string;
|
|
11
|
+
installAgent(agentName: string, agentInfo: AgentInfo): void;
|
|
12
|
+
removeAgent(agentName: string, agentInfo: AgentInfo): void;
|
|
13
|
+
syncAgents(installedAgents: AgentInfo[]): void;
|
|
14
|
+
private transformToRule;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=windsurf.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"windsurf.d.ts","sourceRoot":"","sources":["../../../src/lib/adapters/windsurf.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC;;GAEG;AACH,qBAAa,eAAgB,SAAQ,eAAe;IAClD,QAAQ,CAAC,QAAQ,EAAG,UAAU,CAAU;IACxC,QAAQ,CAAC,YAAY,SAAS;IAE9B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAM9B;IAEF,aAAa,IAAI,MAAM;IAIvB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAc3D,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAO1D,UAAU,CAAC,eAAe,EAAE,SAAS,EAAE,GAAG,IAAI;IAO9C,OAAO,CAAC,eAAe;CA6BxB"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { PlatformAdapter } from "./base.js";
|
|
4
|
+
import { getProjectAgentsDir } from "../paths.js";
|
|
5
|
+
/**
|
|
6
|
+
* Windsurf adapter - converts agents to rule format
|
|
7
|
+
*/
|
|
8
|
+
export class WindsurfAdapter extends PlatformAdapter {
|
|
9
|
+
platform = "windsurf";
|
|
10
|
+
isSingleFile = false;
|
|
11
|
+
HEADER_MAPPINGS = {
|
|
12
|
+
"When Invoked": "When This Rule Applies",
|
|
13
|
+
"Core Responsibilities": "Rules",
|
|
14
|
+
Guidelines: "Rules",
|
|
15
|
+
"Delegation Guidelines": null, // Skip - Windsurf doesn't have delegation
|
|
16
|
+
"Output Format": "Expected Output",
|
|
17
|
+
};
|
|
18
|
+
getOutputPath() {
|
|
19
|
+
return getProjectAgentsDir("windsurf");
|
|
20
|
+
}
|
|
21
|
+
installAgent(agentName, agentInfo) {
|
|
22
|
+
const content = this.loadAgentContent(agentInfo);
|
|
23
|
+
const transformed = this.transformToRule(content, agentInfo);
|
|
24
|
+
const outputDir = this.getOutputPath();
|
|
25
|
+
const outputPath = path.join(outputDir, agentInfo.filename);
|
|
26
|
+
// Ensure directory exists
|
|
27
|
+
if (!fs.existsSync(outputDir)) {
|
|
28
|
+
fs.mkdirSync(outputDir, { recursive: true });
|
|
29
|
+
}
|
|
30
|
+
fs.writeFileSync(outputPath, transformed);
|
|
31
|
+
}
|
|
32
|
+
removeAgent(agentName, agentInfo) {
|
|
33
|
+
const outputPath = path.join(this.getOutputPath(), agentInfo.filename);
|
|
34
|
+
if (fs.existsSync(outputPath)) {
|
|
35
|
+
fs.unlinkSync(outputPath);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
syncAgents(installedAgents) {
|
|
39
|
+
// Update each file individually
|
|
40
|
+
for (const agent of installedAgents) {
|
|
41
|
+
this.installAgent(agent.name, agent);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
transformToRule(content, agentInfo) {
|
|
45
|
+
const parsed = this.parseAgentMarkdown(content);
|
|
46
|
+
// Windsurf uses simpler format - rules rather than agent behavior
|
|
47
|
+
let output = `# ${parsed.frontmatter.description || agentInfo.description}\n\n`;
|
|
48
|
+
output += this.removeAgentReferences(parsed.systemPrompt) + "\n\n";
|
|
49
|
+
// Transform and add sections
|
|
50
|
+
for (const section of parsed.sections) {
|
|
51
|
+
const newHeader = this.transformHeader(section.header, this.HEADER_MAPPINGS);
|
|
52
|
+
if (newHeader === null) {
|
|
53
|
+
continue; // Skip this section
|
|
54
|
+
}
|
|
55
|
+
output += `## ${newHeader}\n\n`;
|
|
56
|
+
// Reframe content as rules/guidance rather than agent instructions
|
|
57
|
+
const transformedContent = this.removeAgentReferences(section.content)
|
|
58
|
+
.replace(/delegate to/gi, "apply")
|
|
59
|
+
.replace(/you are/gi, "use")
|
|
60
|
+
.replace(/your/gi, "the");
|
|
61
|
+
output += transformedContent + "\n\n";
|
|
62
|
+
}
|
|
63
|
+
return output.trim();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=windsurf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"windsurf.js","sourceRoot":"","sources":["../../../src/lib/adapters/windsurf.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Platform } from "./platform.js";
|
|
2
|
+
export interface AgentInfo {
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
filename: string;
|
|
6
|
+
/** Relative path from agents dir to source file (for subfolder support) */
|
|
7
|
+
sourcePath: string;
|
|
8
|
+
tags: string[];
|
|
9
|
+
category: string;
|
|
10
|
+
}
|
|
11
|
+
export interface CategoryInfo {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
count: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Get list of all categories with agent counts
|
|
18
|
+
*/
|
|
19
|
+
export declare function getCategories(): CategoryInfo[];
|
|
20
|
+
/**
|
|
21
|
+
* Get agents by category
|
|
22
|
+
*/
|
|
23
|
+
export declare function getAgentsByCategory(category: string): AgentInfo[];
|
|
24
|
+
/**
|
|
25
|
+
* Get list of available agents from the bundled agents directory
|
|
26
|
+
*/
|
|
27
|
+
export declare function getAvailableAgents(): AgentInfo[];
|
|
28
|
+
/**
|
|
29
|
+
* Get list of installed agents with their info
|
|
30
|
+
*/
|
|
31
|
+
export declare function getInstalledAgents(): AgentInfo[];
|
|
32
|
+
/**
|
|
33
|
+
* Install an agent to the project
|
|
34
|
+
*/
|
|
35
|
+
export declare function installAgent(agentName: string, platform?: Platform): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Remove an agent from the project
|
|
38
|
+
*/
|
|
39
|
+
export declare function removeAgent(agentName: string): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Sync all installed agents to the latest version
|
|
42
|
+
*/
|
|
43
|
+
export declare function syncAgents(): {
|
|
44
|
+
synced: string[];
|
|
45
|
+
failed: string[];
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Find orphaned blue-* agent files that exist in project but aren't in manifest
|
|
49
|
+
*/
|
|
50
|
+
export declare function findOrphanedAgents(): AgentInfo[];
|
|
51
|
+
/**
|
|
52
|
+
* Repair manifest by re-tracking orphaned agents
|
|
53
|
+
*/
|
|
54
|
+
export declare function repairManifest(): {
|
|
55
|
+
repaired: string[];
|
|
56
|
+
removed: string[];
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=agents.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import { getBundledAgentsDir, getProjectAgentsDir, ensureProjectAgentsDir, } from "./paths.js";
|
|
5
|
+
import { readManifest, writeManifest, createManifest, addAgentToManifest, removeAgentFromManifest, getInstalledAgentNames, updatePlatform, } from "./manifest.js";
|
|
6
|
+
import { detectPlatform } from "./platform.js";
|
|
7
|
+
import { getAdapter } from "./adapters/index.js";
|
|
8
|
+
// Read version from package.json
|
|
9
|
+
import { createRequire } from "module";
|
|
10
|
+
const require = createRequire(import.meta.url);
|
|
11
|
+
const packageJson = require("../../package.json");
|
|
12
|
+
const PACKAGE_VERSION = packageJson.version;
|
|
13
|
+
/**
|
|
14
|
+
* Check if debug mode is enabled via environment variable
|
|
15
|
+
*/
|
|
16
|
+
function isDebugEnabled() {
|
|
17
|
+
return (process.env.DEBUG === "blue-gardener" ||
|
|
18
|
+
process.env.BLUE_GARDENER_DEBUG === "1" ||
|
|
19
|
+
process.env.BLUE_GARDENER_DEBUG === "true");
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Log debug message if debug mode is enabled
|
|
23
|
+
*/
|
|
24
|
+
function debugLog(message) {
|
|
25
|
+
if (isDebugEnabled()) {
|
|
26
|
+
console.log(chalk.gray(`[debug] ${message}`));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get list of all categories with agent counts
|
|
31
|
+
*/
|
|
32
|
+
export function getCategories() {
|
|
33
|
+
const agents = getAvailableAgents();
|
|
34
|
+
const categoryCounts = new Map();
|
|
35
|
+
for (const agent of agents) {
|
|
36
|
+
const category = agent.category || "other";
|
|
37
|
+
categoryCounts.set(category, (categoryCounts.get(category) || 0) + 1);
|
|
38
|
+
}
|
|
39
|
+
const categoryOrder = [
|
|
40
|
+
"orchestrator",
|
|
41
|
+
"development",
|
|
42
|
+
"quality",
|
|
43
|
+
"infrastructure",
|
|
44
|
+
"configuration",
|
|
45
|
+
"blockchain",
|
|
46
|
+
"other",
|
|
47
|
+
];
|
|
48
|
+
const categories = [];
|
|
49
|
+
for (const categoryId of categoryOrder) {
|
|
50
|
+
const count = categoryCounts.get(categoryId);
|
|
51
|
+
if (count) {
|
|
52
|
+
categories.push({
|
|
53
|
+
id: categoryId,
|
|
54
|
+
name: categoryId.charAt(0).toUpperCase() + categoryId.slice(1),
|
|
55
|
+
count,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return categories;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get agents by category
|
|
63
|
+
*/
|
|
64
|
+
export function getAgentsByCategory(category) {
|
|
65
|
+
const agents = getAvailableAgents();
|
|
66
|
+
return agents.filter((a) => a.category === category);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Parse agent metadata from frontmatter
|
|
70
|
+
*/
|
|
71
|
+
function parseAgentFrontmatter(content) {
|
|
72
|
+
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
73
|
+
if (!frontmatterMatch) {
|
|
74
|
+
return { name: "", description: "", tags: [], category: "" };
|
|
75
|
+
}
|
|
76
|
+
const frontmatter = frontmatterMatch[1];
|
|
77
|
+
const nameMatch = frontmatter.match(/^name:\s*(.+)$/m);
|
|
78
|
+
const descMatch = frontmatter.match(/^description:\s*(.+)$/m);
|
|
79
|
+
const categoryMatch = frontmatter.match(/^category:\s*(.+)$/m);
|
|
80
|
+
// Parse tags array: tags: [tag1, tag2, tag3]
|
|
81
|
+
const tagsMatch = frontmatter.match(/^tags:\s*\[([^\]]*)\]$/m);
|
|
82
|
+
const tags = tagsMatch
|
|
83
|
+
? tagsMatch[1]
|
|
84
|
+
.split(",")
|
|
85
|
+
.map((t) => t.trim())
|
|
86
|
+
.filter(Boolean)
|
|
87
|
+
: [];
|
|
88
|
+
return {
|
|
89
|
+
name: nameMatch ? nameMatch[1].trim() : "",
|
|
90
|
+
description: descMatch ? descMatch[1].trim() : "",
|
|
91
|
+
tags,
|
|
92
|
+
category: categoryMatch ? categoryMatch[1].trim() : "",
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Recursively find all .md files in a directory
|
|
97
|
+
*/
|
|
98
|
+
function findMarkdownFiles(dir) {
|
|
99
|
+
const results = [];
|
|
100
|
+
if (!fs.existsSync(dir)) {
|
|
101
|
+
return results;
|
|
102
|
+
}
|
|
103
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
104
|
+
for (const entry of entries) {
|
|
105
|
+
const fullPath = path.join(dir, entry.name);
|
|
106
|
+
if (entry.isDirectory()) {
|
|
107
|
+
// Recursively search subdirectories
|
|
108
|
+
results.push(...findMarkdownFiles(fullPath));
|
|
109
|
+
}
|
|
110
|
+
else if (entry.isFile() && entry.name.endsWith(".md")) {
|
|
111
|
+
results.push(fullPath);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return results;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get list of available agents from the bundled agents directory
|
|
118
|
+
*/
|
|
119
|
+
export function getAvailableAgents() {
|
|
120
|
+
const agentsDir = getBundledAgentsDir();
|
|
121
|
+
if (!fs.existsSync(agentsDir)) {
|
|
122
|
+
return [];
|
|
123
|
+
}
|
|
124
|
+
// Recursively find all .md files in agents directory and subdirectories
|
|
125
|
+
const files = findMarkdownFiles(agentsDir);
|
|
126
|
+
const agents = [];
|
|
127
|
+
for (const filePath of files) {
|
|
128
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
129
|
+
const { name, description, tags, category } = parseAgentFrontmatter(content);
|
|
130
|
+
const relativePath = path.relative(agentsDir, filePath);
|
|
131
|
+
// Skip files without valid name frontmatter (e.g., CATALOG.md)
|
|
132
|
+
if (!name) {
|
|
133
|
+
debugLog(`Skipped ${relativePath} - no 'name' field in frontmatter`);
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
// Use just the filename (not the full path) for the output file
|
|
137
|
+
const filename = path.basename(filePath);
|
|
138
|
+
agents.push({
|
|
139
|
+
name,
|
|
140
|
+
description,
|
|
141
|
+
filename,
|
|
142
|
+
// Store the relative path from agents dir for source lookup
|
|
143
|
+
sourcePath: relativePath,
|
|
144
|
+
tags,
|
|
145
|
+
category,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
return agents;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get list of installed agents with their info
|
|
152
|
+
*/
|
|
153
|
+
export function getInstalledAgents() {
|
|
154
|
+
const installedNames = getInstalledAgentNames();
|
|
155
|
+
const availableAgents = getAvailableAgents();
|
|
156
|
+
return availableAgents.filter((agent) => installedNames.includes(agent.name));
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Install an agent to the project
|
|
160
|
+
*/
|
|
161
|
+
export function installAgent(agentName, platform) {
|
|
162
|
+
const availableAgents = getAvailableAgents();
|
|
163
|
+
const agent = availableAgents.find((a) => a.name === agentName);
|
|
164
|
+
if (!agent) {
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
// Get platform from manifest or parameter
|
|
168
|
+
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;
|
|
181
|
+
}
|
|
182
|
+
// Update manifest
|
|
183
|
+
if (!manifest) {
|
|
184
|
+
manifest = createManifest(PACKAGE_VERSION, targetPlatform);
|
|
185
|
+
}
|
|
186
|
+
else if (!manifest.platform) {
|
|
187
|
+
manifest = updatePlatform(manifest, targetPlatform);
|
|
188
|
+
}
|
|
189
|
+
manifest = addAgentToManifest(manifest, agentName, PACKAGE_VERSION);
|
|
190
|
+
writeManifest(manifest);
|
|
191
|
+
return true;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Remove an agent from the project
|
|
195
|
+
*/
|
|
196
|
+
export function removeAgent(agentName) {
|
|
197
|
+
const manifest = readManifest();
|
|
198
|
+
if (!manifest || !manifest.agents[agentName]) {
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
// Get platform from manifest
|
|
202
|
+
const platform = manifest.platform || detectPlatform() || "cursor";
|
|
203
|
+
const adapter = getAdapter(platform);
|
|
204
|
+
// Find the agent info
|
|
205
|
+
const availableAgents = getAvailableAgents();
|
|
206
|
+
const agent = availableAgents.find((a) => a.name === agentName);
|
|
207
|
+
if (agent) {
|
|
208
|
+
try {
|
|
209
|
+
adapter.removeAgent(agentName, agent);
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
debugLog(`Failed to remove ${agentName}: ${error}`);
|
|
213
|
+
return false;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// Update manifest
|
|
217
|
+
const updatedManifest = removeAgentFromManifest(manifest, agentName);
|
|
218
|
+
writeManifest(updatedManifest);
|
|
219
|
+
return true;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Sync all installed agents to the latest version
|
|
223
|
+
*/
|
|
224
|
+
export function syncAgents() {
|
|
225
|
+
const manifest = readManifest();
|
|
226
|
+
if (!manifest) {
|
|
227
|
+
return { synced: [], failed: [] };
|
|
228
|
+
}
|
|
229
|
+
// Get platform from manifest
|
|
230
|
+
const platform = manifest.platform || detectPlatform() || "cursor";
|
|
231
|
+
const adapter = getAdapter(platform);
|
|
232
|
+
const synced = [];
|
|
233
|
+
const failed = [];
|
|
234
|
+
// Get installed agents info
|
|
235
|
+
const availableAgents = getAvailableAgents();
|
|
236
|
+
const installedAgents = [];
|
|
237
|
+
for (const agentName of Object.keys(manifest.agents)) {
|
|
238
|
+
const agent = availableAgents.find((a) => a.name === agentName);
|
|
239
|
+
if (agent) {
|
|
240
|
+
installedAgents.push(agent);
|
|
241
|
+
}
|
|
242
|
+
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));
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
// Multi-file platforms: update each file individually
|
|
259
|
+
for (const agent of installedAgents) {
|
|
260
|
+
try {
|
|
261
|
+
adapter.installAgent(agent.name, agent);
|
|
262
|
+
synced.push(agent.name);
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
debugLog(`Failed to sync ${agent.name}: ${error}`);
|
|
266
|
+
failed.push(agent.name);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
// Update manifest version
|
|
271
|
+
if (synced.length > 0) {
|
|
272
|
+
manifest.version = PACKAGE_VERSION;
|
|
273
|
+
for (const name of synced) {
|
|
274
|
+
manifest.agents[name].version = PACKAGE_VERSION;
|
|
275
|
+
}
|
|
276
|
+
writeManifest(manifest);
|
|
277
|
+
}
|
|
278
|
+
return { synced, failed };
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Find orphaned blue-* agent files that exist in project but aren't in manifest
|
|
282
|
+
*/
|
|
283
|
+
export function findOrphanedAgents() {
|
|
284
|
+
const projectAgentsDir = getProjectAgentsDir();
|
|
285
|
+
if (!fs.existsSync(projectAgentsDir)) {
|
|
286
|
+
return [];
|
|
287
|
+
}
|
|
288
|
+
const manifest = readManifest();
|
|
289
|
+
const trackedNames = manifest ? Object.keys(manifest.agents) : [];
|
|
290
|
+
const availableAgents = getAvailableAgents();
|
|
291
|
+
// Find blue-* files in project that match our available agents but aren't tracked
|
|
292
|
+
const files = fs
|
|
293
|
+
.readdirSync(projectAgentsDir)
|
|
294
|
+
.filter((f) => f.startsWith("blue-") && f.endsWith(".md"));
|
|
295
|
+
const orphaned = [];
|
|
296
|
+
for (const filename of files) {
|
|
297
|
+
const matchingAgent = availableAgents.find((a) => a.filename === filename);
|
|
298
|
+
if (matchingAgent && !trackedNames.includes(matchingAgent.name)) {
|
|
299
|
+
orphaned.push(matchingAgent);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
return orphaned;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Repair manifest by re-tracking orphaned agents
|
|
306
|
+
*/
|
|
307
|
+
export function repairManifest() {
|
|
308
|
+
const orphaned = findOrphanedAgents();
|
|
309
|
+
const repaired = [];
|
|
310
|
+
const removed = [];
|
|
311
|
+
if (orphaned.length === 0) {
|
|
312
|
+
return { repaired, removed };
|
|
313
|
+
}
|
|
314
|
+
// Get or create manifest
|
|
315
|
+
let manifest = readManifest();
|
|
316
|
+
if (!manifest) {
|
|
317
|
+
manifest = createManifest(PACKAGE_VERSION);
|
|
318
|
+
}
|
|
319
|
+
// Add orphaned agents to manifest
|
|
320
|
+
for (const agent of orphaned) {
|
|
321
|
+
manifest = addAgentToManifest(manifest, agent.name, PACKAGE_VERSION);
|
|
322
|
+
repaired.push(agent.name);
|
|
323
|
+
}
|
|
324
|
+
// Check for manifest entries that don't have files
|
|
325
|
+
const projectAgentsDir = getProjectAgentsDir();
|
|
326
|
+
const availableAgents = getAvailableAgents();
|
|
327
|
+
for (const agentName of Object.keys(manifest.agents)) {
|
|
328
|
+
const agent = availableAgents.find((a) => a.name === agentName);
|
|
329
|
+
if (agent) {
|
|
330
|
+
const filePath = path.join(projectAgentsDir, agent.filename);
|
|
331
|
+
if (!fs.existsSync(filePath)) {
|
|
332
|
+
manifest = removeAgentFromManifest(manifest, agentName);
|
|
333
|
+
removed.push(agentName);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
writeManifest(manifest);
|
|
338
|
+
return { repaired, removed };
|
|
339
|
+
}
|
|
340
|
+
//# sourceMappingURL=agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/lib/agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Platform } from "./platform.js";
|
|
2
|
+
export interface EntrypointsInstallResult {
|
|
3
|
+
platform: Platform;
|
|
4
|
+
installed: string[];
|
|
5
|
+
skipped: string[];
|
|
6
|
+
message?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function installEntrypoints(platform: Platform): EntrypointsInstallResult;
|
|
9
|
+
//# sourceMappingURL=entrypoints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entrypoints.d.ts","sourceRoot":"","sources":["../../src/lib/entrypoints.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAsCD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,wBAAwB,CA4C/E"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { getPackageDir } from "./paths.js";
|
|
4
|
+
function ensureDir(dir) {
|
|
5
|
+
if (!fs.existsSync(dir)) {
|
|
6
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
function listFiles(dir) {
|
|
10
|
+
if (!fs.existsSync(dir))
|
|
11
|
+
return [];
|
|
12
|
+
return fs
|
|
13
|
+
.readdirSync(dir, { withFileTypes: true })
|
|
14
|
+
.filter((e) => e.isFile())
|
|
15
|
+
.map((e) => e.name);
|
|
16
|
+
}
|
|
17
|
+
function copyFileIfChanged(src, dest) {
|
|
18
|
+
const srcContent = fs.readFileSync(src, "utf-8");
|
|
19
|
+
if (fs.existsSync(dest)) {
|
|
20
|
+
const destContent = fs.readFileSync(dest, "utf-8");
|
|
21
|
+
if (destContent === srcContent)
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
fs.writeFileSync(dest, srcContent);
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
function getBundledEntrypointsDir() {
|
|
28
|
+
return path.join(getPackageDir(), "entrypoints");
|
|
29
|
+
}
|
|
30
|
+
function getCursorCommandsDir(cwd) {
|
|
31
|
+
return path.join(cwd, ".cursor", "commands");
|
|
32
|
+
}
|
|
33
|
+
function getWindsurfWorkflowsDir(cwd) {
|
|
34
|
+
return path.join(cwd, ".windsurf", "workflows");
|
|
35
|
+
}
|
|
36
|
+
export function installEntrypoints(platform) {
|
|
37
|
+
const cwd = process.cwd();
|
|
38
|
+
const base = getBundledEntrypointsDir();
|
|
39
|
+
const installed = [];
|
|
40
|
+
const skipped = [];
|
|
41
|
+
if (platform === "cursor") {
|
|
42
|
+
const srcDir = path.join(base, "cursor", "commands");
|
|
43
|
+
const destDir = getCursorCommandsDir(cwd);
|
|
44
|
+
ensureDir(destDir);
|
|
45
|
+
for (const filename of listFiles(srcDir)) {
|
|
46
|
+
const src = path.join(srcDir, filename);
|
|
47
|
+
const dest = path.join(destDir, filename);
|
|
48
|
+
const didCopy = copyFileIfChanged(src, dest);
|
|
49
|
+
(didCopy ? installed : skipped).push(`.cursor/commands/${filename}`);
|
|
50
|
+
}
|
|
51
|
+
return { platform, installed, skipped };
|
|
52
|
+
}
|
|
53
|
+
if (platform === "windsurf") {
|
|
54
|
+
const srcDir = path.join(base, "windsurf", "workflows");
|
|
55
|
+
const destDir = getWindsurfWorkflowsDir(cwd);
|
|
56
|
+
ensureDir(destDir);
|
|
57
|
+
for (const filename of listFiles(srcDir)) {
|
|
58
|
+
const src = path.join(srcDir, filename);
|
|
59
|
+
const dest = path.join(destDir, filename);
|
|
60
|
+
const didCopy = copyFileIfChanged(src, dest);
|
|
61
|
+
(didCopy ? installed : skipped).push(`.windsurf/workflows/${filename}`);
|
|
62
|
+
}
|
|
63
|
+
return { platform, installed, skipped };
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
platform,
|
|
67
|
+
installed,
|
|
68
|
+
skipped,
|
|
69
|
+
message: "No native entrypoints are installed for this platform. Use Cursor commands or Windsurf workflows when available, and rely on staged instructions in single-file platforms.",
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=entrypoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entrypoints.js","sourceRoot":"","sources":["../../src/lib/entrypoints.ts"],"names":[],"mappings":"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"}
|