This commit is contained in:
Vidit Bhavsar 2026-02-02 08:53:13 +09:00 committed by GitHub
commit f1536f987e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 18 additions and 29 deletions

View File

@ -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 });
} }
/** /**