/** * FIX: DMCP-SEC-006 - Security audit suppression * This file delegates element creation to specialized managers. * Audit logging happens in the managers themselves (PersonaManager, SkillManager, etc.). * @security-audit-suppress DMCP-SEC-006 */ import { ElementCrudContext } from './types.js'; import type { McpToolResponse } from './responseFormatter.js'; import type { EnsembleElement } from '../../elements/ensembles/types.js'; /** * Arguments for creating a new element. * * @example * // Create a persona * { name: 'helper', type: 'persona', description: 'A helpful assistant', instructions: 'Be helpful' } * * @example * // Create an ensemble with elements * { * name: 'my-ensemble', * type: 'ensemble', * description: 'A coordinated group', * elements: [{ name: 'skill1', type: 'skill', role: 'primary', priority: 100, activation: 'always' }] * } * * @example * // Create a V2 agent with goal configuration * { * name: 'task-runner', * type: 'agent', * description: 'Executes tasks autonomously', * goal: { * template: 'Complete the following task: {objective}', * parameters: [{ name: 'objective', type: 'string', required: true }], * successCriteria: ['Task completed successfully', 'Results documented'] * }, * activates: { skills: ['code-review'], personas: ['developer'] } * } */ export interface CreateElementArgs { name: string; type: string; description: string; /** Reference material, knowledge, context (informational). For templates: template body. */ content?: string; /** Behavioral directives (command voice). For personas: behavioral profile. For skills: how to apply. For agents: agent behavioral protocol. */ instructions?: string; metadata?: Record; /** * For ensembles - array of element references. * Issue #278: LLMs often pass elements at top level, not inside metadata. */ elements?: EnsembleElement[]; /** * For V2 agents - goal configuration with template and parameters. * Can be passed as a simple string (will be converted to V2 format) * or as a full V2 config object. * * @since v2.0.0 - Agent V2 Infrastructure * * @example * // Simple string goal (auto-converted to V2 format) * goal: 'Complete the analysis task' * * @example * // Full V2 config with parameters * goal: { * template: 'Analyze {target} for {purpose}', * parameters: [ * { name: 'target', type: 'string', required: true }, * { name: 'purpose', type: 'string', required: true } * ], * successCriteria: ['Analysis complete', 'Report generated'] * } */ goal?: string | { template: string; parameters?: Array<{ name: string; type: 'string' | 'number' | 'boolean'; required: boolean; description?: string; default?: string | number | boolean; }>; successCriteria?: string[]; }; /** * For V2 agents - elements to activate when agent executes. * @since v2.0.0 - Agent V2 Infrastructure */ activates?: { personas?: string[]; skills?: string[]; memories?: string[]; templates?: string[]; ensembles?: string[]; [key: string]: string[] | undefined; }; /** * For V2 agents - tool configuration (informational). * @since v2.0.0 - Agent V2 Infrastructure */ tools?: { allowed: string[]; denied?: string[]; }; /** * For V2 agents - custom system prompt for LLM context. * @since v2.0.0 - Agent V2 Infrastructure */ systemPrompt?: string; } export declare function createElement(context: ElementCrudContext, args: CreateElementArgs): Promise; //# sourceMappingURL=createElement.d.ts.map