@magic-ingredients/tiny-brain-local 0.8.0 → 0.10.2
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/dist/agents/formatters/claude-code-formatter.d.ts +37 -0
- package/dist/agents/formatters/claude-code-formatter.d.ts.map +1 -0
- package/dist/agents/formatters/claude-code-formatter.js +217 -0
- package/dist/agents/formatters/claude-code-formatter.js.map +1 -0
- package/dist/agents/formatters/formatter-factory.d.ts +25 -0
- package/dist/agents/formatters/formatter-factory.d.ts.map +1 -0
- package/dist/agents/formatters/formatter-factory.js +61 -0
- package/dist/agents/formatters/formatter-factory.js.map +1 -0
- package/dist/agents/types.d.ts +68 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +12 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/analyser/analyzers/script-analyzer.d.ts +10 -0
- package/dist/analyser/analyzers/script-analyzer.d.ts.map +1 -0
- package/dist/analyser/analyzers/script-analyzer.js +205 -0
- package/dist/analyser/analyzers/script-analyzer.js.map +1 -0
- package/dist/analyser/detectors/base-detector.d.ts +12 -0
- package/dist/analyser/detectors/base-detector.d.ts.map +1 -0
- package/dist/analyser/detectors/base-detector.js +50 -0
- package/dist/analyser/detectors/base-detector.js.map +1 -0
- package/dist/analyser/detectors/javascript-detector.d.ts +19 -0
- package/dist/analyser/detectors/javascript-detector.d.ts.map +1 -0
- package/dist/analyser/detectors/javascript-detector.js +347 -0
- package/dist/analyser/detectors/javascript-detector.js.map +1 -0
- package/dist/analyser/index.d.ts +5 -0
- package/dist/analyser/index.d.ts.map +1 -0
- package/dist/analyser/index.js +315 -0
- package/dist/analyser/index.js.map +1 -0
- package/dist/analyser/types.d.ts +2 -0
- package/dist/analyser/types.d.ts.map +1 -0
- package/dist/analyser/types.js +2 -0
- package/dist/analyser/types.js.map +1 -0
- package/dist/analyser/utils.d.ts +5 -0
- package/dist/analyser/utils.d.ts.map +1 -0
- package/dist/analyser/utils.js +24 -0
- package/dist/analyser/utils.js.map +1 -0
- package/dist/cli/cli-factory.d.ts.map +1 -1
- package/dist/cli/cli-factory.js +17 -0
- package/dist/cli/cli-factory.js.map +1 -1
- package/dist/cli/commands/analyse.command.d.ts +7 -0
- package/dist/cli/commands/analyse.command.d.ts.map +1 -0
- package/dist/cli/commands/analyse.command.js +130 -0
- package/dist/cli/commands/analyse.command.js.map +1 -0
- package/dist/cli/commands/status.command.d.ts.map +1 -1
- package/dist/cli/commands/status.command.js +3 -1
- package/dist/cli/commands/status.command.js.map +1 -1
- package/dist/core/mcp-server.d.ts +10 -8
- package/dist/core/mcp-server.d.ts.map +1 -1
- package/dist/core/mcp-server.js +93 -85
- package/dist/core/mcp-server.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -8
- package/dist/index.js.map +1 -1
- package/dist/prompts/persona/persona.prompt.js +8 -8
- package/dist/prompts/persona/persona.prompt.js.map +1 -1
- package/dist/prompts/planning/planning.prompt.d.ts +0 -8
- package/dist/prompts/planning/planning.prompt.d.ts.map +1 -1
- package/dist/prompts/planning/planning.prompt.js +0 -175
- package/dist/prompts/planning/planning.prompt.js.map +1 -1
- package/dist/services/agent-installation-service.d.ts +101 -0
- package/dist/services/agent-installation-service.d.ts.map +1 -0
- package/dist/services/agent-installation-service.js +328 -0
- package/dist/services/agent-installation-service.js.map +1 -0
- package/dist/services/agent-manager.d.ts +45 -0
- package/dist/services/agent-manager.d.ts.map +1 -0
- package/dist/services/agent-manager.js +154 -0
- package/dist/services/agent-manager.js.map +1 -0
- package/dist/services/agent-service.d.ts +70 -0
- package/dist/services/agent-service.d.ts.map +1 -0
- package/dist/services/agent-service.js +273 -0
- package/dist/services/agent-service.js.map +1 -0
- package/dist/services/analyse-service.d.ts +97 -0
- package/dist/services/analyse-service.d.ts.map +1 -0
- package/dist/services/analyse-service.js +370 -0
- package/dist/services/analyse-service.js.map +1 -0
- package/dist/services/dashboard-launcher.service.d.ts +20 -0
- package/dist/services/dashboard-launcher.service.d.ts.map +1 -0
- package/dist/services/dashboard-launcher.service.js +30 -0
- package/dist/services/dashboard-launcher.service.js.map +1 -0
- package/dist/services/persona-enhancer.d.ts +52 -0
- package/dist/services/persona-enhancer.d.ts.map +1 -0
- package/dist/services/persona-enhancer.js +252 -0
- package/dist/services/persona-enhancer.js.map +1 -0
- package/dist/services/persona-grouper.d.ts +29 -0
- package/dist/services/persona-grouper.d.ts.map +1 -0
- package/dist/services/persona-grouper.js +111 -0
- package/dist/services/persona-grouper.js.map +1 -0
- package/dist/services/persona-service.d.ts +52 -0
- package/dist/services/persona-service.d.ts.map +1 -0
- package/dist/services/{enhanced-persona-service.js → persona-service.js} +125 -7
- package/dist/services/persona-service.js.map +1 -0
- package/dist/services/remote/auth-token-service.d.ts.map +1 -1
- package/dist/services/remote/auth-token-service.js +10 -3
- package/dist/services/remote/auth-token-service.js.map +1 -1
- package/dist/services/remote/system-persona-service.d.ts.map +1 -1
- package/dist/services/remote/system-persona-service.js +41 -10
- package/dist/services/remote/system-persona-service.js.map +1 -1
- package/dist/services/repo-service.d.ts +195 -0
- package/dist/services/repo-service.d.ts.map +1 -0
- package/dist/services/repo-service.js +1023 -0
- package/dist/services/repo-service.js.map +1 -0
- package/dist/services/types/persona-types.d.ts +84 -0
- package/dist/services/types/persona-types.d.ts.map +1 -0
- package/dist/services/types/persona-types.js +5 -0
- package/dist/services/types/persona-types.js.map +1 -0
- package/dist/services/versioning-service.d.ts +79 -0
- package/dist/services/versioning-service.d.ts.map +1 -0
- package/dist/services/versioning-service.js +191 -0
- package/dist/services/versioning-service.js.map +1 -0
- package/dist/storage/local-filesystem-adapter.d.ts +1 -0
- package/dist/storage/local-filesystem-adapter.d.ts.map +1 -1
- package/dist/storage/local-filesystem-adapter.js +47 -3
- package/dist/storage/local-filesystem-adapter.js.map +1 -1
- package/dist/storage/platform-config-adapter.d.ts +9 -0
- package/dist/storage/platform-config-adapter.d.ts.map +1 -1
- package/dist/storage/platform-config-adapter.js +55 -1
- package/dist/storage/platform-config-adapter.js.map +1 -1
- package/dist/tools/analyse.tool.d.ts +17 -0
- package/dist/tools/analyse.tool.d.ts.map +1 -0
- package/dist/tools/analyse.tool.js +124 -0
- package/dist/tools/analyse.tool.js.map +1 -0
- package/dist/tools/persona/as.tool.d.ts +32 -11
- package/dist/tools/persona/as.tool.d.ts.map +1 -1
- package/dist/tools/persona/as.tool.js +452 -317
- package/dist/tools/persona/as.tool.js.map +1 -1
- package/dist/tools/persona/persona.tool.js +2 -2
- package/dist/tools/persona/persona.tool.js.map +1 -1
- package/dist/tools/plan/plan.tool.d.ts +3 -3
- package/dist/tools/plan/plan.tool.d.ts.map +1 -1
- package/dist/tools/plan/plan.tool.js +78 -55
- package/dist/tools/plan/plan.tool.js.map +1 -1
- package/dist/tools/tool-registry.d.ts.map +1 -1
- package/dist/tools/tool-registry.js +4 -0
- package/dist/tools/tool-registry.js.map +1 -1
- package/dist/utils/repo-utils.d.ts +10 -0
- package/dist/utils/repo-utils.d.ts.map +1 -0
- package/dist/utils/repo-utils.js +55 -0
- package/dist/utils/repo-utils.js.map +1 -0
- package/package.json +6 -2
- package/dist/services/enhanced-persona-service.d.ts +0 -22
- package/dist/services/enhanced-persona-service.d.ts.map +0 -1
- package/dist/services/enhanced-persona-service.js.map +0 -1
- package/dist/services/plan-watcher.service.d.ts +0 -141
- package/dist/services/plan-watcher.service.d.ts.map +0 -1
- package/dist/services/plan-watcher.service.js +0 -1010
- package/dist/services/plan-watcher.service.js.map +0 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Agent, AgentFormat, AgentFormatter, FormattedAgent } from '../types.js';
|
|
2
|
+
import type { LibraryPersonaResponse } from '@magic-ingredients/tiny-brain-core';
|
|
3
|
+
/**
|
|
4
|
+
* Formats agents for Claude Code using YAML frontmatter + markdown
|
|
5
|
+
*
|
|
6
|
+
* Format:
|
|
7
|
+
* ---
|
|
8
|
+
* name: agent-name
|
|
9
|
+
* description: When to use this agent
|
|
10
|
+
* tools: tool1, tool2, tool3
|
|
11
|
+
* ---
|
|
12
|
+
*
|
|
13
|
+
* System prompt in markdown
|
|
14
|
+
*/
|
|
15
|
+
export declare class ClaudeCodeFormatter implements AgentFormatter {
|
|
16
|
+
format: AgentFormat;
|
|
17
|
+
getRepoContextFilePath(): string;
|
|
18
|
+
getAgentInstallPath(): string;
|
|
19
|
+
/**
|
|
20
|
+
* Format TBR agent JSON directly to Claude Code format
|
|
21
|
+
*/
|
|
22
|
+
formatTbrAgent(agentData: LibraryPersonaResponse['agents'][0]): FormattedAgent;
|
|
23
|
+
private generateTbrFrontmatter;
|
|
24
|
+
private generateTbrContent;
|
|
25
|
+
formatAgent(agent: Agent): FormattedAgent;
|
|
26
|
+
formatAgents(agents: Agent[]): FormattedAgent[];
|
|
27
|
+
private generateFrontmatter;
|
|
28
|
+
private generateContent;
|
|
29
|
+
private formatExamples;
|
|
30
|
+
private escapeYaml;
|
|
31
|
+
parseAgent(content: string): Agent;
|
|
32
|
+
private parseFrontmatter;
|
|
33
|
+
private extractSection;
|
|
34
|
+
private extractListSection;
|
|
35
|
+
private extractExamples;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=claude-code-formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-formatter.d.ts","sourceRoot":"","sources":["../../../src/agents/formatters/claude-code-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAgB,MAAM,aAAa,CAAC;AAC/F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAEjF;;;;;;;;;;;GAWG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IACxD,MAAM,cAA2B;IAEjC,sBAAsB,IAAI,MAAM;IAKhC,mBAAmB,IAAI,MAAM;IAK7B;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc;IAe9E,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,kBAAkB;IA0D1B,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc;IAezC,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,EAAE;IAI/C,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,UAAU;IAQlB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK;IAuBlC,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,eAAe;CAIxB"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { AgentFormat } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Formats agents for Claude Code using YAML frontmatter + markdown
|
|
4
|
+
*
|
|
5
|
+
* Format:
|
|
6
|
+
* ---
|
|
7
|
+
* name: agent-name
|
|
8
|
+
* description: When to use this agent
|
|
9
|
+
* tools: tool1, tool2, tool3
|
|
10
|
+
* ---
|
|
11
|
+
*
|
|
12
|
+
* System prompt in markdown
|
|
13
|
+
*/
|
|
14
|
+
export class ClaudeCodeFormatter {
|
|
15
|
+
format = AgentFormat.CLAUDE_CODE;
|
|
16
|
+
getRepoContextFilePath() {
|
|
17
|
+
// Claude Code uses CLAUDE.md in the repo root
|
|
18
|
+
return 'CLAUDE.md';
|
|
19
|
+
}
|
|
20
|
+
getAgentInstallPath() {
|
|
21
|
+
// Claude Code installs agents in .claude/agents/
|
|
22
|
+
return '.claude/agents';
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Format TBR agent JSON directly to Claude Code format
|
|
26
|
+
*/
|
|
27
|
+
formatTbrAgent(agentData) {
|
|
28
|
+
const frontmatter = this.generateTbrFrontmatter(agentData);
|
|
29
|
+
const content = this.generateTbrContent(agentData);
|
|
30
|
+
return {
|
|
31
|
+
format: this.format,
|
|
32
|
+
filename: `${agentData.name}.md`,
|
|
33
|
+
content: `---\n${frontmatter}---\n\n${content}`,
|
|
34
|
+
metadata: {
|
|
35
|
+
platform: 'claude-code',
|
|
36
|
+
version: agentData.details.version || '1.0.0'
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
generateTbrFrontmatter(agent) {
|
|
41
|
+
const lines = [];
|
|
42
|
+
// Required fields
|
|
43
|
+
lines.push(`name: ${agent.name}`);
|
|
44
|
+
lines.push(`description: ${this.escapeYaml(agent.details.description)}`);
|
|
45
|
+
// Tools would need to be extracted from the agent data if available
|
|
46
|
+
// For now, we'll leave tools empty as they're not in the TBR structure
|
|
47
|
+
return lines.join('\n') + '\n';
|
|
48
|
+
}
|
|
49
|
+
generateTbrContent(agent) {
|
|
50
|
+
const sections = [];
|
|
51
|
+
// Main mindset/system prompt
|
|
52
|
+
if (agent.mindset) {
|
|
53
|
+
sections.push(agent.mindset);
|
|
54
|
+
}
|
|
55
|
+
// Add purpose from description
|
|
56
|
+
sections.push(`## Your Single Purpose\n${agent.details.description}`);
|
|
57
|
+
// Add boundaries if provided
|
|
58
|
+
if (agent.boundaries) {
|
|
59
|
+
if (agent.boundaries.will?.length > 0) {
|
|
60
|
+
sections.push(`## What You Will Do\n${agent.boundaries.will.map(b => `- ${b}`).join('\n')}`);
|
|
61
|
+
}
|
|
62
|
+
if (agent.boundaries.wont?.length > 0) {
|
|
63
|
+
sections.push(`## What You Won't Do\n${agent.boundaries.wont.map(b => `- ${b}`).join('\n')}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Add tasks as capabilities
|
|
67
|
+
if (agent.tasks && agent.tasks.length > 0) {
|
|
68
|
+
sections.push(`## Your Capabilities\n${agent.tasks.map(t => `- ${t}`).join('\n')}`);
|
|
69
|
+
}
|
|
70
|
+
// Add flow if provided
|
|
71
|
+
if (agent.flow) {
|
|
72
|
+
if (agent.flow.phases && agent.flow.phases.length > 0) {
|
|
73
|
+
const phaseList = agent.flow.phases.map(p => {
|
|
74
|
+
let item = `- ${p.name}`;
|
|
75
|
+
if (p.tollgate)
|
|
76
|
+
item += ` (Tollgate: ${p.tollgate})`;
|
|
77
|
+
return item;
|
|
78
|
+
}).join('\n');
|
|
79
|
+
sections.push(`## Your Workflow\n${phaseList}`);
|
|
80
|
+
}
|
|
81
|
+
if (agent.flow.priorities && agent.flow.priorities.length > 0) {
|
|
82
|
+
sections.push(`## Priorities\n${agent.flow.priorities.map(p => `- ${p}`).join('\n')}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Add output format if provided
|
|
86
|
+
if (agent.output) {
|
|
87
|
+
let outputSection = `## Output Format\nFormat: ${agent.output.format}\n`;
|
|
88
|
+
if (agent.output.includes && agent.output.includes.length > 0) {
|
|
89
|
+
outputSection += `\nShould include:\n${agent.output.includes.map(i => `- ${i}`).join('\n')}`;
|
|
90
|
+
}
|
|
91
|
+
sections.push(outputSection);
|
|
92
|
+
}
|
|
93
|
+
// Add notes if any
|
|
94
|
+
if (agent.details.notes && agent.details.notes.length > 0) {
|
|
95
|
+
sections.push(`## Important Notes\n${agent.details.notes.map(n => `- ${n}`).join('\n')}`);
|
|
96
|
+
}
|
|
97
|
+
return sections.join('\n\n');
|
|
98
|
+
}
|
|
99
|
+
formatAgent(agent) {
|
|
100
|
+
const frontmatter = this.generateFrontmatter(agent);
|
|
101
|
+
const content = this.generateContent(agent);
|
|
102
|
+
return {
|
|
103
|
+
format: this.format,
|
|
104
|
+
filename: `${agent.id}.md`,
|
|
105
|
+
content: `---\n${frontmatter}---\n\n${content}`,
|
|
106
|
+
metadata: {
|
|
107
|
+
platform: 'claude-code',
|
|
108
|
+
version: agent.version || '1.0.0'
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
formatAgents(agents) {
|
|
113
|
+
return agents.map(agent => this.formatAgent(agent));
|
|
114
|
+
}
|
|
115
|
+
generateFrontmatter(agent) {
|
|
116
|
+
const lines = [];
|
|
117
|
+
// Required fields
|
|
118
|
+
lines.push(`name: ${agent.id}`);
|
|
119
|
+
lines.push(`description: ${this.escapeYaml(agent.description)}`);
|
|
120
|
+
// Optional tools
|
|
121
|
+
if (agent.tools && agent.tools.length > 0) {
|
|
122
|
+
lines.push(`tools: ${agent.tools.join(', ')}`);
|
|
123
|
+
}
|
|
124
|
+
return lines.join('\n') + '\n';
|
|
125
|
+
}
|
|
126
|
+
generateContent(agent) {
|
|
127
|
+
const sections = [];
|
|
128
|
+
// Main system prompt
|
|
129
|
+
sections.push(agent.systemPrompt);
|
|
130
|
+
// Add purpose section
|
|
131
|
+
if (agent.purpose) {
|
|
132
|
+
sections.push(`## Your Single Purpose\n${agent.purpose}`);
|
|
133
|
+
}
|
|
134
|
+
// Add capabilities
|
|
135
|
+
if (agent.capabilities.length > 0) {
|
|
136
|
+
sections.push(`## Your Capabilities\n${agent.capabilities.map(c => `- ${c}`).join('\n')}`);
|
|
137
|
+
}
|
|
138
|
+
// Add examples if provided
|
|
139
|
+
if (agent.examples && agent.examples.length > 0) {
|
|
140
|
+
sections.push(this.formatExamples(agent.examples));
|
|
141
|
+
}
|
|
142
|
+
// Add dependencies note if any
|
|
143
|
+
if (agent.dependencies && agent.dependencies.length > 0) {
|
|
144
|
+
sections.push(`## Dependencies\nThis agent requires: ${agent.dependencies.join(', ')}`);
|
|
145
|
+
}
|
|
146
|
+
return sections.join('\n\n');
|
|
147
|
+
}
|
|
148
|
+
formatExamples(examples) {
|
|
149
|
+
const exampleSections = examples.map(ex => {
|
|
150
|
+
let section = '### Example';
|
|
151
|
+
if (ex.description) {
|
|
152
|
+
section += `: ${ex.description}`;
|
|
153
|
+
}
|
|
154
|
+
section += '\n\n**Input:**\n```\n' + ex.input + '\n```\n\n';
|
|
155
|
+
section += '**Output:**\n```\n' + ex.output + '\n```';
|
|
156
|
+
return section;
|
|
157
|
+
});
|
|
158
|
+
return `## Examples\n\n${exampleSections.join('\n\n')}`;
|
|
159
|
+
}
|
|
160
|
+
escapeYaml(str) {
|
|
161
|
+
// Escape special YAML characters
|
|
162
|
+
if (str.includes(':') || str.includes('"') || str.includes("'") || str.includes('\n')) {
|
|
163
|
+
return `"${str.replace(/"/g, '\\"')}"`;
|
|
164
|
+
}
|
|
165
|
+
return str;
|
|
166
|
+
}
|
|
167
|
+
parseAgent(content) {
|
|
168
|
+
// Parse YAML frontmatter and markdown back to Agent
|
|
169
|
+
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
170
|
+
if (!frontmatterMatch) {
|
|
171
|
+
throw new Error('Invalid Claude Code agent format: missing frontmatter');
|
|
172
|
+
}
|
|
173
|
+
const frontmatter = this.parseFrontmatter(frontmatterMatch[1]);
|
|
174
|
+
const markdown = content.slice(frontmatterMatch[0].length).trim();
|
|
175
|
+
return {
|
|
176
|
+
id: frontmatter.name,
|
|
177
|
+
name: frontmatter.name,
|
|
178
|
+
description: frontmatter.description,
|
|
179
|
+
tools: frontmatter.tools ? frontmatter.tools.split(',').map(t => t.trim()) : [],
|
|
180
|
+
systemPrompt: markdown,
|
|
181
|
+
purpose: this.extractSection(markdown, 'Your Single Purpose'),
|
|
182
|
+
capabilities: this.extractListSection(markdown, 'Your Capabilities'),
|
|
183
|
+
examples: this.extractExamples(markdown),
|
|
184
|
+
dependencies: this.extractListSection(markdown, 'Dependencies')
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
parseFrontmatter(yaml) {
|
|
188
|
+
const result = {};
|
|
189
|
+
const lines = yaml.split('\n');
|
|
190
|
+
for (const line of lines) {
|
|
191
|
+
const match = line.match(/^(\w+):\s*(.+)$/);
|
|
192
|
+
if (match) {
|
|
193
|
+
result[match[1]] = match[2].replace(/^["']|["']$/g, '');
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return result;
|
|
197
|
+
}
|
|
198
|
+
extractSection(markdown, heading) {
|
|
199
|
+
const regex = new RegExp(`## ${heading}\\n([^#]+)`, 'i');
|
|
200
|
+
const match = markdown.match(regex);
|
|
201
|
+
return match ? match[1].trim() : '';
|
|
202
|
+
}
|
|
203
|
+
extractListSection(markdown, heading) {
|
|
204
|
+
const section = this.extractSection(markdown, heading);
|
|
205
|
+
if (!section)
|
|
206
|
+
return [];
|
|
207
|
+
return section
|
|
208
|
+
.split('\n')
|
|
209
|
+
.filter(line => line.startsWith('-'))
|
|
210
|
+
.map(line => line.replace(/^-\s*/, '').trim());
|
|
211
|
+
}
|
|
212
|
+
extractExamples(_markdown) {
|
|
213
|
+
// TODO: Implement example extraction from markdown
|
|
214
|
+
return [];
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=claude-code-formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-formatter.js","sourceRoot":"","sources":["../../../src/agents/formatters/claude-code-formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AgentFormat, AgentFormatter } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Factory for creating agent formatters based on platform
|
|
4
|
+
* Currently only supports Claude Code format
|
|
5
|
+
*/
|
|
6
|
+
export declare class FormatterFactory {
|
|
7
|
+
private static formatters;
|
|
8
|
+
/**
|
|
9
|
+
* Get formatter for a specific platform
|
|
10
|
+
*/
|
|
11
|
+
static getFormatter(format: AgentFormat): AgentFormatter;
|
|
12
|
+
/**
|
|
13
|
+
* Register a custom formatter
|
|
14
|
+
*/
|
|
15
|
+
static registerFormatter(format: AgentFormat, formatter: AgentFormatter): void;
|
|
16
|
+
/**
|
|
17
|
+
* Get all available formats
|
|
18
|
+
*/
|
|
19
|
+
static getAvailableFormats(): AgentFormat[];
|
|
20
|
+
/**
|
|
21
|
+
* Detect format based on platform or environment
|
|
22
|
+
*/
|
|
23
|
+
static detectFormat(platform?: string): AgentFormat;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=formatter-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatter-factory.d.ts","sourceRoot":"","sources":["../../../src/agents/formatters/formatter-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAI1D;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,UAAU,CAEtB;IAEH;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,cAAc;IAQxD;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI;IAI9E;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,WAAW,EAAE;IAI3C;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW;CAyBpD"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { AgentFormat } from '../types.js';
|
|
2
|
+
import { ClaudeCodeFormatter } from './claude-code-formatter.js';
|
|
3
|
+
import { PlatformConfigAdapter } from '../../storage/platform-config-adapter.js';
|
|
4
|
+
/**
|
|
5
|
+
* Factory for creating agent formatters based on platform
|
|
6
|
+
* Currently only supports Claude Code format
|
|
7
|
+
*/
|
|
8
|
+
export class FormatterFactory {
|
|
9
|
+
static formatters = new Map([
|
|
10
|
+
[AgentFormat.CLAUDE_CODE, new ClaudeCodeFormatter()],
|
|
11
|
+
]);
|
|
12
|
+
/**
|
|
13
|
+
* Get formatter for a specific platform
|
|
14
|
+
*/
|
|
15
|
+
static getFormatter(format) {
|
|
16
|
+
const formatter = this.formatters.get(format);
|
|
17
|
+
if (!formatter) {
|
|
18
|
+
throw new Error(`No formatter available for format: ${format}`);
|
|
19
|
+
}
|
|
20
|
+
return formatter;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Register a custom formatter
|
|
24
|
+
*/
|
|
25
|
+
static registerFormatter(format, formatter) {
|
|
26
|
+
this.formatters.set(format, formatter);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Get all available formats
|
|
30
|
+
*/
|
|
31
|
+
static getAvailableFormats() {
|
|
32
|
+
return Array.from(this.formatters.keys());
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Detect format based on platform or environment
|
|
36
|
+
*/
|
|
37
|
+
static detectFormat(platform) {
|
|
38
|
+
// Platform-specific detection
|
|
39
|
+
if (platform) {
|
|
40
|
+
switch (platform.toLowerCase()) {
|
|
41
|
+
case 'claude':
|
|
42
|
+
case 'claude-code':
|
|
43
|
+
case 'claude-desktop':
|
|
44
|
+
case 'anthropic':
|
|
45
|
+
return AgentFormat.CLAUDE_CODE;
|
|
46
|
+
default:
|
|
47
|
+
throw new Error(`Unsupported platform: ${platform}. Only Claude Code is currently supported.`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Use the existing platform detection from PlatformConfigAdapter
|
|
51
|
+
const detectedPlatform = PlatformConfigAdapter.detectPlatform();
|
|
52
|
+
switch (detectedPlatform) {
|
|
53
|
+
case 'claude-code':
|
|
54
|
+
case 'claude-desktop':
|
|
55
|
+
return AgentFormat.CLAUDE_CODE;
|
|
56
|
+
default:
|
|
57
|
+
throw new Error(`Unsupported platform: ${detectedPlatform}. Only Claude Code is currently supported.`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=formatter-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatter-factory.js","sourceRoot":"","sources":["../../../src/agents/formatters/formatter-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEjF;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAC,UAAU,GAAG,IAAI,GAAG,CAA8B;QAC/D,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,mBAAmB,EAAE,CAAC;KACrD,CAAC,CAAC;IAEH;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAmB;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,MAAmB,EAAE,SAAyB;QACrE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,mBAAmB;QACxB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,QAAiB;QACnC,8BAA8B;QAC9B,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC/B,KAAK,QAAQ,CAAC;gBACd,KAAK,aAAa,CAAC;gBACnB,KAAK,gBAAgB,CAAC;gBACtB,KAAK,WAAW;oBACd,OAAO,WAAW,CAAC,WAAW,CAAC;gBACjC;oBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,4CAA4C,CAAC,CAAC;YACnG,CAAC;QACH,CAAC;QAED,iEAAiE;QACjE,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,cAAc,EAAE,CAAC;QAEhE,QAAQ,gBAAgB,EAAE,CAAC;YACzB,KAAK,aAAa,CAAC;YACnB,KAAK,gBAAgB;gBACnB,OAAO,WAAW,CAAC,WAAW,CAAC;YACjC;gBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,gBAAgB,4CAA4C,CAAC,CAAC;QAC3G,CAAC;IACH,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core agent definition that's platform-agnostic
|
|
3
|
+
*/
|
|
4
|
+
export interface Agent {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
description: string;
|
|
8
|
+
category?: string;
|
|
9
|
+
purpose?: string;
|
|
10
|
+
capabilities: string[];
|
|
11
|
+
tools?: string[];
|
|
12
|
+
systemPrompt: string;
|
|
13
|
+
examples?: AgentExample[];
|
|
14
|
+
dependencies?: string[];
|
|
15
|
+
tags?: string[];
|
|
16
|
+
version?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface AgentExample {
|
|
19
|
+
input: string;
|
|
20
|
+
output: string;
|
|
21
|
+
description?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Platform-specific agent formats
|
|
25
|
+
*/
|
|
26
|
+
export declare enum AgentFormat {
|
|
27
|
+
CLAUDE_CODE = "claude-code",// YAML frontmatter + markdown
|
|
28
|
+
OPENAI = "openai",// JSON format for OpenAI assistants
|
|
29
|
+
LANGCHAIN = "langchain",// Python code
|
|
30
|
+
MARKDOWN = "markdown",// Pure markdown
|
|
31
|
+
JSON = "json"
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Formatted agent ready for a specific platform
|
|
35
|
+
*/
|
|
36
|
+
export interface FormattedAgent {
|
|
37
|
+
format: AgentFormat;
|
|
38
|
+
filename: string;
|
|
39
|
+
content: string;
|
|
40
|
+
metadata?: Record<string, any>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Agent formatter interface - each platform implements this
|
|
44
|
+
*/
|
|
45
|
+
export interface AgentFormatter {
|
|
46
|
+
format: AgentFormat;
|
|
47
|
+
/**
|
|
48
|
+
* Convert an agent definition to platform-specific format
|
|
49
|
+
*/
|
|
50
|
+
formatAgent(agent: Agent): FormattedAgent;
|
|
51
|
+
/**
|
|
52
|
+
* Format multiple agents
|
|
53
|
+
*/
|
|
54
|
+
formatAgents(agents: Agent[]): FormattedAgent[];
|
|
55
|
+
/**
|
|
56
|
+
* Parse platform-specific format back to agent definition
|
|
57
|
+
*/
|
|
58
|
+
parseAgent?(content: string): Agent;
|
|
59
|
+
/**
|
|
60
|
+
* Get the platform-specific repository context file path
|
|
61
|
+
*/
|
|
62
|
+
getRepoContextFilePath(): string;
|
|
63
|
+
/**
|
|
64
|
+
* Get the platform-specific agent installation directory
|
|
65
|
+
*/
|
|
66
|
+
getAgentInstallPath(): string;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,oBAAY,WAAW;IACrB,WAAW,gBAAgB,CAAK,8BAA8B;IAC9D,MAAM,WAAW,CAAe,oCAAoC;IACpE,SAAS,cAAc,CAAS,cAAc;IAC9C,QAAQ,aAAa,CAAW,gBAAgB;IAChD,IAAI,SAAS;CACd;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,WAAW,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,CAAC;IAE1C;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,EAAE,CAAC;IAEhD;;OAEG;IACH,UAAU,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IAEpC;;OAEG;IACH,sBAAsB,IAAI,MAAM,CAAC;IAEjC;;OAEG;IACH,mBAAmB,IAAI,MAAM,CAAC;CAC/B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform-specific agent formats
|
|
3
|
+
*/
|
|
4
|
+
export var AgentFormat;
|
|
5
|
+
(function (AgentFormat) {
|
|
6
|
+
AgentFormat["CLAUDE_CODE"] = "claude-code";
|
|
7
|
+
AgentFormat["OPENAI"] = "openai";
|
|
8
|
+
AgentFormat["LANGCHAIN"] = "langchain";
|
|
9
|
+
AgentFormat["MARKDOWN"] = "markdown";
|
|
10
|
+
AgentFormat["JSON"] = "json"; // Generic JSON
|
|
11
|
+
})(AgentFormat || (AgentFormat = {}));
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/agents/types.ts"],"names":[],"mappings":"AAwBA;;GAEG;AACH,MAAM,CAAN,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,0CAA2B,CAAA;IAC3B,gCAAiB,CAAA;IACjB,sCAAuB,CAAA;IACvB,oCAAqB,CAAA;IACrB,4BAAa,CAAA,CAAmB,eAAe;AACjD,CAAC,EANW,WAAW,KAAX,WAAW,QAMtB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ScriptAnalysis } from '../types.js';
|
|
2
|
+
export declare class ScriptAnalyzer {
|
|
3
|
+
analyze(scripts: Record<string, string> | undefined): ScriptAnalysis;
|
|
4
|
+
private analyzeTestScript;
|
|
5
|
+
private analyzeLintScript;
|
|
6
|
+
private analyzeBuildScript;
|
|
7
|
+
private analyzeDevScript;
|
|
8
|
+
private analyzeE2EScript;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=script-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-analyzer.d.ts","sourceRoot":"","sources":["../../../src/analyser/analyzers/script-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,cAAc;IAgBpE,OAAO,CAAC,iBAAiB;IAiCzB,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,kBAAkB;IAuC1B,OAAO,CAAC,gBAAgB;IAqCxB,OAAO,CAAC,gBAAgB;CA4BzB"}
|