aios-core 3.1.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.
@@ -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
+ };