aios-core 3.2.0 → 3.3.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/.aios-core/core-config.yaml +44 -0
- package/.aios-core/infrastructure/scripts/ide-sync/agent-parser.js +251 -0
- package/.aios-core/infrastructure/scripts/ide-sync/index.js +480 -0
- package/.aios-core/infrastructure/scripts/ide-sync/redirect-generator.js +200 -0
- package/.aios-core/infrastructure/scripts/ide-sync/transformers/antigravity.js +105 -0
- package/.aios-core/infrastructure/scripts/ide-sync/transformers/claude-code.js +84 -0
- package/.aios-core/infrastructure/scripts/ide-sync/transformers/cursor.js +93 -0
- package/.aios-core/infrastructure/scripts/ide-sync/transformers/trae.js +125 -0
- package/.aios-core/infrastructure/scripts/ide-sync/transformers/windsurf.js +106 -0
- package/.aios-core/infrastructure/scripts/ide-sync/validator.js +273 -0
- package/.aios-core/install-manifest.yaml +41 -5
- package/package.json +10 -1
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Antigravity Transformer - Cursor-style format
|
|
3
|
+
* @story 6.19 - IDE Command Auto-Sync System
|
|
4
|
+
*
|
|
5
|
+
* Format: Similar to Cursor, condensed rules format
|
|
6
|
+
* Target: .antigravity/rules/agents/*.md
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
const { getVisibleCommands } = require('../agent-parser');
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Transform agent data to Antigravity format
|
|
13
|
+
* @param {object} agentData - Parsed agent data from agent-parser
|
|
14
|
+
* @returns {string} - Transformed content
|
|
15
|
+
*/
|
|
16
|
+
function transform(agentData) {
|
|
17
|
+
const agent = agentData.agent || {};
|
|
18
|
+
const persona = agentData.persona_profile || {};
|
|
19
|
+
|
|
20
|
+
const icon = agent.icon || '🤖';
|
|
21
|
+
const name = agent.name || agentData.id;
|
|
22
|
+
const title = agent.title || 'AIOS Agent';
|
|
23
|
+
const whenToUse = agent.whenToUse || 'Use this agent for specific tasks';
|
|
24
|
+
const archetype = persona.archetype || '';
|
|
25
|
+
|
|
26
|
+
// Get quick visibility commands
|
|
27
|
+
const quickCommands = getVisibleCommands(agentData.commands, 'quick');
|
|
28
|
+
const keyCommands = getVisibleCommands(agentData.commands, 'key');
|
|
29
|
+
|
|
30
|
+
// Build content (similar to Cursor)
|
|
31
|
+
let content = `# ${name} (@${agentData.id})
|
|
32
|
+
|
|
33
|
+
${icon} **${title}**${archetype ? ` | ${archetype}` : ''}
|
|
34
|
+
|
|
35
|
+
> ${whenToUse}
|
|
36
|
+
|
|
37
|
+
`;
|
|
38
|
+
|
|
39
|
+
// Add quick commands section
|
|
40
|
+
if (quickCommands.length > 0) {
|
|
41
|
+
content += `## Quick Commands
|
|
42
|
+
|
|
43
|
+
`;
|
|
44
|
+
for (const cmd of quickCommands) {
|
|
45
|
+
content += `- \`*${cmd.name}\` - ${cmd.description || 'No description'}\n`;
|
|
46
|
+
}
|
|
47
|
+
content += '\n';
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Add key commands if different from quick
|
|
51
|
+
const keyOnlyCommands = keyCommands.filter(
|
|
52
|
+
k => !quickCommands.some(q => q.name === k.name)
|
|
53
|
+
);
|
|
54
|
+
if (keyOnlyCommands.length > 0) {
|
|
55
|
+
content += `## Key Commands
|
|
56
|
+
|
|
57
|
+
`;
|
|
58
|
+
for (const cmd of keyOnlyCommands) {
|
|
59
|
+
content += `- \`*${cmd.name}\` - ${cmd.description || 'No description'}\n`;
|
|
60
|
+
}
|
|
61
|
+
content += '\n';
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Add all commands for reference
|
|
65
|
+
const allCommands = agentData.commands || [];
|
|
66
|
+
if (allCommands.length > quickCommands.length + keyOnlyCommands.length) {
|
|
67
|
+
content += `## All Commands
|
|
68
|
+
|
|
69
|
+
`;
|
|
70
|
+
for (const cmd of allCommands) {
|
|
71
|
+
content += `- \`*${cmd.name}\` - ${cmd.description || 'No description'}\n`;
|
|
72
|
+
}
|
|
73
|
+
content += '\n';
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Add collaboration section if available
|
|
77
|
+
if (agentData.sections.collaboration) {
|
|
78
|
+
content += `## Collaboration
|
|
79
|
+
|
|
80
|
+
${agentData.sections.collaboration}
|
|
81
|
+
|
|
82
|
+
`;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
content += `---
|
|
86
|
+
*AIOS Agent - Synced from .aios-core/development/agents/${agentData.filename}*
|
|
87
|
+
`;
|
|
88
|
+
|
|
89
|
+
return content;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Get the target filename for this agent
|
|
94
|
+
* @param {object} agentData - Parsed agent data
|
|
95
|
+
* @returns {string} - Target filename
|
|
96
|
+
*/
|
|
97
|
+
function getFilename(agentData) {
|
|
98
|
+
return agentData.filename;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
module.exports = {
|
|
102
|
+
transform,
|
|
103
|
+
getFilename,
|
|
104
|
+
format: 'cursor-style',
|
|
105
|
+
};
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code Transformer - Full markdown with YAML (identity transform)
|
|
3
|
+
* @story 6.19 - IDE Command Auto-Sync System
|
|
4
|
+
*
|
|
5
|
+
* Format: Full markdown file with embedded YAML block
|
|
6
|
+
* Target: .claude/commands/AIOS/agents/*.md
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Transform agent data to Claude Code format
|
|
11
|
+
* For Claude Code, we use the full original file (identity transform)
|
|
12
|
+
* @param {object} agentData - Parsed agent data from agent-parser
|
|
13
|
+
* @returns {string} - Transformed content
|
|
14
|
+
*/
|
|
15
|
+
function transform(agentData) {
|
|
16
|
+
// Claude Code uses the full original file
|
|
17
|
+
if (agentData.raw) {
|
|
18
|
+
// Add sync footer if not present
|
|
19
|
+
const syncFooter = `\n---\n*AIOS Agent - Synced from .aios-core/development/agents/${agentData.filename}*\n`;
|
|
20
|
+
|
|
21
|
+
if (!agentData.raw.includes('Synced from .aios-core/development/agents/')) {
|
|
22
|
+
return agentData.raw.trimEnd() + syncFooter;
|
|
23
|
+
}
|
|
24
|
+
return agentData.raw;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Fallback: generate minimal content
|
|
28
|
+
return generateMinimalContent(agentData);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Generate minimal content if raw file is unavailable
|
|
33
|
+
* @param {object} agentData - Parsed agent data
|
|
34
|
+
* @returns {string} - Generated content
|
|
35
|
+
*/
|
|
36
|
+
function generateMinimalContent(agentData) {
|
|
37
|
+
const agent = agentData.agent || {};
|
|
38
|
+
const persona = agentData.persona_profile || {};
|
|
39
|
+
|
|
40
|
+
const icon = agent.icon || '🤖';
|
|
41
|
+
const name = agent.name || agentData.id;
|
|
42
|
+
const title = agent.title || 'AIOS Agent';
|
|
43
|
+
const whenToUse = agent.whenToUse || 'Use this agent for specific tasks';
|
|
44
|
+
|
|
45
|
+
let content = `# ${agentData.id}
|
|
46
|
+
|
|
47
|
+
${icon} **${name}** - ${title}
|
|
48
|
+
|
|
49
|
+
> ${whenToUse}
|
|
50
|
+
|
|
51
|
+
`;
|
|
52
|
+
|
|
53
|
+
// Add commands if available
|
|
54
|
+
if (agentData.commands && agentData.commands.length > 0) {
|
|
55
|
+
content += `## Commands
|
|
56
|
+
|
|
57
|
+
`;
|
|
58
|
+
for (const cmd of agentData.commands) {
|
|
59
|
+
content += `- \`*${cmd.name}\` - ${cmd.description || 'No description'}\n`;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
content += `
|
|
64
|
+
---
|
|
65
|
+
*AIOS Agent - Synced from .aios-core/development/agents/${agentData.filename}*
|
|
66
|
+
`;
|
|
67
|
+
|
|
68
|
+
return content;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Get the target filename for this agent
|
|
73
|
+
* @param {object} agentData - Parsed agent data
|
|
74
|
+
* @returns {string} - Target filename
|
|
75
|
+
*/
|
|
76
|
+
function getFilename(agentData) {
|
|
77
|
+
return agentData.filename;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
module.exports = {
|
|
81
|
+
transform,
|
|
82
|
+
getFilename,
|
|
83
|
+
format: 'full-markdown-yaml',
|
|
84
|
+
};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor Transformer - Condensed rules format
|
|
3
|
+
* @story 6.19 - IDE Command Auto-Sync System
|
|
4
|
+
*
|
|
5
|
+
* Format: Condensed markdown with icon, title, quick commands
|
|
6
|
+
* Target: .cursor/rules/agents/*.md
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
const { getVisibleCommands } = require('../agent-parser');
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Transform agent data to Cursor format
|
|
13
|
+
* @param {object} agentData - Parsed agent data from agent-parser
|
|
14
|
+
* @returns {string} - Transformed content
|
|
15
|
+
*/
|
|
16
|
+
function transform(agentData) {
|
|
17
|
+
const agent = agentData.agent || {};
|
|
18
|
+
const persona = agentData.persona_profile || {};
|
|
19
|
+
|
|
20
|
+
const icon = agent.icon || '🤖';
|
|
21
|
+
const name = agent.name || agentData.id;
|
|
22
|
+
const title = agent.title || 'AIOS Agent';
|
|
23
|
+
const whenToUse = agent.whenToUse || 'Use this agent for specific tasks';
|
|
24
|
+
const archetype = persona.archetype || '';
|
|
25
|
+
|
|
26
|
+
// Get quick visibility commands
|
|
27
|
+
const quickCommands = getVisibleCommands(agentData.commands, 'quick');
|
|
28
|
+
const keyCommands = getVisibleCommands(agentData.commands, 'key');
|
|
29
|
+
|
|
30
|
+
// Build content
|
|
31
|
+
let content = `# ${name} (@${agentData.id})
|
|
32
|
+
|
|
33
|
+
${icon} **${title}**${archetype ? ` | ${archetype}` : ''}
|
|
34
|
+
|
|
35
|
+
> ${whenToUse}
|
|
36
|
+
|
|
37
|
+
`;
|
|
38
|
+
|
|
39
|
+
// Add quick commands section
|
|
40
|
+
if (quickCommands.length > 0) {
|
|
41
|
+
content += `## Quick Commands
|
|
42
|
+
|
|
43
|
+
`;
|
|
44
|
+
for (const cmd of quickCommands) {
|
|
45
|
+
content += `- \`*${cmd.name}\` - ${cmd.description || 'No description'}\n`;
|
|
46
|
+
}
|
|
47
|
+
content += '\n';
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Add key commands if different from quick
|
|
51
|
+
const keyOnlyCommands = keyCommands.filter(
|
|
52
|
+
k => !quickCommands.some(q => q.name === k.name)
|
|
53
|
+
);
|
|
54
|
+
if (keyOnlyCommands.length > 0) {
|
|
55
|
+
content += `## Key Commands
|
|
56
|
+
|
|
57
|
+
`;
|
|
58
|
+
for (const cmd of keyOnlyCommands) {
|
|
59
|
+
content += `- \`*${cmd.name}\` - ${cmd.description || 'No description'}\n`;
|
|
60
|
+
}
|
|
61
|
+
content += '\n';
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Add collaboration section if available
|
|
65
|
+
if (agentData.sections.collaboration) {
|
|
66
|
+
content += `## Collaboration
|
|
67
|
+
|
|
68
|
+
${agentData.sections.collaboration}
|
|
69
|
+
|
|
70
|
+
`;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
content += `---
|
|
74
|
+
*AIOS Agent - Synced from .aios-core/development/agents/${agentData.filename}*
|
|
75
|
+
`;
|
|
76
|
+
|
|
77
|
+
return content;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Get the target filename for this agent
|
|
82
|
+
* @param {object} agentData - Parsed agent data
|
|
83
|
+
* @returns {string} - Target filename
|
|
84
|
+
*/
|
|
85
|
+
function getFilename(agentData) {
|
|
86
|
+
return agentData.filename;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
module.exports = {
|
|
90
|
+
transform,
|
|
91
|
+
getFilename,
|
|
92
|
+
format: 'condensed-rules',
|
|
93
|
+
};
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trae Transformer - Project rules format
|
|
3
|
+
* @story 6.19 - IDE Command Auto-Sync System
|
|
4
|
+
*
|
|
5
|
+
* Format: Structured project rules with identity, core commands, all commands
|
|
6
|
+
* Target: .trae/rules/agents/*.md
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
const { getVisibleCommands } = require('../agent-parser');
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Transform agent data to Trae format
|
|
13
|
+
* @param {object} agentData - Parsed agent data from agent-parser
|
|
14
|
+
* @returns {string} - Transformed content
|
|
15
|
+
*/
|
|
16
|
+
function transform(agentData) {
|
|
17
|
+
const agent = agentData.agent || {};
|
|
18
|
+
const persona = agentData.persona_profile || {};
|
|
19
|
+
|
|
20
|
+
const icon = agent.icon || '🤖';
|
|
21
|
+
const name = agent.name || agentData.id;
|
|
22
|
+
const title = agent.title || 'AIOS Agent';
|
|
23
|
+
const whenToUse = agent.whenToUse || 'Use this agent for specific tasks';
|
|
24
|
+
const archetype = persona.archetype || '';
|
|
25
|
+
|
|
26
|
+
// Get commands by visibility
|
|
27
|
+
const allCommands = agentData.commands || [];
|
|
28
|
+
const keyCommands = getVisibleCommands(allCommands, 'key');
|
|
29
|
+
const quickCommands = getVisibleCommands(allCommands, 'quick');
|
|
30
|
+
|
|
31
|
+
// Build content in project rules format
|
|
32
|
+
let content = `# AIOS Agent: ${name}
|
|
33
|
+
|
|
34
|
+
## Identity
|
|
35
|
+
|
|
36
|
+
| Property | Value |
|
|
37
|
+
|----------|-------|
|
|
38
|
+
| ID | @${agentData.id} |
|
|
39
|
+
| Name | ${name} |
|
|
40
|
+
| Title | ${title} |
|
|
41
|
+
| Icon | ${icon} |
|
|
42
|
+
${archetype ? `| Archetype | ${archetype} |\n` : ''}
|
|
43
|
+
|
|
44
|
+
## When to Use
|
|
45
|
+
|
|
46
|
+
${whenToUse}
|
|
47
|
+
|
|
48
|
+
`;
|
|
49
|
+
|
|
50
|
+
// Core commands (key visibility)
|
|
51
|
+
if (keyCommands.length > 0) {
|
|
52
|
+
content += `## Core Commands
|
|
53
|
+
|
|
54
|
+
| Command | Description |
|
|
55
|
+
|---------|-------------|
|
|
56
|
+
`;
|
|
57
|
+
for (const cmd of keyCommands) {
|
|
58
|
+
content += `| \`*${cmd.name}\` | ${cmd.description || '-'} |\n`;
|
|
59
|
+
}
|
|
60
|
+
content += '\n';
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Quick commands
|
|
64
|
+
if (quickCommands.length > 0) {
|
|
65
|
+
content += `## Quick Reference
|
|
66
|
+
|
|
67
|
+
`;
|
|
68
|
+
for (const cmd of quickCommands) {
|
|
69
|
+
content += `- \`*${cmd.name}\` - ${cmd.description || 'No description'}\n`;
|
|
70
|
+
}
|
|
71
|
+
content += '\n';
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// All commands
|
|
75
|
+
if (allCommands.length > 0) {
|
|
76
|
+
content += `## All Commands
|
|
77
|
+
|
|
78
|
+
`;
|
|
79
|
+
for (const cmd of allCommands) {
|
|
80
|
+
content += `- \`*${cmd.name}\` - ${cmd.description || 'No description'}\n`;
|
|
81
|
+
}
|
|
82
|
+
content += '\n';
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Dependencies
|
|
86
|
+
if (agentData.dependencies) {
|
|
87
|
+
const deps = agentData.dependencies;
|
|
88
|
+
content += `## Dependencies
|
|
89
|
+
|
|
90
|
+
`;
|
|
91
|
+
if (deps.tasks && deps.tasks.length > 0) {
|
|
92
|
+
content += `### Tasks
|
|
93
|
+
${deps.tasks.map(t => `- ${t}`).join('\n')}
|
|
94
|
+
|
|
95
|
+
`;
|
|
96
|
+
}
|
|
97
|
+
if (deps.tools && deps.tools.length > 0) {
|
|
98
|
+
content += `### Tools
|
|
99
|
+
${deps.tools.map(t => `- ${t}`).join('\n')}
|
|
100
|
+
|
|
101
|
+
`;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
content += `---
|
|
106
|
+
*AIOS Agent - Synced from .aios-core/development/agents/${agentData.filename}*
|
|
107
|
+
`;
|
|
108
|
+
|
|
109
|
+
return content;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Get the target filename for this agent
|
|
114
|
+
* @param {object} agentData - Parsed agent data
|
|
115
|
+
* @returns {string} - Target filename
|
|
116
|
+
*/
|
|
117
|
+
function getFilename(agentData) {
|
|
118
|
+
return agentData.filename;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
module.exports = {
|
|
122
|
+
transform,
|
|
123
|
+
getFilename,
|
|
124
|
+
format: 'project-rules',
|
|
125
|
+
};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Windsurf Transformer - XML-tagged markdown sections
|
|
3
|
+
* @story 6.19 - IDE Command Auto-Sync System
|
|
4
|
+
*
|
|
5
|
+
* Format: Markdown with XML tags for agent sections
|
|
6
|
+
* Target: .windsurf/rules/agents/*.md
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
const { getVisibleCommands } = require('../agent-parser');
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Transform agent data to Windsurf format
|
|
13
|
+
* @param {object} agentData - Parsed agent data from agent-parser
|
|
14
|
+
* @returns {string} - Transformed content
|
|
15
|
+
*/
|
|
16
|
+
function transform(agentData) {
|
|
17
|
+
const agent = agentData.agent || {};
|
|
18
|
+
const persona = agentData.persona_profile || {};
|
|
19
|
+
|
|
20
|
+
const icon = agent.icon || '🤖';
|
|
21
|
+
const name = agent.name || agentData.id;
|
|
22
|
+
const title = agent.title || 'AIOS Agent';
|
|
23
|
+
const whenToUse = agent.whenToUse || 'Use this agent for specific tasks';
|
|
24
|
+
const archetype = persona.archetype || '';
|
|
25
|
+
|
|
26
|
+
// Get all commands
|
|
27
|
+
const allCommands = agentData.commands || [];
|
|
28
|
+
const quickCommands = getVisibleCommands(allCommands, 'quick');
|
|
29
|
+
|
|
30
|
+
// Build content with XML tags
|
|
31
|
+
let content = `# ${name} Agent
|
|
32
|
+
|
|
33
|
+
<agent-identity>
|
|
34
|
+
${icon} **${name}** - ${title}
|
|
35
|
+
ID: @${agentData.id}
|
|
36
|
+
${archetype ? `Archetype: ${archetype}` : ''}
|
|
37
|
+
</agent-identity>
|
|
38
|
+
|
|
39
|
+
<when-to-use>
|
|
40
|
+
${whenToUse}
|
|
41
|
+
</when-to-use>
|
|
42
|
+
|
|
43
|
+
`;
|
|
44
|
+
|
|
45
|
+
// Add commands section with XML tags
|
|
46
|
+
if (allCommands.length > 0) {
|
|
47
|
+
content += `<commands>
|
|
48
|
+
`;
|
|
49
|
+
for (const cmd of allCommands) {
|
|
50
|
+
const isQuick = quickCommands.some(q => q.name === cmd.name);
|
|
51
|
+
content += `- *${cmd.name}: ${cmd.description || 'No description'}${isQuick ? ' (quick)' : ''}\n`;
|
|
52
|
+
}
|
|
53
|
+
content += `</commands>
|
|
54
|
+
|
|
55
|
+
`;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Add collaboration section if available
|
|
59
|
+
if (agentData.sections.collaboration) {
|
|
60
|
+
content += `<collaboration>
|
|
61
|
+
${agentData.sections.collaboration}
|
|
62
|
+
</collaboration>
|
|
63
|
+
|
|
64
|
+
`;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Add dependencies if available
|
|
68
|
+
if (agentData.dependencies) {
|
|
69
|
+
const deps = agentData.dependencies;
|
|
70
|
+
content += `<dependencies>
|
|
71
|
+
`;
|
|
72
|
+
if (deps.tasks && deps.tasks.length > 0) {
|
|
73
|
+
content += `Tasks: ${deps.tasks.join(', ')}\n`;
|
|
74
|
+
}
|
|
75
|
+
if (deps.checklists && deps.checklists.length > 0) {
|
|
76
|
+
content += `Checklists: ${deps.checklists.join(', ')}\n`;
|
|
77
|
+
}
|
|
78
|
+
if (deps.tools && deps.tools.length > 0) {
|
|
79
|
+
content += `Tools: ${deps.tools.join(', ')}\n`;
|
|
80
|
+
}
|
|
81
|
+
content += `</dependencies>
|
|
82
|
+
|
|
83
|
+
`;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
content += `---
|
|
87
|
+
*Synced from .aios-core/development/agents/${agentData.filename}*
|
|
88
|
+
`;
|
|
89
|
+
|
|
90
|
+
return content;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Get the target filename for this agent
|
|
95
|
+
* @param {object} agentData - Parsed agent data
|
|
96
|
+
* @returns {string} - Target filename
|
|
97
|
+
*/
|
|
98
|
+
function getFilename(agentData) {
|
|
99
|
+
return agentData.filename;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
module.exports = {
|
|
103
|
+
transform,
|
|
104
|
+
getFilename,
|
|
105
|
+
format: 'xml-tagged-markdown',
|
|
106
|
+
};
|