Merge 6143754b13 into 1665ad68df
This commit is contained in:
commit
aa978a5596
|
|
@ -1,4 +1,5 @@
|
||||||
const path = require('node:path');
|
const path = require('node:path');
|
||||||
|
const YAML = require('yaml');
|
||||||
const { BaseIdeSetup } = require('./_base-ide');
|
const { BaseIdeSetup } = require('./_base-ide');
|
||||||
const chalk = require('chalk');
|
const chalk = require('chalk');
|
||||||
const { AgentCommandGenerator } = require('./shared/agent-command-generator');
|
const { AgentCommandGenerator } = require('./shared/agent-command-generator');
|
||||||
|
|
@ -92,43 +93,31 @@ class KiloSetup extends BaseIdeSetup {
|
||||||
* Create a mode entry for an agent
|
* Create a mode entry for an agent
|
||||||
*/
|
*/
|
||||||
async createModeEntry(artifact, projectDir) {
|
async createModeEntry(artifact, projectDir) {
|
||||||
// Extract metadata from launcher content
|
const title = artifact.content.match(/title="([^"]+)"/)?.[1] ?? this.formatTitle(artifact.name);
|
||||||
const titleMatch = artifact.content.match(/title="([^"]+)"/);
|
|
||||||
const title = titleMatch ? titleMatch[1] : this.formatTitle(artifact.name);
|
|
||||||
|
|
||||||
const iconMatch = artifact.content.match(/icon="([^"]+)"/);
|
const icon = artifact.content.match(/icon="([^"]+)"/)?.[1] ?? '🤖';
|
||||||
const icon = iconMatch ? iconMatch[1] : '🤖';
|
|
||||||
|
|
||||||
const whenToUseMatch = artifact.content.match(/whenToUse="([^"]+)"/);
|
const whenToUse = artifact.content.match(/whenToUse="([^"]+)"/)?.[1] ?? `Use for ${title} tasks`;
|
||||||
const whenToUse = whenToUseMatch ? whenToUseMatch[1] : `Use for ${title} tasks`;
|
|
||||||
|
const roleDefinition =
|
||||||
|
artifact.content.match(/roleDefinition="([^"]+)"/)?.[1] ?? `You are a ${title} specializing in ${title.toLowerCase()} tasks.`;
|
||||||
|
|
||||||
// Get the activation header from central template
|
|
||||||
const activationHeader = await this.getAgentCommandHeader();
|
const activationHeader = await this.getAgentCommandHeader();
|
||||||
|
|
||||||
const roleDefinitionMatch = artifact.content.match(/roleDefinition="([^"]+)"/);
|
|
||||||
const roleDefinition = roleDefinitionMatch
|
|
||||||
? roleDefinitionMatch[1]
|
|
||||||
: `You are a ${title} specializing in ${title.toLowerCase()} tasks.`;
|
|
||||||
|
|
||||||
// Get relative path
|
|
||||||
const relativePath = path.relative(projectDir, artifact.sourcePath).replaceAll('\\', '/');
|
const relativePath = path.relative(projectDir, artifact.sourcePath).replaceAll('\\', '/');
|
||||||
|
|
||||||
// Build mode entry (KiloCode uses same schema as Roo)
|
const entry = {
|
||||||
const slug = `bmad-${artifact.module}-${artifact.name}`;
|
slug: `bmad-${artifact.module}-${artifact.name}`,
|
||||||
let modeEntry = ` - slug: ${slug}\n`;
|
name: `${icon} ${title}`,
|
||||||
modeEntry += ` name: '${icon} ${title}'\n`;
|
roleDefinition,
|
||||||
modeEntry += ` roleDefinition: ${roleDefinition}\n`;
|
whenToUse,
|
||||||
modeEntry += ` whenToUse: ${whenToUse}\n`;
|
customInstructions:
|
||||||
modeEntry += ` customInstructions: |\n`;
|
`${activationHeader}` +
|
||||||
modeEntry += ` ${activationHeader} Read the full YAML from ${relativePath} start activation to alter your state of being follow startup section instructions stay in this being until told to exit this mode\n`;
|
`Read the full YAML from ${relativePath} start activation to alter your state of being follow startup section instructions stay in this being until told to exit this mode`,
|
||||||
modeEntry += ` groups:\n`;
|
groups: ['read', 'edit', 'browser', 'command', 'mcp'],
|
||||||
modeEntry += ` - read\n`;
|
};
|
||||||
modeEntry += ` - edit\n`;
|
|
||||||
modeEntry += ` - browser\n`;
|
|
||||||
modeEntry += ` - command\n`;
|
|
||||||
modeEntry += ` - mcp\n`;
|
|
||||||
|
|
||||||
return modeEntry;
|
return YAML.stringify([entry], { indent: 2 });
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue